[Debian-coldfire-commits] r19 - in branches/binutils/package: . bfd bfd/doc bfd/po binutils binutils/doc binutils/po debian debian/patches etc gas gas/config gas/doc gas/po gas/testsuite gas/testsuite/gas gas/testsuite/gas/arm gas/testsuite/gas/bfin gas/testsuite/gas/lns gas/testsuite/gas/m68k gas/testsuite/gas/mips gas/testsuite/gas/mt gas/testsuite/gas/xc16x gas/testsuite/gas/z80 gprof gprof/po include/opcode ld ld/emulparams ld/emultempl ld/po ld/scripttempl ld/testsuite ld/testsuite/ld-arm ld/testsuite/ld-cdtest ld/testsuite/ld-elf ld/testsuite/ld-elfvers ld/testsuite/ld-elfweak ld/testsuite/ld-m68k ld/testsuite/ld-maxq ld/testsuite/ld-mips-elf ld/testsuite/ld-pie ld/testsuite/ld-powerpc ld/testsuite/ld-srec ld/testsuite/ld-v850 ld/testsuite/ld-xc16x opcodes opcodes/po

Wouter Verhelst wouter at alioth.debian.org
Sun Dec 31 17:31:06 CET 2006


Author: wouter
Date: 2006-12-31 17:27:59 +0100 (Sun, 31 Dec 2006)
New Revision: 19

Added:
   branches/binutils/package/bfd/doc/aoutx.texi
   branches/binutils/package/bfd/doc/archive.texi
   branches/binutils/package/bfd/doc/archures.texi
   branches/binutils/package/bfd/doc/bfd.info
   branches/binutils/package/bfd/doc/bfdio.texi
   branches/binutils/package/bfd/doc/bfdt.texi
   branches/binutils/package/bfd/doc/bfdwin.texi
   branches/binutils/package/bfd/doc/cache.texi
   branches/binutils/package/bfd/doc/coffcode.texi
   branches/binutils/package/bfd/doc/core.texi
   branches/binutils/package/bfd/doc/elf.texi
   branches/binutils/package/bfd/doc/format.texi
   branches/binutils/package/bfd/doc/hash.texi
   branches/binutils/package/bfd/doc/init.texi
   branches/binutils/package/bfd/doc/libbfd.texi
   branches/binutils/package/bfd/doc/linker.texi
   branches/binutils/package/bfd/doc/mmo.texi
   branches/binutils/package/bfd/doc/opncls.texi
   branches/binutils/package/bfd/doc/reloc.texi
   branches/binutils/package/bfd/doc/section.texi
   branches/binutils/package/bfd/doc/syms.texi
   branches/binutils/package/bfd/doc/targets.texi
   branches/binutils/package/bfd/po/da.gmo
   branches/binutils/package/bfd/po/es.gmo
   branches/binutils/package/bfd/po/fr.gmo
   branches/binutils/package/bfd/po/ja.gmo
   branches/binutils/package/bfd/po/ro.gmo
   branches/binutils/package/bfd/po/rw.gmo
   branches/binutils/package/bfd/po/sv.gmo
   branches/binutils/package/bfd/po/tr.gmo
   branches/binutils/package/bfd/po/vi.gmo
   branches/binutils/package/bfd/po/zh_CN.gmo
   branches/binutils/package/binutils/arlex.c
   branches/binutils/package/binutils/arparse.c
   branches/binutils/package/binutils/arparse.h
   branches/binutils/package/binutils/deflex.c
   branches/binutils/package/binutils/defparse.c
   branches/binutils/package/binutils/defparse.h
   branches/binutils/package/binutils/doc/addr2line.1
   branches/binutils/package/binutils/doc/ar.1
   branches/binutils/package/binutils/doc/binutils.info
   branches/binutils/package/binutils/doc/config.texi
   branches/binutils/package/binutils/doc/cxxfilt.man
   branches/binutils/package/binutils/doc/dlltool.1
   branches/binutils/package/binutils/doc/nlmconv.1
   branches/binutils/package/binutils/doc/nm.1
   branches/binutils/package/binutils/doc/objcopy.1
   branches/binutils/package/binutils/doc/objdump.1
   branches/binutils/package/binutils/doc/ranlib.1
   branches/binutils/package/binutils/doc/readelf.1
   branches/binutils/package/binutils/doc/size.1
   branches/binutils/package/binutils/doc/strings.1
   branches/binutils/package/binutils/doc/strip.1
   branches/binutils/package/binutils/doc/windres.1
   branches/binutils/package/binutils/nlmheader.c
   branches/binutils/package/binutils/nlmheader.h
   branches/binutils/package/binutils/po/da.gmo
   branches/binutils/package/binutils/po/es.gmo
   branches/binutils/package/binutils/po/fi.gmo
   branches/binutils/package/binutils/po/fr.gmo
   branches/binutils/package/binutils/po/ja.gmo
   branches/binutils/package/binutils/po/ro.gmo
   branches/binutils/package/binutils/po/ru.gmo
   branches/binutils/package/binutils/po/rw.gmo
   branches/binutils/package/binutils/po/sv.gmo
   branches/binutils/package/binutils/po/tr.gmo
   branches/binutils/package/binutils/po/vi.gmo
   branches/binutils/package/binutils/po/zh_CN.gmo
   branches/binutils/package/binutils/po/zh_TW.gmo
   branches/binutils/package/binutils/rclex.c
   branches/binutils/package/binutils/rcparse.c
   branches/binutils/package/binutils/rcparse.h
   branches/binutils/package/binutils/sysinfo.c
   branches/binutils/package/binutils/sysinfo.h
   branches/binutils/package/binutils/syslex.c
   branches/binutils/package/debian/patches/127_x86_64_i386_biarch.dpatch
   branches/binutils/package/etc/configure.info
   branches/binutils/package/etc/standards.info
   branches/binutils/package/gas/bfin-lex.c
   branches/binutils/package/gas/bfin-parse.c
   branches/binutils/package/gas/bfin-parse.h
   branches/binutils/package/gas/doc/as.1
   branches/binutils/package/gas/doc/as.info
   branches/binutils/package/gas/doc/asconfig.texi
   branches/binutils/package/gas/doc/gasver.texi
   branches/binutils/package/gas/itbl-lex.c
   branches/binutils/package/gas/itbl-parse.c
   branches/binutils/package/gas/itbl-parse.h
   branches/binutils/package/gas/m68k-parse.c
   branches/binutils/package/gas/po/es.gmo
   branches/binutils/package/gas/po/fr.gmo
   branches/binutils/package/gas/po/rw.gmo
   branches/binutils/package/gas/po/tr.gmo
   branches/binutils/package/gas/testsuite/gas/bfin/
   branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.d
   branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.s
   branches/binutils/package/gas/testsuite/gas/bfin/bfin.exp
   branches/binutils/package/gas/testsuite/gas/bfin/bit.d
   branches/binutils/package/gas/testsuite/gas/bfin/bit.s
   branches/binutils/package/gas/testsuite/gas/bfin/bit2.d
   branches/binutils/package/gas/testsuite/gas/bfin/bit2.s
   branches/binutils/package/gas/testsuite/gas/bfin/cache.d
   branches/binutils/package/gas/testsuite/gas/bfin/cache.s
   branches/binutils/package/gas/testsuite/gas/bfin/cache2.d
   branches/binutils/package/gas/testsuite/gas/bfin/cache2.s
   branches/binutils/package/gas/testsuite/gas/bfin/control_code.d
   branches/binutils/package/gas/testsuite/gas/bfin/control_code.s
   branches/binutils/package/gas/testsuite/gas/bfin/control_code2.d
   branches/binutils/package/gas/testsuite/gas/bfin/control_code2.s
   branches/binutils/package/gas/testsuite/gas/bfin/event.d
   branches/binutils/package/gas/testsuite/gas/bfin/event.s
   branches/binutils/package/gas/testsuite/gas/bfin/event2.d
   branches/binutils/package/gas/testsuite/gas/bfin/event2.s
   branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.l
   branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.s
   branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.l
   branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.s
   branches/binutils/package/gas/testsuite/gas/bfin/flow.d
   branches/binutils/package/gas/testsuite/gas/bfin/flow.s
   branches/binutils/package/gas/testsuite/gas/bfin/flow2.d
   branches/binutils/package/gas/testsuite/gas/bfin/flow2.s
   branches/binutils/package/gas/testsuite/gas/bfin/load.d
   branches/binutils/package/gas/testsuite/gas/bfin/load.s
   branches/binutils/package/gas/testsuite/gas/bfin/logical.d
   branches/binutils/package/gas/testsuite/gas/bfin/logical.s
   branches/binutils/package/gas/testsuite/gas/bfin/logical2.d
   branches/binutils/package/gas/testsuite/gas/bfin/logical2.s
   branches/binutils/package/gas/testsuite/gas/bfin/move.d
   branches/binutils/package/gas/testsuite/gas/bfin/move.s
   branches/binutils/package/gas/testsuite/gas/bfin/move2.d
   branches/binutils/package/gas/testsuite/gas/bfin/move2.s
   branches/binutils/package/gas/testsuite/gas/bfin/parallel.d
   branches/binutils/package/gas/testsuite/gas/bfin/parallel.s
   branches/binutils/package/gas/testsuite/gas/bfin/parallel2.d
   branches/binutils/package/gas/testsuite/gas/bfin/parallel2.s
   branches/binutils/package/gas/testsuite/gas/bfin/parallel3.d
   branches/binutils/package/gas/testsuite/gas/bfin/parallel3.s
   branches/binutils/package/gas/testsuite/gas/bfin/parallel4.d
   branches/binutils/package/gas/testsuite/gas/bfin/parallel4.s
   branches/binutils/package/gas/testsuite/gas/bfin/reloc.d
   branches/binutils/package/gas/testsuite/gas/bfin/reloc.s
   branches/binutils/package/gas/testsuite/gas/bfin/shift.d
   branches/binutils/package/gas/testsuite/gas/bfin/shift.s
   branches/binutils/package/gas/testsuite/gas/bfin/shift2.d
   branches/binutils/package/gas/testsuite/gas/bfin/shift2.s
   branches/binutils/package/gas/testsuite/gas/bfin/stack.d
   branches/binutils/package/gas/testsuite/gas/bfin/stack.s
   branches/binutils/package/gas/testsuite/gas/bfin/stack2.d
   branches/binutils/package/gas/testsuite/gas/bfin/stack2.s
   branches/binutils/package/gas/testsuite/gas/bfin/store.d
   branches/binutils/package/gas/testsuite/gas/bfin/store.s
   branches/binutils/package/gas/testsuite/gas/bfin/vector.d
   branches/binutils/package/gas/testsuite/gas/bfin/vector.s
   branches/binutils/package/gas/testsuite/gas/bfin/vector2.d
   branches/binutils/package/gas/testsuite/gas/bfin/vector2.s
   branches/binutils/package/gas/testsuite/gas/bfin/video.d
   branches/binutils/package/gas/testsuite/gas/bfin/video.s
   branches/binutils/package/gas/testsuite/gas/bfin/video2.d
   branches/binutils/package/gas/testsuite/gas/bfin/video2.s
   branches/binutils/package/gas/testsuite/gas/lns/
   branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.d
   branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.s
   branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.l
   branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.s
   branches/binutils/package/gas/testsuite/gas/lns/lns.exp
   branches/binutils/package/gas/testsuite/gas/mips/vxworks1-el.d
   branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot-el.d
   branches/binutils/package/gas/testsuite/gas/mt/
   branches/binutils/package/gas/testsuite/gas/mt/allinsn.d
   branches/binutils/package/gas/testsuite/gas/mt/allinsn.s
   branches/binutils/package/gas/testsuite/gas/mt/badinsn.s
   branches/binutils/package/gas/testsuite/gas/mt/badinsn1.s
   branches/binutils/package/gas/testsuite/gas/mt/badoffsethigh.s
   branches/binutils/package/gas/testsuite/gas/mt/badoffsetlow.s
   branches/binutils/package/gas/testsuite/gas/mt/badorder.s
   branches/binutils/package/gas/testsuite/gas/mt/badreg.s
   branches/binutils/package/gas/testsuite/gas/mt/badsignedimmhigh.s
   branches/binutils/package/gas/testsuite/gas/mt/badsignedimmlow.s
   branches/binutils/package/gas/testsuite/gas/mt/badsyntax.s
   branches/binutils/package/gas/testsuite/gas/mt/badsyntax1.s
   branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmhigh.s
   branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmlow.s
   branches/binutils/package/gas/testsuite/gas/mt/errors.exp
   branches/binutils/package/gas/testsuite/gas/mt/ldst.s
   branches/binutils/package/gas/testsuite/gas/mt/misc.d
   branches/binutils/package/gas/testsuite/gas/mt/misc.s
   branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.d
   branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.s
   branches/binutils/package/gas/testsuite/gas/mt/ms2.d
   branches/binutils/package/gas/testsuite/gas/mt/ms2.s
   branches/binutils/package/gas/testsuite/gas/mt/msys.d
   branches/binutils/package/gas/testsuite/gas/mt/msys.s
   branches/binutils/package/gas/testsuite/gas/mt/mt.exp
   branches/binutils/package/gas/testsuite/gas/mt/relocs.d
   branches/binutils/package/gas/testsuite/gas/mt/relocs.exp
   branches/binutils/package/gas/testsuite/gas/mt/relocs1.s
   branches/binutils/package/gas/testsuite/gas/mt/relocs2.s
   branches/binutils/package/gas/testsuite/gas/xc16x/
   branches/binutils/package/gas/testsuite/gas/xc16x/add.s
   branches/binutils/package/gas/testsuite/gas/xc16x/add_test.s
   branches/binutils/package/gas/testsuite/gas/xc16x/addb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/addc.s
   branches/binutils/package/gas/testsuite/gas/xc16x/addcb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/and.s
   branches/binutils/package/gas/testsuite/gas/xc16x/andb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/bfldl.s
   branches/binutils/package/gas/testsuite/gas/xc16x/bit.s
   branches/binutils/package/gas/testsuite/gas/xc16x/calla.s
   branches/binutils/package/gas/testsuite/gas/xc16x/calli.s
   branches/binutils/package/gas/testsuite/gas/xc16x/cmp.s
   branches/binutils/package/gas/testsuite/gas/xc16x/cmp_test.s
   branches/binutils/package/gas/testsuite/gas/xc16x/cmpb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/cmpi.s
   branches/binutils/package/gas/testsuite/gas/xc16x/cpl.s
   branches/binutils/package/gas/testsuite/gas/xc16x/div.s
   branches/binutils/package/gas/testsuite/gas/xc16x/jmpa.s
   branches/binutils/package/gas/testsuite/gas/xc16x/jmpi.s
   branches/binutils/package/gas/testsuite/gas/xc16x/jmpr.s
   branches/binutils/package/gas/testsuite/gas/xc16x/mov.s
   branches/binutils/package/gas/testsuite/gas/xc16x/mov_test.s
   branches/binutils/package/gas/testsuite/gas/xc16x/movb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/movbs.s
   branches/binutils/package/gas/testsuite/gas/xc16x/movbz.s
   branches/binutils/package/gas/testsuite/gas/xc16x/mul.s
   branches/binutils/package/gas/testsuite/gas/xc16x/neg.s
   branches/binutils/package/gas/testsuite/gas/xc16x/nop.s
   branches/binutils/package/gas/testsuite/gas/xc16x/or.s
   branches/binutils/package/gas/testsuite/gas/xc16x/orb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/prior.s
   branches/binutils/package/gas/testsuite/gas/xc16x/pushpop.s
   branches/binutils/package/gas/testsuite/gas/xc16x/ret.s
   branches/binutils/package/gas/testsuite/gas/xc16x/scxt.s
   branches/binutils/package/gas/testsuite/gas/xc16x/shlrol.s
   branches/binutils/package/gas/testsuite/gas/xc16x/sub.s
   branches/binutils/package/gas/testsuite/gas/xc16x/sub_test.s
   branches/binutils/package/gas/testsuite/gas/xc16x/subb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/subc.s
   branches/binutils/package/gas/testsuite/gas/xc16x/subcb.s
   branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol1.s
   branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol2.s
   branches/binutils/package/gas/testsuite/gas/xc16x/trap.s
   branches/binutils/package/gas/testsuite/gas/xc16x/xc16x.exp
   branches/binutils/package/gas/testsuite/gas/xc16x/xor.s
   branches/binutils/package/gas/testsuite/gas/xc16x/xorb.s
   branches/binutils/package/gas/testsuite/gas/z80/
   branches/binutils/package/gas/testsuite/gas/z80/offset.d
   branches/binutils/package/gas/testsuite/gas/z80/offset.s
   branches/binutils/package/gas/testsuite/gas/z80/quotes.d
   branches/binutils/package/gas/testsuite/gas/z80/quotes.s
   branches/binutils/package/gas/testsuite/gas/z80/redef.d
   branches/binutils/package/gas/testsuite/gas/z80/redef.s
   branches/binutils/package/gas/testsuite/gas/z80/suffix.d
   branches/binutils/package/gas/testsuite/gas/z80/suffix.s
   branches/binutils/package/gas/testsuite/gas/z80/z80.exp
   branches/binutils/package/gprof/bsd_callg_bl.c
   branches/binutils/package/gprof/config.texi
   branches/binutils/package/gprof/flat_bl.c
   branches/binutils/package/gprof/fsf_callg_bl.c
   branches/binutils/package/gprof/gprof.1
   branches/binutils/package/gprof/gprof.info
   branches/binutils/package/gprof/po/da.gmo
   branches/binutils/package/gprof/po/de.gmo
   branches/binutils/package/gprof/po/es.gmo
   branches/binutils/package/gprof/po/fr.gmo
   branches/binutils/package/gprof/po/ga.gmo
   branches/binutils/package/gprof/po/id.gmo
   branches/binutils/package/gprof/po/pt_BR.gmo
   branches/binutils/package/gprof/po/rw.gmo
   branches/binutils/package/gprof/po/sv.gmo
   branches/binutils/package/gprof/po/tr.gmo
   branches/binutils/package/gprof/po/vi.gmo
   branches/binutils/package/ld/configdoc.texi
   branches/binutils/package/ld/ld.1
   branches/binutils/package/ld/ld.info
   branches/binutils/package/ld/ldgram.c
   branches/binutils/package/ld/ldgram.h
   branches/binutils/package/ld/ldlex.c
   branches/binutils/package/ld/ldver.texi
   branches/binutils/package/ld/po/da.gmo
   branches/binutils/package/ld/po/es.gmo
   branches/binutils/package/ld/po/fr.gmo
   branches/binutils/package/ld/po/sv.gmo
   branches/binutils/package/ld/po/tr.gmo
   branches/binutils/package/ld/po/vi.gmo
   branches/binutils/package/ld/po/zh_CN.gmo
   branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.d
   branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.s
   branches/binutils/package/ld/testsuite/ld-elf/eh1.d
   branches/binutils/package/ld/testsuite/ld-elf/eh1.s
   branches/binutils/package/ld/testsuite/ld-elf/eh1a.s
   branches/binutils/package/ld/testsuite/ld-elf/eh2.d
   branches/binutils/package/ld/testsuite/ld-elf/eh2a.s
   branches/binutils/package/ld/testsuite/ld-elf/eh3.d
   branches/binutils/package/ld/testsuite/ld-elf/eh3.s
   branches/binutils/package/ld/testsuite/ld-elf/eh3a.s
   branches/binutils/package/ld/testsuite/ld-m68k/
   branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.d
   branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.s
   branches/binutils/package/ld/testsuite/ld-m68k/isaa-nodiv.s
   branches/binutils/package/ld/testsuite/ld-m68k/isaa.d
   branches/binutils/package/ld/testsuite/ld-m68k/isaa.s
   branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.d
   branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.s
   branches/binutils/package/ld/testsuite/ld-m68k/isab-float.d
   branches/binutils/package/ld/testsuite/ld-m68k/isab-float.s
   branches/binutils/package/ld/testsuite/ld-m68k/isab-nousp.s
   branches/binutils/package/ld/testsuite/ld-m68k/isab.d
   branches/binutils/package/ld/testsuite/ld-m68k/isab.s
   branches/binutils/package/ld/testsuite/ld-m68k/m68k.exp
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.s
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.s
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1c.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1d.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1e.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1a.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1b.d
   branches/binutils/package/ld/testsuite/ld-m68k/merge.ld
   branches/binutils/package/ld/testsuite/ld-maxq/
   branches/binutils/package/ld/testsuite/ld-maxq/addend.dd
   branches/binutils/package/ld/testsuite/ld-maxq/addend.s
   branches/binutils/package/ld/testsuite/ld-maxq/maxq.exp
   branches/binutils/package/ld/testsuite/ld-maxq/paddr.dd
   branches/binutils/package/ld/testsuite/ld-maxq/paddr.s
   branches/binutils/package/ld/testsuite/ld-maxq/paddr1.dd
   branches/binutils/package/ld/testsuite/ld-maxq/paddr1.s
   branches/binutils/package/ld/testsuite/ld-maxq/r32-1.s
   branches/binutils/package/ld/testsuite/ld-maxq/r32-2.s
   branches/binutils/package/ld/testsuite/ld-maxq/r32.dd
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-10000.d
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-2fe80.d
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-7fff.d
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-8000.d
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-fff0.d
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.ld
   branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.s
   branches/binutils/package/ld/testsuite/ld-pie/
   branches/binutils/package/ld/testsuite/ld-pie/pie.c
   branches/binutils/package/ld/testsuite/ld-pie/pie.exp
   branches/binutils/package/ld/testsuite/ld-pie/weakundef-data.c
   branches/binutils/package/ld/testsuite/ld-pie/weakundef.c
   branches/binutils/package/ld/testsuite/ld-pie/weakundef.out
   branches/binutils/package/ld/testsuite/ld-v850/
   branches/binutils/package/ld/testsuite/ld-v850/split-lo16.d
   branches/binutils/package/ld/testsuite/ld-v850/split-lo16.ld
   branches/binutils/package/ld/testsuite/ld-v850/split-lo16.s
   branches/binutils/package/ld/testsuite/ld-v850/v850.exp
   branches/binutils/package/ld/testsuite/ld-xc16x/
   branches/binutils/package/ld/testsuite/ld-xc16x/absrel.d
   branches/binutils/package/ld/testsuite/ld-xc16x/absrel.s
   branches/binutils/package/ld/testsuite/ld-xc16x/offset.d
   branches/binutils/package/ld/testsuite/ld-xc16x/offset.s
   branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.d
   branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.s
   branches/binutils/package/ld/testsuite/ld-xc16x/pcrelocl.d
   branches/binutils/package/ld/testsuite/ld-xc16x/xc16x.exp
   branches/binutils/package/md5.sum
   branches/binutils/package/opcodes/po/da.gmo
   branches/binutils/package/opcodes/po/de.gmo
   branches/binutils/package/opcodes/po/es.gmo
   branches/binutils/package/opcodes/po/fi.gmo
   branches/binutils/package/opcodes/po/fr.gmo
   branches/binutils/package/opcodes/po/ga.gmo
   branches/binutils/package/opcodes/po/id.gmo
   branches/binutils/package/opcodes/po/nl.gmo
   branches/binutils/package/opcodes/po/pt_BR.gmo
   branches/binutils/package/opcodes/po/ro.gmo
   branches/binutils/package/opcodes/po/sv.gmo
   branches/binutils/package/opcodes/po/tr.gmo
   branches/binutils/package/opcodes/po/vi.gmo
   branches/binutils/package/opcodes/po/zh_CN.gmo
Removed:
   branches/binutils/package/.cvsignore
   branches/binutils/package/COPYING.LIBGLOSS
   branches/binutils/package/COPYING.NEWLIB
   branches/binutils/package/ChangeLog
   branches/binutils/package/MAINTAINERS
   branches/binutils/package/README-maintainer-mode
   branches/binutils/package/bfd/po/.cvsignore
   branches/binutils/package/binutils/po/.cvsignore
   branches/binutils/package/compile
   branches/binutils/package/debian/patches/118_arm_pass_all.dpatch
   branches/binutils/package/debian/patches/120_mips_xgot_multigot_workaround.dpatch
   branches/binutils/package/debian/patches/125_fix_tc_arm_cast.dpatch
   branches/binutils/package/depcomp
   branches/binutils/package/djunpack.bat
   branches/binutils/package/etc/ChangeLog
   branches/binutils/package/etc/add-log.el
   branches/binutils/package/etc/add-log.vi
   branches/binutils/package/gas/po/.cvsignore
   branches/binutils/package/gprof/po/.cvsignore
   branches/binutils/package/ld/emultempl/bfin.em
   branches/binutils/package/ld/po/.cvsignore
   branches/binutils/package/opcodes/ms1-asm.c
   branches/binutils/package/opcodes/ms1-desc.c
   branches/binutils/package/opcodes/ms1-desc.h
   branches/binutils/package/opcodes/ms1-dis.c
   branches/binutils/package/opcodes/ms1-ibld.c
   branches/binutils/package/opcodes/ms1-opc.c
   branches/binutils/package/opcodes/ms1-opc.h
   branches/binutils/package/opcodes/po/.cvsignore
Modified:
   branches/binutils/package/bfd/ChangeLog
   branches/binutils/package/bfd/Makefile.am
   branches/binutils/package/bfd/Makefile.in
   branches/binutils/package/bfd/aoutf1.h
   branches/binutils/package/bfd/coff-rs6000.c
   branches/binutils/package/bfd/configure
   branches/binutils/package/bfd/configure.in
   branches/binutils/package/bfd/doc/ChangeLog
   branches/binutils/package/bfd/doc/bfd.texinfo
   branches/binutils/package/bfd/elf-eh-frame.c
   branches/binutils/package/bfd/elf32-arm.c
   branches/binutils/package/bfd/elf32-ppc.c
   branches/binutils/package/bfd/elf32-xtensa.c
   branches/binutils/package/bfd/elf64-ppc.c
   branches/binutils/package/bfd/elfcode.h
   branches/binutils/package/bfd/elflink.c
   branches/binutils/package/bfd/elfxx-mips.c
   branches/binutils/package/bfd/po/Make-in
   branches/binutils/package/bfd/po/SRC-POTFILES.in
   branches/binutils/package/bfd/po/es.po
   branches/binutils/package/bfd/tekhex.c
   branches/binutils/package/bfd/version.h
   branches/binutils/package/binutils/ChangeLog
   branches/binutils/package/binutils/Makefile.in
   branches/binutils/package/binutils/aclocal.m4
   branches/binutils/package/binutils/doc/Makefile.am
   branches/binutils/package/binutils/doc/Makefile.in
   branches/binutils/package/binutils/doc/binutils.texi
   branches/binutils/package/binutils/po/Make-in
   branches/binutils/package/binutils/po/es.po
   branches/binutils/package/binutils/po/fr.po
   branches/binutils/package/binutils/po/ru.po
   branches/binutils/package/binutils/po/vi.po
   branches/binutils/package/configure.in
   branches/binutils/package/debian/binutils-hppa64.shlibs
   branches/binutils/package/debian/binutils-multiarch.shlibs
   branches/binutils/package/debian/binutils.shlibs
   branches/binutils/package/debian/changelog
   branches/binutils/package/debian/control
   branches/binutils/package/debian/patches/00list
   branches/binutils/package/debian/rules
   branches/binutils/package/etc/texi2pod.pl
   branches/binutils/package/gas/ChangeLog
   branches/binutils/package/gas/Makefile.in
   branches/binutils/package/gas/aclocal.m4
   branches/binutils/package/gas/config/tc-arm.c
   branches/binutils/package/gas/config/tc-arm.h
   branches/binutils/package/gas/config/tc-avr.h
   branches/binutils/package/gas/config/tc-m68k.c
   branches/binutils/package/gas/config/tc-mips.c
   branches/binutils/package/gas/config/tc-xtensa.c
   branches/binutils/package/gas/config/xtensa-relax.c
   branches/binutils/package/gas/doc/Makefile.am
   branches/binutils/package/gas/doc/Makefile.in
   branches/binutils/package/gas/doc/as.texinfo
   branches/binutils/package/gas/doc/c-arc.texi
   branches/binutils/package/gas/dwarf2dbg.c
   branches/binutils/package/gas/po/Make-in
   branches/binutils/package/gas/po/POTFILES.in
   branches/binutils/package/gas/po/es.po
   branches/binutils/package/gas/subsegs.c
   branches/binutils/package/gas/testsuite/ChangeLog
   branches/binutils/package/gas/testsuite/gas/arm/arch7.d
   branches/binutils/package/gas/testsuite/gas/arm/blx-local.d
   branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.l
   branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.s
   branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.d
   branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.s
   branches/binutils/package/gas/testsuite/gas/arm/svc.d
   branches/binutils/package/gas/testsuite/gas/arm/thumb2_bcond.d
   branches/binutils/package/gas/testsuite/gas/arm/thumb2_it_bad.d
   branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.d
   branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.s
   branches/binutils/package/gas/testsuite/gas/mips/jal-range.l
   branches/binutils/package/gas/testsuite/gas/mips/jal-range.s
   branches/binutils/package/gas/testsuite/gas/mips/mips16e-jrc.d
   branches/binutils/package/gas/testsuite/gas/mips/mips16e-save.d
   branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.d
   branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.l
   branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.d
   branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.l
   branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot.d
   branches/binutils/package/gas/testsuite/gas/mips/vxworks1.d
   branches/binutils/package/gas/write.c
   branches/binutils/package/gas/write.h
   branches/binutils/package/gprof/ChangeLog
   branches/binutils/package/gprof/po/Make-in
   branches/binutils/package/gprof/po/es.po
   branches/binutils/package/include/opcode/ChangeLog
   branches/binutils/package/include/opcode/m68k.h
   branches/binutils/package/ld/ChangeLog
   branches/binutils/package/ld/Makefile.am
   branches/binutils/package/ld/Makefile.in
   branches/binutils/package/ld/aclocal.m4
   branches/binutils/package/ld/config.in
   branches/binutils/package/ld/emulparams/elf32bmip.sh
   branches/binutils/package/ld/emultempl/elf32.em
   branches/binutils/package/ld/emultempl/xtensaelf.em
   branches/binutils/package/ld/gen-doc.texi
   branches/binutils/package/ld/ld.texinfo
   branches/binutils/package/ld/ldlang.c
   branches/binutils/package/ld/ldlang.h
   branches/binutils/package/ld/po/Make-in
   branches/binutils/package/ld/po/POTFILES.in
   branches/binutils/package/ld/po/es.po
   branches/binutils/package/ld/po/vi.po
   branches/binutils/package/ld/scripttempl/elf32crx.sc
   branches/binutils/package/ld/testsuite/ChangeLog
   branches/binutils/package/ld/testsuite/ld-arm/arm-elf.exp
   branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.cc
   branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.h
   branches/binutils/package/ld/testsuite/ld-elf/orphan.ld
   branches/binutils/package/ld/testsuite/ld-elf/sec64k.exp
   branches/binutils/package/ld/testsuite/ld-elf/start.s
   branches/binutils/package/ld/testsuite/ld-elfvers/vers.exp
   branches/binutils/package/ld/testsuite/ld-elfweak/size2.d
   branches/binutils/package/ld/testsuite/ld-elfweak/size2a.s
   branches/binutils/package/ld/testsuite/ld-elfweak/size2b.s
   branches/binutils/package/ld/testsuite/ld-mips-elf/mips-elf.exp
   branches/binutils/package/ld/testsuite/ld-mips-elf/textrel-1.d
   branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.g
   branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.r
   branches/binutils/package/ld/testsuite/ld-srec/sr3.cc
   branches/binutils/package/opcodes/ChangeLog
   branches/binutils/package/opcodes/avr-dis.c
   branches/binutils/package/opcodes/crx-dis.c
   branches/binutils/package/opcodes/m68k-dis.c
   branches/binutils/package/opcodes/m68k-opc.c
   branches/binutils/package/opcodes/mips-opc.c
   branches/binutils/package/opcodes/po/Make-in
   branches/binutils/package/opcodes/po/POTFILES.in
   branches/binutils/package/opcodes/po/es.po
   branches/binutils/package/opcodes/po/fi.po
   branches/binutils/package/opcodes/po/ga.po
   branches/binutils/package/opcodes/po/nl.po
   branches/binutils/package/src-release
Log:
Import latest binutils package

Deleted: branches/binutils/package/.cvsignore
===================================================================
--- branches/binutils/package/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,32 +0,0 @@
-*-all
-*-co
-*-dirs
-*-done
-*-install-info
-*-src
-*-stamp-*
-*-tagged
-blockit
-cfg-paper.info
-config.status
-configure.aux
-configure.cp
-configure.cps
-configure.dvi
-configure.fn
-configure.fns
-configure.ky
-configure.kys
-configure.log
-configure.pg
-configure.pgs
-configure.toc
-configure.tp
-configure.tps
-configure.vr
-configure.vrs
-dir.info
-Makefile
-lost+found
-update.out
-update.sourceware

Deleted: branches/binutils/package/COPYING.LIBGLOSS
===================================================================
--- branches/binutils/package/COPYING.LIBGLOSS	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/COPYING.LIBGLOSS	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,297 +0,0 @@
-The libgloss subdirectory is a collection of software from several sources.
-Each have their own copyrights embedded in each file that they concern.
-
-(1) University of California, Berkeley
-
-[1a]
-
-Copyright (c) 1990 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms are permitted
-provided that the above copyright notice and this paragraph are
-duplicated in all such forms and that any documentation,
-and other materials related to such distribution and use 
-acknowledge that the software was developed
-by the University of California, Berkeley.  The name of the
-University may not be used to endorse or promote products derived
-from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-[1b]
-
-Copyright (c) 1991, 2000 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-     This product includes software developed by the University of
-     California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-[1c]
-
-Copyright (c) 1991, 1998, 2001 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. [rescinded 22 July 1999]
-4. Neither the name of the University nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
--------------------------------------------------------------
- Please note that in some of the above alternate licenses, there is a
- statement regarding that acknowledgement must be made in any
- advertising materials for products using the code.  This restriction
- no longer applies due to the following license change:
-
-  ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
-
- In some cases the defunct clause has been removed in modified newlib code and
- in some cases, the clause has been left as-is.
--------------------------------------------------------------
-
-(2) DJ Delorie
-
-Copyright (C) 1993 DJ Delorie
-All rights reserved.
-
-Redistribution and use in source and binary forms is permitted
-provided that the above copyright notice and following paragraph are
-duplicated in all such forms.
-
-This file is distributed WITHOUT ANY WARRANTY; without even the implied
-warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-(3) GPL (fr30 directory only)
-
-Copyright (C) 1998 Free Software Foundation, Inc.
-Contributed by Cygnus Solutions.
-
-This file is part of GNU CC.
-
-GNU CC 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.
-
-GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.
-
-(4) Advanced Micro Devices
-
-Copyright 1989, 1990 Advanced Micro Devices, Inc.
-
-This software is the property of Advanced Micro Devices, Inc  (AMD)  which
-specifically  grants the user the right to modify, use and distribute this
-software provided this notice is not removed or altered.  All other rights
-are reserved by AMD.
-
-AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
-SOFTWARE.  IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
-DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
-USE OF THIS SOFTWARE.
-
-So that all may benefit from your experience, please report  any  problems
-or  suggestions about this software to the 29K Technical Support Center at
-800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131  in  the  UK,  or
-0031-11-1129 in Japan, toll free.  The direct dial number is 512-462-4118.
-
-Advanced Micro Devices, Inc.
-29K Support Products
-Mail Stop 573
-5900 E. Ben White Blvd.
-Austin, TX 78741
-800-292-9263
-
-(5) Array Technology Corporation and MIPS (mips/lsi33k-stub.h)
- 
-COPYRIGHT (C) 1991, 1992 ARRAY TECHNOLOGY CORPORATION
-              All Rights Reserved
-
-This software is confidential information which is proprietary to and
-a trade secret of ARRAY Technology Corporation.  Use, duplication, or
-disclosure is subject to the terms of a separate license agreement.
-
-Copyright 1985 by MIPS Computer Systems, Inc.
- 
-(6) University of Utah and the Computer Systems Laboratory (CSL)
-    [applies only to hppa*-*-pro* targets] 
-
-Copyright (c) 1990,1994 The University of Utah and
-the Computer Systems Laboratory (CSL).  All rights reserved.
-
-Permission to use, copy, modify and distribute this software is hereby
-granted provided that (1) source code retains these copyright, permission,
-and disclaimer notices, and (2) redistributions including binaries
-reproduce the notices in supporting documentation, and (3) all advertising
-materials mentioning features or use of this software display the following
-acknowledgement: ``This product includes software developed by the
-Computer Systems Laboratory at the University of Utah.''
-
-THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
-IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
-ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
-
-CSL requests users of this software to return to csl-dist at cs.utah.edu any
-improvements that they make and grant CSL redistribution rights.
-
-(7) Sun Microsystems
-
-Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-
-Developed at SunPro, a Sun Microsystems, Inc. business.
-Permission to use, copy, modify, and distribute this
-software is freely granted, provided that this notice 
-is preserved.
-
-(8) Hewlett Packard
-
-(c) Copyright 1986 HEWLETT-PACKARD COMPANY
-
-To anyone who acknowledges that this file is provided "AS IS"
-without any express or implied warranty:
-    permission to use, copy, modify, and distribute this file
-for any purpose is hereby granted without fee, provided that
-the above copyright notice and this notice appears in all
-copies, and that the name of Hewlett-Packard Company not be
-used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-Hewlett-Packard Company makes no representations about the
-suitability of this software for any purpose.
-
-(9) Hans-Peter Nilsson
-
-Copyright (C) 2001 Hans-Peter Nilsson
-
-Permission to use, copy, modify, and distribute this software is
-freely granted, provided that the above copyright notice, this notice
-and the following disclaimer are preserved with no changes.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-(10) No Copyright
-
-THIS SOFTWARE IS NOT COPYRIGHTED
-
-(11) Cygnus Support / Cygnus Solutions
-
-Copyright (c) 1995, 1996, 1997, 1998, 1999 Cygnus Support
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
----------------------------------------------------------------
- Please note that the copyright above may be used with the name
- Cygnus Solutions instead of Cygnus Support.  Both names should
- be considered interchangeable.  These copyrights are now owned
- by Red Hat Incorporated.
----------------------------------------------------------------
-
-(12) Red Hat Incorporated
-
-Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-(13) Default copyright 
-
-Unless otherwise stated in each remaining libgloss file, the remaining
-files in the libgloss subdirectory are governed by the following copyright.
-
-Copyright (c) 1994, 1997, 2001, 2002 Red Hat Incorporated.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met: 
-
-    Redistributions of source code must retain the above copyright 
-    notice, this list of conditions and the following disclaimer.
-
-    Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-    The name of Red Hat Incorporated may not be used to endorse 
-    or promote products derived from this software without specific 
-    prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED.  IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

Deleted: branches/binutils/package/COPYING.NEWLIB
===================================================================
--- branches/binutils/package/COPYING.NEWLIB	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/COPYING.NEWLIB	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,760 +0,0 @@
-The newlib subdirectory is a collection of software from several sources.
-Each file may have its own copyright/license that is embedded in the source 
-file.
-
-This list documents those licenses which are more restrictive than
-a BSD-like license or require the copyright notice
-to be duplicated in documentation and/or other materials associated with
-the distribution.  Certain licenses documented here only apply to
-specific targets.  Certain clauses only apply if you are building the
-code as part of your binary.
-
-Note that this list may omit certain licenses that
-only pertain to the copying/modifying of the individual source code. 
-If you are distributing the source code, then you do not need to
-worry about these omitted licenses, so long as you do not modify the
-copyright information already in place.
-
-(1) University of California, Berkeley
-
-[1a]
-
-Copyright (c) 1990 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms are permitted
-provided that the above copyright notice and this paragraph are
-duplicated in all such forms and that any documentation,
-and other materials related to such distribution and use 
-acknowledge that the software was developed
-by the University of California, Berkeley.  The name of the
-University may not be used to endorse or promote products derived
-from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-[1b]
-
-Copyright (c) 1990 The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms are permitted
-provided that the above copyright notice and this paragraph are
-duplicated in all such forms and that any documentation,
-advertising materials, and other materials related to such
-distribution and use acknowledge that the software was developed
-by the University of California, Berkeley.  The name of the
-University may not be used to endorse or promote products derived
-from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-[1c]
-
-Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 
-The Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-     This product includes software developed by the University of
-     California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-[1d]
-
-Copyright (c) 1988, 1990, 1993 Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-[1e]
-
-Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994
-The Regents of the University of California.  All rights reserved.
-(c) UNIX System Laboratories, Inc.
-All or some portions of this file are derived from material licensed
-to the University of California by American Telephone and Telegraph
-Co. or Unix System Laboratories, Inc. and are reproduced herein with
-the permission of UNIX System Laboratories, Inc.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-     This product includes software developed by the University of
-     California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
-   may be used to endorse or promote products derived from this software
-   without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-[1f]
-
-Copyright (c) 1987, 1988, 2000 Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms are permitted
-provided that: (1) source distributions retain this entire copyright
-notice and comment, and (2) distributions including binaries display
-the following acknowledgement:  ``This product includes software
-developed by the University of California, Berkeley and its contributors''
-in the documentation or other materials provided with the distribution
-and in all advertising materials mentioning features or use of this
-software. Neither the name of the University nor the names of its
-contributors may be used to endorse or promote products derived
-from this software without specific prior written permission.
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
--------------------------------------------------------------
- Please note that in some of the above alternate licenses, there is a
- statement regarding that acknowledgement must be made in any
- advertising materials for products using the code.  This restriction
- no longer applies due to the following license change:
-
-  ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
-
- In some cases the defunct clause has been removed in modified newlib code and
- in some cases, the clause has been left as-is.
--------------------------------------------------------------
-
-(2) Cygwin (cygwin targets only)
-
-Copyright 2001 Red Hat, Inc.
-
-This software is a copyrighted work licensed under the terms of the
-Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
-details.
-
-(3) David M. Gay at AT&T
-
-The author of this software is David M. Gay.
-
-Copyright (c) 1991 by AT&T.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose without fee is hereby granted, provided that this entire notice
-is included in all copies of any software which is or includes a copy
-or modification of this software and in all copies of the supporting
-documentation for such software.
-
-THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
-WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY
-REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
-OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
-
-(4) Advanced Micro Devices
-
-Copyright 1989, 1990 Advanced Micro Devices, Inc.
-
-This software is the property of Advanced Micro Devices, Inc  (AMD)  which
-specifically  grants the user the right to modify, use and distribute this
-software provided this notice is not removed or altered.  All other rights
-are reserved by AMD.
-
-AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
-SOFTWARE.  IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
-DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
-USE OF THIS SOFTWARE.
-
-So that all may benefit from your experience, please report  any  problems
-or  suggestions about this software to the 29K Technical Support Center at
-800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131  in  the  UK,  or
-0031-11-1129 in Japan, toll free.  The direct dial number is 512-462-4118.
-
-Advanced Micro Devices, Inc.
-29K Support Products
-Mail Stop 573
-5900 E. Ben White Blvd.
-Austin, TX 78741
-800-292-9263
-
-(5) C.W. Sandmann
-
-Copyright (C) 1993 C.W. Sandmann
-
-This file may be freely distributed as long as the author's name remains.
-
-(6) Eric Backus
-
-(C) Copyright 1992 Eric Backus
-
-This software may be used freely so long as this copyright notice is
-left intact.  There is no warrantee on this software.
-
-(7) Sun Microsystems
-
-Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-
-Developed at SunPro, a Sun Microsystems, Inc. business.
-Permission to use, copy, modify, and distribute this
-software is freely granted, provided that this notice 
-is preserved.
-
-(8) Hewlett Packard
-
-(c) Copyright 1986 HEWLETT-PACKARD COMPANY
-
-To anyone who acknowledges that this file is provided "AS IS"
-without any express or implied warranty:
-    permission to use, copy, modify, and distribute this file
-for any purpose is hereby granted without fee, provided that
-the above copyright notice and this notice appears in all
-copies, and that the name of Hewlett-Packard Company not be
-used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-Hewlett-Packard Company makes no representations about the
-suitability of this software for any purpose.
-
-(9) Hans-Peter Nilsson
-
-Copyright (C) 2001 Hans-Peter Nilsson
-
-Permission to use, copy, modify, and distribute this software is
-freely granted, provided that the above copyright notice, this notice
-and the following disclaimer are preserved with no changes.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.
-
-(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only)
-
-Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez at nerim.fr)
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-(11) Christopher G. Demetriou
-
-Copyright (c) 2001 Christopher G. Demetriou
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-(12) SuperH, Inc.
-
-Copyright 2002 SuperH, Inc. All rights reserved
-
-This software is the property of SuperH, Inc (SuperH) which specifically
-grants the user the right to modify, use and distribute this software
-provided this notice is not removed or altered.  All other rights are
-reserved by SuperH.
-
-SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO
-THIS SOFTWARE.  IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, 
-INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM
-THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE.
-
-So that all may benefit from your experience, please report any problems
-or suggestions about this software to the SuperH Support Center via
-e-mail at softwaresupport at superh.com .
-
-SuperH, Inc.
-405 River Oaks Parkway
-San Jose
-CA 95134
-USA
-
-(13) Royal Institute of Technology
-
-Copyright (c) 1999 Kungliga Tekniska Högskolan
-(Royal Institute of Technology, Stockholm, Sweden).
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. Neither the name of KTH nor the names of its contributors may be
-   used to endorse or promote products derived from this software without
-   specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-(14) Alexey Zelkin
-
-Copyright (c) 2000, 2001 Alexey Zelkin <phantom at FreeBSD.org>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-(15) Andrey A. Chernov
-
-Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-(16) FreeBSD
-
-Copyright (c) 1997-2002 FreeBSD Project.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-(17) S. L. Moshier
-
-Author:  S. L. Moshier.
-
-Copyright (c) 1984,2000 S.L. Moshier
-
-Permission to use, copy, modify, and distribute this software for any
-purpose without fee is hereby granted, provided that this entire notice
-is included in all copies of any software which is or includes a copy
-or modification of this software and in all copies of the supporting
-documentation for such software.
-
-THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
-WARRANTY.  IN PARTICULAR,  THE AUTHOR MAKES NO REPRESENTATION
-OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
-SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
-
-(18) Citrus Project
-
-Copyright (c)1999 Citrus Project,
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-(19) Todd C. Miller
-
-Copyright (c) 1998 Todd C. Miller <Todd.Miller at courtesan.com>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-(20) DJ Delorie (i386) 
-
-Copyright (C) 1991 DJ Delorie
-All rights reserved.
-
-Redistribution and use in source and binary forms is permitted
-provided that the above copyright notice and following paragraph are
-duplicated in all such forms.
-
-This file is distributed WITHOUT ANY WARRANTY; without even the implied
-warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-(21) Free Software Foundation LGPL License (*-linux* targets only)
-
-   Copyright (C) 1990-1999, 2000, 2001 
-   Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Mark Kettenis <kettenis at phys.uva.nl>, 1997.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301 USA.
-
-(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only)
-
-Copyright (C) 1996 Xavier Leroy (Xavier.Leroy at inria.fr)
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 Library General Public License for more details.
-
-(23) Intel (i960)
-
-Copyright (c) 1993 Intel Corporation
-
-Intel hereby grants you permission to copy, modify, and distribute this
-software and its documentation.  Intel grants this permission provided
-that the above copyright notice appears in all copies and that both the
-copyright notice and this permission notice appear in supporting
-documentation.  In addition, Intel grants this permission provided that
-you prominently mark as "not part of the original" any modifications
-made to this software or documentation, and that the name of Intel
-Corporation not be used in advertising or publicity pertaining to
-distribution of the software or the documentation without specific,
-written prior permission.
-
-Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
-IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE.  Intel makes no guarantee or
-representations regarding the use of, or the results of the use of,
-the software and documentation in terms of correctness, accuracy,
-reliability, currentness, or otherwise; and you rely on the software,
-documentation and results solely at your own risk.
-
-IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
-LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
-OF ANY KIND.  IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
-PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
-
-(24) Hewlett-Packard  (hppa targets only)
-
-(c) Copyright 1986 HEWLETT-PACKARD COMPANY
-
-To anyone who acknowledges that this file is provided "AS IS"
-without any express or implied warranty:
-    permission to use, copy, modify, and distribute this file
-for any purpose is hereby granted without fee, provided that
-the above copyright notice and this notice appears in all
-copies, and that the name of Hewlett-Packard Company not be
-used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-Hewlett-Packard Company makes no representations about the
-suitability of this software for any purpose.
-
-(25) Henry Spencer (only *-linux targets)
-
-Copyright 1992, 1993, 1994 Henry Spencer.  All rights reserved.
-This software is not subject to any license of the American Telephone
-and Telegraph Company or of the Regents of the University of California.
-
-Permission is granted to anyone to use this software for any purpose on
-any computer system, and to alter it and redistribute it, subject
-to the following restrictions:
-
-1. The author is not responsible for the consequences of use of this
-   software, no matter how awful, even if they arise from flaws in it.
-
-2. The origin of this software must not be misrepresented, either by
-   explicit claim or by omission.  Since few users ever read sources,
-   credits must appear in the documentation.
-
-3. Altered versions must be plainly marked as such, and must not be
-   misrepresented as being the original software.  Since few users
-   ever read sources, credits must appear in the documentation.
-
-4. This notice may not be removed or altered.
-
-(26) Mike Barcroft
-
-Copyright (c) 2001 Mike Barcroft <mike at FreeBSD.org>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-(27) Konstantin Chuguev (--enable-newlib-iconv)
-
-Copyright (c) 1999, 2000
-   Konstantin Chuguev.  All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-   iconv (Charset Conversion Library) v2.0
-
-(27) Artem Bityuckiy (--enable-newlib-iconv)
-
-Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation.
-Rights transferred to Franklin Electronic Publishers.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-(28) Red Hat Incorporated
-
-Unless otherwise stated in each remaining newlib file, the remaining
-files in the newlib subdirectory default to the following copyright.
-It should be noted that Red Hat Incorporated now owns copyrights
-belonging to Cygnus Solutions and Cygnus Support.
-
-Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004, 2005 Red Hat Incorporated.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met: 
-
-    Redistributions of source code must retain the above copyright 
-    notice, this list of conditions and the following disclaimer.
-
-    Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-    The name of Red Hat Incorporated may not be used to endorse 
-    or promote products derived from this software without specific 
-    prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED.  IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

Deleted: branches/binutils/package/ChangeLog
===================================================================
--- branches/binutils/package/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,11354 +0,0 @@
-2006-04-10  Ben Elliston  <bje at au.ibm.com>
-
-	* contrib: Remove directory.
-
-2006-04-06  Carlos O'Donell <carlos at codesourcery.com>
-
-	* Makefile.tpl: Add install-html target.
-	* Makefile.def: Add install-html target.
-	* Makefile.in: Regenerate.
-	* configure.in: Add --with-datarootdir, --with-docdir,
-	and --with-htmldir options.
-	* configure: Regenerate.
-
-2006-03-31  Ben Elliston  <bje at au.ibm.com>
-
-	PR binutils/1860
-	* configure.in: Require makeinfo 4.4 or higher.
-	* configure: Regenerate.
-
-2006-03-14  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.in: Regenerate.
-
-2006-03-14  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync with gcc:
-	2006-03-10  Aldy Hernandez  <aldyh at redhat.com>
-
-        * configure.in: Handle --disable-<component> generically.
-        * configure: Regenerate.
-
-	2006-02-21 Rafael Avila de Espindola <rafael.espindola at gmail.com>
-        
-        * Makefile.tpl  (BUILD_CONFIGDIRS): Remove.
-        (TARGET_CONFIGDIRS): Remove.
-        * configure.in: Remove AC_SUBST(target_configdirs).
-        * Makefile.in, configure: Regenerated.
-
-
-2006-03-01  H.J. Lu  <hongjiu.lu at intel.com>
-
-	PR libgcj/17311
-	* ltmain.sh: Don't use "$finalize_rpath" for compile.
-
-2006-02-20  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/25670
-
-	* Makefile.tpl ([+compare-target+]): Print explanation messages.
-
-	* Makefile.def (ADAFLAGS, BOOT_ADAFLAGS, LANGUAGES): New flags_to_pass.
-	* Makefile.tpl (BASE_FLAGS_TO_PASS): Support optional flags_to_pass.
-	(EXTRA_GCC_FLAGS): Remove ADAFLAGS, BOOT_ADAFLAGS, LANGUAGES,
-	BUILD_PREFIX, BUILD_PREFIX_1.
-	* configure.in: (BUILD_PREFIX, BUILD_PREFIX_1): Don't substitute.
-
-	* Makefile.def (bootstrap stage 1): Pass LIBCFLAGS too.
-	* Makefile.tpl (POSTSTAGE1_FLAGS_TO_PASS): Override LIBCFLAGS too.
-
-	* Makefile.tpl (configure-stage[+id+]-[+prefix+][+module+],
-	all-stage[+id+]-[+prefix+][+module+], : Use $(current_stage) instead
-	of `cat stage_current`.  Always provide the `r' and `s' variables.
-	(clean-stage[+id+]-[+prefix+][+module+]): Likewise, and make it into
-	a single shell execution.
-	(configure-[+prefix+][+module+], all-[+prefix+][+module+]): For
-	bootstrapped modules, make the stage1 module if the build was not
-	started yet, else build the current stage.
-	(all-host, all-target): Omit bootstrapped modules (if bootstrapping).
-	(all-build, all-host, all-target, [+make_target+]-host,
-	[+make_target+]-target): Do not use \-continued lines.
-	(target modules): Depend on stage_last, not all-gcc, if bootstrapping.
-	(current_stage, restrap, stage_last): New.
-
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-2006-02-14  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync from gcc:
-
-	2006-01-31  Richard Guenther  <rguenther at suse.de>
-		    Paolo Bonzini  <bonzini at gnu.org>
-
-        * Makefile.def (target_modules): Add libgcc-math target module.
-        * configure.in (target_libraries): Add libgcc-math target library.
-        (--enable-libgcc-math): New configure switch.
-        * Makefile.in: Re-generate.
-        * configure: Re-generate.
-        * libgcc-math: New toplevel directory.
-
-	2006-01-18  Richard Henderson  <rth at redhat.com>
-	            Jakub Jelinek  <jakub at redhat.com>
-	            Diego Novillo  <dnovillo at redhat.com>
-
-        * libgomp: New directory.
-        * Makefile.def: Add target_module libgomp.
-        * Makefile.in: Regenerate.
-        * configure.in (target_libraries): Add target-libgomp.
-        * configure: Regenerate.
-
-2006-02-14  Paolo Bonzini  <bonzini at gnu.org>
-	    Andreas Schwab  <schwab at suse.de>
-	 
-	* configure: Regenerate.
-
-2006-01-16  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Set with_gnu_as, with_gnu_ld, with_newlib earlier.
-	Set md_exec_prefix.  Use ACX_CHECK_INSTALLED_TARGET_TOOL to find
-	the assembler, linker and binutils.
-	* configure: Regenerate.
-
-2006-01-16  Nick Clifton  <nickc at redhat.com>
-
-        * config.sub, config.guess: Sync from config repository.
-
-2006-01-05  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.tpl (clean-stage[+id+]-[+prefix+][+module+]): Remove
-	@ from continuation.
-	* Makefile.in: Rebuilt.
-
-2006-01-04  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync from gcc:
-
-	2006-01-04  Paolo Bonzini  <bonzini at gnu.org>
-
-        PR bootstrap/24252
-
-        * Makefile.def (flags_to_pass): Add STAGE1_CFLAGS and STAGE1_LANGUAGES.
-        * Makefile.tpl (OBJDUMP): New.
-        (EXTRA_HOST_FLAGS): Add it.
-        (EXTRA_GCC_FLAGS): Remove flags already specified in flags_to_pass.
-
-        * Makefile.tpl (stage[+id+]-start, stage[+id+]-end): Do not try
-        to use symbolic links between directories.  Avoid race conditions
-        or make them harmless.
-        * configure.in: Do not try to use symbolic links between directories.
-
-        * Makefile.def (LEAN): Pass.
-        * Makefile.tpl (LEAN): Define.
-        (stage[+id+]-start): Accept that the previous directory does not
-        exist, if the bootstrap is lean.
-        (stage[+id+]-bubble): Invoke lean bootstrap commands after
-        stage[+id+]-start.  Use a makefile variable and an `if' instead of a
-        configure substitution.
-        ([+compare-target+]): Likewise.
-        ([+bootstrap-target+]-lean): New.
-        * configure.in: Remove lean bootstrap support from here.
-
-        * Makefile.in: Regenerate.
-        * configure: Regenerate.
-
-	2006-01-02  Andreas Schwab  <schwab at suse.de>
-
-        * configure.in: When reconfiguring remove Makefile in
-        all stage directories.
-        * configure: Regenerate.
-
-2005-12-27  Leif Ekblad  <leif at rdos.net>
-
-	* configure.in: Add support for RDOS target.
-	* configure: Regenerate.
-
-2005-12-27  Nick Clifton  <nickc at redhat.com>
-
-	PR binutils/1990
-	* libtool.m4: Synchronize with version in GCC sources.
-
-2005-12-20  Paolo Bonzini  <bonzini at gnu.org>
-
-        Revert Ada-related part of the previous change.
-
-        * Makefile.def (ADAFLAGS, BOOT_ADAFLAGS, ADAFLAGS_FOR_TARGET):
-        Do not pass.
-        * Makefile.tpl (BOOT_ADAFLAGS): Do not define.
-        * Makefile.in: Regenerate.
-        * configure.in: Do not include mt-ppc-aix target fragment.
-        * configure: Regenerate.
-
-2005-12-19  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Select appropriate fragments for PowerPC/AIX.
-	* configure: Regenerate.
-
-	* Makefile.def (flags_to_pass): Add ADAFLAGS, BOOT_ADAFLAGS,
-	BOOT_CFLAGS, BOOT_LDFLAGS.
-	* Makefile.tpl (POSTSTAGE1_FLAGS_TO_PASS): Handle BOOT_ADAFLAGS,
-	BOOT_CFLAGS, BOOT_LDFLAGS.
-	(TARGET_FLAGS_TO_PASS): Handle ADAFLAGS_FOR_TARGET.
-	(stage[+id+]-bubble): Pass flags recursively to the comparison target.
-	(stage): Fail if we cannot complete the work.
-	* Makefile.in: Regenerate.
-
-2005-12-16  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Update copyright year for default
-	copyright.
-
-2005-12-15  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (all, do-[+make_target+], do-check, install,
-	install-host-nogcc): Don't invoke $(stage) at the end.
-	* Makefile.in: Regenerate.
-
-2005-12-14  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Flip the top-level bootstrap switch.
-	* configure: Regenerate.
-
-	Merge from gcc:
-
-	2005-12-14  Daniel Jacobowitz  <dan at codesourcery.com>
-
-        * Makefile.tpl: Throughout the file, use : $(MAKE) along with
-        $(stage) and $(unstage).
-        (EXTRA_TARGET_FLAGS): Correct double-quoting.
-        (all): Remove stray semicolon.
-        (local-distclean): Don't handle multilib.tmp and multilib.out.
-        (install.all): Set $s for consistency.
-        (configure-[+prefix+][+module+]): Instead of [+deps+], handle
-        check_multilibs setting.  Always make the install directory.
-        (configure-stage[+id+]-[+prefix+][+module+]): Likewise.
-        Correct @if/@endif.
-        (all-stage[+id+]-[+prefix+][+module+]): Correct @if/@endif.
-        ($(TARGET_SUBDIR)/[+module+]/multilib.out): Remove.
-        (stage[+id+]-start, stage[+id+]-end): Stage $(TARGET_SUBDIR).
-        (multilib.out): Remove.
-        * Makefile.in: Regenerated.
-
-2005-12-12  Nathan Sidwell  <nathan at codesourcery.com>
-
-	* config.sub: Replace ms1 arch with mt.  Allow ms1 as alias.
-	* configure.in: Replace ms1 arch with mt.
-	* configure: Rebuilt.
-
-2005-12-05  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync with gcc:
-
-2005-12-12  Nathan Sidwell  <nathan at codesourcery.com>
-
-	* config.sub: Replace ms1 arch with mt.  Allow ms1 as alias.
-	* configure.in: Replace ms1 arch with mt.
-	* configure: Rebuilt.
-
-2005-12-05  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync with gcc:
-
-	2005-12-05  Paolo Bonzini  <bonzini at gnu.org>
-
-        * configure.in (CONFIGURED_BISON, CONFIGURED_YACC, CONFIGURED_M4,
-        CONFIGURED_FLEX, CONFIGURED_LEX, CONFIGURED_MAKEINFO): Remove
-        "CONFIGURED_" from the AC_CHECK_PROGS invocation.  Move below.
-        Find in-tree tools if available.
-        (EXPECT, RUNTEST, LIPO, STRIP): Find them and substitute them.
-        (CONFIGURED_*_FOR_TARGET): Don't set nor substitute.
-        (*_FOR_TARGET): Set them with GCC_TARGET_TOOL.
-        (COMPILER_*_FOR_TARGET): New.
-        * Makefile.tpl (HOST_EXPORTS): Add *_FOR_TARGET symbols that gcc needs.
-        (BASE_TARGET_EXPORTS): Use COMPILER_*_FOR_TARGET symbols.
-        (CONFIGURED_*, USUAL_*): Remove.
-        (BISON, YACC, FLEX, LEX, M4, MAKEINFO, EXPECT, RUNTEST, LIPO,
-        STRIP): Use autoconf substitutions.
-        (COMPILER_AS_FOR_TARGET, COMPILER_LD_FOR_TARGET,
-        COMPILER_NM_FOR_TARGET): New.
-        (EXTRA_HOST_FLAGS): Pass LIPO and STRIP.
-
-        (all): Make all-host and all-target in parallel.
-        (do-[+make_target+], do-check, install, [+compare-target+]): Ensure
-        that $$r and $$s are set before invoking a recursive make.
-        (stage[+id+]-bubble): Likewise, and invoke the comparison at the end.
-        ([+bootstrap-target+]): Inline most of the `all' target.
-
-	2005-11-29  Ben Elliston  <bje at au.ibm.com>
-
-        * Makefile.tpl (clean-target-libgcc): Invoke clean-target-libgcc
-        from the gcc build directory.
-        * Makefile.in: Regenerate.
-
-	2005-11-29  Ben Elliston  <bje at au.ibm.com>
-
-        * Makefile.def: Add new libdecnumber host_module.  Make all-gcc
-        depend on all-libdecnumber.
-        * configure.in (host_libs): Include libdecnumber.
-        * Makefile.in: Regenerate.
-        * configure: Likewise.
-
-	2005-11-21  Kean Johnston  <jkj at sco.com>
-
-        * config.sub, config.guess: Sync from upstream sources.
-
-2005-11-11  Daniel Jacobowitz  <dan at codesourcery.com>
-
-	* Makefile.def: Remove gdb dependencies for gdbtk.
-	* Makefile.tpl (CONFIGURE_GDB_TK, INSTALL_GDB_TK): New variables.
-	(configure-gdb, install-gdb): New rules.
-	* configure.in: Set CONFIGURE_GDB_TK and INSTALL_GDB_TK.
-	* Makefile.in, configure: Regenerated.
-
-2005-10-22  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/24297
-	* Makefile.tpl (do-[+make-target+], do-check, install,
-	stage[+id+]-bubble, [+compare-target+]): Ensure $$r and $$s
-	are set before recursing.
-	* Makefile.in: Regenerate.
-
-2005-10-20  Eric Botcazou  <ebotcazou at adacore.com>
-
-	PR bootstrap/18939
-	* Makefile.def (gcc) <target>: Fix thinko.
-	* Makefile.in: Regenerate.
-
-2005-10-17  Bernd Schmidt  <bernd.schmidt at analog.com>
-
-	* configure.in (bfin-*-*): Use test, not brackets, in if statement.
-	* configure: Regenerate.
-
-2005-10-09  Kazu Hirata  <kazu at codesourcery.com>
-
-	* configure.in (arm-*-linux-gnueabi): Add to noconfigdirs
-	target-libffi, target-qthreads, target-libjava, and
-	targetlibobjc.
-	* configure: Regenerate.
-
-2005-10-06  Daniel Jacobowitz  <dan at codesourcery.com>
-
-	* Makefile.def (flags_to_pass): Add OBJDUMP_FOR_TARGET.
-	* Makefile.tpl (BASE_TARGET_EXPORTS): Add OBJDUMP.
-	(OBJDUMP_FOR_TARGET, CONFIGURED_OBJDUMP_FOR_TARGET)
-	(USUAL_OBJDUMP_FOR_TARGET): New.
-	(EXTRA_TARGET_FLAGS): Add OBJDUMP.
-	* configure.in: Check for $OBJDUMP_FOR_TARGET.
-	* configure, Makefile.in: Regenerated.
-
-2005-10-05  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (all) [gcc-no-bootstrap]: Make prebootstrap packages
-	before other host packages.
-
-2005-10-05  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/22340
-
-	* configure.in (default_target): Remove.
-	* Makefile.tpl (all): Do not use prerequisites as subroutines
-	(all) [gcc-bootstrap]: Bootstrap gcc first if it was not done yet.
-	(do-[+make_target+], check, install, [+bootstrap_target+]): Do not
-	use prerequisites as subroutines.
-	(check-host, check-target): New.
-	(bootstrap configure & all targets): Do not use stage*-start
-	if the directory layout is already ok.
-	(non-bootstrap configure & all targets): Prepend a $(unstage).
-	(stage[+id+]-bubble): Do that here.  Do not use NOTPARALLEL.
-	(NOTPARALLEL): Remove.
-	(unstage, stage variables): New variables.
-	(unstage, stage targets): Simply expand to those variables.
-
-	* configure: Regenerate.
-	* Makefile.in: Regenerate.
-
-2005-10-04  James E Wilson  <wilson at specifix.com>
-
-	* Makefile.def (lang_env_dependencies): Add libmudflap.
-	* Makefile.in: Regenerate.
-
-2005-10-03  Catherine Moore  <clm at cm00re.com>
-
-	* configure.in (bfin-*-*): Support bfin.
-	* configure: Regenerated.
-
-2005-09-30  H.J. Lu  <hongjiu.lu at intel.com>
-
-	* configure.in (*-*-darwin*): Build bfd, binutils and opcodes.
-	* configure: Regenerated.
-
-2005-09-28  Geoffrey Keating  <geoffk at apple.com>
-
-	* Makefile.tpl (BASE_TARGET_EXPORTS): Add LIPO, STRIP.
-	(LIPO_FOR_TARGET): New.
-	(CONFIGURED_LIPO_FOR_TARGET): New.
-	(USUAL_LIPO_FOR_TARGET): New.
-	(STRIP_FOR_TARGET): New.
-	(CONFIGURED_STRIP_FOR_TARGET): New.
-	(USUAL_STRIP_FOR_TARGET): New.
-	* Makefile.def (flags_to_pass): Add LIPO_FOR_TARGET and
-	STRIP_FOR_TARGET.
-	* configure.in: Set LIPO_FOR_TARGET, STRIP_FOR_TARGET,
-	CONFIGURED_LIPO_FOR_TARGET, CONFIGURED_STRIP_FOR_TARGET.
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-	
-2005-09-19  David Edelsohn  <edelsohn at gnu.org>
-
-	* configure.in (powerpc-*-aix*): Add target-libssp to noconfigdirs.
-	(rs6000-*-aix*): Same.
-	* configure: Regenerate.
-
-2005-09-14  Francois-Xavier Coudert  <coudert at clipper.ens.fr>
-
-	* configure.in: Recognize f95 in the --enable-languages option,
-	and substitute it for fortran, issuing a warning.
-	* configure: Regenerate.
-
-2005-09-07  Ben Elliston  <bje at au.ibm.com>
-
-	Import from Autoconf sources:
-
-	2005-09-06  Paul Eggert  <eggert at cs.ucla.edu>
-	* move-if-change: Don't output "$2 is unchanged"; suggested by Ben
-	Elliston.  Handle weird characters correctly.
-
-2005-08-30  Phil Edwards  <phil at codesourcery.com>
-
-	* configure.in (*-*-vxworks*):  Add target-libstdc++-v3 to noconfigdirs.
-	* configure:  Regenerated.
-
-2005-08-20  Richard Earnshaw  <richard.earnshaw at arm.com>
-
-        * Makefile.def (libssp): Add to lang_env_dependencies.
-        * Makefile.in: Regenerate.
-
-2005-08-17  Christian Groessler  <chris at groessler.org>
-
-	* Makefile.tpl: (USUAL_CC_FOR_TARGET): Add missing trailing slash.
-	* Makefile.in: Regenerate.
-
-2005-08-12  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Replace NCN_STRICT_CHECK_TOOL with
-	NCN_STRICT_CHECK_TOOLS, and likewise for NCN_STRICT_CHECK_TARGET_TOOLS.
-	Look for alternate names of the target cc and c++
-	* configure: Regenerate.
-
-2005-08-08  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in (CC_FOR_TARGET, CXX_FOR_TARGET, GCJ_FOR_TARGET,
-	GCC_FOR_TARGET, RAW_CXX_FOR_TARGET, GFORTRAN_FOR_TARGET): Find
-	them with NCN_STRICT_CHECK_TARGET_TOOL, like the other target
-	tools; remove code to manually set them.
-	(Target tools): Look in the environment for them.
-	* Makefile.tpl (CC_FOR_TARGET, CXX_FOR_TARGET, GCJ_FOR_TARGET,
-	GCC_FOR_TARGET, RAW_CXX_FOR_TARGET, GFORTRAN_FOR_TARGET): Redefine.
-	(AS_FOR_TARGET, LD_FOR_TARGET, NM_FOR_TARGET): Look into gcc
-	build directory.
-	(CONFIGURED_CC_FOR_TARGET, CONFIGURED_CXX_FOR_TARGET,
-	CONFIGURED_GCJ_FOR_TARGET, CONFIGURED_GCC_FOR_TARGET,
-	CONFIGURED_GFORTRAN_FOR_TARGET, USUAL_CC_FOR_TARGET,
-	USUAL_CXX_FOR_TARGET, USUAL_GCJ_FOR_TARGET, USUAL_GCC_FOR_TARGET,
-	USUAL_RAW_CXX_FOR_TARGET, USUAL_GFORTRAN_FOR_TARGET): New.
-	(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE,
-	RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, RECURSE_FLAGS): Delete.
-	* configure: Regenerate.
-	* Makefile.in: Regenerate.
-
-2005-07-27  Mark Mitchell  <mark at codesourcery.com>
-
-	* Makefile.tpl (EXTRA_TARGET_FLAGS): Set LDFLAGS=LDFLAGS_FOR_TARGET.
-	* Makefile.def (flags_to_pass): Add LDFLAGS_FOR_TARGET. 
-	* Makefile.in: Regenerated.
-
-2005-07-26  Mark Mitchell  <mark at codesourcery.com>
-
-	* Makefile.tpl (SYSROOT_CFLAGS_FOR_TARGET): New variable.
-	(CFLAGS_FOR_TARGET): Use it.
-	(CXXFLAGS_FOR_TARGET): Likewise.
-	* Makefile.in: Regenerated.
-	* configure.in (--with-build-sysroot): New option.
-	* configure: Regenerated.
-
-2005-07-24  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl: Wrap install between unstage and stage
-	* Makefile.in: Regenerate.
-
-2005-07-16  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* all files: Update FSF address.
-
-2005-07-14  Jim Blandy  <jimb at redhat.com>
-
-	* configure.in: Add cases for Renesas m32c.
-	* configure: Regenerated.
-	
-2005-07-14  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* COPYING, compile, config-ml.in, config.guess,
-	config.sub, install-sh, missing, mkinstalldirs,
-	symlink-tree, ylwrap: Sync from upstream sources.
-
-2005-07-13  Eric Christopher  <echristo at redhat.com>
-
-	* configure.in: Add toplevel noconfigdir support for tpf.
-	* configure: Regenerate.
-
-2005-07-11  Jakub Jelinek  <jakub at redhat.com>
-
-	* Makefile.def (target_modules): Add libssp.
-	* configure.in (target_libraries): Add target-libssp.
-	* configure: Rebuilt.
-	* Makefile.in: Rebuilt.
-
-2005-07-11  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR ada/22340
-
-	* Makefile.def: Sync with gcc.
-	* Makefile.tpl (POSTSTAGE1_FLAGS_TO_PASS): Fix pasto.
-	* Makefile.in: Regenerate.
-
-2005-07-07  Andreas Schwab  <schwab at suse.de>
-
-	* Makefile.def (flags_to_pass): Add CFLAGS_FOR_BUILD.
-	* Makefile.tpl (EXTRA_GCC_FLAGS): Don't pass CFLAGS_FOR_BUILD here.
-	* Makefile.in: Regenerated.
-
-2005-07-07  Kazu Hirata  <kazu at codesourcery.com>
-
-	* configure.in: Add --enable-libssp and --disable-libssp.
-	* configure: Regenerate with autoconf-2.13.
-
-2005-07-06  Geoffrey Keating  <geoffk at apple.com>
-
-	* configure.in: Don't build sim or rda when targetting darwin.
-	* configure: Regenerate.
-
-2005-07-04  Ben Elliston  <bje at gnu.org>
-
-	* src-release (do-proto-toplev): Remove dejagnu bits.
-	(DEJAGNU_SUPPORT_DIRS): Remove.
-	(dejagnu.tar.bz2, dejagnu.tar): Likewise.
-	(GDBD_SUPPORT_DIRS): Likewise.
-	(gdb+dejagnu.tar.bz2, gdb+dejagnu.tar): Likewise.
-	(INSIGHTD_SUPPORT_DIRS): Likewise.
-	(insight+dejagnu.tar.bz2, insight+dejagnu.tar): Likewise.
-
-2005-06-30  Ben Elliston  <bje at gnu.org>
-
-	* setup.com (mpw): Remove unused directive.
-
-2005-06-22  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (stagefeedback): Come after profile.
-	Define profiledbootstrap target.
-	* Makefile.tpl (profiledbootstrap): Remove.
-	(stageprofile-end): Zap stagefeedback.
-	(stagefeedback-start): Copy all .gcda files, not only GCC's.
-	* Makefile.in: Regenerate.
-
-2005-06-13  Zack Weinberg  <zack at codesourcery.com>
-
-	* depcomp: Update from automake CVS.  Add 'ia64hp' stanza.
-	In 'cpp' stanza, support '#line' as well as '# '.
-
-2005-06-07  Hans-Peter Nilsson  <hp at axis.com>
-
-	* configure.in (unsupported_languages): New macro.
-	<mmix-knuth-mmixware>: Set unsupported_languages.  Name explicit
-	non-ported target libraries in noconfigdirs.
-	<cris-*, crisv32-*> Ditto, except for non-aout, non-elf,
-	non-linux-gnu.  Remove libgcj_ex_libffi.
- 	<lang_frag loop>: Set add_this_lang=no if the language is in
-	unsupported_languages.
-	* configure: Regenerate.
-
-2005-06-04  Tobias Schl"uter  <tobias.schlueter at physik.uni-muenchen.de>
-
-	* configure.in: Fix typo in handling of --with-mpfr-dir.
-	* configure: Regenerate.
-
-2005-06-02  Jim Blandy  <jimb at redhat.com>
-
-	* config.sub: Add cases for the Renesas m32c.  (This patch has been
-	accepted into the master sources.)
-
-2005-06-02  Aldy Hernandez  <aldyh at redhat.com>
-            Michael Snyder  <msnyder at redhat.com>
-            Stan Cox  <scox at redhat.com>
-
-        * configure.in: Set noconfigdirs for ms1.
-
-        * configure: Regenerate.
-
-2005-05-25  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (stage[+id+]-start): Iterate over target module as well.
-	(Dependencies): Consider target modules for bootstrap dependencies.
-	Make target bootstrap modules depend on each stage's gcc.
-	* Makefile.in: Regenerate.
-
-2005-05-20  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (configure-gcc): Depend on binutils having been built.
-	(all-gcc): No need to do it here.
-	* Makefile.in: Regenerate.
-
-2005-05-19  Paul Brook  <paul at codesourcery.com>
-
-	* configure.in: Rewrite misleading error message when requested 
-	language cannot be built.
-	* configure: Regenerate.
-
-2005-05-15  Daniel Jacobowitz  <dan at codesourcery.com>
-
-	* ylwrap: Import from Automake 1.9.5.
-
-2005-05-04  Mike Stump  <mrs at apple.com>
-
-	* configure.in: Always pass --target to target configures as
-	otherwise rebuilds that do --recheck will fail.
-	* configure: Rebuilt.
-
-2005-05-04  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Rename from
-	STAGE_HOST_EXPORTS.
-	(configure, all): Add bootstrap support.
-	(Host modules, target modules): Pass post-stage1 flags and exports.
-	(Top-level bootstrap): Remove bootstrap rules, expanded elsewhere.
-	* Makefile.in: Regenerate.
-
-2005-04-29  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync from gcc:
-
-	2005-04-22  Bernd Schmidt  <bernd.schmidt at analog.com>
-
-        * config.sub: Update from master copy.
-
-	2005-04-19  Hans-Peter Nilsson  <hp at axis.com>
-
-        * configure.in <crisv32-*-*, cris-*-*>: New local variable
-        libgcj_ex_libffi.  Have specific match for *-*-linux*.  Separate
-        matches for "*-*-aout" and "*-*-elf".  Don't disable libffi for
-        "*-*-elf" and "*-*-linux*".
-        * configure: Regenerate.
-
-2005-04-06  Paolo Bonzini  <bonzini at gnu.org>
-
-        * Makefile.tpl (BUILD_CONFIGARGS): Include --with-build-subdir.
-	(TARGET_CONFIGARGS): Include --with-target-subdir.
-	(configure, all): New macros.  Use them throughout.
-
-2005-04-05  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl: Sync with gcc.
-	* Makefile.in: Regenerate.
-
-2005-03-30  J"orn Rennecke <joern.rennecke at st.com>
-
-	* config/mh-mingw32: Delete.
-	* configure.in: Don't use it.
-	* configure: Regenerate.
-
-2005-03-31  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (bfd, opcodes, libstdc++-v3, libmudflap): Set lib_path.
-	* Makefile.tpl (SET_LIB_PATH, REALLY_SET_LIB_PATH): Remove.
-	(HOST_EXPORTS, STAGE_HOST_EXPORTS, TARGET_EXPORTS): Set $(RPATH_ENVVAR).
-	(HOST_LIB_PATH): Generate from Makefile.def.
-	(TARGET_LIB_PATH): Likewise.
-	(Old bootstrap targets): Include TARGET_LIB_PATH into RPATH_ENVVAR.
-	* Makefile.in: Regenerate.
-	* configure.in (set_lib_path, SET_LIB_PATH, SET_GCC_LIB_PATH): Remove.
-	(RPATH_ENVVAR): Include Darwin case.
-	* configure: Regenerate.
-
-2005-03-25  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in (RPATH_ENVVAR): Set to DYLD_LIBRARY_PATH on Darwin.
-	* configure: Regenerate.
-
-2005-03-21  Zack Weinberg  <zack at codesourcery.com>
-
-	* Makefile.def: Remove libstdcxx_incdir, libsubdir, gxx_include_dir,
-	gcc_version, and gcc_version_trigger from set of flags to pass.
-	* Makefile.tpl: Remove definitions of above variables.
-	(config.status): Remove dependency on $(gcc_version_trigger).
-	* Makefile.in: Regenerate.
-	* configure.in: Do not reference config/gcc-version.m4 nor
-	config/gxx-include-dir.m4.  Do not invoke TL_AC_GCC_VERSION nor
-	TL_AC_GXX_INCLUDE_DIR.  Do not set gcc_version_trigger.
-	* configure: Regenerate.
-
-2005-03-16  Manfred Hollstein  <manfred.h at gmx.net>
-	    Andrew Pinski <pinskia at physics.uc.edu>
-
-	* Makefile.tpl (check-[+module+]): Fix shell statement inside if ... fi.
-	* Makefile.in: Regenerate.
-
-2005-03-01  Alexandre Oliva  <aoliva at redhat.com>
-
-	PR libgcj/20160
-	* ltmain.sh: Avoid creating archives with components that have
-	duplicate basenames.
-
-2005-02-28  Andrew Pinski  <pinskia at physics.uc.edu>
-
-	PR bootstrap/20250
-	* Makefile.tpl (HOST target installs): Fix copy and pasto, use install
-	instead of check.
-	* Makefile.in: Regenerate.
-
-2005-02-28  Paolo Bonzini  <bonzini at gnu.org>
-
-	Sync from gcc.
-
-	2005-02-28  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/17383
-	* Makefile.def (target_modules): Remove "stage", now unnecessary.
-	* Makefile.tpl (HOST_SUBDIR): New substitution.
-	(STAGE_HOST_EXPORTS, EXPECT, HOST_LIB_PATH, USUAL_AR_FOR_TARGET,
-	USUAL_AS_FOR_TARGET, USUAL_DLLTOOL_FOR_TARGET, USUAL_GCC_FOR_TARGET,
-	USUAL_LD_FOR_TARGET, USUAL_NM_FOR_TARGET, USUAL_OBJDUMP_FOR_TARGET,
-	USUAL_RANLIB_FOR_TARGET, USUAL_WINDRES_FOR_TARGET): Use it.
-	(Host modules, Bootstrapped modules): Use it.
-	(Build modules, Target modules): Do not create symlink trees,
-	always configure out-of-srcdir.
-	(distclean): Try removing $(host_subdir) with rm before using rm -rf.
-	* configure.in (FLAGS_FOR_TARGET, CC_FOR_TARGET, GCJ_FOR_TARGET,
-	GFORTRAN_FOR_TARGET, CXX_FOR_TARGET, RAW_CXX_FOR_TARGET): Use
-	$(HOST_SUBDIR).  Create a symlink for host_subdir.
-
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-	Merged from libada-gnattools-branch:
-	2004-11-28  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.def: Add gnattools as a module, depending on target-libada.
-	* Makefile.in: Regenerate.
-	* configure.in: Include gnattools in host_tools; disable it if ada
-	is disabled.
-	* configure: Regenerate.
-
-2005-02-23  Nick Clifton  <nickc at redhat.com>
-
-	* configure: Regenerate.
-
-2005-02-22  Paul Schlie  <schlie at comcast.net>
-
-	* configure.in: Allow darwin targeted ports to build tk, itcl and
-	libgui.
-
-2005-02-21  Eric Botcazou  <ebotcazou at libertysurf.fr>
-
-	PR libgcj/10353
-	* configure.in (noconfigdirs) <sparc-*-solaris2.[0-6]>: Add libgcj.
-	* configure: Regenerate.
-
-2005-02-08  Andrew Cagney  <cagney at gnu.org>
-
-	* MAINTAINERS: Delete reference to dejagnu/ and mmalloc/ from the
-	gdb/ section.  Update GDB's URL.
-
-2005-01-31  Andrew Cagney  <cagney at gnu.org>
-
-	* gettext.m4: Only set ENABLE_NLS when gettext is present.
-
-2005-01-29  Hans-Peter Nilsson  <hp at axis.com>
-
-	* configure.in (noconfigdirs) <crisv32-*-*>: Match like cris-*-*.
-	<crisv32-*-*, cris-*-*>: Only disable target-newlib and
-	target-libgloss when not *-*-elf and *-*-aout.
-	* configure: Regenerate.
-
-2005-01-27  Andrew Cagney  <cagney at gnu.org>
-
-	* gettext.m4: Don't use NONE as a default for CATOBJEXT.
-
-2005-01-24  Andrew Cagney  <cagney at gnu.org>
-
-	* gettext.m4: Only fall back to ../intl/ when it's present.
-
-2005-01-17  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* install-sh, config.sub: Import from upstream.
-
-2005-01-17  Kelley Cook  <kcook at gcc.gnu.org>
-
-	PR bootstrap/18222
-	* Makefile.def: Pass CPPFLAGS_FOR_TARGET.
-	* Makefile.tpl: Define target CPPFLAGS on CPPFLAGS_FOR_TARGET.
-	* Makefile.in: Regenerate.
-
-2005-01-03  Paolo Bonzini  <bonzini at gnu.org>
-
-	Revert 2004-12-28 Makefile changes, a better fix will be
-	applied to mainline and src after GCC 4.0 branches.
-
-2004-12-28  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/17383
-
-	* Makefile.def (target_modules): Remove stage parameter,
-	it is always true now.
-	* Makefile.tpl (configure-build-[+module+],
-	configure-target-[+module+]): Always build symlink tree
-	for the directory and for include.  BUILD_SUBDIR and
-	TARGET_SUBDIR cannot be . anymore.
-	* Makefile.in: Regenerate.
-
-2004-12-25  David Edelsohn  <edelsohn at gnu.org>
-
-	Revert 2004-12-08 Makefile changes.
-
-2004-12-16  Andrew Stubbs  <andrew.stubbs at st.com>
-
-	* configure.in (sh64-*-*): Reenable gprof.
-	* configure: Regenerate.
-
-2004-12-09  Jim Blandy  <jimb at redhat.com>
-
-	* MAINTAINERS: List 'depcomp' as part of automake.
-
-2004-12-08  David Edelsohn  <edelsohn at gnu.org>
-
-	* Makefile.def (flags_to_pass): Add PICFLAG_FOR_TARGET.
-	* Makefile.tpl (EXTRA_HOST_FLAGS): Add PICFLAG.
-	(EXTRA_TARGET_FLAGS): Add PICFLAG.
-	* Makefile.in: Regenerate.
-
-2004-12-07  Matt Kraai  <kraai at ftbfs.org>
-
-	* Makefile.tpl: Generate normal dependencies if the LHS module is
-	not bootstrapped.
-	* Makefile.in: Regenerate.
-
-2004-12-03  Richard Sandiford  <rsandifo at redhat.com>
-
-	* configure.in: Include config/gxx-include-dir.m4.  Use
-	TL_AC_GXX_INCLUDE_DIR.  Remove some now-redundant AC_SUBSTs.
-	* configure: Regenerate.
-
-2004-12-03  Richard Sandiford  <rsandifo at redhat.com>
-
-	* config.if: Delete.
-	* configure.in: Set libstdcxx_incdir directly.
-	* configure: Regenerate.
-	* MAINTAINERS: Remove mention of config.if.
-	* src-release (DEVO_SUPPORT): Remove config.if.
-
-2004-12-02  Eric Christopher  <echristo at redhat.com>
-
-	* Makefile.tpl (clean-target-libgcc): Add stmp-dirs to list
-	of things to remove.
-	* Makefile.in: Regenerate.
-
-2004-12-02  Richard Sandiford  <rsandifo at redhat.com>
-
-	* configure.in: Clear gcc_version_trigger if the file doesn't exist.
-	* configure: Regenerate.
-
-2004-12-02  Richard Sandiford  <rsandifo at redhat.com>
-
-	* configure.in: Include config/gcc-version.m4.  Use TL_AC_GCC_VERSION
-	to set gcc_version_trigger.  Remove some now-redundant AC_SUBSTs.
-	* configure: Regenerate.
-
-2004-11-26  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
-
-	* configure.in (hppa*-*-linux*): Don't add libgcj to noconfigdirs.
-	(hppa*64*-*-*): Delete incorrect comment.
-	* configure: Rebuilt.
-
-2004-11-15  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* install-sh, compile: Import from automake.
-
-2004-11-15  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* config.guess, config.sub:  Import from savannnah.
-
-2004-11-12  Mike Stump  <mrs at apple.com>
-
-	* Makefile.def: Add html support.
-	* Makefile.tpl: Likewise.
-	* Makefile.in: Regenerate.
-
-2004-11-11  Geoffrey Keating  <geoffk at apple.com>
-
-	PR 18423
-	* configure.in: Remove all instances of build-fixincludes from
-	noconfigdirs.
-	(build_configargs): Supply --target to subdirectories.
-	* configure: Regenerate.
-
-	* Makefile.def: Make gcc install depend on fixincludes install.
-	* Makefile.in: Regenerate.
-
-2004-11-08  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* configure.in (noconfigdirs) [mmix-*-*]: Disable
-	target-libgfortran.
-	* configure: Regenerate.
-
-2004-11-07  David Edelsohn  <edelsohn at gnu.org>
-
-	* config-ml.in: Pass FCFLAGS for multilibs, handle GFORTRAN
-	like CC.
-
-2004-11-05  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (host fixincludes): Specify missing targets.
-	* Makefile.in: Regenerate.
-
-2004-11-04  H.J. Lu  <hongjiu.lu at intel.com>
-
-	PR other/17783
-	* configure.in: Set up LD_LIBRARY_PATH by default for gcc.
-	* configure: Regenerated.
-
-2004-11-04  Daniel Jacobowitz  <dan at debian.org>
-
-	* configure.in (arm-*-oabi*, thumb-*-oabi*): Remove.
-	* configure: Regenerated.
-
-2004-10-28  Eric B. Weddington  <ericw at evcohs.com>
-
-	PR target/18151
-	* configure.in (case ${target}): Do not build fixincludes for avr.
-	* configure: Regenerated.
-
-2004-10-26  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in (case ${target}): Do not build fixincludes
-	on platforms where it is not used.
-	* configure: Regenerated.
-
-2004-10-23  Daniel Jacobowitz  <dan at debian.org>
-
-	* configure.in: Use an absolute path to install-sh.
-	* configure: Regenerated.
-
-2004-10-19  Andrew Cagney  <cagney at gnu.org>
-
-	* src-release (do-djunpack, do-md5sum): Install the generated file
-	directly into the proto-toplev/ directory.
-
-2004-10-19  Andrew Cagney  <cagney at gnu.org>
-
-	* src-release (GDB_SUPPORT_DIRS): Remove utils and intl.
-
-2004-10-12  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* configure.in (*-*-cygwin*): Supress warning if newlib not present.
-	* configure: Regenerate.
-
-2004-10-06  Paolo Bonzini  <bonzini at gnu.org>
-
-	Fix wrong conflict resolution in:
-
-	2004-08-16  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.in: Regenerate.
-	* Makefile.tpl (Autogenerated `all-*' targets): Invoke $(TARGET-*)
-	in the recursive `make', instead of hardwiring `all'.
-	(Autogenerated TARGET-* variables): New.
-
-2004-10-05  Ulrich Weigand  <uweigand at de.ibm.com>
-
-	Merged from GCC / libtool upstream:
-	2004-10-02  P.J. Darcy  <darcypj at us.ibm.com>
-	* ltcf-c.sh (tpf*): Add ld_shlibs=yes.
-	* ltcf-cxx.sh (tpf*): Likewise.
-	* ltconfig (tpf*): Add TPF OS configuration support.
-
-2004-09-30  Tomer Levi  <Tomer.Levi at nsc.com>
-
-	* configure.in: Enable target-libgloss for crx-*-*.
-	* configure: Regenerate.
-
-2004-09-24  Michael Roth  <mroth at nessie.de>
-
-	* configure.in (--without-headers): Add missing double quotes.
-	* configure: Regenerate.
-
-2004-09-24  Kelley Cook <kcook at gcc.gnu.org>
-
-	* ylwrap: Revert to previous version.
-
-2004-09-23  H.J. Lu  <hongjiu.lu at intel.com>
-
-	PR bootstrap/17369
-	* Makefile.tpl (REALLY_SET_LIB_PATH): Add @SET_GCC_LIB_PATH at .
-	(HOST_EXPORTS]): Add @SET_GCC_LIB_PATH at . Set and export
-	SET_GCC_LIB_PATH_CMD.
-	(BASE_TARGET_EXPORTS): Likewise.
-	* Makefile.in: Regenerated.
-
-	* configure.in (SET_GCC_LIB_PATH): Set and substitute.
-	* configure: Regenerated.
-
-2004-09-23  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* config.guess: New upstream version
-	* compile, depcomp, install-sh, ylwrap: Likewise.
-
-2004-09-19  Roger Sayle  <roger at eyesopen.com>
-
-	* config/mh-x86omitfp: New host makefile fragment.  Add
-	-fomit-frame-pointer to the default BOOT_CFLAGS.
-	* configure.in: Use it to speed up bootstrap on some IA-32 hosts.
-	* configure: Regenerate.
-
-2004-09-15  Andrew Pinski  <pinskia at physics.uc.edu>
-
-	PR target/11572
-	* configure.in (*-*-darwin*): Renable libobjc.
-	* configure: Regenerate.
-
-2004-09-09  Daniel Berlin  <dberlin at dberlin.org>
-
-	* Makefile.def: Remove libbanshee.
-	* Makefile.tpl: Ditto.
-	* configure.in: Ditto.
-	* Makefile.in: Regen.
-	* configure: Ditto.
-
-2004-09-07  Paolo Bonzini  <bonzini at gnu.org>
-
-	* missing: Import latest version from master repository.
-
-2004-09-04  Nick Clifton  <nickc at redhat.com>
-
-	* config.sub: Import latest version from master repository.
-	* config.guess: Likewise.
-	This includes these changes:
-
-	2004-08-27  Hans-Peter Nilsson  <hp at axis.com>
-
-	* config.sub: Handle crisv32, alias etraxfs.
-	* config.guess (crisv32:Linux:*:*): Handle.
-
-	2004-08-13  Brad Smith  <brad at comstyle.com>
-
-	* config.guess (*:OpenBSD:*:*): Remove defunct MIPS machines.
-	(sgi:OpenBSD:*:*): Emit mips64, not mipseb.
-
-	2004-08-11  Paul Eggert  <eggert at cs.ucla.edu>
-
-	* config.guess (*:Darwin:*:*): If uname -p reports "unknown",
-	assume the processor is a powerpc.  This is because coreutils
-	uname (at least versions 4.5.7 through 5.2.1) outputs "unknown"
-	in this case, due to a MacOS X bug that causes
-	sysctl ((int[]) {CTL_HW, HW_MACHINE_ARCH}, 2, buffer, &bufsize, 0, 0)
-	to return a negative number.
-	Problem reported by Petter Reinholdtsen in:
-	http://lists.gnu.org/archive/html/bug-gnu-utils/2003-02/msg00201.html
-
-	2004-07-19  Ben Elliston  <bje at gnu.org>
-
-	* config.guess (S7501:*:4.0:3.0): Handle NCR System V UNIX machine.
-
-	2004-06-24  Ben Elliston  <bje at gnu.org>
-
-	* config.guess: Update copyright years.
-	* config.sub: Likewise.
-
-	2004-06-22  Robert Millan  <robertmh at gnu.org>
-
-	* config.guess (*:FreeBSD:*:*): Remove check for glibc (unneeded
-	since GNU/kFreeBSD systems match *:GNU/*:*:* instead).
-
-	2004-06-22  Stanley F. Quayle <stan at stanq.com>
-
-	* config.guess (*:*VMS:*:*): New entry. Replaces
-	Alpha:OpenVMS:*. Recognize and advertise all VMS flavors as dec
-	manufacturer.
-
-	2004-06-22  Ben Elliston  <bje at gnu.org>
-
-	* config.guess: Cray fixes from Wendy Palm <wendyp at cray.com>.
-	* config.sub: Likewise.
-
-	2004-06-22  Ben Elliston  <bje at gnu.org>
-
-	Reported by Hans-Peter Nilsson <hp at bitrange.com>:
-	* config.sub: Correctly handle mmix-knuth and mmix-knuth-mmixware.
-
-	2004-06-11  Ben Elliston  <bje at gnu.org>
-
-	* config.guess (pegasos:OpenBSD:*:*): Remove.
-
-	2004-06-11  Ben Elliston  <bje at gnu.org>
-
-	From Wouter Verhelst <wouter at grep.be>:
-	* config.guess (M68*:*:R3V[5678]:*): Detect R3V8.
-
-	2004-06-11  Ben Elliston  <bje at gnu.org>
-
-	* config.guess (luna88k:OpenBSD:*:*): New.
-
-	2004-03-12  Kazuhiro Inaoka  <inaoka.kazuhiro at renesas.com>
-
-	* config.guess (m32r*:Linux:*:*): New case.
-	* config.sub: Handle m32rle.
-
-	2004-03-12  Ben Elliston  <bje at wasabisystems.com>
-
-	From Jens Petersen  <petersen at redhat.com>:
-	* config.sub: Handle sparcv8.
-
-	2004-03-03  Ben Elliston  <bje at wasabisystems.com>
-
-	From Tom Smith <smith at cag.lkg.hp.com>:
-	* config.guess: Version suffixes are equally significant on Tru64
-	V4.* and V5.*, so do not ignore them on V5.*.  Handle a version
-	prefix of "P" (patched kernel).
-
-	2004-02-23  Tal Agmon  <Tal.Agmon at nsc.com>
-
-	* config.sub: Add support for National Semiconductor CRX target.
-
-2004-09-03  Jan Beulich  <jbeulich at novell.com>
-
-	* configure.in: Remove target-libstdc++-v3 from noconfigdirs for
-	*-*-netware, but add target-libmudflap.
-	Consolidate *-*-netware targets (of which really only i?86 exists)
-	into a single entry.
-	* configure: Likewise.
-
-2004-09-01  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (sorry): Remove.
-	(clean-stage[+id+], clean-stage[+id+]-module): New targets.
-	(cleanstrap targets): Depend on distclean, not distclean-stage1.
-	(do-clean): Clean per-stage directories too.
-	(do-distclean): Run distclean-stage1 too.
-	(.NOTPARALLEL): Enable during toplevel bootstrap.
-	(stage[+id+]-bubble): Enable parallel execution during
-	the recursive invocation.
-	* Makefile.in: Regenerate.
-
-	Sync from gcc (moving the Makefile.in change to Makefile.tpl):
-
-	2004-08-31  Robert Bowdidge <bowdidge at apple.com>
-
-	* Makefile.in: Move BOOT_CFLAGS above host makefile fragment include.
-	* configure.in: add test for powerpc-*-darwin* to specify makefile frag
-	* configure: regenerate
-	* config/mh-ppc-darwin: create file, override BOOT_CFLAGS for
-	-mdynamic-no-pic
-
-2004-08-31  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl: Move BOOT_CFLAGS above host makefile fragment
-	include.
-	* configure.in: Fix indentation.
-	* configure: Regenerate.
-
-2004-08-31  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (build_modules): Add fixincludes.
-	(dependencies): Make gcc depend on fixincludes.
-	* configure.in (build_tools): Add fixincludes.
-	(build_configdirs): Always include build_libs.
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-2004-08-30  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (bootstrap stages): Add 'lean' parameter.
-	* Makefile.tpl (configure-stageN-*, all-stageN-*): Turned into
-	phony targets; do not generate timestamp files.
-	(distclean-stageN): Remove references to their timestamp files.
-	(restageN, touch-stageN): Remove.
-	(stageN-bubble): Rewritten.
-	(compare): Support lean bootstraps.
-	* Makefile.in: Regenerate.
-
-	* configure.in: Only warn when bootstrapping but
-	build != host or build != target.  Support lean bootstraps.
-	* configure: Regenerate.
-
-	Sync from gcc:
-	2004-08-26  Phil Edwards  <phil at codesourcery.com>
-
-	* configure.in:  Give a better error message if GMP/MPFR are missing
-	and a language needing them has been requested.
-	* configure:  Regenerated.
-
-	2004-08-25  Phil Edwards  <phil at codesourcery.com>
-
-	* configure.in:  Print a list of available language front-ends if
-	a requested one is missing.  Tidy stray tab characters.
-	* configure:  Regenerated.
-
-2004-08-17  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-	* Makefile.def (bootstrap-stage): Rename extra_*_flags to
-	stage_*_flags.
-	* Makefile.tpl (configure-[+module+], all-[+module+]): Exit
-	for bootstrapped modules if toplevel bootstrap is going.
-	(GCC bootstrap): Generate per-stage targets for all bootstrapped
-	modules.  Adjust for changes in Makefile.def.  Enable several
-	rules even in non-bootstrap mode, just to avoid peppering the
-	template with unnecessary "@if/@endif gcc-bootstrap" pairs.
-	(stage-[+prev+]-bubble): Remove.
-
-	* Makefile.def (Dependencies): Depend on all-build-bison,
-	all-build-flex, all-build-byacc, all-build-texinfo, rather
-	than the host variations.
-	* Makefile.tpl (BUILD_DIR_PREFIX): Remove.  Replace throughout
-	with BUILD_SUBDIR.
-	(BISON): Update for recent Bisons.
-	(YACC): Fix typo.
-	(cross): Depend on all-build.
-	(all): Do not depend on all-build.
-	(prebootstrap): Remove.
-	(dep-kind): Accept separate prefixes for MODULE and ON variables.
-	(Prebootstrap dependencies): Add them to the per-stage targets
-	and to all-prebootstrap.
-	* configure.in (build_configdirs): Always enable build_tools.
-	(BUILD_DIR_PREFIX): Remove.
-
-	* Makefile.def (gcc): Add target variable.
-	(gdb, expect, guile, tk, tix): Replace with_x with extra_make_flags.
-	* Makefile.tpl (Autogenerated `all-*' targets): Invoke $(TARGET-*)
-	in the recursive `make', instead of hardwiring `all'.
-	(Autogenerated TARGET-* variables): New.
-
-2004-08-17  Robert Millan  <robertmh at gnu.org>
-
-	* configure.in: In noconfigdirs check, match GNU/k*BSD with GNU/Linux
-	(instead of FreeBSD).
-	* configure: Regenerate.
-
-2004-08-12  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.def, configure.in, src-release: Remove useless, bogus
-	references to tix.
-	* Makefile.in, configure: Regenerate.
-
-	* src-release: Stop distributing mmalloc with gdb (which doesn't
-	use it).
-	* Makefile.def: GDB doesn't depend on mmalloc anymore.
-	* Makefile.in: Regenerate.
-
-2004-08-09  Mark Mitchell  <mark at codesourcery.com>
-
-	* configure.in (arm*-*-eabi*): New target.
-	* configure: Regenerate.
-
-2004-08-01  Robert Millan  <robertmh at gnu.org>
-
-	* configure.in: Turn mt-linux into mt-gnu. Use mt-gnu and enable
-	libmudflap for all GNU-based systems (with Glibc).
-	* configure: Regenerate.
-
-2004-08-06  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (bfd, opcodes, gcc, zlib): Mark as bootstrap module.
-	(bison, byacc, flex, texinfo): Do not mark as bootstrap module.
-	(Dependencies): New section.
-	* Makefile.tpl (Dependencies): Generate from Makefile.def.
-	(configure-target-[+module+]): Depend on maybe-all-gcc
-	(all-prebootstrap): New name of all-bootstrap.  Changed throughout.
-	(toplevel profiledbootstrap): Fix dependencies.
-	* Makefile.in: Regenerate.
-
-2004-08-03  Mark Mitchell  <mark at codesourcery.com>
-
-	* configure.in (arm*-*-symbianelf*): Add ${libgcj} and
-	target-libiberty to noconfigdirs.
-
-2004-08-03  Paul Brook  <paul at codesourcery.com>
-
-	* configure.in: Check for MPFR as well as GMP.
-	* configure: Regenerate.
-
-2004-08-03 Paolo Bonzini <bonzini at gnu.org>
-
-	* Makefile.def (host-modules): Add gcc.
-	* Makefile.in: Regenerate.
-	* Makefile.tpl (sorry): New rule.
-	(configure-host, all-host, [+make_target+]-host, do-check,
-	install-host): Do not add gcc as a special case.
-	(host modules): Add a small special-casing for gcc.  Export
-	extra_make_flags through the environment.
-	(maybe-configure-gcc, configure-gcc, maybe-all-gcc, all-gcc,
-	maybe-check-gcc, check-gcc, maybe-install-gcc, install-gcc,
-	other recursive targets for gcc): Remove.
-
-	(all, do-[+make_target+], do-check): Wrap between unstage and stage.
-	(stage, unstage): New rules.
-	(stage[+id+]-start, stage[+id+]-end, [+compare-target+],
-	distclean-stage[+id+]): Use stage_current.
-	([+bootstrap-target+], profiledbootstrap): Do not invoke manually
-	the stage*-start rules.
-
-2004-07-19  Robert Millan  <robertmh at gnu.org>
-
-	Synced from gcc:
-
-	2004-04-26  Robert Millan  <robertmh at gnu.org>
-
-	Add patches from libtool CVS.
-	* libtool.m4: Add kfreebsd*-gnu and knetbsd*-gnu.
-	* ltconfig: Likewise.
-	* ltcf-c.sh: Likewise.
-	* ltcf-cxx.sh: Likewise.
-	* ltcf-gcj.sh: Likewise.
-
-2004-07-12  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Add noconfigdirs for crx-*-*.
-	* configure: Regenerate.
-
-2004-07-12  Paolo Bonzini  <bonzini at gnu.org>
-
-	Synced from gcc:
-
-	2004-07-09  Loren J. Rittle <ljrittle at acm.org>
-
-	* configure.in: Build libmudflap by default on FreeBSD.
-	* configure: Regenerated.
-
-	2004-07-09  Mark Mitchell  <mark at codesourcery.com>
-
-	* configure.in: Do not build libmudflap by default on non-GNU/Linux
-	systems.
-	* configure: Regenerated.
-
-	2004-07-08 John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
-
-	PR target/16344
-	* Makefile.tpl (profiledbootstrap): Build runtime libraries with
-	feedback based compiler.
-	* Makefile.in: Rebuilt.
-
-	2004-07-05  Phil Edwards  <phil at codesourcery.com>
-
-	* configure.in:  Do not prepend $srcdir to /dev/null in
-	makefile fragments.
-	* configure:  Regenerate.
-
-2004-07-08  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.def (host_modules): Set bootstrap=true for flex.
-	* Makefile.tpl (all-gcc): Depend on texinfo and flex.
-	* Makefile.in: Rebuilt.
-
-2004-07-01  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (build_modules): Add bison, byacc, flex,
-	m4, texinfo.
-	(flags_to_pass): Add FLEX.
-	* Makefile.tpl (BUILD_DIR_PREFIX, BASE_EXPORTS): New.
-	(BUILD_EXPORTS, HOST_EXPORTS, BASE_TARGET_EXPORTS): Include it.
-	(DEFAULT_YACC, USUAL_YACC, DEFAULT_LEX, USUAL_LEX, DEFAULT_M4,
-	DEFAULT_MAKEINFO): Remove.
-	(CONFIGURED_YACC, CONFIGURED_FLEX, CONFIGURED_BISON,
-	CONFIGURED_LEX, CONFIGURED_M4, CONFIGURED_MAKEINFO): Substitute.
-	(YACC, FLEX, BISON, LEX, M4, MAKEINFO): Define to look into
-	objdir or else use configured tool.
-	(all-build): New.
-	(all): Depend on it.
-	(Build module dependencies): Add.
-	* Makefile.in: Regenerate.
-	* configure.in: Better support for multiple build modules,
-	matching what is done for host/target modules.  Do not look
-	for "plausible" locations of build tools if Canadian cross.
-	Use autoconf's AC_PROG_CC to find a C compiler.  Define
-	BUILD_DIR_PREFIX.  Look for flex, makeinfo and m4.
-	* configure: Regenerate.
-
-2004-06-22  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (HOST_EXPORTS): Fix pasto.
-	* Makefile.in: Regenerate.
-
-2004-06-22  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (configure-build-[+module+],
-	configure-[+module+], configure-target-[+module+]): Pass
-	[+extra_configure_args+].
-	(all-build-[+module+], all-[+module+], check-[+module+],
-	install-[+module+], [+make_target+]-[+module+],
-	all-target-[+module+], check-target-[+module+],
-	install-target-[+module+], [+make_target+]-target-[+module+]):
-	Pass [+extra_make_args+].
-	(HOST_EXPORTS): Include the former GCC_HOST_EXPORTS.
-	(GCC_HOST_EXPORTS): Remove.
-	(configure-gcc, all-gcc, GCC_STRAP_TARGETS, profiledbootstrap,
-	cross, check-gcc, check-gcc-c++, install-gcc,
-	gcc-no-fixedincludes, [+make_target+]-gcc, stage[+id+]-bubble):
-	Replace GCC_HOST_EXPORTS with HOST_EXPORTS.
-	* Makefile.in: Regenerate.
-
-2004-06-21  Christopher Faylor  <cgf at alum.bu.edu>
-
-	* configure.in: Check for srcdir/winsup rather than build directory
-	winsup.
-	* configure: Regenerate.
-
-2004-06-17  Corinna Vinschen  <vinschen at redhat.com>
-
-	* configure.in: Don't build Cygwin native newlib if winsup
-	directory is missing.  Emit warning instead.
-	* configure: Regenerate.
-
-2004-06-09  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (touch-stage[+id+]): New.
-	(restage[+prev+]): Depend on touch-stage[+id+].
-
-	* Makefile.tpl (RECURSE_FLAGS_TO_PASS): New.
-	Use it throughout.
-
-	* Makefile.def: Add profile and feedback bootstrap stages.
-	Remove next field from bootstrap stages.
-	* Makefile.tpl (LN, LN_S): Substitute.
-	(stageN-start, stageN-end): Use double-colon rules, to
-	provide a hook for additional setup commands.
-	(distclean-stageN-gcc, restageN): Create dependencies from
-	[+prev+], not from [+next+].
-	(stageN-bubble): Add commands for successive stages from
-	[+prev+], using double-colon rules.
-	(all-stageN-gcc): Fix typo.
-	(stagefeedback-start, profiledbootstrap): New.
-	* Makefile.in: Regenerate.
-	* configure.in: Call ACX_PROG_LN.
-	* configure: Regenerate.
-
-2004-06-03  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Fix --enable-bootstrap breakage introduced in trees
-	without gcc.
-	* configure: Regenerate.
-
-2004-06-01  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl: Fix typo.
-	* Makefile.in: Regenerate.
-
-2004-06-01  Paolo Bonzini <bonzini at gnu.org>
-
-	* configure.in: Remove new- prefix from toplevel
-	bootstrap targets.
-	* configure: Regenerate.
-
-2004-06-01  Paolo Bonzini <bonzini at gnu.org>
-
-	Merge this patch from the gcc tree:
-
-	2004-05-30  Andreas Jaeger  <aj at suse.de>
-		    Jim Wilson <wilson at specifixinc.com>
-
-	* config-ml.in: Pass FFLAGS and ADAFLAGS for multilibs, handle F77
-	like CC.
-
-2004-06-01  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (all.normal): Rename to all.
-	(all): Replace with a rule to pick the default
-	target from configure.
-	(all-gcc, configure-gcc): Use conditionals to
-	do nothing when toplevel bootstrap is going on.
-	(GCC directory bootstrap) [gcc-bootstrap]: Disable.
-	(Toplevel bootstrap) [gcc-no-bootstrap]: Disable.
-	* configure.in: Support --enable-bootstrap.
-
-	* Makefile.def: Remove new- prefix from toplevel
-	bootstrap targets.
-	* Makefile.tpl: Likewise.
-
-	* Makefile.def: Add bootstrap_stage 4.  Add bootstrap2
-	target.
-
-	* Makefile.tpl (Toplevel bootstrap): Pass $(BASE_FLAGS_TO_PASS)
-	$(RECURSE_FLAGS) to recursive invocation of make.
-
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-2004-05-27  Daniel Jacobowitz  <dan at debian.org>
-
-	* configure.in: Fix sed invocation for GFORTRAN_FOR_TARGET.
-	* configure: Regenerate.
-
-2004-05-25  Daniel Jacobowitz  <drow at false.org>
-
-	* Makefile.tpl (BUILD_EXPORTS, HOST_EXPORTS, GCC_HOST_EXPORTS)
-	(STAGE_HOST_EXPORTS, BASE_TARGET_EXPORTS, RAW_CXX_TARGET_EXPORTS)
-	(NORMAL_TARGET_EXPORTS): New macros.  Use them in all the recursive
-	targets.
-	* Makefile.in: Regenerate.
-
-2005-05-24  Paolo Bonzini <bonzini at gnu.org>
-
-	* configure.in: Test the ability to symlink directories.
-	* configure: Regenerate.
-
-	* Makefile.def (bootstrap-stage): New definitions.
-	* Makefile.tpl (configure-stage1-gcc,
-	configure-stage2-gcc, configure-stage3-gcc,
-	all-stage1-gcc, all-stage2-gcc, all-stage3-gcc,
-	new-bootstrap, new-cleanstrap, new-restage1, new-restage2,
-	new-restage3, compare): Autogenerate, see Makefile.in
-	entry for behavioral changes.
-	(distclean-stage1, new-stage1-start, new-stage1-end,
-	new-stage1-bubble, distclean-stage2, new-stage2-start,
-	new-stage2-end, new-stage2-bubble, distclean-stage3,
-	new-stage3-start, new-stage3-end): New autogenerated targets.
-	(objext, prebootstrap, BOOT_CFLAGS,
-	POSTSTAGE1_FLAGS_TO_PASS): Move above the autogenerated
-	targets.
-
-	* Makefile.in: Regenerate.
-	(distclean-stage1, new-stage1-start, new-stage1-end,
-	new-stage1-bubble, distclean-stage2, new-stage2-start,
-	new-stage2-end, new-stage2-bubble, distclean-stage3,
-	new-stage3-start, new-stage3-end): New targets.
-	(all-stage1-gcc): Move prebootstrap dependency from here...
-	(configure-stage1-gcc): ...to here.
-	(new-bootstrap): Use bubble targets.
-	(new-cleanstrap, new-restage1, new-restage2, new-restage3):
-	Use per-stage distclean targets.
-	(configure-stage1-gcc, configure-stage2-gcc,
-	configure-stage3-gcc, all-stage1-gcc,
-	all-stage2-gcc, all-stage3-gcc, new-bootstrap):
-	Use new-stageN-start to prepare the tree.
-
-2004-05-23  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (host_modules): add libcpp.
-	* Makefile.tpl: Add dependencies on and for libcpp.
-	* Makefile.in: Regenerate.
-	* configure.in: Add libcpp host module.
-	* configure: Regenerate.
-
-2004-05-17  Zack Weinberg  <zack at codesourcery.com>
-
-	* Makefile.def, Makefile.tpl, configure.in: Remove all mention
-	of libf2c.
-	* configure, Makefile.in: Regenerate.
-
-2004-05-13  Diego Novillo  <dnovillo at redhat.com>
-
-	Merge from tree-ssa-20020619-branch.
-
-	* Makefile.def: Add libbanshee, libmudflap and libgfortran.
-	* Makefile.tpl (BUILD_CONFIGDIRS): Add libbanshee.
-	(HOST_GMPLIBS): Define.
-	(HOST_GMPINC): Define.
-	(TARGET_LIB_PATH): Add libmudflap.
-	(GFORTRAN_FOR_TARGET): Define.
-	(configure-build*): Export GFORTRAN.
-	(configure-gcc): Export GMPLIBS and GMPINC.
-	(all-gcc): Add maybe-all-libbanshee.
-	(configure-target-libgfortran): Define.
-	* Makefile.in: Regenerate.
-	* configure.in (host_libs): Add libbanshee.
-	(target_libraries): Add target-libmudflap and target-libgfortran.
-	Add --with-libbanshee.
-	Handle --disable-libmudflap.
-	(*-*-freebsd*): Use with_gmp.
-	Add $(libgcj) to noconfigdirs.
-	* configure: Regenerate.
-	* depcomp: New file.
-	* MAINTAINERS: Add tree-ssa maintainers.
-
-2004-04-28  Paolo Bonzini  <bonzini at gnu.org>
-
-	* config/acx.m4: Fix fastcompare support for new-bootstrap.
-	* configure: Regenerate.
-
-2004-04-27  Paolo Bonzini  <bonzini at gnu.org>
-
-	Revert:
-	2004-04-26  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (flags_to_pass): Remove *dir variables that
-	are passed to the modules via TOPLEVEL_CONFIGURE_ARGUMENTS,
-	as well as prefix and exec_prefix.
-	* Makefile.in: Regenerate.
-
-2004-04-26  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (host_modules): Mark with the bootstrap
-	flag packages on which gcc depends.
-	* Makefile.tpl (all-bootstrap): Use it.
-	* Makefile.in: Regenerate.
-
-2004-04-26  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.def (flags_to_pass): Remove *dir variables that
-	are passed to the modules via TOPLEVEL_CONFIGURE_ARGUMENTS,
-	as well as prefix and exec_prefix.
-	* Makefile.in: Regenerate.
-
-2004-04-26  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Invoke ACX_PROG_CMP_IGNORE_INITIAL.
-	* configure: Regenerate.
-	* config/acx.m4: Mutuate ACX_PROG_CMP_IGNORE_INITIAL from gcc.
-	* gcc/Makefile.tpl (compare): Use the result of the test.
-	* gcc/Makefile.in: Regenerate.
-
-2004-04-23  Paolo Bonzini  <bonzini at gnu.org>
-
-	* Makefile.tpl (all-stage1-gcc, all-stage2-gcc, all-stage3-gcc):
-	Always relocate gcc and prev-gcc to the original names, even
-	if the build fails.
-	(new-cleanstrap, new-restage1, new-restage2, new-restage3):
-	New targets.
-
-2004-04-19  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* configure.in (mips*-*-irix5*): Enable ld.
-	* configure: Regenerate.
-
-2004-04-15  James E Wilson  <wilson at specifixinc.com>
-
-	* Makefile.tpl (configure-[+module+], configure-gcc,
-	configure-stage1-gcc, configure-stage2-gcc, configure-stage3-gcc):
-	Set and export LDFLAGS.
-	* Makefile.in: Regenerate.
-
-2004-04-09  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	PR bootstrap/14871
-	* Makefile.tpl: If we don't have built-in-tree target tools,
-	use the ones found by configure rather than hacking around with
-	program_transform_name.
-	* configure.in: Give Makefile.tpl the information necessary
-	to do that.
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-2004-04-06  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	PR bootstrap/14760
-	* configure.in: When computing baseargs, strip *all* copies of
-	offending options.  Also, don't match/substitute the trailing space,
-	so that this actually works when two similar options are separated by
-	only one space.
-	* configure: Regenerate.
-
-2004-04-06  David Edelsohn  <edelsohn at gnu.org>
-
-	* configure.in (powerpc-*-aix*): Remove target-libada from noconfigdirs.
-	(rs6000-*-aix*): Same.
-	* configure: Regenerate.
-
-2004-03-25  Stan Shebs  <shebs at apple.com>
-
-	Remove MPW support, no longer used.
-	* mpw-README, mpw-build.in, mpw-config.in, mpw-configure,
-	mpw-install: Remove files.
-	* src-release (DEVO_SUPPORT): Remove names of removed files.
-	* MAINTAINERS: Likewise.
-
-2004-03-24  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl (top level bootstrap support): Remove now-unneeded
-	STRICT_WARN, WARN_CFLAGS flags passed down to make.
-	* Makefile.in: Regenerate.
-
-	* configure.in (top level bootstrap support): Rework --enable-werror
-	to set @stage2_werror_flag at .
-	* configure: Regenerate.
-	* Makefile.tpl (top level bootstrap support): Pass
-	@stage2_werror_flag@ down to configure in stages 2 and 3.
-	* Makefile.in: Regenerate.
-
-2004-03-23  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl (new-bootstrap): Set CC and CC_FOR_BUILD in configure
-	for stages 2 and 3 as well as in make.  As a consequence, remove
-	OUTPUT_OPTION (now detected by configure) from the flags passed down
-	to make.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl (new-bootstrap): Fix typo.
-	* Makefile.in: Regenerate.
-
-2004-03-22  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Rearrange by moving recursive_targets rules
-	into their proper sections.
-	* Makefile.tpl (top level bootstrap support): Move disabling
-	of coverage flags from 'make' to 'configure'; improve comments.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl (experimental top level bootstrap) Move stage1
-	language setting from all- target to configure- target; disable
-	intermodule optimization in stage 1; prevent gratuitous rebuilds
-	of stage 1.
-	* Makefile.in: Regenerate.
-	* configure.in: Comma-separate stage 1 language list for top
-	level bootstrap.
-	* configure: Regenerate.
-
-	* Makefile.tpl: Clean up experimental top level bootstrap support:
-	note known problems; set CONFIG_SHELL; don't set BUILD_CC; relocate
-	prev-gcc in configure- targets as well as all- targets.
-	* Makefile.in: Regenerate.
-
-2004-03-17  Paolo Bonzini  <bonzini at gnu.org>
-
-	* configure.in: Remove symbolic link section.
-	* configure: Regenerate.
-	* Makefile.tpl (links): Remove.
-	* Makefile.in: Regenerate.
-
-2004-03-15  Paolo Bonzini  <bonzini at gnu.org>
-	    Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in (DEFAULT_YACC, DEFAULT_M4, DEFAULT_LEX):
-	Set with AC_CHECK_PROGS.
-	* configure.in: Fix comment typo from last patch.
-	* configure: Regenerate.
-
-2004-03-15  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Introduce experimental top level bootstrap support.
-	* Makefile.in: Regenerate.
-	* configure.in: Introduce support for top level bootstrap.
-	* configure: Regenerate.
-
-2004-03-12  Eric Botcazou  <ebotcazou at gcc.gnu.org>
-	    Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/14522
-	* configure.in: Cope with shells that do not support unquoted ^
-	* configure: Regenerate.
-
-2004-03-11  Eric Botcazou  <ebotcazou at gcc.gnu.org>
-	    Paolo Bonzini  <bonzini at gnu.org>
-
-	PR bootstrap/14522
-	* configure.in: Cope with shell that do not support nesting
-	quotes inside quoted backquote substitutions.
-	* configure: Regenerate.
-
-2004-03-10  Andrew Pinski  <pinskia at physics.uc.edu>
-
-	PR bootstrap/14522
-	* configure.in: Fix escaping of $.
-	* configure: Regenerate.
-
-2004-03-11  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure: Regenerate.
-
-2004-03-08  Paolo Bonzini  <bonzini at gnu.org>
-
-	PR ada/14131
-	Move language detection to the top level.
-	* configure.in: Find default values for the tools as
-	soon as possible.  Disable ada if GNAT is not found.
-	Emit error message about missing languages.  Expand
-	--enable-languages=all for the gcc subdirectory.
-
-2004-03-01  Richard Sandiford  <rsandifo at redhat.com>
-
-	* configure.in (mips64*-*-linux*): Override mips*-*-linux* case
-	and disable libgcj.
-	* configure: Regenerated.
-
-2004-02-28  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	PR bootstrap/7087
-	* Makefile.tpl: Guard XFOO sed statements better.
-	* Makefile.tpl: Add dependency for configure-target-libada.
-	* Makefile.in: Regenerate (incidentally fixes broken
-	commit when libada-branch was merged).
-
-2004-02-28  Andrew Cagney  <cagney at redhat.com>
-
-	* src-release (CVS_NAMES): Define.
-	(do-tar, do-tar): Prune $(CVS_NAMES).
-
-2004-02-23  Andrew Cagney  <cagney at redhat.com>
-
-	* texinfo/texinfo.tex: Update from version 2003-02-03.16 to
-	2004-02-19.09.
-
-2004-02-19  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	PR bootstrap/11932
-	* mkinstalldirs, install-sh: Import from automake CVS HEAD.
-
-2004-02-19  Andrew Cagney  <cagney at redhat.com>
-
-	* config.guess: Update from version 2003-06-12 to 2004-02-16.
-	* config.sub: Update from version 2003-06-13 to 2004-02-16.
-
-2004-02-11  David Edelsohn  <edelsohn at gnu.org>
-
-	* configure.in (powerpc-*-aix*): Add target-libada to noconfigdirs.
-	(rs6000-*-aix*): Same.
-	* configure: Regenerate.
-
-2004-02-11  Kelley Cook  <kcook at gcc.gnu.org>
-
-	* configure.in (host): Add in missing $noconfigdirs to defines.
-	* configure: Regenerate.
-
-2004-02-10  Arnaud Charlet  <charlet at act-europe.fr>,
-	    Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	PR ada/6637, PR ada/5911
-	Merge with libada-branch:
-	* configure.in, Makefile.tpl, Makefile.def: Add target-libada,
-	with appropriate dependencies. Add --enable-libada configure switch.
-	* configure, Makefile.in: Regenerate.
-
-2004-02-05  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* configure.in: Don't pass --with-stabs on IRIX 5 either.
-	* configure: Regenerate.
-
-2004-02-02  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Update Red Hat license to 2004.
-
-2004-01-23  DJ Delorie  <dj at redhat.com>
-
-	* Makefile.def (target_modules) [libiberty]: Don't stage.
-	* Makefile.in: Rebuilt.
-
-2004-01-23  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Update to include copyrights for new
-	iconv code.
-
-2004-01-15  Andrew Cagney  <cagney at redhat.com>
-
-	* src-release: Update copyright year.
-	(do-proto-toplev): Configure using i686-pc-linux-gnu.
-	(NEWLIB_SUPPORT_DIRS): Delete macro.
-	(newlib.tar.bz2): Delete rule.
-
-2004-01-14  Loren J. Rittle <ljrittle at acm.org>
-
-	* Makefile.def (target_modules) [libtermcap, libiberty, zlib]: Stage.
-	* Makefile.tpl (configure-target-[+module+]): Support stage.
-	* Makefile.in: Rebuilt.
-
-2003-01-14  Maciej W. Rozycki  <macro at ds2.pg.gda.pl>
-
-	* gettext.m4: Quote names of macros to be defined by AC_DEFUN
-	throughout.
-
-2004-01-04  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Use ./config.cache, not config.cache.
-	* configure: Regenerate.
-	* Makefile.tpl: Special-casing not needed for GCC any more.
-	* Makefile.in: Regenerate.
-
-	* configure.in: Don't share a cache file for host dirs.
-	* configure: Regenerate.
-
-	* config-ml.in: Don't mess with the cache file.
-
-2004-01-03  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Make GCC use a separate config.cache.
-	* Makefile.in: Regenerate.
-
-	PR bootstrap/11932, PR bootstrap/11933
-	(I don't know if it will fix either of them, but it relates
-	to them.)
-	* configure.in: Don't use shared config.cache for target
-	directories.
-	* configure: Regenerate.
-
-2003-12-31  Roger Sayle  <roger at eyesopen.com>
-
-	* configure.in (ia64*-*-hpux*): Disable building java libraries.
-	* configure: Regenerated.
-
-2003-12-21  Bernardo Innocenti  <bernie at develer.com>
-
- 	* configure.in (*-*-uclinux): Exclude newlib, libgloss and rda.
- 	* configure: Regenerated.
-
-2003-12-19  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	Port change over from GCC:
-	2003-11-20  Kelley Cook  <kcook at gcc.gnu.org>
-	* Makefile.tpl (BASE_FLAGS_TO_PASS): Pass along CONFIG_SHELL.
-	(configure-build-[+module+], configure-[+module+]): Likewise.
-	(configure-target-[+module+], configure-gcc, config.status): Likewise.
-	* Makefile.in: Regenerate.
-
-2003-12-08  Thomas Fitzsimmons  <fitzsim at redhat.com>
-
-	* configure.in (raw_libstdcxx_flags): Remove the leading space.
-	* configure: Regenerate.
-
-2003-11-27  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Add license info for long long routines added to
-	stdlib.
-
-2003-11-14  Arnaud Charlet  <charlet at act-europe.fr>
-
-	* Makefile.tpl (EXTRA_GCC_FLAGS): Pass BOOT_ADAFLAGS.
-	* Makefile.in: Regenerate.
-
-2003-10-20  Phil Edwards  <phil at codesourcery.com>
-
-	* configure.in (*-*-vxworks):  Add target-libiberty to noconfdirs.
-	* configure:  Regenerate.
-
-2003-10-13  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Make GCC_FLAGS_TO_PASS a superset of
-	HOST_FLAGS_TO_PASS.
-	* Makefile.in: Regenerate.
-
-2003-10-05  Mohan Embar  <gnustuff at thisiscool.com>
-
-	* configure.in: Allow explicit specification of CFLAGS_FOR_BUILD.
-	* configure: Rebuilt
-	* Makefile.tpl: Use CFLAGS_FOR_BUILD computed by configure
-	* Makefile.in: Rebuilt
-
-2003-10-03  H.J. Lu  <hongjiu.lu at intel.com>
-
-	* ltconfig (sys_lib_search_path_spec): Fix a typo for HPUX.
-
-2003-10-01  Phil Edwards  <pme at gcc.gnu.org>
-
-	* config-ml.in:  Use ac_configure_args directly instead of
-	ml_arguments.  Only set ml_norecursion if --no[-]recursion is
-	actually seen.
-
-2003-10-01  Eric Botcazou  <ebotcazou at libertysurf.fr>
-
-	* config-ml.in: Propagate INSTALL variables.
-
-2003-09-21  Daniel Jacobowitz  <drow at mvista.com>
-
-	* configure.in: Pass a computed --program-transform-name
-	to subconfigures.
-	* configure: Regenerated.
-
-2003-09-20  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Don't pass down obsolete ENQUIRE variable.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Don't pass (unused) DLLTOOL or WINDRES to gcc.
-	* Makefile.in: Regenerate.
-
-2003-09-17  Daniel Jacobowitz  <drow at mvista.com>
-
-	* configure.in (TOPLEVEL_CONFIGURE_ARGUMENTS, baseargs): Fix
-	quoting.
-	* configure: Regenerated.
-
-2003-09-12  Michael Chastain  <mec at shout.net>
-
-	Fix PR gdb/857.
-	* src-release (do-proto-topleve): Remove junk files
-	intl/config.cache, intl/config.status,
-	intl/config.h, intl/stamp-h.
-
-2003-09-14  Andrew Cagney  <cagney at redhat.com>
-
-	* src-release (dejagnu.tar): New target.
-	(dejagnu.tar.bz2): Recursively call "gdb-taz" rule.
-	(do-djunpack): Use $(PACKAGE) for the package name.
-
-2003-09-04  DJ Delorie  <dj at redhat.com>
-
-	* configure: Regenerate.
-
-2003-09-04  Robert Millan  <robertmh at gnu.org>
-
-	* configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu triplet.
-
-2003-09-02  Kaveh R. Ghazi  <ghazi at caip.rutgers.edu>
-
-	* configure.in: Ensure arguments to sed are properly spaced.
-	* configure: Regenerate.
-
-2003-08-28  Daniel Jacobowitz  <drow at mvista.com>
-
-	Merge from gcc:
-	2003-07-20  Phil Edwards  <pme at gcc.gnu.org>
-	* install-sh:  Update to newer upstream versions (associated with
-	aclocal 1.7).
-	* missing:  Likewise, plus $1Help2man -> $1 typo fix.
-
-2003-08-27  Daniel Jacobowitz  <drow at mvista.com>
-
-	* configure.in: Set RAW_CXX_FOR_TARGET if unset.
-	* configure: Regenerated.
-
-2003-08-23  Phil Edwards  <pme at gcc.gnu.org>
-
-	* configure.in:  Use newline instead of semicolon when assuming
-	shell arguments in a for loop.
-	* configure:  Regenerated.
-
-2003-08-20  Geoffrey Keating  <geoffk at apple.com>
-
-	PR 8180
-	* configure.in: When testing with_libs and with_headers, treat
-	'no' as unset.  Based on a patch by Dan Kegel <dank at kegel.com>.
-	* configure: Regenerate.
-
-	* configure.in (TOPLEVEL_CONFIGURE_ARGUMENTS): Quote properly for
-	make, shell, etc.
-	(baseargs): Likewise.
-	* configure: Regenerate.
-
-2003-08-19  Geoffrey Keating  <geoffk at apple.com>
-
-	* configure.in: Disable libgcj for darwin not on powerpc.
-	* configure: Rebuild.
-
-2003-08-15  Michael Chastain  <mec at shout.net>
-
-	* src-release (do-proto-toplev): Remove junk files
-	dejagnu/example/calc/config.status,
-	dejagnu/example/calc/config.log.
-
-2003-08-14  Alexandre Duret-Lutz  <adl at gnu.org>
-
-	* config-ml.in, symlink-tree: Add license.
-
-2003-08-01  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	Merge from gcc:
-
-	2003-08-01  Matt Kraai  <kraai at alumni.cmu.edu>
-	* Makefile.tpl (check, check-c++): Express dependencies using
-	dependencies rather than commands.
-	* Makefile.in: Regenerate.
-
-	2003-07-31  Geoffrey Keating  <geoffk at apple.com>
-	* Makefile.tpl (libsubdir): Use gcc instead of gcc-lib.
-	* Makefile.in: Update.
-
-2003-08-01  Andrew Cagney  <cagney at redhat.com>
-
-	* configure.in (noconfigdirs): Do not add GDB when m32r-*-*.
-	* configure: Ditto.
-
-2003-07-30  Andreas Tobler  <a.tobler at schweiz.ch>
-
-	* configure.in: Enable libgcj for darwin.
-	* configure: Rebuild.
-
-2003-07-29  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* mkinstalldirs: Import autoconf 2.57 / automake 1.7 version.
-
-2003-07-27  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Use 'mkinstalldirs' rather than 'mkdir' when
-	creating target and build subdirs to build all parent dirs as needed.
-	* Makefile.in: Rebuild.
-	* configure.in: Don't build dirs explicitly here.
-	* configure: Rebuild.
-
-2003-07-22  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.tpl (all-make): Depend on intl.
-	* Makefile.in: Rebuilt.
-
-2003-07-16  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* config.if: Remove unused libc_interface determination.
-
-2003-07-14  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.in: Regenerate, correctly this time.
-
-2003-07-13  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Set INSTALL and friends using autoconf.  Remove
-	unused INSTALL_PROGRAM_ARGS.
-	* configure.in: Use AC_PROG_INSTALL.
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-2003-07-10  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure: Rebuilt.
-	2001-09-26  Alexandre Oliva  <aoliva at redhat.com>
-	* configure.in (noconfigdirs) [am33_2.0-*-linux*]: Don't build
-	newlib nor libgloss.
-	Wed May  9 10:07:19 2001  Alexandre Oliva  <aoliva at redhat.com>
-	* configure.in (am33_2.0-*-linux*): Added.
-
-2003-07-09  Bob Wilson  <bob.wilson at acm.org>
-
-	* configure.in: Add ${libgcj} to noconfigdirs for xtensa-*-* targets.
-	* configure: Regenerate.
-
-2003-07-06  H.J. Lu <hongjiu.lu at intel.com>
-
-	* config-ml.in: Replace PWD with PWD_COMMAND.
-	* Makefile.tpl: Likewise.
-	* Makefile.in: Regenerated.
-
-2003-06-27  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Clean up config-lang.in handling.  Delete
-	useless assignment to "subdirs".
-	* configure: Regenerate.
-
-2003-06-26  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Rename 'target_libs' to 'target_libraries'.
-	Remove useless reference to 'target_libs'.
-	* configure: Regenerate.
-
-2003-06-23  Keith Seitz  <kseitz at sources.redhat.com>
-
-	* Makefile.tpl: Add maybe-configure-itcl to configure-gdb.
-	* Makefile.in: Regenerate.
-
-2003-06-23  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.def: Introduce flags_to_pass.
-	* Makefile.tpl: Generate BASE_FLAGS_TO_PASS using it.
-	* Makefile.in: Regenerate.
-
-2003-06-23  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* configure.in (noconfigdirs) <cris-*-*>: Disable target-newlib
-	and target-libgloss.
-	<d30v-*-*, fr30-*-*, i960-*-*, m32r-*-*>: Disable gdb.
-	<h8300*-*-*>: Disable libf2c and ${libgcj}.
-	* configure: Regenerate.
-
-2003-06-17  Benjamin Kosnik  <bkoz at redhat.com>
-
-	* configure.in: Update testsuite_flags to new location.
-	* configure. Regenerate.
-
-2003-06-18  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Remove BUILD_CC stuff.
-	* Makefile.in: Regenerate.
-
-2003-06-14  H.J. Lu <hongjiu.lu at intel.com>
-
-	* config.guess: Update to 2003-06-12 version.
-	* config.sub: Update to 2003-06-13 version.
-
-2003-06-12  Thiemo Seufer <seufer at csv.ica.uni-stuttgart.de>
-
-	* MAINTAINERS: Add myself as MIPS co-maintainer.
-
-2003-06-12  H.J. Lu <hongjiu.lu at intel.com>
-
-	* config.guess: Update to 2003-06-06 version.
-	* config.sub: Update to 2003-06-06 version.
-
-2003-06-11  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* configure.in: Don't pass --with-stabs for mips*-sgi-irix6*o32.
-	* configure. Regenerate.
-
-2003-06-10  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Disable serial configure by default.
-	* configure: Regenerate.
-	* Makefile.tpl: Abolish .NOTPARALLEL.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Replace {build,host,target}_canonical by
-	{build,host,target}.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Fix stupid pasto.
-	* Makefile.in: Regenerate.
-
-2003-06-09  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Remove bogus conditional.
-	* Makefile.in: Regenerate.
-
-2003-06-03  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Make 'recursive targets' using autogen rather
-	than shell loop.  Remove duplicate 'clean' targets and false
-	comments.
-	* Makefile.def: Add systematic dependencies to 'recursive' targets.
-	Add systematic method of specifying missing targets in subdirs.
-	Add copyright boilerplate.
-	* Makefile.in: Regenerate.
-	* configure.in: Add 'recursive targets' to maybe list.
-	* configure: Regenerate.
-
-	* Makefile.tpl: Rename [+target+] to [+make_target+].
-	* Makefile.def: Rename 'target' to 'make_target'.
-
-2003-05-30  Nick Clifton  <nickc at redhat.com>
-
-	* README-maintainer-mode: Update URL for locating blessed config
-	tools.
-
-2003-05-29  Robert Millan  <rmh at debian.org>
-
-	* ltconfig: Import this patch and modify for use with current
-	version of ltconfig:
-
-	2003-05-21  Bruno Haible  <bruno at clisp.org>
-
-	* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER): Add support for
-	GNU/FreeBSD.
-
-2003-05-28  DJ Delorie  <dj at redhat.com>
-
-	* Makefile.tpl: Make maybe-check-gcc .PHONY.
-	* Makefile.in: Regenerate.
-
-2003-05-28  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Add license info for newlib/libc/sys/linux/stdlib.
-
-2003-05-21  DJ Delorie  <dj at redhat.com>
-
-	* Makefile.tpl (configure-target-libiberty): Depend only on gcc, not
-	newlib or libgloss.
-	* Makefile.in: Regenerate.
-
-2003-05-21  DJ Delorie  <dj at redhat.com>
-
-	* Makefile.tpl: Add missing empty maybe-check-gcc target.
-	* Makefile.in: Regenerate.
-
-2003-05-20  Maciej W. Rozycki  <macro at ds2.pg.gda.pl>
-
-	* configure.in: Use curly braces in the definition of tooldir.
-	* configure: Regenerate.
-
-2003-05-19  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Switch more things to use maybe dependencies.
-	* Makefile.tpl: Switch more things to use maybe dependencies.
-	Factor out common code from autogen IF statements.
-	* configure: Regenerate.
-	* Makefile.in: Regenerate.
-
-2003-05-14  Kelley Cook  <kelleycook at wideopenwest.com>
-
-	* configure.in: Accept i[3456789]86 for machine type.
-	* configure: Regenerate.
-
-2003-05-18  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Switch more things to use maybe dependencies.
-	Rearrange a little.  Use GCC_TOPLEV_SUBDIRS.
-	* configure: Regenerate.
-	* Makefile.tpl: Switch more things to use maybe dependencies.
-	* Makefile.in: Regenerate.
-
-2003-05-16  Andreas Schwab  <schwab at suse.de>
-
-	* Makefile.tpl (install-opcodes): Define.
-	* Makefile.in: Rebuild.
-
-2003-05-13  Andreas Jaeger  <aj at suse.de>
-
-	* config.guess: Update to 2003-05-09 version.
-	* config.sub: Update to 2003-05-09 version.
-
-2003-05-13  Michael Eager <eager at mvista.com>
-
-	* configure.in: Correct sed script so that options in quotes are not
-	deleted.
-	* configure: Rebuild.
-
-2003-05-12  Corinna Vinschen  <corinna at vinschen.de>
-
-	* configure.in (FLAGS_FOR_TARGET): Remove $$s/newlib/libc/sys/cygwin
-	and $$s/newlib/libc/sys/cygwin32 include paths.
-	* configure: Ditto.
-
-2003-05-05  H.J. Lu <hjl at gnu.org>
-
-	* config-ml.in: Restored from gcc repository.
-
-2003-05-02  Chris Demetriou  <cgd at broadcom.com>
-
-	* Makefile.tpl: Require "makeinfo" from texinfo 4.2 or later.
-	* Makefile.in: Regenerate.
-
-2003-04-27  Daniel Jacobowitz  <drow at mvista.com>
-
-	* src-release (DEVO_SUPPORT): Add src-release, Makefile.tpl,
-	and Makefile.def.
-
-2003-04-27  Daniel Jacobowitz  <drow at mvista.com>
-
-	* Makefile.tpl: Clean $(BUILD_SUBDIR).
-	* Makefile.in: Regenerated.
-
-2003-04-18  Gerald Pfeifer  <pfeifer at dbai.tuwien.ac.at>
-
-	* Makefile.tpl (MAKEINFOFLAGS): Default to --split-size=5000000.
-	* Makefile.in: Regenerate.
-
-2003-04-18  Jakub Jelinek  <jakub at redhat.com>
-
-	* configure.in (powerpc64*-*-linux*): Remove.
-	* configure: Rebuilt.
-
-2003-04-17  Phil Edwards  <pme at gcc.gnu.org>
-
-	* Makefile.tpl (GCC_STRAP_TARGETS):  New variable containing all the
-	previous bootstrap targets, plus bubblestrap, quickstrap, cleanstrap,
-	and restrap.
-	* Makefile.in:  Regenerate.
-
-2003-04-16  Richard Earnshaw  <rearnsha at arm.com>
-
-	* configure.in (arm-*-netbsdelf*): Enable building java libraries.
-	* configure: Regenerated.
-
-2003-04-11  Alexandre Oliva  <aoliva at redhat.com>
-
-	* libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*.
-	* */configure: Rebuilt.
-
-2003-03-14  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES back down.
-	* Makefile.in: Regenerate.
-
-2003-03-14  Michael Chastain  <mec at shout.net>
-
-	* Makefile.in: Regenerate with correct Makefile.def.
-
-2003-03-12  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES up.  Delete unused
-	Make macro.
-	* Makefile.in: Regenerate.
-	* configure.in: Clean up gxx_include_dir logic.
-	* configure: Regenerate.
-
-2003-03-09  Franz Sirl  <Franz.Sirl-kernel at lauterbach.com>
-
-	* configure.in (gxx_include_dir): Fix typo.
-	* configure: Regenerated.
-
-2003-03-06  Andrew Cagney  <cagney at redhat.com>
-
-	* texinfo/texinfo.tex: Import version 2003-02-03.16.
-
-2003-03-04  Daniel Jacobowitz  <drow at mvista.com>
-
-	* configure.in: Include $(build_tooldir)/sys-include in
-	FLAGS_FOR_TARGET.
-	* configure: Regenerated.
-
-2003-03-04  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Reindent.
-	* Makefile.in: Regenerate.
-	* configure.in: Reindent.  Don't set unused variables.
-	* configure: Regenerate.
-
-	* Makefile.tpl: Always pass down RANLIB.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Don't set unused enable_shared, enable_threads macros.
-	* Makefile.in: Regenerate.
-	* configure.in: Remove unused logic relating to --enable-shared
-	and --enable-threads.  Remove bogus comments.  Remove redundant
-	noconfigdirs.
-	* configure: Regenerate.
-
-	* configure.in: Replace ${libstdcxx_version} by its value.
-	Remove reference to mh-dgux.
-	* configure: Regenerate.
-
-2003-02-28  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Rearrange.
-	* Makefile.in: Regenerate.
-
-2003-02-25  Nick Clifton  <nickc at redhat.com>
-
-	* configure: Remove site-file supprot - it is obsolete.
-
-2003-02-24  Uwe Stieber <uwe at wwws.de>
-
-	* configure.in: Add support for kaOS as cross build target system.
-	* configure: Regenerated.
-
-2003-02-20  Sean McNeil  <sean at blue.mcneil.com>
-
-	* Makefile.tpl: Add definition of CPPFLAGS to pass into
-	configure-target-* as some target builds may require additional
-	flags for preprocessor tests.
-	* Makefile.in: Regenerated.
-
-2003-02-19  Alexandre Oliva  <aoliva at redhat.com>
-
-	* libtool.m4 (LD): Append -melf* option to LD on IRIX with GNU ld.
-	* ltconfig: Handle it.
-	* ltcf-cxx.sh: Use with_gnu_ld passed as a shell variable instead of
-	auto-detecting it.
-
-2003-02-19  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltcf-cxx.sh: Replace $linker_flags with $compiler_flags wherever
-	it is used as argument to $CC.
-	* ltcf-gcj.sh: Likewise.
-
-2003-02-19  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in: Introduce --enable-maintainer-mode.
-	* configure: Rebuilt.
-	* Makefile.tpl (Makefile.in, configure): Enable dependencies only
-	for maintainer mode.
-	* Makefile.in: Rebuilt.
-
-2003-02-19  Andrew Cagney <ac131313 at redhat.com>
-
-	* configure: Regenerate using autoconf 2.13.
-
-2003-02-19  Alan Modra  <amodra at bigpond.net.au>
-
-	* config.guess: Import latest version.
-	* config.sub: Import latest version.
-
-2003-02-18  Jason Merrill  <jason at redhat.com>
-
-	* Makefile.tpl (check-c++): Allow parallelism.
-
-2003-02-17  Andrew Cagney  <ac131313 at redhat.com>
-
-	* configure: Regenerate using autoconf 000227.
-
-2003-02-15  Geoffrey Keating  <geoffk at apple.com>
-
-	* configure.in (*-*-darwin*): Rename from powerpc*-*-darwin*,
-	don't configure target-libobjc.
-	* configure: Regenerate.
-
-2003-02-14  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* Makefile.tpl (RANLIB): Define.
-	* Makefile.in: Regenerate.
-
-2003-02-06  Keith R Seitz  <keiths at redhat.com>
-
-	* Makefile.def: Remove "snavigator", "grep", and "db" modules.
-	* Makefile.tpl: Remove "all-snavigator" and "all-grep".
-	* Makefile.in: Regenerated.
-	* configure.in: Remove all traces of snavigator, db, and grep.
-	* configure: Regenerated.
-
-2003-01-31  Frank Ch. Eigler  <fche at redhat.com>
-
-	* Makefile.tpl (all-sid): Add libiberty/bfd/opcodes dependencies.
-	* Makefile.in: Regenerated.
-
-2003-01-30  Alexandre Oliva  <aoliva at redhat.com>
-
-	* config.if: Copy from GCC.
-
-2003-01-27  Phil Edwards  <pme at gcc.gnu.org>
-
-	* configure.in:  Revert 24Jan change.
-	* configure:  Regenerate.
-
-2003-01-23  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Revert previous change.
-	* configure: Regenerate.
-
-2003-01-23  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Make rda native-only.
-	* configure: Regenerate.
-
-2003-01-19  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Add missing \.
-	* configure: Rebuilt.
-
-2003-01-17  Jakub Jelinek  <jakub at redhat.com>
-
-	* configure.in (baseargs): Avoid using \| in sed regular
-	expressions.
-	* configure: Rebuilt.
-
-2003-01-16  Jakub Jelinek  <jakub at redhat.com>
-
-	* configure.in (baseargs): Remove all supported forms of
-	--cache-file, --srcdir, --host, --build and --target options
-	from argument lists.
-	* configure: Rebuilt.
-
-2003-01-15  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (noconfigdirs): Don't skip gas on IRIX 6.
-	* configure: Rebuilt.
-
-2003-01-09  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Substitute TOPLEVEL_CONFIGURE_ARGUMENTS.
-	* Makefile.tpl: Pass TOPLEVEL_CONFIGURE_ARGUMENTS to gcc.
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
-
-2003-01-09  Christian Cornelssen  <ccorn at cs.tu-berlin.de>
-
-	* Makefile.tpl (BASE_FLAGS_TO_PASS): Also pass DESTDIR.
-	(install-info, dir.info): Prepend $(DESTDIR) to $(infodir).
-	* Makefile.in: Regenerate.
-
-2003-01-09  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in: Remove Makefile in build, host and target modules
-	unless configure was run with --no-recursion.
-	* configure: Rebuilt.
-
-2003-01-08  Chris Demetriou  <cgd at broadcom.com>
-
-	* config.guess: Update to 2003-01-03 version.
-	* config.sub: Update to 2003-01-03 version.
-
-2003-01-07  Christopher Faylor  <cgf at redhat.com>
-
-	* configure: Regenerate with proper autoconf 2.13.
-
-2003-01-07  Christopher Faylor  <cgf at redhat.com>
-
-	* configure.in: Add AC_PREREQ for consistency.
-	* configure: Regenerate.
-
-2003-01-06  Andrew Cagney  <ac131313 at redhat.com>
-
-	* configure.in (GDB_TK): Add tcl directories conditional on
-	gdb/gdbtk directory being present.
-	* configure: Regenerate.
-
-2003-01-04 John David Anglin  <dave.anglin at nrc.ca>
-
-	* configure.in (LD): Improve test for gcc.  Try to set LD to the ld used
-	by gcc if LD is not defined and we are not doing a Canadian Cross.
-	* configure: Rebuilt.
-
-2003-01-01  Daniel Jacobowitz  <drow at mvista.com>
-
-	* src-release (ETC_SUPPORT): Add fdl.texi and texi2pod.pl.
-
-2002-12-31  Tom Tromey  <tromey at redhat.com>
-
-	* Makefile.in: Rebuilt.
-	* Makefile.def (target_modules) [libffi]: Allow installation.
-
-2002-12-31  Andreas Schwab  <schwab at suse.de>
-
-	* configure.in: Fix use of $program_transform_name.
-	* configure: Regenerated.
-
-2002-12-30  Daniel Jacobowitz  <drow at mvista.com>
-
-	* configure.in (baseargs): Don't remove first configure argument.
-	* configure: Regenerated.
-
-2002-12-29  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.tpl (local-distclean): Don't remove...
-	(multilib.ts): ... this.  Moved into...
-	(multilib.out): ... this.  Don't use sub-make.
-	($(BUILD_SUBDIR)/[+module+]/Makefile, [+module+]/Makefile,
-	$(TARGET_SUBDIR)/[+module+]/Makefile, gcc/Makefile): Moved into...
-	(configure-build-[+module+], configure-[+module+],
-	configure-target-[+module+], configure-gcc): ... these.  Test
-	for Makefile existence.  Drop config.status from dependencies.
-	* Makefile.in: Rebuilt.
-	* configure.in: Move gcc-version-trigger to the end of
-	ac_configure_args.  Add comments to maybedep.tmp and
-	serdep.tmp.  Introduce --disable-serial-configure.  Remove
-	nonopt from baseargs, matching and removing corresponding
-	whitespace while at it.
-	* configure: Rebuilt.
-
-2002-12-28  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (host_configargs): Replace reference to
-	no-longer-defined buildopts with --build=${build_alias}.
-	* configure: Rebuilt.
-
-2002-12-28  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.tpl ($(NOTPARALLEL)): Move to the end.  Bring uses of
-	program_transform_name to standard idiom.
-	(AUTOGEN, AUTOCONF): Define.
-	(Makefile.in): Use $(AUTOGEN).
-	(Makefile): Depend on config.status, and use autoconf-style rule to
-	build it.  Move original commands to...
-	(config.status): ... this new target.
-	(configure): Add $(srcdir).  Depend on config/acx.m4.  Use
-	$(AUTOCONF).
-	* Makefile.in: Rebuilt.
-
-2002-12-28  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Fix dramatic bustage due to change in
-	program_transform_name.
-	* Makefile.in: Regenerate.
-
-	* configure.in: Remove unnecessary PATH setting.
-	* configure: Regnerate.
-
-	* configure.in: Don't default to unprefixed tools unless
-	the native tools will work.
-	* configure: Regenerate.
-
-	* configure.in: Convert to autoconf script.  Blow away lots
-	of now-redundant Makefile fragments.
-	* configure: Generate using Autoconf.
-	* Makefile.tpl: Rewrite to reflect autoconfiscation.
-	* Makefile.in: Regenerate.
-
-2002-12-27  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure: Remove unneeded 'export's.  Make CC_FOR_TARGET,
-	CXX_FOR_TARGET, GCJ_FOR_TARGET substituted in configure.in only.
-
-	* ChangeLog: Move a couple of entries from here to winsup/cygwin,
-	where they belong.
-
-2002-12-24  Andreas Schwab  <schwab at suse.de>
-
-	* Makefile.tpl (multilib.out): Fix missing space.
-	* Makefile.in: Regenerate.
-
-2002-12-23  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Use shared multilib.out.  Use move-if-change for it.
-	Convert (cd foo; make) to (cd foo && make).  Clean up multilib.out.
-	* Makefile.in: Regenerate.
-	* configure.in: Remove unnecessary leftovers.
-
-2002-12-21  Geoffrey Keating  <geoffk at apple.com>
-
-	* configure.in (extra_ranlibflags_for_target): New variable.
-	(*-*-darwin): Add -c to ranlib commands.
-	* configure (tooldir): Handle extra_ranlibflags_for_target.
-
-2002-12-20  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Updated.
-	* COPYING.LIBGLOSS: Ditto.
-
-2002-12-19  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Revert HJL's change.
-	* Makefile.in: Regenerated.
-	* configure.in: Put build_prefix before $(BUILD_SUBDIR) here, and
-	always.
-
-2002-12-19  Andreas Schwab  <schwab at suse.de>
-
-	* Makefile.tpl, configure.in: Substitute libstdcxx_incdir.
-	* Makefile.in: Regenerate.
-
-2002-12-18  H.J. Lu <hjl at gnu.org>
-
-	* Makefile.tpl: Add @build_prefix@ before $(BUILD_SUBDIR).
-	* Makefile.in: Regenerated.
-
-	* configure.in (build_prefix): New. Substitute.
-
-2002-12-18  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Don't let real targets depend on phony targets.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl (do-info): Depend on maybe-all-texinfo, not all-texinfo.
-	* Makefile.in: Regenerate.
-
-2002-12-16  Jason Merrill  <jason at redhat.com>
-
-	* Makefile.tpl (all-gcc): Use 'make quickstrap' if there was a
-	previous 'make bootstrap'.
-	* Makefile.in: Regenerate.
-
-2002-12-17  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* configure.in (noconfigdirs) [mmix-*-*]: Disable libgloss and gdb.
-
-2002-12-13  Jason Merrill  <jason at redhat.com>
-
-	* Makefile.tpl (check-gcc-c++): Renamed from check-c++.  Don't run
-	library tests.
-	(check-c++): Just depend on it and check-target-libstdc++-v3.
-	* Makefile.in: Regenerate.
-
-2002-12-13  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in, Makefile.tpl, Makefile.def: Remove tclX.
-	* Makefile.in: Regenerate.
-
-2002-12-12  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Update list of alternate Regent of California
-	licenses and discuss official revoking of advertising clause.
-	* COPYING.LIBGLOSS: Ditto.
-
-2002-12-12  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.tpl (configure-target-rda): Depend on $(ALL_GCC_C).
-	* Makefile.in: Rebuilt.
-
-2002-12-10  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure: Fix bug put in by gremlins.
-
-	* Makefile.tpl: Substitute more autoconfily.
-	* configure: Substitute more autoconfily.
-	* Makefile.in: Regenerate.
-
-2002-12-08  Andrew Cagney  <ac131313 at redhat.com>
-
-	* Makefile.tpl (all-sim): Depend on maybe-configure-gdb.
-	* Makefile.in (all-sim): Ditto.
-
-2002-12-06  DJ Delorie  <dj at redhat.com>
-
-	* Makefile.tpl: Change configure dependencies to not have real
-	targets depend on phony targets.
-
-2002-12-05  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Revert unintentional change.
-
-	* src-release: Configure host subdirs.
-
-	* Makefile.tpl: Change dependency for */multilib.out so that
-	it works when gcc isn't in the tree.
-
-	* configure.in: Substitute more.
-	* configure: Run subconfigures from the Makefile.
-	* Makefile.tpl: Run subconfigures from the Makefile; add a few
-	convenience targets.  Make sure gcc isn't rebuilt after bootstrap.
-
-2002-12-03  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Add targets for configuring host subdirs in Makefile,
-	and corresponding dependencies.
-	* Makefile.in: Regenerate.
-
-	* configure.in (host_tools): Order binutils, gas and ld for
-	convenience in running the testsuites.
-
-	* Makefile.tpl: Introduce rules to serialize subconfigure runs.
-	* Makefile.in: Regenerate.
-	* configure.in: Introduce rules to serialize subconfigure runs.
-
-	* configure.in: Introduce BASE_CC_FOR_TARGET.
-	* Makefile.tpl: Reorganize and comment.  Introduce HOST_CONFIGARGS.
-	Realize configure-build-* targets.  Realize configure-target-* targets.
-	* Makefile.in: Regenerate.
-
-2002-12-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure: Move gcc_version_trigger stuff from here...
-	* configure.in: ...to here.
-
-	* configure.in: Separate subconfigure options added by this file from
-	options given by the user.  Add machinery to put args for host
-	subconfigures into the Makefile.
-
-	* Makefile.tpl: Remove 'vault' targets.
-	* Makefile.tpl: Reorder and comment dependencies.
-	* Makefile.in: Regenerate.
-
-2002-11-28  Geoffrey Keating  <geoffk at apple.com>
-
-	* configure.in: Move host-specific darwin noconfigdirs into
-	the host-specific section.
-
-2002-12-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Restore bkorb's style patch, accidentally lost
-	during replay.
-	* Makefile.in: Regenerate.
-
-	(finishing slow-motion replay)
-	* configure: Remove skip-this-dir support.
-	* Makefile.tpl: Remove skip-this-dir support.
-
-	* Makefile.tpl: Remove leftover support for non-autoconfiscated
-	subdirectories.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Strip out useless setting of 'dir'.
-	* Makefile.in: Regenerate.
-
-2002-12-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(finishing slow-motion replay)
-	* configure.in: Fix deeply stupid bug.
-
-	* configure.in: Introduce RAW_CXX_FOR_TARGET and simplify embedded
-	shell code in CXX_FOR_TARGET
-	* Makefile.def: Introduce raw_cxx.
-	* Makefile.tpl: Use raw_cxx to select between CXX_FOR_TARGET and
-	RAW_CXX_FOR_TARGET.
-	* Makefile.in: Regenerate.
-
-2002-12-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(finishing slow-motion replay)
-	* Makefile.tpl: Remove unnecessary ifs.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Implement soft dependency machinery.  Maybe-ize
-	dependencies.  Maybe-ize build-libiberty.  Create dummy install
-	targets for 'no_install' modules.
-	* configure: Move GDB_TK substitution to configure.in.  Move
-	build_modules stuff to configure.in.
-	* configure.in: Implement soft dependency machinery.  Maybe-ize
-	GDB_TK, rearrange slightly.  Move build_modules stuff from configure.
-	* Makefile.in: Regenerate.
-
-2002-12-01  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(continuing slow-motion replay)
-	* Makefile.tpl: Make all-target, install-target behave similarly
-	to all, install (only hitting configured targets).  Eliminate
-	unused macro defintions.
-
-	* Makefile.tpl: Add all-gcc: all-build-libiberty dependency when
-	build != host.
-
-	* Makefile.tpl: Add all-gcc: all-libiberty dependency.
-
-	* ltcf-c.sh, ltcf-gcj.sh, Makefile.tpl: Correct BUILD/HOST confusion.
-
-	* configure.in: Produce lists of subdir targets we're actually
-	configuring.  Remove references to "dosrel".
-	* Makefile.tpl: Let configure set which subdir targets are hit.
-	Remove install-cross; clean up install; remove ALL.  Remove
-	references to "dosrel".  Remove "EXTRA_TARGET_HOST" hackery.
-	Autogenerate host module targets.  Remove empty dependency lines
-	and redundant dependency; rearrange slightly.
-	* Makefile.def: Add host-side libtermcap, utils.
-
-	* Makefile.in: Regenerate.
-
-2002-12-01  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(Continuing slow-motion replay)
-	* Makefile.def: Add list of recursive targets to autogenerate.
-	Add build_modules.
-	* Makefile.tpl: Autogenerate do-* targets.  Autogenerate *-target-*
-	targets.  Autogenerate *-build-* targets.
-	* Makefile.in: Regenerate.
-
-2002-11-30  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(Continuing slow-motion replay)
-	* configure: More autoconf-style substitutions.
-	* Makefile.tpl: More autoconf-style substitutions.
-	* Makefile.in: Regenerate.
-
-2002-11-30  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(Continuing slow-motion replay)
-	* configure: Substitute more variables in a more autoconf-friendly
-	way.  Simplify slightly.
-	* Makefile.tpl: Make more variables substitutable in an
-	autoconf-friendly way.
-	* Makefile.in: Regenerate.
-
-2002-11-29  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(Continuing slow-motion replay)
-	* configure.in (v810*): Remove special setting of tools.
-
-	* configure: Add support for extra required flags for ar or nm.
-	* configure.in (aix4.3+): Use above support for target-specific
-	issues, rather than using config/mt-aix43.
-
-2002-11-29  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	(Starting slow-motion replay merge from gcc 3.4 b-i-b branch)
-	* configure: Remove 'removing', which doesn't work.  Replace $subdir
-	with . everywhere.  Replace $subdirs with ''.  Replace $makesrcdir
-	with $srcdir.  Reformat indentation.  Substitute some variables
-	formerly hard-coded in the Makefile for build=host.
-	* Makefile.tpl: Autogenerate more; make more autoconf-friendly.
-	* Makefile.def: Autogenerate more.
-	* Makefile.in: Regenerate.
-
-2002-11-13  Bruce Korb  <bkorb at gnu.org>
-
-	* Makefile.tpl: syntactic cleanup
-
-2002-11-04  Kevin Buettner  <kevinb at redhat.com>
-
-	* Makefile.def (host_modules): Add rda.
-	* Makefile.in: Regenerate.
-	* configure.in (target_tool): Add target-rda to list.
-
-2002-10-25  Phil Edwards  <pme at gcc.gnu.org>
-
-	* Makefile.tpl (bootstrap):  Add bubblestrap, quickstrap, cleanstrap,
-	and restrap targets to this rule.
-	* Makefile.in:  Regenerate.
-
-2002-10-24  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* configure.in (i[3456]86-*-linux*): Add check to disable
-	${libgcj} for glibc1.
-
-2002-10-07  Svein E. Seldal  <Svein.Seldal at solidas.com>
-
-	* configure.in: Add tic4x target.
-
-2002-10-03  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Make SET_LIB_PATH substitution more autoconfy.
-	* Makefile.tpl: Make RPATH_ENVVAR substitution more autoconfy.
-	* configure.in: Make SET_LIB_PATH substitution more autoconfy.
-	* configure.in: Make RPATH_ENVVAR substitution more autoconfy.
-	* Makefile.in: Regenerate.
-
-2002-10-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Eliminate reference to all-gui, all-libproc.
-	* Makefile.in: Regenerate.
-
-	* Makefile.def: Remove order dependency comments.
-	* Makefile.tpl: Add explicit install-install dependencies.
-	* Makefile.in: Regenerate.
-
-	* Makefile.tpl: Remove material now in src-release.  (Finally!)
-	* Makefile.in: Regenerate.
-
-	* configure: Restore my original patch by syncing with gcc version.
-
-	* Bring following over from gcc:
-
-2002-09-30  Ulrich Weigand  <uweigand at de.ibm.com>
-
-	* configure.in (s390*-*-linux*): Enable libgcj.
-
-2002-10-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.in: Regenerate.  This really ought to fix things. :sigh:
-
-2002-10-02  Alan Modra  <amodra at bigpond.net.au>
-
-	* configure: Move stray lines back to where they belong.
-
-2002-10-01  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Insert configure-target target, for src-release.
-
-	* configure: Finish reverting change which Andrew Cagney started
-	reverting.  Should fix bustage.
-
-	* src-release (BINUTILS_SUPPORT_DIRS): Add cpu directory.
-	* src-release: New file.  Contains material for making net
-	releases for gdb, binutils, et al., formerly in Makefile.in.
-
-2002-09-30  Nick Clifton  <nickc at redhat.com>
-
-	* cpu: New top level directory.  Intended to hold input files for
-	CGEN which have FSF copyright assignment.
-	* Makefile.in (BINUTILS_SUPPORT_DIRS): Add cpu directory.
-
-2002-09-29  Andrew Cagney  <ac131313 at redhat.com>
-
-	Revert below (note that src does not contain Makefile.tpl):
-	* Makefile.tpl: Make subsituted variables more autoconfy.
-	* Makefile.in: Regenerate.
-
-2002-09-29  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure: Revert accidentally applied changes.
-
-	* Makefile.tpl: Make more autoconf-friendly.
-	* Makefile.in: Regenerate.
-	* configure: Make substitution more autoconf-like.
-
-2002-09-28  Richard Earnshaw  <rearnsha at arm.com>
-
-	* configure.in (arm-*-coff, strongarm-*-coff, xscale-*-coff): Use a
-	single entry to handle all these.
-	(arm-*-elf, strongarm-*-elf, xscale-*-elf): Likewise.  Also enable
-	libjava on arm-*-elf.
-
-2002-09-27  Geoffrey Keating  <geoffk at apple.com>
-
-	* configure.in (powerpc-*-darwin*): Don't configure BFD, TK, or the
-	things that depend on them.
-
-2002-09-25  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Make subsituted variables more autoconfy.
-	* Makefile.in: Regenerate.
-	* configure: Make seds more autoconfy.
-
-2002-09-25  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.tpl: Rewrite substituted lines to look autoconfy.
-	* Makefile.in: Regenerate.
-	* configure.in: Rewrite sed statements to look autoconfy.
-
-	* Makefile.tpl: Autogenerate *-target-* lists, dependencies of
-	all-target-foo on configure-target-foo.
-	* Makefile.def: Ditto.
-	* Makefile.in: Rebuild.
-
-2002-09-22  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* Makefile.def: New file.
-	* Makefile.tpl: New file.
-	* Makefile.in: Generate from Makefile.tpl with 'autogen Makefile.def'.
-
-	* configure.in: Minor rearrangement.  Simplify tests.
-
-2002-09-23  Jason Thorpe  <thorpej at wasabisystems.com>
-
-	* configure.in (with_headers): Skip copy if value is "yes".
-	(with_libs): Likewise.
-
-2002-09-20  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in (*-*-netbsd*): Use noconfigdirs, not skipdirs.
-	* configure.in (sh*-*-pe*): Ditto.
-	* configure.in (mips*-*-pe*): Ditto.
-	* configure.in (*arm-wince-pe): Ditto.
-
-	* configure.in: Rearrange.
-
-2002-09-12  Nick Clifton  <nickc at redhat.com>
-
-	* Import these changes from the config master repository:
-
-	2002-09-05  Svein E. Seldal  <Svein.Seldal at solidas.com>
-
-		* config.sub: Add tic4x target.
-
-	2002-09-03  Ben Elliston  <bje at redhat.com>
-
-		* config.guess: Detect NSR-D machines for nsr-tandem-nsk.
-		Reported by <Duncan_Stodart at insession.com>.
-
-2002-09-10  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: More updates.
-
-2002-09-09  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Update.
-
-2002-08-23  Andrew Cagney  <ac131313 at redhat.com>
-
-	* texinfo/texinfo.tex: Import version 2002-06-04.06.
-
-	* config.guess: Import version 2002-08-23.
-	* config.sub: Import version 2002-08-22.
-
-2002-08-20  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (GCC_FOR_TARGET): Prepend STAGE_CC_WRAPPER.
-	* configure.in (CC_FOR_TARGET, GCJ_FOR_TARGET, CXX_FOR_TARGET,
-	CXX_FOR_TARGET_FOR_RECURSIVE_MAKE): Likewise.
-
-2002-08-06  Federico G. Schwindt <fgsch at olimpo.com.br>
-
-	* configure.in (hppa*-*-openbsd*): Treat like hppa*-*-*elf*.
-
-2002-08-04  H.J. Lu  (hjl at gnu.org)
-
-	* configure.in (mips*-*-linux*): Don't skip target-libffi.
-
-2002-07-31  Alan Modra  <amodra at bigpond.net.au>
-
-	* configure.in: Move generic linux case to end.	 Copy generic
-	linux noconfigdirs to mips*-*-linux* entry and new
-	powerpc64*-*-linux* entry.  Add target-libffi for the latter.
-
-2002-07-19  Chris Demetriou  <cgd at broadcom.com>
-
-	* MAINTAINERS: Clarify on config.guess and config.sub, and add
-	one instance of them which was missed to the list to update.
-
-2002-07-16  Chris Demetriou  <cgd at broadcom.com>
-
-	* config.guess: Update to 2002-07-09 version.
-	* config.sub: Update to 2002-07-03 version.
-
-2002-07-11  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Remove two redundant tests.
-
-2002-07-11  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* configure.in (mips*-*-irix6*o32): Enable stabs.
-
-2002-07-08  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Don't build grez.
-	* Makefile.in: Ditto.
-
-	* Makefile.in: Remove references to bsp, cygmon, libstub.
-	* configure.in: Ditto.
-
-	* configure.in: Remove leftover reference to gdbtest.
-
-2002-07-08  Phil Edwards  <pme at gcc.gnu.org>
-
-	* configure.in (gxx_include_dir):  Change to match versioned
-	C++ headers if --enable-version-specific-runtime-libs is used.
-
-2002-07-04  Steve Ellcey  <sje at cup.hp.com>
-
-	* ltcf-cxx.sh (hpux*): Modify to support ia64-*-hpux*.
-
-2002-07-03  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Make --without-x work.
-
-2002-07-03  Nick Clifton  <nickc at cambridge.redhat.com>
-
-	* contrib: New directory.  Created to contain a copy of the
-	texi2pod.pl script so that it is in the same place as the version in
-	the FSF GCC sources.
-
-2002-07-02  Nathanael Nerode  <neroden at gcc.gnu.org>
-
-	* configure.in: Rearrange target Makefile fragment collection.
-
-	* Makefile.in: Don't try to build gdbtest, tgas, ispell, inet, or
-	cvs[src].
-	* configure.in: Ditto.
-
-2002-07-01  Nathanael Nerode <neroden at gcc.gnu.org>
-
-	* Makefile.in: Eliminate 'apache' targets.
-	* configure.in: Eliminate 'apache' targets.
-
-	* configure.in: Eliminate redundant tests.  Reorganize.
-
-	* Makefile.in: Eliminate last reference to LIBGCC1_TEST.
-
-	* config-ml.in: Eliminate references to Cygnus configure.
-
-	* Makefile.in: Eliminate references to building emacs.
-
-2002-07-01  Denis Chertykov  <denisc at overta.ru>
-
-	* configure.in: Add support for ip2k.
-
-2002-06-24  Ben Elliston  <bje at redhat.com>
-
-	* configure.in (host_tools): Remove cgen.
-
-	* Makefile.in (all-cgen): Remove; runs from its source directory.
-	(check-cgen, install-cgen, clean-cgen): Likewise.
-	(all-opcodes): No not depend on all-cgen.
-	(all-sim): Likewise.
-
-2002-06-22  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in: Fix AIX configury bug.
-
-2002-06-19  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in: Replace ${topsrcdir} with ${srcdir}.
-
-	* configure.in: Move definition of libstdcxx_flags right above
-	usage, rather than way earlier.
-
-	* configure.in: Pull definition of is_cross_compiler earlier.
-
-	* configure.in: Rearrange a little.
-
-	* configure.in: Remove references to librx.
-	* Makefile.in: Remove references to librx.
-
-2002-06-19  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in: Eliminate ${gasdir} variable.
-
-2002-06-18  Dave Brolley  <brolley at redhat.com>
-
-	* configure.in: Add support for frv.
-	* config.sub: Add support for frv.
-
-2002-06-12  Kaveh R. Ghazi  <ghazi at caip.rutgers.edu>
-
-	* Makefile.in (CFLAGS_FOR_TARGET): Add -O2.
-
-2002-06-08  Jason Thorpe  <thorpej at wasabisystems.com>
-
-	* configure.in (vax-*-netbsd*): Re-enable gas.
-
-2002-05-31  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* Makefile.in: Replace HOST_PREFIX, HOST_PREFIX_1 with BUILD_PREFIX,
-	BUILD_PREFIX_1, to correct nomenclature.
-	* configure: Likewise.
-
-	* Makefile.in: Eliminate version-specific references to tcl8.1, tk8.1.
-	* configure.in: Eliminate version-specific references to tcl8.1, tk8.1.
-
-2002-05-31  Olaf Hering  <olh at suse.de>
-
-	* config-ml.in: Propogate DESTDIR also.
-
-2002-05-29  Jason Thorpe  <thorpej at wasabisystems.com>
-
-	* configure.in (vax-*-netbsd*): Don't build gas for this
-	platform.
-
-2002-05-28  Marek Michalkiewicz  <marekm at amelek.gda.pl>
-
-	* configure.in (noconfigdirs): Don't compile libiberty, libstdcxx
-	and libgcj for AVR.
-
-2002-05-28  Nick Clifton  <nickc at cambridge.redhat.com>
-
-	* config.sub: Add DLX target.
-
-2002-05-22  Jason Thorpe  <thorpej at wasabisystems.com>
-
-	* config.guess: Update to 2002-05-22 version.
-	* config.sub: Likewise.
-
-2002-05-16  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* Makefile.in: Allow for PWDCMD to override hardcoded pwd.
-	* config-ml.in: Likewise.
-	* configure: Likewise.
-	* configure.in: Likewise.
-
-2002-05-13  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in: Simplify makefile fragment collection.
-
-	* configure.in: Remove code to build emacs.
-
-	* configure.in : Remove --srcdir argument from targargs and buildargs
-	(it's always overridden in the Makefile anyway).  Rearrange a bit.
-
-	* configure: Move some logic to configure.in.
-	* configure.in: Move some logic from configure.
-
-2002-05-07  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.LIBGLOSS: New file.
-
-2002-05-07  Federico G. Schwindt <fgsch at olimpo.com.br>
-
-	* Makefile.in: Honour DESTDIR.
-
-2002-05-05  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (noconfigdirs): Don't disable libgcj on
-	sparc64-*-solaris* and sparcv9-*-solaris*.
-
-2002-05-03  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in: Revert 2002-04-18's patch; fixed in libjava.
-
-2002-05-03  Thomas Fitzsimmons  <fitzsim at redhat.com>
-
-	* configure.in (FLAGS_FOR_TARGET): Do not add
-	-B$$r/$(TARGET_SUBDIR)/newlib/ when compiling newlib natively
-	on i[3456]86-*-linux*.
-
-2002-05-01  Thomas Fitzsimmons  <fitzsim at redhat.com>
-
-	* configure.in (noconfigdirs): Replace [ ] with test.
-
-	* configure.in (noconfigdirs): Do not add target-newlib if
-	target == i[3456]86-*-linux*, and host == target.
-
-2002-04-29  Mark Mitchell  <mark at codesourcery.com>
-
-	* config.guess: Updated to 2002-04-26's version.
-	* config.sub: Updated to 2002-04-26's version.
-
-2002-04-29  Nathanael Nerode  <neroden at doctormoo.dyndns.org>
-
-	* configure.in: delete reference to absent file
-
-	* configure.in: replace '[' with 'test'
-
-	* configure.in: Eliminate references to gash.
-	* Makefile.in: Eliminate references to gash.
-
-	* configure.in: remove useless references to 'pic' makefile fragments.
-
-	* configure.in: (*-*-windows*) Finish removing.
-
-	* configure.in: Eliminate redundant test for libgui.
-
-2002-04-26  Joel Sherrill  <joel at OARcorp.com>
-
-	* configure.in (h8300*-*-rtems*): Disable libf2c and libgcj.
-	(sparc-*-elf*, sparc64-*-elf*): Disable libgcj.
-
-2002-04-19  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in: remove references to dead files
-
-2002-04-18  Tom Tromey  <tromey at redhat.com>
-
-	* configure.in: Disallow configuring libgcj when it is already
-	installed and we're using Solaris 2.8 linker.  Do enable libgcj on
-	Solaris 2.8 by default.  For PR libgcj/6158.
-
-2002-04-17  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in:  Move default CC setting out of config/mh-* fragments
-	directly into here.
-
-2002-04-17  Nathanael Nerode  <neroden at twcny.rr.com>
-
-	* configure.in: don't even try to configure or make a subdirectory
-	if there's no configure script for it.
-
-2002-04-15  Mark Mitchell  <mark at codesourcery.com>
-
-	* MAINTAINERS: Remove chill maintainers.
-	* Makefile.in (CHILLFLAGS): Remove.
-	(CHILL_LIB): Remove.
-	(TARGET_CONFIGDIRS): Remove libchill.
-	(CHILL_FOR_TARGET): Remove.
-	(BASE_FLAGS_TO_PASS): Don't pass CHILLFLAGS, CHILL_FOR_TARGET, or
-	CHILL_LIB.
-	(CONFIGURE_TARGET_MODULES): Remove configure-target-libchill.
-	(CHECK_TARGET_MODULES): Likewise.
-	(INSTALL_TARGET_MODULES): Likewise.
-	(CLEAN_TARGET_MODULES): Likewise.
-	(configure-target-libchill): Remove.
-	(all-target-libchill): Remove.
-	* configure.in (target_libs): Remove target-libchill.
-	Do not compute CHILL_FOR_TARGET.
-	* libchill: Remove directory.
-
-2002-04-15  DJ Delorie  <dj at redhat.com>
-
-	* Makefile.in, configure.in, configure: Sync with gcc, entries
-	follow...
-
-2002-04-08  Tom Tromey  <tromey at redhat.com>
-
-	* configure.in: Add FLAGS_FOR_TARGET to GCJ_FOR_TARGET.
-	Fixes PR libgcj/6068.
-
-2002-03-30  Krister Walfridsson  <cato at df.lth.se>
-
-	* configure.in (i*86-*-netbsdelf*): Don't disable libgcj.
-
-2002-03-27  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* configure.in (alpha*-dec-osf*): Enable libgcj.
-
-2002-03-24  Nick Clifton  <nickc at cambridge.redhat.com>
-
-	Fix for: PR bootstrap/3591, target/5676
-	* configure.in (mcore-pe): Disable the configuration of
-	libstdc++-v3 since exceptions are not supported.
-
-2002-03-20  Anthony Green  <green at redhat.com>
-
-	* configure.in: Enable libgcj for xscale-elf target.
-
-2002-02-28  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (libstdcxx_flags): Don't add libstdc++-v3 flags for
-	libjava.
-	(CXX_FOR_TARGET): Explain why -shared-libgcc here.
-
-2002-02-22  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (CXX_FOR_TARGET): Add -shared-libgcc for
-	libstdc++-v3 and libjava.
-
-2002-02-11  Adam Megacz <adam at xwt.org>
-
-	* gcc/Makefile.in: Removed libstdc++-v3 dependancy for libjava and
-	boehm-gc
-
-2002-02-09  Alexandre Oliva  <aoliva at redhat.com>
-
-	* config.guess: Updated to 2002-01-30's version.
-	* config.sub: Updated to 2002-02-01's version.
-	Contribute sh64-elf.
-	2000-12-01  Alexandre Oliva  <aoliva at redhat.com>
-	* configure.in: Added sh64-*-*.
-
-2002-01-17  H.J. Lu <hjl at gnu.org>
-
-	* Makefile.in (all-fastjar): Also depend on all-libiberty.
-	(all-target-fastjar): Also depend on all-target-libiberty.
-
-Wed Dec  5 07:33:45 2001  Douglas B. Rupp  <rupp at gnat.com>
-
-	* configure, configure.in: Use temp file for long sed commands.
-
-2001-11-14  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* configure.in (noconfigdirs) [h8300*-*-*, h8500-*-*]: Disable
-	libf2c.
-
-2001-11-03  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* configure.in (noconfigdirs) [mmix-*-*]: Disable libgcj.
-
-2001-10-11  Hans-Peter Nilsson  <hp at axis.com>
-
-	* configure.in (noconfigdirs) [cris-*-*]: Disable libgcj.
-
-2001-10-02  Joseph S. Myers  <jsm28 at cam.ac.uk>
-
-	* configure: Handle temporary files securely using mkdir.
-
-2001-09-26  Will Cohen <wcohen at redhat.com>
-
-	* configure.in (*-*-linux*): Disable configuration of target-newlib
-	and target-libgloss.
-
-2001-09-26  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (EXTRA_TARGET_FLAGS): Pass RANLIB_FOR_TARGET for
-	RANLIB.
-
-2001-08-11  Graham Stott  <grahams at redhat.com>
-
-	* Makefile.in (check-c++): Add missing semicolon.
-
-2001-07-25  Andrew Haley  <aph at cambridge.redhat.com>
-
-	* configure.in (sh-*-linux*): New.
-
-2001-07-12  Stephane Carrez  <Stephane.Carrez at worldnet.fr>
-
-	* configure.in (noconfigdirs): Don't compile libiberty, libstdcxx
-	and libgcj on m68hc11/m68hc12.
-
-2001-06-27  H.J. Lu  (hjl at gnu.org)
-
-	* Makefile (CFLAGS_FOR_BUILD): New.
-	(EXTRA_GCC_FLAGS): Add CFLAGS_FOR_BUILD.
-
-2001-06-01  Hans-Peter Nilsson  <hp at axis.com>
-
-	* configure.in (libstdcxx_flags): Do not try to execute
-	libstdc++-v3/testsuite_flags until it exists.
-
-2001-05-18  Benjamin Kosnik  <bkoz at redhat.com>
-
-	* configure.in (libstdcxx_flags): Remove reference to libstdc++.INC.
-
-2001-05-09  Jeffrey Oldham  <oldham at codesourcery.com>
-
-	* ltcf-cxx.sh: Add -nostdlib to IRIX 6 archive_cmds.
-
-Mon Apr 23 09:15:03 2001  Anthony Green  <green at redhat.com>
-
-	* configure.in: Move *-chorusos target case to the proper switch.
-	Disable libgcj.
-
-2001-04-13  Franz Sirl  <Franz.Sirl-kernel at lauterbach.com>
-
-	* Makefile.in (STAGE1_CFLAGS): Pass down.
-
-2001-04-13  Alan Modra  <amodra at one.net.au>
-
-	* config.guess: Add hppa64-linux support.  Note for next import that
-	this is already in the master file.
-	* configure.in: Likewise.  Accept `parisc' alias for `hppa'.
-
-2001-03-22  Colin Howell  <chowell at redhat.com>
-
-	* Makefile.in (DO_X): Do not backslash single-quotes in
-	backquotes (two places).
-
-2001-03-18  Laurynas Biveinis  <lauras at softhome.net>
-
-	* Makefile.in (DO_X): Quote nested quotes.
-
-2001-03-15  Laurynas Biveinis  <lauras at softhome.net>
-
-	* Makefile.in (DO_X): Use double quotes for quoting
-	"RANLIB=$${RANLIB}".
-
-2001-03-09  Nicola Pero <n.pero at mi.flashnet.it>
-
-	* configure.in: Only use `lang_requires' for languages athat are
-	actually enabled.
-
-2001-03-07  Tom Tromey  <tromey at redhat.com>
-
-	* configure.in: Allow config-lang.in to set `lang_requires' to list
-	of other required languages.
-
-2001-03-06  Laurynas Biveinis  <lauras at softhome.net>
-
-	* Makefile.in: Remove RANLIB definition. Use RANLIB
-	in RANLIB_FOR_TARGET, EXTRA_HOST_FLAGS, EXTRA_TARGET_FLAGS,
-	EXTRA_GCC_FLAGS, $(DO_X) targets only when the RANLIB is set.
-
-2001-02-28  Benjamin Kosnik  <bkoz at redhat.com>
-	    Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (check-c++): Use tabs, not spaces.
-
-2001-02-19  Benjamin Kosnik  <bkoz at redhat.com>
-
-	* Makefile.in (check-c++): New rule.
-
-	* configure.in (target_libs): Remove libg++.
-	(noconfigdirs): Remove libg++.
-	(noconfigdirs): Same.
-	(noconfigdirs): Same.
-	(noconfigdirs): Same.
-
-	* config-ml.in: Remove libg++ references.
-
-	* Makefile.in (TARGET_CONFIGDIRS): Remove libio, libstdc++, libg++.
-	(ALL_TARGET_MODULES): Same.
-	(configure-target-libg++): Remove.
-	(all-target-libg++): Remove.
-	(configure-target-libio): Remove.
-	(all-target-libio): Remove.
-	(check-target-libio): Remove.
-	(.PHONY): Remove.
-	(libg++.tar.bz2): Remove.
-	(all-target-cygmon): Remove libio.
-	(all-target-libstdc++): Remove.
-	(configure-target-libstdc++): Remove.
-	(TARGET_LIB_PATH): Remove libstdc++.
-	(ALL_GCC_CXX): Remove libstdc++.
-	(all-target-gperf): Correct.
-
-2001-02-15  Anthony Green  <green at redhat.com>
-
-	* configure: Introduce GCJ_FOR_TARGET.
-	* configure.in: Ditto.
-	* Makefile.in: Ditto.
-
-2001-02-08  Chandrakala Chavva <cchavva at redhat.com>
-
-	* configure.in: for *-chorusos, don't config target-newlib and
-	target-libgloss.
-
-2001-02-04  Mark Mitchell  <mark at codesourcery.com>
-
-	Remove V2 C++ library.
-	* configure.in: Remove --enable-libstdcxx_v3 support.
-
-2001-01-27  Richard Henderson  <rth at redhat.com>
-
-	* configure.in (target_makefile_frag) [alpha*-*]: Use mt-alphaieee.
-
-2001-01-26  Tom Tromey  <tromey at redhat.com>
-
-	* configure.in: Allow libgcj to be built on Sparc Solaris.
-
-2001-01-23  Bryce McKinlay  <bryce at albatross.co.nz>
-
-	* configure.in: Enable libgcj on several additional platforms.
-
-2001-01-22  Bryce McKinlay  <bryce at albatross.co.nz>
-
-	* configure.in: Enable libgcj for linux targets.
-
-2001-01-09  Mike Stump  <mrs at wrs.com>
-
-	* Makefile.in (CONFIGURE_TARGET_MODULES): Pass back configuration
-	failures of subdirectories.
-
-2001-01-02  Laurynas Biveinis  <lauras at softhome.net>
-
-	* configure: handle DOS-style absolute paths.
-
-2001-01-02  Laurynas Biveinis  <lauras at softhome.net>
-
-	* configure.in: remove supported directories from $noconfigdirs for DJGPP.
-
-2000-12-18  Benjamin Kosnik  <bkoz at redhat.com>
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Alphabetize.
-	(libstdcxx_incdir): Pass down.
-	* config.if: Remove expired bits for cxx_interface, add stub.
-	(libstdcxx_incdir): Add variable for g++ include directory.
-	* configure.in (gxx_include_dir): Use it.
-
-2000-12-15  Andreas Jaeger  <aj at suse.de>
-
-	* configure.in: Handle lang_dirs.
-
-2000-12-13  Anthony Green  <green at redhat.com>
-
-	* configure.in: Disable libgcj for any target not specifically
-	listed.  Disable libgcj for x86 and Alpha Linux until compatible
-	with g++ abi.
-
-2000-12-13  Mike Stump  <mrs at wrs.com>
-
-	* Makefile.in (local-distclean): Also remove fastjar.
-
-2000-12-10  Anthony Green  <green at redhat.com>
-
-	* configure.in: Define libgcj.  Disable libgcj target libraries for
-	most targets.
-
-2000-12-09  Alexandre Petit-Bianco  <apbianco at cygnus.com>
-
-	* configure.in (target_libs): Revert 2000-12-08 patch.
-	(noconfigdirs): Added target-libjava.
-
-2000-12-09  Laurynas Biveinis  <lauras at softhome.net>
-
-	* Makefile.in: handle DOS-style absolute paths.
-
-2000-12-08  Alexandre Petit-Bianco  <apbianco at cygnus.com>
-
-	* Makefile.in (TARGET_CONFIGDIRS): Wrong place. Removed note about
-	libjava.
-	* configure.in (target_libs): Removed `target-libjava'.
-
-2000-12-08  Alexandre Petit-Bianco  <apbianco at cygnus.com>
-
-	* Makefile.in (TARGET_CONFIGDIRS): Added note about libjava.
-	(ALL_MODULES): Added fastjar.
-	(NATIVE_CHECK_MODULES, INSTALL_MODULES, CLEAN_MODULES): Likewise.
-	(all-target-libjava): all-fastjar replaces all-zip.
-	(all-fastjar): Added.
-	(configure-target-fastjar, all-target-fastjar): Likewise.
-	* configure.in (host_tools): Added fastjar.
-
-2000-12-07  Mike Stump  <mrs at wrs.com>
-
-	* Makefile.in (local-distclean): Remove leftover built files.
-
-2000-11-16  Fred Fish  <fnf at be.com>
-
-	* configure.in (enable_libstdcxx_v3): Fix typo,
-	libstd++ -> libstdc++.
-
-2000-11-13  Joseph S. Myers  <jsm28 at cam.ac.uk>
-
-	* configure: Provide the original toplevel configure arguments
-	(including $0) to subprocesses in the environment rather than
-	through gcc/configargs.h.
-
-2000-11-12  Mark Mitchell  <mark at codesourcery.com>
-
-	* configure: Turn on libstdc++ V3 by default.
-
-2000-10-16  Michael Meissner  <meissner at redhat.com>
-
-	* configure (gcc/configargs.h): Only create if there is a build GCC
-	directory created.
-
-2000-10-05  Phil Edwards  <pme at gcc.gnu.org>
-
-	* configure: Save configure arguments to gcc/configargs.h.
-
-2000-10-04  Andris Pavenis  <pavenis at latnet.lv>
-
-	* Makefile.in (bootstrap): avoid recursion if subdir missing
-	(cross): ditto
-	(do-proto-toplev): ditto
-
-Wed Sep 13 11:11:29 2000  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in: Do not build byacc for hppa64.  Provide paths to the
-	X11 libraries for hppa64.
-
-2000-09-02  Anthony Green  <green at cygnus.com>
-
-	* Makefile.in (all-gcc): Depend on all-zlib.
-	(CLEAN_MODULES): Add clean-zlib.
-	(ALL_MODULES): Add all-zlib.
-	* configure.in (host_libs): Add zlib.
-
-2000-08-25  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (FLAGS_FOR_TARGET): Use $target_configdirs and
-	$targargs to tell whether newlib is going to be built.
-
-	* configure.in [disable-libstdcxx-v3] (libstdcxx_flags): Search
-	$$r/TARGET_SUBDIR/libio for _G_config.h.
-
-2000-08-14  Zack Weinberg  <zack at wolery.cumb.org>
-
-	* configure.in (libstdcxx_flags): Remove -isystem $$s/libio/stdio.
-
-	* configure: Make enable_threads and enable_shared defaults
-	explicit.  Substitute enable_threads into generated Makefiles.
-	* configure.in: Accept *-*-linux* not just *-*-linux-gnu*.
-	* libtool.m4: Accept *-*-linux* not just *-*-linux-gnu*.
-
-2000-08-02  Manfred Hollstein  <manfredh at redhat.com>
-
-	* configure.in: Re-enable all references to libg++ and librx.
-
-2002-04-09  Loren James Rittle  <rittle at labs.mot.com>
-
-	* configure.in: Add *-*-freebsd* configurations.
-
-2002-04-07  Andrew Cagney  <ac131313 at redhat.com>
-
-	* Makefile.in (do-tar-bz2): Delete rule.  Replace with ...
-	(do-tar, do-bz2): New rules.
-	(taz): Update.  Replace do-tar-bz2 with do-tar and do-bz2.
-	(gdb-tar): New rule.
-	(gdb-taz): Rewrite.  Use gdb-tar and do-bz2.
-	(insight_dejagnu.tar): New rule.
-	(insight.tar): New rule.
-	(gdb+dejagnu.tar): New rule.
-	(gdb.tar): New rule.
-
-2002-04-07  Andrew Cagney  <ac131313 at redhat.com>
-
-	* MAINTAINERS: Update dejagnu/
-
-2002-03-16  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltmain.sh (relink_command): Fix typo in previous change.
-
-2002-03-15  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltmain.sh (taglist): Initialized.  Don't let `CC' tag out of it.
-	(relink_command): Added --tag flags.
-	(mode=install): If relinking fails; error out.
-
-2002-03-12  Richard Henderson  <rth at redhat.com>
-
-	* Makefile.in (NOTPARALLEL): New.  Use it instead of explicit
-	.NOTPARALLEL tag.
-	(do-check): Rename from check.
-	(check): Allow parallel check.
-
-2002-03-11  Richard Henderson  <rth at redhat.com>
-
-	* Makefile.in (.NOTPARALLEL): Add fake tag.
-
-2002-03-07  H.J. Lu  (hjl at gnu.org)
-
-	* configure.in: Enable gprof for mips*-*-linux*.
-
-2002-02-28  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (libstdcxx_flags): Don't add libstdc++-v3 flags for
-	libjava.
-	(CXX_FOR_TARGET): Add -shared-libgcc for libstdc++-v3 and libjava.
-
-2002-02-24  Andrew Cagney  <ac131313 at redhat.com>
-
-	* texinfo/texinfo.tex: Update to version 2002-02-14.08.
-
-2002-02-23  Daniel Jacobowitz  <drow at mvista.com>
-
-	* config.guess: Import from master sources, rev 1.232.
-	* config.sub: Import from master sources, rev 1.246.
-
-2002-02-23  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (MAKEINFO): Don't assume makeinfo will be built just
-	because its Makefile is there; test for the executable instead.
-
-2002-02-09  Alexandre Oliva  <aoliva at redhat.com>
-
-	Contribute sh64-elf.
-	2000-12-01  Alexandre Oliva  <aoliva at redhat.com>
-	* configure.in: Added sh64-*-*.
-
-2002-02-04  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Remove advertising clause from
-	Berkeley and Red Hat licenses.
-
-2002-02-01  Mo DeJong  <supermo at bayarea.net>
-
-	* Makefile.in: Add all-tix to deps for all-snavigator
-	so that tix is built when building snavigator.
-
-2002-02-01  Ben Elliston  <bje at redhat.com>
-
-	* config.guess: Import from master sources, rev 1.229.
-	* config.sub: Import from master sources, rev 1.240.
-
-2002-01-27  Daniel Jacobowitz  <drow at mvista.com>
-
-	From Steve Ellcey <sje at cup.hp.com>:
-	* libtool.m4 (HPUX_IA64_MODE): Set to 32 or 64 based on ABI.
-	(lt_cv_deplibs_check_method, lt_cv_file_magic_cmd,
-	lt_cv_file_magic_test_file): Set to appropriate values for HP-UX
-	IA64.
-	* ltcf-c.sh (archive_cmds, hardcode_*): Ditto.
-	* ltconfig (shlibpath_*, dynamic_linker, library_names_spec,
-	soname_spec, sys_lib_search_path_spec): Ditto.
-
-2002-01-26  Jason Thorpe  <thorpej at wasabisystems.com>
-
-	* configure.in (*-*-netbsd*): New.  Skip target-newlib,
-	target-libiberty, and target-libgloss.  Skip Java-related
-	libraries if not supported for NetBSD on target CPU.
-
-2002-01-23  Nick Clifton  <nickc at cambridge.redhat.com>
-
-	* configure.in: Import StrongARM and XScale target_configdirs from
-	FSF GCC version.
-
-2002-01-16  H.J. Lu  (hjl at gnu.org)
-
-	* config.guess: Import from master sources, rev 1.225.
-	* config.sub: Import from master sources, rev 1.238.
-
-	* MAINTAINERS: Updated notes on config.guess and config.sub.
-
-2002-01-11  Steve Ellcey  <sje at cup.hp.com>
-
-	* configure.in (ia64*-*-hpux*): New target for IA64 HP-UX,
-	ld and gdb are not supported.
-
-2002-01-07  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* Change reference to Cygnus Solutions to be Red Hat.
-
-2002-01-07  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Update generic copyright date.
-
-2002-01-07  Mark Salter  <msalter at redhat.com>
-
-	* configure.in: Remove target-bsp and target-cygmon from arm builds.
-	  Allow target-libgloss to be built for arm, strongarm, and xscale.
-
-2002-01-03  Ben Elliston  <bje at redhat.com>
-
-	* MAINTAINERS: Update URL for config.* scripts.
-
-2001-12-18  Alan Modra  <amodra at bigpond.net.au>
-
-	* config.sub: Import latest version.
-	* config.guess: Likewise.
-
-2001-12-13  Thomas Fitzsimmons  <fitzsim at redhat.com>
-
-	* configure.in (FLAGS_FOR_TARGET): Remove -nostdinc and -isystem
-	options for i[3456]86-pc-linux* native builds.
-
-2001-12-05  Laurent Guerby  <guerby at acm.org>
-
-	* MAINTAINERS: gcc adopts symlink-tree, refer more to
-	libiberty.
-
-	Import this patch from gcc:
-
-	2000-12-09  Laurynas Biveinis  <lauras at softhome.net>
-
-	    * symlink-tree: handle DOS-style absolute paths.
-
-2001-11-28  DJ Delorie <dj at redhat.com>
-	    Zack Weinberg  <zack at codesourcery.com>
-
-	When build != host, create libiberty for the build machine.
-
-	* Makefile.in (TARGET_CONFIGARGS, BUILD_CONFIGARGS): Replace
-	CONFIG_ARGUMENTS.
-	(ALL_BUILD_MODULES_LIST, BUILD_CONFIGDIRS, BUILD_SUBDIR):
-	New variables.
-	(ALL_BUILD_MODULES, CONFIGURE_BUILD_MODULES): New variables
-	and rules.
-	(all.normal): Depend on ALL_BUILD_MODULES.
-	(CONFIGURE_TARGET_MODULES rule): Use TARGET_CONFIGARGS.
-	(all-build-libiberty): Depend on configure-build-libiberty.
-
-	* configure: Calculate and substitute proper value for
-	ALL_BUILD_MODULES.
-	* configure.in: Create the build subdirectory.
-	Calculate and substitute TARGET_CONFIGARGS (formerly
-	CONFIG_ARGUMENTS); also BUILD_SUBDIR and BUILD_CONFIGARGS (new).
-
-2001-11-26  Geoffrey Keating  <geoffk at redhat.com>
-
-	* config.sub: Update to version 1.232 on subversion.
-
-2001-11-20  Nick Clifton  <nickc at cambridge.redhat.com>
-
-	* Makefile.in (do-proto-toplev): Use msgfmt to generate .gmo
-	files from .po files for a distribution.
-
-2001-11-19  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* COPYING.NEWLIB: Mention preserved notice in specific parts.
-
-2001-11-13  Jeff Holcomb  <jeffh at redhat.com>
-
-	Merged from net gcc:
-	2001-07-30  Jeff Sturm  <jsturm at one-pont.com>
-	* ltcf-c.sh: Use $objext, not $ac_objext.
-	2001-07-27  Mark Kettenis  <kettenis at gnu.org>
-	* ltcf-cxx.sh: Add support for GNU.
-	2001-07-22  Timothy Wall  <twall at redhat.com>
-	* ltcf-c.sh: Don't disable shared libraries for AIX5/IA64.  Preserve
-	default settings if using GNU tools with that configuration.
-	* ltcf-cxx.sh: Ditto.
-	* ltcf-gcj.sh: Ditto.
-	2001-07-21  Michael Chastain  <chastain at redhat.com>
-	* ltconfig: Set max_cmd_len to a maximum of 512Kb, as it seems some
-	HPUX 11.0 systems have trouble with 1MB.  Mark as gcc-local.
-	* ltmain.sh: Mark as gcc-local.
-
-2001-11-13  Jeff Holcomb  <jeffh at redhat.com>
-
-	* Makefile.in (all-bison): Revert 2001-10-24.
-	Don't depend on texinfo.
-
-2001-11-12  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* COPYING.NEWLIB: Add BSD-style license/copyright blurb for my work.
-
-2001-11-08  Phil Edwards  <pedwards at disaster.jaj.com>
-
-	* configure.in (--enable-languages): Be more permissive about
-	syntax.  Check for empty lists better.  Warn about $LANGUAGES.
-
-2001-11-06  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* Makefile.in (MAKEINFO): Use "missing" for makeinfo older than 4.0.
-
-2001-10-24  Jeff Holcomb  <jeffh at redhat.com>
-
-	Makefile.in (all-bison): Don't depend on texinfo.
-
-2001-10-03  Alan Modra  <amodra at bigpond.net.au>
-
-	* gettext.m4: Test po/POTFILES.in exists before trying to read.
-
-2001-09-29  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (configure-target-gperf): Depend on $(ALL_GCC_CXX).
-
-2001-09-28  Hans-Peter Nilsson  <hp at axis.com>
-
-	* config.sub, config.guess: Import latest from subversions.
-
-2001-09-21  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (AS_FOR_TARGET, LD_FOR_TARGET,
-	DLLTOOL_FOR_TARGET, WINDRES_FOR_TARGET, AR_FOR_TARGET,
-	RANLIB_FOR_TARGET, NM_FOR_TARGET): Don't use double quotes to
-	avoid quotes nesting problems.
-	(NATIVE_CHECK_MODULES): Ditto, just for consistency.
-	(DO_X): Export only variables that are set.
-
-2001-09-19  Ben Elliston  <bje at redhat.com>
-
-	* configure.in (sparc-sun-solaris2*): Don't use /usr/bin/which on
-	Solaris when testing for the /usr/ucb/cc compiler; it has incorrect
-	semantics.  Use the shell built-in "type" command instead.
-
-2001-09-15  Thiemo Seufer <seufer at csv.ica.uni-stuttgart.de>
-
-	* config.sub: Reverted the earlier change, this version is not the
-	master file.
-
-2001-09-14  Thiemo Seufer <seufer at csv.ica.uni-stuttgart.de>
-
-	* config.sub: Change machine triplets from mipsel*-* to mips*el-*.
-	Add support for mips64.
-
-2001-09-03  Jeff Holcomb  <jeffh at redhat.com>
-
-	* configure.in: Enable libstdc++-v3 for h8300 targets.
-
-2001-08-30  Eric Christopher  <echristo at redhat.com>
-	    Jason Eckhardt  <jle at redhat.com>
-
-	* config.sub: Add support for mipsisa32.
-
-2001-08-30  Eric Christopher  <echristo at redhat.com>
-
-	* config.sub, config.guess: Import latest from subversions.
-
-2001-08-20  Alan Modra  <amodra at bigpond.net.au>
-
-	* config.sub, config.guess: Import latest from subversions.
-
-2001-07-26  DJ Delorie  <dj at redhat.com>
-
-	* MAINTAINERS: Clarify libiberty merge rules and procedures.
-
-2001-06-19  Alan Modra  <amodra at bigpond.net.au>
-
-	* Makefile.in: Revert 2001-06-17.
-	(VER): If AM_INIT_AUTOMAKE uses BFD_VERSION, get version from bfd/.
-
-2001-06-17  H.J. Lu <hjl at gnu.org>
-
-	* Makefile.in (gas.tar.bz2): Pass TOOL=bfd PACKAGE=gas to make.
-	(gas+binutils.tar.bz2): Likewise.
-	(binutils.tar.bz2): Pass TOOL=bfd PACKAGE=binutils to make.
-
-Fri Jun  8 11:14:02 2001  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (VER): When present, extract the version number from
-	the file version.in.
-
-2001-06-08  Alexandre Oliva  <aoliva at redhat.com>, Jeff Sturm  <jsturm at one-point.com>
-
-	* Makefile.in (AS_FOR_TARGET, LD_FOR_TARGET, NM_FOR_TARGET): If
-	gcc/xgcc is built, use -print-prog-name to find out the program
-	name to use.
-
-2001-06-04  Mark Mitchell  <mark at codesourcery.com>
-
-	* ltcf-c.sh (archive_cmds, archive_expsym_cmds) [solaris,
-	with_gcc]: Use `gcc -shared' to build a shared library.
-
-2001-06-04  John David Anglin  <dave at hiauly1.hia.nrc.ca>
-
-	* ltcf-c.sh (archive_cmd) [hpux, with_gcc]: Use gcc to link shared
-	archives.
-
-2001-05-28  Simon Patarin <simon.patarin at inria.fr>
-
-	* ltcf-cxx.sh (osf3/osf4/osf5): Support creation of C++  shared
-	libraries when using g++ with native linker.
-
-2001-05-28  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh: Upgrade to libtool 1.4a 1.641.2.256.
-
-2001-05-24  Tom Rix <trix at redhat.com>
-
-	* configure.in : enable ld for aix
-
-2001-05-22  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltcf-cxx.sh (allow_undefined_flag, no_undefined_flag)
-	[aix4*|aix5*]: Prepend blank.
-
-2001-05-20  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh,
-	ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.254.  Rebuilt a number
-	of subdir/configure scripts to use the new libtool.m4.
-
-2001-05-14  H.J. Lu <hjl at gnu.org>
-
-	* config.if (libc_interface): Set to -libc6.2- for cross
-	compiling to Linux/glibc 2.2.
-
-2001-05-03  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (noconfigdirs) [*-cygwin*, *-mingw*, *-beos]: Disable
-	libgcj.
-
-2001-04-26  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (noconfigdirs): Don't reset it from scratch in the
-	target case; only append to it.
-
-2001-04-26  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (noconfigdirs) [hppa*-*-*, mips*-*-irix6*,
-	sparc-*-solaris2.8]: Disable ${libgcj}.
-
-2001-04-25  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (libgcj_saved): Copy from $libgcj.
-	(libgcj): Zero out if --enable-libgcj; add to noconfigdirs is
-	--disable-libgcj.
-
-2001-04-20  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh, ltcf-cxx.sh: Upgraded to libtool 1.4a
-	1.641.2.228.
-
-2001-04-12  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh,
-	ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.226.
-
-2001-04-01  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, RECURSE_FLAGS):
-	New macros.
-	(bootstrap, cross): Use RECURSE_FLAGS.
-	* configure.in: Subst CXX_FOR_TARGET_FOR_RECURSIVE_MAKE.
-
-2001-03-27  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (CXX_FOR_TARGET): Use xgcc for libstdc++-v3.
-
-2001-03-23  Nick Clifton  <nickc at redhat.com>
-
-	* README-maintainer-mode: Add note about inability to use "make
-	distclean" in maintainer mode.
-
-2001-03-22  Alexandre Oliva  <aoliva at redhat.com>
-
-	Re-installed:
-	2001-01-02  Laurynas Biveinis  <lauras at softhome.net>
-	* ltcf-c.sh: Clear ac_cv_prog_cc_pic for DJGPP.  Do not add
-	'-DPIC' to ac_cv_prog_cc_pic for DJGPP.
-	* ltcf-cxx.sh: Likewise.
-	* ltcf-gcj.sh: Likewise.
-
-2001-03-22  Philip Blundell  <philb at gnu.org>
-
-	* config.sub, config.guess: Import latest from subversions.
-
-2001-03-22  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh,
-	ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.198.
-
-2001-03-20  Michael Chastain  <chastain at redhat.com>
-
-	* Makefile.in: all-m4 depends on all-texinfo.
-
-2001-03-08  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (ALL_GCC, ALL_GCC_C, ALL_GCC_CXX): Set before use.
-
-2001-02-22  Jeff Johnston <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Remove DJ Delorie's address because it is no
-	longer valid.
-
-2001-02-16  Nick Clifton  <nickc at redhat.com>
-
-	* configure.in (noconfigdirs): Allow configuration of texinfo
-	for Cygwin hosts.
-
-2001-02-09  Martin Schwidefsky  <schwidefsky at de.ibm.com>
-
-	* config.guess: Add linux target for S/390.
-	* config.sub: Likewise.
-	* configure.in: Likewise.
-
-2001-02-06  Ben Elliston  <bje at redhat.com>
-
-	* configure: Output host type to stdout, not stderr.
-
-2001-02-04  Michael Sokolov  <msokolov at ivan.Harhan.ORG>
-
-	* config.guess: Import from subversions.gnu.org (revision 1.181).
-	* config.sub: Import from subversions.gnu.org (revision 1.199).
-
-2001-01-30  Alan Modra  <alan at linuxcare.com.au>
-
-	* config.guess: Handle hppa64-linux systems.
-
-2001-01-27  Michael Sokolov  <msokolov at ivan.Harhan.ORG>
-
-	* ltcf-cxx.sh (ac_cv_prog_cc_pic_works, ac_cv_prog_cc_static_works):
-	Don't unset, it's non-portable and no longer necessary, set to empty
-	instead.
-
-2001-01-27  Michael Sokolov  <msokolov at ivan.Harhan.ORG>,  Alexandre Oliva  <oliva at lsd.ic.unicamp.br>
-
-	* ltconfig: Shell portability fix for the tagname validity check.
-
-2001-01-27  Michael Sokolov  <msokolov at ivan.Harhan.ORG>
-
-	* ltcf-cxx.sh: Use parentheses around eval $ac_compile.
-
-2001-01-27  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltcf-c.sh (ld_shlibs) [aix5*]: Disable on unknown CPU types.
-	* ltcf-cxx.sh, ltcf-gcj.sh: Likewise.
-
-2001-01-24  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltmain.sh (TAG disable-shared, TAG disable-static): Make sure we
-	keep at least one of build_libtool_libs or build_old_libs set to
-	yes.
-
-2001-01-24  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltcf-gcj.sh (lt_simple_link_test_code): Remove stray `(0)'.
-	* libtool.m4 (_AC_LIBTOOL_GCJ): Pass $CPPFLAGS on.
-
-2000-11-07  Philip Blundell  <pb at futuretv.com>
-
-	* Makefile.in (ETC_SUPPORT): Also add configbuild.* and configdev.*.
-
-2000-11-03  Philip Blundell  <pb at futuretv.com>
-
-	* Makefile.in (ETC_SUPPORT): Add configure.texi and associated info
-	files.
-
-2001-01-15  Jeff Johnston  <jjohnstn at redhat.com>
-
-	* COPYING.NEWLIB: Put into source repository.
-
-2001-01-15  Ben Elliston  <bje at redhat.com>
-
-	* configure.in (host_tools): Add sid.
-	Always configure cgen.
-	* Makefile.in (all-sid): New target.
-	(check-sid, clean-sid, install-sid): Likewise.
-
-2001-01-07  Andreas Jaeger  <aj at suse.de>
-
-	* config.sub, config.guess: Update from subversions.
-
-2000-12-12  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in: Disable language-specific target libraries for
-	languages that aren't enabled.
-
-2000-11-24  Nick Clifton  <nickc at redhat.com>
-
-	* configure.in (xscale-elf): Add target.
-	(xscale-coff): Add target.
-	(c4x, c5x, tic54x): Move after ARM targets.
-
-2000-11-23  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltcf-gcj.sh: Added file, required by 2000-11-18 merge.
-
-2000-11-20  Ian Lance Taylor  <ian at zembu.com>
-
-	* ltcf-cxx.sh: Added file, required by 2000-11-18 merge.
-
-2000-11-18  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in: Merge with GCC and libgcj.
-	(ALL_GCC_C, ALL_GCC_CXX): New macros.  Use them as dependencies of
-	configure-target-<library> when their configure scripts need the C
-	or C++ library to have already been built to work properly.
-	(do_proto_toplev): Set them to an empty string.
-
-2000-11-18  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (HOST_LIB_PATH, TARGET_LIB_PATH): New macros.
-	(REALLY_SET_LIB_PATH): Use them.
-
-2000-11-06  Christopher Faylor <cgf at cygnus.com>
-
-	* config.sub: Add support for Sun Chorus
-
-2000-11-02  Per Lundberg  <plundis at chaosdev.org>
-
-	* config.sub: Add support for the *-storm-chaos OS.
-
-2000-10-30  Stephane Carrez  <stcarrez at worldnet.fr>
-
-	* configure.in (noconfigdirs): Don't compile some
-	of the libraries for 68HC11 & 68hc12 targets.
-
-2000-09-30  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh, libtool.m4: Updated from libtool
-	multi-language branch, to work around Solaris' /bin/sh bug.  Rebuilt
-	all affected `configure' scripts.
-
-2000-09-25  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (DEVO_SUPPORT): Added gettext.m4, libtool.m4 and
-	ltcf-c.sh.
-
-2000-09-12  Philip Blundell  <philb at gnu.org>
-
-	* config.sub, config.guess: Update from subversions.
-
-2000-09-06  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (all-zlib): Added dummy target.
-
-	* ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh: Updated from libtool
-	multi-language branch.
-
-2000-09-05  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (all-bootstrap): Added all-texinfo and all-zlib.
-	(bootstrap*): Depend on all-bootstrap.
-
-2000-09-02  Alexandre Oliva  <aoliva at redhat.com>, DJ Delorie  <dj at redhat.com>
-
-	* configure.in (FLAGS_FOR_TARGET): Use -nostdinc even for Canadian
-	crosses, but add gcc/include to the header search path for them.
-
-2000-08-31  Alexandre Oliva  <aoliva at redhat.com>
-
-	* ltconfig, ltmain.sh: Updated from libtool multi-language branch.
-	* libtool.m4, ltcf-c.sh: Copied from libtool multi-language branch.
-	* gettext.m4: New file, extracted from aclocal.m4.
-
-2000-08-22  Alexandre Oliva  <aoliva at redhat.com>
-
-	* config-ml.in (CC, CXX): Avoid trailing whitespace.
-	(LD_LIBRARY_PATH, SHLIB_PATH): Adjust for multilibs and export to
-	sub-configures.
-
-2000-08-20  Doug Evans  <dje at casey.transmeta.com>
-
-	* Makefile.in (ALL_MODULES): Add all-cgen.
-	(CROSS_CHECK_MODULES,INSTALL_MODULES,CLEAN_MODULES): Similarily.
-	(all-cgen): New target.
-	(all-opcodes,all-sim): Depend on all-cgen.
-	* configure.in (host_tools): Add cgen.
-	Only configure cgen if --enable-cgen-maint.
-
-2000-08-17  Alexandre Oliva  <aoliva at redhat.com>
-
-	* config-ml.in (CC, CXX): Don't introduce a leading space.
-
-2000-08-16  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (libstdcxx_flags): Use
-	libstdc++-v3/src/libstdc++.INC.
-
-2000-08-15  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (libstdcxx_flags): Use libstdc++-v3/src/INCLUDES.
-
-2000-08-11  Jason Merrill  <jason at redhat.com>
-
-	* configure.in (CC_FOR_TARGET, CHILL_FOR_TARGET,
-	CXX_FOR_TARGET): Add -B$$r/gcc/ here.
-	(FLAGS_FOR_TARGET): Not here.
-	(CHILL_FOR_TARGET, CXX_FOR_TARGET): Don't check the list of languages.
-
-2000-08-07  DJ Delorie  <dj at redhat.com>
-
-	* configure.in (FLAGS_FOR_TARGET): invert test for xgcc, should mean
-	"if we're also building gcc, and it's a gcc that will run on the
-	build machine, we want to use its includes instead of the system's
-	default includes".
-
-2000-08-03  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (libstdcxx_flags): Don't use `"'.
-
-	* config-ml.in: Adjust multilib search paths to the
-	appropriate multilib tree.
-
-2000-08-02  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (CHILL_FOR_TARGET, CXX_FOR_TARGET): Convert blanks to
-	commas in $LANGUAGES.
-
-2000-08-01  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (qCXX_FOR_TARGET): Use echo instead of expr.
-
-2000-07-31  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (qCXX_FOR_TARGET): Quote `&' characters in
-	CXX_FOR_TARGET for sed.
-
-2000-07-30  Alexandre Oliva  <aoliva at redhat.com>
-
-	* configure.in (CC_FOR_TARGET, CHILL_FOR_TARGET, CXX_FOR_TARGET):
-	Do not override if already set in the environment or in configure.
-	Don't duplicate $(FLAGS_FOR_TARGET) if it already appears in them.
-	(FLAGS_FOR_TARGET): Don't use host directories on Canadian crosses.
-
-2000-07-27  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (FLAGS_FOR_TARGET): New macro.
-	(GCC_FOR_TARGET): Use it.
-	(CC_FOR_TARGET, CXX_FOR_TARGET, CHILL_FOR_TARGET): Now defined...
-	* configure.in: ... here.
-	(FLAGS_FOR_TARGET): Define.  Add ld build dir to -L path.
-	(libstdcxx_flags): Define and append to CXX_FOR_TARGET.
-
-2000-07-24  Alexandre Oliva  <aoliva at redhat.com>
-
-	* Makefile.in (configure-target-libf2c): Depend on $(ALL_GCC).
-	(configure-target-libchill, configure-target-libobjc): Likewise.
-
-	* configure.in: Use the same cache file for all target libs.
-	* config-ml.in: But different cache files per multilib variant.
-
-2000-07-23  Michael Sokolov  <msokolov at ivan.Harhan.ORG>
-
-	* configure (topsrcdir): Don't use dirname.
-
-2000-07-20  Jason Merrill  <jason at redhat.com>
-
-	* configure.in: Remove all references to libg++ and librx.
-
-	* configure, configure.in, Makefile.in: Unify gcc and binutils.
-
-2000-07-20  Hans-Peter Nilsson  <hp at axis.com>
-
-	* config.sub: Update to subversions version 2000-07-06.
-
-2000-07-12  Andrew Haley  <aph at cygnus.com>
-
-	* configure.in (host_makefile_frag): Use mh-ia64pic on IA-64 hosts.
-	(target_makefile_frag): Use mt-ia64pic on IA-64 targets.
-
-2000-07-07  Phil Edwards  <pme at sourceware.cygnus.com>
-
-	* symlink-tree:  Check number of arguments.
-
-2000-06-06  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* texinfo/texinfo.tex: Update to version 2000-05-28.15.
-
-2000-07-05  Jim Wilson  <wilson at cygnus.com>
-
-	* Makefile.in (CXX_FOR_TARGET): Add libstdc++ to the library
-	search path for a g++ extracted from the build tree.  This
-	will allow link tests run by configure scripts in
-	subdirectories to succeed.
-
-2000-07-01  Koundinya K  <kk at ddeorg.soft.net>
-
-	* ltconfig: Add support for mips-dde-sysv4.2MP
-
-2000-06-28  Corinna Vinschen  <vinschen at cygnus.com>
-
-	* ltconfig: Check for host_os beeing one of `cygwin', `mingw' or
-	`os2'. Force ac_cv_exeext to be ".exe" in that case.
-
-2000-06-19  Timothy Wall  <twall at cygnus.com>
-
-	* configure.in (noconfigdirs): Set noconfigdirs for tic54x target.
-	* config.sub: Add tic54x target.
-
-2000-06-07  Phillip Thomas  <pthomas at suse.de>
-
-	* README-maintainer-mode: New file: Contains notes on using
-	--enable-maintainer-mode with binutils.
-
-2000-05-29  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* texinfo/texinfo.tex: Update. Version from makeinfo 4.0.
-
-2000-05-30  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* config.sub: Import CVS version 1.167 Tue May 30 09:00:07 2000.
-	* config.guess: Import CVS version 1.148 Tue May 30 09:00:06 2000
-
-20000-05-21  H.J. Lu  (hjl at gnu.org)
-
-	* Makefile.in (CC_FOR_TARGET): Make sure as/ld in the gcc
-	directory are used if they exist. Make sure
-	$(build_tooldir)/include is searched for header files,
-	$(build_tooldir)/lib/ for library files.
-	(GCC_FOR_TARGET): Likewise.
-	(CXX_FOR_TARGET): Likewise.
-
-2000-05-18  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in (hppa*64*-*-*): Do build ld for this configuration.
-
-2000-05-17  Alexandre Oliva  <aoliva at cygnus.com>
-
-	* Makefile.in (configure-target-libiberty): Depend on
-	configure-target-newlib.
-
-2000-05-16  Alexandre Oliva  <aoliva at cygnus.com>
-
-	* configure.in, Makefile.in: Merge all libffi-related
-	configury stuff from the libgcj tree.
-
-2000-05-16  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	Thu Apr 27 11:01:48 2000 Andrew Cagney <cagney at b1.cygnus.com>:
-	* Makefile.in (do-tar-bz2, do-md5sum): Skip CVS directories.
-
-2000-05-16  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	Wed Apr 26 17:03:53 2000 Andrew Cagney <cagney at b1.cygnus.com>:
-	* Makefile.in (do-djunpack): New target. Update djunpack.bat with
-	current version information.  Add to proto-toplev directory.
-	(gdb-taz): Build do-djunpack.
-
-2000-05-15  David Edelsohn  <edelsohn at gnu.org>
-
-	* configure.in: Special case powerpc*-*-aix* target_makefile_frag.
-
-2000-05-13 Alexandre Oliva  <oliva at lsd.ic.unicamp.br>
-
-	* ltmain.sh: Preserve in relink_command any environment
-	variables that may affect the linker behavior.
-
-2000-05-12  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub (basic_machine): Recognize hppa64 as a valid cpu type.
-
-2000-05-10  Jim Wilson  <wilson at cygnus.com>
-
-	* configure.in (ia64*-*-elf*): Add gdb and friends to noconfigdirs.
-
-2000-05-08  Eli Zaretskii  <eliz at is.elta.co.il>
-
-	* djunpack.bat: Change the Sed script to replace @V@ in fnchange.lst
-	with the version name.
-
-2000-05-01  Benjamin Kosnik  <bkoz at cygnus.com>
-
-	* config.if: Tweak.
-
-2000-04-23  Eli Zaretskii  <eliz at is.elta.co.il>
-
-	* djunpack.bat: New file.
-
-2000-04-19  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (taz, gdb-taz, gas.tar.bz2, binutils.tar.bz2,
-	gas+binutils.tar.bz2, libg++.tar.bz2, gnats.tar.bz2, gdb.tar.bz2,
-	dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, insight.tar.bz2,
-	insight+dejagnu.tar.bz2, newlib.tar.bz2): Pass MD5PROG to sub-make.
-
-2000-04-16  Dave Pitts  <dpitts at cozx.com>
-
-	* config.sub (case $basic_machine): Change default for "ibm-*"
-	to "openedition".
-
-2000-04-12  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (gdb-taz): New target.  GDB specific archive.
-	(do-md5sum): New target.
-	(MD5PROG): Define.
-	(PACKAGE): Default to TOOL.
-	(VER): Default to a shell script.
-	(taz): Rewrite target.  Move real work to do-proto-toplev.  Include
-	md5 checksum generation.
-	(do-proto-toplev): New target. Create $(PACKAGE)-$(VER) link.
-	(do-tar-bz2): Delete creation of $(PACKAGE)-$(VER) link.
-	(gdb.tar.bz2, dejagnu.tar.bz2, gdb+dejagnu.tar.bz2,
-	insight.tar.bz2): Use gdb-taz to create archive.
-
-2000-04-07  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* configure (warn_cflags): Delete.
-
-2000-04-05  Benjamin Kosnik  <bkoz at cygnus.com>
-	    Martin v. Loewis  <martin at loewis.home.cs.tu-berlin.de>
-
-	* configure.in (enable_libstdcxx_v3): Add.
-	(target_libs): Add bits here to switch between libstdc++-v2 and
-	libstdc++-v3.
-	* config.if: And this file too.
-	* Makefile.in: Add libstdc++-v3 targets.
-
-2000-04-05  Michael Meissner  <meissner at redhat.com>
-
-	* config.sub (d30v): Add d30v as a basic machine type.
-
-2000-03-29  Jason Merrill  <jason at casey.cygnus.com>
-
-	* configure.in: -linux-gnu*, not -linux-gnu.
-
-2000-03-03  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (taz): Set PACKAGE to TOOL when not defined.
-	(do-tar-bz2): Replace TOOL with PACKAGE.
-	(gdb.tar.bz2): Remove GDBTK from GDB package.
-	(gdb+dejagnu.tar.bz2, insight.tar.bz2, insight+dejagnu.tar.bz2,
-	dejagnu.tar.bz2): New packages.
-
-2000-02-27  Andreas Jaeger  <aj at suse.de>
-
-	* configure.in: Add entry for mips*-*-linux*, move catch all
-	*-*-*linux* entry below this one.
-
-2000-02-27  Ian Lance Taylor  <ian at zembu.com>
-
-	* ltconfig, ltmain.sh: Update to libtool 1.3.4.
-
-2000-02-24  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub: Support an OS of "wince".
-
-2000-02-24  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* config.guess, config.sub: Updated to match config's 2000-02-15
-	version.
-
-2000-02-23  Linas Vepstas <linas at linas.org>
-
-	* config.sub: Add support for Linux/IBM 370.
-	* configure.in: Likewise.
-
-2000-02-22  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in: Add mips-pe, sh-pe and arm-wince-pe targets.
-
-2000-02-20  Christopher Faylor <cgf at cygnus.com>
-
-	* config.guess: Guess "cygwin" rather than "cygwin32".
-
-2000-02-16  Kaveh R. Ghazi  <ghazi at caip.rutgers.edu>
-
-	* configure (gcc_version): When setting, narrow search to
-	lines containing `version_string'.
-
-2000-02-15  Denis Chertykov  <denisc at overta.ru>
-
-	* config.sub: Add support for avr target.
-
-2000-02-01  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* config.sub: Add mmix-knuth-mmixware.
-
-2000-01-27  Christopher Faylor <cgf at redhat.com>
-
-	* Makefile.in (CC_FOR_TARGET): Add new winsup directory
-	structure stuff to -L library search.
-	(CXX_FOR_TARGET): Ditto.
-	(CROSS_CHECK_MODULES): Fix spelling mistake.
-
-2000-01-24  Mark Mitchell  <mark at codesourcery.com>
-
-	* Makefile.in (CXX_FOR_TARGET): Use g++, not xgcc, to invoke
-	the C++ compiler.
-
-2000-01-12  Richard Henderson  <rth at cygnus.com>
-
-	* configure.in: Don't build some bits for beos.
-
-2000-01-12  Joel Sherrill (joel at OARcorp.com)
-
-	* Makefile.in (CC_FOR_TARGET): Use newlib libraries as well
-	as include files.
-
-2000-01-06  Geoff Keating  <geoffk at cygnus.com>
-
-	* configure.in: Use mt-aix43 to handle *_TARGET defs,
-	not mh-aix43.
-
-1999-12-14  Richard Henderson  <rth at cygnus.com>
-
-	* config.guess (alpha-osf, alpha-linux): Detect ev67.
-	* config.sub: Accept alphaev[78], alphaev8.
-
-1999-12-03  Alexandre Oliva  <oliva at lsd.ic.unicamp.br>
-
-	* config.guess, config.sub: Update from autoconf.
-
-Tue Nov 23 00:57:41 1999  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* config-ml.in (sparc*-*-*): Disable sparcv9 support if the
-	necessary libraries are missing.
-
-1999-10-25  Andreas Schwab  <schwab at suse.de>
-
-	* configure: Fix quoting inside arguments of eval.
-
-1999-10-21  Nick Clifton  <nickc at cygnus.com>
-
-	* config-ml.in: Allow suppression of some ARM multilibs.
-
-Tue Sep  7 23:33:57 1999  Linas Vepstas  <linas at linas.org>
-
-	* config.guess: Add OS/390 match pattern.
-	* config.sub: Add mvs, openedition targets.
-	* configure.in (i370-ibm-opened*): New.
-
-1999-09-04  Steve Chamberlain  <sac at pobox.com>
-
-	* config.sub: Add support for configuring for pj.
-
-1999-08-31  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub (maybe_os): Add support for configuring for fr30.
-
-1999-08-25  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in: Do not configure or build ld for AIX
-	platforms.  ld is known to be broken on these platforms.
-
-Wed Aug 25 01:12:25 1999  Rainer Orth  <ro at TechFak.Uni-Bielefeld.DE>
-
-	* config-ml.in: Pass compiler flag corresponding to multidirs to
-	subdir configures.
-
-1999-08-09  Ian Lance Taylor  <ian at zembu.com>
-
-	* Makefile.in (LDFLAGS): Define.
-
-1999-08-08  Mumit Khan  <khan at xraylith.wisc.edu>
-
-	* configure.in (i[3456]-*-mingw32*): Don't put gprof in
-	noconfigdirs.
-	(*-*-cygwin*): Likewise.
-
-1999-08-08  Ian Lance Taylor  <ian at zembu.com>
-
-	* mkdep: New file.
-	* Makefile.in (GAS_SUPPORT_DIRS): Add mkdep.
-	(BINUTILS_SUPPORT_DIRS): Add mkdep.
-
-	From Eli Zaretskii <eliz at is.elta.co.il>:
-	* configure (tmpfile): Change cONf$$ to cNf$$ to avoid an overly
-	long file name when using DJGPP on MS-DOS.
-
-Wed Aug  4 02:07:14 1999  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub (vxworks case): Use os=-vxworks, not os=vxworks.
-
-1999-07-30  Alan Modra  <alan at spri.levels.unisa.edu.au>
-
-	* Makefile.in (check-target-libio): Remove all-target-libstdc++
-	dependency as this causes "make check" to globally "make all"
-
-Tue Jun 22 23:45:18 1999  Tom Tromey  <tromey at cygnus.com>
-
-	* configure.in (target_libs): Added target-zlib.
-	* Makefile.in (ALL_TARGET_MODULES): Added zlib.
-	(CONFIGURE_TARGET_MODULES): Likewise.
-	(CHECK_TARGET_MODULES): Likewise.
-	(INSTALL_TARGET_MODULES): Likewise.
-	(CLEAN_TARGET_MODULES): Likewise.
-	(configure-target-zlib): New target.
-	(all-target-zlib): Likewise.
-	(all-target-libjava): Depend on all-target-zlib.
-	(configure-target-libjava): Depend on configure-target-zlib.
-
-	* Makefile.in (configure-target-libjava): Depend on
-	configure-target-newlib.
-	(configure-target-boehm-gc): New target.
-	(configure-target-qthreads): New target.
-
-	* configure.in (target_libs): Added target-qthreads.
-	* Makefile.in (ALL_TARGET_MODULES): Added qthreads.
-	(CONFIGURE_TARGET_MODULES): Likewise.
-	(CHECK_TARGET_MODULES): Likewise.
-	(INSTALL_TARGET_MODULES): Likewise.
-	(CLEAN_TARGET_MODULES): Likewise.
-	(all-target-qthreads): New target.
-	(configure-target-libjava): Depend on configure-target-qthreads.
-	(all-target-libjava): Depend on all-target-qthreads.
-
-	* Makefile.in (ALL_TARGET_MODULES): Added libjava, boehm-gc.
-	(CONFIGURE_TARGET_MODULES): Likewise.
-	(CHECK_TARGET_MODULES): Likewise.
-	(INSTALL_TARGET_MODULES): Likewise.
-	(CLEAN_TARGET_MODULES): Likewise.
-	(all-target-libjava): New target.
-	(all-target-boehm-gc): Likewise.
-	* configure.in (target_libs): Added libjava, boehm-gc.
-
-1999-07-22  Ian Lance Taylor  <ian at zembu.com>
-
-	* Makefile.in (binutils.tar.bz2): Don't pass makeall.bat and
-	configure.bat in SUPPORT_FILES.
-	(gas+binutils.tar.bz2): Likewise.
-
-	* makeall.bat: Remove; obsolete.
-
-1999-07-21  Ian Lance Taylor  <ian at zembu.com>
-
-	From Mark Elbrecht:
-	* configure.bat: Remove; obsolete.
-
-1999-07-11  Ian Lance Taylor  <ian at zembu.com>
-
-	* configure: Add -W -Wall to the default CFLAGS when compiling with
-	gcc.
-
-Thu Jul  8 12:32:23 1999  John David Anglin <dave at hiauly1.hia.nrc.ca>
-
-	* configure.in: Build ld, binutils & gas for hppa*-*-linux-gnu*.
-
-1999-06-30  Mark Mitchell  <mark at codesourcery.com>
-
-	* configure.in: Build ld on IRIX6.
-
-1999-06-12  Ian Lance Taylor  <ian at zembu.com>
-
-	* Makefile.in: Change distribution targets to use bzip2 instead of
-	gzip.
-	(TEXINFO_SUPPORT): Set to just texinfo/texinfo.tex.
-	(taz): Don't use texinfo/gpl.texinfo or texinfo/lgpl.texinfo.
-
-1999-06-04  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub: Add mcore target.
-
-1999-05-30  Cort Dougan  <cort at cs.nmt.edu>
-
-	* config.guess (ppc-*-linux-gnu): Also use ld emul elf32ppclinux.
-
-1999-05-25  H.J. Lu  (hjl at gnu.org)
-
-	* config.guess (dummy): Changed to $dummy.
-
-1999-05-24  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub: Tidied up case statements.
-
-1999-05-22  Ben Elliston  <bje at cygnus.com>
-
-	* config.guess: Handle NEC UX/4800. Contributed by Jiro Takabatake
-	<jiro at din.or.jp>.
-
-	* config.guess: Merge with FSF version. Future changes will be
-	more accurately recorded in this ChangeLog.
-	* config.sub: Likewise.
-
-1999-05-20   Stephen L Moshier  <moshier at world.std.com>
-
-	 * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
-
-1999-04-30  Tom Tromey  <tromey at cygnus.com>
-
-	* ltmain.sh: [mode link] Always use CC given by ltconfig.
-
-1999-04-23  Tom Tromey  <tromey at cygnus.com>
-
-	* ltconfig, ltmain.sh: Update to libtool 1.2f.
-
-1999-04-20  Drew Moseley  <dmoseley at cygnus.com>
-
-	* configure.in (noconfigdirs): Don't build libstub for arm-elf targets.
-	(noconfigdirs): Don't build any bsp stuff for for arm-oabi targets.
-	Bad merge removed these two changes.
-
-Tue Apr 13 22:50:54 1999  Donn Terry (donn at interix.com)
-			  Martin Heller (Ing.-Buero_Heller at t-online.de)
-
-	* config.guess (interix Alpha): Add.
-
-1999-04-11  Richard Henderson  <rth at cygnus.com>
-
-	* configure.in (i?86-*-beos*): Do config gperf; don't config
-	gdb, newlib, or libgloss.
-
-1999-04-11  Alexandre Oliva  <oliva at dcc.unicamp.br>
-
-	* config-ml.in: On mips*-*-*, if multidirs contains mabi=64, try to
-	link a trivial program with -mabi=64.  If it fails, remove mabi=64
-	from multidirs.
-
-1999-04-10  Philipp Thomas  (kthomas at gwdg.de)
-
-	* config.sub: Set basic_machine to i586 when target_alias = k6-*.
-
-1999-04-08  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub: Add support for mcore targets.
-
-1999-04-07  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (d30v-*): Use config/mt-d30v as makefile fragment,
-	not mt-ospace, in order to shut up assembler warning about using
-	symbols that are named the same as registers.
-
-1999-04-07  Drew Moseley  <dmoseley at cygnus.com>
-
-	* Makefile.in (all-target-cygmon): Added all-target-bsp to the
-	dependency list for all-target-cygmon.
-
-1999-04-05  Doug Evans  <devans at casey.cygnus.com>
-
-	* config-ml.in: Check $host, not $target, for selective multilibs.
-	(arm-*-*): Allow disabling of biendian, h/w fp, 26 bit apcs,
-	thumb interworking, and underscore prefix multilibs.
-
-1999-04-04  Ian Lance Taylor  <ian at zembu.com>
-
-	* missing: Update to version from current automake.
-
-Fri Apr  2 15:11:32 1999  H.J. Lu  (hjl at gnu.org)
-
-	* configure (gxx_include_dir): Removed.
-
-	* configure.in (gxx_include_dir): Handle it.
-	* Makefile.in: Likewise.
-
-1999-03-29  Gavin Romig-Koch  <gavin at cygnus.com>
-
-	* config.sub (mips64vr4111,mips64vr4111el) Add.
-
-1999-03-21  Ben Elliston  <bje at cygnus.com>
-
-	* config.guess: Correct typo for detecting ELF on FreeBSD.
-
-Thu Mar 18 00:17:50 1999  Mark Elbrecht <snowball3 at usa.net>
-
-	* configure.in (pc-msdosdjgpp): Set host_makefile_frag to
-	config/mh-djgpp.
-
-Thu Mar 11 18:37:23 1999  Drew Moseley  <dmoseley at cygnus.com>
-
-	* Makefile.in (all-target-bsp): Added all-gcc all-binutils and
-	all-target-newlib to dependency list for all-target-bsp.
-
-Thu Mar 11 01:19:31 1999  Mumit Khan  <khan at xraylith.wisc.edu>
-
-	* config.sub: Add i386-uwin support.
-	* config.guess: Likewise.
-
-Thu Mar 11 01:07:55 1999  Franz Sirl <Franz.Sirl-kernel at lauterbach.com>
-
-	* configure.in: cleanup, add mh-*pic handling for arm, special
-	case powerpc*-*-aix*
-
-Wed Mar 10 18:35:07 1999  Jeff Johnston  <jjohnstn at cygnus.com>
-
-	* configure.in (noconfigdirs): Removed target-libgloss so libnosys.a
-	can be built.
-
-Wed Mar 10 17:39:09 1999  Drew Moseley  <dmoseley at cygnus.com>
-
-	* configure.in: Added bsp support to arm-*-coff and arm-*-elf
-	targets.
-
-1999-03-02  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub: Rename CYGNUS LOCAL to EGCS LOCAL
-
-1999-02-28  Geoffrey Noer  <noer at cygnus.com>
-
-	* config.sub: Check for "cygwin*" rather than "cygwin32*"
-
-1999-02-24  Nick Clifton  <nickc at cygnus.com>
-
-	* config.sub: Fix typo in arm recognition.
-
-1999-02-24  Drew Moseley  <dmoseley at cygnus.com>
-
-	* configure.in (noconfigdirs): Changed target_configdirs to
-	include target-bsp only for m68k-*-elf* and m68k-*-coff*
-	rather than m68k-*-* since it is not known to work on
-	m68k-aout. Ditto for arm-*-*oabi.
-
-1999-02-24  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* configure.in (*-*-windows*): Remove, no longer used.
-
-1999-02-19  Ben Elliston <bje at cygnus.com>
-
-	* config.guess: Automatically recognise ELF on FreeBSD. From Niall
-	Smart and improved by Andrew Cagney.
-
-1999-02-18  Marc Espie <espie at cvs.openbsd.org>
-
-	* config.guess: Recognize openbsd-*-hppa.
-
-1999-02-17  H.J. Lu  (hjl at gnu.org)
-
-	* Makefile.in (REALLY_SET_LIB_PATH): Append $$$(RPATH_ENVVAR)
-	only if it is not empty.
-
-1999-02-17  Nick Clifton  <nickc at cygnus.com>
-
-	Patch from: Scott Bambrough <scottb at corelcomputer.com>
-
-	* config.guess: Modified to recognize uname's armv* syntax.
-
-	* config.sub: Modified to recognize uname's armv* syntax.
-
-1999-02-17  Mark Salter  <msalter at cygnus.com>
-
-	* configure.in: Added target-bsp for sparclite.
-
-1999-02-08  Richard Henderson  <rth at cygnus.com>
-
-	* config.sub: Recognize alphapca5[67] and up to alphaev8.
-
-1999-02-08  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in: Add support for strongarm port.
-	* config.sub: Add support for strongarm target.
-
-1999-02-07  Mumit Khan  <khan at xraylith.wisc.edu>
-
-	* configure.in (*-*-cygwin32*): Use config/mh-cygwin instead of
-	the old name config/mh-cygwin32.
-	Enable texinfo.
-
-1999-02-04  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Do build ld for ix86 Solaris.
-
-1999-02-02  Jim Wilson  <wilson at cygnus.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS):  Set AR to $AR instead of
-	$AR_FOR_TARGET.  Likewise for RANLIB.
-
-1999-02-02  Catherine Moore  <clm at cygnus.com>
-
-	* config.sub (oabi):  Recognize.
-	* configure.in (arm-*-oabi):  Handle.
-
-1999-01-30  Robert Lipe  (robertlipe at usa.net)
-
-	* config.guess: Improve detection of i686 on UnixWare 7.
-
-1999-01-30  Mumit Khan  <khan at xraylith.wisc.edu>
-
-	* config.guess: Add support for i386-pc-interix.
-	* config.sub: Likewise.
-	* configure.in: Likewise.
-
-1999-01-18  Christopher Faylor <cgf at cygnus.com>
-
-	* Makefile.in: Remove unneeded all-target-libio from
-	from all-target-winsup target since it is now unneeded.
-	Add all-target-libtermcap in its place since it is now
-	needed.
-
-1998-12-30  Christopher Faylor <cgf at cygnus.com>
-
-	* configure.in: makefile stub for cygwin target is probably
-	unnecessary.  Remove it for now.
-
-1998-12-30  Christopher Faylor <cgf at cygnus.com>
-
-	* configure.in: libtermcap.a should be built when cygwin is the
-	target as well as the host.
-	* config.guess: Allow mixed case in cygwin uname output.
-	* Makefile.in: Add libtermcap target.
-
-1998-12-23  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub: Clean up handling of hppa2.0.
-
-1998-12-22  Rodney Brown  (rodneybrown at pmsc.com)
-
-	* config.guess: Use C code to identify more HP machines.
-
-Thu Dec 17 01:22:30 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub: Handle hppa2.0.
-
-Tue Dec 15 17:02:58 1998  Bob Manson  <manson at charmed.cygnus.com>
-
-	* configure.in: Add cygmon for x86-coff and x86-elf. Configure
-	cygmon for all sparclite targets, regardless of object format.
-
-1998-12-15  Mark Salter  <msalter at cygnus.com>
-
-	* configure.in: Added target-bsp for several target architectures.
-
-	* Makefile.in: Added rules for bsp.
-
-Fri Dec  4 01:34:02 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess: Improve detection of hppa2.0 processors.
-
-Fri Dec  4 01:33:05 1998  Niall Smart <nialls at euristix.ie>
-
-	* config.guess: Recognize FreeBSD using ELF automatically.
-
-1998-11-26  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure (skip-this-dir): Add handling for new shell script, which
-	might be created by a sub-directory's configure to indicate, this particular
-	directory is "unwanted".
-	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): Likewise.
-
-Wed Nov 18 18:28:45 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* ltconfig: import from libtool, after changing libtool to
-	account for the cygwin name change.
-
-Wed Nov 18 18:09:14 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* Makefile.in: CC_FOR_TARGET and CXX_FOR_TARGET should also
-	include newlib/libc/sys/cygwin and newlib/libc/sys/cygwin32.
-
-Wed Nov 18 20:13:29 1998  Christopher Faylor <cgf at cygnus.com>
-
-	* configure.in: Add libtermcap to list of cygwin dependencies.
-
-1998-11-17  Geoffrey Noer  <noer at cygnus.com>
-
-	* Makefile.in: modify CC_FOR_TARGET and CXX_FOR_TARGET so that
-	they include winsup/include when it's a cygwin target.
-
-1998-11-12  Tom Tromey  <tromey at cygnus.com>
-
-	* configure.in (host_tools): Added zip.
-	* Makefile.in (all-target-libjava): Depend on all-zip.
-	(all-zip): New target.
-	(ALL_MODULES): Added all-zip.
-	(NATIVE_CHECK_MODULES): Added check-zip.
-	(INSTALL_MODULES): Added install-zip.
-	(CLEAN_MODULES): Added clean-zip.
-
-1998-11-12  Geoffrey Noer  <noer at cygnus.com>
-
-	* Makefile.in: lose "32" from comment about cygwin.
-
-1998-11-05  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in: Use -Os to build target libraries for the fr30.
-
-1998-11-04  Dave Brolley  <brolley at cygnus.com>
-
-	* config.sub: Add fr30.
-
-1998-11-02  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: drop "32" from config/mh-cygwin32.  Check
-	cygwin* instead of cygwin32*.
-	* config.sub: Check cygwin* instead of cygwin32*.
-
-1998-10-22  Robert Lipe  <robertl at dgii.com>
-
-	* config.guess: Match any version of Unixware7.
-
-1998-10-20  Syd Polk  <spolk at cygnus.com>
-
-	* Makefile.in configure.in: Add the ability to use tcl8.1 and tk8.1
-	if desired.
-
-1998-10-18  Jeffrey A Law  (law at cygnus.com)
-
-	* config.if (cxx_interface, libstdcxx_interface): Do not try to set
-	these if the appropriate directories and files to not exist.
-
-1998-10-14  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (DEVO_SUPPORT): Add config.if.
-
-1998-10-13  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure: Add pattern to replace "build_tooldir"'s
-	definition in the generated Makefile with "tooldir"'s
-	actual value.
-
-Tue Oct 13 09:17:06 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub: Bring back lost sparcv9.
-
-	* Makefile.in (all-snvavigator): Remove all-flexlm dependency.
-
-Mon Oct 12 12:09:44 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (CHILL_FOR_TARGET): Mirror recent changes to
-	CC_FOR_TARGET and friends.
-
-Mon Oct 12 12:09:30 1998  Alexandre Oliva  <oliva at dcc.unicamp.br>
-
-	* Makefile.in (build_tooldir): New variable, same as tooldir.
-	(CC_FOR_TARGET, GCC_FOR_TARGET, CXX_FOR_TARGET): Add
-	-B$(build_tooldir)/bin/.
-	(BASE_FLAGS_TO_PASS): Pass build_tooldir down.
-
-Wed Sep 30 22:20:50 1998  Robert Lipe  <robertl at dgii.com>
-
-	* config.sub: Add support for i[34567]86-pc-udk.
-	* configure.in: Likewise.
-
-Wed Sep 30 19:23:48 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* Makefile.in: add bzip2 package building bits for user
-	tools module
-	* configure.in: ditto
-
-Wed Sep 30 03:00:05 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (TARGET_CONFIGDIRS): Add libobjc.
-	(ALL_TARGET_MODULES): Add all-target-libobjc.
-	(CONFIGURE_TARGET_MODULES, CHECK_TARGET_MODULES): Similarly.
-	(INSTALL_TARGET_MODULES, CLEAN_TARGET_MODULES): Similarly.
-	(all-target-libchill): Add dependencies.
-	* configure.in (target_libs): Add libchill.
-
-1998-09-30  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure.in (target_subdir): Remove duplicate line.
-
-Tue Sep 29 22:45:41 1998  Felix Lee  <flee at cygnus.com>
-
-	* Makefile.in (all-automake): fix dependencies.
-
-Mon Sep 28 04:04:27 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in: Minor cleanups for building in the $(target_alias)
-	subdir.
-
-1998-09-22  Jim Wilson  <wilson at cygnus.com>
-
-	* Makefile.in (bootstrap): Set r and s before make all.  Use
-	BASE_FLAGS_TO_PASS in make all.
-	(cross): Likewise.
-
-1998-09-20  Mark Mitchell  <mark at markmitchell.com>
-
-	* Makefile.in (bootstrap): Pass TARGET_FLAGS_TO_PASS to `make all'.
-
-Sun Sep 20 00:13:02 1998  Richard Henderson  <rth at cygnus.com>
-
-	* config.sub: Fix typo in last change.
-
-1998-09-19  Michael Hayes  <m.hayes at elec.canterbury.ac.nz>
-
-	* config.sub: Add support for C4x target.
-	* configure.in: Likewise.
-
-1998-09-13  David S. Miller  <davem at pierdol.cobaltmicro.com>
-
-	* config.sub: Recognize sparcv9 just like sparc64.
-
-Wed Sep  9 15:44:52 1998  Robert Lipe  <robertl at dgii.com>
-
-	* config.guess: Match "Pent II" or "PentII" for OpenServer.
-
-Tue Sep  8 01:18:39 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess: Correctly identify Pentium II sco boxes.
-
-	* config.guess: Fix "tr" code.  From Weiwen Liu.
-
-Sat Sep  5 13:56:52 1998  John Hughes  <john at Calva.COM>
-
-	* configure.in: Do not assume x86-svr4 or x86-unixware can handle
-	stabs.
-
-Sat Sep  5 02:12:02 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (TARGET_CONFIGDIRS): Add libchill.
-	(ALL_TARGET_MODULES): Add all-target-libchill.
-	(CONFIGURE_TARGET_MODULES, CHECK_TARGET_MODULES): Similarly.
-	(INSTALL_TARGET_MODULES, CLEAN_TARGET_MODULES): Similarly.
-	(all-target-libchill): Add dependencies.
-	* configure.in (target_libs): Add libchill.
-
-Sun Aug 30 22:27:02 1998  Lutz Wohlrab <lutz.wohlrab at informatik.tu-chemnitz.de>
-
-	* config.guess: Avoid assumptions about "tr" behaves when
-	LANG is set to something other than English.
-
-Sun Aug 30 22:14:44 1998  H.J. Lu  (hjl at gnu.org)
-
-	* configure (gxx_include_dir): Changed to
-	'${prefix}/include/g++'-${libstdcxx_interface}.
-
-	* config.if: New to determine the interfaces.
-
-Sun Aug 30 21:15:19 1998  Mark Klein (mklein at dis.com)
-
-	* config.guess: Detect and handle MPE/IX.
-	* config.sub: Deal with MPE/IX.
-
-Sat Aug 29 14:32:55 1998  David Edelsohn  <edelsohn at mhpcc.edu>
-
-	* configure.in: Use mh-aix43.
-
-1998-07-29  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure: Fix --without/--disable cases for gxx-include-dir.
-
-Fri Aug 28 12:28:26 1998  Per Bothner  <bothner at cygnus.com>
-
-	* mdata-sh:  Imported.  Needed for automake support.
-
-Thu Aug 13 12:49:29 1998  H.J. Lu  <hjl at gnu.org>
-
-	* Makefile.in (taz): Try "chmod -R og=u ." before
-	"chmod og=u `find . -print`".
-
-Fri Jul 31 09:38:33 1998  Catherine Moore  <clm at cygnus.com>
-
-	* configure.in: Add arm-elf and thumb-elf support.
-
-Mon Jul 27 16:23:58 1998  Doug Evans  <devans at canuck.cygnus.com>
-
-	* Makefile.in: Undo previous patch.
-
-Fri Jul 24 19:55:24 1998  Doug Evans  <devans at canuck.cygnus.com>
-
-	* Makefile.in (INSTALL_TARGET): Move EXTRA_TARGET_HOST_INSTALL_MODULES
-	to here ...
-	(install-no-fixedincludes): and here
-	(INSTALL_MODULES): ... from here.
-
-Fri Jul 24 17:01:42 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Merge with FSF.
-
-	* config.guess: Merge with FSF.
-
-Fri Jul 24 08:43:36 1998  Doug Evans  <devans at canuck.cygnus.com>
-
-	* configure (extraconfigdirs): New variable.
-	(SUBDIRS): Add extraconfigdirs and recurse on them too.
-	* Makefile.in (all): Move higher in file.
-	(EXTRA_TARGET_HOST_ALL_MODULES): New variable.
-	(EXTRA_TARGET_HOST_{INSTALL,CHECK}_MODULES): New variables.
-	(ALL_MODULES): Add EXTRA_TARGET_HOST_ALL_MODULES.
-	(CROSS_CHECK_MODULES): Add EXTRA_TARGET_HOST_CHECK_MODULES.
-	(INSTALL_MODULES): Add EXTRA_TARGET_HOST_INSTALL_MODULES.
-
-1998-07-23  Brendan Kehoe  <brendan at cygnus.com>
-
-	* Makefile.in (all-target-libjava): Depend on all-gcc and
-	all-target-newlib.
-	(configure-target-libjava): Depend on $(ALL_GCC).
-
-Sat Jul 18 14:32:43 CDT 1998  Robert Lipe  <robertl at dgii.com>
-
-	* config.guess: (*-pc-sco3.2v5) Add detection for Pentium II.
-	(*-pc-unixware7) Add detection for Pentium II, Pentium Pro.
-
-Fri Jul 17 13:30:18 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ylwrap: Change absolute path checks to check for DOS style path
-	names.
-
-	* ylwrap: Don't use a full path name if the source file is in the
-	same directory.  From hjl at lucon.org (H.J. Lu).
-
-	* config-ml.in: Default to being verbose, to match Feb 18 change to
-	configure.
-
-Thu Jul 16 12:29:51 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	Brought over from egcs:
-
-	Sat Jun 27 22:46:32 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in (target_subdir): Set to ${target_alias} instead
-	of "libraries".
-
-	Mon Sep  1 16:45:44 1997  Jim Wilson  <wilson at cygnus.com>
-
-	* configure.in (target_subdir): Set to libraries if enable_multilib.
-
-Wed Jul 15 01:00:54 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): If there are any
-	multilibs, force reconfiguration the first time we create
-	multilib.out in a subdirectory, in case TARGET_SUBDIR is `.'.
-
-Tue Jul 14 23:41:03 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Strip any --no option from CONFIG_ARGUMENTS, to
-	avoid confusion with --no-recursion.
-
-Tue Jul 14 15:37:41 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: Win32 hosts shouldn't use install -x
-	* install-sh: remove -x option, and special .exe-handling
-	hack.
-
-Tue Jul 14 15:28:41 1998  Richard Henderson  <rth at cygnus.com>
-
-	* config.guess: Recognize i586-pc-beos.
-	* configure.in: Don't build some bits for beos.
-
-Tue Jul 14 13:22:18 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: If CC is set but CFLAGS is not, and CC is gcc, make
-	CFLAGS default to -O2.
-
-	* ltmain.sh: Add some hacks to make SunOS --enable-shared work
-	when using GNU ld.
-
-Fri Jul 10 13:18:23 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltmain.sh: Correct install when using a different shell.
-
-Tue Jul  7 15:24:38 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Update to libtool 1.2b.
-
-Thu Jul  2 13:57:36 1998  Klaus Kaempf  <kkaempf at rmi.de>
-
-	* makefile.vms: Update to build binutils/makefile.vms.  Add install
-	target.
-
-Wed Jul  1 16:45:21 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig: Update to correct AIX handling.
-
-Sat Jun 27 22:46:32 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Add TARGET_SUBDIR.
-
-	* configure.in (target_subdir): Set to ${target_alias} instead
-	of "libraries".
-
-1998-06-26  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Add gcc_version_trigger.
-	(Makefile): Depend on $(gcc_version_trigger).
-
-	* configure (gcc_version): Change default initializer to empty
-	string.
-	(gcc_version_trigger): New variable; pass this variable down
-	to subdir configures to enable them checking gcc's version
-	themselves. Emit make macros for both gcc_version vars.
-	(topsrcdir): Initialize reliably.
-	(recursion line): Remove --with-gcc-version=${gcc_version}.
-
-1998-06-24  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure (enable_version_specific_runtime_libs): Implement new flag
-	--enable-version-specific-runtime-libs which installs C++ runtime stuff
-	in $(libsubdir); emit definition in each generated Makefile.
-	(gxx_include_dir): Initialize depending on
-	$enable_version_specific_runtime_libs.
-
-1998-06-24  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure (gcc_version): Initialize properly depending on
-	how and where configure is started.
-	(recursion line): Pass a --with-gcc-version=${gcc_version}
-	to configures in subdirs.
-
-Wed Jun 24 16:01:59 1998  John Metzler  <jmetzler at cygnus.com>
-
-	* configure.in (noconfigdirs): Add configure pattern for mips tx39
-	cygmon
-
-Tue Jun 23 22:42:32 1998  Mark Alexander  <marka at cygnus.com>
-
-	* configure.in: Add cygmon and libstub support for mn10200.
-
-1998-06-19  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure (gcc_version): Add new variable describing the
-	particular gcc version we're building.
-	* Makefile.in (libsubdir): Add new macro for the directory
-	in which the compiler finds executables, libraries, etc.
-	(BASE_FLAGS_TO_PASS): Pass down gcc_version, target_alias
-	and libsubdir.
-
-Fri Jun 19 02:36:59 1998  Alexandre Oliva <oliva at dcc.unicamp.br>
-
-	* Makefile.in (local-clean): Remove *.log.
-	(warning.log): Built with warn_summary from build.log.
-	(mail-report.log): Run test_summary.
-	(mail-report-with-warnings.log): Run test_summary including
-	warning.log in the report.
-
-Thu Jun 18 11:26:03 1998  Robert Lipe  <robertl at dgii.com>
-
-	* config.guess: Detection of Pentium II for *-sco-3.2v5*.
-
-Mon Jun 15 14:53:54 1998  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (grep): Grep no longer depends on libiberty.
-
-Fri Jun 12 14:03:34 1998  Syd Polk  <spolk at cygnus.com>
-
-	* Makefile.in: all-snavigator needs all-libgui.
-
-Thu Jun 11 19:43:47 1998  Mark Alexander  <marka at cygnus.com>
-
-	* configure.in: Add cygmon and libstub support for mn10300.
-
-Wed Jun 10 11:19:47 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* missing: Update to version from automake 1.3.
-
-	* ltmain.sh: On installation, don't get confused if the same name
-	appears more than once in the list of library names.
-
-Wed Jun  3 14:51:42 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Accept m68060 and m5200 as CPU names.
-
-Mon Jun  1 17:25:16 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Use && rather than using -a in test, because odd
-	strings can confuse test.
-	* configure.in: Likewise.
-
-Thu May 28 19:31:13 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Bring in Visual C++ support.
-
-Sat May 23 23:44:13 1998  Alexandre Oliva <oliva at dcc.unicamp.br>
-
-	* Makefile.in (boostrap2-lean, bootstrap3-lean,
-	bootstrap4-lean): New targets.
-
-Mon May 11 23:55:56 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* mpw-* Delete.  Not used.
-
-Mon May 11 23:11:34 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* COPYING.LIB: Update FSF address.
-
-Fri May  8 01:30:20 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Update to libtool 1.2a.
-
-	* Makefile.in (GASB_SUPPORT_DIRS): Remove intl; already included via
-	GAS_SUPPORT_DIRS.
-
-Thu May  7 17:27:35 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Avoid producing a version number if
-	-version-info was not used.
-
-Tue May  5 18:02:24 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Add --with-newlib to CONFIG_ARGUMENTS if we are
-	building with newlib.
-
-1998-04-30  Paul Eggert  <eggert at twinsun.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): Remove backslash at end;
-	Solaris `make' causes it to continue to next definition.
-
-Tue Apr 28 16:24:24 1998  Jason Molenda  (crash at bugshack.cygnus.com)
-
-	* Makefile.in (install-gdbtk): Call this 'install-gdb' so that
-	the right GUI libraries and files are installed along with GDB.
-
-Tue Apr 28 18:11:24 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Change alpha to alpha* in several places.
-
-Tue Apr 28 07:42:00 1998  Mark Alexander  <marka at cygnus.com>
-
-	* config.sub: Recognize sparc86x.
-
-Tue Apr 28 07:35:02 1998  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (--enable-target-optspace): Remove debug echo.
-
-Thu Apr 23 21:31:16 1998  Jim Wilson  <wilson at cygnus.com>
-
-	* configure: Set CXXFLAGS from CXXFLAGS, not CFLAGS.
-
-Thu Apr 23 12:26:38 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig: Update cygwin32 support.
-
-	* Makefile.in (GAS_SUPPORT_DIRS): Add intl.
-	(BINUTILS_SUPPORT_DIRS, GASB_SUPPORT_DIRS): Likewise.
-	(GDB_SUPPORT_DIRS): Likewise.
-
-Wed Apr 22 12:30:10 1998  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (target_makefile_frag): If --enable-target-optspace,
-	use -Os to compile target libraries rather than -O2.  Default to
-	using -Os for d10v and m32r if --{enable,disable}-target-optspace is
-	not used.
-	* configure.in (target_cflags): Ditto for d30v.
-
-Tue Apr 21 23:06:54 1998  Tom Tromey  <tromey at cygnus.com>
-
-	* Makefile.in (all-bfd): Depend on all-intl.
-	(all-binutils): Likewise.
-	(all-gas): Likewise.
-	(all-gprof): Likewise.
-	(all-ld): Likewise.
-
-1998-04-19  Brendan Kehoe  <brendan at cygnus.com>
-
-	* configure.in (host_tools): Fix typo, lbtool -> libtool.
-
-Fri Apr 17 16:20:42 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (all-bfd): Depend upon all-libiberty.
-
-	* ltconfig, ltmain.sh: Bring in newer cygwin32 support.
-
-Fri Apr 17 12:22:22 1998  Bob Manson  <manson at charmed.cygnus.com>
-
-	* Makefile.in: Add libstub.
-
-	* configure.in: Ditto. Build libstub for targets that have cygmon
-	support.
-
-Tue Apr 14 18:01:55 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't set PICFLAG on ix86-cygwin32.
-
-Tue Apr 14 12:24:45 1998  J. Kean Johnston  <jkj at sco.com>
-
-	* configure.in: Recognise i[3456]96-*-sysv5* as a valid host, and
-	use mh-sysv5 if specified.  Support gprof on SCO Open Server.
-
-Tue Apr 14 11:33:51 1998  Krister Walfridsson <cato at df.lth.se>
-
-	* configure: Define DEFAULT_M4 by searching PATH.
-	* Makfile.in: Use DEFAULT_M4.
-
-Mon Apr 13 15:37:24 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig: Add cygwin32 support.
-
-	* Makefile.in, configure.in: Add libtool as a native only directory
-	to configure and build.
-
-Sun Apr 12 20:58:46 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (INSTALL_MODULES): Remove texinfo.
-
-Wed Apr  8 13:18:56 1998  Philippe De Muyter  <phdm at macqel.be>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): XFOO lines shortened.
-
-Thu Apr  2 14:48:44 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* Makefile.in: add ash make rules
-	* configure.in: add ash to native_only and host_tools lists
-
-Thu Mar 26 12:53:20 1998  Tom Tromey  <tromey at cygnus.com>
-
-	* Makefile.in (all-gettext, all-intl): New targets.
-	(ALL_MODULES): Added all-gettext, all-intl.
-	(CROSS_CHECK_MODULES): Added check-gettext, check-intl.
-	(INSTALL_MODULES): Added install-gettext, install-intl.
-	(CLEAN_MODULES): Added clean-gettext, clean-intl.
-
-	* configure.in (host_tools): Added gettext.
-	(native_only): Likewise.
-	(noconfigdirs) [various cases]: Likewise.
-	(host_libs): Added intl.
-
-Thu Mar 26 15:00:11 1998  Keith Seitz  <keiths at onions.cygnus.com>
-
-	* configure: Do not disable building gdbtk for cygwin32 hosts.
-
-Wed Mar 25 10:04:18 1998  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in: Add thumb-coff target.
-	* config.sub: Add thumb-coff target.
-
-Wed Mar 25 11:49:12 1998  Jason Molenda  (crash at bugshack.cygnus.com)
-
-	* Makefile.in: Revert yesterday's change.
-	(all-target-winsup):  all-target-librx stays out of here.
-
-Tue Mar 24 16:58:29 1998  Jason Molenda  (crash at bugshack.cygnus.com)
-
-	* Makefile.in (TARGET_CONFIGDIRS, ALL_TARGET_MODULES,
-	CONFIGURE_TARGET_MODULES, CHECK_TARGET_MODULES,
-	INSTALL_TARGET_MODULES, CLEAN_TARGET_MODULES, all-target-winsup):
-	Remove references to librx and libg++.
-
-Tue Mar 24 18:28:12 1998  Eric Mumpower  <nocturne at cygnus.com>
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Pass $(lispdir) down to
-	recursive makes
-
-Tue Mar 24 11:37:45 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (CC_FOR_TARGET): Use $(TARGET_SUBDIR) when passing -B
-	for newlib directory.
-	(CXX_FOR_TARGET): Likewise.
-
-Mon Mar 23 11:30:21 1998  Jeffrey A Law  (law at cygnus.com)
-
-	* ltconfig: Update after libtool/ltconfig.in change for
-	hpux11.
-
-Fri Mar 20 18:51:43 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Update to libtool 1.2.
-
-Fri Mar 20 09:32:14 1998  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* Makefile.in (install-gcc): Don't specify LANGUAGES here.
-	(install-gcc-cross): Instead, override LANGUAGES here.
-
-1998-03-18  Dave Love  <d.love at dl.ac.uk>
-
-	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): Set CONFIG_SITE to a
-	non-existent file since /dev/null loses with bash 2.0/autoconf 2.12.
-
-Wed Mar 18 09:24:59 1998  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in: Add Thumb-pe target.
-
-Tue Mar 17 16:59:00 1998  Syd Polk <spolk at cygnus.com>
-
-	* Makefile.in - changed sn targets to snavigator
-	* configure.in - changed sn targets to snavigator
-
-Tue Mar 17 10:33:28 1998  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* config-ml.in: After building symlink tree call make distclean
-	if a Makefile got linked into ${ml_dir}/${ml_libdir}; this happens
-	to be the case for libiberty.
-
-Tue Mar 17 10:22:37 1998  H.J. Lu  (hjl at gnu.ai.mit.edu)
-
-	* configure: When making link, also check the current
-	directory. The configure scripts may create one.
-
-Fri Mar  6 01:02:03 1998  Richard Henderson  <rth at cygnus.com>
-
-	* config.sub: Accept alphapca56 and alphaev6 properly.
-
-Fri Mar  6 00:14:55 1998  Franz Sirl <Franz.Sirl-kernel at lauterbach.com>
-
-	* configure.in: Revert 3 Jan change for powerpc-linux-gnulibc1.
-
-Mon Feb 23 15:09:18 1998  Bruno Haible <bruno at linuix.mathematik.uni-karlsruhe.de
-
-	* config.sub (sco5): Fix typo.
-
-Mon Feb 23 14:46:06 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (INSTALL_MODULES): Move install-tcl before
-	install-itcl.
-	(install-itcl): Remove dependency on install-tcl.
-
-Mon Feb 23 09:53:28 1998  Mark Alexander  <marka at cygnus.com>
-
-	* configure.in: Remove libgloss from noconfigdirs for MN10300.
-
-Thu Feb 19 13:40:41 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't build libgui for a cygwin32 target when not on
-	a cygwin32 host.
-
-Wed Feb 18 12:29:00 1998  Jason Molenda  (crash at bugshack.cygnus.com)
-
-	* configure (redirect): Set to null, so default behavior of
-	configure is now --verbose.
-
-1998-02-16  Dave Love  <d.love at dl.ac.uk>
-
-	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): Run configure with
-	CONFIG_SITE=/dev/null to forestall lossage with site configuration.
-
-Mon Feb 16 12:23:53 1998  Manfred Hollstein  <Manfred.Hollstein at ks.sel.alcatel.de>
-
-	* Makefile.in (BASE_FLAGS_TO_PASS, EXTRA_TARGET_FLAGS): Really add
-	this change to sync Makefile.in with its ChangeLog entries.
-
-Thu Feb 12 15:03:08 1998  H.J. Lu  <hjl at gnu.org>
-
-	* ltmain.sh (mkdir): Check that the directory doesn't exist
-	before we exit with error, so that we don't get races during
-	parallel builds.
-
-Sat Feb  7 15:19:18 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Update from libtool 1.0i.
-
-Fri Feb  6 01:33:52 1998  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Don't pass PICFLAG and
-	PICFLAG_FOR_TARGET.
-	(EXTRA_TARGET_FLAGS): Don't pass PICFLAG_FOR_TARGET.
-
-	* configure: Emit a definition for the new macro enable_shared
-	into each Makefile.
-
-Thu Feb  5 17:01:12 1998  Jason Molenda  (crash at bugshack.cygnus.com)
-
-	* configure.in (host_tools, native_only): Add libtool.
-
-Wed Feb  4 16:53:58 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: add target-gperf to noconfigdirs for Cygwin32.
-	Fix typo in ming config comment.
-
-Wed Feb  4 18:56:13 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltconfig, ltmain.sh: Update from libtool 1.0h.
-
-Mon Feb  2 19:38:19 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Add tic30 cases, and map c30 to tic30.
-
-Sun Feb  1 02:40:41 1998  Richard Henderson  <rth at cygnus.com>
-
-	* Makefile.in (TARGET_CONFIGDIRS): Add libf2c.
-	(ALL_TARGET_MODULES, CONFIGURE_TARGET_MODULES): Similarly
-	(CHECK_TARGET_MODULES, INSTALL_TARGET_MODULES): Similarly
-	(CLEAN_TARGET_MODULES): Similarly
-	(all-target-libf2c): Add dependences.
-	* configure.in (target_libs): Add libf2c.
-
-Fri Jan 30 17:18:32 1998  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: Remove expect from noconfigdirs when target
-	is cygwin32.  OK to build expect and dejagnu with Canadian
-	Cross.
-
-Wed Jan 28 12:58:49 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Do build expect, dejagnu, and cvssrc for a cygwin32
-	host.
-
-	* config.guess: Use ${UNAME_MACHINE} rather than i386 for cygwin32
-	and mingw32.
-
-Wed Jan 28 10:26:37 1998  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Remove passing $(local_prefix)
-	here as it is not defined in the toplevel Makefile.
-
-Tue Jan 27 23:25:06 1998  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure (package_makefile_rules_frag): New variable, which names
-	a file with generic rules, ...
-	Change comment to mention we now have FIVE parts.
-	* configure: Undo last change.
-
-Tue Jan 27 23:15:55 1998  Lassi A. Tuura  <lat at iki.fi>
-
-	* config.guess: More accurate determination of HP processor types.
-	* config.sub: More accurate determination of HP processor types.
-
-Sat Jan 24 01:59:45 1998  Manfred Hollstein  <manfred at s-direktnet.de>
-
-	* configure (package_makefile_frag): Move inserting the
-	${package_makefile_frag} to where it should be according
-	to the comment.
-
-Fri Jan 23 00:29:28 1998  Philip Blundell  <pb at nexus.co.uk>
-
-	* config.guess: Add support for Linux/ARM.
-
-Thu Jan 22 15:14:01 1998  Fred Fish  <fnf at cygnus.com>
-
-	* .cvsignore: Remove *-info and *-install since they match
-	release-info and mpw-install, which we don't want to just ignore.
-
-Thu Jan 22 01:38:33 1998  Richard Henderson  <rth at cygnus.com>
-
-	* configure.in: Revert 3 Jan change for alpha-linux-gnulibc1.
-
-Sat Jan 17 21:28:08 1998  Pieter Nagel <pnagel at epiuse.co.za>
-
-	* Makefile.in (FLAGS_TO_PASS): Pass down gcc_include_dir and
-	local_prefix to sub-make invocations.
-
-Sat Jan 17 21:04:59 1998 H.J. Lu  (hjl at gnu.org)
-
-	* configure.in: Check makefile fragments in the source
-	directory.
-
-Fri Jan 16 00:41:37 1998  Alexandre Oliva <oliva at dcc.unicamp.br>
-
-	* configure.in: Check whether host and target makefile
-	fragments exist before adding them to *_makefile_frag.
-
-Wed Jan 14 23:39:10 1998  Bob Manson  <manson at charmed.cygnus.com>
-
-	* configure.in (target_configdirs): Add cygmon for sparc64-elf.
-
-Wed Jan 14 12:48:07 1998  Keith Seitz  <keiths at pizza.cygnus.com>
-
-	* configure.in: Make sure we only replace RPATH_ENVVAR on
-	lines which begin with RPATH_ENVVAR, i.e. add "^" to the
-	regexp to sed.
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Pass RRPATH_ENVVAR down
-	to sub-makes.
-
-1998-01-13  Lee Iverson   (leei at ai.sri.com)
-
-	* config-ml.in (multi-do): LDFLAGS must include multilib
-	designator.
-
-Tue Jan 13 01:13:24 1998   Robert Lipe (robertl at dgii.com)
-
-	* config.guess: Recognize i[3456]-i586-UnixWare7-sysv5.
-
-Sun Jan  4 01:06:55 1998  Mumit Khan  <khan at xraylith.wisc.edu>
-
-	* config.sub: Add mingw32 support.
-	* configure.in: Likewise.
-
-Sat Jan  3 12:11:05 1998 Franz Sirl <franz.sirl-kernel at lauterbach.com>
-
-	* configure.in: Finalize support for {alpha|powerpc}*-*-linux-gnulibc1
-
-Sun Dec 28 11:28:58 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (INSTALL_TARGET): Do install-gcc first.
-	* configure (gxx_include_dir): Provide a definition for subdirs
-	which do not use autoconf.
-
-Wed Dec 24 22:46:55 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess: Sync with egcs.  Picks up new alpha support,
-	BeOS & some additional linux support.
-
-Tue Dec 23 12:44:24 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess: HP 9000/803 is a PA1.1 machine.
-
-Mon Dec 22 02:39:24 1997  Richard Henderson  <rth at cygnus.com>
-
-	* configure.in: It's alpha*-...
-
-Sun Dec 21 16:53:12 1997  H.J. Lu  (hjl at gnu.ai.mit.edu)
-
-	* configure.in (host_makefile_frag, target_makefile_frag):
-	Handle multiple config files.
-	(alpha-*-linux*): Treat alpha-*-linux* as alpha-*-linux* and
-	alpha-*-*.
-
-Thu Dec 18 13:13:03 1997  Doug Evans  <devans at canuck.cygnus.com>
-
-	* mkdep: New file.
-
-Wed Dec 17 09:53:02 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (d30v-*-*): Allow configuring of libide, vmake, etc.
-
-Tue Dec 16 17:36:05 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in: Add libgui directory.
-	(GDB_TK): Add all-libgui.
-	* configure.in: Add libgui directory.
-	* configure: Add all-libgui to GDB_TK.
-
-Mon Dec 15 16:12:28 1997  Nick Clifton  <nickc at cygnus.com>
-
-	* config-ml.in (multidirs): Add m32r to multilib list.
-
-Fri Dec 12 10:43:31 1997  Brendan Kehoe  <brendan at canuck.cygnus.com>
-
-	* Makefile.in (all-target-gperf): Change dependency to
-	all-target-libstdc++.
-
-Thu Dec 11 23:30:51 1997  Fred Fish  <fnf at ninemoons.com>
-
-	* config.guess: Add BeOS support.
-
-Wed Dec 10 15:10:38 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	Source directory cvs renamed to cvssrc:
-	* configure.in (host_tools): Change cvs to cvssrc.
-	(native_only): Likewise.
-	(noconfigdirs) [various cases]: Likewise.
-	* Makefile.in (ALL_MODULES): Change all-cvs to all-cvssrc.
-	(CROSS_CHECK_MODULES): Change check-cvs to check-cvssrc.
-	(INSTALL_MODULES): Change install-cvs to install-cvssrc.
-	(CLEAN_MODULES): Change clean-cvs to clean-cvssrc.
-	(all-cvssrc): Rename target from all-cvs.
-
-Wed Dec  3 07:55:59 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* configure (gxx_include_dir): Fix thinko.
-
-Tue Dec  2 10:55:34 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (INSTALL_TARGET_CROSS): Define.
-	(install-cross, install-gcc-cross): New targets.
-
-Tue Dec  2 10:08:31 1997  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in (noconfigdirs): Add support for Thumb target.
-
-	* config.sub (maybe_os): Add support for Thumb target.
-
-Sun Nov 30 16:12:27 1997  Bob Manson  <manson at charmed.cygnus.com>
-
-	* Makefile.in: Add rules for cygmon.
-
-	* configure.in: Build cygmon for sparc-elf and sparclite-aout.
-
-Thu Nov 27 01:31:30 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (INSTALL_TARGET): Do install-gcc first.
-	* configure (gxx_include_dir): Provide a definition for subdirs
-	which do not use autoconf.
-
-Wed Nov 26 11:53:33 1997  Keith Seitz  <keiths at onions.cygnus.com>
-
-	* Makefile.in, configure, configure.in, ChangeLog: merge with foundry's
-	11/18/97 build
-
-Wed Nov 26 16:08:50 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* From Franz Sirl.
-	* config.guess (powerpc*-*-linux): Handle glibc2 beta release
-	found on RedHat Linux systems.
-
-Fri Nov 21 09:51:01 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess (alpha stuff): Merge with FSF to avoid incorrect
-	guesses.
-
-Thu Nov 13 11:38:37 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in (i[3456]86-ncr-sysv4.3*): Tweak.
-
-Mon Nov 10 15:23:21 1997  H.J. Lu  <hjl at gnu.ai.mit.edu>
-
-	* ltmain.sh: If mkdir fails, check whether the directory was created
-	anyhow by some other process.
-
-Mon Nov 10 14:38:03 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (d30v-*-*): Configure all directories.
-
-Sun Nov  9 17:36:20 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (d30v-*-*): Configure newlib, libiberty directories
-	for the D30V.
-
-Sat Nov  8 14:42:59 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (d30v-*-*): Configure target-libgloss on the D30V.
-
-Fri Nov  7 10:34:09 1997  Rob Savoye  <rob at darkstar.cygnus.com>
-
-	* include/libiberty.h: Add extern "C" { so it can be used with C++
-	progrms.
-	* include/remote-sim.h:  Add extern "C" { so it can be used with C++
-	programs.
-
-Thu Oct 30 11:09:29 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (d30v-*-*): Configure GCC now.
-
-Mon Oct 27 13:17:24 1997  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* configure.in: Remove a "second pass" of tweaking noconfigdirs,
-	is no longer needed.
-
-Mon Oct 27 12:03:53 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in: check-target-libio depends on all-target-libstdc++.
-
-Sun Oct 26 11:48:27 1997  Manfred Hollstein  (manfred at s-direktnet.de)
-
-	* Makefile.in (bootstrap-lean): Combined with `normal' bootstrap
-	targets using "$@" to provide support for similar but not identical
-	targets without having to duplicate code.
-
-Mon Oct 20 15:28:49 1997  Klaus K"ampf  <kkaempf at progis.de>
-
-	* makefile.vms: Fix to work with DEC C.
-
-Tue Oct  7 23:58:57 1997  Gavin Koch  <gavin at cygnus.com>
-
-	* config.sub: Add mips-tx39-elf to marketing names.
-
-Tue Oct  7 14:24:41 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltmain.sh: Handle symlinks in generated script.
-
-Wed Oct  1 13:11:27 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Handle autoconf style directory options: --bindir,
-	--datadir, --includedir, --infodir, --libdir, --libexecdir,
-	--mandir, --oldincludedir, --sbindir, --sharedstatedir,
-	--sysconfdir.
-	* Makefile.in (sbindir, libexecdir, sysconfdir): New variables.
-	(sharedstatedir, localstatedir, oldincludedir): New variables.
-	(BASE_FLAGS_TO_PASS): Pass down bindir, datadir, includedir,
-	infodir, libdir, libexecdir, localstatedir, mandir, oldincludedir,
-	sbindir, sharedstatedir, and sysconfdir.
-
-Mon Sep 29 00:38:08 1997 Aaron Jackson <jackson at negril.msrce.howard.edu>
-
-	* Makefile.in (bootstrap-lean): New target.
-
-Wed Sep 24 18:06:27 1997  Stu Grossman  <grossman at babylon-5.cygnus.com>
-
-	* configure.in (d30v):  Remove tcl, tk, expect, gdb, itcl, tix, db,
-	sn, and gnuserv from noconfigdirs.
-
-Wed Sep 24 15:18:32 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ltmain.sh: Tweak shell pattern to avoid bug in NetBSD /bin/sh.
-
-Thu Sep 18 23:58:27 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (cross): New target.
-
-Thu Sep 18 21:43:23 1997  Alexandre Oliva  <oliva at dcc.unicamp.br>
-			  Jeff Law	   <law at cygnus.com>
-
-	* Makefile.in (bootstrap2, bootstrap3): New targets.
-	(all-bootstrap): Remove outdated and confusing target.
-	(bootstrap, bootstrap2, bootstrap3): Don't pass BOOT_CFLAGS down.
-
-Thu Sep 18 15:37:42 1997  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* configure (tooldir): enable_gdbtk=YES for cygwin32, NO for
-	windows.  Consistent with gdb/configure.
-
-1997-09-15 02:37  Ulrich Drepper  <drepper at cygnus.com>
-
-	* configure.in: Name Linux target fragment.
-
-	* configure: Rewrite so that project Makefile fragment is inserted
-	first and appears last in the resulting Makefile.
-
-Tue Sep 16 09:55:07 1997  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (install-itcl): Install tcl first.
-
-Fri Sep 12 16:19:20 1997  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: remove bison from noconfigdirs for Cygwin32 host
-
-Thu Sep 11 16:40:46 1997  H.J. Lu  (hjl at gnu.ai.mit.edu)
-
-	* Makefile.in (local-distclean): Also remove mh-frag mt-frag.
-
-	* configure.in (skipdirs): Add target-librx for Linux.
-	(alpha-*-linux*): Use config/mh-elfalphapic and config/mt-elfalphapic.
-
-Wed Sep 10 21:29:54 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* Makefile.in (bootstrap): New target.
-
-Wed Sep 10 15:19:22 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub: Accept 'amigados' for backward compatability.
-
-Mon Sep  8 20:46:20 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.guess: Merge with FSF.
-
-Sun Sep  7 23:18:32 1997  Fred Fish  <fnf at ninemoons.com>
-
-	* config.sub: Change 'amigados' to 'amigaos' to match current usage.
-
-Sun Sep  7 15:55:28 1997  Gavin Koch  <gavin at cygnus.com>
-
-	* config.sub: Add "marketing-names" patch.
-
-Fri Sep  5 16:11:28 1997  Joel Sherrill  (joel at OARcorp.com)
-
-	* configure.in (*-*-rtems*): Do not build libgloss for rtems.
-
-Fri Sep  5 12:27:17 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub: Handle v850-elf.
-
-Wed Sep  3 22:01:58 1997  Fred Fish  <fnf at ninemoons.com>
-
-	* .cvsignore (*-install): Remove.
-
-Wed Sep  3 12:15:24 1997  Chris Provenzano  <proven at cygnus.com>
-
-	* ltconfig: Set CONFIG_SHELL in libtool.
-	* ltmain.sh: Use CONFIG_SHELL instead of /bin/sh
-
-Mon Sep  1 16:45:44 1997  Jim Wilson  <wilson at cygnus.com>
-
-	* configure.in (target_subdir): Set to libraries if enable_multilib.
-
-Wed Aug 27 16:15:11 1997  Jim Wilson  <wilson at cygnus.com>
-
-	* config.guess: Update from gcc directory.
-
-Tue Aug 26 16:46:46 1997  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (all-sim): Depends on all-readline.
-
-Wed Aug 20 19:57:37 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (BISON, YACC): Use $$s.
-	(all-bison): Depend on all-texinfo.
-
-Tue Aug 19 01:41:32 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (BISON): Add -L flag.
-	(YACC): Likewise.
-
-Mon Aug 18 11:30:50 1997  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in (noconfigdirs): Add support for v850e target.
-
-	* config.sub (maybe_os): Add support for v850e target.
-
-Mon Aug 18 11:30:50 1997  Nick Clifton  <nickc at cygnus.com>
-
-	* configure.in (noconfigdirs): Add support for v850ea target.
-
-	* config.sub (maybe_os): Add support for v850ea target.
-
-Mon Aug 18 09:24:06 1997  Gavin Koch  <gavin at cygnus.com>
-
-	* config.sub: Add mipstx39.  Delete r3900.
-
-Mon Aug 18 17:20:10 1997  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* Makefile.in (all-autoconf): Depends on all-texinfo.
-
-Fri Aug 15 23:09:26 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* config-ml.in ({powerpc,rs6000}*-*-*): Update to current AIX and
-	eabi targets.
-
-Thu Aug 14 14:42:17 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Get CFLAGS and CXXFLAGS from Makefile, if possible.
-
-	* configure: When handling a Canadian Cross, handle YACC as well as
-	BISON.  Just set BISON to bison.  When setting YACC, prefer bison.
-	* Makefile.in (all-bison): Depend upon all-texinfo.
-
-Tue Aug 12 20:09:48 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (BISON): bison, not byacc or bison -y.
-	(YACC): bison -y or byacc or yacc.
-	(various): Add *-bison as appropriate.
-	(taz): No need to mess with BISON anymore.
-
-Tue Aug 12 22:33:08 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: If OSTYPE matches *win32*, try to find a good value for
-	CONFIG_SHELL.
-
-Sun Aug 10 14:41:11 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (taz): Get the version number from AM_INIT_AUTOMAKE in
-	configure.in if it is present.
-
-Sat Aug  9 00:58:01 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (LD_FOR_TARGET): Change ld.new to ld-new.
-
-Fri Aug  8 16:30:13 1997  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config.sub: Recognize `arc' cpu.
-	* configure.in: Likewise.
-	* config-ml.in: Likewise.
-
-Thu Aug  7 11:02:34 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in ($(INSTALL_X11_MODULES)): Depend upon installdirs.
-
-Wed Aug  6 16:27:29 1997  Chris Provenzano  <proven at cygnus.com>
-
-	* configure: Changed sed delimiter from ':' to '|' when
-	attempting to substitute ${config_shell} for SHELL. On
-	NT ${config_shell} may contain a ':' in it.
-
-Wed Aug  6 12:29:05 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): Fix for non-bash shells.
-
-Wed Aug  6 00:42:35 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (AS_FOR_TARGET): Change as.new to as-new.
-
-Tue Aug  5 14:08:51 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (NM_FOR_TARGET): Change nm.new to nm-new.
-
-	* ylwrap: If the program is a relative path, force it to be
-	absolute.
-
-Tue Aug  5 12:12:44 1997  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* configure (tooldir): Set BISON to `bison -y' and not just bison.
-
-Mon Aug  4 22:59:02 1997  Andrew Cagney  <cagney at b1.cygnus.com>
-
-	* Makefile.in (CC_FOR_TARGET): When winsup/Makefile present,
-	correctly specify the target build directory $(TARGET_SUBDIR)/winsup
-	for libraries.
-
-Mon Aug  4 12:40:24 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): Fix handling of macros with values
-	separated by spaces.
-
-Thu Jul 31 19:49:49 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* ylwrap: New file.
-	* Makefile.in (DEVO_SUPPORT): Add ylwrap.
-
-	* ltmain.sh: Handle /bin/sh at start of install program.
-
-	* Makefile.in (DEVO_SUPPORT): Add ltconfig, ltmain.sh, and missing.
-
-	* ltconfig, ltmain.sh: New files, from libtool 1.0.
-	* missing: New file, from automake 1.2.
-
-Thu Jul 24 12:57:56 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in: Treat tix like tk, putting it in X11_MODULES.  Add
-	check-tk to CHECK_X11_MODULES.
-
-Wed Jul 23 17:03:29 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Merge with FSF.
-
-Tue Jul 22 19:08:29 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.guess: Merge with FSF.
-
-Tue Jul 22 14:50:42 1997  Robert Hoehne <robert.hoehne at Mathematik.TU-Chemnitz.DE>
-
-	* configure: Treat msdosdjgpp like go32.
-	* configure.in: Likewise.  Don't remove gprof for go32.
-
-	* configure: Change Makefile.tem2 to Makefile.tm2.
-
-Mon Jul 21 10:31:26 1997  Stephen Peters  <speters at cygnus.com>
-
-	* configure.in (noconfigdirs): For alpha-dec-osf*, don't ignore grep.
-
-Tue Jul 15 14:33:03 1997  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* install-sh (chmodcmd): Set to null if the DST directory already
-	exists.  Same as Nov 11th change.
-
-Mon Jul 14 11:01:15 1997  Martin M. Hunt  <hunt at cygnus.com>
-
-	* configure (GDB_TK): Needs itcl and tix.
-
-Mon Jul 14 00:32:10 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* config.guess: Update from FSF.
-
-Fri Jul 11 11:57:11 1997  Martin M. Hunt  <hunt at cygnus.com>
-
-	* Makefile.in (GDB_TK): Depend on itcl and tix.
-
-Fri Jul  4 13:25:31 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (INSTALL_PROGRAM_ARGS): New variable.
-	(INSTALL_PROGRAM): Use $(INSTALL_PROGRAM_ARGS).
-	(INSTALL_SCRIPT): New variable.
-	(BASE_FLAGS_TO_PASS): Pass down INSTALL_SCRIPT.
-	* configure.in: If host is *-*-cygwin32*, set INSTALL_PROGRAM_ARGS
-	to -x.
-	* install-sh: Add support for -x option.
-
-Mon Jun 30 15:51:30 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in, Makefile.in: Treat tix like itcl.
-
-Thu Jun 26 13:59:19 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (WINDRES): New variable.
-	(WINDRES_FOR_TARGET): New variable.
-	(BASE_FLAGS_TO_PASS): Add WINDRES_FOR_TARGET.
-	(EXTRA_HOST_FLAGS): Add WINDRES.
-	(EXTRA_TARGET_FLAGS): Add WINDRES.
-	(EXTRA_GCC_FLAGS): Add WINDRES.
-	($(DO_X)): Pass down WINDRES.
-	($(CONFIGURE_TARGET_MODULES)): Set WINDRES when configuring.
-	* configure: Treat WINDRES like DLLTOOL, and WINDRES_FOR_TARGET like
-	DLLTOOL_FOR_TARGET.
-
-Wed Jun 25 15:01:26 1997  Felix Lee  <flee at cygnus.com>
-
-	* configure.in: configure sim before gdb for win32-x-ppc
-
-Wed Jun 25 12:18:54 1997  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	Move gperf into the toplevel, from libg++.
-	* configure.in (target_tools): Add target-gperf.
-	(native_only): Add target-gperf.
-	* Makefile.in (all-target-gperf): New target, depend on
-	all-target-libg++.
-	(configure-target-gperf): Empty rule.
-	(ALL_TARGET_MODULES): Add all-target-gperf.
-	(CONFIGURE_TARGET_MODULES): Add configure-target-gperf.
-	(CHECK_TARGET_MODULES): Add check-target-gperf.
-	(INSTALL_TARGET_MODULES): Add install-target-gperf.
-	(CLEAN_TARGET_MODULES): Add clean-target-gperf.
-
-Mon Jun 23 10:51:53 1997  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub (mn10200): Recognize new basic machine.
-
-Thu Jun 19 14:16:42 1997  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* configure.in: Don't set ENABLE_MULTILIB, so we'll be passing
-	--enable-multilib down to subdirs; setting TARGET_SUBDIR was enough.
-
-Tue Jun 17 15:31:20 1997  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* configure.in: If we're building mips-sgi-irix6* native, turn on
-	ENABLE_MULTILIB and set TARGET_SUBDIR.
-
-Tue Jun 17 12:20:59 1997  Tom Tromey  <tromey at cygnus.com>
-
-	* Makefile.in (all-sn): Depend on all-grep.
-
-Mon Jun 16 11:11:10 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Use mh-ppcpic and mt-ppcpic for powerpc*-* targets.
-
-	* configure: Set CFLAGS and CXXFLAGS, and substitute them into
-	Makefile.  From Jeff Makey <jeff at cts.com>.
-	* Makefile.in: Add comment for CFLAGS and CXXFLAGS.
-
-	* Makefile.in (DISTBISONFILES): Remove.
-	(taz): Don't futz with DISTBISONFILES.  Change BISON to use
-	$(DEFAULT_YACC).
-
-	* configure.in: Build itl, db, sn, etc., when building for native
-	cygwin32.
-
-	* Makefile.in (LD): New variable.
-	(EXTRA_HOST_FLAGS): Pass down LD.
-	($(DO_X)): Likewise.
-
-Mon Jun 16 11:10:35 1997  Philip Blundell  <Philip.Blundell at pobox.com>
-
-	* Makefile.in (INSTALL): Use $(SHELL) when executing install-sh.
-
-Fri Jun 13 10:22:56 1997  Bob Manson  <manson at charmed.cygnus.com>
-
-	* configure.in (targargs): Strip out any supplied --build argument
-	before adding our own. Always add --build.
-
-Thu Jun 12 21:12:28 1997  Bob Manson  <manson at charmed.cygnus.com>
-
-	* configure.in (targargs): Pass --build if we're doing
-	a cross-compile.
-
-Fri Jun  6 21:38:40 1997  Rob Savoye  <rob at chinadoll.cygnus.com>
-
-	* configure: Use '|' instead of ":" as the separator in
-	sed. Otherwise sed chokes on NT path names with drive
-	designators. Also look for "?:*" as the leading characters in an
-	absolute pathname.
-
-Mon Jun  2 13:05:20 1997  Gavin Koch  <gavin at cygnus.com>
-
-	* config.sub: Support for r3900.
-
-Wed May 21 17:33:31 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Use install-sh, not install.sh.
-
-Wed May 14 16:06:51 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (taz): Improve check for BISON so it doesn't try to
-	apply it twice.
-
-Fri May  9 17:22:05 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (INSTALL_MODULES): Put install-opcodes before
-	install-binutils.
-
-Thu May  8 17:29:50 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in: Add automake targets.
-	* configure.in (host_tools): Add automake.
-
-Tue May  6 15:49:52 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Default CXX to c++, not gcc.
-	* Makefile.in (CXX): Set to c++, not gcc.
-	(CXX_FOR_TARGET): When cross, transform c++, not gcc.
-
-Thu May  1 10:11:43 1997  Geoffrey Noer  <noer at cygnus.com>
-
-	* install-sh: try appending a .exe if source file doesn't
-	exist
-
-Wed Apr 30 12:05:36 1997  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* configure.in: Turn on multilib by default.
-	(cross_only): Remove target-libiberty.
-
-	* Makefile.in (all-gcc): Don't depend on libiberty.
-
-Mon Apr 28 18:39:45 1997  Michael Snyder  <msnyder at cleaver.cygnus.com>
-
-	* config.guess: improve algorithm for recognizing Gnu Hurd x86.
-
-Thu Apr 24 19:30:07 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (DEVO_SUPPORT): Add mpw-install.
-	(DISTBISONFILES): Add ld/Makefile.in
-
-Tue Apr 22 17:17:28 1997  Geoffrey Noer  <noer at pizza.cygnus.com>
-
-	* configure.in: if target is cygwin32 but host isn't cygwin32,
-	don't configure gdb tcl tk expect, not just gdb.
-
-Mon Apr 21 13:33:39 1997  Tom Tromey  <tromey at cygnus.com>
-
-	* configure.in: Added gnuserv everywhere sn appears.
-
-	* Makefile.in (ALL_MODULES): Added all-gnuserv.
-	(CROSS_CHECK_MODULES): Added check-gnuserv.
-	(INSTALL_MODULES): Added install-gnuserv.
-	(CLEAN_MODULES): Added clean-gnuserv.
-	(all-gnuserv): New target.
-
-Thu Apr 17 13:57:06 1997  Per Fogelstrom  <pefo at openbsd.org>
-
-	* config.guess: Fixes for MIPS OpenBSD systems.
-
-Tue Apr 15 12:21:07 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (INSTALL_XFORM): Remove.
-	(BASE_FLAGS_TO_PASS): Remove INSTALL_XFORM.
-
-	* mkinstalldirs: New file, copied from automake.
-	* Makefile.in (installdirs): Rename from install-dirs.  Use
-	mkinstalldirs.  Change all users.
-	(DEVO_SUPPORT): Add mkinstalldirs.
-
-Mon Apr 14 11:21:38 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* install-sh: Rename from install.sh.
-	* Makefile.in (INSTALL): Change install.sh to install-sh.
-	(DEVO_SUPPORT): Likewise.
-
-	* configure: Use ${config_shell} with ${moveifchange}.  From Thomas
-	Graichen <graichen at rzpd.de>.
-
-Fri Apr 11 16:37:10 1997  Niklas Hallqvist  <niklas at appli.se>
-
-	* config.guess: Recognize OpenBSD systems correctly.
-
-Fri Apr 11 17:07:04 1997  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* README, Makefile.in (ETC_SUPPORT): Remove references to
-	cfg-paper*, configure.{texi,man,info*}._
-
-Sun Apr  6 18:47:57 1997  Andrew Cagney  <cagney at kremvax.cygnus.com>
-
-	* Makefile.in (all.normal): Ensure that gcc is built after all
-	the x11 - ie gdb - targets.
-
-Tue Apr  1 16:28:50 1997  Klaus Kaempf  <kkaempf at progis.de>
-
-	* makefile.vms: Don't run conf-a-gas.
-
-Mon Mar 31 16:26:55 1997  Joel Sherrill  <joel at oarcorp.com>
-
-	* configure.in (hppa1.1-*-rtems*): New target, like hppa-*-*elf*.
-
-Sun Mar 30 12:38:27 1997  Fred Fish  <fnf at cygnus.com>
-
-	* configure.in: Remove noconfigdirs case since gdb also
-	configures and builds for tic80-coff.
-
-Fri Mar 28 18:28:52 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Set cache_file to config.cache.
-	* Makefile.in (local-distclean): Remove config.cache.
-
-Wed Mar 26 18:49:39 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* COPYING: Update FSF address.
-
-Wed Mar 26 10:38:25 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (tic80-*-*): Remove G++ libraries and libgloss from
-	noconfigdirs.
-
-Mon Mar 24 15:02:39 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (install-dirs): Don't crash if prefix, and hence
-	MAKEDIRS, is empty.
-
-Mon Mar 24 12:40:55 1997  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config.sub: Tweak mn10300 entry.
-
-Fri Mar 21 15:35:27 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (host_tools): Put sim before gdb, so gdb's
-	configure.tgt can determine if the simulator was configured.
-
-Sun Mar 16 16:07:08 1997  Fred Fish  <fnf at cygnus.com>
-
-	* config.sub: Move BeOS $os case to be with other Cygnus
-	local cases.
-
-Sun Mar 16 01:34:55 1997  Martin Hunt <hunt at cygnus.com>
-
-	* config.sub: Remove misplaced comment that broke Linux.
-
-Sat Mar 15 22:50:15 1997  Fred Fish  <fnf at cygnus.com>
-
-	* config.sub: Add BeOS support.
-
-Mon Mar 10 13:30:11 1997  Tom Tromey  <tromey at cygnus.com>
-
-	* Makefile.in (CHECK_X11_MODULES): Don't run check-tk.
-
-Wed Mar  5 12:09:29 1997  Martin  <hunt at cygnus.com>
-
-	* configure.in (noconfigdirs): Remove tcl and tk from
-	noconfigdirs for cygwin32 builds.
-
-Fri Feb 28 18:20:15 1997  Fred Fish  <fnf at cygnus.com>
-
-	* configure.in (tic80-*-*): Remove ld from noconfigdirs.
-
-Thu Feb 27 14:57:26 1997  Ken Raeburn  <raeburn at cygnus.com>
-
-	* Makefile.in (GAS_SUPPORT_DIRS, BINUTILS_SUPPORT_DIRS): Remove
-	make-all.com, use makefile.vms instead.
-
-Tue Feb 25 18:46:14 1997  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* config.sub: Accept -lnews*.
-
-Tue Feb 25 13:19:14 1997  Andrew Cagney  <cagney at kremvax.tpgi.com.au>
-
-	* configure.in (noconfigdirs): Disable target-newlib,
-	target-examples and target-libiberty for d30v.
-
-Fri Feb 21 17:56:25 1997  Martin M. Hunt  <hunt at pizza.cygnus.com>
-
-	* configure.in (noconfigdirs): Enable ld for d30v.
-
-Fri Feb 21 20:58:51 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* configure.in (tic80-*-*): Build compiler.
-
-Sun Feb 16 15:41:09 1997  Andrew Cagney  <cagney at critters.cygnus.com>
-
-	* configure.in (d30v-*): Remove sim directory from list of
-	unsupported d30v directories
-
-Tue Feb 18 17:32:42 1997  Martin M. Hunt  <hunt at pizza.cygnus.com>
-
-	* config.sub, configure.in: Add d30v target cpu.
-
-Thu Feb 13 22:04:44 1997  Klaus Kaempf  <kkaempf at progis.de>
-
-	* makefile.vms: New file.
-	* make-all.com: Remove.
-
-Wed Feb 12 12:54:18 1997  Jim Wilson  <wilson at cygnus.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): Add LIBGCC2_DEBUG_CFLAGS.
-
-Sat Feb  8 20:36:49 1997  Michael Meissner  <meissner at cygnus.com>
-
-	* Makefile.in (all-itcl): The rule is all-itcl, not all-tcl.
-
-Tue Feb  4 11:39:29 1997  Tom Tromey  <tromey at cygnus.com>
-
-	* Makefile.in (ALL_MODULES): Added all-db.
-	(CROSS_CHECK_MODULES): Addec check-db.
-	(INSTALL_MODULES): Added install-db.
-	(CLEAN_MODULES): Added clean-db.
-
-Mon Feb  3 13:29:36 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.guess: Merge with latest FSF sources.
-
-Tue Jan 28 09:20:37 1997  Tom Tromey  <tromey at cygnus.com>
-
-	* Makefile.in (ALL_MODULES): Added all-itcl.
-	(CROSS_CHECK_MODULES): Added check-itcl.
-	(INSTALL_MODULES): Added install-itcl.
-	(CLEAN_MODULES): Added clean-itcl.
-
-Thu Jan 23 01:44:27 1997  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: build gdb for mn10200
-
-Fri Jan 17 15:32:15 1997  Doug Evans  <dje at canuck.cygnus.com>
-
-	* Makefile.in (all-target-winsup): Depend on all-target-libio.
-
-Mon Jan 13 22:46:54 1997  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (tic80-*-*): Turn off most targets right now.
-
-Fri Jan  3 16:04:03 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (MAKEINFO): Check for the existence of the Makefile,
-	rather than the makeinfo program.
-	(do-info): Depend upon all-texinfo.
-
-Tue Dec 31 16:00:31 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Remove uses of config/mh-linux.
-
-	* config.sub, config.guess: Merge with latest FSF sources.
-
-Fri Dec 27 23:04:33 1996  Fred Fish  <fnf at cygnus.com>
-
-	* config.sub (case $basic_machine): Add tic80 entries.
-
-Fri Dec 27 12:07:59 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub, config.guess: Merge with latest FSF sources.
-
-Wed Dec 18 22:46:39 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-build.in: Build ld before gcc, use NewFolderRecursive.
-	* mpw-config.in: Test for NewFolderRecursive.
-	* mpw-install: Use symbolic name for startup filename.
-	* mpw-README: Add various additional details.
-
-Wed Dec 18 13:11:46 1996  Jim Wilson  <wilson at cygnus.com>
-
-	* configure.in (mips*-sgi-irix6*): Remove binutils from noconfigdirs.
-
-Wed Dec 18 10:29:31 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in: Do build gcc and the target libraries for
-	the mn10200.
-
-Wed Dec  4 16:53:05 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: don't avoid building gdb for mn10300 any more
-	* Makefile.in: double-quote GCC_FOR_TARGET line in EXTRA_GCC_FLAGS
-	instead of single-quoting it.
-
-Tue Dec  3 23:26:50 1996  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* configure.in: Don't use --with-stabs on IRIX 6.
-
-Tue Dec  3 09:05:25 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* configure.in (m32r): Build gdb, libg++ now.
-
-Sun Dec  1 00:18:59 1996  Peter Schauer  (pes at regent.e-technik.tu-muenchen.de)
-
-	* configure.in (mips*-sgi-irix6*):  Remove gdb and related
-	directories from noconfigdirs.
-
-Tue Nov 26 11:45:33 1996  Kim Knuttila  <krk at cygnus.com>
-
-	* config.sub (basic_machine): added mips16 configuration
-
-Sat Nov 23 19:26:22 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config.sub: Handle d10v-unknown.
-
-Sat Nov 23 10:23:01 1996  Gavin Koch  <gavin at cygnus.com>
-
-	* config.sub: Handle v850-unknown.
-
-Thu Nov 21 16:19:44 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* Makefile.in: add findutils
-	* configure.in: add findutils to list of host_tools
-
-Wed Nov 20 10:09:01 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* config.sub: Handle mn10200 and mn10300.
-
-Tue Nov 19 16:35:14 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (d10v-*): Do not build librx.
-
-Mon Nov 18 13:28:41 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in (mn10300): Build everything except gdb & libgloss.
-
-Wed Nov 13 14:59:46 1996  Per Bothner  <bothner at deneb.cygnus.com>
-
-	* config.guess:  Patch for Dansk Data Elektronik servers,
-	from Niels Skou Olsen <nso at dde.dk>.
-
-	For ncr, use /bin/uname rather than uname, since GNU uname does not
-	support -p.  Suggested by Mark Mitchell <mmitchell at usa.net>.
-
-	Patch for MIPS R4000 running System V,
-	from Eric S. Raymond <esr at snark.thyrsus.com>.
-
-	Fix thinko for nextstep.
-
-	Patch for OSF1 in i?86, from Dan Murphy <dlm at osf.org> via Harlan Stenn.
-
-	Sat Jun 24 18:58:17 1995  Morten Welinder  <terra+ at cs.cmu.edu>
-	* config.guess: Guess mips-dec-mach_bsd4.3.
-
-	Thu Oct 10 04:07:04 1996  Harlan Stenn <harlan at pfcs.com>
-	* config.guess (i?86-ncr-sysv*):  Emit just enough of the minor
-	release numbers.
-	* config.guess (mips-mips-riscos*):  Emit just enough of the
-	release number.
-
-	Tue Oct  8 10:37:22 1996  Frank Vance <fvance at waii.com>
-	* config.guess (sparc-auspex-sunos*):  Added.
-	(f300-fujitsu-*): Added.
-
-	Wed Sep 25 22:00:35 1996  Jeff Woolsey <woolsey at jlw.com>
-	* config.guess:  Recognize a Tadpole as a sparc.
-
-Wed Nov 13 00:53:09 1996  David J. MacKenzie  <djm at churchy.gnu.ai.mit.edu>
-
-	* config.guess: Don't assume that NextStep version is either 2 or
-	3.  NextStep 4 (aka OpenStep 4) has come out now.
-
-Mon Nov 11 23:52:03 1996  David J. MacKenzie  <djm at churchy.gnu.ai.mit.edu>
-
-	* config.guess: Support Cray T90 that reports itself as "CRAY TS".
-	From Rik Faith <faith at cs.unc.edu>.
-
-Fri Nov  8 11:34:58 1996  David J. MacKenzie  <djm at geech.gnu.ai.mit.edu>
-
-	* config.sub: Contributions from bug-gnu-utils to:
-	Support plain "hppa" (no version given) architecture, reported by
-	OpenStep.
-	OpenBSD like NetBSD.
-	LynxOs is not a hardware supplier.
-
-	* config.guess: Contributions from bug-gnu-utils to add support for:
-	OpenBSD like NetBSD.
-	Stratus systems.
-	More Pyramid systems.
-	i[n>4]86 Intel chips.
-	M680[n>4]0 Motorola chips.
-	Use unknown instead of lynx for hardware manufacturer.
-
-Mon Nov 11 10:09:08 1996  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* install.sh (chmodcmd): Set to null if the DST directory already
-	exists.
-
-Mon Nov 11 10:43:41 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (powerpc*-{eabi,elf,linux,rtem,sysv,solaris}*): Do
-	not use mt-ppc target Makefile fragment any more.
-
-Sun Nov  3 19:17:07 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* configure.in (*-*-windows):  Exclude everything but those dirs
-	needed to build windows.
-
-Tue Oct 29 16:41:31 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* Makefile.in (all-target-winsup): Depend on all-target-librx.
-
-Mon Oct 28 17:32:46 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* configure.in:  Exclude mmalloc from i386-windows.
-
-Thu Oct 24 09:22:46 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* Undo my previous change.
-
-Thu Oct 24 12:12:04 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): Pass down GCC_FOR_TARGET
-	unconditionally.
-	(MAKEOVERRIDES): Define (revert this part of October 18 change).
-
-Thu Oct 24 09:02:07 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* Makefile.in (FLAGS_TO_PASS):  Add $(HOST_FLAGS) to allow the
-	host to add it's own flags.
-
-Tue Oct 22 15:20:26 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Handle GCC_FOR_TARGET like CC_FOR_TARGET.
-
-Fri Oct 18 13:37:13 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (CC_FOR_TARGET): Check for xgcc, not Makefile.
-	(CXX_FOR_TARGET): Likewise.
-	(GCC_FOR_TARGET): Define.
-	(BASE_FLAGS_TO_PASS): Remove GCC_FOR_TARGET.
-	(EXTRA_GCC_FLAGS): Define GCC_FOR_TARGET based on whether
-	CC_FOR_TARGET was specified on the command line.
-	(MAKEOVERRIDES): Don't define.
-
-Thu Oct 17 10:27:56 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* configure.in (m32r): Fix spelling of libg++ libs.
-
-Thu Oct 10 10:37:17 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* config.sub (-apple*): Remove, now redundant.
-
-Thu Oct 10 12:30:54 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Don't get confused by CPU-VENDOR-linux-gnu.
-
-	* configure: Rework yesterday's sed script patch.
-
-	* config.sub: Merge with FSF.
-
-Wed Oct  9 17:24:59 1996  Per Bothner  <bothner at deneb.cygnus.com>
-
-	* config.guess:  Merge from FSF.
-
-	1996-09-12  Richard Stallman  <rms at ethanol.gnu.ai.mit.edu>
-	* config.guess: Use pc instead of unknown, for pc clone systems.
-	Change linux to linux-gnu.
-
-	Mon Jul 15 23:51:11 1996  Karl Heuer  <kwzh at gnu.ai.mit.edu>
-	* config.guess: Avoid non-portable tr syntax.
-
-Wed Oct  9 06:06:46 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* test-build.mk (HOLES): Add "xargs" for gdb.
-
-	* configure: Avoid hpux10.20 sed bug.
-
-Tue Oct  8 08:32:48 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* configure.in:  Add support for windows host
-	(that is a build done under the Microsoft build environment).
-
-Tue Oct  8 10:39:08 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in: Replace all uses of srcroot with s, to shrink
-	command line lengths.
-
-	Patches from Geoffrey Noer <noer at cygnus.com>:
-	* configure.in: If configuring for newlib, pass --with-newlib to
-	subdirectories.
-	* Makefile.in (CC_FOR_TARGET): If winsup/Makefile exists, pass a
-	-Bnewlib/ and -Lwinsup to gcc.
-	(CXX_FOR_TARGET): Likewise.
-
-Mon Oct  7 10:59:35 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (ETC_SUPPORT): Add configure.
-
-Fri Oct  4 12:22:58 1996  Angela Marie Thomas (angela at cygnus.com)
-
-	* configure.in: Use config/mh-dgux386 for i[345]86-dg-dgux
-	host configuration file.
-
-Thu Oct  3 09:28:25 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in: Break mn10x00 support into separate
-	mn10200 and mn10300 configurations.
-	* config.sub: Likewise.
-
-Wed Oct  2 22:27:52 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in: Add lots of stuff to noconfigdirs for
-	the mn10x00 targets.
-
-	* config.sub, configure.in: Add mn10x00 support.
-
-Wed Oct  2 15:52:36 1996  Klaus Kaempf  <kkaempf at progis.de>
-
-	* make-all.com: Call conf-a-gas, not config-a-gas.
-
-Tue Oct  1 01:28:41 1996  James G. Smith  <jsmith at cygnus.co.uk>
-
-	* configure.in (noconfigdirs): Don't build libgloss for arm-coff
-	targets.
-
-Mon Sep 30 14:24:01 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-README: Add much more detail for native PowerMac.
-	* mpw-install: New file.
-	* mpw-configure: Add --norecursion and --help options.
-	* mpw-config.in: Translate readme and install files when
-	copying to objdir.
-	* mpw-build.in: Don't always depend on byacc and flex.
-	(install-only-top): New action.
-
-Fri Sep 27 17:39:44 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* configure.in:  You can now configure GDB for the v850.
-
-Tue Sep 24 19:05:12 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* configure.in (noconfigdirs): Don't configure any C++ dirs
-	if targeting D10V.
-
-Tue Sep 17 12:15:31 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Recognize mips64vr5000.
-
-Mon Sep 16 17:00:52 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Use a single line for host_tools and native_only.
-
-Mon Sep  9 12:21:30 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config.sub, configure.in: Add entries for m32r.
-
-Thu Sep  5 13:52:47 1996  Tom Tromey  <tromey at creche.cygnus.com>
-
-	* Makefile.in (inet-install): Don't run install-gzip.
-
-Wed Sep  4 17:26:13 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* configure.in:  Don't config lots of things for *-*-windows*.
-
-Sat Aug 31 11:45:57 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-config.in: Test for mpw-true, true, and null-command scripts.
-	(host_libs, host_tools): Copy from configure.in.
-	* mpw-configure: Don't complain about directories not found.
-
-Thu Aug 29 16:44:58 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (i[345]86): Recognize i686 for pentium pro.
-	(i[3456]86-*-dgux*): Use config/mh-sysv for the host configuration
-	file.
-
-	* config.guess (i[345]86): Ditto.
-
-Mon Aug 26 18:34:42 1996  Martin M. Hunt  <hunt at pizza.cygnus.com>
-
-	* configure.in (noconfigdirs): Removed gdb for D10V.
-
-Thu Aug 22 17:13:52 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* configure.in: Remove ld, target-libio, target-libg++, and
-	target-libstdc++ from noconfigdirs.
-
-Wed Aug 21 18:56:38 1996  Fred Fish  <fnf at cygnus.com>
-
-	* configure: Fix three locations where shell scripts were
-	being run directly rather than with config_shell.
-
-Tue Aug 20 13:08:47 1996  J.T. Conklin  <jtc at hippo.cygnus.com>
-
-	* configure.in (v850-*-*): Set up initial $noconfigdirs.
-	* config.sub (basic_machine): Recognize v850.
-
-Thu Aug 15 12:19:33 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Handle multiple enable/disable options and
-	pass them down recursively, handle -c and -s flags appropriately
-	depending on choice of compiler, add escape mechanism for
-	quoted arguments to gC.
-
-Mon Aug 12 13:15:13 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (powerpc*-*-*): For eabi, system V.4, Linux, and
-	solaris targets, use config/mt-ppc to set C{,XX}FLAGS_FOR_TARGETS
-	so that -mrelocatable-lib and -mno-eabi are used.
-
-	* Makefile.in (CONFIGURE_TARGET_MODULES): If target compiler does
-	not support --print-multi-lib, don't abort.
-
-Thu Aug  8 12:18:59 1996  Klaus Kaempf  <kkaempf at progis.de>
-
-	* make-all.com: Run config-a-gas.
-	* setup.com: Don't copy subdirectory files around.
-
-Tue Jul 30 17:49:31 1996  Brendan Kehoe  <brendan at cygnus.com>
-
-	* configure.in (*-*-ose): Remove exclusion of libgloss for this
-	target, it now compiles correctly.
-
-Sat Jul 27 15:10:43 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-config.in: Generate Mac include for elf/dwarf2.h.
-
-Tue Jul 23 10:47:04 1996  Martin M. Hunt  <hunt at pizza.cygnus.com>
-
-	* configure.in (d10v-*-*): Remove ld from $noconfigdirs.
-
-Mon Jul 22 13:28:51 1996  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* configure.in (native_only): Add prms.
-
-Mon Jul 22 12:27:58 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (GAS_SUPPORT_DIRS): Add make-all.com and setup.com.
-	(BINUTILS_SUPPORT_DIRS): Likewise.
-
-Thu Jul 18 12:55:40 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (d10v-*-*): Don't configure ld or gdb until the
-	d10v support is added.
-
-Wed Jul 17 14:33:09 1996  Martin M. Hunt  <hunt at pizza.cygnus.com>
-
-	* configure.in (d10v-*-*): New target.
-
-Mon Jul 15 11:53:00 1996  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess (HP 9000/811): Recognize this as a PA1.1
-	machine.
-
-Fri Jul 12 23:21:17 1996  Ken Raeburn  <raeburn at cygnus.com>
-
-	* Makefile.in (do-tar-gz): New target, split out from tail end of
-	taz target.  Run each command separately, don't use pipes.
-	(taz): Use it.
-
-Fri Jul 12 12:08:04 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Look for g-mpw-make.sed in config/mpw.
-	* mpw-build.in: No builds should depend on building byacc or flex,
-	they are assumed to be installed already.
-
-Fri Jul 12 09:52:52 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in (CONFIGURE_TARGET_MODULES): Set r environment
-	variable that CC_FOR_TARGET needs.
-
-Thu Jul 11 10:09:45 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in (CONFIGURE_TARGET_MODULES): Determine if the multlib
-	options have changed since the last time the subdirectory was
-	configured, and if it has, reconfigure.
-	(CLEAN_TARGET_MODULES): Delete multilib.out and tmpmulti.out, which
-	CONFIGURE_TARGET_MODULES uses to remember the old multilib options.
-
-Wed Jul 10 18:56:59 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* Makefile.in (ALL_MODULES,CROSS_CHECK_MODULES,INSTALL_MODULES,
-	CLEAN_MODULES): Add bash.
-	(all-bash): New target.
-
-Mon Jul  8 17:33:14 1996  Jim Wilson  <wilson at cygnus.com>
-
-	* configure.in (mips-sgi-irix6*): Use mh-irix6 instead of mh-irix5.
-
-Mon Jul  1 13:31:35 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config.sub (basic_machine): Recognize d10v as a valid processor.
-
-Fri Jun 28 12:14:35 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Add support for --bindir.
-	* mpw-build.in: Use a GCC-specific build script for GCC actions.
-
-Wed Jun 26 17:20:12 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: add bash, time, gawk to list of hosttools and things
-	to only build for native toolchains
-
-Tue Jun 25 23:09:03 1996  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* Makefile.in (docdir): Remove.
-
-Tue Jun 25 19:00:08 1996  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* Makefile.in (datadir): Set to $(prefix)/share.
-
-Mon Jun 24 23:26:07 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: build diff and patch for cygwin32-hosted
-	toolchains.
-
-Mon Jun 24 15:01:12 1996  Joel Sherrill  <joel at merlin.gcs.redstone.army.mil>
-
-	* config.sub: Accept -rtems*.
-
-Sun Jun 23 22:41:54 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: enable dosrel for cygwin32-hosted builds,
-		remove diff from the list of things not buildable
-		via Canadian Cross
-
-Sat Jun 22 11:39:01 1996  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (TARGET_SUBDIR): Move comment to previous line so we
-	don't get ". ".
-
-Fri Jun 21 17:24:48 1996  Jim Wilson  <wilson at cygnus.com>
-
-	* configure.in (mips*-sgi-irix6*): Set noconfigdirs appropriately.
-
-Thu Jun 20 16:57:40 1996  Ken Raeburn  <raeburn at cygnus.com>
-
-	* Makefile.in (taz): Handle case where tex3patch didn't even get
-	checked out.  Also, if it was found, put the symlink in a new util
-	subdirectory.
-
-Thu Jun 20 12:20:33 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config.guess (*:Linux:*:*): Add support for PowerPC Linux.
-
-Tue Jun 18 14:24:12 1996  Klaus Kaempf  (kkaempf at progis.de)
-
-	* config.sub: Recognize -openvms.
-	* configure.in (alpha*-*-*vms*): Set noconfigdirs.
-	* make-all.com, setup.com: New files.
-
-Mon Jun 17 16:34:46 1996  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (taz): tex3patch moved to texinfo/util.
-
-Sat Jun 15 17:13:25 1996  Geoffrey Noer <noer at cygnus.com>
-
-	* configure: enable_gdbtk=no for cygwin32-hosted toolchains
-	* configure.in: remove make from disable-if-Can-Cross list
-		enable gdb if ${host} and ${target} are cygwin32
-
-Fri Jun  7 18:16:52 1996  Harlan Stenn <harlan at pfcs.com>
-
-	* config.guess (i?86-ncr-sysv*):  Emit minor release numbers.
-	Recognize the NCR 4850 machine and NCR Pentium-based platforms.
-
-Wed Jun  5 00:09:17 1996  Per Bothner  <bothner at wombat.gnu.ai.mit.edu>
-
-	* config.guess:  Combine mips-mips-riscos cases, and use cpp to
-	distinguish sysv/svr4/bsd variants.
-	Based on a patch from Harlan Stenn <harlan at pfcs.com>.
-
-Fri Jun  7 14:24:49 1996  Tom Tromey  <tromey at creche.cygnus.com>
-
-	* configure.in: Added copyright notice.
-	* move-if-change: Added copyright notice.
-
-Thu Jun  6 16:27:05 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (powerpcle-*-solaris*): Until we get shared
-	libraries working, don't build gdb, sim, make, tcl, tk, or
-	expect.
-
-Tue Jun  4 20:41:45 1996  Per Bothner  <bothner at deneb.cygnus.com>
-
-	* config.guess:  Merge with FSF:
-
-	Mon Jun  3 08:49:14 1996  Karl Heuer  <kwzh at gnu.ai.mit.edu>
-	* config.guess (*:Linux:*:*): Add guess for sparc-unknown-linux.
-
-	Fri May 24 18:34:53 1996  Roland McGrath  <roland at delasyd.gnu.ai.mit.edu>
-	* config.guess (AViiON:dgux:*:*): Fix typo in recognizing mc88110.
-
-	Fri Apr 12 20:03:59 1996  Per Bothner  <bothner at spiff.gnu.ai.mit.edu>
-	* config.guess:  Combine two OSF1 rules.
-	Also recognize field test versions.  From mjr at zk3.dec.com.
-	* config.guess (dgux):  Use /usr/bin/uname rather than uname,
-	because GNU uname does not support -p.  From pmr at pajato.com.
-
-Tue Jun  4 11:07:25 1996  Tom Tromey  <tromey at csk3.cygnus.com>
-
-	* Makefile.in (MAKEDIRS): Removed $(tooldir).
-
-Tue May 28 12:30:50 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-README: Document GCCIncludes.
-
-Sun May 26 15:16:27 1996  Fred Fish  <fnf at cygnus.com>
-
-	* configure.in (alpha-*-linux*): Set enable_shared to yes.
-
-Tue May 21 15:41:39 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Handle --enable-FOO and --disable-FOO.
-
-Mon May 20 10:12:29 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in (*-*-cygwin32): Configure make.
-
-Tue May  7 14:19:42 1996  Tom Tromey  <tromey at snuffle.cygnus.com>
-
-	* Makefile.in (inet-install): Quote value of INSTALL_MODULES.
-
-Fri May  3 08:57:17 1996  Tom Tromey  <tromey at lisa.cygnus.com>
-
-	* Makefile.in (all-inet): Depend on all-perl.
-
-	* Makefile.in (inet-install): New target.
-
-	* Makefile.in (all-inet): Depend on all-tcl.
-	(all-inet): Depend on all-send-pr.
-
-Tue Apr 30 13:55:51 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (powerpcle-*-solaris*): Turn off tk and tcl
-	temporarily.
-
-Thu Apr 25 11:48:20 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't configure --with-gnu-ld on AIX.
-
-Thu Apr 25 06:33:36 1996  Michael Meissner  <meissner at wogglebug.tiac.net>
-
-	* configure.in (powerpcle-*-solaris*): Turn off gdb temporarily.
-
-Tue Apr 23 09:07:39 1996  Tom Tromey  <tromey at creche.cygnus.com>
-
-	* Makefile.in (ALL_MODULES): Added all-inet.
-	(CROSS_CHECK_MODULES): Added check-inet.
-	(INSTALL_MODULES): Added install-inet.
-	(CLEAN_MODULES): Added clean-inet.
-	(all-indent): New target.
-
-	* configure.in (host_tools): Added inet.
-	(native_only): Added inet.
-	(noconfigdirs): Added inet.
-
-Fri Apr 19 15:35:29 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't configure libgloss if we are not configuring
-	newlib.
-
-Wed Apr 17 19:30:01 1996  Rob Savoye  <rob at chinadoll.cygnus.com>
-
-	* configure.in: Don't configure libgloss for unsupported
-	architectures.
-
-Tue Apr 16 11:17:05 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in (CLEAN_MODULES): Add clean-apache.
-
-Mon Apr 15 15:09:05 1996  Tom Tromey  <tromey at creche.cygnus.com>
-
-	* Makefile.in (ALL_MODULES): Include all-apache.
-	(CROSS_CHECK_MODULES): Include check-apache.
-	(INSTALL_MODULES): Include install-apache.
-	(all-apache): New target.
-
-	* configure.in: Added apache everywhere perl is seen.
-
-Mon Apr 15 14:59:13 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in: Add support for clean-{module} and
-	clean-target-{module} rules.
-
-Wed Apr 10 21:37:41 PDT 1996  Marilyn E. Sander <msander at cygnus.com>
-
-	* configure.in (*-*-ose) do not build libgloss.
-
-Mon Apr  8 16:16:20 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config.guess (prep*:SunOS:5.*:*): Turn into
-	powerpele-unknown-solaris2.
-
-Mon Apr  8 14:45:41 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Permit --enable-shared to specify a list of
-	directories.
-
-Fri Apr  5 08:17:57 1996  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (host==solaris): Pass only the first word of $CC
-	to /usr/bin/which when checking if we're using /usr/ccs/bin/cc.
-
-Fri Apr  5 03:16:13 1996  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): pass down $(MAKE).
-
-Thu Mar 28 14:11:11 1996  Tom Tromey  <tromey at creche.cygnus.com>
-
-	* Makefile.in (ALL_MODULES): Include all-perl.
-	(CROSS_CHECK_MODULES): Include check-perl.
-	(INSTALL_MODULES): Include install-perl.
-	(ALL_X11_MODULES): Include all-guile.
-	(CHECK_X11_MODULES): Include check-guile.
-	(INSTALL_X11_MODULES): Include install-guile.
-	(all-perl): New target.
-	(all-guile): New target.
-
-	* configure.in (host_tools): Include perl and guile.
-	(native_only): Include perl and guile.
-	(noconfigdirs): Don't build guile and perl; no ports have been
-	done.
-
-Tue Mar 26 21:18:50 1996  Andrew Cagney  <cagney at kremvax.highland.com.au>
-
-	* configure (--enable-*): Handle quoted option lists such as
-	--enable-sim-cflags='-g0 -O' better.
-
-Thu Mar 21 11:53:08 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in ({,inst}all-target): New rule so we can make and
-	install all of the target directories easily.
-
-Wed Mar 20 18:10:57 1996  Andreas Schwab  <schwab at issan.informatik.uni-dortmund.de>
-
-	* configure.in: Add missing global flag in sed substitution when
-	deleting `target-' from ${configdirs}.
-
-Thu Mar 14 19:15:06 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (DO_X): Don't get confused if CC contains `=' in an
-	option.
-
-	* configure.in (mips*-nec-sysvr4*): Use a host_makefile_frag of
-	config/mh-necv4.
-
-	* install.sh: Correct misspelling of transformbasename.
-
-	* config.guess: Recognize mips-*-sysv*.
-
-Mon Mar 11 15:36:42 1996  Dawn Perchik  <dawn at critters.cygnus.com>
-
-	* config.sub: Recognize mon960.
-
-Sun Mar 10 13:18:38 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Restore Canadian Cross handling of BISON and LEX,
-	removed in Feb 20 change.
-
-Fri Mar  8 20:07:09 1996  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* README:  Suggestions from Torbjorn Granlund <tege at matematik.su.se>:
-	Mention make install.  Remove the old copyright date as well the
-	clumsy and rather pointless copyright on the README file.
-
-Fri Mar  8 17:51:35 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in ($(CONFIGURE_TARGET_MODULES)): If there is a
-	Makefile after running symlink-tree, then run `make distclean' to
-	avoid clobbering any generated files in srcdir.
-
-Tue Mar  5 08:21:44 1996  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in (m68k-*-netbsd*): Build everything now.
-
-Wed Feb 28 12:25:46 1996  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* Makefile.in (taz): Fix quoting.
-
-Tue Feb 27 11:33:57 1996  Doug Evans  <dje at charmed.cygnus.com>
-
-	* configure.in (sparclet-*-*): Build everything now.
-
-Tue Feb 27 14:31:51 1996  Andreas Schwab  <schwab at issan.informatik.uni-dortmund.de>
-
-	* configure.in (m68k-*-linux*): New host.
-
-Mon Feb 26 14:32:44 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Check for bison before byacc.
-
-Tue Feb 20 23:12:35 1996  Stu Grossman  (grossman at critters.cygnus.com)
-
-	* Makefile.in configure:  Change the way LEX and BISON/YACC are
-	set.  configure now defines DEFAULT_LEX and DEFAULT_YACC by
-	searching PATH.  These are used as fallbacks by Makefile.in if
-	flex/bison/byacc aren't in objdir.
-
-Mon Feb 19 11:45:30 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in: Make everything which depends upon all-bfd also
-	depend upon all-opcodes, in case --with-commonbfdlib is used.
-
-Thu Feb 15 19:50:50 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (host *-*-cygwin32): Don't build gdb if we are
-	building NT native compilers on Unix.
-
-Thu Feb 15 17:42:25 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't get CC from the host Makefile fragment if we
-	can find gcc in PATH, or if this is a Canadian Cross.  Move the
-	Solaris test for /usr/ucb/cc to the post target script, just after
-	the compiler sanity test.
-
-Wed Feb 14 16:57:40 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Merge with FSF.
-
-Tue Feb 13 14:27:48 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (RPATH_ENVVAR): New variable.
-	(REALLY_SET_LIB_PATH): Use it.
-	* configure.in: On HP/UX, set RPATH_ENVVAR to SHLIB_PATH.
-
-Mon Feb 12 15:28:49 1996  Doug Evans  <dje at charmed.cygnus.com>
-
-	* config.sub, configure.in: Recognize sparclet cpu.
-
-Mon Feb 12 15:33:59 1996  Christian Bauernfeind <chrisbfd at theorie3.physik.uni-erlangen.de>
-
-	* config.guess:  Support m68k-cbm-sysv4.
-
-Sat Feb 10 12:06:42 1996  Andreas Schwab  <schwab at issan.informatik.uni-dortmund.de>
-
-	* config.guess (*:Linux:*:*): Guess m68k-unknown-linux and
-	m68k-unknown-linuxaout from linker help string.  Put quotes around
-	$ld_help_string.
-
-Thu Dec  7 09:03:24 1995  Tom Horsley  <Tom.Horsley at mail.hcsc.com>
-
-	* config.guess (powerpc-harris-powerunix): Add guess for port
-	to new target.
-
-Thu Feb  8 15:37:52 1996  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* config.guess (UNAME_VERSION): Recognize X4.x as an OSF version.
-
-Mon Feb  5 16:36:51 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: If --enable-shared was used, set SET_LIB_PATH to
-	$(REALLY_SET_LIB_PATH) in Makefile.
-	* Makefile.in (SET_LIB_PATH): New variable.
-	(REALLY_SET_LIB_PATH): New variable.
-	($(DO_X)): Use $(SET_LIB_PATH).
-	(install.all, gcc-no-fixedincludes, $(ALL_MODULES)): Likewise.
-	($(NATIVE_CHECK_MODULES), $(CROSS_CHECK_MODULES)): Likewise.
-	($(INSTALL_MODULES), $(CONFIGURE_TARGET_MODULES)): Likewise.
-	($(ALL_TARGET_MODULES), $(CHECK_TARGET_MODULES)): Likewise.
-	($(INSTALL_TARGET_MODULES), $(ALL_X11_MODULES)): Likewise.
-	($(CHECK_X11_MODULES), $(INSTALL_X11_MODULES)): Likewise.
-	(all-gcc, all-bootstrap, check-gcc, install-gcc): Likewise.
-	(install-dosrel): Likewise.
-	(all-opcodes): Depend upon all-libiberty.
-
-Sun Feb  4 16:51:11 1996  Steve Chamberlain  <sac at slash.cygnus.com>
-
-	* config.guess (*:CYGWIN*): New
-
-Sat Feb  3 10:42:35 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in (all-target-winsup): All all-target-libiberty.
-
-Fri Feb  2 17:58:56 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* configure.in (noconfigdirs): Add missing # in front of comment.
-
-Thu Feb  1 14:38:13 1996  Geoffrey Noer  <noer at cygnus.com>
-
-	* configure.in: add second pass to things added to noconfigdirs
-	so *-gm-magic can exclude libgloss properly.
-
-Thu Feb  1 11:10:16 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure (extralibs_name, rez_name): Set correctly
-	for MWC68K compiler.
-
-	* mpw-README: Add more info on the necessary build tools.
-
-Thu Feb  1 10:22:38 1996  Steve Chamberlain  <sac at slash.cygnus.com>
-
-	* configure.in, config.sub: Recognize cygwin32.
-
-Wed Jan 31 14:17:10 1996  Richard Henderson  <rth at tamu.edu>
-
-	* config.guess, config.sub: Recognize A/UX.
-
-Wed Jan 31 13:52:14 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Merge with gcc/config.sub.
-
-Thu Jan 25 11:01:10 1996  Raymond Jou  <rjou at mexican.cygnus.com>
-
-	* mpw-build.in (do-binutils): Add build of stamps.
-
-Thu Jan 25 17:05:26 1996  James G. Smith  <jsmith at cygnus.co.uk>
-
-	* config.sub: Add recognition for mips64vr4100*-* targets.
-
-Wed Jan 24 12:47:55 1996  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* test-build.mk: Add checking of `hpux9' rather than just `hpux'.
-	Add creation of gconfigargs with `--enable-shared' turned on.
-	($(host)-stamp-stage2-configured): Pass $(gconfigargs).
-	($(host)-stamp-stage3-configured): Likewise.
-	(HOLES): Add chatr and ldd.
-	(i386-ncr-sysv4.3*): Add use of /usr/ccs/bin in the PATH and HOLE_DIRS.
-
-Wed Jan 24 20:32:30 1996  Torbjorn Granlund  <tege at noisy.matematik.su.se>
-
-	* configure: Pass --nfp to recursive configures.
-
-Mon Jan 22 10:41:56 1996  Steve Chamberlain  <sac at slash.cygnus.com>
-
-	* Makefile.in (DLLTOOL): New.
-	(DLLTOOL_FOR_TARGET): New.
-	(EXTRA_HOST_FLAGS): Pass down DLLTOOL.
-	(EXTRA_TARGET_FLAGS): Ditto.
-	(EXTRA_GCC_FLAGS): Ditto.
-	(CONFIGURE_TARGET_MODULES): Ditto.
-	(DO_X): Ditto.
-	* configure: Add DLLTOOL.
-
-Fri Jan 19 13:30:15 1996  Stan Shebs  <shebs at andros.cygnus.com>
-
-	SCO OpenServer 5 changes from Robert Lipe <robertl at dgii.com>:
-	* configure.in (i[345]86-*-sco3.2v5*): Use mh-sysv instead of
-	mh-sco, since old workarounds no longer needed, and don't
-	build ld, since libraries have weak symbols in COFF.
-
-Sun Jan 14 23:01:31 1996  Fred Fish  <fnf at cygnus.com>
-
-	* Makefile.in (CONFIGURE_TARGET_MODULES): Add missing ';'.
-
-Fri Jan 12 15:25:35 1996  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Make sure that ${CC} can be used to compile an
-	executable.
-
-Sat Jan  6 07:23:33 1996  Michael Meissner  <meissner at wogglebug.tiac.net>
-
-	* Makefile.in (all-gdb): Depend on $(GDB_TK).
-	* configure (GDB_TK): Set GDB_TK to either "all-tcl all-tk" or
-	nothing depending on whether gdbtk is being built.
-
-Wed Jan  3 17:54:41 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* Makefile.in (newlib.tar.gz): Delete building of newlib's info files.
-
-Mon Jan  1 19:09:14 1996  Brendan Kehoe  <brendan at rtl.cygnus.com>
-
-	* configure.in (noconfigdirs): Put ld or gas in this early, if the
-	user specifically used --with-gnu-ld=no or --with-gnu-as=no.
-
-Sat Dec 30 16:08:57 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config-ml.in: Add support for
-	--disable-{softfloat,m68881,m68000,m68020} on m68*-*-*.
-	Simplify setting of multidirs from --disable-foo.
-
-Fri Dec 29 07:56:11 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Makefile.in (EXTRA_GCC_FLAGS): If any of the make variables
-	LANGUAGES, BOOT_CFLAGS, STMP_FIXPROTO, LIMITS_H_TEST,
-	LIBGCC1_TEST, LIBGCC2_CFLAGS, LIBGCC2_INCLUDES, and ENQUIRE are
-	non-empty, pass them on to the	GCC make.
-	(all-bootstrap): New rule that is like all-gcc, except it executes
-	the GCC bootstrap rule instead of the GCC all rule.
-
-Wed Dec 27 15:51:48 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config-ml.in (ml_realsrcdir): New, to account for ${subdir}.
-
-Tue Dec 26 11:45:31 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config.guess (AViiON:dgux:*:*): Update from FSF to add pentium
-	DG/UX support.
-
-Fri Dec 15 10:01:27 1995  Stan Cox  <coxs at dg-rtp.dg.com>
-
-	* config.sub (i*86*) Change [345] to [3456]
-
-Wed Dec 20 17:41:40 1995  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* configure.in (noconfigdirs): Add gas or ld if --with-gnu-as=no or
-	--with-gnu-ld=no.
-
-Wed Dec 20 15:15:35 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config-ml.in (rs6000*, powerpc*): Add switches to control which
-	AIX multilibs get built.
-
-Mon Dec 18 17:55:46 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (i386-win32): Don't build expect if we're not
-	building the tcl subdir.
-
-Mon Dec 18 11:47:19 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* Makefile.in: (configure-target-examples, all-target-examples):
-	New targets, configure and build example programs.
-
-Fri Dec 15 16:13:03 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: If an mpw-config.in generated a file mk.sed,
-	use it as input to sedit the generated MPW makefile.
-	* mpw-README: Add a suggestion about Gestalt.h.
-
-Wed Dec 13 16:43:51 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Accept *-*-ieee*.
-
-Tue Dec 12 11:52:57 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (local-distclean): Remove $(TARGET_SUBDIR).  From
-	Ronald F. Guilmette <rfg at monkeys.com>.
-
-Mon Dec 11 15:31:58 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (host==powerpc-pe): Add many directories to noconfigdirs
-	for powerpc-pe native.
-	(target==i386-win32): add tcl, make to noconfigdirs if canadian cross.
-	(target==powerpc-pe): duplicate i386-win32 entry.
-
-Sat Dec  9 14:58:28 1995  Jim Wilson  <wilson at chestnut.cygnus.com>
-
-	* configure.in (noconfigdirs): Exclude target-newlib for all versions
-	of vxworks, not just vxworks5.1.
-
-Mon Dec  4 12:05:40 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Add support for exec-prefix.
-
-Mon Dec  4 10:22:50 1995  Jeffrey A. Law  <law at rtl.cygnus.com>
-
-	* config.guess: Recognize HP model 816 machines as having
-	a PA1.1 processor.
-
-Mon Dec  4 12:38:15 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Ignore new autoconf configure options.
-
-Thu Nov 30 16:57:33 1995  Per Bothner  <bothner at wombat.gnu.ai.mit.edu>
-
-	* config.guess:  Recognize Pentium under SCO.
-	From Robert Lipe <robertl at arnet.com>.
-
-Wed Nov 29 13:49:08 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in (noconfigdirs): Disable target-libio on v810-*-*.
-
-Wed Nov 29 12:12:01 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't configure gas for alpha-dec-osf*.
-
-Tue Nov 28 17:16:48 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Default to --with-stabs for some targets for which
-	it makes sense: mips*-*-*, alpha*-*-osf*, i[345]86*-*-sysv4* and
-	i[345]86*-*-unixware*.
-
-Mon Nov 27 13:44:15 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config-ml.in: Get list of multidirs using gcc --print-multi-lib
-	rather than basing it on the target.  Simplify handling of options
-	controlling which directories to configure.  Remove extraneous
-	slash in multi-clean target.
-
-Fri Nov 24 17:29:29 1995  Doug Evans  <dje at deneb.cygnus.com>
-
-	* config-ml.in: Prefix more variables with ml_ so they don't collide
-	with configure's.
-
-Wed Nov 22 11:27:02 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Don't turn -v into --v.
-
-Tue Nov 21 16:48:02 1995  Doug Evans  <dje at deneb.cygnus.com>
-
-	* configure.in (targargs): Fix typo.
-
-	* Makefile.in (DEVO_SUPPORT): Add symlink-tree.
-
-Tue Nov 21 14:08:28 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Strip --host and --target options from
-	CONFIG_ARGUMENTS, and always configure for --host only.  Add
-	--with-cross-host option when building with a cross-compiler.
-	* configure: Canonicalize the arguments put into config.status by
-	always using `=' for an option with an argument.  Pass a presumed
-	--host or --target explicitly.
-
-Fri Nov 17 17:50:30 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* config.sub: Merge -macos*, -magic*, -pe*, and -win32 cases
-	into general OS recognition case.
-
-Fri Nov 17 17:42:25 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (target_configdirs): add target-winsup only
-	for win32 target systems.
-
-Thu Nov 16 14:04:47 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (all-target-libgloss): Depend upon
-	configure-target-newlib, since when libgloss is built it looks to
-	see if the newlib directory exists.
-
-Wed Nov 15 14:47:52 1995  Ken Raeburn  <raeburn at cygnus.com>
-
-	* Makefile.in (DEVO_SUPPORT): Use config-ml.in instead of
-	cfg-ml-*.in.
-
-Wed Nov 15 11:45:23 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Handle LD and LD_FOR_TARGET when configuring a
-	Canadian Cross.
-
-Tue Nov 14 14:56:11 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (target_libs): add target-winsup.
-	(target==i386-win32): add patch diff flex make to $noconfigdirs.
-	(target==ppcle-pe): remove ld from $noconfigdirs.
-
-Tue Nov 14 01:25:50 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* Makefile.in (CONFIGURE_TARGET_MODULES): Pass --with-target-subdir.
-	Preserve relative path names in $srcdir.  Build symlink tree if
-	configuring cross target dir and srcdir=. (= no VPATH support).
-	(configure-target-libg++): Depend on configure-target-librx.
-	* cfg-ml-com.in, cfg-ml-pos.in: Deleted.
-	* config-ml.in: New file.
-	* symlink-tree: New file.
-	* configure: Ensure srcdir="." if that's what it is.
-
-Mon Nov 13 12:34:20 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-README: Clarify some phrasing, add notes about CodeWarrior
-	includes and FLEX_SKELETON setting.
-	* mpw-configure (--with-gnu-ld): New option, controls whether
-	to use PPCLink or ld with PowerMac GCC.
-	* mpw-build.in (all-grez, do-grez, install-grez): New targets.
-	* mpw-config.in: Configure grez if targeting Mac.
-
-	* config.sub: Accept pmac and pmac-mpw as names for PowerMacs,
-	accept mpw and mac-mpw as names for m68k Macs, change macos7 to
-	just macos.
-	* configure.in: Configure grez resource compiler if targeting Mac.
-	* Makefile.in (all-grez, install-grez): New targets.
-
-Wed Nov  8 17:33:51 1995  Jason Merrill  <jason at yorick.cygnus.com>
-
-	* configure: CXX defaults to gcc, not g++.  If we find
-	gcc in the path, set CC to gcc -O2.
-
-Tue Nov  7 15:45:17 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Default ${build} correctly.  Avoid picking up extra
-	spaces when reading CC and CXX from Makefile.  When doing a
-	Canadian Cross, use plausible default values for numerous
-	variables.
-	* configure.in: When doing a Canadian Cross, don't try to
-	configure tools whose configure script can't handle it.
-
-Mon Nov  6 19:32:17 1995  Jim Wilson  <wilson at chestnut.cygnus.com>
-
-	* cfg-ml-com.in (sh-*-*): Add m2 and ml/m2 to multidirs.
-
-Sun Nov  5 00:15:41 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* configure:  Remove dubious bug reporting address.
-
-Fri Nov  3 08:17:54 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in ($(CONFIGURE_TARGET_MODULES)):  If subdir has
-	configure script, run that instead of this directory's configure.
-	In either case, print a message that we're configuring the sub-dir.
-
-Thu Nov  2 23:23:36 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* configure.in: Before checking for the existence of various files,
-	use sed to filter out "target-".
-
-Thu Nov  2 13:24:56 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (DO_X): Split rule to decrease command line length
-	for systems with small ARG_MAX values.  From phdm at info.ucl.ac.be
-	(Philippe De Muyter).
-
-Wed Nov  1 15:18:35 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Makefile.in (all-patch): depend on all-libiberty.
-
-Wed Nov  1 12:23:20 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: If the only directory in target_configdirs which
-	actually exists is libiberty, then set target_configdirs to empty,
-	to avoid trying to build a target libiberty in a gas or gdb
-	distribution.
-
-Tue Oct 31 17:52:39 1995  J.T. Conklin  <jtc at slave.cygnus.com>
-
-	* configure.in (host_makefile_frag): Use m68k-sun-sunos* instead
-	of m68k-sun-* when selecting mh-sun3 to avoid matching NetBSD/sun3
-	systems.
-
-Tue Oct 31 16:57:32 1995  Jim Wilson  <wilson at chestnut.cygnus.com>
-
-	* configure.in (copy_dirs): Use sys-include instead of include
-	for --with-headers option.
-
-Tue Oct 31 10:29:36 1995  steve chamberlain  <sac at slash.cygnus.com>
-
-	* Makefile.in, configure.in: Make winsup builds work with
-	new scheme.
-
-Mon Oct 30 18:57:09 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Build the linker on AIX.
-
-Mon Oct 30 12:27:16 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in (CC_FOR_TARGET, CXX_FOR_TARGET):  Add $(TARGET_SUBDIR)
-	where needed.
-
-Mon Oct 30 12:45:25 1995  Doug Evans  <dje at cygnus.com>
-
-	* Makefile.in (all-gcc): Fix typo.
-
-Sat Oct 28 10:27:59 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in ($(CHECK_TARGET_MODULES)):  Fix typo.
-
-Fri Oct 27 23:14:12 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* configure.in:  Rename libFOO to target-libFOO, and xiberty
-	to target-xiberty, to provide more flexibility.
-	(target_subdir):  Define.  Create if cross.
-	Set TARGET_SUBDIR in Makefile to ${target_subdir}.
-	* Makefile.in:  Rename all-libFOO -> all-target-libFOO, all-xiberty
-	-> all-target-libiberty, configure-libFOO -> configure-target-libFOO,
-	check-libFOO -> check-target-libFOO, etc.
-	($(DO_X)):  Iterate over TARGET_CONFIGDIRS after SUBDIRS.
-	($(CONFIGURE_TARGET_MODULES), $(CHECK_TARGET_MODULES),
-	$(ALL_TARGET_MODULES), $(INSTALL_TARGET_MODULES)): Update accordingly.
-	(configure-target-XXX):  Depend on $(ALL_GCC), not all-gcc, to
-	allow ALL_GCC="" to only configure.
-	(DEVO_SUPPORT):  Add cfg-ml-com.in and cfg-ml-pos.in.
-	(ETC_SUPPORT, ETC_SUPPORT_PFX):  Merge;  update 'taz' accordingly.
-	(LIBGXX_SUPPORT_DIRS):  Remove xiberty.
-
-Sat Oct 28 01:53:49 1995  Ken Raeburn  <raeburn at cygnus.com>
-
-	* Makefile.in (taz): Build "info" in etc explicitly.
-
-Fri Oct 27 09:32:30 1995  Stu Grossman  (grossman at cygnus.com)
-
-	* configure.in:  Make sure that CC is undefined (as opposed to
-	null) if toplevel/config/mh-{host} doesn't define it.  Fixes a
-	problem with autoconf trying to configure on a host without GCC.
-
-Thu Oct 26 22:35:01 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Set host alias from choice of host compiler,
-	only use generic MPW Makefile sed if present, edit a file
-	named "hacked_Makefile.in" instead of "Makefile.in" if present.
-	* mpw-README: Add problem notes about CW6 and CW7.
-
-Thu Oct 26 05:45:10 1995  Ken Raeburn  <raeburn at kr-pc.cygnus.com>
-
-	* Makefile.in (taz): Use ";" instead of ";;".
-
-Wed Oct 25 15:18:24 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in (taz):  Grep for '^diststuff:' or '^info:' in
-	sub-directory Makefiles, instead of using DISTSTUFFDIRS and
-	DISTDOCDIRS.
-	(DISTSTUFFDIRS, DISTDOCDIRS):  Removed - no longer used.
-	(newlib.tar.gz):  Don't pass DISTDOCDIRS to recursive make.
-
-Wed Oct 25 14:43:55 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in (DISTDOCDIRS):  Remove ld gprof bnutils gas libg++ gdb
-	and gnats, because they are now subsumed by DISTSTUFFDIRS.
-	Move bfd to DISTSTUFFDIRS.
-
-Tue Oct 24 18:19:09 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Makefile.in (X11_LIB): Removed.
-	(X11_FLAGS_TO_PASS): pass only X11_EXTRA_CFLAGS and X11_EXTRA_LIBS.
-
-	* configure.in (host_makefile_frag): mh-aix & mh-sun removed.
-
-Sun Oct 22 13:04:42 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* cfg-ml-com.in (powerpc*): Shorten some of the multilib directory
-	names.
-
-Fri Oct 20 18:02:10 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* cfg-ml-com.in (powerpc*-eabi*): Add mcall-aixdesc varients.
-
-Thu Oct 19 10:40:57 1995  steve chamberlain  <sac at slash.cygnus.com>
-
-	* configure.in (i[345]86-*-win32): Always build newlib.
-	Don't configure cvs, autoconf or texinfo.
-	* Makefile.in (LD_FOR_TARGET): New.
-	(BASE_FLAGS_TO_PASS, EXTRA_TARGET_FLAGS, CONFIGURE_TARGET_MODULES):
-	Pass down LD_FOR_TARGET.
-
-Wed Oct 18 15:53:56 1995  steve chamberlain  <sac at slash.cygnus.com>
-
-	* winsup: New directory.
-	* Makefile.in: Build winsup.
-	* configure.in: Winsup is configured when target is win32.
-	Can only build win32 target GDB when native.
-
-Mon Oct 16 09:42:31 1995  Jeffrey A Law  (law at cygnus.com)
-
-	* config.guess: Recognize HP model 819 machines as having
-	a PA 1.1 processor.
-
-Mon Oct 16 10:49:43 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Fix sed loop which substitutes for CC and CXX to
-	avoid bug found in various sed implementations.
-
-Wed Oct 11 16:16:20 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* cfg-ml-com.in (powerpc-*-eabisim): Delete separate rule for
-	simulator.  Use standard powerpc-*-eabi*.
-
-Mon Oct  9 17:21:56 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Stop putting gas and binutils in noconfigdirs for
-	powerpc-*-aix* and rs6000-*-*.
-
-Mon Oct  9 12:38:40 1995  Michael Meissner  <meissner at cygnus.com>
-
-	* cfg-ml-com.in (powerpc*-*-eabisim*): Add support for building
-	-mcall-aixdesc libraries.
-
-Fri Oct  6 16:17:57 1995  Ken Raeburn  <raeburn at cygnus.com>
-
-	Mon Sep 25 22:49:32 1995  Andreas Schwab  <schwab at issan.informatik.uni-dortmund.de>
-
-	* config.sub (arm | armel | armeb): Fix shell syntax.
-
-Fri Oct  6 14:40:28 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* cfg-ml-com.in ({powerpc,rs6000}-ibm-aix*): Add multilibs for
-	-msoft-float and -mcpu=common support.
-	(powerpc*-*-eabisim*): Add support for building -mcall-aix
-	libraries.
-
-Thu Oct  5 13:26:37 1995  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* configure.in: Allow configuration and build of emacs19 for the alpha.
-
-Wed Oct  4 22:05:36 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (CC): Get ^CC, not just any old CC, from
-	${host_makefile_frag}.
-
-Wed Oct  4 21:55:00 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in (CC): Try to get CC from
-	${srcdir}/${host_makefile_frag}, not ${host_makefile_frag}.
-
-Wed Oct  4 21:44:12 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Makefile.in (TARGET_CONFIGDIRS): configure targetdirs
-	only if it exists in $(srcdir).
-
-Wed Oct  4 11:52:31 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: If CC and CXX are not set in the environment, set
-	them, based on either an existing Makefile or on searching for gcc
-	in PATH.  Substitute for CC and CXX in Makefile.
-	* configure.in: Remove libm from target_libs.  Separate
-	target_configdirs from configdirs.  If CC is not set in
-	environment, try to get it from a host Makefile fragment.  Rewrite
-	changes of configdirs to use skipdirs instead.  A few minor
-	tweaks.  Take directories out of target_configdirs as they are
-	taken out of configdirs.  Remove existing Makefile files from
-	subdirectories.  Substitute for TARGET_CONFIGDIRS and
-	CONFIG_ARGUMENTS in Makefile.
-	* Makefile.in (TARGET_CONFIGDIRS): New variable, automatically set
-	by configure.in.
-	(CONFIG_ARGUMENTS): Likewise.
-	(CONFIGURE_TARGET_MODULES): New variable.
-	($(DO_X)): Loop over TARGET_CONFIGDIRS as well as SUBDIRS.
-	($(CONFIGURE_TARGET_MODULES)): New target.
-	(configure-libg++, configure-libio): New targets.
-	(all-libg++): Depend upon configure-libg++.
-	(all-libio): Depend upon configure-libio.
-	(configure-libgloss, all-libgloss): New targets.
-	(configure-libstdc++): New target.
-	(all-libstdc++): Depend upon configure-libstdc++.
-	(configure-librx, all-librx): New targets.
-	(configure-newlib): New target.
-	(all-newlib): Depend upon configure-newlib
-	(configure-xiberty): New target.
-	(all-xiberty): Depend upon configure-xiberty.
-
-Sat Sep 30 04:32:59 1995  Jason Molenda (crash at phydeaux.cygnus.com)
-
-	* configure.in (host i[345]86-*-win32):  Expand the
-	noconfigdirs again.
-
-Thu Sep 28 21:18:49 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-configure: Fix sed command file name.
-
-Thu Sep 28 17:39:56 1995  steve chamberlain  <sac at slash.cygnus.com>
-
-	* configure.in (host i[345]86-*-win32): Reduce the
-	noconfigdirs again.
-
-Wed Sep 27 12:24:00 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Don't configure ld and gdb for powerpc*-*-winnt*
-	or powerpc*-*-pe*, since they are not yet supported.
-
-Tue Sep 26 14:30:01 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	Add PowerMac support and many other enhancements.
-	* mpw-configure: New option --cc to select compiler to use,
-	paste options set according to --cc into the generated
-	Makefile, generate the Makefile by sed'ing the Unix Makefile.in
-	if mpw-make.sed is present.
-	* mpw-config.in: Don't test for gC1, test for mpw-touch,
-	add forward includes for PowerPC include files.
-	* mpw-build.in: Build using Makefile.PPC if present.
-	(do-byacc, etc): Remove separate version resource builds.
-	(do-gas): Build "stamps" before "all".
-	(do-gcc): Build "stamps-h" and "stamps-c" before "all".
-	* mpw-README: Update to reflect --cc option, PowerMac support,
-	and recently-reported compatibility problems.
-
-Fri Sep 22 12:15:42 1995  Doug Evans  <dje at deneb.cygnus.com>
-
-	* cfg-ml-com.in (m68*-*-*): Only build multilibs for
-	embedded m68k systems (-aout, -coff, -elf, -vxworks).
-	(--with-multilib-top): Pass to recursive invocations.
-
-Tue Sep 19 13:51:05 1995  J.T. Conklin  <jtc at blues.cygnus.com>
-
-	* configure.in (noconfigdirs): Disable libg++ and libstdc++ on
-	v810-*-*.
-
-Mon Sep 18 23:08:26 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in (noconfigdirs): Disable bfd, binutils, gas, gcc,
-	gdb, ld and opcodes on v810-*-*.
-
-Tue Sep 12 18:03:31 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (DO_X): Change do-realclean to do-maintainer-clean.
-	(local-maintainer-clean): New target.
-	(maintainer-clean): New target.
-	(realclean): Just depend upon maintainer-clean.
-
-Fri Sep  8 17:11:14 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in (noconfigdirs): Disable gdb on m68k-*-netbsd*.
-
-Fri Sep  8 16:46:29 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Build ld in mips*-*-bsd* case.
-
-Thu Sep  7 20:03:41 1995  Ken Raeburn  <raeburn at cygnus.com>
-
-	* config.sub: Accept -lites* OS.  From Ian Dall.
-
-Fri Sep  1 08:06:58 1995  James G. Smith  <jsmith at beauty.cygnus.com>
-
-	* config.sub: recognise mips64vr4300 and mips64vr4300el as valid
-	targets.
-
-Wed Aug 30 21:06:50 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* configure.in: treat i386-win32 canadian cross the same as
-	i386-go32 canadian cross.
-
-Thu Aug 24 14:53:20 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* cfg-ml-com.in (powerpc*-*-eabisim): Add support for PowerPC
-	running under the simulator to build a reduced set of libraries.
-	(powerpc-*-eabiaix): Add fine grained multilib support added to
-	other powerpc targets yesterday.
-
-Wed Aug 23 09:41:56 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* cfg-ml-com.in (powerpc*): Add support for -disable-biendian,
-	-disable-softfloat, -disable-relocatable, -disable-aix, and
-	-disable-sysv to control which multilib libraries get built.
-
-Thu Aug 17 16:03:41 1995  Ken Raeburn  <raeburn at kr-laptop.cygnus.com>
-
-	* configure: Add Makefile.tem to list of files to remove in trap
-	handler.
-
-Mon Aug 14 19:27:56 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* config.guess (*Linux*):  Add missing "exit"s.
-	Also, need specific check for alpha-unknown-linux (uses COFF).
-
-Fri Aug 11 15:38:20 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* config.guess:  Merge with FSF:
-
-	Wed Jun 28 17:57:27 1995  David Edelsohn  <edelsohn at mhpcc.edu>
-	* config.guess (AIX4): More robust release numbering discovery.
-
-	Thu Jun 22 19:01:24 1995  Kenneth Stailey  (kstailey at eagle.dol-esa.gov)
-	* config.guess (i386-sequent-ptx): Properly get version number.
-
-	Thu Jun 22 18:36:42 1995  Uwe Seimet  (seimet at iris1.chemie.uni-kl.de)
-	* config.guess (mips:*:4*:UMIPS): New case.
-
-Mon Aug  7 09:21:35 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* configure.in (i386-go32 host): Fix typo (deja-gnu -> dejagnu).
-	(i386-win32 host): Likewise.  Don't build readline.
-
-Sat Aug  5 09:51:49 1995  Fred Fish  <fnf at rtl.cygnus.com>
-
-	* Makefile.in (GDBTK_SUPPORT_DIRS):  Define and pass as part of
-	SUPPORT_FILES to submakes.
-
-Fri Aug  4 13:04:36 1995  Fred Fish  <fnf at cygnus.com>
-
-	* Makefile.in (GDB_SUPPORT_DIRS): Add utils.
-	(DEVO_SUPPORT): Add mpw-README, mpw-build.in, mpw-config.h and
-	mpw-configure.
-
-Wed Aug  2 16:32:40 1995  Ken Raeburn  <raeburn at cygnus.com>
-
-	* configure.in (appdirs): Use =, not ==, in test expression when
-	trying to build the text to print in the warning message for
-	Solaris users.
-
-Mon Jul 31 09:56:18 1995  steve chamberlain  <sac at slash.cygnus.com>
-
-	* cfg-ml-com.in (z8k-*-coff): Add 'std' multilib build.
-
-Fri Jul 28 00:16:31 1995  Jeffrey A. Law  <law at rtl.cygnus.com>
-
-	* config.guess: Recognize lynx-2.3.
-
-Thu Jul 27 15:47:59 1995  steve chamberlain  <sac at slash.cygnus.com>
-
-	* config.sub (z8ksim): Deleted
-	(z8k-*-coff): New, this is the one true name of the target.
-
-Thu Jul 27 14:33:33 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* cfg-ml-pos.in (dotdot): Work around SunOS sed bug.
-
-Thu Jul 27 13:31:05 1995  Fred Fish  (fnf at cygnus.com)
-
-	* config.guess (*:Linux:*:*): First try asking the linker what the
-	default object file format is (elf, aout, or coff).  Then if this
-	fails, try previous methods.
-
-Thu Jul 27 11:28:17 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in: Don't build newlib for *-*-vxworks5.1.
-
-Thu Jul 27 11:18:47 1995  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* configure.in: Don't build newlib for a29k-*-vxworks5.1.
-	* test-build.mk: Add setting of --with-headers for a29k-vxworks5.1.
-
-Tue Jul 25 21:25:39 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* cfg-ml-pos.in (MULTITOP): Trim excess trailing "/.".
-
-Fri Jul 21 10:41:12 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* cfg-ml-com.in: New file.
-	* cfg-ml-pos.in: New file.
-
-Wed Jul 19 00:37:27 1995  Jeffrey A. Law  <law at rtl.cygnus.com>
-
-	* COPYING.NEWLIB: Add HP free copyright to list.
-
-Tue Jul 18 10:58:51 1995  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* config.sub: Recognize -eabi* for the system, not just -eabi.
-
-Mon Jul  3 13:44:51 1995  Steve Chamberlain  <sac at slash.cygnus.com>
-
-	* Makfile.in (DLLTOOL_FOR_TARGET): New name, pass it down.
-	* config.sub, configure.in (win32): New target and host.
-
-Wed Jun 28 23:57:08 1995  Steve Chamberlain  <sac at slash.cygnus.com>
-
-	* configure.in: Add i386-pe configuration.
-
-Fri Jun 23 14:28:44 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-build.in (install): Install GDB after LD.
-
-Thu Jun 22 17:10:53 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	* mpw-config.in (elf/mips.h): Always forward-include, needed
-	for GDB to build.
-
-Wed Jun 21 15:17:30 1995  Rob Savoye  <rob at darkstar.cygnus.com>
-
-	* testsuite: New directory for customer acceptance and whole tool
-	chain tests.
-
-Wed Jun 21 16:50:29 1995  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* configure: If per-host line isn't found, but AC_OUTPUT is found
-	and a configure script exists, run it instead.
-
-Thu Jun 15 21:09:24 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* config.guess:  Update from FSF, for alpha-dec-winnt3.5 and  Crays.
-
-Tue Jun 13 21:43:27 1995  Rob Savoye  <rob at darkstar.cygnus.com>
-
-	* configure: Set build_{cpu,vendor,os,alias} to host values when
-	--build isn't specified.
-
-Mon Jun  5 18:26:36 1995  Jason Merrill  <jason at phydeaux.cygnus.com>
-
-	* Makefile.in (PICFLAG, PICFLAG_FOR_TARGET): New macros.
-	(FLAGS_TO_PASS): Pass them.
-	(EXTRA_TARGET_FLAGS): Ditto.
-
-Wed May 31 22:27:42 1995  Jim Wilson  <wilson at chestnut.cygnus.com>
-
-	* Makefile.in (all-libg++): Depend on all-libstdc++.
-
-Thu May 25 22:40:59 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in (noconfigdirs): Enable all packages for
-	  i386-unknown-netbsd.
-
-Sat May 20 13:22:31 1995  Angela Marie Thomas  <angela at cirdan.cygnus.com>
-
-	* configure.in (noconfigdirs): Don't configure tk for i386-go32
-	hosted builds (DOS builds)
-
-Thu May 18 18:08:49 1995  Ken Raeburn  <raeburn at kr-laptop.cygnus.com>
-
-	Changes for ARM based on patches from Richard Earnshaw:
-	* config.sub: Handle armeb and armel.
-	* configure.in: Omit arm linker only for riscix.
-
-Thu May 11 17:23:26 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* config.guess:  Update from FSF.
-
-Tue May  9 15:52:05 1995  Michael Meissner  <meissner at cygnus.com>
-
-	* config.sub: Recognize powerpcle as the little endian varient of
-	the PowerPC.  Recgonize ppc as a PowerPC variant, and ppcle as a
-	powerpcle variant.  Convert pentium into i586, not i486.  Add p5
-	alias for i586.  Map new x86 variants p6, k5, nexgen into i586
-	temporarily.
-
-Tue May  2 16:29:41 1995  Jeff Law  (law at snake.cs.utah.edu)
-
-	* configure.in (hppa*-*-lites*): Treat like hppa*-*-*elf*.
-
-Sun Apr 30 21:38:09 1995  Jeff Law  (law at snake.cs.utah.edu)
-
-	* config.sub: Accept -lites* as a basic system type.
-
-Thu Apr 27 11:33:29 1995  Michael Meissner  (meissner at cygnus.com)
-
-	* config.guess (*:Linux:*:*): Check for whether the pre-BFD linker is
-	installed, and if so return linuxoldld as the system name.
-
-Wed Apr 26 10:59:02 1995  Jeff Law  (law at snake.cs.utah.edu)
-
-	* config.guess: Add hppa1.1-hp-lites support.
-
-Tue Apr 25 11:08:11 1995  Rob Savoye  <rob at darkstar.cygnus.com>
-
-	* configure.in: Don't build newlib for m68k-vxworks5.1.
-
-Wed Apr 19 17:02:43 1995  Jim Wilson  <wilson at chestnut.cygnus.com>
-
-	* configure.in (mips-sgi-irix6): Use mh-irix5.
-
-Fri Apr 14 15:21:17 1995  Doug Evans  <dje at chestnut.cygnus.com>
-
-	* Makefile.in (all-gcc): Depend on all-ld (for libgcc1-test).
-
-Wed Apr 12 16:06:01 1995  Jason Merrill  <jason at phydeaux.cygnus.com>
-
-	* test-build.mk: Enable building of shared libraries on IRIX 5 and
-	OSF/1.  Fix compiler flags.
-	* build-all.mk: Support Linux and OSF/1 3.0.  Fix compiler flags.
-
-Tue Apr 11 18:55:40 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* configure.in: Recognize --with-newlib.
-	(sparc-*-sunos4*): Build sim, dejagnu, expect, tcl if cross target.
-
-Mon Apr 10 14:38:20 1995  Jason Molenda (crash at phydeaux.cygnus.com)
-
-	* Makefile.in: move {all,check,install}-gdb from *_MODULES
-	to *_X11_MODULES due to gdbtk needing X include files et al.
-
-Mon Apr 10 11:42:22 1995  Stan Shebs  <shebs at andros.cygnus.com>
-
-	Merge in support for Mac MPW as a host.
-	(Old change descriptions retained for informational value.)
-
-	* mpw-config.in: Add generic include forwards for cpu-specific
-	include files in aout and elf directories.
-
-	* mpw-configure: Added copyright.
-	* mpw-config.in: Check for presence of required build tools.
-	(target_libs): Add newlib.
-	(target_tools): Add examples.
-	(Read Me): Generate as "Read Me for MPW" instead.
-	* mpw-build.in: Base sub-builds on all-foo instead of do-foo.
-	(all-byacc, do-byacc, all-flex, do-flex, do-newlib): New actions.
-	(do-gas, do-gcc, do-gdb, do-ld): Build Version.r first.
-
-	* mpw-configure: Remove subdir-specific makefile hackery,
-	delete mk.tmp after using it.
-
-	* mpw-build.in (all): Display start and end times.
-
-	* mpw-configure (host_canonical): Set.
-	(target_cpu): Always add to makefiles.
-	(ARCHDEFS, EMUL): Add to makefile only if nonempty.
-	(TM_FILE, XM_FILE, NM_FILE): No longer add to makefile.
-	(mpw-mh-mpw): Look for in srcdir and srcroot.
-	Use sed instead of mpw-edit-prefix to edit prefix definitions.
-
-	* mpw-build.in: (install-only): New target.
-
-	* mpw-configure (host_alias, target_alias): Rename from hostalias
-	and targetalias, add into generated Makefile.
-	(mk.tmp): If present, add into generated Makefile.
-	* mpw-build.in (all-gas): Build config.h first before gas proper.
-
-	* mpw-configure (config.status): Write only if changed.
-	* mpw-config.in (readline): Configure it (not built, just used for
-	definitions).
-
-	* mpw-config.in (elf/mips.h): Add a forward include.
-
-	* mpw-config.in: Forward-include most .h files in include into
-	extra-include.
-	(readline): Don't build.
-	mpw-build.in (install): Install GDB.
-
-	* mpw-configure (prefix, mpw_prefix): Handle it.
-	* mpw-config.in (mmalloc, readline): Don't configure.
-	* mpw-build.in (thisscript): Rename to ThisScript.
-	Use mpw-build instead of BuildProgram everywhere.
-	(mmalloc, readline): Don't build.
-	* mpw-README: New file, basic documentation about the MPW port.
-
-	* mpw-config.in: Use forward-include to create include files.
-
-	* mpw-configure: Add more things to the top of each configured
-	Makefile, including contents of config/mpw-mh-mpw.
-	* mpw-config.in (extra-include): Create this directory and fill it
-	with Posix-like include files when configuring.
-
-	* config.sub (apple, mac, mpw): Add various aliases.
-
-	* mpw-build.in: New file, top-level build script fragment for MPW.
-	* mpw-configure: New file, configure script for MPW.
-	* mpw-config.in: New file, config fragment for MPW.
-
-Fri Apr  7 19:33:16 1995  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* configure.in (host_libs): Remove glob, since it is gone from the
-	sources.
-
-Fri Mar 31 11:36:17 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Makefile.in: define empty GDB_NLM_DEPS var.
-
-	* configure.in(target_makefile_frag): use config/mt-netware
-	for netware targets.
-
-Thu Mar 30 13:51:43 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* config.sub: Merge in recent FSF changes.  Remove linux special
-	cases.
-
-Tue Mar 28 14:47:34 1995  Jason Molenda (crash at phydeaux.cygnus.com)
-
-	Revert this change:
-
-	Tue Mar 30 10:03:09 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-		* build-all.mk: Use CC=cc -Xs on Solaris.
-
-Tue Mar 21 10:43:32 1995  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* glob/*: Removed.  Schauer's 24 Feb 1994 readline change made us
-	stop using it.
-	* Makefile.in: Nuke all references to glob subdirectory.
-
-Thu Mar 16 13:35:30 1995  Jason Merrill  <jason at phydeaux.cygnus.com>
-
-	* configure.in: Fix --enable-shared logic in per-host.
-
-Mon Mar 13 12:33:15 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in (*-hp-hpux[78]*): Use mh-hpux8.
-
-Mon Mar  6 10:21:58 1995  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* configure.in (noconfigdirs): Don't build gas on AIX, for
-	powerpc*-*-aix* as well as for rs6000*-*-aix*.
-
-Wed Mar  1 12:51:53 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: Fix --cache-file to work if the file argument is a
-	relative path.
-
-Tue Feb 28 17:36:07 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure: If the --cache-file is used, pass it down to
-	configure in subdirectories.
-
-Mon Feb 27 12:52:46 1995  Kung Hsu  <kung at mexican.cygnus.com>
-
-	* config.sub: add vxworks29k configuration.
-
-Fri Feb 10 16:12:26 1995  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* Makefile.in (taz): Do "diststuff" part quietly.
-
-Sun Feb  5 14:16:35 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config.sub: Mini-merge with gcc/config.sub.
-
-Sat Feb  4 12:11:35 1995  Jim Wilson  <wilson at chestnut.cygnus.com>
-
-	* config.guess (IRIX): Sed - to _.
-
-Fri Feb  3 11:54:42 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* Makefile.in (source-vault, binary-vault): New targets.
-
-Thu Jan 26 13:00:11 1995  Michael Meissner  <meissner at cygnus.com>
-
-	* config.sub: Recognize -eabi as a basic system type.
-
-Thu Jan 12 13:13:23 1995  Jason Merrill  <jason at phydeaux.cygnus.com>
-
-	* configure.in (enable_shared stuff): Fix typo.
-
-Thu Jan 12 01:36:51 1995  deanm at medulla.LABS.TEK.COM (Dean Messing)
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): Fix typo in passing LIBCXXFLAGS*.
-
-Wed Jan 11 16:29:53 1995  Jason Merrill  <jason at phydeaux.cygnus.com>
-
-	* Makefile.in (LIBCXXFLAGS_FOR_TARGET): Add -fno-implicit-templates.
-
-Mon Jan  9 12:48:01 1995  Jim Kingdon  <kingdon at lioth.cygnus.com>
-
-	* configure.in (rs6000-*-*): Don't build gas.
-
-Wed Jan  4 23:53:49 1995  Ian Lance Taylor  <ian at tweedledumb.cygnus.com>
-
-	* Makefile.in: Use /x/x/ instead of /brokensed/brokensed/, to
-	reduce command line length.
-	(AS_FOR_TARGET): Check for as.new, not Makefile.
-	(NM_FOR_TARGET): Check for nm.new, not Makefile.
-
-Wed Jan  4 13:02:39 1995  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* config.guess:  Merge from FSF.
-
-Thu Dec 15 17:11:37 1994  Ian Lance Taylor  <ian at sanguine.cygnus.com>
-
-	* configure: Don't use $ when handling program_suffix.
-
-Mon Dec 12 12:09:37 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* configure.in:  Configure tk for hppa/hpux.
-
-Fri Dec  2 15:55:38 1994  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in (LIBGXX_SUPPORT_DIRS):  Add libstdc++.
-
-Tue Nov 29 19:37:56 1994  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* Makefile.in:  Move -fno-implicit-template from CXXFLAGS
-	to LIBCXXFLAGS.  Tests are better run without it.
-
-Wed Nov 23 10:29:25 1994  Brendan Kehoe  (brendan at lisa.cygnus.com)
-
-	* Makefile.in (all-ispell): Depend on all-emacs19 instead of all-emacs.
-
-Mon Nov 21 11:14:01 1994  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* configure.in (*-*-netware*): Don't configure xiberty.
-
-Mon Nov 14 08:49:15 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* configure.in:  Remove tk from native_only list.
-
-Fri Nov 11 15:31:26 1994  Bill Cox  (bill at rtl.cygnus.com)
-
-	* build-all.mk: Add mips-ncd-elf target to sun4 targets
-	  for special NCD build.
-
-Mon Nov  7 20:58:17 1994  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* Makefile.in (DEVO_SUPPORT): Remove configure.bat and
-	makeall.bat, they're only useful for binutils snapshots.
-	(binutils.tar.gz, gas+binutils.tar.gz): Add configure.bat and
-	makeall.bat to specified SUPPORT_FILES.
-
-Mon Nov  7 17:25:18 1994  Bill Cox  (bill at cirdan.cygnus.com)
-
-	* build-all.mk: Add Ericsson targets to sun4 and solaris
-	  hosts.  Add  BNR's sun4 target to solaris host, so their
-	  build-from-source will be tested in-house first.
-
-Sat Nov  5 18:43:30 1994  Jason Merrill  (jason at phydeaux.cygnus.com)
-
-	* Makefile.in (LIBCFLAGS): New variable.
-	(CFLAGS_FOR_TARGET): Ditto.
-	(LIBCFLAGS_FOR_TARGET): Ditto.
-	(LIBCXXFLAGS): Ditto.
-	(CXXFLAGS_FOR_TARGET): Ditto.
-	(LIBCXXFLAGS_FOR_TARGET): Ditto.
-	(BASE_FLAGS_TO_PASS): Pass them.
-	(EXTRA_TARGET_FLAGS): Ditto.
-
-	* configure.in: Support --enable-shared.
-
-Sat Nov  5 15:44:00 1994  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* configure.in (target_libs):  Include libstdc++ again.
-	* config.guess:  Update from FSF (for FreeBSD).
-
-Thu Nov  3 16:32:30 1994  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* Makefile.in (DEVO_SUPPORT): Include configure.bat and
-	makeall.bat.
-	(DISTDOCDIRS): Add `etc'.
-	(ETC_SUPPORT_PFX): New variable.
-	(taz): Include anything from etc starting with a word in
-	ETC_SUPPORT_PFX.
-
-Wed Oct 26 16:19:35 1994  Ian Lance Taylor  <ian at sanguine.cygnus.com>
-
-	* config.sub: Update for recent FSF changes.  Remove obsolete
-	h8300hds entry.  Add -windows* and -osx as basic os.  Minor
-	spacing changes.
-
-Thu Oct 20 18:41:56 1994  Per Bothner  <bothner at kalessin.cygnus.com>
-
-	* configure.in (target_libs):  Remove libstdc++ for libg++-2.6.1.
-
-	* config.guess:  Merge with FSF.
-	* configure.in:  Match on i?86-ncr-sysv4.3, not i?86-ncr-sysv43.
-
-Thu Oct 20 19:26:56 1994  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* configure: Since the "trap 0" handler will override the exit
-	status on many systems, only use it for "exit 1", and make it set
-	a non-zero exit status; reset it before "exit 0".  Also, check
-	exit status of config.sub, and error out if it failed.
-
-Wed Oct 19 18:49:55 1994  Rob Savoye  (rob at cygnus.com)
-
-	* Makefile.in: (ALL_TARGET_MODULES,INSTALL_TARGET_MODULES) Build
-	and install libgloss.
-
-Tue Oct 18 15:25:24 1994  Ian Lance Taylor  <ian at sanguine.cygnus.com>
-
-	* Makefile.in (all-binutils): Depend upon all-byacc.
-
-	* configure.in: Don't build emacs on Irix 5.
-
-Mon Oct 17 16:22:12 1994  J.T. Conklin  (jtc at phishhead.cygnus.com)
-
-	* configure.in (*-*-netware*): Add libio.
-
-Thu Oct 13 15:51:20 1994  Jason Merrill  (jason at phydeaux.cygnus.com)
-
-	* Makefile.in (ALL_TARGET_MODULES): Add libstdc++.
-	(CHECK_TARGET_MODULES): Ditto.
-	(INSTALL_TARGET_MODULES): Ditto.
-	(TARGET_LIBS): Ditto.
-	(all-libstdc++): Note dependencies.
-
-Thu Oct 13 01:43:08 1994  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* Makefile.in (BINUTILS_SUPPORT_DIRS): Add gas.
-
-Tue Oct 11 12:12:29 1994  Jason Merrill  (jason at phydeaux.cygnus.com)
-
-	* Makefile.in (CXXFLAGS): Use -fno-implicit-templates instead of
-	-fexternal-templates.
-
-	* configure.in (target_libs): Add libstdc++.
-	(noconfigdirs): Add libstdc++ as appropriate.
-
-Thu Oct  6 18:00:54 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Update from FSF.
-
-Tue Oct  4 12:05:42 1994  Ian Lance Taylor  <ian at sanguine.cygnus.com>
-
-	* configure: Use ${config_shell} when running ${configsub}.
-
-Mon Oct  3 14:28:34 1994  Doug Evans  <dje at canuck.cygnus.com>
-
-	* config.sub: No longer recognize h8300h.
-
-Mon Oct  3 12:40:54 1994  Ian Lance Taylor  <ian at sanguine.cygnus.com>
-
-	* config.sub: Remove extraneous differences between config.sub and
-	gcc/config.sub.
-
-Sat Oct  1 00:23:12 1994  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* Makefile.in (DISTSTUFFDIRS): Add gas.
-
-Thu Sep 22 19:04:55 1994  Doug Evans  (dje at canuck.cygnus.com)
-
-	* COPYING.NEWLIB: New file.
-
-Mon Sep 19 18:25:40 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess (HP-UX):  Patch from Harlan Stenn
-	<harlan at landmark.com> to also emit release level.
-
-Wed Sep  7 13:15:25 1994  Jim Wilson  (wilson at sphagnum.cygnus.com)
-
-	* config.guess (sun4*:SunOS:*:*): Change '-JL' to '_JL'.
-
-Tue Sep  6 23:23:18 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.sub:  Merge nextstep cleanup from FSF.
-
-Mon Sep  5 05:01:30 1994  Ken Raeburn  (raeburn at kr-pc.cygnus.com)
-
-	* configure.in (arm-*-*): Don't configure ld for this target.
-
-Thu Sep  1 09:35:00 1994  J.T. Conklin  (jtc at phishhead.cygnus.com)
-
-	* configure.in (*-*-netware): don't configure libg++, libio,
-	  librx, or newlib.
-
-Wed Aug 31 13:52:08 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure.in (alpha-dec-osf*): Use osf*, not osf1*.  Don't
-	configure ld--it works, but it doesn't support shared libraries.
-
-Sun Aug 28 18:13:45 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess (*-unknown-freebsd*):  Get rid of possible
-	trailing "(Release)" in version string.
-	Patch from Paul Richards <paul at isl.cf.ac.uk>.
-
-Sat Aug 27 15:00:49 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Fix i486-ncr-sysv43 -> i486-ncr-sysv4.3.
-	Fix type: *-next-neststep -> *-next-nextstep.
-
-	* config.guess:  Merge from FSF:
-
-	Fri Aug 26 18:45:25 1994  Philippe De Muyter (phdm at info.ucl.ac.be)
-
-	* config.guess: Recognize powerpc-ibm-aix3.2.5.
-
-	Wed Apr 20 06:36:32 1994  Philippe De Muyter  (phdm at info.ucl.ac.be)
-
-	* config.guess: Recognize UnixWare 1.1 (UNAME_SYSTEM is SYSTEM_V
-	instead of UNIX_SV for UnixWare 1.0).
-
-Sat Aug 27 01:56:30 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* Makefile.in (all-gdb):  Add dependencies on all-gcc and all-ld
-	to make gdb/nlm/* build after the compiler and linker.
-
-Fri Aug 26 14:30:05 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess (netbsd, freebsd, linux):  Accept any machine,
-	not just i[34]86.
-	(m68k-atari-sysv4):  Relocate to match FSF version.
-
-	* config.guess:  More merges from the FSF:
-
-	Add a space before function call or macro invocation.
-
-	Tue May 10 16:53:55 1994  Roland McGrath (roland at churchy.gnu.ai.mit.edu)
-
-	* config.guess: Add trap cmd to remove dummy.c and dummy when
-	interrupted.
-
-	Wed Apr 20 18:07:13 1994  Roland McGrath (roland at churchy.gnu.ai.mit.edu)
-
-	* config.guess (dummy.c): Redirect stderr for `hostinfo' command.
-	(dummy): Redirect stderr from compilation of dummy.c.
-
-	Sat Apr  9 14:59:28 1994  Christian Kranz  (kranz at sent5.uni-duisburg.de)
-
-	* config.guess: Distinguish between NeXTStep 2.1 and 3.x.
-
-Fri Aug 26 13:42:20 1994  Ken Raeburn  (raeburn at kr-laptop.cygnus.com)
-
-	* configure: Accept and ignore --cache*, for compatibility with
-	new autoconf.
-
-Fri Aug 26 13:05:27 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Merge from FSF:
-
-	Thu Aug 25 20:28:51 1994  Richard Stallman  <rms at mole.gnu.ai.mit.edu>
-
-	* config.guess (Pyramid*:OSx*:*:*): New case.
-	(PATH): Add /.attbin at end for finding uname.
-	(dummy.c): Handle i860-alliant-bsd.  Follow whitespace conventions.
-
-	Wed Aug 17 18:21:02 1994  Tor Egge  (tegge at pvv.unit.no)
-
-	* config.guess (M88*:DolphinOS:*:*): New case.
-
-	Thu Aug 11 17:00:13 1994  Stan Cox  (coxs at dg-rtp.dg.com)
-
-	* config.guess (AViiON:dgux:*:*): Use TARGET_BINARY_INTERFACE
-	to select whether to use ELF or COFF.
-
-	Sun Jul 24 16:20:53 1994  Richard Stallman  <rms at mole.gnu.ai.mit.edu>
-
-	* config.guess: Recognize i860-stardent-sysv and i860-unknown-sysv.
-
-	Sun May  1 10:23:10 1994  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
-
-	* config.guess: Guess the OS version for HPUX.
-
-	Tue Mar  1 21:53:03 1994  Karl Heuer  (kwzh at hal.gnu.ai.mit.edu)
-
-	* config.guess (UNAME_VERSION): Recognize aix3.2.4 and aix3.2.5.
-
-Fri Aug 26 11:19:08 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure.in: Recognize --with-headers, --with-libs, and
-	--without-newlib.
-	* Makefile.in (all-xiberty): Depend upon all-ld.
-
-Wed Aug 24 12:36:50 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure.in: Change i[34]86 to i[345]86.
-
-Mon Aug 22 10:58:33 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure (version): A few more tweaks to help message.
-
-Fri Aug 19 12:40:25 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* Makefile.in:  Remove (for now) librx as a host library,
-	now that we're building it for target.
-
-Fri Aug 19 10:49:17 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure: Fix up help message; from karl at owl.hq.ileaf.com
-	(Karl Berry).
-
-Tue Aug 16 16:11:08 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* configure.in:  Also configure librx.
-
-Mon Aug 15 16:51:45 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* Makefile.in:  Update various rules to reflect that librx
-	is now needed for libg++.
-
-Fri Aug 12 18:07:21 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* config.sub: Accept mips64orion and mips64orionel as a CPU name.
-
-Mon Aug  8 11:36:17 1994  Stan Shebs  (shebs at andros.cygnus.com)
-
-	* configure.in: Configure the examples directory.
-
-Thu Aug  4 16:12:36 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure: Simplify Jun 2 1994 change.
-
-Wed Aug  3 04:58:16 1994  D. V. Henkel-Wallace  (gumby at cygnus.com)
-
-	* change CC to /usr/latest/bin/gcc for lynx host builds, since
-	/bin/gcc isn't good enough to build gcc.
-
-Wed Jul 27 09:07:14 1994  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in (GDB_SUPPORT_FILES): Remove
-	(setup-dirs-gdb, gdb.tar.gz, make-gdb.tar.gz):  Remove old rules.
-	(gdb.tar.gz): Add new rule to use standard distribution building
-	mechanism.
-
-Mon Jul 25 11:10:06 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in: Warn about use of /usr/ucb/cc on Solaris.  From
-	Bill Cox <bill at cygnus.com>.
-
-Sat Jul 23 12:19:46 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Recognize ISC.  Patch from kwzh at gnu.ai.mit.edu.
-
-Fri Jul 22 17:53:59 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* configure:  Search current dir first in .gdbinit.
-
-Fri Jul 22 11:28:30 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.sub:  Recognize freebsd (merged from gcc config.sub).
-
-Thu Jul 21 14:10:52 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.sub:  Refer to NeXT's operating system as nextstep.
-
-	* config.sub (case $basic_machine):  Re-order the cases, to match
-	the order in the FSF version (which is mostly alphabethical).
-	Merge in some additions and changes from the FSF.
-
-Sat Jul 16 12:03:08 1994  Stan Shebs  (shebs at andros.cygnus.com)
-
-	* config.guess: Recognize m68k-atari-sysv4 and m88k-harris-csux7.
-	* config.sub: Recognize cxux7.
-	* configure.in: Use mh-cxux for m88k-harris-cxux*.
-
-Mon Jul 11 14:37:39 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.sub:  Fix typo powerpc -> powerpc-*.
-
-Sat Jul  9 13:03:43 1994  Michael Tiemann  (tiemann at blues.cygnus.com)
-
-	* Makefile.in: `all-emacs19' depends on `all-byacc'.
-
-	* Makefile.in: Add all-emacs19 and install-emacs19 rules (in
-	parallel with all-emacs and install-emacs).  Top-level command
-	`make all-emacs19 CC=gcc' now behaves as `make all-emacs CC=gcc'.
-
-Thu Jun 30 16:53:42 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* test-build.mk ($(host)-stamp-stage2-installed): Remove
-	$(relbindir)/make before doing ``make install'', and use
-	$(GNU_MAKE) while doing it.  Avoids problem on SunOS with
-	installing over running make binary.
-	($(host)-stamp-stage3-installed): Likewise.
-
-Tue Jun 28 13:43:25 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Recognize Mach.
-
-Mon Jun 27 16:41:14 1994  Ian Lance Taylor  (ian at sanguine.cygnus.com)
-
-	* configure: Check ${exec_prefixoption}, not ${exec_prefix}, to
-	see whether --exec-prefix was used.
-
-Sun Jun 26 21:15:54 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* README:  Explicitly mention libg++/README.  (Zoo's idea.)
-
-Tue Jun 21 12:45:55 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in: Add all-librx target similar to all-libproc.
-
-Wed Jun  8 23:11:55 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* config.guess:  Rearrange tests for Alpha-OSF1 to properly deal
-	with post 1.2 uname bogosity.
-
-Thu Jun  9 00:27:59 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure: Remove temporary files on receipt of a signal.
-
-Tue Jun  7 12:06:24 1994  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: If there is a package_makefile_frag, remove
-	${subdir}/Makefile.tem after copying it in.
-
-Mon Jun  6 21:35:02 1994  D. V. Henkel-Wallace  (gumby at cygnus.com)
-
-	* build_all.mk: support rs6000 lynx identifies itself as
-	rs6000-lynx-lynxos2.2.2.  Also, use /usr/cygnus/progressive/bin/gcc
-	since /bin/gcc is too feeble to compile a modern gcc.
-
-Mon Jun  6 16:06:34 1994  Karen Christiansen (karen at cirdan.cygnus.com)
-
-	* brought devo/test-build.mk update-to-date with progressive/
-	  test-build.mk. Add lynx targets and hppa flag info.
-
-Sat Jun  4 17:23:54 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* configure.in:  Use mh-ncrsvr43.  Patch from
-	Tom McConnell <tmcconne at sedona.intel.com>.
-
-Fri Jun  3 17:47:24 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess (i386-unknown-bsdi):  No longer need to
-	check #if defined(__bsdi__) && defined(__i386__).
-
-Thu Jun  2 18:56:46 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure: Set program_transform_nameoption correctly.
-
-Thu Jun  2 10:57:06 1994  Karen Christiansen (karen at cirdan.cygnus.com)
-
-	* brought build-all.mk update-to-date with progressive build-all.mk,
-	  added new targets and hppa info.
-
-Thu Jun  2 00:12:44 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure: If config.guess result is a prefix of the user
-	specified target, assume a native build and use the user specified
-	target as the host alias.  Remove SunOS patch suffix removal hack.
-	* configure.in: Remove SunOS patch suffix removal hack.
-
-	* Makefile.in (CROSS_CHECK_MODULES): Remove check-flex, since it's
-	in NATIVE_CHECK_MODULES.
-
-Wed Jun  1 10:49:41 1994  Bill Cox  (bill at rtl.cygnus.com)
-
-	* Makefile.in: Rename HOST_ONLY to NATIVE.
-	* configure: Delete SunOs patch suffix from host_canonical
-	  and build_canonical variables that are prepended to Makefiles.
-	* configure.in: Add comments for easier maintenance.
-
-Tue May 31 19:39:47 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in: Add all-libproc target similar to all-gui.
-
-Tue May 31 17:16:33 1994  Tom Lord  (lord at cygnus.com)
-
-	* Makefile.in (CHECK_MODULES): split into
-	HOST_ONLY_CHECK_MODULES and CROSS_CHECK_MODULES.
-
-Tue May 31 16:36:36 1994  Paul Eggert  (eggert at twinsun.com)
-
-	* config.guess (i386-unknown-bsdi): New system to guess.
-
-Wed May 25 16:47:10 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in: Add all-gui target (but not yet build by "all").
-
-Thu May 26 08:53:19 1994  Bill Cox  (bill at rtl.cygnus.com)
-
-	* config.sub: Move deletion of patch suffix from here...
-	* configure.in: To here, at Ian's suggestion.  The top-
-	  level scripts might need to know of a patch level.
-
-Wed May 25 09:15:54 1994  Bill Cox  (bill at rtl.cygnus.com)
-
-	* config.sub: Strip off patch suffix so rtl is recognized
-	  as a sunos4.1.3 machine, even though it's been patched.
-
-Fri May 20 08:25:49 1994  Steve Chamberlain  (sac at deneb.cygnus.com)
-
-	* Makefile.in (INSTALL_LAST): Delete.
-	(INSTALL_DOSREL): New.
-
-Thu May 19 17:12:12 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in: Use ld for i[34]86-*-sysv4* and sparc-*-solaris2*.
-	Don't set use_gnu_ld to no for *-*-sysv4; that only controls
-	whether we pass down --with-gnu-ld anyhow.
-
-Thu May 19 09:29:12 1994  Steve Chamberlain  (sac at cygnus.com)
-
-	* Makefile.in (INSTALL_LAST): Change operation so it works
-	on more flavors of make.
-	* configure.in (go32): Don't build libg++ or libio.
-
-Fri May 13 13:28:34 1994  Steve Chamberlain  (sac at cygnus.com)
-
-	* Makefile.in (Move HOST_PREFIX_1 and friends up so
-	they can be overriden by templates.
-
-Sat May  7 16:46:44 1994  Steve Chamberlain  (sac at cygnus.com)
-
-	* configure.in (target==go32): Don't build gdb.
-	* dosrel: New directory.
-
-Fri May  6 14:19:25 1994  Steve Chamberlain  (sac at cygnus.com)
-
-	* configure.in (host==go32): Configure dosrel too.
-	* Makefile.in (INTALL_TARGET): Call INSTALL_LAST last.
-	(HOST_CC, HOST_PREFIX, HOST_PREFIX_1): Undefine, they should
-	be set by incoming names or templates.
-	(INSTALL_LAST): New rule.
-
-Thu May  5 17:35:05 1994  Stan Shebs  (shebs at andros.cygnus.com)
-
-	* config.sub (sparclitefrw, sparclitefrwcompat): Don't set the os.
-
-Thu May  5 20:06:45 1994  Ken Raeburn  (raeburn at cujo.cygnus.com)
-
-	* configure.in (appdirs): New variable.  Currently empty, but will
-	be used in gas distribution.  If nonempty, lists a set of
-	directories at least one of which must get configured, or top
-	level configuration is considered to have failed.
-	(rs6000-*-lynxos*): Use new file name.
-
-Thu May  5 13:38:36 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	Eliminate XTRAFLAGS.
-	* Makefile.in (CC_FOR_TARGET): If newlib exists, refer to the
-	newlib include files using -idirafter, and also use -nostdinc.
-	(CXX_FOR_TARGET): Likewise.
-	(XTRAFLAGS): Removed.
-	(BASE_FLAGS_TO_PASS): Remove XTRAFLAGS_FOR_TARGET.
-	(EXTRA_HOST_FLAGS): Remove XTRAFLAGS.
-	(EXTRA_TARGET_FLAGS, EXTRA_GCC_FLAGS): Likewise.
-	($(DO_X)): Don't pass down XTRAFLAGS.
-
-Thu May  5 00:16:36 1994  Ken Raeburn  (raeburn at kr-pc.cygnus.com)
-
-	* configure.in (mips*-dec-bsd*): New target; do build linker.
-	(mips*-*-bsd*): New target; don't build linker.
-
-Wed May  4 20:10:10 1994  D. V. Henkel-Wallace  (gumby at cygnus.com)
-
-	* configure.in: support rs6000-*-lynxos* configuration.
-	support sunos4 as a cross target.
-
-	* config.sub: look for lynx*, not lynx since the OS version may
-	legitimately be part of the name.
-
-Tue May  3 21:48:11 1994  Ken Raeburn  (raeburn at cujo.cygnus.com)
-
-	* configure.in (i[34]86-*-sco*): Move to be with other i386
-	targets.
-	(romp-*-*): New target.  Skip various binary utilities.
-	(vax-*-*): New target.  Don't build newlib.
-	(vax-*-vms): Renamed from *-*-vms.  Don't build opcodes or newlib.
-
-Thu Apr 28 15:03:05 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure.in: Only set host_makefile_frag if config
-	directory exists.
-
-Wed Apr 27 12:14:30 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* install.sh: If $dstdir exists, don't check whether each
-	component does.
-
-Tue Apr 26 18:11:33 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* test-build.mk (HOLES): Add sleep; used by rcs/src/conf.sh.
-
-Mon Apr 25 15:06:34 1994  Stan Shebs  (shebs at andros.cygnus.com)
-
-	* configure.in (*-*-lynxos*): Don't configure newlib for either
-	native or cross Lynx.
-
-Sat Apr 16 11:58:16 1994  Doug Evans  (dje at canuck.cygnus.com)
-
-	* config.sub (sparc64-elf): Fix os.
-	(z8k): Remove duplicate.
-
-Thu Apr 14 23:33:17 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* Makefile.in (gcc-no-fixedincludes): Touch gcc/include/fixed, not
-	gcc/stmp-fixproto, to try to prevent fixproto from being run.
-
-Wed Apr 13 15:14:52 1994  Bill Cox  (bill at cygnus.com)
-
-	* configure: Make file links cleanly even if Lynx fails on
-	  an NFS symlink (at least fail cleanly).
-
-Mon Apr 11 10:58:56 1994  Jim Wilson  (wilson at sphagnum.cygnus.com)
-
-	* test-build.mk (CC): For mips-sgi-irix4, change -XNh1500 to
-	-XNh2000.
-
-Sat Apr  9 15:10:45 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure: Unknown options are fatal again.
-
-Fri Apr  8 12:01:41 1994  David J. Mackenzie  (djm at cygnus.com)
-
-	* configure: Ignore --x-includes and --x-libraries, for Autoconf
-	compatibility.
-
-Thu Apr  7 17:31:43 1994  Doug Evans  (dje at canuck.cygnus.com)
-
-	* build-all.mk: Add `clean' target.
-
-Wed Apr  6 20:44:56 1994  Peter Schauer  (pes at regent.e-technik.tu-muenchen.de)
-
-	* config.guess:  Add SINIX support.
-	* configure.in:  Add mips-*-sysv4* support.
-
-Mon Apr  4 17:41:44 1994  Doug Evans  (dje at canuck.cygnus.com)
-
-	* build-all.mk: Document all useful targets.
-	If canonhost is sparc-sun-solaris2.3, change it to sparc-sun-solaris2.
-	If canonhost is mips-sgi-irix4.0.5H, change it to mips-sgi-irix4.
-
-Thu Mar 31 04:55:57 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure: Support --silent, --quiet.
-
-Wed Mar 30 21:37:38 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure: Support --disable-FEATURE.
-
-Tue Mar 29 19:15:05 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Recognize NCR running SVR4.3.
-
-Mon Mar 28 14:55:15 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Make BSDI generate i386-unknown-bsd386.
-	Patch from Paul Eggert <eggert at twinsun.com>.
-
-Mon Mar 28 12:54:52 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in (powerpc-*-aix*): Treat like rs6000-*-*.
-
-Sat Mar 26 11:25:48 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure: Make unrecognized options give nonfatal warnings
-	instead of fatal errors, and pass them to any subdirectory
-	configures in case they recognize them.
-	Make --x equivalent to --with-x.
-
-Fri Mar 25 21:52:10 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure: Add --enable-* options.  Clean up usage message and
-	some comments.
-
-Thu Mar 24 09:12:53 1994  Doug Evans  (dje at canuck.cygnus.com)
-
-	* Makefile.in (NM_FOR_TARGET): Build tree version is now nm.new.
-
-Sun Mar 20 11:28:22 1994  Jeffrey A. Law  (law at snake.cs.utah.edu)
-
-	* configure.in (hppa*-*-*): Enable binutils.
-
-Sat Mar 19 11:50:16 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.sub: Recognize cisco.
-
-Fri Mar 18 16:42:32 1994  Jason Merrill  (jason at deneb.cygnus.com)
-
-	* Makefile.in (CXXFLAGS): Add -fexternal-templates.
-
-Tue Mar 15 11:25:55 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: about target *-hitachi-hiuxwe2, don't print more
-	than one configuration name.  Add comment.
-
-Sun Mar  6 23:13:38 1994  Hisashi MINAMINO  (minamino at sra.co.jp)
-
-	* config.guess: about target *-hitachi-hiuxwe2, fixed
-	machine guessing order.  [Hitachi's CPU_IS_HP_MC68K
-	macro is incorrect.]
-
-Sun Mar 13 09:10:08 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in (TAGS): Just build TAGS in each subdirectory, rather
-	than the "make ls" stuff which used to be here.
-
-Fri Mar 11 12:52:39 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Recognize i[34]86-unknown-freebsd.
-	From Shawn M Carey <smcarey at rodan.syr.edu>.
-
-Thu Mar  3 14:24:21 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* configure.in (noconfigdirs for alpha): Remove libg++ and libio.
-
-Wed Mar  2 13:28:48 1994  Jim Kingdon  (kingdon at deneb.cygnus.com)
-
-	* config.guess: Check for ptx.
-
-Mon Feb 28 16:46:50 1994  Kung Hsu  (kung at mexican.cygnus.com)
-
-	* config.sub: Add os9k checking.
-
-Thu Feb 24 07:09:04 1994  Jeffrey A. Law  (law at snake.cs.utah.edu)
-
-	* config.guess: Handle OSF1 running on HPPA processors
-
-Fri Feb 18 14:14:00 1994  Ken Raeburn  (raeburn at rtl.cygnus.com)
-
-	* configure: If subdir configure fails, print out a message with
-	subdirectory name, in case subdir's configure code didn't identify
-	itself.
-
-Fri Feb 18 12:50:15 1994  Doug Evans  (dje at cygnus.com)
-
-	* configure.in: Remove embedded newlines from configdirs.
-	Avoid mismatches of substrings.  Fix matching strings at end
-	of configdirs.
-
-Fri Feb 11 15:33:33 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* config.guess:  Add Lynx/rs6000 config support.
-
-Tue Feb  8 13:41:09 1994  Ken Raeburn  (raeburn at rtl.cygnus.com)
-
-	* configure.in (alpha-dec-osf1*, alpha*-*-*): Build gas.
-
-Mon Feb  7 15:42:36 1994  Jeffrey A. Law  (law at cygnus.com)
-
-	* configure.in (hppa*-*-osf*): Treat this just like most other
-	PA configurations (eg no binutils or ld).
-	(hppa*-*-*elf*): These configurations have binutils and ld.
-
-Sun Feb  6 16:35:07 1994  Jeffrey A. Law  (law at snake.cs.utah.edu)
-
-	* config.sub (hiux): Fix typo.  From m-kasahr at sramhc.sra.co.JP.
-
-Sat Feb  5 01:00:33 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in (rs6000-*-*): Build gas.
-
-Wed Feb  2 13:57:57 1994  Jeffrey A. Law  (law at snake.cs.utah.edu)
-
-	* Makefile.in:  Avoid bug in losing hpux sed.
-
-Wed Feb  2 14:53:05 1994  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in, test-build.mk: Remove MUNCH_NM; it was only needed
-	for GDB and GDB has been fixed to not need it.
-
-Sun Jan 30 17:58:06 1994  Ken Raeburn  (raeburn at cujo.cygnus.com)
-
-	* config.guess: Recognize vax hosts.
-
-Fri Jan 28 15:29:38 1994  Ken Raeburn  (raeburn at cujo.cygnus.com)
-
-	* configure (while loop): Don't use "break 2" inside case
-	statement -- the case statement isn't an enclosing loop.
-
-Mon Jan 24 18:40:06 1994  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Clean up NeXT support, to allow nextstep
-	on Intel machines.  Make OS be nextstep.
-
-Sun Jan 23 18:47:22 1994  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
-
-	* config.guess: Add alternate forms for Convex.
-
-Thu Jan 20 16:13:41 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* configure:  Completely rewrite option processing.  Take
-	advantage of pattern-matching to avoid invoking test frequently.
-	Also clean up host and target defaulting logic.
-
-Mon Jan 17 15:06:56 1994  Ken Raeburn  (raeburn at cujo.cygnus.com)
-
-	* Makefile.in: Replace all occurrances of "rootme" with "r" and
-	"$${rootme}" with "$$r", to increase the likelihood that the do-*
-	commands (plus user environment) will fit SCO limits.
-
-Thu Jan  6 11:20:57 1994  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in: Don't issue warnings about directories which are
-	not being configured if -norecursion is set.  Correct test for
-	--with-gnu-as and --with-gnu-ld to not get confused by substring
-	matches.
-
-	* configure.in: Don't build gas for alpha-dec-osf1*.
-
-Tue Jan  4 17:10:19 1994  Stu Grossman  (grossman at cygnus.com)
-
-	* configure:  Back out Per's change of 12/19/1993.  It changes the
-	behavior of configure in unexpected and confusing ways.
-
-	Also, use different delim char when calculating
-	program_transform_name so that the name can contain slashes.
-
-Sat Jan  1 13:45:31 1994  Rob Savoye  (rob at darkstar.cygnus.com)
-
-	* configure.in, config.sub: Add support for VSTa micro-kernel.
-
-Sat Dec 25 20:00:47 1993  Jeffrey A. Law  (law at snake.cs.utah.edu)
-
-	* configure.in: Nuke hacks which were used to get a special
-	version of GAS for HPPA configurations.
-
-Sun Dec 19 20:40:44 1993  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* configure:  If only ${target_alias} is given, use that
-	as the default for ${host_alias}.
-	* configure:  Add missing back-slashes before nested quotes.
-
-Wed Dec 15 18:07:18 1993  david d `zoo' zuhn  (zoo at andros.cygnus.com)
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): add YACC=$(BISON)
-
-Tue Dec 14 21:25:33 1993  Per Bothner  (bothner at cygnus.com)
-
-	* config.guess:  Recognize some Tektronix configurations.
-	From Kaveh R. Ghazi <ghazi at noc.rutgers.edu>.
-
-Sat Dec 11 11:18:00 1993  Steve Chamberlain  (sac at thepub.cygnus.com)
-
-	* config.sub: Match any flavor of SH.
-
-Thu Dec  2 17:16:58 1993  Ken Raeburn  (raeburn at cujo.cygnus.com)
-
-	* configure.in: Don't try to configure newlib for Alpha.
-
-Thu Dec  2 14:35:54 1993  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in: Don't build ld for Irix 5.  Don't build gas,
-	libg++ or libio for any Alpha target.
-
-	* configure.in (mips*-sgi-irix5*): New target; use mh-irix5.
-
-Wed Dec  1 17:00:33 1993  Jason Merrill  (jason at deneb.cygnus.com)
-
-	* Makefile.in (GZIPPROG): Renamed from GZIP, which gzip uses for
-	default arguments -- so it tried to compress itself.
-
-Tue Nov 30 13:45:15 1993  david d `zoo' zuhn  (zoo at andros.cygnus.com)
-
-	* configure.in (notsupp): ensure that a space is always at the end
-	  of the configdirs list, since the grep checks for an explicit space
-
-Tue Nov 16 15:04:27 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in (target i386-sysv4.2): don't build ld, since static
-	  versions of many libraries are not available.
-
-Tue Nov 16 14:28:12 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Recognize Apollos (using environment variables).
-	* configure.in: Don't configure ld, binutils, or gprof for Apollo.
-
-Thu Nov 11 12:03:50 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Recognize Sony news mips running newsos.
-
-Wed Nov 10 16:57:00 1993  Mark Eichin  (eichin at cygnus.com)
-
-	* Makefile.in (all-cygnus, build-cygnus): "fi else" needs to be
-	"fi ; else" for bash.
-
-Tue Nov  9 15:54:01 1993  Mark Eichin  (eichin at cygnus.com)
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): pass SHELL.
-
-Fri Nov  5 08:07:27 1993  D. V. Henkel-Wallace  (gumby at blues.cygnus.com)
-
-	* config.sub: accept unixware as an alias for svr4.2.
-	Fix some inconsistancies with the gcc version.
-
-Fri Nov  5 15:14:12 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in (DISTDOCDIRS):  Add gdb.
-
-Fri Nov  5 11:59:42 1993  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* Makefile.in (DISTDOCDIRS):  Add libg++ and libio.
-
-Fri Nov  5 10:35:05 1993  Ken Raeburn  (raeburn at rover.cygnus.com)
-
-	* Makefile.in (taz): Only build "info" in DISTDOCDIRS.
-	(DISTDOCDIRS): Don't assume libg++ and gdb folks necessarily want
-	this now.
-
-Thu Nov  4 18:58:23 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.sub: Accept hiux* as an OS name.
-
-	* Makefile.in: Change RUNTEST_FLAGS back to RUNTESTFLAGS per
-	etc/make-stds.texi.  The underscore came from gcc, and dje now
-	agrees that RUNTESTFLAGS is the correct name.
-
-Thu Nov  4 10:49:01 1993  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* install.sh:  Remove 'set -e'.  It makes any conditionals
-	in the script useless.
-
-	* config.guess: Automatically recognize arm-acorn-riscix
-	Patch from Richard Earnshaw (rwe11 at cl.cam.ac.uk).
-
-Thu Nov 04 08:08:04 1993  Jeffrey Wheat  (cassidy at cygnus.com)
-
-	* Makefile.in: Change RUNTESTFLAGS to RUNTEST_FLAGS
-
-Wed Nov  3 22:09:46 1993  Ken Raeburn  (raeburn at rtl.cygnus.com)
-
-	* Makefile.in (DISTDOCDIRS): New variable.
-	(taz): Edit local Makefile.in sooner, instead of proto-toplev
-	Makefile.in later.  Build "info" and "dvi" in DISTDOCDIRS.
-
-Wed Nov  3 21:31:52 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in (hppa target): check the source directory for the
-	  pagas sub-directory
-
-Wed Nov  3 11:12:22 1993  Doug Evans  (dje at canuck.cygnus.com)
-
-	* config.sub: Allow -aout* and -elf*.
-
-Wed Nov  3 11:08:33 1993  Ken Raeburn  (raeburn at rtl.cygnus.com)
-
-	* configure.in: Don't build ld on i386-solaris2, same as for
-	sparc-solaris2.
-
-Tue Nov  2 14:21:25 1993  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* Makefile.in (taz): Add texinfo/lgpl.texinfo (for libg++).
-
-Tue Nov  2 13:38:30 1993  Peter Schauer  (pes at regent.e-technik.tu-muenchen.de)
-
-	* configure.in:  Configure gdb for alpha.
-
-Mon Nov  1 10:42:54 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in (CXXFLAGS): Add -O.
-
-Wed Oct 27 10:45:06 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* config.guess: added support for DG Aviion
-
-Tue Oct 26 14:37:37 1993  Ken Raeburn  (raeburn at rover.cygnus.com)
-
-	* configure.in: Produce warning message for subdirectories not
-	configurable for this host/target combination.  Don't try to
-	configure gdb for vms.
-
-Mon Oct 25 11:22:15 1993  Ken Raeburn  (raeburn at rover.cygnus.com)
-
-	* Makefile.in (taz): Replace "byacc" with "bison -y" in the
-	appropriate files before making "diststuff".
-	(DISTBISONFILES): New var: list of files to be edited.
-	(DISTSTUFFDIRS): Add binutils.
-
-Fri Oct 22 20:32:15 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* config.sub: also handle mipsel and mips64el (for little endian mips)
-
-Fri Oct 22 07:59:20 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* configure.in: Add * to end of all OS names.
-
-Thu Oct 21 11:38:28 1993  Stan Shebs  (shebs at rtl.cygnus.com)
-
-	* configure.in: Build newlib for LynxOS native.
-
-Wed Oct 20 09:56:12 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Add support for delta 88k running SVR3.
-
-	* configure.in: Add comment about HP compiler vs. emacs.
-
-Tue Oct 19 16:02:22 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in: don't build ld on solaris2 (not a viable option
-	  due to bugs in getpwnam & getpwuid)
-
-Tue Oct 19 15:13:56 1993  Ken Raeburn  (raeburn at rtl.cygnus.com)
-
-	* configure.in: Accept alpha-dec-osf1*, not just -osf1, since
-	config.guess will produce a full version number.
-
-Tue Oct 19 15:58:01 1993  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in: Build linker and binutils for alpha-dec-osf1.
-
-Tue Oct 19 11:41:55 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in: Remove -O from CXXFLAGS for consistency with CFLAGS,
-	and gdb/testsuite/Makefile.in.
-
-Sat Oct  9 18:39:07 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in: recognize mips*- instead of mips-
-
-Fri Oct  8 14:15:39 1993  Ken Raeburn  (raeburn at cygnus.com)
-
-	* config.sub: Accept linux*coff and linux*elf as operating
-	systems.
-
-Thu Oct  7 12:57:19 1993  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* config.sub: Recognize mips64, and mips3 as an alias for it.
-
-Wed Oct  6 13:54:21 1993  Peter Schauer  (pes at regent.e-technik.tu-muenchen.de)
-
-	* configure.in: Remove alpha-dec-osf*, no longer necessary now that
-	gdb knows how to handle OSF/1 shared libraries.
-
-Tue Oct  5 11:55:04 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* configure.in: Recognize hppa*-*-hiux* (currently synonym for hpux).
-	* config.guess: Recognize Hitachi's HIUX.
-	* config.sub: Recognize h3050r* and hppahitachi.
-	Remove redundant cases for hp9k[23]*.
-
-Mon Oct  4 16:15:09 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in: default to '--with-gnu-as' and '--with-gnu-ld'
-	if gas and ld are in the source tree and are in ${configdirs}.
-	If ${use_gnu_as} or ${use_gnu_ld} are 'no', then don't set the
-	--with options (but still pass them down on the command line,
-	if they were explicitly specified).
-
-Fri Sep 24 19:11:13 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure: substitute SHELL value in Makefile.in with
-	${CONFIG_SHELL}
-
-Thu Sep 23 18:05:13 1993  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* configure.in: Build gas, ld, and binutils for *-*-sysv4* and
-	*-*-solaris2* targets.
-
-Sun Sep 19 17:01:41 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Makefile.in: define M4, and pass it down to sub-makes;
-	all-autoconf now depends on all-m4
-
-Sat Sep 18 00:38:23 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Makefile.in ({AR,RANLIB}_FOR_TARGET): make contingent on
-	presence of {ar,ranlib} instead of a configured directory
-
-Wed Sep 15 08:41:44 1993  Jim Kingdon  (kingdon at cirdan.cygnus.com)
-
-	* config.guess: Accept 34?? as well as 33?? for NCR.
-
-Mon Sep 13 12:28:43 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in: grab mt-hppa for HPPA targets; use 'gas ' instead
-	of 'gas' in sed commands, since 'gash' is now in the tree as well.
-
-Fri Sep 10 11:23:52 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure: grab values for $(CC) and $(CXX) from the
-	environment, so that someone can do "CC=gcc configure; make" and
-	have it work right (matching the way that autoconf works now)
-
-	* configure.in, Makefile.in: add support for gash, the tcl
-	interface to Galaxy
-
-	* config.guess: add NetBSD variants (hp300, x86)
-
-Thu Sep  9 16:48:52 1993  Jason Merrill  (jason at deneb.cygnus.com)
-
-	* install.sh: Support -d option (in the manner of SunOS 4 install,
-	as it is more deterministic than that of GNU install)
-	(chmodcmd): Set file to mode 755 by default (should also do default
-	chgrp and chown, but I don't feel like dealing with that now)
-
-Tue Sep  7 11:59:39 1993  Doug Evans  (dje at canuck.cygnus.com)
-
-	* config.sub: Remove h8300hhms alias.
-
-Tue Aug 31 11:00:09 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* configure.in: Match *-*-solaris2* not *-sun-solaris2*.
-
-Mon Aug 30 18:29:10 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Makefile.in (gcc-no-fixedincludes): touch stmp-fixproto as well
-	as stmp-fixinc
-
-Wed Aug 25 16:35:59 1993  K. Richard Pixley  (rich at sendai.cygnus.com)
-
-	* config.sub: recognize m88110-bug-coff.
-
-Tue Aug 24 10:23:24 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Makefile.in (all-libio): all dependencies on the toolchain used
-	to build this (gcc, gas, ld, etc)
-
-Fri Aug 20 17:24:24 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Deal with OSF/1 1.3 on alpha.
-
-Thu Aug 19 11:43:04 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* install.sh: add some 'else true' clauses for portability
-
-	* configure.in: don't build libio for h8[35]00-*-* targets
-
-Tue Aug 17 19:02:31 1993  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* Makefile.in:  Add support for new libio.
-
-Sun Aug 15 20:48:55 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* install.sh: If one command fails, don't try the rest.  Don't try
-	to remove $dsttmp (via trap) unless we have already created it.
-	If $src doesn't exist, detect it and exit with an error.
-
-	* config.guess: Recognize BSD on hp300.
-
-Wed Aug 11 18:35:13 1993  Per Bothner  (bothner at kalessin.cygnus.com)
-
-	* config.guess:  Map (9000/[34]??:HP-UX:*:*) to m68k-hp-hpux.
-	Bug report from "Hamish (H.I.) Macdonald" <hamish at bnr.ca>.
-
-Wed Aug 11 15:37:51 1993  Jason Merrill  (jason at deneb.cygnus.com)
-
-	* Makefile.in (all-send-pr): depends on all-prms
-
-Wed Aug 11 16:56:03 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Fix typo (9000/8??:4.3bsd -> 9000/7??:4.3bsd).
-
-Fri Aug  6 14:45:02 1993  Ian Lance Taylor  (ian at tweedledumb.cygnus.com)
-
-	* config.guess: From michael at mercury.cs.mun.ca (Michael Rendell):
-	Added test for mips-mips-riscos5.
-
-Thu Aug  5 15:45:08 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure.in: use mh-hp300 for 68k HP hosts
-
-Mon Aug  2 11:56:53 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* configure: add support for CONFIG_SHELL, so that you can use
-	some alternate shell for evaluating configure scripts
-
-Sun Aug  1 11:36:27 1993  Fred Fish  (fnf at deneb.cygnus.com)
-
-	* Makefile.in (make-gdb.tar.gz):  Sed bug reporting address
-	in configure script to bug-gdb at prep.ai.mit.edu when building
-	distribution archive.
-	* Makefile.in (COMPRESS):  Remove def.
-	* Makefile.in (gdb.tar.gz, make-gdb.tar.gz):  Renamed from
-	gdb.tar.Z and make-gdb.tar.Z respectively.
-	* Makefile.in (make-gdb.tar.gz):  Now only build gzip'd archive.
-	* Makefile.in (make-gdb.tar.gz):  Minor changes to move closer
-	to convergence with 'taz' target in Makefile.in.
-
-Fri Jul 30 12:34:57 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* install.sh (dsttmp): use trap to ensure that tmp files go
-	away on error conditions
-
-Wed Jul 28 11:57:36 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Makefile.in (BASE_FLAGS_TO_PASS): remove LOADLIBES
-
-Tue Jul 27 12:43:40 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* Makefile.in (install-dirs): Deal with a prefix like /gnu;
-	its parent is '/' not ''.
-
-	* Makefile.in (DEVO_SUPPORT): Add comments about ChangeLog.
-
-Fri Jul 23 09:53:37 1993  Jason Merrill  (jason at wahini.cygnus.com)
-
-	* configure: if ${newsrcdir}/configure doesn't exist, don't assume
-	that ${newsrcdir}/configure.in does.
-
-Tue Jul 20 11:28:50 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* test-build.mk: support for CONFIG_SHELL
-
-Mon Jul 19 21:54:46 1993  Fred Fish  (fnf at deneb.cygnus.com)
-
-	* config.sub (netware):  Add as a basic system type.
-
-Wed Jul 14 12:03:11 1993  K. Richard Pixley  (rich at sendai.cygnus.com)
-
-	* Makefile.in (Makefile): depend on configure.in.  Also drop the
-	  $(srcdir)/ from the dependency on Makefile.in.
-
-Tue Jul 13 20:10:58 1993  Doug Evans  (dje at canuck.cygnus.com)
-
-	* config.sub: Recognize h8300hhms as h8300h-hitachi-hms.
-	(h8300hhms is temporary until multi-libraries are implemented).
-	* configure.in: Handle h8300h too.
-
-Sun Jul 11 17:35:27 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Recognize dpx/2 as m68k-bull-sysv3.
-
-Thu Jul  8 18:26:12 1993  John Gilmore  (gnu at cygnus.com)
-
-	* configure:  Remove extraneous output when guessing host type.
-	* config.guess:  Remove extraneous output when guessing using C
-	compiler rather than uname, or when guessing fails.
-
-Wed Jul  7 17:58:14 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Makefile.in: remove all.cross and install.cross targets
-
-	* configure: remove CROSS=-DCROSS_COMPILE and ALL=all.cross
-	  definitions
-
-Tue Jul  6 10:39:44 1993  Steve Chamberlain  (sac at phydeaux.cygnus.com)
-
-	* configure.in (target sh): Build gprof.
-
-Thu Jul  1 16:52:56 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* config.sub: change -solaris to -solaris2
-
-Thu Jul  1 15:46:16 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* configure.in: Use config/mh-riscos for mips-*-sysv*.
-
-Wed Jun 30 09:31:58 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: Correct error message for missing Makefile.in to
-	print correct directory.
-
-Tue Jun 29 13:52:16 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* install.sh: kludge around 386BSD shell bug
-
-Tue Jun 29 13:06:49 1993  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* config.guess:  Recognize NeXT.
-	* config.guess:  Recognize i486-ncr-sysv4.
-	* Makefile.in (taz):  rm $(TOOL)-$$VER before linking.
-
-Tue Jun 29 12:50:57 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (MAKEINFOFLAGS): New variable.
-	(FLAGS_TO_PASS): Pass MAKEINFO as MAKEINFO MAKEINFOFLAGS.
-	* build-all.mk, test-build.mk: Pass down --no-split as
-	MAKEINFOFLAGS when hosted on DOS.  Compile DOS hosted without -g.
-
-Thu Jun 24 13:39:11 1993  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* Makefile.in (DEVO_SUPPORT):  Add COPYING COPYING.LIB install.sh.
-
-Wed Jun 23 12:59:21 1993  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* Makefile.in (libg++.tar.z):  New rule.
-	* Makefile.in (taz):  Replace 'configure -rm' by 'make distclean'.
-	* Makefile.in (taz):  Only do a single chmod.
-
-Fri Jun 18 12:03:10 1993  david d `zoo' zuhn  (zoo at majipoor.cygnus.com)
-
-	* install.sh: don't use dirname anymore (replaced with sed usage)
-
-Thu Jun 17 18:43:42 1993  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in:  Change extension for gzip'd files from '.z' to
-	'.gz' per new FSF standard usage.
-
-Thu Jun 17 16:58:50 1993  david d `zoo' zuhn  (zoo at majipoor.cygnus.com)
-
-	* configure: put quotes around the final value of program_transform_name
-
-Tue Jun 15 16:48:51 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: new install.sh support; update install-info rules
-
-Wed Jun  9 12:31:34 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure.in: Build diff for crosses, but not for go32 host.
-
-	* configure.in: Build gprof only for native, and don't build it
-	for mips-*-*, rs6000-*-*, or i[34]86-*-sco*.
-
-Mon Jun  7 13:12:11 1993  david d `zoo' zuhn  (zoo at deneb.cygnus.com)
-
-	* configure.in: don't build gas,ld,binutils on for *-*-sysv4
-
-Mon Jun  7 11:40:11 1993  Brendan Kehoe  (brendan at lisa.cygnus.com)
-
-	* configure.in (host_tools): Add prms.
-
-Fri Jun  4 13:30:42 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: install gcc, do installation of $(INSTALL_MODULES)
-	with $(FLAGS_TO_PASS) on the command line
-
-	* config.sub: Recognize lynx and lynxos
-
-Fri Jun  4 10:59:56 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* config.sub: Accept -ecoff*, not just -ecoff.
-
-Thu Jun  3 17:38:54 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* Makefile.in (taz): Use .gz suffix instead of .z.
-	(binutils.tar.gz, gas+binutils.tar.gz, gas.tar.gz): Fixed target
-	names.
-
-Thu Jun  3 00:27:06 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in (vault-install): add an 'else true' (for Ultrix)
-
-Wed Jun  2 18:19:16 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in (install-no-fixedincludes):  install gcc last, so
-	that rebuilds that might happen during 'make install' don't get
-	bogus gcc include files
-
-Wed Jun  2 16:14:10 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	Change from Utah for HPPA support:
-	* config.guess: Recognize hppa1.x-hp-bsd.
-
-Wed Jun  2 11:53:33 1993  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* config.guess:  Add support for Motorola Delta 68k, up to r3v7.
-	Patch from pot at fly.cnuce.cnr.it (Francesco Potorti`).
-
-Tue Jun  1 17:48:42 1993  Rob Savoye  (rob at darkstar.cygnus.com)
-
-	* config.sub: Add support for rom68k and bug boot monitors.
-
-Mon May 31 09:36:37 1993  Jim Kingdon  (kingdon at cygnus.com)
-
-	* Makefile.in: Make all-opcodes depend on all-bfd.
-
-Thu May 27 08:05:31 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* config.guess: Added special check for i[34]86-univel-sysv4*.
-
-Wed May 26 16:33:40 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* config.guess: For i[34]86-unknown-sysv4 use UNAME_MACHINE for
-	the processor rather than assuming i486.
-
-Wed May 26 09:40:18 1993  Jim Kingdon  (kingdon at lioth.cygnus.com)
-
-	* config.guess: Recognize SunOS6 as Solaris3.
-
-Tue May 25 23:03:11 1993  Per Bothner  (bothner at cygnus.com)
-
-	* config.guess:  Fix typo.  Avoid #elif (not in K&R 1).
-	Recognize SunOS 5.* only (and not [6-9].*) as being Solaris2.
-
-Tue May 25 12:44:18 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* build-all.mk (all-cross): New target for Canadian Cross.
-	Added Q2 go32 targets.
-	* test-build.mk: Configure go32 cross sparclite-aout and
-	mips-idt-ecoff -with-gnu-ld.  Moved build binary directory from
-	PARTIAL_HOLE_DIRS to BUILD_HOLES_DIRS.
-
-Mon May 24 15:30:06 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: fix Alpha GDB typo; also, don't build DejaGnu for
-	GO32 hosted toolchains
-
-Mon May 24 14:18:41 1993  Rob Savoye  (rob at darkstar.cygnus.com)
-
-	* configure: change  so "-exec-prefix" gets passed down rather
-	than "-exec_prefix" so autoconf generated Makefiles get the
-	exec_prefix set right.
-
-Fri May 21 10:42:25 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* config.guess: get the Solaris2 minor version number
-
-	* Makefile.in: add standards.texi and make-stds.texi to ETC_SUPPORT
-
-Fri May 21 06:20:52 1993  Brendan Kehoe  (brendan at lisa.cygnus.com)
-
-	* config.guess: Recognize some Sequent platforms.
-
-Thu May 20 14:33:48 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: added the vault-install target
-
-	* configure.in: actually use the Sun3 makefile fragment that's in
-	config, also added the release dir to configdirs
-
-Thu May 20 14:19:18 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* Makefile.in (taz): Fix modes on stuff in $(TOOL) dir also.
-
-Tue May 18 20:26:41 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: remove some program from Alpha targetted toolchains
-
-Tue May 18 15:23:19 1993  Ken Raeburn  (raeburn at cygnus.com)
-
-	* Makefile.in (DISTSTUFFDIRS): Renamed from PROTODIRS.  Add ld and
-	gprof.
-	(taz): Run "make diststuff" in those directories instead of "make
-	proto-dir".  Look for "VERSION=" only at start of line in subdir
-	Makefile.  Use "gzip -9" for compression.
-	(TEXINFO_SUPPORT, DIST_SUPPORT, BINUTILS_SUPPORT_DIRS): New vars.
-	(binutils.tar.z): New target.
-
-Mon May 17 17:01:15 1993  Ken Raeburn  (raeburn at deneb.cygnus.com)
-
-	* Makefile.in (taz): Include gpl.texinfo.
-
-Fri May 14 06:48:38 1993  Ken Raeburn  (raeburn at deneb.cygnus.com)
-
-	* Makefile.in (setup-dirs): Merged into "taz" target.
-	(taz): Only do `proto-dir' stuff if a directory is actually needed
-	for this target.
-
-Wed May 12 13:09:44 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (MUNCH_NM): New variable, defined to be $(NM).
-	(FLAGS_TO_PASS): Pass down MUNCH_NM.
-	(HOST_CC, HOST_PREFIX, HOST_PREFIX_1): New variables.
-	(EXTRA_GCC_FLAGS): Pass down HOST_* variables.
-	(gcc-no-fixedincludes): Correct for current gcc Makefile.
-
-Tue May 11 10:14:25 1993  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in (make-gdb.tar.Z):  Add configure, config.guess,
-	config.sub, and move-if-change to gdb testsuite distribution
-	archive, so the testsuite can be extracted, configured, and
-	run separately from the gdb distribution.  Blow away the Chill
-	tests that require a Chill compiled executable, since GNU Chill
-	is not yet publically available.
-
-Mon May 10 17:22:26 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* test-build.mk: set environment variables in a single command,
-	instead of a list of assignments and exports
-
-	* config.guess: recognize Alpha/OSF1 systems
-
-Mon May 10 14:55:51 1993  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: Change help message to prefer --options rather than
-	  -options.
-
-Mon May 10 05:58:35 1993  Ken Raeburn  (raeburn at kr-pc.cygnus.com)
-
-	* config.sub: Convergent Tech. "miniframe" uses m68010, sez
-	zippy at ecst.csuchico.edu.
-	* config.guess: Recognize miniframe.
-
-Sun May  9 17:47:57 1993  Rob Savoye  (rob at darkstar.cygnus.com)
-
-       * Makefile.in: Use srcroot to find runtest rather than rootme.
-       Pass RUNTESTFLAGS and EXPECT down in BASE_FLAGS_TO_PASS.
-
-Fri May  7 14:55:59 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* test-build.mk: Extensive additions to support building on a
-	machine other than the host.
-
-Wed May  5 08:35:04 1993  Ken Raeburn  (raeburn at deneb.cygnus.com)
-
-	* configure (tooldir): Fix for i386-aix again.
-
-Mon May  3 19:00:27 1993  Per Bothner  (bothner at cygnus.com)
-
-	* configure, Makefile.in:  Change definition of $(tooldir)
-	to match the FSF.
-
-Fri Apr 30 15:55:21 1993  Fred Fish  (fnf at cygnus.com)
-
-	* config.guess:  Recognize i[34]86/SVR4.
-
-Fri Apr 30 15:52:46 1993  Steve Chamberlain  (sac at thepub.cygnus.com)
-
-	* Makefile.in (all-gdb): gdb depends on sim.
-
-Thu Apr 29 23:30:48 1993  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in (gdb.tar.Z):  Make prototype gdb testsuite directory
-	at the same time we make the prototype gdb directory.
-	* Makefile.in (make-gdb.tar.Z):  Make the testsuite distribution
-	files at the same time as the gdb base release distribution.
-
-Thu Apr 29 12:50:37 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (check): Use individual check targets rather than
-	DO_X rule.
-	(check-gcc): Added.
-
-Thu Apr 29 09:50:07 1993  Jim Kingdon  (kingdon at cygnus.com)
-
-	* config.sub: Use sysv3.2 not sysv32 for canonical OS
-	for System V release 3.2.
-
-Thu Apr 29 10:33:22 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* config.sub: Recognize hppaosf.
-	* configure.in: Do configure ld/binutils/gas for it.
-
-Tue Apr 27 06:25:34 1993  Ken Raeburn  (raeburn at kr-pc.cygnus.com)
-
-	* configure (tooldir): Alter syntax used to set this, for systems
-	where "\$" isn't handled right, like i386-aix.
-
-Thu Apr 22 08:17:35 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: Pass program-transform-name, not
-	program_transform_name, to recursive configures.
-
-Thu Apr 22 02:58:21 1993  Ken Raeburn  (raeburn at cygnus.com)
-
-	* Makefile.in (gas+binutils.tar.z): New rule for building snapshots
-	of gas+ld+binutils.
-
-Mon Apr 19 17:41:30 1993  Per Bothner  (bothner at cygnus.com)
-
-	* config.guess:  Recognize AIX3.2 as distinct from 3.1.
-
-Sat Apr 17 17:19:50 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: rename m88k-motorola-m88kbcs to m88k-motorola-sysv
-
-Tue Apr 13 16:52:16 1993  Brendan Kehoe  (brendan at lisa.cygnus.com)
-
-	* Makefile.in (PRMS): Set back to all-prms.
-
-Sat Apr 10 12:04:07 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* test-build.mk: Pass -with-gnu-as for known MIPS native and MIPS
-	targets, rather than for MIPS hosts.
-
-Fri Apr  9 13:51:06 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: add comment for --with-x default values
-
-	* config.guess: handle Motorola Delta88 box for SVR3 and SVR4.
-
-	* Makefile.in: add check-* targets for each of the directories in
-	the tree.  Add a definition of RUNTEST that will use the one we
-	just built, if it exists.  Pass this down via FLAGS_TO_PASS.
-
-Thu Apr  8 09:21:30 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure.in: Removed obsolete references to bfd_target and
-	target_makefile_frag.
-
-	* build-all.mk: Set assorted targets for Q2.
-	* config.sub: Recognize z8k-sim and h8300-hms.
-	* test-build.mk: Really don't pass host to configure.
-	(HOLES): Added uname.
-
-Wed Apr  7 15:48:19 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: Handle an empty program-prefix, program-suffix or
-	program-transform-name correctly.
-
-Tue Apr  6 13:48:41 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* build-all.mk: -G 8 no longer required for MIPS targets.
-	* test-build.mk: Don't pass host argument to configure; make it
-	guess.
-
-Tue Apr  6 10:36:53 1993  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in (gdb.tar.Z):  Fix for building gzip'd distribution.
-	* Makefile.in (COMPRESS):  New macro, like GZIP.
-
-Fri Apr  2 09:02:31 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* test-build.mk: Use -with-gnu-as for mips-sgi-irix4 as well.
-
-	* build-all.mk: Set GCC to gcc -O -G 8 for MIPS targets, since gcc
-	with gas currently defaults to -G 0.
-
-Thu Apr  1 08:25:42 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (all-flex): flex depends on byacc.
-
-	* build-all.mk: If host not specified, use config.guess.  Pass TAG
-	to test-build.mk as RELEASE_TAG.
-	* test-build.mk (configargs): New variable containing arguments to
-	pass to configure.  Set to -with-gnu-as on mips-dec-ultrix.
-	(FLAGS_TO_PASS): Pass down RELEASE_TAG.
-
-	* config.guess: Use /bin/uname when checking -X argument on SCO,
-	to avoid invoking GNU uname which doesn't understand -X.
-
-	* test-build.mk: Don't use /usr/unsupported/bin/as on AIX.
-
-	* configure.in: Build gas for mips-*-*.
-
-Wed Mar 31 21:20:58 1993  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Makefile.in (all.normal): insert missing backslash.
-
-Wed Mar 31 12:31:56 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* build-all.mk: Bump -XNh value to 1500 to match gcc requirements.
-
-	* Makefile.in: Complete overhaul to merge many almost identical
-	targets.
-
-Tue Mar 30 20:17:01 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* Makefile.in (setup-dirs-gdb): Renamed from setup-dirs.
-	(gdb.tar.Z): Adjusted.
-
-	* Makefile.in (setup-dirs, taz): New targets; should be general
-	enough to adapt for gdb sometime.  Build only .z file.
-	(gas.tar.z): New target.
-
-Tue Mar 30 10:03:09 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* build-all.mk: Use CC=cc -Xs on Solaris.
-
-Thu Mar 25 15:14:30 1993  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in:  Incorporate changes suggested by wilson at cygnus.com
-	for handling BISON for FSF releases.
-
-Thu Mar 25 06:19:48 1993  Ken Raeburn  (raeburn at kr-pc.cygnus.com)
-
-	* configure: Actually implement the change zoo just documented.
-
-Wed Mar 24 13:02:44 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)
-
-	* configure: when using config.guess, only set target_alias when
-	it's not already been set (ie, on the command line)
-
-Mon Mar 22 23:07:39 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: add installcheck target, set PRMS to install-prms
-
-Sun Mar 21 16:46:12 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure: add support for package_makefile_fragment, handle the
-	case where a directory has a configure.in file but no Makefile.in
-	more gracefully (with an actual understandable error message, even);
-	add support for --without (and add this to the usage message); also
-	explicitly add a --host=${host_alias} to the command line when
-	config.guess is used
-
-Sun Mar 21 12:11:58 1993  Jim Wilson  (wilson at sphagnum.cygnus.com)
-
-	* configure: Must use both --host and --target in recursive calls.
-
-Thu Mar 18 12:31:35 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: Change deja-gnu to dejagnu.
-
-Mon Mar 15 15:44:35 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure.in (h8300-*-*, h8500-*-*): Don't build libg++.
-
-Fri Mar 12 18:30:14 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: canonicalize all instances to *-*-solaris2*,
-	also strip out a number of tools to not build for go32 host
-
-Wed Mar 10 12:08:27 1993  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* config.guess: add GPL.
-
-	* Makefile.in, config.guess, config.sub, configure: bump
-	  copyrights to 93.
-
-Wed Mar 10 07:12:48 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (do-info): Removed obsolete check for existence of
-	localenv file.
-
-	* Makefile.in (MAKEOVERRIDES): Define to be empty.
-
-Wed Mar 10 03:11:56 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: a couple of 'else true' for decstation,
-	support for TclX
-
-	* configure.in: configure tclX too; don't remove Tk on RS/6000 anymore
-
-Tue Mar  9 16:06:12 1993  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in (setup-dirs): change invocation of make to $(MAKE).
-
-Mon Mar  8 14:52:11 1993  Ken Raeburn  (raeburn at cambridge)
-
-	* config.guess: Recognize i386-ibm-aix (PS/2).
-	* configure.in: Use config/mh-aix386 file for it.
-
-Mon Mar  8 11:12:43 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (GCC_FOR_TARGET): Eliminated definition; use
-	CC_FOR_TARGET instead.
-	(BASE_FLAGS_TO_PASS): Pass GCC_FOR_TARGET=$(CC_FOR_TARGET).
-
-Wed Mar  3 16:00:28 1993  Steve Chamberlain  (sac at ok.cygnus.com)
-
-	* Makefile.in: Add sim to list of directories sent with gdb
-
-Wed Mar  3 11:42:39 1993  Ken Raeburn  (raeburn at cygnus.com)
-
-	* configure.in: Put back mips-dec-bsd* case.
-
-Tue Mar  2 21:15:58 1993  Fred Fish  (fnf at cygnus.com)
-
-	(Ultrix 2.2 support from Michael Rendell <michael at mercury.cs.mun.ca>)
-	* configure.in (vax-*-ultrix2*):  Add Ultrix 2.2 triplet.
-	* config.guess:  Change 'VAX*:ULTRIX:*:*' to 'VAX*:ULTRIX*:*:*'.
-
-Tue Mar  2 18:11:03 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: remove no-op mips-dec-bsd* in "case $target"
-
-	* Makefile.in (dir.info): only run gen-info-dir if it exists,
-	(install-info): install dir.info only if it exists,
-	(all-expect, install-expect): pass along X11_FLAGS_TO_PASS
-
-Tue Mar  2 09:01:30 1993  Ken Raeburn  (raeburn at cygnus.com)
-
-	* configure.in: For vms target, skip bfd, ld, binutils.  Do build
-	gas for mips-dec-bsd.
-
-Tue Mar  2 08:35:24 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure (makesrcdir): If ${srcdir} is relative and not ".",
-	and ${subdir} is not ".", set makesrcdir based on ${invsubdir}.
-
-Tue Feb 23 14:18:28 1993  Mike Werner  (mtw at poseidon.cygnus.com)
-
-	* configure.in: Added "dejagnu" to hosttools list.
-
-Mon Feb 22 23:28:38 1993  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* config.sub, configure.in, config.guess:  Add support
-	for Bosx, an AIX variant from Bull.
-	Patches from F.Pierresteguy at frcl.bull.fr.
-
-Sun Feb 21 11:15:22 1993  Mike Werner  (mtw at poseidon.cygnus.com)
-
-	* devo/dejagnu: Initial creation of devo/dejagnu.
-	Migrated dejagnu testcases and support files for testing software
-	tools to reside as subdirectories, currently called "testsuite",
-	within the directory of the software tool.  Migrated all programs,
-	support libraries, etc. beloging to dejagnu proper from
-	devo/deja-gnu to devo/dejagnu.	These files were moved "as is"
-	with no modifications.	The changes to these files which will
-	allow them to configure, build, and execute properly will be made
-	in a future update.
-
-Fri Feb 19 20:19:39 1993  Brendan Kehoe  (brendan at lisa.cygnus.com)
-
-	* Makefile.in: Change send_pr to send-pr.
-	* configure.in: Likewise.
-	* send_pr: Renamed directory to send-pr.
-
-Fri Feb 19 19:00:13 1993  Per Bothner  (bothner at cygnus.com)
-
-	* Makefile.in:  Add some extra semi-colons (needed if SHELL=bash).
-
-Fri Feb 19 00:59:33 1993  John Gilmore  (gnu at cygnus.com)
-
-	* README:  Update for gdb-4.8 release.
-	* Makefile.in (gdb.tar.Z):  Add texinfo/tex3patch.  Build
-	gdb-xxx.tar.z (gzip'd) file also.
-
-Thu Feb 18 09:16:17 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: make all-diff depend on all-libiberty
-
-Tue Feb 16 16:06:31 1993  K. Richard Pixley  (rich at cygnus.com)
-
-	* config.guess: add vax-ultrix in the spirit of mips-ultrix.
-
-Tue Feb 16 05:57:15 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in, Makefile.in: add hello, tar, gzip, recode, indent
-
-Tue Feb 16 00:58:20 1993  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in (DEVO_SUPPORT):  Remove etc directory
-	(ETC_SUPPORT):  Only add the files GDB wants from etc/.
-	(gdb.tar.Z):  Use ETC_SUPPORT.  Use byacc when building the file.
-
-Thu Feb 11 20:14:28 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in:  makeinfo binary is in a new location
-
-Tue Feb  9 12:42:27 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* config.sub: Accept -ecoff as an OS.
-
-	* Makefile.in: Various changes to eliminate a level of make
-	recursion and reduce the required command line length.
-	(BASE_FLAGS_TO_PASS): New variable holding flags passed to all
-	sub-makes.
-	(EXTRA_HOST_FLAGS, EXTRA_TARGET_FLAGS, EXTRA_GCC_FLAGS): New
-	variables holding settings for specific sub-makes.
-	(FLAGS_TO_PASS, TARGET_FLAGS_TO_PASS, GCC_FLAGS_TO_PASS): Rewrote
-	in terms of BASE_FLAGS_TO_PASS.
-	(TARGET_LIBS): New variable listing directories which use
-	TARGET_FLAGS_TO_PASS.
-	(subdir_do): Eliminated.
-	(do-*): New set of targets to replace subdir_do.
-	(various): All targets which used subdir_do now depend on do-*.
-	(local-clean): Renamed from do_clean.
-	(local-distclean): New target, dependency of distclean and
-	realclean.
-	(install-info): Don't create directories.  Depend on dir.info
-	rather than calling make recursively.
-	(install-dir.info): Eliminated.
-	(install-info-dirs): Create all info directories here.
-	(dir.info): Depend upon do-install-info.
-
-	* test-build.mk (HOLES): Added false.
-
-Sat Feb  6 14:05:09 1993  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* config.guess:  Recognize BSDI and BSDJ (Jolitz 386bsd).
-
-Thu Feb  4 20:49:18 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in (info): remove dependency on all-texinfo.  The
-	problem was really in texinfo/C, not at this level.
-
-Thu Feb  4 13:38:41 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (info): Added dependency on all-texinfo (PR 2112).
-
-Thu Feb  4 01:50:53 1993  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in (make-gdb.tar.Z):  Change BISON to 'bison -y' for
-	GDB releases.
-
-Wed Feb  3 17:22:16 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* configure: Include srcdir in message about target of link not
-	being found.  Don't convert `-' to `_' in `with' options being
-	passed to subdirs.
-
-Tue Feb  2 18:57:59 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: add uudecode to host_tools
-
-	* Makefile.in: added {all,install}-uudecode targets, added them to
-	the appropriate lists
-
-Tue Feb  2 11:45:53 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (all-gcc): Added dependency on all-gas.
-
-	* configure.in (mips-*-*): Build ld and binutils.
-
-Mon Feb  1 12:35:41 1993  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: check return code from mkdir, print error message and
-	  exit on failure.
-
-Sat Jan 30 16:40:28 1993  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in (make-gdb.tar.Z):  New location for texinfo.tex.
-
-Thu Jan 28 15:09:59 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* test-build.mk (HOLES): Added tar, cpio and uudecode.
-
-Wed Jan 27 16:50:32 1993  Jim Wilson  (wilson at sphagnum.cygnus.com)
-
-	* config.sub (h8500):  Recognize this as a cpu type.
-
-Sat Jan 23 20:32:01 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure: source directory missing is no longer a warning
-
-	* configure.in: recognize irix[34]* instead of irix[34]
-
-	* Makefile.in: define and pass down X11_LIB
-
-Sat Jan 23 13:49:40 1993  Per Bothner  (bothner at cygnus.com)
-
-	* guess-systype: Renamed to ...
-	* config.guess:  ... by popular request.
-	* configure.in, Makefile.in:  Update accordingly.
-
-Thu Jan 21 12:20:55 1993  Per Bothner  (bothner at cygnus.com)
-
-	* guess-systype:  Patches from John Eaton <jwe at che.utexas.edu>:
-	+ Add Convex, Cray/Unicos, and Encore/Multimax support.
-	+ Execute ./dummy instead of assuming . is in PATH.
-
-Tue Jan 19 17:18:06 1993  Per Bothner  (bothner at cygnus.com)
-
-	* guess-systype:  New shell script.  Attempts to guess the
-	canonical host name of the executing host.
-	Only a few hosts are supported so far.
-	* configure:  Call guess-systype if no host is specified.
-
-Tue Jan 19 08:26:07 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (gcc-no-fixedincludes): Made to work with current
-	gcc Makefile.
-
-
-Fri Jan 15 10:27:02 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (GCC_FLAGS_TO_PASS): New variable.
-	(all-gcc, install-gcc, subdir_do): Use it.
-
-Wed Jan 13 17:06:45 1993  Jim Wilson  (wilson at sphagnum.cygnus.com)
-
-	* Makefile.in: Rename uninstalled gcc driver from gcc to xgcc.
-
-Wed Jan  6 20:29:16 1993  Mike Werner  (mtw at rtl.cygnus.com)
-
-	* Makefile.in: Removed explicit setting of SUBDIRS. SUBDIRS is now
-	  set exclusively by configure, using configure.in .
-
-Wed Jan  6 13:44:11 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* test-build.mk: set $PATH for all builds
-
-	* Makefile.in: pass TARGET_FLAGS_TO_PASS for xiberty and libm
-
-Wed Jan  6 11:02:10 1993  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in (GCC_FOR_TARGET):  Supply a default that matches
-	the one used in gcc/Makefile.in, so that a null expansion doesn't
-	override the one needed to build gcc with a native cc.
-
-
-Tue Jan  5 07:55:12 1993  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* configure: Accept -with arguments.
-
-Sun Jan  3 15:15:09 1993  Steve Chamberlain  (sac at thepub.cygnus.com)
-
-	* Makefile.in: added h8300sim
-
-Tue Dec 29 15:06:00 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* build-all.mk: If canonhost is i386-unknown-sco3.2v4, change it
-	to i386-sco3.2v4.  Set TARGETS and CFLAGS for i386-sco3.2v4.
-	(all-cygnus, native, build-cygnus): Make
-	$(canonhost)-stamp-3stage-done, not $(host)....
-	* test-build.mk (stamp-3stage-compared): Use tail +10c for
-	i386-sco3.2v4.  Added else true to if command.
-
-Mon Dec 28 12:08:56 1992  Ken Raeburn  (raeburn at cygnus.com)
-
-	* config.sub: (from FSF) Sequent uses a BSD-like OS.
-
-Mon Dec 28 08:32:06 1992  Minh Tran-Le  (mtranle at paris.intellicorp.com)
-
-	* configure.in (i[34]86-*-isc*): added; uses mh-sysv.
-
-Thu Dec 24 17:26:24 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: don't remove binutils from Solaris builds
-
-Thu Dec 24 14:08:38 1992 david d`zoo' zuhn  (zoo at cygnus.com)
-
-	* Makefile.in: get rid of earlier definitions for *clean,
-	also handle the recursive info rule better
-
-Thu Dec 24 12:40:21 1992  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* Makefile.in (mostlyclean, distclean, realclean):  Fix to
-	do more-or-less the right thing.
-
-Wed Dec 16 10:25:31 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: Add lines defining CC and CXX, and use CXX rather
-	than gcc in definitions of CXX_FOR_BUILD and CXX_FOR_TARGET.
-
-Tue Dec 15 00:34:32 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: change all $(host_cpu)-$(host_vendor)-$(host_os) to
-	$(host_canonical).
-
-	* configure.in: split the configdirs list into 4 categories (native
-	v. cross, library v. tool) and handle the cross-only and native-
-	only in more reasonable (and correct!) way.
-
-Mon Dec 14 17:04:22 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* configure.in (hppa*-*-*):  Don't remove bfd and gdb from
-	configdirs anymore.
-
-Sun Dec 13 00:37:26 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: extensive cleanup::  removed all of the explicit
-	clean-* targets, collapsed many wrappers around subdir_do into
-	one, added additional targets to satisfy standards.texi, deleted
-	some old targets, some changes for consistency
-
-Fri Dec 11 20:18:02 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: handle some programs as cross-only, and others as
-	native only
-
-	* test-build.mk: handle partial holes in a more generic manner
-
-	* Makefile.in: m4 depends on libiberty
-
-Thu Dec  3 21:52:11 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: add m4, textutils, fileutils, sed, shellutils,
-	time, wdiff, and find to configdirs
-
-	* Makefile.in: all, clean, and install rules for the new programs
-	added to configure.in
-
-Mon Nov 30 14:54:34 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: use mh-sun for all *-sun-* hosts
-
-Fri Nov 27 18:35:54 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: define flags for X11 include files and library file
-	locations, pass them down to the programs that need this info
-
-	* build-all.mk: added a 'native' target, to 3stage the native toolchain
-
-Sun Nov 22 18:59:13 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: start building libg++ for HP-UX targets
-
-Wed Nov 18 19:33:11 1992  John Gilmore  (gnu at cygnus.com)
-
-	* README:  Update references to files moved into etc/.
-
-Sun Nov 15 09:36:08 1992  Fred Fish  (fnf at cygnus.com)
-
-	* config.sub (i386sol2, i486sol2):  i[34]86-unknown-solaris2.
-	* configure.in (i[34]86-*-solaris2*):  Use config/mh-sysv4.
-
-Thu Nov 12 08:50:42 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: accept dash as well as underscore in long option
-	names for FSF compatibility.
-
-Wed Nov 11 08:04:37 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* config.sub: added -sco3.2v4 support from FSF.
-
-Sun Nov  8 21:14:30 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: expand the section that adds or removes
-	directories from the list of programs to build, to handle native
-	vs. cross in addition to host v. native
-
-Sat Nov  7 18:52:27 1992  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* Makefile.in:  Replace C++ in macro names with CXX.
-	This is less likely to break ...
-
-Sat Nov  7 15:16:58 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* test-build.mk: add -w to GNU_MAKE
-
-Fri Nov  6 23:10:37 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* config.sub: remove 'sparc'-->'sparc-sun' default transformation,
-	add 'sparc' to list of recognized cpus.  This needed to make
-	'sparc-aout' expand to 'sparc-unknown-aout' instead of 'sparc-sun-aout'.
-	Delete some redundant ose68 variants.  Recognize -wrs as an os,
-	then changes that into $CPU-wrs-vxworks.
-
-	* configure.in: remove most references to gdbtest, regularize
-	target based program removal
-
-	* test-build.mk: import from p3 tree (many fixes and changes)
-
-Fri Nov  6 20:59:00 1992  david d `zoo' zuhn  (zoo at cygnus.com)
-
-	* Makefile.in: added rules to handle tcl, tk, and expect
-
-	* configure.in: handle those directories if they exist
-
-Thu Nov  5 14:35:41 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* config.sub: removed bogus hppabsd and hppahpux names, since
-	"hppa" is not a valid cpu (hppa1.1 or hppa1.0 are, though)
-
-Thu Oct 29 00:12:41 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: all-gcc now depends on all-binutils.  all-libg++
-	depends upon all-xiberty
-
-	* Makefile.in: changes from p3, including:
-
-	Thu Oct  8 15:00:17 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (XTRAFLAGS): include newlib directories if
-	newlib/Makefile exists, rather than if host != target.
-
-	Fri Sep 25 13:41:52 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: added -nostdinc to XTRAFLAGS if we are using gcc
-	from the same source tree and not building a cross-compiler.  This
-	matters for the libg++ configuration if reconfiguring a tree that
-	has already been installed.
-
-	Thu Sep 10 10:35:51 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: added -I for newlib/targ-include to XTRAFLAGS, to
-	pick up the machine and system specific header files.
-
-	* Makefile.in: added AS_FOR_TARGET, passed down in
-	TARGET_FLAGS_TO_PASS.  Added CC_FOR_BUILD, which is intended to be
-	the C compiler to use to create programs which are run in the
-	build environment, set it to default to $(CC), and passed it down
-	in FLAGS_TO_PASS and TARGET_FLAGS_TO_PASS.
-
-	Mon Sep  7 22:34:42 1992  Ian Lance Taylor  (ian at cirdan.cygnus.com)
-
-	* Makefile.in: add $(host) = $(target) tests back to *_FOR_TARGET.
-	We need them for unusual native builds, like systems without
-	ranlib.
-
-	* configure: also define $(host_canonical) and
-	$(target_canonical), which are the full, canonical names for the
-	given host and target
-
-Sun Nov  1 16:38:17 1992  Per Bothner  (bothner at cygnus.com)
-
-	* Makefile.in:  Added separate definitions for C++.
-
-Fri Oct 30 11:37:52 1992  Fred Fish  (fnf at cygnus.com)
-
-	* configure.in (configdirs):  Add deja-gnu.
-
-Fri Oct 23 00:39:18 1992  John Gilmore  (gnu at cygnus.com)
-
-	* README:  Update for configure.texi and gdb-4.7 release.
-
-Wed Oct 21 21:54:27 1992  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in:  Move "all" target to top of file.
-	Previously, first target was ".PHONY" which caused BSD4.4 make
-	to build .PHONY when make was run without arguments.
-
-Mon Oct 19 01:17:54 1992  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in:  Add COPYING.LIB to GDB releases, now that there's
-	Library-copylefted code in libiberty.
-
-Tue Oct 13 01:22:32 1992  John Gilmore  (gnu at cygnus.com)
-
-	* config.sub:  Replace m68kmote with plain old m68k.
-
-Fri Oct  9 03:14:24 1992  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in:  Remove space from blank line, avoid Make complaints.
-
-Thu Oct  8 18:41:45 1992  Ken Raeburn  (raeburn at cygnus.com)
-
-	* config.sub: Complain if no argument is given.  Added support for
-	386bsd as OS and target alias.
-
-Thu Oct  8 15:07:22 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (XTRAFLAGS): include newlib directories if
-	newlib/Makefile exists, rather than if host != target.
-
-Mon Oct  5 03:00:09 1992  Mark Eichin  (eichin at tweedledumber.cygnus.com)
-
-	* config.sub: recognize sparclite-wrs-vxworks.
-
-	* Makefile.in (install-xiberty): added *-xiberty make rules (from
-	p3.) Added clean-xiberty to clean.
-
-Thu Oct  1 17:59:19 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: use *-*-* instead of nested cases for host and target
-
-Tue Sep 29 14:11:18 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: added -nostdinc to XTRAFLAGS if we are using gcc
-	from the same source tree and not building a cross-compiler.  This
-	matters for the libg++ configuration if reconfiguring a tree that
-	has already been installed.
-
-Sep 20 08:53:10 1992  Fred Fish  (fnf at cygnus.com)
-
-	* config.sub (i486v/i486v4):  Merge in from FSF version.
-
-Fri Sep 18 00:32:00 1992  Mark Eichin  (eichin at cygnus.com)
-
-	* configure: only set PWD if it is already set.
-
-Thu Sep 17 23:05:53 1992  Mark Eichin  (eichin at cygnus.com)
-
-	* configure: just set PWD=`pwd` at the top, since Ultrix sh
-	doesn't have unset and all success paths (and most error paths)
-	out set it anyway. (Note: should change all uses of ${PWD=`pwd`}
-	to just ${PWD} to avoid confusion.)
-
-Tue Sep 15 16:00:54 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: always set $(tooldir) to $(libdir)/$(target_alias),
-	even for a native compilation.
-
-Tue Sep 15 02:22:56 1992  John Gilmore  (gnu at cygnus.com)
-
-	Changes to make the gdb.tar.Z rule work better.
-
-	* Makefile.in (GDB_SUPPORT_DIRS):  Add opcodes.
-	(DEVO_SUPPORT):  Add configure.texi.
-	(bfd-ilrt.tar.Z):  Remove ancient rule.
-
-Thu Sep 10 10:43:19 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: added -I for newlib/targ-include to XTRAFLAGS, to
-	pick up the machine and system specific header files.
-
-	* configure.in, config.sub: added new target m68010-adobe-scout,
-	with alias of adobe68k.  Changed configure.in to check for
-	-scout before -sco* to avoid a false match.
-
-	* Makefile.in: added AS_FOR_TARGET, passed down in
-	TARGET_FLAGS_TO_PASS.  Added CC_FOR_BUILD, which is intended to be
-	the C compiler to use to create programs which are run in the
-	build environment, set it to default to $(CC), and passed it down
-	in FLAGS_TO_PASS and TARGET_FLAGS_TO_PASS.
-
-Wed Sep  9 12:21:42 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in: added TARGET_FLAGS_TO_PASS, CC_FOR_TARGET,
-	AR_FOR_TARGET, RANLIB_FOR_TARGET, NM_FOR_TARGET.  Pass
-	TARGET_FLAGS_TO_PASS, which defines CC, AR, RANLIB and NM as the
-	FOR_TARGET variants, to newlib and libg++.
-
-Tue Sep  8 17:28:30 1992  Ken Raeburn  (raeburn at cambridge.cygnus.com)
-
-	* Makefile.in (all-gas, all-gdb): Require all-opcodes to be built
-	first.
-
-Wed Sep  2 02:50:05 1992  John Gilmore  (gnu at cygnus.com)
-
-	* config.sub:  Accept `elf' as an environment.
-
-Tue Sep  1 15:48:30 1992  Steve Chamberlain  (sac at thepub.cygnus.com)
-
-	* Makefile.in (all-opcodes):  cd into the right directory
-
-Sun Aug 30 21:12:11 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* configure: added -program_transform_name option, used as
-	argument to sed when installing programs.
-	configure.texi: added documentation for -program_prefix,
-	-program_suffix and -program_transform_name.
-
-Thu Aug 27 21:59:44 1992  John Gilmore  (gnu at cygnus.com)
-
-	* config.sub:  Accept i486 where i386 ok.
-
-Thu Aug 27 13:04:42 1992  Brendan Kehoe  (brendan at rtl.cygnus.com)
-
-	* config.sub: accept we32k
-
-Mon Aug 24 14:05:14 1992  Ian Lance Taylor  (ian at cygnus.com)
-
-	* config.sub, configure.in: accept OSE68000 and OSE68k.
-
-	* Makefile.in: don't create all directories for ``make install'';
-	let the subdirectories create the ones they need.
-
-Tue Aug 11 23:13:17 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* COPYING: new file, GPL v2
-
-Tue Aug  4 01:12:43 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: use the new gen-info-dir, which needs a template
-	argument (which also lives in texinfo)
-
-	* configure.texi, standards.texi: fix INFO-DIR-ENTRY
-
-Mon Aug  3 00:34:17 1992  Fred Fish  (fnf at cygnus.com)
-
-	* config.sub (ncr3000):  Change i386 to i486.
-
-Thu Jul 23 00:12:17 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: add install-rcs, install-grep to
-	install-no-fixedincludes, removed install-bison and install-libgcc
-
-Tue Jul 21 01:01:50 1992  david d `zoo' zuhn (zoo at cygnus.com)
-
-	* configure.in: grab the HPUX makefile fragment if on HPUX
-
-Mon Jul 20 11:02:09 1992  D. V. Henkel-Wallace  (gumby at cygnus.com)
-
-	* Makefile.in: eradicate bison spoor (ditto libgcc).
-	 configure.in: recognise m68{k,000}-ericsson-OSE.
-	 es1800 is alias for m68k-ericsson-OSE
-
-Sun Jul 19 17:49:02 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: rearrange the parts that remove programs from
-	configdirs, based now on HOST==TARGET or by canonical triple.
-
-Fri Jul 17 22:52:49 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* test-build.mk: recurse explicitly with -f test-build.mk when
-	  appropriate.  predicate stage3 and comparison on the existence
-	  of gcc.  That is, if gcc isn't around, we aren't three-staging.
-	  On very clean, also remove ...stamp-co.  Build in-place before
-	  doing other builds.
-
-Thu Jul 16 18:33:09 1992  Steve Chamberlain  (sac at thepub.cygnus.com)
-
-	* Makefile.in, configure.in: add tgas
-
-Thu Jul 16 16:05:28 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Makefile.in: a number of changes merged in from progressive.
-
-	* configure.in: add libm.
-
-	* .cvsignore: ignore some stuff that comes from test-build.mk.
-
-Tue Jul  7 00:24:52 1992  Fred Fish  (fnf at cygnus.com)
-
-	* config.sub:  Add es1800 (m68k-ericsson-es1800).
-
-Tue Jun 30 20:24:41 1992  D. V. Henkel-Wallace  (gumby at cygnus.com)
-
-	* configure: Add program_suffix (parallel to program_prefix)
-	* Makefile.in: adjust directory-creating script for losing decstation
-
-Mon Jun 22 23:43:48 1992  Per Bothner  (bothner at cygnus.com)
-
-	* configure:  Minor $subdir-related fixes.
-
-Mon Jun 22 18:30:26 1992  Steve Chamberlain  (sac at thepub.cygnus.com)
-
-	* configure: fix various problems with propogating
-	makefile_target_frag in subdirs.
-	* configure.in: config libgcc if its there
-
-Fri Jun 19 15:19:40 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* config.sub:  HPPA merge.
-
-Sun Jun 14 10:29:19 1992  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in:  Replace all-bison with all-byacc in all
-	dependency lines for other tools (which now use byacc).
-
-Fri Jun 12 22:21:57 1992  John Gilmore  (gnu at cygnus.com)
-
-	* config.sub:  Add sun4sol2 => sparc-sun-solaris2.
-
-Thu Jun  4 12:07:32 1992  Mark Eichin  (eichin at cygnus.com)
-
-	* Makefile.in: make gprof rules similar to byacc rules (instead of
-	vestigal $(unsubdir) that didn't work...)
-
-Thu Jun  4 00:37:05 1992  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* config.sub:  Add support for Linux.
-	* Makefile.in:  Use $(FLAGS_TO_PASS) more consistently
-	(at least for libg++).
-
-Tue Jun 02 20:03:00 1992  david d `zoo' zuhn (zoo at cygnus.com)
-
-	* configure.texi: fix doc for the -nfp option to configure
-
-Tue Jun  2 17:20:52 1992  Michael Tiemann  (tiemann at cygnus.com)
-
-	* Makefile.in (all-binutils): ar needs flex, so depend on all-flex.
-
-Sun May 31 15:04:08 1992  Mark Eichin  (eichin at cygnus.com)
-
-	* config.sub: changed [^-]+ to [^-][^-]* so that it works under
-	Sun sed. (BSD 4.3 sed doesn't handle [^-]+ either.)
-	* configure.in: added solaris* host_makefile_frag hook.
-
-Sun May 31 01:10:34 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* config.sub: changed recognition of m68000 so that various
-	m68k types can be specified via m680[01234]0
-
-Sat May 30 21:01:06 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* config.sub (basic_machine): fix sed so that '-foo' isn't
-	completely substituted out while .+'-foo' loses the '-foo'
-
-Wed May 27 23:18:52 1992  Michael Tiemann  (tiemann at rtl.cygnus.com)
-
-	* config.sub ($os): Add -aout.
-
-Fri May 22 14:00:02 1992  Per Bothner  (bothner at cygnus.com)
-
-	* configure:  If host_makefile_frag is absolute, don't
-	prefix ${invsubdir} (relevant to libg++ auto-configure).
-
-Thu May 21 18:00:09 1992  Michael Tiemann  (tiemann at rtl.cygnus.com)
-
-	* Makefile.in (tooldir): Define it.
-	(all-ld): Depend on all-flex.
-
-Sun May 10 21:45:59 1992  Per Bothner  (bothner at rtl.cygnus.com)
-
-	* Makefile.in (check):  Fix libg++ special case.
-
-Fri May  8 08:31:41 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: do not bury `pwd` into config.status, thus do fewer
-	  pwd's.
-
-	* configure: print the "Building in" message only when building in
-	  other than "." AND verbose.
-
-	* configure: remove -s, rework -v to better accomodate guested
-	  configures.
-
-	* standards.texi: updated to 3 may, fixed librid <-> libdir typo.
-
-Fri May  1 18:00:50 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: macroize flags passed on recursion.  remove
-	  fileutils.
-
-Thu Apr 30 08:56:20 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: get makesrcdir right for subdirs deeper than 1.
-
-	* Makefile.in: pass INSTALL, INSTALL_DATA, INSTALL_PROGRAM on
-	  install.
-
-Fri Apr 24 15:51:51 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: don't print subdir_do or recursion lines.
-
-Fri Apr 24 15:22:04 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* standards.texi: added menu item.
-
-	* Makefile.in: build and install standards.info.
-
-	* standards.texi: new file.
-
-Wed Apr 22 18:06:55 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: test for and move config.status pieces from
-	  ${subdir}/.
-
-Wed Apr 22 14:38:34 1992  Fred Fish  (fnf at cygnus.com)
-
-	* configure:  Test for existance of files before trying to mv
-	them, to avoid numerous non-existance messages.
-
-Tue Apr 21 12:31:33 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: correct final line of config.status.
-
-	* configure: patch from eggert.  Avoids a protection problem if
-	  the original Makefile.in is read only.
-
-	* configure: use move-if-change from gcc to create config.status.
-	  Some makefiles depend on config.status to tell if a directory
-	  has been reconfigured for a different host.  This change
-	  prevents those directories from remaking everything in the case
-	  where the reconfig was only intended to rebuild a Makefile.
-
-	* configure: test for config.sub with "config.sub sun4" rather
-	  than "config.sub ${host_alias}".  Otherwise we can't tell a bad
-	  host alias from a missing config.sub.
-
-Mon Apr 20 18:16:36 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Makefile.in: explicitly pass CFLAGS on recursion. no longer pass
-	  MINUS_G (this can be done with CFLAGS).  Default CFLAGS to -g.
-
-Fri Apr 17 18:27:51 1992  Per Bothner  (bothner at cygnus.com)
-
-	* configure: mkdir ${subdir} as needed.
-
-Wed Apr 15 17:37:22 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in,configure.in: added autoconf.
-
-Wed Apr 15 17:27:34 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Makefile.in: no longer pass against on recursion.
-
-	* Makefile.in: added .NOEXPORT: so that stray makefile_frag
-	  definitions are not inherited.
-
-	* configure: correct makesrcdir when subdir is .
-
-Tue Apr 14 11:56:09 1992  Per Bothner  (bothner at cygnus.com)
-
-	* configure:  Add support for 'subdirs' variable, which is
-	like 'configdirs', except that configure doesn't re-invoke
-	itself for subdirs, it just creates a Makefile for each subdir.
-	* configure.texi:  Document subdirs.
-
-Mon Apr 13 18:50:16 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* configure.in: added flex to configdirs
-
-Mon Apr 13 18:43:55 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: remove clean-stamps from clean.
-
-Sat Apr 11 03:52:03 1992  John Gilmore  (gnu at cygnus.com)
-
-	* configure.in:  Add gdbtest to configdirs.
-
-Fri Apr 10 23:11:49 1992  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in (MINUS_G):  Add macro, default to -g, pass on
-	to recursive makes.
-	* configure.in:  Recognize new ncr3000 config.
-
-Wed Apr  8 23:08:12 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in, configure.in: removed references to gdbm.
-
-Tue Apr  7 16:48:20 1992  Per Bothner  (bothner at cygnus.com)
-
-	* config.sub:  Don't canonicalize os value
-	newsos* to bsd (readline needs to check for newsos).
-	(This fix was earlier made Jan 31, but got re-broken.)
-
-Mon Apr  6 14:34:08 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* configure.in:  sco is an os, not a vendor!
-
-	* configure:  Quote $( better.  Keep various shells happy.
-
-Tue Mar 31 16:32:57 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: eliminate stamp-files.
-
-Mon Mar 30 22:20:23 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: add send_pr.  remove "force" from .stmp-gprof rule.
-	  Supress echoing of all the "if [ -d ... $(MAKE)" lines.
-
-Wed Mar 25 15:20:04 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* config.sub:  fix iris/iris3.
-
-Wed Mar 25 10:34:19 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: re-add -rm.
-
-Tue Mar 24 23:50:16 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Maskefile.in: add .stmp-rcs to all.
-
-	* configure.in: remove gas from rs6000 build, use aix host fragment.
-
-Mon Mar 23 19:43:35 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: pass down site_option during recursion.
-
-Thu Mar 19 16:49:36 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* Makefile.in (all.cross):  Add .stmp-bfd .stmp-readline.
-
-Wed Mar 18 15:29:33 1992  Mike Stump  (mrs at cygnus.com)
-
-	* configure: Change exec_prefix so that it really defaults to prefix.
-
-Sat Mar 14 17:20:38 1992  Fred Fish  (fnf at cygnus.com)
-
-	* Makefile.in, configure.in:  Add support for mmalloc library.
-
-Fri Mar 13 18:44:18 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: add stmp dependencies for a few more things.
-
-Thu Mar 12 04:56:24 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: adjusted error message on objdir/srcdir configure
-	  collision, per john's suggestion.
-
-	* Makefile.in: add libiberty stmp to all and all.cross.
-
-Wed Mar 11 02:07:52 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in: remove force dependencies, add grep to all.
-
-Tue Mar 10 21:49:18 1992  K. Richard Pixley  (rich at mars.cygnus.com)
-
-	* Makefile.in: drop flex.  make stamp files work.
-
-	* configure: added test for conflicting configuration in srcdir,
-	  remove trailing slashes from srcdir.  Otherwise emacs gdb mode
-	  gets cranky.  use relative paths for configure and srcdir
-	  whenever possible.  Send some error messages to stderr that were
-	  going to stdout.
-
-Tue Mar 10 18:01:55 1992  Per Bothner  (bothner at cygnus.com)
-
-	* Makefile.in:  Fix libg++ rule to check for gcc directory
-	before using gcc/gcc.  Also pass XTRAFLAGS.
-
-Thu Mar  5 21:45:07 1992  K. Richard Pixley  (rich at sendai)
-
-	* Makefile.in: added stmp-files so that directories aren't polled
-	  when they are already built.
-
-	* configure.texi: fixed a node pointer problem.
-
-Thu Mar  5 12:05:58 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* config.sub configure.in gdb/configure.in
-	gdb/mips-tdep.c gdb/mipsread.c gdb/procfs.c gdb/signame.h
-	gdb/tm-irix3.h gdb/tm-mips.h gdb/xm-irix4.h gdb/config/mt-irix3
-	gdb/config/mh-irix4 texinfo/configure.in:  Port to SGI Irix-4.x.
-
-Wed Mar  4 02:57:46 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: -recurring becomes -silent.  corrected help message
-	  for -site= option.
-
-	* Makefile.in: mkdir $(exec_prefix) and $(tooldir).
-
-Tue Mar  3 14:51:21 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: when building Makefile for crosses, replace
-	  tooldir and program_prefix.  default srcdir from location of
-	  config.sub.  remove "for host in hosts" and "for target in
-	  targets" loops.
-
-Wed Feb 26 19:48:25 1992  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Makefile.in: Do not pass bindir or mandir to cvs.
-
-Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich at cygnus.com)
-
-	* Makefile.in, configure.in: removed traces of namesubdir,
-	  -subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
-	  copyrights to '92, changed some from Cygnus to FSF.
-
-	* configure.texi: remove most references to multiple hosts,
-	  multiple targets, subdirs, etc.
-
-	* configure.man: removed rcsid. reference config.sub not
-	  config.subr.
-
-	* Makefile.in: mkdir $(infodir) on install-info.
-
-Wed Feb 19 15:41:13 1992  John Gilmore  (gnu at cygnus.com)
-
-	* configure.texi:  Explain better about .gdbinit and about
-	the environment that configure.in sections run in.
-
-Fri Feb  7 07:55:00 1992  John Gilmore  (gnu at cygnus.com)
-
-	* configure.in:  Ultrix is only a decstation if it's a MIPS.
-
-Fri Jan 31 21:54:51 1992  John Gilmore  (gnu at cygnus.com)
-
-	* README:  DOC.configure => cfg-paper.texi.
-
-Fri Jan 31 21:48:18 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* config.sub (near case $os):  Don't convert newsos* to bsd!
-
-Fri Jan 31 02:27:32 1992  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in:  Reinstall change from gdb-4.3 that reduces
-	the number of copies of COPYING that go into the GDB tar file.
-
-Thu Jan 30 16:17:30 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* bfd/configure.in, gdb/config/mh-i386sco,
-	gdb/config/mt-i386v32, gdb/configure.in, readline/configure.in:
-	Fix SCO configuration stuff.
-
-Tue Jan 28 23:51:07 1992  Per Bothner  (bothner at cygnus.com)
-
-	* Makefile.in:  For libg++, make sure the -I pointing
-	to the gcc directory goes *after* all the libg++-local -I flags.
-	Also, move just-gcc dependency from just-libg++ to all-libg++.
-
-Tue Jan 28 12:56:24 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* configure:  Change -x to -f to keep Ultrix /bin/test happy.
-
-Sat Jan 18 17:45:11 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* Makefile.in (make-gdb.tar.Z):  Remove texinfo targets.
-
-Sat Jan 18 17:03:21 1992  Fred Fish  (fnf at cygnus.com)
-
-	* config.sub:  Add stratus configuration frags.  Also
-	submitted to FSF.
-
-Sat Jan 18 15:35:29 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* Makefile.in (DEV_SUPPORT):  add configure.man.
-
-	* config.sub(Decode manufacturer-specific):  add -none*.
-
-Fri Jan 17 17:58:05 1992  Stu Grossman  (grossman at cygnus.com)
-
-	* Makefile.in:  remove form feeds to make Sun's make happy.
-	(DEVO_SUPPORT):  DOC.configure => cfg-paper.texi.
-
-Sat Jan  4 16:11:44 1992  John Gilmore  (gnu at cygnus.com)
-
-	* Makefile.in (AR_FLAGS):  Make quieter.
-
-Thu Jan  2 22:57:12 1992  John Gilmore  (gnu at cygnus.com)
-
-	* configure.in:  Add libg++.
-	* configure:  When verbose, don't output the command line at each
-	level; it will be unremarkably the same as the previous version,
-	which will be the same as what the user typed.
-
-Fri Dec 27 16:26:47 1991  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure.in, Makefile.in: fix clean-info, add flex.  add
-	  fileutils.
-
-	* configure: be less sensitive to spaces in Makefile.in.  Do not
-	  look for sources in "..".  Doing so breaks subdirectories that
-	  might have their own configure.  If a subdir has it's own
-	  configure script, use it.
-
-Thu Dec 26 16:30:26 1991  K. Richard Pixley  (rich at cygnus.com)
-
-	* cfg-paper.texi: some changes suggested by rms.
-
-Thu Dec 26 10:13:36 1991  Fred Fish  (fnf at cygnus.com)
-
-	* config.sub:  Merge in some small additions from the FSF version,
-	taken from the gcc distribution, to bring the Cygnus and FSF
-	versions into closer sync.
-
-Fri Dec 20 11:34:18 1991  Fred Fish  (fnf at cygnus.com)
-
-	* configure.in:  Changed svr4 references to sysv4.
-
-Thu Dec 19 15:54:29 1991  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure: added -V for version number option.
-
-Wed Dec 18 15:39:34 1991  K. Richard Pixley  (rich at cygnus.com)
-
-	* DOC.configure, cfg-paper.texi: revised, updated, and texinfo'd.
-	  renamed from DOC.configure to cfg-paper.texi.
-
-Mon Dec 16 23:05:19 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure, config.subr, config.sub: config.subr is now
-	  config.sub again.
-
-Fri Dec 13 01:17:06 1991  K. Richard Pixley  (rich at cygnus.com)
-
-	* configure.texi: new file, in progress.
-
-	* Makefile.in: build info file and install the man page for
-	  configure.
-
-	* configure.man: new file, first cut.
-
-	* configure: find config.subr again now that configuration "none"
-	  has gone.  removed all traces of the -ansi option.  removed all
-	  traces of the -languages option.
-
-	* config.subr: resync from rms.
-
-1991-12-11  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure, config.sub, config.subr: merge config.sub into
-	  config.subr, call the result config.subr, remove config.sub, use
-	  config.subr.
-
-	* Makefile.in: revised install for dir.info.
-
-1991-12-10  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure.in: add decstation host makefile frag.
-
-	* Makefile.in: BISON now bison -y again.  also install-gcc on
-	  install.  clean-gdbm on clean.  infodir belongs in datadir.
-	  Make directories for info install.  Build dir.info here then
-	  install it.
-
-1991-12-09  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Makefile.in: fix for bad directory tests.
-
-1991-12-07  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: \{1,2\} appears to be a sysv'ism.  Use a different
-	  regexp.  -srcdir relative was being handled incorrectly.
-
-	* Makefile.in: unwrapped some for loops so that parallel makes
-	  work again and so one can focus one's attention on a particular
-	  package.
-
-1991-12-06  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: added PWD as a stand in for `pwd` (for speed). use
-	  elif wherever possible.  make -srcdir work without -objdir.
-	  -objdir= commented out.
-
-1991-12-05  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* configure: +options become --options.  -subdirs commented out.
-	  added -host, -datadir.  Renamed -destdir to -prefix.  Comment in
-	  Makefile now at top of generated Makefile.  Removed cvs log
-	  entries.  added -srcdir.  create .gdbinit only if there is one
-	  in ${srcdir}.
-
-	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
-	  and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
-	  and mandir now keyed off datadir by default.
-
-1991-11-22  K. Richard Pixley  (rich at rtl.cygnus.com)
-
-	* Freshly created ChangeLog.
-
-
-Local Variables:
-mode: change-log
-left-margin: 8
-fill-column: 76
-version-control: never
-End:

Deleted: branches/binutils/package/MAINTAINERS
===================================================================
--- branches/binutils/package/MAINTAINERS	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/MAINTAINERS	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,122 +0,0 @@
-Please feel free to add, edit, delete this file.
-Please do not make ChangeLog entries.
-
-COPYING, COPYING.LIB, README
-	http://gnu.org.
-
-Makefile.*; configure; configure.in; src-release
-	Any global maintainer can approve changes to these
-	files, but they should be aware	that they need to
-	be kept in sync with their counterparts in the GCC
-	repository.  Also please notify the following of
-	any committed patches:
-		binutils at sources.redhat.com
-		gdb-patches at sources.redhat.com
-
-bfd/; binutils/; gas/; gprof/; ld/; opcodes/; cpu/; BFD's part of include/
-	binutils: http://sources.redhat.com/binutils/
-	Patches to binutils at sources.redhat.com.
-	Please notify the following of any interface changes:
-		gdb-patches at sources.redhat.com
-
-cgen/; cgen parts of opcodes/, sim/ & include/
-	cgen: http://sources.redhat.com/cgen/
-	Patches to cgen at sources.redhat.com
-	May need separate opcodes/ or sim/ approval for
-		commits of regenerated files there.
-
-config.guess; config.sub; readline/support/config.{sub,guess}
-	config: http://savannah.gnu.org/projects/config
-	Patches to config-patches at gnu.org.
-	Changes need to be done in tandem with the official CONFIG
-	sources or submitted to the master file maintainer and brought
-	in via a merge.  When updating any of these files, please be
-	sure to update all of them.
-	Please notify the following of any committed patches:
-		binutils at sources.redhat.com
-		gdb-patches at sources.redhat.com
-
-depcomp
-        Send bug reports and patches to bug-automake at gnu.org.
-
-gdb/; readline/; sim/; GDB's part of include/
-	GDB: http://www.gnu.org/software/gdb/
-	Patches to gdb-patches at sources.redhat.com.
-	See also gdb/MAINTAINERS and sim/MAINTAINERS.
-
-include/
-	See binutils/, gdb/, sid/, gcc/, libiberty/ etc.
-
-libiberty/; libiberty's part of include/ 
-	gcc: http://gcc.gnu.org
-	Changes need to be done in tandem with the official GCC
-	sources or submitted to the master file maintainer and brought
-	in via a merge.  Note: approved patches in gcc's libiberty
-	are automatically approved in this libiberty also; feel free
-	to merge them yourself if needed sooner than the next merge.
-	Otherwise, changes are automatically merged, usually within
-	a day.
-
-ltconfig; ltmain.sh; ltcf-*.sh
-	libtool: http://www.gnu.org/software/libtool/
-	Changes need to be done in tandem with the official LIBTOOL
-	sources or submitted to the master file maintainer and brought
-	in via a merge.
-
-mkinstalldirs; move-if-change
-	autoconf: http://gnu.org
-	Patches to autoconf-patches at gnu.org.
-	Changes need to be done in tandem with the official AUTOCONF
-	sources or submitted to the master file maintainer and brought
-	in via a merge.
-
-symlink-tree
-	gcc: http://gcc.gnu.org
-	See libiberty.
-
-newlib/; libgloss/
-	http://sources.redhat.com/newlib/
-	Patches to newlib at sources.redhat.com.
-
-sid/; SID's part of cgen/
-	sid: http://sources.redhat.com/sid/
-	Patches to sid at sources.redhat.com
-
-texinfo/texinfo.tex
-	texinfo: http://ftp.gnu.org.
-	Latest version can be found on ftp://ftp.gnu.org and can be
-	imported at any (reasonable) time.
-	Please not use GCC's texinfo.  Please do not import texinfo.
-
-tcl/; tix/; itcl/; tk/; libgui/
-	insight: http://sources.redhat.com/insight/
-	Contact insight at sources.redhat.com.
-
-winsup/
-	cygwin: http://sources.redhat.com/cygwin
-	Patches to cygwin-patches at sources.redhat.com.
-	General discussion cygwin at sources.redhat.com.
-	See also winsup/MAINTAINERS.
-
-config-ml.in; makefile.vms; mkdep; setup.com;
-etc/; intl/; utils/;
-	Any global maintainer can approve changes to these
-	files and directories.
-
-compile; depcomp; install-sh; missing; ylwrap;
-config/
-	Any global maintainer can approve changes to these
-	files and directories, but they should be aware
-	that they need to be kept in sync with their
-	counterparts in the GCC repository.
-
-modules file
-	Obviously changes to this file should not go through
-	overseers at sources.redhat.com.  If you understand the file
-	format (or can cut-and-paste existing entries), modify it. If
-	it scares you, get someone who does understand it to help you.
-	Be prepared to fix it if you do break it.
-
-/* Local variables: */
-/* change-log-default-name: "/dev/null" */
-/* End: */

Deleted: branches/binutils/package/README-maintainer-mode
===================================================================
--- branches/binutils/package/README-maintainer-mode	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/README-maintainer-mode	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,14 +0,0 @@
-
-                Notes on enabling maintainer mode
-
-Note that if you configure with --enable-maintainer-mode, you will need
-special versions of automake, autoconf, libtool and gettext. You will
-find the sources for these in ftp://sources.redhat.com/pub/binutils.
-
-Note - "make distclean" does not work with maintainer mode enabled.
-The Makefiles in the some of the po/ subdirectories depend upon the
-Makefiles in their parent directories, and distclean will delete the
-Makefiles in the parent directories before running the Makefiles in
-the child directories.  There is no easy way around this (short of
-changing the automake macros) as these dependencies need to exist in
-order to correctly build the NLS files.

Modified: branches/binutils/package/bfd/ChangeLog
===================================================================
--- branches/binutils/package/bfd/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,193 @@
+2006-06-23  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* configure.in: Update version to 2.17.
+	* Makefile.am: Set RELEASE.
+	* configure, Makefile.in: Regenerated.
+
+2006-06-12  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* configure.in: Update version to 2.16.94.
+	* configure: Regenerated.
+
+2006-06-11  Richard Sandiford  <richard at codesourcery.com>
+	    Thiemo Seufer  <ths at mips.com>
+
+	* elfxx-mips.c (mips_elf_link_hash_table): Add function_stub_size.
+	(STUB_ORI): New macro.
+	(STUB_LI16U): Fix formatting.
+	(MIPS_FUNCTION_STUB_SIZE): Delete.
+	(MIPS_FUNCTION_STUB_MAX_SIZE): Likewise.
+	(MIPS_FUNCTION_STUB_NORMAL_SIZE): New macro.
+	(MIPS_FUNCTION_STUB_BIG_SIZE): Likewise.
+	(_bfd_mips_elf_adjust_dynamic_symbol): Use htab->function_stub_size
+	instead of MIPS_FUNCTION_STUB_SIZE.
+	(count_section_dynsyms): New function, split out from
+	_bfd_mips_elf_final_link.
+	(_bfd_mips_elf_always_size_sections): Get a worst-case estimate
+	of the number of dynamic symbols needed and use it to set up
+	function_stub_size.  Use function_stub_size rather than
+	MIPS_FUNCTION_STUB_SIZE to determine the size of the stub section.
+	Use 16-byte stubs for 0x10000 dynamic symbols.
+	(_bfd_mips_elf_size_dynamic_sections): Use htab->function_stub_size
+	instead of MIPS_FUNCTION_STUB_SIZE.  Fix formatting.
+	(_bfd_mips_elf_finish_dynamic_symbol): Likewise.  Change the
+	size of the stub buffer from MIPS_FUNCTION_STUB_MAX_SIZE to
+	MIPS_FUNCTION_STUB_BIG_SIZE.  Tweak the check for unhandled dynindxes.
+	Use MIPS_FUNCTION_STUB_BIG_SIZE rather than a hard-coded 20.
+	Use STUB_ORI rather than STUB_LI16U for big stubs.
+	(_bfd_mips_elf_link_hash_table_create): Initialize function_stub_size.
+	(_bfd_mips_elf_final_link): Use count_section_dynsyms.
+
+2006-06-08  David Daney  <ddaney at avtrex.com>
+
+	* elfxx-mips.c (STUB_LI16): Removed.
+	(STUB_LUI): New macro.
+	(STUB_LI16U): Ditto.
+	(STUB_LI16S): Ditto.
+	(MIPS_FUNCTION_STUB_SIZE): Rewrote to take info parameter.
+	(_bfd_mips_elf_adjust_dynamic_symbol): Pass info parameter to
+	MIPS_FUNCTION_STUB_SIZE.
+	(_bfd_mips_elf_always_size_sections): Ditto.
+	(_bfd_mips_elf_size_dynamic_sections): Ditto.
+	(_bfd_mips_elf_finish_dynamic_sections): Ditto.
+	(_bfd_mips_elf_finish_dynamic_symbol): Rewrote stub generation
+	to allow larger symbol table indexes.
+
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-01  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	Backport:
+	2006-05-23  H.J. Lu  <hongjiu.lu at intel.com>
+	PR ld/2655
+	PR ld/2657
+	* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Properly
+	update CIE/FDE length.  Don't pad to the section alignment.
+
+2006-05-30  Nick Clifton  <nickc at redhat.com>
+
+	* po/es.po: Updated Spanish translation.
+
+2006-05-23  Alan Modra  <amodra at bigpond.net.au>
+
+	* elf64-ppc.c (compare_symbols): Prefer strong dynamic global
+	function syms over other syms.
+
+2006-05-22  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* elflink.c (_bfd_elf_add_dynamic_entry): Remove DT_TEXTREL
+	check.
+	(bfd_elf_final_link): Add a late DT_TEXTREL check.
+	* elfxx-mips.c (MIPS_ELF_READONLY_SECTION): Define.
+	(mips_elf_create_dynamic_relocation): Set DF_TEXTREL.
+	(_bfd_mips_elf_check_relocs): Delete MIPS_READONLY_SECTION.
+	Use MIPS_ELF_READONLY_SECTION.
+	(_bfd_mips_elf_size_dynamic_sections): Clear DF_TEXTREL after
+	creating DT_TEXTREL.
+	(_bfd_mips_elf_finish_dynamic_sections): Clear textrel markers
+	if no text relocations were generated.
+
+2006-05-17  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* configure.in: Update version to 2.16.93.
+	* configure: Regenerated.
+
+2006-05-17  Alan Modra  <amodra at bigpond.net.au>
+
+	* elflink.c (elf_gc_sweep): Don't specially keep non-alloc,
+	non-load sections if they have relocs.
+
+2006-05-16  Andreas Schwab  <schwab at suse.de>
+
+	* aoutf1.h (struct external_sparc_core): Declare c_regs as struct
+	regs instead of an array of int.
+	(struct external_solaris_bcp_core): Likewise.
+	(swapcore_sun3): Use offsetof instead of computing the offset
+	manually.
+	(swapcore_sparc): Likewise.  Simplify reference to c_regs.
+	(swapcore_solaris_bcp): Likewise.
+
+2006-05-15  Alan Modra  <amodra at bigpond.net.au>
+
+	PR 2658
+	* elf32-ppc.c (ppc_elf_relax_section): Don't segfault on non-pic
+	-shared link.
+
+2006-05-11  Michael Matz  <matz at suse.de>
+
+	* elflink.c (match_group_member): Correctly iterate group
+	members.
+
+2006-05-11  Nick Clifton  <nickc at redhat.com>
+
+	PR ld/2607
+	* elfcode.h (valid_section_index_p): New function: Checks for a
+	valid section index.  Allows indicies in the range SHN_LOPROC to
+	SHN_HIOS.
+	(elf_object_p): Use valid_section_index_p.
+
+2006-05-11  Nick Clifton  <nickc at redhat.com>
+
+	PR ld/2257
+	* elfcode.h (elf_object_p): Allow files with corrupt e_shstrndx
+	fields to still be handled as ELF files.
+
+2006-05-10  Alan Modra  <amodra at bigpond.net.au>
+
+	PR 2342
+	* elflink.c (_bfd_elf_default_action_discarded): Revert 2006-02-16.
+
+2006-05-10  Alan Modra  <amodra at bigpond.net.au>
+
+	* elf64-ppc.c (ppc64_elf_tls_optimize): Only optimize
+	R_PPC64_TPREL64 and R_PPC64_DTPMOD64 relocs when they are in
+	the .toc and referenced by a TLS code sequence.
+	(ppc64_elf_edit_toc): Cater for the unlikely situation that
+	.toc is the first section in a file.
+
+2006-05-03  Kaz Kojima  <kkojima at rr.iij4u.or.jp>
+
+	PR binutils/2584
+	* tekhex.c (getvalue): Change return type to bfd_boolean and
+	add the new parameter.  Return false if the unexpected character
+	is found.
+	(getsym): Likewise.
+	(first_phase): Change return type to bfd_boolean and return
+	false if the unexpected character is found.  Replace abort
+	with returning false.
+	(pass_over): Change return type to bfd_boolean and the type of
+	the second argument to bfd_boolean (*) (bfd *, int, char *).
+	Return false if FUNC returns false.
+	(tekhex_object_p): Return NULL if pass_over fails.
+
+2006-05-02  Paul Brook  <paul at codesourcery.com>
+
+	* elf32-arm.c (elf32_arm_final_link_relocate): Set thumb funciton bit
+	for R_ARM_REL32.
+
+2006-04-27  Alan Modra  <amodra at bigpond.net.au>
+
+	* coff-rs6000.c (xcoff_write_archive_contents_old): Warning fix.
+
+2006-04-16  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* configure.in: Update version to 2.16.92.
+	* configure: Regenerated.
+
+2006-04-16  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* po/SRC-POTFILES.in: Regenerated.
+
+2006-04-14  David Heine  <dlheine at tensilica.com>
+
+	* elf32-xtensa.c (build_reloc_opcodes): New.
+	(compute_text_actions): Use it to decode opcodes outside inner loop.
+	(check_section_ebb_pcrels_fit): Add "reloc_opcodes" argument, and if
+	it is set, use it to get the opcodes for relocations.
+	(move_shared_literal): Adjust call to check_section_ebb_pcrels_fit.
+
 2006-04-08  H.J. Lu  <hongjiu.lu at intel.com>
 
 	PR ld/2513

Modified: branches/binutils/package/bfd/Makefile.am
===================================================================
--- branches/binutils/package/bfd/Makefile.am	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/Makefile.am	2006-12-31 16:27:59 UTC (rev 19)
@@ -3,7 +3,7 @@
 AUTOMAKE_OPTIONS = 1.9 cygnus
 
 # Uncomment the following line when doing a release.
-# RELEASE=y
+RELEASE=y
 
 INCDIR = $(srcdir)/../include
 CSEARCH = -I. -I$(srcdir) -I$(INCDIR)

Modified: branches/binutils/package/bfd/Makefile.in
===================================================================
--- branches/binutils/package/bfd/Makefile.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/Makefile.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -253,7 +253,7 @@
 AUTOMAKE_OPTIONS = 1.9 cygnus
 
 # Uncomment the following line when doing a release.
-# RELEASE=y
+RELEASE=y
 INCDIR = $(srcdir)/../include
 CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
 MKDEP = gcc -MM

Modified: branches/binutils/package/bfd/aoutf1.h
===================================================================
--- branches/binutils/package/bfd/aoutf1.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/aoutf1.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,6 +1,6 @@
 /* A.out "format 1" file handling code for BFD.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
-   2001, 2002, 2003, 2004, 2005
+   2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -286,7 +286,7 @@
   int c_magic;				/* Corefile magic number.  */
   int c_len;				/* Sizeof (struct core).  */
 #define	SPARC_CORE_LEN	432
-  int c_regs[19];			/* General purpose registers -- MACHDEP SIZE.  */
+  struct regs c_regs;			/* General purpose registers -- MACHDEP SIZE.  */
   struct external_exec c_aouthdr;	/* A.out header.  */
   int c_signo;				/* Killing signal, if any.  */
   int c_tsize;				/* Text size (bytes).  */
@@ -309,7 +309,7 @@
   int c_magic;				/* Corefile magic number.  */
   int c_len;				/* Sizeof (struct core).  */
 #define	SOLARIS_BCP_CORE_LEN	456
-  int c_regs[19];			/* General purpose registers -- MACHDEP SIZE.  */
+  struct regs c_regs;			/* General purpose registers -- MACHDEP SIZE.  */
   int c_exdata_vp;			/* Exdata structure.  */
   int c_exdata_tsize;
   int c_exdata_dsize;
@@ -387,7 +387,7 @@
 
   intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic);
   intcore->c_len = H_GET_32 (abfd, &extcore->c_len);
-  intcore->c_regs_pos = (long) (((struct external_sun3_core *) 0)->c_regs);
+  intcore->c_regs_pos = offsetof (struct external_sun3_core, c_regs);
   intcore->c_regs_size = sizeof (extcore->c_regs);
 #if ARCH_SIZE == 64
   aout_64_swap_exec_header_in
@@ -401,10 +401,10 @@
   intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr);
   intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize);
   memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
-  intcore->fp_stuff_pos = (long) (((struct external_sun3_core *) 0)->fp_stuff);
+  intcore->fp_stuff_pos = offsetof (struct external_sun3_core, fp_stuff);
   /* FP stuff takes up whole rest of struct, except c_ucode.  */
   intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
-    (file_ptr) (((struct external_sun3_core *) 0)->fp_stuff);
+    offsetof (struct external_sun3_core, fp_stuff);
   /* Ucode is the last thing in the struct -- just before the end.  */
   intcore->c_ucode = H_GET_32 (abfd,
 			       (intcore->c_len
@@ -422,7 +422,7 @@
 
   intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic);
   intcore->c_len = H_GET_32 (abfd, &extcore->c_len);
-  intcore->c_regs_pos = (long) (((struct external_sparc_core *) 0)->c_regs);
+  intcore->c_regs_pos = offsetof (struct external_sparc_core, c_regs);
   intcore->c_regs_size = sizeof (extcore->c_regs);
 #if ARCH_SIZE == 64
   aout_64_swap_exec_header_in
@@ -436,10 +436,10 @@
   intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr);
   intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize);
   memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
-  intcore->fp_stuff_pos = (long) (((struct external_sparc_core *) 0)->fp_stuff);
+  intcore->fp_stuff_pos = offsetof (struct external_sparc_core, fp_stuff);
   /* FP stuff takes up whole rest of struct, except c_ucode.  */
   intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
-    (file_ptr) (((struct external_sparc_core *) 0)->fp_stuff);
+    offsetof (struct external_sparc_core, fp_stuff);
   /* Ucode is the last thing in the struct -- just before the end.  */
   intcore->c_ucode = H_GET_32 (abfd,
 			       (intcore->c_len
@@ -462,7 +462,7 @@
 #define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000)
 #define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000)
   {
-    bfd_vma sp = H_GET_32 (abfd, &((struct regs *) &extcore->c_regs[0])->r_o6);
+    bfd_vma sp = H_GET_32 (abfd, &extcore->c_regs.r_o6);
     if (sp < SPARC_USRSTACK_SPARC10)
       intcore->c_stacktop = SPARC_USRSTACK_SPARC10;
     else
@@ -480,7 +480,7 @@
 
   intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic);
   intcore->c_len = H_GET_32 (abfd, &extcore->c_len);
-  intcore->c_regs_pos = (long) (((struct external_solaris_bcp_core *) 0)->c_regs);
+  intcore->c_regs_pos = offsetof (struct external_solaris_bcp_core, c_regs);
   intcore->c_regs_size = sizeof (extcore->c_regs);
 
   /* The Solaris BCP exdata structure does not contain an a_syms field,
@@ -501,10 +501,10 @@
   intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize);
   memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
   intcore->fp_stuff_pos =
-    (long) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
+    offsetof (struct external_solaris_bcp_core, fp_stuff);
   /* FP stuff takes up whole rest of struct, except c_ucode.  */
   intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
-    (file_ptr) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
+    offsetof (struct external_solaris_bcp_core, fp_stuff);
   /* Ucode is the last thing in the struct -- just before the end */
   intcore->c_ucode = H_GET_32 (abfd,
 			       (intcore->c_len
@@ -527,7 +527,7 @@
 #define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000)
 #define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000)
   {
-    bfd_vma sp = H_GET_32 (abfd, &((struct regs *) &extcore->c_regs[0])->r_o6);
+    bfd_vma sp = H_GET_32 (abfd, &extcore->c_regs.r_o6);
     if (sp < SPARC_USRSTACK_SPARC10)
       intcore->c_stacktop = SPARC_USRSTACK_SPARC10;
     else

Modified: branches/binutils/package/bfd/coff-rs6000.c
===================================================================
--- branches/binutils/package/bfd/coff-rs6000.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/coff-rs6000.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,5 @@
 /* BFD back-end for IBM RS/6000 "XCOFF" files.
-   Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
    FIXME: Can someone provide a transliteration of this name into ASCII?
    Using the following chars caused a compiler warning on HIUX (so I replaced
@@ -2083,7 +2083,7 @@
   char decbuf[XCOFFARMAG_ELEMENT_SIZE + 1];
 
   memset (&fhdr, 0, sizeof fhdr);
-  strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
+  (void) strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
   sprintf (fhdr.firstmemoff, "%d", SIZEOF_AR_FILE_HDR);
   sprintf (fhdr.freeoff, "%d", 0);
 

Modified: branches/binutils/package/bfd/configure
===================================================================
--- branches/binutils/package/bfd/configure	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/configure	2006-12-31 16:27:59 UTC (rev 19)
@@ -2836,7 +2836,7 @@
 
 # Define the identity of the package.
  PACKAGE=bfd
- VERSION=2.16.91
+ VERSION=2.17
 
 
 cat >>confdefs.h <<_ACEOF

Modified: branches/binutils/package/bfd/configure.in
===================================================================
--- branches/binutils/package/bfd/configure.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/configure.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -8,7 +8,7 @@
 AC_CANONICAL_TARGET
 AC_ISC_POSIX
 
-AM_INIT_AUTOMAKE(bfd, 2.16.91)
+AM_INIT_AUTOMAKE(bfd, 2.17)
 
 dnl These must be called before AM_PROG_LIBTOOL, because it may want
 dnl to call AC_CHECK_PROG.

Modified: branches/binutils/package/bfd/doc/ChangeLog
===================================================================
--- branches/binutils/package/bfd/doc/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,7 @@
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* bfd.texinfo: Remove local @tex code.
+
 2006-04-06  Carlos O'Donell  <carlos at codesourcery.com>
 
 	* Makefile.am: Add install-html and install-html-am targets. 

Added: branches/binutils/package/bfd/doc/aoutx.texi
===================================================================
--- branches/binutils/package/bfd/doc/aoutx.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/aoutx.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,213 @@
+ at section a.out backends
+
+
+ at strong{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 @file{aoutx.h}
+and other files which derive functions from the base. One
+derivation file is @file{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 @file{sunos.c} for sun3 and sun4,
+ at file{newsos3.c} for the Sony NEWS, and @file{demo64.c} for a
+demonstration of a 64 bit a.out format.
+
+The base file @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
+ at file{aout32.c} and @file{aout64.c} to form the names
+ at code{aout_32_swap_exec_header_in}, @code{aout_64_swap_exec_header_in}, etc.
+
+As an example, this is what goes on to make the back end for a
+sun4, from @file{aout32.c}:
+
+ at example
+       #define ARCH_SIZE 32
+       #include "aoutx.h"
+ at end example
+
+Which exports names:
+
+ at example
+       ...
+       aout_32_canonicalize_reloc
+       aout_32_find_nearest_line
+       aout_32_get_lineno
+       aout_32_get_reloc_upper_bound
+       ...
+ at end example
+
+from @file{sunos.c}:
+
+ at example
+       #define TARGET_NAME "a.out-sunos-big"
+       #define VECNAME    sunos_big_vec
+       #include "aoutf1.h"
+ at end example
+
+requires all the names from @file{aout32.c}, and produces the jump vector
+
+ at example
+       sunos_big_vec
+ at end example
+
+The file @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:
+
+ at example
+        HOST_PAGE_SIZE
+        HOST_SEGMENT_SIZE
+        HOST_MACHINE_ARCH       (optional)
+        HOST_MACHINE_MACHINE    (optional)
+        HOST_TEXT_START_ADDR
+        HOST_STACK_END_ADDR
+ at end example
+
+in the file @file{../include/sys/h- at var{XXX}.h} (for your host).  These
+values, plus the structures and macros defined in @file{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 @file{host-aout.c}, specify:
+
+ at example
+       TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
+       TDEPFILES= host-aout.o trad-core.o
+ at end example
+
+in the @file{config/@var{XXX}.mt} file, and modify @file{configure.in}
+to use the
+ at file{@var{XXX}.mt} file (by setting "@code{bfd_target=XXX}") when your
+configuration is selected.
+
+ at subsection Relocations
+
+
+ at strong{Description}@*
+The file @file{aoutx.h} provides for both the @emph{standard}
+and @emph{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.
+
+ at subsection Internal entry points
+
+
+ at strong{Description}@*
+ at file{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).
+
+ at findex aout_ at var{size}_swap_exec_header_in
+ at subsubsection @code{aout_ at var{size}_swap_exec_header_in}
+ at strong{Synopsis}
+ at example
+void aout_ at var{size}_swap_exec_header_in,
+   (bfd *abfd,
+    struct external_exec *bytes,
+    struct internal_exec *execp);
+ at end example
+ at strong{Description}@*
+Swap the information in an executable header @var{raw_bytes} taken
+from a raw byte stream memory image into the internal exec header
+structure @var{execp}.
+
+ at findex aout_ at var{size}_swap_exec_header_out
+ at subsubsection @code{aout_ at var{size}_swap_exec_header_out}
+ at strong{Synopsis}
+ at example
+void aout_ at var{size}_swap_exec_header_out
+   (bfd *abfd,
+    struct internal_exec *execp,
+    struct external_exec *raw_bytes);
+ at end example
+ at strong{Description}@*
+Swap the information in an internal exec header structure
+ at var{execp} into the buffer @var{raw_bytes} ready for writing to disk.
+
+ at findex aout_ at var{size}_some_aout_object_p
+ at subsubsection @code{aout_ at var{size}_some_aout_object_p}
+ at strong{Synopsis}
+ at example
+const bfd_target *aout_ at var{size}_some_aout_object_p
+   (bfd *abfd,
+    struct internal_exec *execp,
+    const bfd_target *(*callback_to_real_object_p) (bfd *));
+ at end example
+ at strong{Description}@*
+Some a.out variant thinks that the file open in @var{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.
+
+ at findex aout_ at var{size}_mkobject
+ at subsubsection @code{aout_ at var{size}_mkobject}
+ at strong{Synopsis}
+ at example
+bfd_boolean aout_ at var{size}_mkobject, (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Initialize BFD @var{abfd} for use with a.out files.
+
+ at findex aout_ at var{size}_machine_type
+ at subsubsection @code{aout_ at var{size}_machine_type}
+ at strong{Synopsis}
+ at example
+enum machine_type  aout_ at var{size}_machine_type
+   (enum bfd_architecture arch,
+    unsigned long machine,
+    bfd_boolean *unknown);
+ at end example
+ at strong{Description}@*
+Keep track of machine architecture and machine type for
+a.out's. Return the @code{machine_type} for a particular
+architecture and machine, or @code{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.
+
+ at findex aout_ at var{size}_set_arch_mach
+ at subsubsection @code{aout_ at var{size}_set_arch_mach}
+ at strong{Synopsis}
+ at example
+bfd_boolean aout_ at var{size}_set_arch_mach,
+   (bfd *,
+    enum bfd_architecture arch,
+    unsigned long machine);
+ at end example
+ at strong{Description}@*
+Set the architecture and the machine of the BFD @var{abfd} to the
+values @var{arch} and @var{machine}.  Verify that @var{abfd}'s format
+can support the architecture required.
+
+ at findex aout_ at var{size}_new_section_hook
+ at subsubsection @code{aout_ at var{size}_new_section_hook}
+ at strong{Synopsis}
+ at example
+bfd_boolean aout_ at var{size}_new_section_hook,
+   (bfd *abfd,
+    asection *newsect);
+ at end example
+ at strong{Description}@*
+Called by the BFD in response to a @code{bfd_make_section}
+request.
+

Added: branches/binutils/package/bfd/doc/archive.texi
===================================================================
--- branches/binutils/package/bfd/doc/archive.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/archive.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,99 @@
+ at section Archives
+
+
+ at strong{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 @code{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
+ at code{next} pointer in a BFD.  The first one is findable through
+the @code{archive_head} slot of the archive.  Set it with
+ at code{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 @code{archive.c}.
+
+ at subsection Archive functions
+
+
+ at findex bfd_get_next_mapent
+ at subsubsection @code{bfd_get_next_mapent}
+ at strong{Synopsis}
+ at example
+symindex bfd_get_next_mapent
+   (bfd *abfd, symindex previous, carsym **sym);
+ at end example
+ at strong{Description}@*
+Step through archive @var{abfd}'s symbol table (if it
+has one).  Successively update @var{sym} with the next symbol's
+information, returning that symbol's (internal) index into the
+symbol table.
+
+Supply @code{BFD_NO_MORE_SYMBOLS} as the @var{previous} entry to get
+the first one; returns @code{BFD_NO_MORE_SYMBOLS} when you've already
+got the last one.
+
+A @code{carsym} is a canonical archive symbol.  The only
+user-visible element is its name, a null-terminated string.
+
+ at findex bfd_set_archive_head
+ at subsubsection @code{bfd_set_archive_head}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
+ at end example
+ at strong{Description}@*
+Set the head of the chain of
+BFDs contained in the archive @var{output} to @var{new_head}.
+
+ at findex bfd_openr_next_archived_file
+ at subsubsection @code{bfd_openr_next_archived_file}
+ at strong{Synopsis}
+ at example
+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
+ at end example
+ at strong{Description}@*
+Provided a BFD, @var{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.
+

Added: branches/binutils/package/bfd/doc/archures.texi
===================================================================
--- branches/binutils/package/bfd/doc/archures.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/archures.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,585 @@
+ at section Architectures
+BFD keeps one atom in a BFD describing the
+architecture of the data attached to the BFD: a pointer to a
+ at code{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
+ at code{SELECT_ARCHITECTURES}.  This is normally set up in the
+ at file{config/@var{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 @file{archures.c}.
+
+ at subsection bfd_architecture
+
+
+ at strong{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.
+ at example
+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_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
+  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
+  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_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
+  @};
+ at end example
+
+ at subsection bfd_arch_info
+
+
+ at strong{Description}@*
+This structure contains information on architectures for use
+within BFD.
+ at example
+
+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 @code{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;
+
+ at end example
+
+ at findex bfd_printable_name
+ at subsubsection @code{bfd_printable_name}
+ at strong{Synopsis}
+ at example
+const char *bfd_printable_name (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return a printable string representing the architecture and machine
+from the pointer to the architecture info structure.
+
+ at findex bfd_scan_arch
+ at subsubsection @code{bfd_scan_arch}
+ at strong{Synopsis}
+ at example
+const bfd_arch_info_type *bfd_scan_arch (const char *string);
+ at end example
+ at strong{Description}@*
+Figure out if BFD supports any cpu which could be described with
+the name @var{string}.  Return a pointer to an @code{arch_info}
+structure if a machine is found, otherwise NULL.
+
+ at findex bfd_arch_list
+ at subsubsection @code{bfd_arch_list}
+ at strong{Synopsis}
+ at example
+const char **bfd_arch_list (void);
+ at end example
+ at strong{Description}@*
+Return a freshly malloced NULL-terminated vector of the names
+of all the valid BFD architectures.  Do not modify the names.
+
+ at findex bfd_arch_get_compatible
+ at subsubsection @code{bfd_arch_get_compatible}
+ at strong{Synopsis}
+ at example
+const bfd_arch_info_type *bfd_arch_get_compatible
+   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+ at end example
+ at strong{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 @code{arch_info} structure
+describing the compatible machine.
+
+ at findex bfd_default_arch_struct
+ at subsubsection @code{bfd_default_arch_struct}
+ at strong{Description}@*
+The @code{bfd_default_arch_struct} is an item of
+ at code{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.
+ at example
+extern const bfd_arch_info_type bfd_default_arch_struct;
+ at end example
+
+ at findex bfd_set_arch_info
+ at subsubsection @code{bfd_set_arch_info}
+ at strong{Synopsis}
+ at example
+void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
+ at end example
+ at strong{Description}@*
+Set the architecture info of @var{abfd} to @var{arg}.
+
+ at findex bfd_default_set_arch_mach
+ at subsubsection @code{bfd_default_set_arch_mach}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_default_set_arch_mach
+   (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
+ at end example
+ at strong{Description}@*
+Set the architecture and machine type in BFD @var{abfd}
+to @var{arch} and @var{mach}.  Find the correct
+pointer to a structure and insert it into the @code{arch_info}
+pointer.
+
+ at findex bfd_get_arch
+ at subsubsection @code{bfd_get_arch}
+ at strong{Synopsis}
+ at example
+enum bfd_architecture bfd_get_arch (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the enumerated type which describes the BFD @var{abfd}'s
+architecture.
+
+ at findex bfd_get_mach
+ at subsubsection @code{bfd_get_mach}
+ at strong{Synopsis}
+ at example
+unsigned long bfd_get_mach (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the long type which describes the BFD @var{abfd}'s
+machine.
+
+ at findex bfd_arch_bits_per_byte
+ at subsubsection @code{bfd_arch_bits_per_byte}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the number of bits in one of the BFD @var{abfd}'s
+architecture's bytes.
+
+ at findex bfd_arch_bits_per_address
+ at subsubsection @code{bfd_arch_bits_per_address}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_arch_bits_per_address (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the number of bits in one of the BFD @var{abfd}'s
+architecture's addresses.
+
+ at findex bfd_default_compatible
+ at subsubsection @code{bfd_default_compatible}
+ at strong{Synopsis}
+ at example
+const bfd_arch_info_type *bfd_default_compatible
+   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
+ at end example
+ at strong{Description}@*
+The default function for testing for compatibility.
+
+ at findex bfd_default_scan
+ at subsubsection @code{bfd_default_scan}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_default_scan
+   (const struct bfd_arch_info *info, const char *string);
+ at end example
+ at strong{Description}@*
+The default function for working out whether this is an
+architecture hit and a machine hit.
+
+ at findex bfd_get_arch_info
+ at subsubsection @code{bfd_get_arch_info}
+ at strong{Synopsis}
+ at example
+const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the architecture info struct in @var{abfd}.
+
+ at findex bfd_lookup_arch
+ at subsubsection @code{bfd_lookup_arch}
+ at strong{Synopsis}
+ at example
+const bfd_arch_info_type *bfd_lookup_arch
+   (enum bfd_architecture arch, unsigned long machine);
+ at end example
+ at strong{Description}@*
+Look for the architecture info structure which matches the
+arguments @var{arch} and @var{machine}. A machine of 0 matches the
+machine/architecture structure which marks itself as the
+default.
+
+ at findex bfd_printable_arch_mach
+ at subsubsection @code{bfd_printable_arch_mach}
+ at strong{Synopsis}
+ at example
+const char *bfd_printable_arch_mach
+   (enum bfd_architecture arch, unsigned long machine);
+ at end example
+ at strong{Description}@*
+Return a printable string representing the architecture and
+machine type.
+
+This routine is depreciated.
+
+ at findex bfd_octets_per_byte
+ at subsubsection @code{bfd_octets_per_byte}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_octets_per_byte (bfd *abfd);
+ at end example
+ at strong{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.
+
+ at findex bfd_arch_mach_octets_per_byte
+ at subsubsection @code{bfd_arch_mach_octets_per_byte}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_arch_mach_octets_per_byte
+   (enum bfd_architecture arch, unsigned long machine);
+ at end example
+ at strong{Description}@*
+See bfd_octets_per_byte.
+
+This routine is provided for those cases where a bfd * is not
+available
+

Added: branches/binutils/package/bfd/doc/bfd.info
===================================================================
--- branches/binutils/package/bfd/doc/bfd.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/bfd.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10305 @@
+This is ../.././bfd/doc/bfd.info, produced by makeinfo version 4.8 from
+../.././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 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".
+
+
+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
+* Index::			Index
+
+
+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
+
+
+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 at cygnus.com'), John Gilmore (`gnu at cygnus.com'), K.
+Richard Pixley (`rich at cygnus.com') and David Henkel-Wallace
+(`gumby at cygnus.com').
+
+
+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 sucessfully 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.
+
+
+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
+
+
+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.
+
+
+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).
+
+
+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_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.
+
+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, reloc) \
+            BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
+
+     #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 `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.21 `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.22 `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::
+
+
+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.
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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.
+
+
+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.  */
+     #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))
+
+     extern const struct bfd_symbol * const bfd_abs_symbol;
+     extern const struct bfd_symbol * const bfd_com_symbol;
+     extern const struct bfd_symbol * const bfd_und_symbol;
+     extern const struct bfd_symbol * const bfd_ind_symbol;
+
+     /* 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, SYM_PTR, 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,                                                       */  \
+          (struct bfd_symbol *) SYM,                                        \
+                                                                            \
+       /* symbol_ptr_ptr,                                               */  \
+          (struct bfd_symbol **) SYM_PTR,                                   \
+                                                                            \
+       /* map_head, map_tail                                            */  \
+          { NULL }, { NULL }                                                \
+         }
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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;
+
+
+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))
+
+
+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.
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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_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_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_IMMEDIATE
+ -- : BFD_RELOC_ARM_ADRL_IMMEDIATE
+ -- : BFD_RELOC_ARM_T32_IMMEDIATE
+ -- : 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_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_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_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.
+
+
+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.
+
+
+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::
+
+
+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 *, bfd_boolean);
+       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 *);
+
+       /* 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.  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.
+
+
+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_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
+       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
+       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_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
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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'.
+
+
+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);
+   *Description*
+Check if SEC has been already linked during a reloceatable or final
+link.
+     #define bfd_section_already_linked(abfd, sec) \
+            BFD_SEND (abfd, _section_already_linked, (abfd, sec))
+
+
+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::
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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::
+
+
+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'.
+
+
+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'.
+
+
+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.
+
+
+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
+
+
+File: bfd.info,  Node: What to Put Where,  Next: aout,  Prev: BFD back ends,  Up: BFD back ends
+
+   All of BFD lives in one directory.
+
+
+File: bfd.info,  Node: aout,  Next: coff,  Prev: What to Put Where,  Up: BFD back ends
+
+3.1 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.1.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.1.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.1.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.1.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.1.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.1.2.4 `aout_SIZE_mkobject'
+............................
+
+*Synopsis*
+     bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
+   *Description*
+Initialize BFD ABFD for use with a.out files.
+
+3.1.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.1.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.1.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.
+
+
+File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends
+
+3.2 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.2.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.2.2 How the coff backend works
+--------------------------------
+
+3.2.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.2.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.2.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.2.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.2.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.2.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.2.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.2.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.2.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.
+
+
+File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends
+
+3.3 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.3.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.
+
+
+File: bfd.info,  Node: mmo,  Prev: elf,  Up: BFD back ends
+
+3.4 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::
+
+
+File: bfd.info,  Node: File layout,  Next: Symbol-table,  Prev: mmo,  Up: mmo
+
+3.4.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.
+
+
+File: bfd.info,  Node: Symbol-table,  Next: mmo section mapping,  Prev: File layout,  Up: mmo
+
+3.4.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.
+
+
+File: bfd.info,  Node: mmo section mapping,  Prev: Symbol-table,  Up: mmo
+
+3.4.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.
+
+
+File: bfd.info,  Node: GNU Free Documentation License,  Next: 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.
+
+
+File: bfd.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+ [index ]
+* 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  599)
+* bfd_arch_bits_per_address:             Architectures.      (line  476)
+* bfd_arch_bits_per_byte:                Architectures.      (line  468)
+* bfd_arch_get_compatible:               Architectures.      (line  411)
+* bfd_arch_list:                         Architectures.      (line  402)
+* bfd_arch_mach_octets_per_byte:         Architectures.      (line  545)
+* BFD_ARELOC_BFIN_ADD:                   howto manager.      (line  887)
+* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line  938)
+* BFD_ARELOC_BFIN_AND:                   howto manager.      (line  908)
+* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line  929)
+* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line  884)
+* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line  896)
+* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line  935)
+* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line  917)
+* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line  923)
+* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line  920)
+* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line  902)
+* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line  899)
+* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line  893)
+* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line  926)
+* BFD_ARELOC_BFIN_OR:                    howto manager.      (line  911)
+* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line  932)
+* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line  881)
+* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line  905)
+* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line  890)
+* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line  914)
+* 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  318)
+* 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  457)
+* bfd_copy_private_header_data:          BFD front end.      (line  439)
+* 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  423)
+* bfd_default_compatible:                Architectures.      (line  485)
+* bfd_default_reloc_type_lookup:         howto manager.      (line 1931)
+* bfd_default_scan:                      Architectures.      (line  494)
+* bfd_default_set_arch_mach:             Architectures.      (line  441)
+* bfd_elf_find_section:                  elf.                (line   13)
+* bfd_errmsg:                            BFD front end.      (line  243)
+* bfd_fdopenr:                           Opening and Closing.
+                                                             (line   46)
+* bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
+                                                             (line  319)
+* bfd_find_target:                       bfd_target.         (line  434)
+* 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 1962)
+* bfd_generic_get_relocated_section_contents: howto manager. (line 1982)
+* bfd_generic_is_group_section:          section prototypes. (line  273)
+* bfd_generic_merge_sections:            howto manager.      (line 1972)
+* bfd_generic_relax_section:             howto manager.      (line 1949)
+* bfd_get_arch:                          Architectures.      (line  452)
+* bfd_get_arch_info:                     Architectures.      (line  504)
+* bfd_get_arch_size:                     BFD front end.      (line  362)
+* bfd_get_error:                         BFD front end.      (line  226)
+* bfd_get_error_handler:                 BFD front end.      (line  294)
+* bfd_get_gp_size:                       BFD front end.      (line  403)
+* bfd_get_mach:                          Architectures.      (line  460)
+* bfd_get_mtime:                         BFD front end.      (line  687)
+* bfd_get_next_mapent:                   Archives.           (line   52)
+* bfd_get_reloc_code_name:               howto manager.      (line 1940)
+* bfd_get_reloc_size:                    typedef arelent.    (line  330)
+* bfd_get_reloc_upper_bound:             BFD front end.      (line  308)
+* 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  375)
+* bfd_get_size <1>:                      Internal.           (line   25)
+* bfd_get_size:                          BFD front end.      (line  696)
+* 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  512)
+* 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  473)
+* bfd_octets_per_byte:                   Architectures.      (line  535)
+* 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  252)
+* bfd_preserve_finish:                   BFD front end.      (line  647)
+* bfd_preserve_restore:                  BFD front end.      (line  637)
+* bfd_preserve_save:                     BFD front end.      (line  621)
+* bfd_print_symbol_vandf:                symbol handling functions.
+                                                             (line   70)
+* bfd_printable_arch_mach:               Architectures.      (line  523)
+* bfd_printable_name:                    Architectures.      (line  383)
+* 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 1655)
+* BFD_RELOC_16C_ABS20_C:                 howto manager.      (line 1656)
+* BFD_RELOC_16C_ABS24:                   howto manager.      (line 1657)
+* BFD_RELOC_16C_ABS24_C:                 howto manager.      (line 1658)
+* BFD_RELOC_16C_DISP04:                  howto manager.      (line 1635)
+* BFD_RELOC_16C_DISP04_C:                howto manager.      (line 1636)
+* BFD_RELOC_16C_DISP08:                  howto manager.      (line 1637)
+* BFD_RELOC_16C_DISP08_C:                howto manager.      (line 1638)
+* BFD_RELOC_16C_DISP16:                  howto manager.      (line 1639)
+* BFD_RELOC_16C_DISP16_C:                howto manager.      (line 1640)
+* BFD_RELOC_16C_DISP24:                  howto manager.      (line 1641)
+* BFD_RELOC_16C_DISP24_C:                howto manager.      (line 1642)
+* BFD_RELOC_16C_DISP24a:                 howto manager.      (line 1643)
+* BFD_RELOC_16C_DISP24a_C:               howto manager.      (line 1644)
+* BFD_RELOC_16C_IMM04:                   howto manager.      (line 1659)
+* BFD_RELOC_16C_IMM04_C:                 howto manager.      (line 1660)
+* BFD_RELOC_16C_IMM16:                   howto manager.      (line 1661)
+* BFD_RELOC_16C_IMM16_C:                 howto manager.      (line 1662)
+* BFD_RELOC_16C_IMM20:                   howto manager.      (line 1663)
+* BFD_RELOC_16C_IMM20_C:                 howto manager.      (line 1664)
+* BFD_RELOC_16C_IMM24:                   howto manager.      (line 1665)
+* BFD_RELOC_16C_IMM24_C:                 howto manager.      (line 1666)
+* BFD_RELOC_16C_IMM32:                   howto manager.      (line 1667)
+* BFD_RELOC_16C_IMM32_C:                 howto manager.      (line 1668)
+* BFD_RELOC_16C_NUM08:                   howto manager.      (line 1629)
+* BFD_RELOC_16C_NUM08_C:                 howto manager.      (line 1630)
+* BFD_RELOC_16C_NUM16:                   howto manager.      (line 1631)
+* BFD_RELOC_16C_NUM16_C:                 howto manager.      (line 1632)
+* BFD_RELOC_16C_NUM32:                   howto manager.      (line 1633)
+* BFD_RELOC_16C_NUM32_C:                 howto manager.      (line 1634)
+* BFD_RELOC_16C_REG04:                   howto manager.      (line 1645)
+* BFD_RELOC_16C_REG04_C:                 howto manager.      (line 1646)
+* BFD_RELOC_16C_REG04a:                  howto manager.      (line 1647)
+* BFD_RELOC_16C_REG04a_C:                howto manager.      (line 1648)
+* BFD_RELOC_16C_REG14:                   howto manager.      (line 1649)
+* BFD_RELOC_16C_REG14_C:                 howto manager.      (line 1650)
+* BFD_RELOC_16C_REG16:                   howto manager.      (line 1651)
+* BFD_RELOC_16C_REG16_C:                 howto manager.      (line 1652)
+* BFD_RELOC_16C_REG20:                   howto manager.      (line 1653)
+* BFD_RELOC_16C_REG20_C:                 howto manager.      (line 1654)
+* 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  435)
+* BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  436)
+* BFD_RELOC_386_GOT32:                   howto manager.      (line  433)
+* BFD_RELOC_386_GOTOFF:                  howto manager.      (line  439)
+* BFD_RELOC_386_GOTPC:                   howto manager.      (line  440)
+* BFD_RELOC_386_JUMP_SLOT:               howto manager.      (line  437)
+* BFD_RELOC_386_PLT32:                   howto manager.      (line  434)
+* BFD_RELOC_386_RELATIVE:                howto manager.      (line  438)
+* BFD_RELOC_386_TLS_DESC:                howto manager.      (line  455)
+* BFD_RELOC_386_TLS_DESC_CALL:           howto manager.      (line  454)
+* BFD_RELOC_386_TLS_DTPMOD32:            howto manager.      (line  450)
+* BFD_RELOC_386_TLS_DTPOFF32:            howto manager.      (line  451)
+* BFD_RELOC_386_TLS_GD:                  howto manager.      (line  445)
+* BFD_RELOC_386_TLS_GOTDESC:             howto manager.      (line  453)
+* BFD_RELOC_386_TLS_GOTIE:               howto manager.      (line  443)
+* BFD_RELOC_386_TLS_IE:                  howto manager.      (line  442)
+* BFD_RELOC_386_TLS_IE_32:               howto manager.      (line  448)
+* BFD_RELOC_386_TLS_LDM:                 howto manager.      (line  446)
+* BFD_RELOC_386_TLS_LDO_32:              howto manager.      (line  447)
+* BFD_RELOC_386_TLS_LE:                  howto manager.      (line  444)
+* BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  449)
+* BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  441)
+* BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  452)
+* BFD_RELOC_390_12:                      howto manager.      (line 1346)
+* BFD_RELOC_390_20:                      howto manager.      (line 1446)
+* BFD_RELOC_390_COPY:                    howto manager.      (line 1355)
+* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1358)
+* BFD_RELOC_390_GOT12:                   howto manager.      (line 1349)
+* BFD_RELOC_390_GOT16:                   howto manager.      (line 1370)
+* BFD_RELOC_390_GOT20:                   howto manager.      (line 1447)
+* BFD_RELOC_390_GOT64:                   howto manager.      (line 1388)
+* BFD_RELOC_390_GOTENT:                  howto manager.      (line 1394)
+* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1397)
+* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1367)
+* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1385)
+* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1400)
+* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1403)
+* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 1448)
+* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1406)
+* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 1409)
+* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 1412)
+* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1361)
+* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1373)
+* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1379)
+* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1376)
+* BFD_RELOC_390_PLT32:                   howto manager.      (line 1352)
+* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1382)
+* BFD_RELOC_390_PLT64:                   howto manager.      (line 1391)
+* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 1415)
+* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 1418)
+* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 1421)
+* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1364)
+* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 1441)
+* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 1442)
+* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 1427)
+* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 1428)
+* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 1425)
+* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 1429)
+* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 1449)
+* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 1430)
+* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 1431)
+* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 1434)
+* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 1435)
+* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 1436)
+* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 1426)
+* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 1432)
+* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 1433)
+* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 1439)
+* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 1440)
+* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 1437)
+* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 1438)
+* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 1424)
+* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 1443)
+* 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 1734)
+* BFD_RELOC_860_GLOB_DAT:                howto manager.      (line 1735)
+* BFD_RELOC_860_HAGOT:                   howto manager.      (line 1760)
+* BFD_RELOC_860_HAGOTOFF:                howto manager.      (line 1761)
+* BFD_RELOC_860_HAPC:                    howto manager.      (line 1762)
+* BFD_RELOC_860_HIGH:                    howto manager.      (line 1763)
+* BFD_RELOC_860_HIGHADJ:                 howto manager.      (line 1759)
+* BFD_RELOC_860_HIGOT:                   howto manager.      (line 1764)
+* BFD_RELOC_860_HIGOTOFF:                howto manager.      (line 1765)
+* BFD_RELOC_860_JUMP_SLOT:               howto manager.      (line 1736)
+* BFD_RELOC_860_LOGOT0:                  howto manager.      (line 1748)
+* BFD_RELOC_860_LOGOT1:                  howto manager.      (line 1750)
+* BFD_RELOC_860_LOGOTOFF0:               howto manager.      (line 1752)
+* BFD_RELOC_860_LOGOTOFF1:               howto manager.      (line 1754)
+* BFD_RELOC_860_LOGOTOFF2:               howto manager.      (line 1756)
+* BFD_RELOC_860_LOGOTOFF3:               howto manager.      (line 1757)
+* BFD_RELOC_860_LOPC:                    howto manager.      (line 1758)
+* BFD_RELOC_860_LOW0:                    howto manager.      (line 1741)
+* BFD_RELOC_860_LOW1:                    howto manager.      (line 1743)
+* BFD_RELOC_860_LOW2:                    howto manager.      (line 1745)
+* BFD_RELOC_860_LOW3:                    howto manager.      (line 1747)
+* BFD_RELOC_860_PC16:                    howto manager.      (line 1740)
+* BFD_RELOC_860_PC26:                    howto manager.      (line 1738)
+* BFD_RELOC_860_PLT26:                   howto manager.      (line 1739)
+* BFD_RELOC_860_RELATIVE:                howto manager.      (line 1737)
+* BFD_RELOC_860_SPGOT0:                  howto manager.      (line 1749)
+* BFD_RELOC_860_SPGOT1:                  howto manager.      (line 1751)
+* BFD_RELOC_860_SPGOTOFF0:               howto manager.      (line 1753)
+* BFD_RELOC_860_SPGOTOFF1:               howto manager.      (line 1755)
+* BFD_RELOC_860_SPLIT0:                  howto manager.      (line 1742)
+* BFD_RELOC_860_SPLIT1:                  howto manager.      (line 1744)
+* BFD_RELOC_860_SPLIT2:                  howto manager.      (line 1746)
+* 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  259)
+* BFD_RELOC_ALPHA_CODEADDR:              howto manager.      (line  250)
+* BFD_RELOC_ALPHA_DTPMOD64:              howto manager.      (line  266)
+* BFD_RELOC_ALPHA_DTPREL16:              howto manager.      (line  271)
+* BFD_RELOC_ALPHA_DTPREL64:              howto manager.      (line  268)
+* BFD_RELOC_ALPHA_DTPREL_HI16:           howto manager.      (line  269)
+* BFD_RELOC_ALPHA_DTPREL_LO16:           howto manager.      (line  270)
+* BFD_RELOC_ALPHA_ELF_LITERAL:           howto manager.      (line  215)
+* BFD_RELOC_ALPHA_GOTDTPREL16:           howto manager.      (line  267)
+* BFD_RELOC_ALPHA_GOTTPREL16:            howto manager.      (line  272)
+* BFD_RELOC_ALPHA_GPDISP:                howto manager.      (line  209)
+* BFD_RELOC_ALPHA_GPDISP_HI16:           howto manager.      (line  195)
+* BFD_RELOC_ALPHA_GPDISP_LO16:           howto manager.      (line  203)
+* BFD_RELOC_ALPHA_GPREL_HI16:            howto manager.      (line  254)
+* BFD_RELOC_ALPHA_GPREL_LO16:            howto manager.      (line  255)
+* BFD_RELOC_ALPHA_HINT:                  howto manager.      (line  241)
+* BFD_RELOC_ALPHA_LINKAGE:               howto manager.      (line  246)
+* BFD_RELOC_ALPHA_LITERAL:               howto manager.      (line  214)
+* BFD_RELOC_ALPHA_LITUSE:                howto manager.      (line  216)
+* BFD_RELOC_ALPHA_TLSGD:                 howto manager.      (line  264)
+* BFD_RELOC_ALPHA_TLSLDM:                howto manager.      (line  265)
+* BFD_RELOC_ALPHA_TPREL16:               howto manager.      (line  276)
+* BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  273)
+* BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  274)
+* BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  275)
+* BFD_RELOC_ARC_B22_PCREL:               howto manager.      (line  816)
+* BFD_RELOC_ARC_B26:                     howto manager.      (line  821)
+* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  709)
+* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  697)
+* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  705)
+* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  706)
+* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  678)
+* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  679)
+* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  682)
+* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  683)
+* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  716)
+* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  696)
+* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  712)
+* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  677)
+* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  710)
+* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  711)
+* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  704)
+* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  651)
+* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  713)
+* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  622)
+* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  618)
+* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  632)
+* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  636)
+* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  680)
+* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  674)
+* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  681)
+* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  663)
+* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  666)
+* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  701)
+* BFD_RELOC_ARM_SMC:                     howto manager.      (line  702)
+* BFD_RELOC_ARM_SWI:                     howto manager.      (line  703)
+* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  700)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  707)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  708)
+* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  699)
+* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  698)
+* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  715)
+* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  714)
+* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  659)
+* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  669)
+* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  717)
+* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  718)
+* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  655)
+* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  719)
+* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  690)
+* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  689)
+* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  686)
+* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  692)
+* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  688)
+* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  687)
+* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  693)
+* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  691)
+* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1259)
+* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1263)
+* BFD_RELOC_AVR_6:                       howto manager.      (line 1338)
+* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1342)
+* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1255)
+* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1330)
+* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1275)
+* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1294)
+* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1311)
+* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1325)
+* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1271)
+* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1289)
+* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1307)
+* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1320)
+* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1334)
+* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1267)
+* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1284)
+* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1303)
+* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1316)
+* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1280)
+* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1299)
+* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line  841)
+* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line  844)
+* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line  847)
+* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line  850)
+* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line  829)
+* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line  826)
+* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line  838)
+* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line  853)
+* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line  856)
+* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line  832)
+* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line  835)
+* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line  862)
+* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line  863)
+* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line  864)
+* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line  865)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line  867)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line  868)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line  869)
+* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line  866)
+* BFD_RELOC_BFIN_GOT:                    howto manager.      (line  875)
+* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line  859)
+* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line  860)
+* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line  861)
+* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line  870)
+* BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line  871)
+* BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line  872)
+* BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line  878)
+* bfd_reloc_code_type:                   howto manager.      (line   10)
+* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 1715)
+* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 1721)
+* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 1712)
+* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 1718)
+* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 1724)
+* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 1727)
+* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 1730)
+* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 1693)
+* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 1706)
+* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 1707)
+* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 1708)
+* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 1701)
+* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 1709)
+* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 1699)
+* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 1695)
+* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 1697)
+* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 1700)
+* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 1702)
+* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 1694)
+* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 1696)
+* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 1698)
+* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 1681)
+* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 1682)
+* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 1686)
+* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 1687)
+* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 1684)
+* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 1685)
+* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 1683)
+* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 1677)
+* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 1678)
+* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 1679)
+* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 1680)
+* BFD_RELOC_CRX_REL16:                   howto manager.      (line 1674)
+* BFD_RELOC_CRX_REL24:                   howto manager.      (line 1675)
+* BFD_RELOC_CRX_REL32:                   howto manager.      (line 1676)
+* BFD_RELOC_CRX_REL4:                    howto manager.      (line 1671)
+* BFD_RELOC_CRX_REL8:                    howto manager.      (line 1672)
+* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 1673)
+* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 1689)
+* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 1690)
+* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 1688)
+* BFD_RELOC_CTOR:                        howto manager.      (line  612)
+* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line  945)
+* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line  941)
+* BFD_RELOC_D10V_18:                     howto manager.      (line  950)
+* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line  953)
+* BFD_RELOC_D30V_15:                     howto manager.      (line  968)
+* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line  972)
+* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line  976)
+* BFD_RELOC_D30V_21:                     howto manager.      (line  981)
+* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line  985)
+* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line  989)
+* BFD_RELOC_D30V_32:                     howto manager.      (line  994)
+* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line  997)
+* BFD_RELOC_D30V_6:                      howto manager.      (line  956)
+* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line  959)
+* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line  963)
+* BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1000)
+* BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1006)
+* BFD_RELOC_DLX_LO16:                    howto manager.      (line 1003)
+* BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1185)
+* BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1193)
+* BFD_RELOC_FR30_20:                     howto manager.      (line 1169)
+* BFD_RELOC_FR30_48:                     howto manager.      (line 1166)
+* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1173)
+* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1177)
+* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1181)
+* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1189)
+* BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  377)
+* BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  378)
+* BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  379)
+* BFD_RELOC_FRV_FUNCDESC_GOTLO:          howto manager.      (line  380)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFF12:       howto manager.      (line  382)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:       howto manager.      (line  383)
+* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:       howto manager.      (line  384)
+* BFD_RELOC_FRV_FUNCDESC_VALUE:          howto manager.      (line  381)
+* BFD_RELOC_FRV_GETTLSOFF:               howto manager.      (line  388)
+* BFD_RELOC_FRV_GETTLSOFF_RELAX:         howto manager.      (line  401)
+* BFD_RELOC_FRV_GOT12:                   howto manager.      (line  374)
+* BFD_RELOC_FRV_GOTHI:                   howto manager.      (line  375)
+* BFD_RELOC_FRV_GOTLO:                   howto manager.      (line  376)
+* BFD_RELOC_FRV_GOTOFF12:                howto manager.      (line  385)
+* BFD_RELOC_FRV_GOTOFFHI:                howto manager.      (line  386)
+* BFD_RELOC_FRV_GOTOFFLO:                howto manager.      (line  387)
+* BFD_RELOC_FRV_GOTTLSDESC12:            howto manager.      (line  390)
+* BFD_RELOC_FRV_GOTTLSDESCHI:            howto manager.      (line  391)
+* BFD_RELOC_FRV_GOTTLSDESCLO:            howto manager.      (line  392)
+* BFD_RELOC_FRV_GOTTLSOFF12:             howto manager.      (line  396)
+* BFD_RELOC_FRV_GOTTLSOFFHI:             howto manager.      (line  397)
+* BFD_RELOC_FRV_GOTTLSOFFLO:             howto manager.      (line  398)
+* BFD_RELOC_FRV_GPREL12:                 howto manager.      (line  369)
+* BFD_RELOC_FRV_GPREL32:                 howto manager.      (line  371)
+* BFD_RELOC_FRV_GPRELHI:                 howto manager.      (line  372)
+* BFD_RELOC_FRV_GPRELLO:                 howto manager.      (line  373)
+* BFD_RELOC_FRV_GPRELU12:                howto manager.      (line  370)
+* BFD_RELOC_FRV_HI16:                    howto manager.      (line  368)
+* BFD_RELOC_FRV_LABEL16:                 howto manager.      (line  365)
+* BFD_RELOC_FRV_LABEL24:                 howto manager.      (line  366)
+* BFD_RELOC_FRV_LO16:                    howto manager.      (line  367)
+* BFD_RELOC_FRV_TLSDESC_RELAX:           howto manager.      (line  400)
+* BFD_RELOC_FRV_TLSDESC_VALUE:           howto manager.      (line  389)
+* BFD_RELOC_FRV_TLSMOFF:                 howto manager.      (line  403)
+* BFD_RELOC_FRV_TLSMOFF12:               howto manager.      (line  393)
+* BFD_RELOC_FRV_TLSMOFFHI:               howto manager.      (line  394)
+* BFD_RELOC_FRV_TLSMOFFLO:               howto manager.      (line  395)
+* BFD_RELOC_FRV_TLSOFF:                  howto manager.      (line  399)
+* BFD_RELOC_FRV_TLSOFF_RELAX:            howto manager.      (line  402)
+* BFD_RELOC_GPREL16:                     howto manager.      (line  106)
+* BFD_RELOC_GPREL32:                     howto manager.      (line  107)
+* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 1772)
+* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 1773)
+* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 1774)
+* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 1775)
+* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 1776)
+* BFD_RELOC_HI16:                        howto manager.      (line  289)
+* BFD_RELOC_HI16_BASEREL:                howto manager.      (line   82)
+* BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   57)
+* BFD_RELOC_HI16_PCREL:                  howto manager.      (line  301)
+* BFD_RELOC_HI16_PLTOFF:                 howto manager.      (line   69)
+* BFD_RELOC_HI16_S:                      howto manager.      (line  292)
+* 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  304)
+* BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   70)
+* BFD_RELOC_HI22:                        howto manager.      (line  101)
+* BFD_RELOC_I370_D12:                    howto manager.      (line  609)
+* BFD_RELOC_I960_CALLJ:                  howto manager.      (line  113)
+* BFD_RELOC_IA64_COPY:                   howto manager.      (line 1565)
+* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 1510)
+* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 1509)
+* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 1512)
+* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 1511)
+* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 1575)
+* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 1574)
+* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 1577)
+* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 1578)
+* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 1581)
+* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 1580)
+* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 1579)
+* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 1583)
+* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 1582)
+* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 1527)
+* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 1526)
+* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 1525)
+* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 1529)
+* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 1528)
+* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 1513)
+* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 1516)
+* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 1515)
+* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 1514)
+* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 1518)
+* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 1517)
+* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 1506)
+* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 1507)
+* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 1508)
+* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 1564)
+* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 1563)
+* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 1567)
+* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 1519)
+* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 1566)
+* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 1520)
+* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 1576)
+* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 1584)
+* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 1541)
+* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 1544)
+* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 1543)
+* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 1542)
+* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 1546)
+* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 1545)
+* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 1573)
+* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 1560)
+* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 1559)
+* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 1562)
+* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 1561)
+* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 1530)
+* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 1531)
+* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 1533)
+* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 1532)
+* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 1534)
+* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 1538)
+* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 1537)
+* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 1535)
+* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 1536)
+* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 1540)
+* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 1539)
+* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 1521)
+* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 1522)
+* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 1524)
+* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 1523)
+* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 1556)
+* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 1555)
+* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 1558)
+* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 1557)
+* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 1552)
+* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 1551)
+* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 1554)
+* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 1553)
+* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 1548)
+* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 1547)
+* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 1550)
+* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 1549)
+* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 1568)
+* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 1569)
+* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 1570)
+* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 1572)
+* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 1571)
+* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 1458)
+* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 1455)
+* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 1466)
+* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 1452)
+* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 1479)
+* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 1465)
+* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 1470)
+* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 1464)
+* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 1469)
+* BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 1461)
+* BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 1473)
+* BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 1476)
+* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 1823)
+* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 1824)
+* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 1825)
+* BFD_RELOC_LO10:                        howto manager.      (line  102)
+* BFD_RELOC_LO16:                        howto manager.      (line  298)
+* BFD_RELOC_LO16_BASEREL:                howto manager.      (line   81)
+* BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   56)
+* BFD_RELOC_LO16_PCREL:                  howto manager.      (line  307)
+* BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   68)
+* BFD_RELOC_M32C_HI8:                    howto manager.      (line 1009)
+* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1011)
+* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1012)
+* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1010)
+* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1019)
+* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1023)
+* BFD_RELOC_M32R_24:                     howto manager.      (line 1015)
+* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1026)
+* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1045)
+* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1046)
+* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1047)
+* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1056)
+* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1055)
+* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1057)
+* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1044)
+* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1050)
+* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1052)
+* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1051)
+* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1053)
+* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1054)
+* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1059)
+* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1058)
+* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1060)
+* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1033)
+* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1029)
+* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1048)
+* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1037)
+* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1049)
+* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1040)
+* BFD_RELOC_M68HC11_24:                  howto manager.      (line 1620)
+* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 1595)
+* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 1587)
+* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 1609)
+* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 1591)
+* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 1615)
+* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 1604)
+* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 1598)
+* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 1626)
+* BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1200)
+* BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1198)
+* BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1199)
+* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1197)
+* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1201)
+* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1202)
+* BFD_RELOC_MIPS16_GPREL:                howto manager.      (line  286)
+* BFD_RELOC_MIPS16_HI16:                 howto manager.      (line  310)
+* BFD_RELOC_MIPS16_HI16_S:               howto manager.      (line  313)
+* BFD_RELOC_MIPS16_JMP:                  howto manager.      (line  283)
+* BFD_RELOC_MIPS16_LO16:                 howto manager.      (line  319)
+* BFD_RELOC_MIPS_CALL16:                 howto manager.      (line  326)
+* BFD_RELOC_MIPS_CALL_HI16:              howto manager.      (line  329)
+* BFD_RELOC_MIPS_CALL_LO16:              howto manager.      (line  330)
+* BFD_RELOC_MIPS_COPY:                   howto manager.      (line  361)
+* BFD_RELOC_MIPS_DELETE:                 howto manager.      (line  339)
+* BFD_RELOC_MIPS_GOT16:                  howto manager.      (line  325)
+* BFD_RELOC_MIPS_GOT_DISP:               howto manager.      (line  334)
+* BFD_RELOC_MIPS_GOT_HI16:               howto manager.      (line  327)
+* BFD_RELOC_MIPS_GOT_LO16:               howto manager.      (line  328)
+* BFD_RELOC_MIPS_GOT_OFST:               howto manager.      (line  333)
+* BFD_RELOC_MIPS_GOT_PAGE:               howto manager.      (line  332)
+* BFD_RELOC_MIPS_HIGHER:                 howto manager.      (line  341)
+* BFD_RELOC_MIPS_HIGHEST:                howto manager.      (line  340)
+* BFD_RELOC_MIPS_INSERT_A:               howto manager.      (line  337)
+* BFD_RELOC_MIPS_INSERT_B:               howto manager.      (line  338)
+* BFD_RELOC_MIPS_JALR:                   howto manager.      (line  345)
+* BFD_RELOC_MIPS_JMP:                    howto manager.      (line  279)
+* BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  362)
+* BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  322)
+* BFD_RELOC_MIPS_REL16:                  howto manager.      (line  343)
+* BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  344)
+* BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  342)
+* BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  335)
+* BFD_RELOC_MIPS_SHIFT6:                 howto manager.      (line  336)
+* BFD_RELOC_MIPS_SUB:                    howto manager.      (line  331)
+* BFD_RELOC_MIPS_TLS_DTPMOD32:           howto manager.      (line  346)
+* BFD_RELOC_MIPS_TLS_DTPMOD64:           howto manager.      (line  348)
+* BFD_RELOC_MIPS_TLS_DTPREL32:           howto manager.      (line  347)
+* BFD_RELOC_MIPS_TLS_DTPREL64:           howto manager.      (line  349)
+* BFD_RELOC_MIPS_TLS_DTPREL_HI16:        howto manager.      (line  352)
+* BFD_RELOC_MIPS_TLS_DTPREL_LO16:        howto manager.      (line  353)
+* BFD_RELOC_MIPS_TLS_GD:                 howto manager.      (line  350)
+* BFD_RELOC_MIPS_TLS_GOTTPREL:           howto manager.      (line  354)
+* BFD_RELOC_MIPS_TLS_LDM:                howto manager.      (line  351)
+* BFD_RELOC_MIPS_TLS_TPREL32:            howto manager.      (line  355)
+* BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  356)
+* BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  357)
+* BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  358)
+* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1231)
+* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1235)
+* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1247)
+* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1211)
+* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1213)
+* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1214)
+* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1215)
+* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1212)
+* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1205)
+* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1206)
+* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1207)
+* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1208)
+* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1225)
+* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1226)
+* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1227)
+* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1228)
+* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1251)
+* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1218)
+* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1219)
+* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1220)
+* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1221)
+* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1222)
+* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1243)
+* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1239)
+* BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line 1135)
+* BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line 1131)
+* BFD_RELOC_MN10300_COPY:                howto manager.      (line  421)
+* BFD_RELOC_MN10300_GLOB_DAT:            howto manager.      (line  424)
+* BFD_RELOC_MN10300_GOT16:               howto manager.      (line  417)
+* BFD_RELOC_MN10300_GOT24:               howto manager.      (line  413)
+* BFD_RELOC_MN10300_GOT32:               howto manager.      (line  409)
+* BFD_RELOC_MN10300_GOTOFF24:            howto manager.      (line  406)
+* BFD_RELOC_MN10300_JMP_SLOT:            howto manager.      (line  427)
+* BFD_RELOC_MN10300_RELATIVE:            howto manager.      (line  430)
+* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 1814)
+* BFD_RELOC_MSP430_16:                   howto manager.      (line 1816)
+* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 1818)
+* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 1815)
+* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 1817)
+* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 1819)
+* BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 1820)
+* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 1808)
+* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 1805)
+* BFD_RELOC_MT_HI16:                     howto manager.      (line 1799)
+* BFD_RELOC_MT_LO16:                     howto manager.      (line 1802)
+* BFD_RELOC_MT_PC16:                     howto manager.      (line 1796)
+* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 1811)
+* BFD_RELOC_NONE:                        howto manager.      (line  116)
+* BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  493)
+* BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  496)
+* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  494)
+* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  497)
+* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  492)
+* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  495)
+* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  487)
+* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  490)
+* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  488)
+* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  491)
+* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  486)
+* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  489)
+* BFD_RELOC_OPENRISC_ABS_26:             howto manager.      (line 1768)
+* BFD_RELOC_OPENRISC_REL_26:             howto manager.      (line 1769)
+* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  501)
+* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  500)
+* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  506)
+* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  507)
+* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  504)
+* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  505)
+* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  508)
+* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  509)
+* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  554)
+* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  555)
+* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  601)
+* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  603)
+* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  604)
+* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  605)
+* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  606)
+* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  602)
+* BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  556)
+* BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  557)
+* BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  542)
+* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  543)
+* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  544)
+* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  545)
+* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  558)
+* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  550)
+* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  563)
+* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  553)
+* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  552)
+* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  551)
+* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  564)
+* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  559)
+* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  560)
+* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  549)
+* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  561)
+* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  548)
+* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  547)
+* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  546)
+* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  562)
+* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  595)
+* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  597)
+* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  598)
+* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  599)
+* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  600)
+* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  596)
+* BFD_RELOC_PPC_B16:                     howto manager.      (line  515)
+* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  517)
+* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  516)
+* BFD_RELOC_PPC_B26:                     howto manager.      (line  512)
+* BFD_RELOC_PPC_BA16:                    howto manager.      (line  518)
+* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  520)
+* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  519)
+* BFD_RELOC_PPC_BA26:                    howto manager.      (line  513)
+* BFD_RELOC_PPC_COPY:                    howto manager.      (line  521)
+* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  568)
+* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  578)
+* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  574)
+* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  577)
+* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  576)
+* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  575)
+* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  540)
+* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  535)
+* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  527)
+* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  530)
+* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  529)
+* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  528)
+* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  526)
+* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  541)
+* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  536)
+* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  539)
+* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  538)
+* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  537)
+* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  534)
+* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  532)
+* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  533)
+* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  531)
+* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  522)
+* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  591)
+* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  594)
+* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  593)
+* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  592)
+* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  579)
+* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  582)
+* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  581)
+* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  580)
+* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  583)
+* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  586)
+* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  585)
+* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  584)
+* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  587)
+* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  590)
+* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  589)
+* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  588)
+* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  523)
+* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  525)
+* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  524)
+* BFD_RELOC_PPC_TLS:                     howto manager.      (line  567)
+* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  514)
+* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  573)
+* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  569)
+* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  572)
+* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  571)
+* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  570)
+* BFD_RELOC_RVA:                         howto manager.      (line   85)
+* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  745)
+* BFD_RELOC_SH_CODE:                     howto manager.      (line  746)
+* BFD_RELOC_SH_COPY:                     howto manager.      (line  751)
+* BFD_RELOC_SH_COPY64:                   howto manager.      (line  776)
+* BFD_RELOC_SH_COUNT:                    howto manager.      (line  744)
+* BFD_RELOC_SH_DATA:                     howto manager.      (line  747)
+* BFD_RELOC_SH_DISP12:                   howto manager.      (line  727)
+* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  728)
+* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  729)
+* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  730)
+* BFD_RELOC_SH_DISP20:                   howto manager.      (line  731)
+* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  732)
+* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  752)
+* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  777)
+* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  780)
+* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  781)
+* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  759)
+* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  756)
+* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  758)
+* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  757)
+* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  771)
+* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  768)
+* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  770)
+* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  769)
+* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  755)
+* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  775)
+* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  772)
+* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  774)
+* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  773)
+* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  782)
+* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  783)
+* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  784)
+* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  763)
+* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  760)
+* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  762)
+* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  761)
+* BFD_RELOC_SH_IMM3:                     howto manager.      (line  725)
+* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  726)
+* BFD_RELOC_SH_IMM4:                     howto manager.      (line  733)
+* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  734)
+* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  735)
+* BFD_RELOC_SH_IMM8:                     howto manager.      (line  736)
+* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  737)
+* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  738)
+* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line  802)
+* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line  803)
+* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line  796)
+* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line  797)
+* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line  800)
+* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line  801)
+* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line  798)
+* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line  799)
+* BFD_RELOC_SH_IMMS10:                   howto manager.      (line  790)
+* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line  791)
+* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line  792)
+* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line  793)
+* BFD_RELOC_SH_IMMS16:                   howto manager.      (line  794)
+* BFD_RELOC_SH_IMMS6:                    howto manager.      (line  787)
+* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line  788)
+* BFD_RELOC_SH_IMMU16:                   howto manager.      (line  795)
+* BFD_RELOC_SH_IMMU5:                    howto manager.      (line  786)
+* BFD_RELOC_SH_IMMU6:                    howto manager.      (line  789)
+* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  753)
+* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  778)
+* BFD_RELOC_SH_LABEL:                    howto manager.      (line  748)
+* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  750)
+* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  749)
+* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  724)
+* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  723)
+* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  739)
+* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  740)
+* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  767)
+* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  764)
+* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  766)
+* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  765)
+* BFD_RELOC_SH_PT_16:                    howto manager.      (line  804)
+* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  754)
+* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  779)
+* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  785)
+* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  741)
+* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  742)
+* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line  810)
+* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line  811)
+* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line  805)
+* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line  808)
+* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line  806)
+* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line  807)
+* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line  809)
+* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line  812)
+* BFD_RELOC_SH_USES:                     howto manager.      (line  743)
+* 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_THUMB_PCREL_BLX:             howto manager.      (line  627)
+* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  641)
+* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  642)
+* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  643)
+* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  644)
+* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  639)
+* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  640)
+* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1139)
+* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1157)
+* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1154)
+* BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1162)
+* BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1144)
+* BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1149)
+* bfd_reloc_type_lookup:                 howto manager.      (line 1920)
+* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1066)
+* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1063)
+* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1124)
+* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1115)
+* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1112)
+* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1127)
+* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1118)
+* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1121)
+* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1072)
+* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1069)
+* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1104)
+* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1094)
+* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1101)
+* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1097)
+* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1083)
+* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1091)
+* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1087)
+* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1079)
+* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1076)
+* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1108)
+* BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 1791)
+* BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 1792)
+* BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 1793)
+* BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 1482)
+* BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 1483)
+* BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 1487)
+* BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 1486)
+* BFD_RELOC_X86_64_32S:                  howto manager.      (line  465)
+* BFD_RELOC_X86_64_COPY:                 howto manager.      (line  460)
+* BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  466)
+* BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  471)
+* BFD_RELOC_X86_64_DTPOFF64:             howto manager.      (line  467)
+* BFD_RELOC_X86_64_GLOB_DAT:             howto manager.      (line  461)
+* BFD_RELOC_X86_64_GOT32:                howto manager.      (line  458)
+* BFD_RELOC_X86_64_GOT64:                howto manager.      (line  476)
+* BFD_RELOC_X86_64_GOTOFF64:             howto manager.      (line  474)
+* BFD_RELOC_X86_64_GOTPC32:              howto manager.      (line  475)
+* BFD_RELOC_X86_64_GOTPC32_TLSDESC:      howto manager.      (line  481)
+* BFD_RELOC_X86_64_GOTPC64:              howto manager.      (line  478)
+* BFD_RELOC_X86_64_GOTPCREL:             howto manager.      (line  464)
+* BFD_RELOC_X86_64_GOTPCREL64:           howto manager.      (line  477)
+* BFD_RELOC_X86_64_GOTPLT64:             howto manager.      (line  479)
+* BFD_RELOC_X86_64_GOTTPOFF:             howto manager.      (line  472)
+* BFD_RELOC_X86_64_JUMP_SLOT:            howto manager.      (line  462)
+* BFD_RELOC_X86_64_PLT32:                howto manager.      (line  459)
+* BFD_RELOC_X86_64_PLTOFF64:             howto manager.      (line  480)
+* BFD_RELOC_X86_64_RELATIVE:             howto manager.      (line  463)
+* BFD_RELOC_X86_64_TLSDESC:              howto manager.      (line  483)
+* BFD_RELOC_X86_64_TLSDESC_CALL:         howto manager.      (line  482)
+* BFD_RELOC_X86_64_TLSGD:                howto manager.      (line  469)
+* BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  470)
+* BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  473)
+* BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  468)
+* BFD_RELOC_XC16X_PAG:                   howto manager.      (line 1785)
+* BFD_RELOC_XC16X_POF:                   howto manager.      (line 1786)
+* BFD_RELOC_XC16X_SEG:                   howto manager.      (line 1787)
+* BFD_RELOC_XC16X_SOF:                   howto manager.      (line 1788)
+* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 1780)
+* BFD_RELOC_XSTORMY16_24:                howto manager.      (line 1781)
+* BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 1782)
+* BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 1779)
+* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 1897)
+* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 1902)
+* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 1844)
+* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 1845)
+* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 1843)
+* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 1833)
+* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 1834)
+* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 1891)
+* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 1892)
+* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 1893)
+* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 1838)
+* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 1835)
+* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 1828)
+* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 1873)
+* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 1853)
+* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 1883)
+* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 1863)
+* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 1884)
+* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 1864)
+* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 1885)
+* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 1865)
+* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 1886)
+* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 1866)
+* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 1887)
+* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 1867)
+* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 1874)
+* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 1854)
+* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 1875)
+* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 1855)
+* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 1876)
+* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 1856)
+* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 1877)
+* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 1857)
+* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 1878)
+* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 1858)
+* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 1879)
+* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 1859)
+* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 1880)
+* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 1860)
+* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 1881)
+* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 1861)
+* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 1882)
+* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 1862)
+* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 1907)
+* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 1913)
+* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 1910)
+* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 1916)
+* bfd_scan_arch:                         Architectures.      (line  392)
+* bfd_scan_vma:                          BFD front end.      (line  423)
+* bfd_seach_for_target:                  bfd_target.         (line  459)
+* 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  433)
+* bfd_set_archive_head:                  Archives.           (line   69)
+* bfd_set_default_target:                bfd_target.         (line  424)
+* bfd_set_error:                         BFD front end.      (line  235)
+* bfd_set_error_handler:                 BFD front end.      (line  275)
+* bfd_set_error_program_name:            BFD front end.      (line  284)
+* bfd_set_file_flags:                    BFD front end.      (line  343)
+* bfd_set_format:                        Formats.            (line   68)
+* bfd_set_gp_size:                       BFD front end.      (line  413)
+* bfd_set_private_flags:                 BFD front end.      (line  490)
+* bfd_set_reloc:                         BFD front end.      (line  333)
+* 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  392)
+* bfd_set_symtab:                        symbol handling functions.
+                                                             (line   60)
+* bfd_symbol_info:                       symbol handling functions.
+                                                             (line  130)
+* bfd_target_list:                       bfd_target.         (line  450)
+* 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  505)
+* separate_debug_file_exists:            Opening and Closing.
+                                                             (line  263)
+* struct bfd_iovec:                      BFD front end.      (line  657)
+* 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)
+
+
+
+Tag Table:
+Node: Top724
+Node: Overview1056
+Node: History2107
+Node: How It Works3053
+Node: What BFD Version 2 Can Do4595
+Node: BFD information loss5910
+Node: Canonical format8442
+Node: BFD front end12814
+Node: Memory Usage38428
+Node: Initialization39656
+Node: Sections40115
+Node: Section Input40598
+Node: Section Output41963
+Node: typedef asection44449
+Node: section prototypes69406
+Node: Symbols79086
+Node: Reading Symbols80681
+Node: Writing Symbols81788
+Node: Mini Symbols83497
+Node: typedef asymbol84471
+Node: symbol handling functions89389
+Node: Archives94731
+Node: Formats98457
+Node: Relocations101405
+Node: typedef arelent102132
+Node: howto manager117943
+Node: Core Files180223
+Node: Targets182040
+Node: bfd_target184010
+Node: Architectures204090
+Node: Opening and Closing225522
+Node: Internal236524
+Node: File Caching242857
+Node: Linker Functions244771
+Node: Creating a Linker Hash Table246444
+Node: Adding Symbols to the Hash Table248182
+Node: Differing file formats249082
+Node: Adding symbols from an object file250830
+Node: Adding symbols from an archive252981
+Node: Performing the Final Link255395
+Node: Information provided by the linker256637
+Node: Relocating the section contents257791
+Node: Writing the symbol table259542
+Node: Hash Tables262535
+Node: Creating and Freeing a Hash Table263733
+Node: Looking Up or Entering a String264983
+Node: Traversing a Hash Table266236
+Node: Deriving a New Hash Table Type267025
+Node: Define the Derived Structures268091
+Node: Write the Derived Creation Routine269172
+Node: Write Other Derived Routines271796
+Node: BFD back ends273111
+Node: What to Put Where273381
+Node: aout273519
+Node: coff279837
+Node: elf304314
+Node: mmo305177
+Node: File layout306105
+Node: Symbol-table311752
+Node: mmo section mapping315521
+Node: GNU Free Documentation License319173
+Node: Index338898
+
+End Tag Table

Modified: branches/binutils/package/bfd/doc/bfd.texinfo
===================================================================
--- branches/binutils/package/bfd/doc/bfd.texinfo	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/bfd.texinfo	2006-12-31 16:27:59 UTC (rev 19)
@@ -4,20 +4,6 @@
 @c 2001, 2002, 2003
 @c Free Software Foundation, Inc.
 @c 
- at tex
-% NOTE LOCAL KLUGE TO AVOID TOO MUCH WHITESPACE
-\global\long\def\example{%
-\begingroup
-\let\aboveenvbreak=\par
-\let\afterenvbreak=\par
-\parskip=0pt
-\lisp}
-\global\long\def\Eexample{%
-\Elisp
-\endgroup
-\vskip -\parskip% to cancel out effect of following \par
-}
- at end tex
 @synindex fn cp
 
 @ifinfo

Added: branches/binutils/package/bfd/doc/bfdio.texi
===================================================================
--- branches/binutils/package/bfd/doc/bfdio.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/bfdio.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,72 @@
+ at findex struct bfd_iovec
+ at subsubsection @code{struct bfd_iovec}
+ at strong{Description}@*
+The @code{struct bfd_iovec} contains the internal file I/O class.
+Each @code{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).
+ at example
+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 @code{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 @code{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  @code{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);
+@};
+ at end example
+
+ at findex bfd_get_mtime
+ at subsubsection @code{bfd_get_mtime}
+ at strong{Synopsis}
+ at example
+long bfd_get_mtime (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the file modification time (as read from the file system, or
+from the archive header for archive members).
+
+ at findex bfd_get_size
+ at subsubsection @code{bfd_get_size}
+ at strong{Synopsis}
+ at example
+long bfd_get_size (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the file size (as read from file system) for the file
+associated with BFD @var{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 @code{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?".
+

Added: branches/binutils/package/bfd/doc/bfdt.texi
===================================================================
--- branches/binutils/package/bfd/doc/bfdt.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/bfdt.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,721 @@
+ at section @code{typedef bfd}
+A BFD has type @code{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 @code{bfd}.  It
+contains the major data about the file and pointers
+to the rest of the data.
+
+
+ at example
+
+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;
+@};
+
+ at end example
+ at section Error reporting
+Most BFD functions return nonzero on success (check their
+individual documentation for precise semantics).  On an error,
+they call @code{bfd_set_error} to set an error condition that callers
+can check by calling @code{bfd_get_error}.
+If that returns @code{bfd_error_system_call}, then check
+ at code{errno}.
+
+The easiest way to report a BFD error to the user is to
+use @code{bfd_perror}.
+
+ at subsection Type @code{bfd_error_type}
+The values returned by @code{bfd_get_error} are defined by the
+enumerated type @code{bfd_error_type}.
+
+
+ at example
+
+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_invalid_error_code
+@}
+bfd_error_type;
+
+ at end example
+ at findex bfd_get_error
+ at subsubsection @code{bfd_get_error}
+ at strong{Synopsis}
+ at example
+bfd_error_type bfd_get_error (void);
+ at end example
+ at strong{Description}@*
+Return the current BFD error condition.
+
+ at findex bfd_set_error
+ at subsubsection @code{bfd_set_error}
+ at strong{Synopsis}
+ at example
+void bfd_set_error (bfd_error_type error_tag);
+ at end example
+ at strong{Description}@*
+Set the BFD error condition to be @var{error_tag}.
+
+ at findex bfd_errmsg
+ at subsubsection @code{bfd_errmsg}
+ at strong{Synopsis}
+ at example
+const char *bfd_errmsg (bfd_error_type error_tag);
+ at end example
+ at strong{Description}@*
+Return a string describing the error @var{error_tag}, or
+the system error if @var{error_tag} is @code{bfd_error_system_call}.
+
+ at findex bfd_perror
+ at subsubsection @code{bfd_perror}
+ at strong{Synopsis}
+ at example
+void bfd_perror (const char *message);
+ at end example
+ at strong{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 @var{message}
+is non-NULL and non-empty, the error string printed is preceded
+by @var{message}, a colon, and a space.  It is followed by a newline.
+
+ at subsection 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.
+
+
+ at example
+
+typedef void (*bfd_error_handler_type) (const char *, ...);
+
+ at end example
+ at findex bfd_set_error_handler
+ at subsubsection @code{bfd_set_error_handler}
+ at strong{Synopsis}
+ at example
+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
+ at end example
+ at strong{Description}@*
+Set the BFD error handler function.  Returns the previous
+function.
+
+ at findex bfd_set_error_program_name
+ at subsubsection @code{bfd_set_error_program_name}
+ at strong{Synopsis}
+ at example
+void bfd_set_error_program_name (const char *);
+ at end example
+ at strong{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.
+
+ at findex bfd_get_error_handler
+ at subsubsection @code{bfd_get_error_handler}
+ at strong{Synopsis}
+ at example
+bfd_error_handler_type bfd_get_error_handler (void);
+ at end example
+ at strong{Description}@*
+Return the BFD error handler function.
+
+ at section Miscellaneous
+
+
+ at subsection Miscellaneous functions
+
+
+ at findex bfd_get_reloc_upper_bound
+ at subsubsection @code{bfd_get_reloc_upper_bound}
+ at strong{Synopsis}
+ at example
+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
+ at end example
+ at strong{Description}@*
+Return the number of bytes required to store the
+relocation information associated with section @var{sect}
+attached to bfd @var{abfd}.  If an error occurs, return -1.
+
+ at findex bfd_canonicalize_reloc
+ at subsubsection @code{bfd_canonicalize_reloc}
+ at strong{Synopsis}
+ at example
+long bfd_canonicalize_reloc
+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
+ at end example
+ at strong{Description}@*
+Call the back end associated with the open BFD
+ at var{abfd} and translate the external form of the relocation
+information attached to @var{sec} into the internal canonical
+form.  Place the table into memory at @var{loc}, which has
+been preallocated, usually by a call to
+ at code{bfd_get_reloc_upper_bound}.  Returns the number of relocs, or
+-1 on error.
+
+The @var{syms} table is also needed for horrible internal magic
+reasons.
+
+ at findex bfd_set_reloc
+ at subsubsection @code{bfd_set_reloc}
+ at strong{Synopsis}
+ at example
+void bfd_set_reloc
+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
+ at end example
+ at strong{Description}@*
+Set the relocation pointer and count within
+section @var{sec} to the values @var{rel} and @var{count}.
+The argument @var{abfd} is ignored.
+
+ at findex bfd_set_file_flags
+ at subsubsection @code{bfd_set_file_flags}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
+ at end example
+ at strong{Description}@*
+Set the flag word in the BFD @var{abfd} to the value @var{flags}.
+
+Possible errors are:
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_wrong_format} - The target bfd was not of object format.
+ at item
+ at code{bfd_error_invalid_operation} - The target bfd was open for reading.
+ at item
+ at code{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 @code{D_PAGED} bit
+on a BFD format which does not support demand paging.
+ at end itemize
+
+ at findex bfd_get_arch_size
+ at subsubsection @code{bfd_get_arch_size}
+ at strong{Synopsis}
+ at example
+int bfd_get_arch_size (bfd *abfd);
+ at end example
+ at strong{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.
+
+ at strong{Returns}@*
+Returns the arch size in bits if known, @code{-1} otherwise.
+
+ at findex bfd_get_sign_extend_vma
+ at subsubsection @code{bfd_get_sign_extend_vma}
+ at strong{Synopsis}
+ at example
+int bfd_get_sign_extend_vma (bfd *abfd);
+ at end example
+ at strong{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.
+
+ at strong{Returns}@*
+Returns @code{1} if the target architecture is known to sign
+extend addresses, @code{0} if the target architecture is known to
+not sign extend addresses, and @code{-1} otherwise.
+
+ at findex bfd_set_start_address
+ at subsubsection @code{bfd_set_start_address}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
+ at end example
+ at strong{Description}@*
+Make @var{vma} the entry point of output BFD @var{abfd}.
+
+ at strong{Returns}@*
+Returns @code{TRUE} on success, @code{FALSE} otherwise.
+
+ at findex bfd_get_gp_size
+ at subsubsection @code{bfd_get_gp_size}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_get_gp_size (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return the maximum size of objects to be optimized using the GP
+register under MIPS ECOFF.  This is typically set by the @code{-G}
+argument to the compiler, assembler or linker.
+
+ at findex bfd_set_gp_size
+ at subsubsection @code{bfd_set_gp_size}
+ at strong{Synopsis}
+ at example
+void bfd_set_gp_size (bfd *abfd, unsigned int i);
+ at end example
+ at strong{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 @code{-G} argument to the compiler, assembler or linker.
+
+ at findex bfd_scan_vma
+ at subsubsection @code{bfd_scan_vma}
+ at strong{Synopsis}
+ at example
+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
+ at end example
+ at strong{Description}@*
+Convert, like @code{strtoul}, a numerical expression
+ at var{string} into a @code{bfd_vma} integer, and return that integer.
+(Though without as many bells and whistles as @code{strtoul}.)
+The expression is assumed to be unsigned (i.e., positive).
+If given a @var{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 @code{bfd_vma} value is
+returned.
+
+ at findex bfd_copy_private_header_data
+ at subsubsection @code{bfd_copy_private_header_data}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+ at end example
+ at strong{Description}@*
+Copy private BFD header information from the BFD @var{ibfd} to the
+the BFD @var{obfd}.  This copies information that may require
+sections to exist, but does not require symbol tables.  Return
+ at code{true} on success, @code{false} on error.
+Possible error returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_memory} -
+Not enough memory exists to create private data for @var{obfd}.
+ at end itemize
+ at example
+#define bfd_copy_private_header_data(ibfd, obfd) \
+     BFD_SEND (obfd, _bfd_copy_private_header_data, \
+               (ibfd, obfd))
+ at end example
+
+ at findex bfd_copy_private_bfd_data
+ at subsubsection @code{bfd_copy_private_bfd_data}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+ at end example
+ at strong{Description}@*
+Copy private BFD information from the BFD @var{ibfd} to the
+the BFD @var{obfd}.  Return @code{TRUE} on success, @code{FALSE} on error.
+Possible error returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_memory} -
+Not enough memory exists to create private data for @var{obfd}.
+ at end itemize
+ at example
+#define bfd_copy_private_bfd_data(ibfd, obfd) \
+     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+               (ibfd, obfd))
+ at end example
+
+ at findex bfd_merge_private_bfd_data
+ at subsubsection @code{bfd_merge_private_bfd_data}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+ at end example
+ at strong{Description}@*
+Merge private BFD information from the BFD @var{ibfd} to the
+the output file BFD @var{obfd} when linking.  Return @code{TRUE}
+on success, @code{FALSE} on error.  Possible error returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_memory} -
+Not enough memory exists to create private data for @var{obfd}.
+ at end itemize
+ at example
+#define bfd_merge_private_bfd_data(ibfd, obfd) \
+     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
+               (ibfd, obfd))
+ at end example
+
+ at findex bfd_set_private_flags
+ at subsubsection @code{bfd_set_private_flags}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
+ at end example
+ at strong{Description}@*
+Set private BFD flag information in the BFD @var{abfd}.
+Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
+returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_memory} -
+Not enough memory exists to create private data for @var{obfd}.
+ at end itemize
+ at example
+#define bfd_set_private_flags(abfd, flags) \
+     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+ at end example
+
+ at findex Other functions
+ at subsubsection @code{Other functions}
+ at strong{Description}@*
+The following functions exist but have not yet been documented.
+ at example
+#define bfd_sizeof_headers(abfd, reloc) \
+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
+
+#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 **);
+
+ at end example
+
+ at findex bfd_alt_mach_code
+ at subsubsection @code{bfd_alt_mach_code}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
+ at end example
+ at strong{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.
+
+
+ at example
+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;
+@};
+
+ at end example
+ at findex bfd_preserve_save
+ at subsubsection @code{bfd_preserve_save}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
+ at end example
+ at strong{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.
+
+ at findex bfd_preserve_restore
+ at subsubsection @code{bfd_preserve_restore}
+ at strong{Synopsis}
+ at example
+void bfd_preserve_restore (bfd *, struct bfd_preserve *);
+ at end example
+ at strong{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.
+
+ at findex bfd_preserve_finish
+ at subsubsection @code{bfd_preserve_finish}
+ at strong{Synopsis}
+ at example
+void bfd_preserve_finish (bfd *, struct bfd_preserve *);
+ at end example
+ at strong{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.
+

Added: branches/binutils/package/bfd/doc/bfdwin.texi
===================================================================
--- branches/binutils/package/bfd/doc/bfdwin.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/bfdwin.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2 @@
+ at findex 
+ at subsubsection @code{}

Added: branches/binutils/package/bfd/doc/cache.texi
===================================================================
--- branches/binutils/package/bfd/doc/cache.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/cache.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,65 @@
+ at section 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
+ at code{cache.c} maintains a least recently used list of
+ at code{BFD_CACHE_MAX_OPEN} files, and exports the name
+ at code{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.
+
+ at subsection Caching functions
+
+
+ at findex bfd_cache_init
+ at subsubsection @code{bfd_cache_init}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_cache_init (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Add a newly opened BFD to the cache.
+
+ at findex bfd_cache_close
+ at subsubsection @code{bfd_cache_close}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_cache_close (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Remove the BFD @var{abfd} from the cache. If the attached file is open,
+then close it too.
+
+ at strong{Returns}@*
+ at code{FALSE} is returned if closing the file fails, @code{TRUE} is
+returned if all is well.
+
+ at findex bfd_cache_close_all
+ at subsubsection @code{bfd_cache_close_all}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_cache_close_all (void);
+ at end example
+ at strong{Description}@*
+Remove all BFDs from the cache. If the attached file is open,
+then close it too.
+
+ at strong{Returns}@*
+ at code{FALSE} is returned if closing one of the file fails, @code{TRUE} is
+returned if all is well.
+
+ at findex bfd_open_file
+ at subsubsection @code{bfd_open_file}
+ at strong{Synopsis}
+ at example
+FILE* bfd_open_file (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Call the OS to open a file for @var{abfd}.  Return the @code{FILE *}
+(possibly @code{NULL}) that results from this operation.  Set up the
+BFD so that future accesses know the file is open. If the @code{FILE *}
+returned is @code{NULL}, then it won't have been put in the
+cache, so it won't have to be removed from it.
+

Added: branches/binutils/package/bfd/doc/coffcode.texi
===================================================================
--- branches/binutils/package/bfd/doc/coffcode.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/coffcode.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,608 @@
+ at section 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
+ at file{coff-m88k.c}. This file @code{#include}s
+ at file{coff/m88k.h} which defines the external structure of the
+coff format for the 88k, and @file{coff/internal.h} which
+defines the internal structure. @file{coff-m88k.c} also
+defines the relocations used by the 88k format
+ at xref{Relocations}.
+
+The Intel i960 processor version of coff is implemented in
+ at file{coff-i960.c}. This file has the same structure as
+ at file{coff-m88k.c}, except that it includes @file{coff/i960.h}
+rather than @file{coff-m88k.h}.
+
+ at subsection 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 @file{i386coff.c} to @file{foocoff.c}, copy
+ at file{../include/coff/i386.h} to @file{../include/coff/foo.h},
+and add the lines to @file{targets.c} and @file{Makefile.in}
+so that your new back end is used. Alter the shapes of the
+structures in @file{../include/coff/foo.h} so that they match
+what you need. You will probably also have to add
+ at code{#ifdef}s to the code in @file{coff/internal.h} and
+ at file{coffcode.h} if your version of coff is too wild.
+
+You can verify that your new BFD backend works quite simply by
+building @file{objdump} from the @file{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 @code{att-dump} or just
+ at code{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.
+
+ at subsection How the coff backend works
+
+
+ at subsubsection 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 @file{coffgen.c}.  These routines
+work for any Coff target.  They use some hooks into the target
+specific code; the hooks are in a @code{bfd_coff_backend_data}
+structure, one of which exists for each target.
+
+The essentially similar target-specific routines are in
+ at file{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 @file{coffcode.h}.
+
+Some of the Coff targets then also have additional routines in
+the target source file itself.
+
+For example, @file{coff-i960.c} includes
+ at file{coff/internal.h} and @file{coff/i960.h}.  It then
+defines a few constants, such as @code{I960}, and includes
+ at file{coffcode.h}.  Since the i960 has complex relocation
+types, @file{coff-i960.c} also includes some code to
+manipulate the i960 relocs.  This code is not in
+ at file{coffcode.h} because it would not be used by any other
+target.
+
+ at subsubsection 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
+ at file{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
+ at code{bfd_swap}_ at i{thing}_ at i{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
+ at file{coffcode.h}. E.g., the size of line number entry in coff is
+sometimes 16 bits, and sometimes 32 bits. @code{#define}ing
+ at code{PUT_LNSZ_LNNO} and @code{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 @code{#defines}.
+Three of the bit twiddling routines are exported to
+ at code{gdb}; @code{coff_swap_aux_in}, @code{coff_swap_sym_in}
+and @code{coff_swap_lineno_in}. @code{GDB} reads the symbol
+table on its own, but uses BFD to fix things up.  More of the
+bit twiddlers are exported for @code{gas};
+ at code{coff_swap_aux_out}, @code{coff_swap_sym_out},
+ at code{coff_swap_lineno_out}, @code{coff_swap_reloc_out},
+ at code{coff_swap_filehdr_out}, @code{coff_swap_aouthdr_out},
+ at code{coff_swap_scnhdr_out}. @code{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 @code{gas}, which makes one avenue to disaster disappear.
+
+ at subsubsection 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
+ at code{bfd_canonicalize_symtab}), a request gets through to
+ at code{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
+(@code{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
+(@code{".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
+ at code{sclass} field) about the various flags to set in the
+ at code{asymbol}.  @xref{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.
+
+ at subsubsection Symbol writing
+Writing a symbol to a coff file which didn't come from a coff
+file will lose any debugging information. The @code{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
+(@code{C_FILE}) to point to the next file place holder in the
+list. It also marks each @code{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
+ at code{output_section} field of the @code{asymbol}'s
+ at code{asection} @xref{Sections}.
+
+ at itemize @bullet
+
+ at item
+ at code{coff_mangle_symbols}
+ at end itemize
+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.
+
+ at itemize @bullet
+
+ at item
+ at code{coff_write_symbols}
+ at end itemize
+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.
+
+ at findex coff_symbol_type
+ at subsubsection @code{coff_symbol_type}
+ at strong{Description}@*
+The hidden information for an @code{asymbol} is described in a
+ at code{combined_entry_type}:
+
+
+ at example
+
+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;
+ at end example
+ at findex bfd_coff_backend_data
+ at subsubsection @code{bfd_coff_backend_data}
+
+ at example
+/* 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
+@};
+
+ at end example
+Special entry points for gdb to swap in coff symbol table parts:
+ at example
+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))
+
+ at end example
+ at subsubsection Writing relocations
+To write relocations, the back end steps though the
+canonical relocation table and create an
+ at code{internal_reloc}. The symbol index to use is removed from
+the @code{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 @code{internal_reloc} is
+swapped into the shape of an @code{external_reloc} and written
+out to disk.
+
+ at subsubsection 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 ?
+
+ at subsubsection Reading relocations
+Coff relocations are easily transformed into the internal BFD form
+(@code{arelent}).
+
+Reading a coff relocation table is done in the following stages:
+
+ at itemize @bullet
+
+ at item
+Read the entire coff relocation table into memory.
+
+ at item
+Process each relocation in turn; first swap it from the
+external to the internal form.
+
+ at item
+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
+ at code{bfd_canonicalize_symtab}. The back end will call that
+routine and save the result if a canonicalization hasn't been done.
+
+ at item
+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 @code{r_type} to directly produce an index
+into a howto table vector; the 88k subtracts a number from the
+ at code{r_type} field and creates an addend field.
+ at end itemize
+

Added: branches/binutils/package/bfd/doc/core.texi
===================================================================
--- branches/binutils/package/bfd/doc/core.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/core.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,60 @@
+ at section Core files
+
+
+ at subsection Core file functions
+
+
+ at strong{Description}@*
+These are functions pertaining to core files.
+
+ at findex bfd_core_file_failing_command
+ at subsubsection @code{bfd_core_file_failing_command}
+ at strong{Synopsis}
+ at example
+const char *bfd_core_file_failing_command (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return a read-only string explaining which program was running
+when it failed and produced the core file @var{abfd}.
+
+ at findex bfd_core_file_failing_signal
+ at subsubsection @code{bfd_core_file_failing_signal}
+ at strong{Synopsis}
+ at example
+int bfd_core_file_failing_signal (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Returns the signal number which caused the core dump which
+generated the file the BFD @var{abfd} is attached to.
+
+ at findex core_file_matches_executable_p
+ at subsubsection @code{core_file_matches_executable_p}
+ at strong{Synopsis}
+ at example
+bfd_boolean core_file_matches_executable_p
+   (bfd *core_bfd, bfd *exec_bfd);
+ at end example
+ at strong{Description}@*
+Return @code{TRUE} if the core file attached to @var{core_bfd}
+was generated by a run of the executable file attached to
+ at var{exec_bfd}, @code{FALSE} otherwise.
+
+ at findex generic_core_file_matches_executable_p
+ at subsubsection @code{generic_core_file_matches_executable_p}
+ at strong{Synopsis}
+ at example
+bfd_boolean generic_core_file_matches_executable_p
+   (bfd *core_bfd, bfd *exec_bfd);
+ at end example
+ at strong{Description}@*
+Return TRUE if the core file attached to @var{core_bfd}
+was generated by a run of the executable file attached
+to @var{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.
+

Added: branches/binutils/package/bfd/doc/elf.texi
===================================================================
--- branches/binutils/package/bfd/doc/elf.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/elf.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,22 @@
+ at section 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.
+
+ at findex bfd_elf_find_section
+ at subsubsection @code{bfd_elf_find_section}
+ at strong{Synopsis}
+ at example
+struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
+ at end example
+ at strong{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.
+

Added: branches/binutils/package/bfd/doc/format.texi
===================================================================
--- branches/binutils/package/bfd/doc/format.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/format.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,112 @@
+ at section File formats
+A format is a BFD concept of high level file contents type. The
+formats supported by BFD are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_object}
+ at end itemize
+The BFD may contain data, symbols, relocations and debug info.
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_archive}
+ at end itemize
+The BFD contains other BFDs and an optional index.
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_core}
+ at end itemize
+The BFD contains the result of an executable core dump.
+
+ at subsection File format functions
+
+
+ at findex bfd_check_format
+ at subsubsection @code{bfd_check_format}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
+ at end example
+ at strong{Description}@*
+Verify if the file attached to the BFD @var{abfd} is compatible
+with the format @var{format} (i.e., one of @code{bfd_object},
+ at code{bfd_archive} or @code{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
+ at code{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 @code{TRUE} on success, otherwise @code{FALSE}
+with one of the following error codes:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_invalid_operation} -
+if @code{format} is not one of @code{bfd_object}, @code{bfd_archive} or
+ at code{bfd_core}.
+
+ at item
+ at code{bfd_error_system_call} -
+if an error occured during a read - even some file mismatches
+can cause bfd_error_system_calls.
+
+ at item
+ at code{file_not_recognised} -
+none of the backends recognised the file format.
+
+ at item
+ at code{bfd_error_file_ambiguously_recognized} -
+more than one backend recognised the file format.
+ at end itemize
+
+ at findex bfd_check_format_matches
+ at subsubsection @code{bfd_check_format_matches}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_check_format_matches
+   (bfd *abfd, bfd_format format, char ***matching);
+ at end example
+ at strong{Description}@*
+Like @code{bfd_check_format}, except when it returns FALSE with
+ at code{bfd_errno} set to @code{bfd_error_file_ambiguously_recognized}.  In that
+case, if @var{matching} is not NULL, it will be filled in with
+a NULL-terminated list of the names of the formats that matched,
+allocated with @code{malloc}.
+Then the user may choose a format and try again.
+
+When done with the list that @var{matching} points to, the caller
+should free it.
+
+ at findex bfd_set_format
+ at subsubsection @code{bfd_set_format}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
+ at end example
+ at strong{Description}@*
+This function sets the file format of the BFD @var{abfd} to the
+format @var{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.
+
+ at findex bfd_format_string
+ at subsubsection @code{bfd_format_string}
+ at strong{Synopsis}
+ at example
+const char *bfd_format_string (bfd_format format);
+ at end example
+ at strong{Description}@*
+Return a pointer to a const string
+ at code{invalid}, @code{object}, @code{archive}, @code{core}, or @code{unknown},
+depending upon the value of @var{format}.
+

Added: branches/binutils/package/bfd/doc/hash.texi
===================================================================
--- branches/binutils/package/bfd/doc/hash.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/hash.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,247 @@
+ at section Hash Tables
+ at cindex 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 @code{hash.c}.
+
+ at menu
+* Creating and Freeing a Hash Table::
+* Looking Up or Entering a String::
+* Traversing a Hash Table::
+* Deriving a New Hash Table Type::
+ at end menu
+
+ at node Creating and Freeing a Hash Table, Looking Up or Entering a String, Hash Tables, Hash Tables
+ at subsection Creating and freeing a hash table
+ at findex bfd_hash_table_init
+ at findex bfd_hash_table_init_n
+To create a hash table, create an instance of a @code{struct
+bfd_hash_table} (defined in @code{bfd.h}) and call
+ at code{bfd_hash_table_init} (if you know approximately how many
+entries you will need, the function @code{bfd_hash_table_init_n},
+which takes a @var{size} argument, may be used).
+ at code{bfd_hash_table_init} returns @code{FALSE} if some sort of
+error occurs.
+
+ at findex bfd_hash_newfunc
+The function @code{bfd_hash_table_init} take as an argument a
+function to use to create new entries.  For a basic hash
+table, use the function @code{bfd_hash_newfunc}.  @xref{Deriving
+a New Hash Table Type}, for why you would want to use a
+different value for this argument.
+
+ at findex bfd_hash_allocate
+ at code{bfd_hash_table_init} will create an objalloc which will be
+used to allocate new entries.  You may allocate memory on this
+objalloc using @code{bfd_hash_allocate}.
+
+ at findex bfd_hash_table_free
+Use @code{bfd_hash_table_free} to free up all the memory that has
+been allocated for a hash table.  This will not free up the
+ at code{struct bfd_hash_table} itself, which you must provide.
+
+ at findex bfd_hash_set_default_size
+Use @code{bfd_hash_set_default_size} to set the default size of
+hash table to use.
+
+ at node Looking Up or Entering a String, Traversing a Hash Table, Creating and Freeing a Hash Table, Hash Tables
+ at subsection Looking up or entering a string
+ at findex bfd_hash_lookup
+The function @code{bfd_hash_lookup} is used both to look up a
+string in the hash table and to create a new entry.
+
+If the @var{create} argument is @code{FALSE}, @code{bfd_hash_lookup}
+will look up a string.  If the string is found, it will
+returns a pointer to a @code{struct bfd_hash_entry}.  If the
+string is not found in the table @code{bfd_hash_lookup} will
+return @code{NULL}.  You should not modify any of the fields in
+the returns @code{struct bfd_hash_entry}.
+
+If the @var{create} argument is @code{TRUE}, the string will be
+entered into the hash table if it is not already there.
+Either way a pointer to a @code{struct bfd_hash_entry} will be
+returned, either to the existing structure or to a newly
+created one.  In this case, a @code{NULL} return means that an
+error occurred.
+
+If the @var{create} argument is @code{TRUE}, and a new entry is
+created, the @var{copy} argument is used to decide whether to
+copy the string onto the hash table objalloc or not.  If
+ at var{copy} is passed as @code{FALSE}, you must be careful not to
+deallocate or modify the string as long as the hash table
+exists.
+
+ at node Traversing a Hash Table, Deriving a New Hash Table Type, Looking Up or Entering a String, Hash Tables
+ at subsection Traversing a hash table
+ at findex bfd_hash_traverse
+The function @code{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.
+
+ at code{bfd_hash_traverse} takes as arguments a function and a
+generic @code{void *} pointer.  The function is called with a
+hash table entry (a @code{struct bfd_hash_entry *}) and the
+generic pointer passed to @code{bfd_hash_traverse}.  The function
+must return a @code{boolean} value, which indicates whether to
+continue traversing the hash table.  If the function returns
+ at code{FALSE}, @code{bfd_hash_traverse} will stop the traversal and
+return immediately.
+
+ at node Deriving a New Hash Table Type, , Traversing a Hash Table, Hash Tables
+ at subsection 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 @code{bfdlink.h}.  The
+functions are in @code{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.
+
+ at menu
+* Define the Derived Structures::
+* Write the Derived Creation Routine::
+* Write Other Derived Routines::
+ at end menu
+
+ at node Define the Derived Structures, Write the Derived Creation Routine, Deriving a New Hash Table Type, Deriving a New Hash Table Type
+ at subsubsection 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 @code{struct bfd_hash_entry}, which is defined in
+ at code{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 @code{struct bfd_hash_table}.
+
+For example, the linker hash table defines @code{struct
+bfd_link_hash_entry} (in @code{bfdlink.h}).  The first field,
+ at code{root}, is of type @code{struct bfd_hash_entry}.  Similarly,
+the first field in @code{struct bfd_link_hash_table}, @code{table},
+is of type @code{struct bfd_hash_table}.
+
+ at node Write the Derived Creation Routine, Write Other Derived Routines, Define the Derived Structures, Deriving a New Hash Table Type
+ at subsubsection 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 @code{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 @code{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.
+ at var{function_name} is the name of the routine.
+ at var{entry_type} is the type of an entry in the hash table you
+are creating.  @var{base_newfunc} is the name of the creation
+routine of the hash table type your hash table is derived
+from.
+
+
+ at example
+struct bfd_hash_entry *
+ at var{function_name} (struct bfd_hash_entry *entry,
+                     struct bfd_hash_table *table,
+                     const char *string)
+@{
+  struct @var{entry_type} *ret = (@var{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 = ((@var{entry_type} *)
+        @var{base_newfunc} ((struct bfd_hash_entry *) ret, table, string));
+
+ /* Initialize the local fields here.  */
+
+  return (struct bfd_hash_entry *) ret;
+@}
+ at end example
+ at strong{Description}@*
+The creation routine for the linker hash table, which is in
+ at code{linker.c}, looks just like this example.
+ at var{function_name} is @code{_bfd_link_hash_newfunc}.
+ at var{entry_type} is @code{struct bfd_link_hash_entry}.
+ at var{base_newfunc} is @code{bfd_hash_newfunc}, the creation
+routine for a basic hash table.
+
+ at code{_bfd_link_hash_newfunc} also initializes the local fields
+in a linker hash table entry: @code{type}, @code{written} and
+ at code{next}.
+
+ at node Write Other Derived Routines, , Write the Derived Creation Routine, Deriving a New Hash Table Type
+ at subsubsection 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 @code{_bfd_link_hash_table_init} in @code{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 @code{bfd_link_hash_lookup} in
+ at code{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
+ at code{bfd_link_hash_traverse} in @code{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 @code{aout_link_hash_lookup} and
+ at code{aout_link_hash_traverse} in aoutx.h.
+

Added: branches/binutils/package/bfd/doc/init.texi
===================================================================
--- branches/binutils/package/bfd/doc/init.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/init.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,16 @@
+ at section Initialization
+
+
+ at subsection Initialization functions
+These are the functions that handle initializing a BFD.
+
+ at findex bfd_init
+ at subsubsection @code{bfd_init}
+ at strong{Synopsis}
+ at example
+void bfd_init (void);
+ at end example
+ at strong{Description}@*
+This routine must be called before any other BFD function to
+initialize magical internal data structures.
+

Added: branches/binutils/package/bfd/doc/libbfd.texi
===================================================================
--- branches/binutils/package/bfd/doc/libbfd.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/libbfd.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,179 @@
+ at section Implementation details
+
+
+ at subsection Internal functions
+
+
+ at strong{Description}@*
+These routines are used within BFD.
+They are not intended for export, but are documented here for
+completeness.
+
+ at findex bfd_write_bigendian_4byte_int
+ at subsubsection @code{bfd_write_bigendian_4byte_int}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+ at end example
+ at strong{Description}@*
+Write a 4 byte integer @var{i} to the output BFD @var{abfd}, in big
+endian order regardless of what else is going on.  This is useful in
+archives.
+
+ at findex bfd_put_size
+ at subsubsection @code{bfd_put_size}
+ at findex bfd_get_size
+ at subsubsection @code{bfd_get_size}
+ at strong{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, @file{libaout.h} defines @code{GET_WORD}
+to either @code{bfd_get_32} or @code{bfd_get_64}.
+
+In the put routines, @var{val} must be a @code{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 @code{lint}
+or @code{gcc -Wall} from detecting sins such as passing a pointer.
+To detect calling these with less than a @code{bfd_vma}, use
+ at code{gcc -Wconversion} on a host with 64 bit @code{bfd_vma}'s.
+ at example
+
+/* 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))
+
+ at end example
+
+ at findex bfd_h_put_size
+ at subsubsection @code{bfd_h_put_size}
+ at strong{Description}@*
+These macros have the same function as their @code{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.
+ at example
+
+/* 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
+
+
+ at end example
+
+ at findex bfd_log2
+ at subsubsection @code{bfd_log2}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_log2 (bfd_vma x);
+ at end example
+ at strong{Description}@*
+Return the log base 2 of the value supplied, rounded up.  E.g., an
+ at var{x} of 1025 returns 11.  A @var{x} of 0 returns 0.
+

Added: branches/binutils/package/bfd/doc/linker.texi
===================================================================
--- branches/binutils/package/bfd/doc/linker.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/linker.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,380 @@
+ at section Linker Functions
+ at cindex Linker
+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 @code{struct bfd_link_info} structure (defined in
+ at code{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 @code{linker.c}, and use the
+header file @code{genlink.h}.  As of this writing, the only back
+ends which have implemented versions of these routines are
+a.out (in @code{aoutx.h}) and ECOFF (in @code{ecoff.c}).  The a.out
+routines are used as examples throughout this section.
+
+ at menu
+* Creating a Linker Hash Table::
+* Adding Symbols to the Hash Table::
+* Performing the Final Link::
+ at end menu
+
+ at node Creating a Linker Hash Table, Adding Symbols to the Hash Table, Linker Functions, Linker Functions
+ at subsection Creating a linker hash table
+ at cindex _bfd_link_hash_table_create in target vector
+ at cindex target vector (_bfd_link_hash_table_create)
+The linker routines must create a hash table, which must be
+derived from @code{struct bfd_link_hash_table} described in
+ at code{bfdlink.c}.  @xref{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 @code{_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 @code{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 @code{struct bfd_link_hash_table}.  The a.out linker
+hash table is created by the function
+ at code{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.
+
+ at node Adding Symbols to the Hash Table, Performing the Final Link, Creating a Linker Hash Table, Linker Functions
+ at subsection Adding symbols to the hash table
+ at cindex _bfd_link_add_symbols in target vector
+ at cindex target vector (_bfd_link_add_symbols)
+The linker proper will call the @code{_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
+ at code{NAME(aout,link_add_symbols)}.
+
+ at menu
+* Differing file formats::
+* Adding symbols from an object file::
+* Adding symbols from an archive::
+ at end menu
+
+ at node Differing file formats, Adding symbols from an object file, Adding Symbols to the Hash Table, Adding Symbols to the Hash Table
+ at subsubsection 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
+ at code{_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
+ at code{_bfd_link_hash_table_create} vector.  All the
+ at code{_bfd_link_add_symbols} function can assume about the hash
+table is that it is derived from @code{struct
+bfd_link_hash_table}.
+
+Sometimes the @code{_bfd_link_add_symbols} function must store
+some information in the hash table entry to be used by the
+ at code{_bfd_final_link} function.  In such a case the @code{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 @code{_bfd_final_link} routine must be prepared to handle a
+hash entry without any extra information added by the
+ at code{_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 @code{ecoff_link_add_externals} for an example of how to
+check the @code{creator} field before saving information (in this
+case, the ECOFF external symbol debugging information) in a
+hash table entry.
+
+ at node Adding symbols from an object file, Adding symbols from an archive, Differing file formats, Adding Symbols to the Hash Table
+ at subsubsection Adding symbols from an object file
+When the @code{_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
+ at code{_bfd_generic_link_add_one_symbol}.  The
+ at code{_bfd_link_add_symbols} routine is responsible for reading
+all the symbols from the object file and passing the correct
+information to @code{_bfd_generic_link_add_one_symbol}.
+
+The @code{_bfd_link_add_symbols} routine should not use
+ at code{bfd_canonicalize_symtab} to read the symbols.  The point of
+providing this routine is to avoid the overhead of converting
+the symbols into generic @code{asymbol} structures.
+
+ at findex _bfd_generic_link_add_one_symbol
+ at code{_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 @code{BSF_WEAK} or
+ at code{BSF_INDIRECT}.  The section is a section in the object
+file, or something like @code{bfd_und_section_ptr} for an undefined
+symbol or @code{bfd_com_section_ptr} for a common symbol.
+
+If the @code{_bfd_final_link} routine is also going to need to
+read the symbol information, the @code{_bfd_link_add_symbols}
+routine should save it somewhere attached to the object file
+BFD.  However, the information should only be saved if the
+ at code{keep_memory} field of the @code{info} argument is TRUE, so
+that the @code{-no-keep-memory} linker switch is effective.
+
+The a.out function which adds symbols from an object file is
+ at code{aout_link_add_object_symbols}, and most of the interesting
+work is in @code{aout_link_add_symbols}.  The latter saves
+pointers to the hash tables entries created by
+ at code{_bfd_generic_link_add_one_symbol} indexed by symbol number,
+so that the @code{_bfd_final_link} routine does not have to call
+the hash table lookup routine to locate the entry.
+
+ at node Adding symbols from an archive, , Adding symbols from an object file, Adding Symbols to the Hash Table
+ at subsubsection Adding symbols from an archive
+When the @code{_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
+ at code{add_archive_element} linker callback, and it must add the
+symbols from the object file to the linker hash table.
+
+ at findex _bfd_generic_link_add_archive_symbols
+In most cases the work of looking through the symbols in the
+archive should be done by the
+ at code{_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.
+ at code{_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
+ at code{_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 @code{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
+ at code{_bfd_link_add_symbols} function.
+
+When the a.out @code{_bfd_link_add_symbols} function receives an
+archive, it calls @code{_bfd_generic_link_add_archive_symbols}
+passing @code{aout_link_check_archive_element} as the function
+argument. @code{aout_link_check_archive_element} calls
+ at code{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 @code{add_archive_element} callback and then
+ at code{aout_link_check_archive_element} calls
+ at code{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 @code{_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.
+
+ at node Performing the Final Link, , Adding Symbols to the Hash Table, Linker Functions
+ at subsection Performing the final link
+ at cindex _bfd_link_final_link in target vector
+ at cindex target vector (_bfd_final_link)
+When all the input files have been processed, the linker calls
+the @code{_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 @code{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
+ at code{_bfd_final_link} routine is @code{NAME(aout,final_link)}.
+
+ at menu
+* Information provided by the linker::
+* Relocating the section contents::
+* Writing the symbol table::
+ at end menu
+
+ at node Information provided by the linker, Relocating the section contents, Performing the Final Link, Performing the Final Link
+ at subsubsection Information provided by the linker
+Before the linker calls the @code{_bfd_final_link} entry point,
+it sets up some data structures for the function to use.
+
+The @code{input_bfds} field of the @code{bfd_link_info} structure
+will point to a list of all the input files included in the
+link.  These files are linked through the @code{link_next} field
+of the @code{bfd} structure.
+
+Each section in the output file will have a list of
+ at code{link_order} structures attached to the @code{map_head.link_order}
+field (the @code{link_order} structure is defined in
+ at code{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.
+
+ at node Relocating the section contents, Writing the symbol table, Information provided by the linker, Performing the Final Link
+ at subsubsection Relocating the section contents
+The @code{_bfd_final_link} function should look through the
+ at code{link_order} structures attached to each section of the
+output file.  Each @code{link_order} structure should either be
+handled specially, or it should be passed to the function
+ at code{_bfd_default_link_order} which will do the right thing
+(@code{_bfd_default_link_order} is defined in @code{linker.c}).
+
+For efficiency, a @code{link_order} of type
+ at code{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 @code{link_order} describes part of an
+output section in terms of a section belonging to one of the
+input files.  The @code{_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.
+
+ at findex _bfd_relocate_contents
+ at findex _bfd_final_link_relocate
+The functions @code{_bfd_relocate_contents} and
+ at code{_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 @code{reloc_howto_type} argument
+which describes the relocation to perform.  These functions
+are defined in @code{reloc.c}.
+
+The a.out function which handles reading, relocating, and
+writing section contents is @code{aout_link_input_section}.  The
+actual relocation is done in @code{aout_link_input_section_std}
+and @code{aout_link_input_section_ext}.
+
+ at node Writing the symbol table, , Relocating the section contents, Performing the Final Link
+ at subsubsection Writing the symbol table
+The @code{_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 @code{strip} and @code{discard} fields of the
+ at code{bfd_link_info} structure.
+
+The local symbols of the input files will not have been
+entered into the linker hash table.  The @code{_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 @code{link_order} structures, or it may be
+done by stepping through the @code{input_bfds} list.
+
+The @code{_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 @code{strip} field of the @code{bfd_link_info} structure
+controls which symbols are written out.  The possible values
+are listed in @code{bfdlink.h}.  If the value is @code{strip_some},
+then the @code{keep_hash} field of the @code{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 @code{strip} field of the @code{bfd_link_info} structure
+permits local symbols to be written out, the @code{discard} field
+is used to further controls which local symbols are included
+in the output file.  If the value is @code{discard_l}, then all
+local symbols which begin with a certain prefix are discarded;
+this is controlled by the @code{bfd_is_local_label_name} entry point.
+
+The a.out backend handles symbols by calling
+ at code{aout_link_write_symbols} on each input BFD and then
+traversing the global hash table with the function
+ at code{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 @code{NAME(aout,final_link)}.
+
+ at findex bfd_link_split_section
+ at subsubsection @code{bfd_link_split_section}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
+ at end example
+ at strong{Description}@*
+Return nonzero if @var{sec} should be split during a
+reloceatable or final link.
+ at example
+#define bfd_link_split_section(abfd, sec) \
+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+
+ at end example
+
+ at findex bfd_section_already_linked
+ at subsubsection @code{bfd_section_already_linked}
+ at strong{Synopsis}
+ at example
+void bfd_section_already_linked (bfd *abfd, asection *sec);
+ at end example
+ at strong{Description}@*
+Check if @var{sec} has been already linked during a reloceatable
+or final link.
+ at example
+#define bfd_section_already_linked(abfd, sec) \
+       BFD_SEND (abfd, _section_already_linked, (abfd, sec))
+
+ at end example
+

Added: branches/binutils/package/bfd/doc/mmo.texi
===================================================================
--- branches/binutils/package/bfd/doc/mmo.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/mmo.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,365 @@
+ at section mmo backend
+The mmo object format is used exclusively together with Professor
+Donald E.@: Knuth's educational 64-bit processor MMIX.  The simulator
+ at command{mmix} which is available at
+ at url{http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz}
+understands this format.  That package also includes a combined
+assembler and linker called @command{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
+ at url{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.
+
+ at c We want to xref the symbol table node.  A feature in "chew"
+ at c requires that "commands" do not contain spaces in the
+ at c arguments.  Hence the hyphen in "Symbol-table".
+ at menu
+* File layout::
+* Symbol-table::
+* mmo section mapping::
+ at end menu
+
+ at node File layout, Symbol-table, mmo, mmo
+ at subsection 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
+ at samp{0x0000 at dots{}00} to @samp{0x01ff at dots{}ff} is executable, so
+it is used for code (and constants) and the area
+ at samp{0x2000 at dots{}00} to @samp{0x20ff at dots{}ff} is used for
+writable data.  @xref{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 @code{e_machine} number for MMIX, filling it with
+section information normally found in ELF objects. @xref{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 @samp{0x98} forms a command called a @samp{lopcode}, where
+the next byte distinguished between the thirteen lopcodes.  The
+two remaining bytes, called the @samp{Y} and @samp{Z} fields, or
+the @samp{YZ} field (a 16-bit big-endian number), are used for
+various purposes different for each lopcode.  As documented in
+ at url{http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz},
+the lopcodes are:
+
+ at table @code
+ at item lop_quote
+0x98000001.  The next word is contents, regardless of whether it
+starts with 0x98 or not.
+
+ at item lop_loc
+0x9801YYZZ, where @samp{Z} is 1 or 2.  This is a location
+directive, setting the location for the next data to the next
+32-bit word (for @math{Z = 1}) or 64-bit word (for @math{Z = 2}),
+plus @math{Y * 2^56}.  Normally @samp{Y} is 0 for the text segment
+and 2 for the data segment.
+
+ at item lop_skip
+0x9802YYZZ.  Increase the current location by @samp{YZ} bytes.
+
+ at item lop_fixo
+0x9803YYZZ, where @samp{Z} is 1 or 2.  Store the current location
+as 64 bits into the location pointed to by the next 32-bit
+(@math{Z = 1}) or 64-bit (@math{Z = 2}) word, plus @math{Y *
+2^56}.
+
+ at item lop_fixr
+0x9804YYZZ.  @samp{YZ} is stored into the current location plus
+ at math{2 - 4 * YZ}.
+
+ at item lop_fixrx
+0x980500ZZ.  @samp{Z} is 16 or 24.  A value @samp{L} derived from
+the following 32-bit word are used in a manner similar to
+ at samp{YZ} in lop_fixr: it is xor:ed into the current location
+minus @math{4 * L}.  The first byte of the word is 0 or 1.  If it
+is 1, then @math{L = (@var{lowest 24 bits of word}) - 2^Z}, if 0,
+then @math{L = (@var{lowest 24 bits of word})}.
+
+ at item lop_file
+0x9806YYZZ.  @samp{Y} is the file number, @samp{Z} is count of
+32-bit words.  Set the file number to @samp{Y} and the line
+counter to 0.  The next @math{Z * 4} bytes contain the file name,
+padded with zeros if the count is not a multiple of four.  The
+same @samp{Y} may occur multiple times, but @samp{Z} must be 0 for
+all but the first occurrence.
+
+ at item lop_line
+0x9807YYZZ.  @samp{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.
+
+ at item lop_spec
+0x9808YYZZ.  @samp{YZ} is the type number.  Data until the next
+lopcode other than lop_quote forms special data of type @samp{YZ}.
+ at xref{mmo section mapping}.
+
+Other types than 80, (or type 80 with a content that does not
+parse) is stored in sections named @code{.MMIX.spec_data. at var{n}}
+where @var{n} is the @samp{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 @var{n} is
+concatenated to the data of the previous lop_spec @var{n}s.  The
+location in data or code at which the lop_spec occurred is lost.
+
+ at item lop_pre
+0x980901ZZ.  The first lopcode in a file.  The @samp{Z} field forms the
+length of header information in 32-bit words, where the first word
+tells the time in seconds since @samp{00:00:00 GMT Jan 1 1970}.
+
+ at item lop_post
+0x980a00ZZ.  @math{Z > 32}.  This lopcode follows after all
+content-generating lopcodes in a program.  The @samp{Z} field
+denotes the value of @samp{rG} at the beginning of the program.
+The following @math{256 - Z} big-endian 64-bit words are loaded
+into global registers @samp{$G} @dots{} @samp{$255}.
+
+ at item 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
+(@pxref{Symbol-table}).
+
+ at item lop_end
+0x980cYYZZ.  The last lopcode in a program.  It must follow the
+lop_stab lopcode and its data.  The @samp{YZ} field contains the
+number of 32-bit words of symbol table information after the
+preceding lop_stab lopcode.
+ at end table
+
+Note that the lopcode "fixups"; @code{lop_fixr}, @code{lop_fixrx} and
+ at code{lop_fixo} are not generated by BFD, but are handled.  They are
+generated by @code{mmixal}.
+
+This trivial one-label, one-instruction file:
+
+ at example
+ :Main TRAP 1,2,3
+ at end example
+
+can be represented this way in mmo:
+
+ at example
+ 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   @xref{Symbol-table}.
+ 0x10404020
+ 0x4d206120
+ 0x69016e00
+ 0x81000000
+ 0x980c0005 - lop_end; symbol table contained five 32-bit words.
+ at end example
+ at node Symbol-table, mmo section mapping, File layout, mmo
+ at subsection Symbol table format
+From mmixal.w (or really, the generated mmixal.tex) in
+ at url{http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz}):
+``Symbols are stored and retrieved by means of a @samp{ternary
+search trie}, following ideas of Bentley and Sedgewick. (See
+ACM--SIAM Symp.@: on Discrete Algorithms @samp{8} (1997), 360--369;
+R.@:Sedgewick, @samp{Algorithms in C} (Reading, Mass.@:
+Addison--Wesley, 1998), @samp{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 @code{m}.  If any of the listed bits
+in @code{m} is nonzero, we execute what stands at the right, in
+the listed order:
+
+ at example
+ (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 @code{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.)
+ at end example
+
+Let's look again at the @code{lop_stab} for the trivial file
+(@pxref{File layout}).
+
+ at example
+ 0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+ 0x203a4040
+ 0x10404020
+ 0x4d206120
+ 0x69016e00
+ 0x81000000
+ at end example
+
+This forms the trivial trie (note that the path between ``:'' and
+``M'' is redundant):
+
+ at example
+ 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.
+ at end example
+
+ at node mmo section mapping, , Symbol-table, mmo
+ at subsection 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
+ at samp{0x0000 at dots{}00} to @samp{0x01ff at dots{}ff} and
+ at samp{0x2000 at dots{}00} to @samp{0x20ff at dots{}ff} are entered in
+sections named @code{.text} and @code{.data} respectively.  If an area
+is not otherwise described, but would together with a neighboring
+lower area be less than @samp{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 @code{.MMIX.sec. at var{n}}.  Here,
+ at var{n} is a number, a running count through the mmo file,
+starting at 0.
+
+A loadable section specified as:
+
+ at example
+ .section secname,"ax"
+ TETRA 1,2,3,4,-1,-2009
+ BYTE 80
+ at end example
+
+and linked to address @samp{0x4}, is represented by the sequence:
+
+ at example
+ 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.
+ at end example
+
+Note that the lop_spec wrapping does not include the section
+contents.  Compare this to a non-loaded section specified as:
+
+ at example
+ .section thirdsec
+ TETRA 200001,100002
+ BYTE 38,40
+ at end example
+
+This, when linked to address @samp{0x200000000000001c}, is
+represented by:
+
+ at example
+ 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
+ at end example
+
+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.

Added: branches/binutils/package/bfd/doc/opncls.texi
===================================================================
--- branches/binutils/package/bfd/doc/opncls.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/opncls.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,365 @@
+ at section Opening and closing BFDs
+
+
+ at subsection Functions for opening and closing
+
+
+ at findex bfd_fopen
+ at subsubsection @code{bfd_fopen}
+ at strong{Synopsis}
+ at example
+bfd *bfd_fopen (const char *filename, const char *target,
+    const char *mode, int fd);
+ at end example
+ at strong{Description}@*
+Open the file @var{filename} with the target @var{target}.
+Return a pointer to the created BFD.  If @var{fd} is not -1,
+then @code{fdopen} is used to open the file; otherwise, @code{fopen}
+is used.  @var{mode} is passed directly to @code{fopen} or
+ at code{fdopen}. 
+
+Calls @code{bfd_find_target}, so @var{target} is interpreted as by
+that function.
+
+The new BFD is marked as cacheable iff @var{fd} is -1.
+
+If @code{NULL} is returned then an error has occured.   Possible errors
+are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} or
+ at code{system_call} error.
+
+ at findex bfd_openr
+ at subsubsection @code{bfd_openr}
+ at strong{Synopsis}
+ at example
+bfd *bfd_openr (const char *filename, const char *target);
+ at end example
+ at strong{Description}@*
+Open the file @var{filename} (using @code{fopen}) with the target
+ at var{target}.  Return a pointer to the created BFD.
+
+Calls @code{bfd_find_target}, so @var{target} is interpreted as by
+that function.
+
+If @code{NULL} is returned then an error has occured.   Possible errors
+are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} or
+ at code{system_call} error.
+
+ at findex bfd_fdopenr
+ at subsubsection @code{bfd_fdopenr}
+ at strong{Synopsis}
+ at example
+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
+ at end example
+ at strong{Description}@*
+ at code{bfd_fdopenr} is to @code{bfd_fopenr} much like @code{fdopen} is to
+ at code{fopen}.  It opens a BFD on a file already described by the
+ at var{fd} supplied.
+
+When the file is later @code{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 @var{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 @code{bfd_close}, and will not be affected by BFD operations
+on other files.
+
+Possible errors are @code{bfd_error_no_memory},
+ at code{bfd_error_invalid_target} and @code{bfd_error_system_call}.
+
+ at findex bfd_openstreamr
+ at subsubsection @code{bfd_openstreamr}
+ at strong{Synopsis}
+ at example
+bfd *bfd_openstreamr (const char *, const char *, void *);
+ at end example
+ at strong{Description}@*
+Open a BFD for read access on an existing stdio stream.  When
+the BFD is passed to @code{bfd_close}, the stream will be closed.
+
+ at findex bfd_openr_iovec
+ at subsubsection @code{bfd_openr_iovec}
+ at strong{Synopsis}
+ at example
+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));
+ at end example
+ at strong{Description}@*
+Create and return a BFD backed by a read-only @var{stream}.
+The @var{stream} is created using @var{open}, accessed using
+ at var{pread} and destroyed using @var{close}.
+
+Calls @code{bfd_find_target}, so @var{target} is interpreted as by
+that function.
+
+Calls @var{open} (which can call @code{bfd_zalloc} and
+ at code{bfd_get_filename}) to obtain the read-only stream backing
+the BFD.  @var{open} either succeeds returning the
+non- at code{NULL} @var{stream}, or fails returning @code{NULL}
+(setting @code{bfd_error}).
+
+Calls @var{pread} to request @var{nbytes} of data from
+ at var{stream} starting at @var{offset} (e.g., via a call to
+ at code{bfd_read}).  @var{pread} either succeeds returning the
+number of bytes read (which can be less than @var{nbytes} when
+end-of-file), or fails returning -1 (setting @code{bfd_error}).
+
+Calls @var{close} when the BFD is later closed using
+ at code{bfd_close}.  @var{close} either succeeds returning 0, or
+fails returning -1 (setting @code{bfd_error}).
+
+If @code{bfd_openr_iovec} returns @code{NULL} then an error has
+occurred.  Possible errors are @code{bfd_error_no_memory},
+ at code{bfd_error_invalid_target} and @code{bfd_error_system_call}.
+
+ at findex bfd_openw
+ at subsubsection @code{bfd_openw}
+ at strong{Synopsis}
+ at example
+bfd *bfd_openw (const char *filename, const char *target);
+ at end example
+ at strong{Description}@*
+Create a BFD, associated with file @var{filename}, using the
+file format @var{target}, and return a pointer to it.
+
+Possible errors are @code{bfd_error_system_call}, @code{bfd_error_no_memory},
+ at code{bfd_error_invalid_target}.
+
+ at findex bfd_close
+ at subsubsection @code{bfd_close}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_close (bfd *abfd);
+ at end example
+ at strong{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 @code{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 @code{bfd_fdopenr}).
+
+ at strong{Returns}@*
+ at code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
+
+ at findex bfd_close_all_done
+ at subsubsection @code{bfd_close_all_done}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_close_all_done (bfd *);
+ at end example
+ at strong{Description}@*
+Close a BFD.  Differs from @code{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 @code{chmod} is called
+to mark it as such.
+
+All memory attached to the BFD is released.
+
+ at strong{Returns}@*
+ at code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
+
+ at findex bfd_create
+ at subsubsection @code{bfd_create}
+ at strong{Synopsis}
+ at example
+bfd *bfd_create (const char *filename, bfd *templ);
+ at end example
+ at strong{Description}@*
+Create a new BFD in the manner of @code{bfd_openw}, but without
+opening a file. The new BFD takes the target from the target
+used by @var{template}. The format is always set to @code{bfd_object}.
+
+ at findex bfd_make_writable
+ at subsubsection @code{bfd_make_writable}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_make_writable (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Takes a BFD as created by @code{bfd_create} and converts it
+into one like as returned by @code{bfd_openw}.  It does this
+by converting the BFD to BFD_IN_MEMORY.  It's assumed that
+you will call @code{bfd_make_readable} on this bfd later.
+
+ at strong{Returns}@*
+ at code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
+
+ at findex bfd_make_readable
+ at subsubsection @code{bfd_make_readable}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_make_readable (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Takes a BFD as created by @code{bfd_create} and
+ at code{bfd_make_writable} and converts it into one like as
+returned by @code{bfd_openr}.  It does this by writing the
+contents out to the memory buffer, then reversing the
+direction.
+
+ at strong{Returns}@*
+ at code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
+
+ at findex bfd_alloc
+ at subsubsection @code{bfd_alloc}
+ at strong{Synopsis}
+ at example
+void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
+ at end example
+ at strong{Description}@*
+Allocate a block of @var{wanted} bytes of memory attached to
+ at code{abfd} and return a pointer to it.
+
+ at findex bfd_alloc2
+ at subsubsection @code{bfd_alloc2}
+ at strong{Synopsis}
+ at example
+void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+ at end example
+ at strong{Description}@*
+Allocate a block of @var{nmemb} elements of @var{size} bytes each
+of memory attached to @code{abfd} and return a pointer to it.
+
+ at findex bfd_zalloc
+ at subsubsection @code{bfd_zalloc}
+ at strong{Synopsis}
+ at example
+void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
+ at end example
+ at strong{Description}@*
+Allocate a block of @var{wanted} bytes of zeroed memory
+attached to @code{abfd} and return a pointer to it.
+
+ at findex bfd_zalloc2
+ at subsubsection @code{bfd_zalloc2}
+ at strong{Synopsis}
+ at example
+void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+ at end example
+ at strong{Description}@*
+Allocate a block of @var{nmemb} elements of @var{size} bytes each
+of zeroed memory attached to @code{abfd} and return a pointer to it.
+
+ at findex bfd_calc_gnu_debuglink_crc32
+ at subsubsection @code{bfd_calc_gnu_debuglink_crc32}
+ at strong{Synopsis}
+ at example
+unsigned long bfd_calc_gnu_debuglink_crc32
+   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+ at end example
+ at strong{Description}@*
+Computes a CRC value as used in the .gnu_debuglink section.
+Advances the previously computed @var{crc} value by computing
+and adding in the crc32 for @var{len} bytes of @var{buf}.
+
+ at strong{Returns}@*
+Return the updated CRC32 value.
+
+ at findex get_debug_link_info
+ at subsubsection @code{get_debug_link_info}
+ at strong{Synopsis}
+ at example
+char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
+ at end example
+ at strong{Description}@*
+fetch the filename and CRC32 value for any separate debuginfo
+associated with @var{abfd}. Return NULL if no such info found,
+otherwise return filename and update @var{crc32_out}.
+
+ at findex separate_debug_file_exists
+ at subsubsection @code{separate_debug_file_exists}
+ at strong{Synopsis}
+ at example
+bfd_boolean separate_debug_file_exists
+   (char *name, unsigned long crc32);
+ at end example
+ at strong{Description}@*
+Checks to see if @var{name} is a file and if its contents
+match @var{crc32}.
+
+ at findex find_separate_debug_file
+ at subsubsection @code{find_separate_debug_file}
+ at strong{Synopsis}
+ at example
+char *find_separate_debug_file (bfd *abfd);
+ at end example
+ at strong{Description}@*
+Searches @var{abfd} for a reference to separate debugging
+information, scans various locations in the filesystem, including
+the file tree rooted at @var{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.
+
+ at findex bfd_follow_gnu_debuglink
+ at subsubsection @code{bfd_follow_gnu_debuglink}
+ at strong{Synopsis}
+ at example
+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
+ at end example
+ at strong{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 @var{dir}, and if
+found returns the full filename.
+
+If @var{dir} is NULL, it will search a default path configured into
+libbfd at build time.  [XXX this feature is not currently
+implemented].
+
+ at strong{Returns}@*
+ at code{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.
+
+ at findex bfd_create_gnu_debuglink_section
+ at subsubsection @code{bfd_create_gnu_debuglink_section}
+ at strong{Synopsis}
+ at example
+struct bfd_section *bfd_create_gnu_debuglink_section
+   (bfd *abfd, const char *filename);
+ at end example
+ at strong{Description}@*
+Takes a @var{BFD} and adds a .gnu_debuglink section to it.  The section is sized
+to be big enough to contain a link to the specified @var{filename}.
+
+ at strong{Returns}@*
+A pointer to the new section is returned if all is ok.  Otherwise @code{NULL} is
+returned and bfd_error is set.
+
+ at findex bfd_fill_in_gnu_debuglink_section
+ at subsubsection @code{bfd_fill_in_gnu_debuglink_section}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_fill_in_gnu_debuglink_section
+   (bfd *abfd, struct bfd_section *sect, const char *filename);
+ at end example
+ at strong{Description}@*
+Takes a @var{BFD} and containing a .gnu_debuglink section @var{SECT}
+and fills in the contents of the section to contain a link to the
+specified @var{filename}.  The filename should be relative to the
+current directory.
+
+ at strong{Returns}@*
+ at code{TRUE} is returned if all is ok.  Otherwise @code{FALSE} is returned
+and bfd_error is set.
+

Added: branches/binutils/package/bfd/doc/reloc.texi
===================================================================
--- branches/binutils/package/bfd/doc/reloc.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/reloc.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2494 @@
+ at section 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 @code{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 @code{struct reloc_cache_entry} for each relocation
+in a particular section, and fill in the right bits of the structures.
+
+ at menu
+* typedef arelent::
+* howto manager::
+ at end menu
+
+
+ at node typedef arelent, howto manager, Relocations, Relocations
+ at subsection typedef arelent
+This is the structure of a relocation entry:
+
+
+ at example
+
+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;
+
+ at end example
+ at strong{Description}@*
+Here is a description of each of the fields within an @code{arelent}:
+
+ at itemize @bullet
+
+ at item
+ at code{sym_ptr_ptr}
+ at end itemize
+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
+ at code{canonicalize_symtab} action. @xref{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.
+
+ at itemize @bullet
+
+ at item
+ at code{address}
+ at end itemize
+The @code{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.
+
+ at itemize @bullet
+
+ at item
+ at code{addend}
+ at end itemize
+The @code{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:
+
+ at example
+        char foo[];
+        main()
+                @{
+                return foo[0x12345678];
+                @}
+ at end example
+
+Could be compiled into:
+
+ at example
+        linkw fp,#-4
+        moveb @@#12345678,d0
+        extbl d0
+        unlk fp
+        rts
+ at end example
+
+This could create a reloc pointing to @code{foo}, but leave the
+offset in the data, something like:
+
+ at example
+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
+ at end example
+
+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:
+
+ at example
+        or.u     r13,r0,hi16(_foo+0x12345678)
+        ld.b     r2,r13,lo16(_foo+0x12345678)
+        jmp      r1
+ at end example
+
+This should create two relocs, both pointing to @code{_foo}, and with
+0x12340000 in their addend field. The data would consist of:
+
+ at example
+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
+ at end example
+
+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 @code{_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.
+
+ at example
+        save %sp,-112,%sp
+        sethi %hi(_foo+0x12345678),%g2
+        ldsb [%g2+%lo(_foo+0x12345678)],%i0
+        ret
+        restore
+ at end example
+
+Both relocs contain a pointer to @code{foo}, and the offsets
+contain junk.
+
+ at example
+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
+ at end example
+
+ at itemize @bullet
+
+ at item
+ at code{howto}
+ at end itemize
+The @code{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.
+
+ at subsubsection @code{enum complain_overflow}
+Indicates what sort of overflow checking should be done when
+performing a relocation.
+
+
+ at example
+
+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
+@};
+ at end example
+ at subsubsection @code{reloc_howto_type}
+The @code{reloc_howto_type} is a structure which contains all the
+information that libbfd needs to know to tie up a back end's data.
+
+
+ at example
+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;
+@};
+
+ at end example
+ at findex The HOWTO Macro
+ at subsubsection @code{The HOWTO Macro}
+ at strong{Description}@*
+The HOWTO define is horrible and will go away.
+ at example
+#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 @}
+ at end example
+
+ at strong{Description}@*
+And will be replaced with the totally magic way. But for the
+moment, we are compatible, so do it this way.
+ at example
+#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
+  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
+         NAME, FALSE, 0, 0, IN)
+
+ at end example
+
+ at strong{Description}@*
+This is used to fill in an empty howto entry in an array.
+ at example
+#define EMPTY_HOWTO(C) \
+  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
+         NULL, FALSE, 0, 0, FALSE)
+
+ at end example
+
+ at strong{Description}@*
+Helper routine to turn a symbol into a relocation value.
+ at example
+#define HOWTO_PREPARE(relocation, symbol)               \
+  @{                                                     \
+    if (symbol != NULL)                                 \
+      @{                                                 \
+        if (bfd_is_com_section (symbol->section))       \
+          @{                                             \
+            relocation = 0;                             \
+          @}                                             \
+        else                                            \
+          @{                                             \
+            relocation = symbol->value;                 \
+          @}                                             \
+      @}                                                 \
+  @}
+
+ at end example
+
+ at findex bfd_get_reloc_size
+ at subsubsection @code{bfd_get_reloc_size}
+ at strong{Synopsis}
+ at example
+unsigned int bfd_get_reloc_size (reloc_howto_type *);
+ at end example
+ at strong{Description}@*
+For a reloc_howto_type that operates on a fixed number of bytes,
+this returns the number of bytes operated on.
+
+ at findex arelent_chain
+ at subsubsection @code{arelent_chain}
+ at strong{Description}@*
+How relocs are tied together in an @code{asection}:
+ at example
+typedef struct relent_chain
+@{
+  arelent relent;
+  struct relent_chain *next;
+@}
+arelent_chain;
+
+ at end example
+
+ at findex bfd_check_overflow
+ at subsubsection @code{bfd_check_overflow}
+ at strong{Synopsis}
+ at example
+bfd_reloc_status_type bfd_check_overflow
+   (enum complain_overflow how,
+    unsigned int bitsize,
+    unsigned int rightshift,
+    unsigned int addrsize,
+    bfd_vma relocation);
+ at end example
+ at strong{Description}@*
+Perform overflow checking on @var{relocation} which has
+ at var{bitsize} significant bits and will be shifted right by
+ at var{rightshift} bits, on a machine with addresses containing
+ at var{addrsize} significant bits.  The result is either of
+ at code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
+
+ at findex bfd_perform_relocation
+ at subsubsection @code{bfd_perform_relocation}
+ at strong{Synopsis}
+ at example
+bfd_reloc_status_type bfd_perform_relocation
+   (bfd *abfd,
+    arelent *reloc_entry,
+    void *data,
+    asection *input_section,
+    bfd *output_bfd,
+    char **error_message);
+ at end example
+ at strong{Description}@*
+If @var{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 @var{error_message} argument is set to an error message if
+this return @code{bfd_reloc_dangerous}.
+
+ at findex bfd_install_relocation
+ at subsubsection @code{bfd_install_relocation}
+ at strong{Synopsis}
+ at example
+bfd_reloc_status_type bfd_install_relocation
+   (bfd *abfd,
+    arelent *reloc_entry,
+    void *data, bfd_vma data_start,
+    asection *input_section,
+    char **error_message);
+ at end example
+ at strong{Description}@*
+This looks remarkably like @code{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.
+
+
+ at node howto manager,  , typedef arelent, Relocations
+ at subsection 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.
+
+ at findex bfd_reloc_code_type
+ at subsubsection @code{bfd_reloc_code_type}
+ at strong{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 @code{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 @code{enum bfd_reloc_code_real}:
+
+ at deffn {} BFD_RELOC_64
+ at deffnx {} BFD_RELOC_32
+ at deffnx {} BFD_RELOC_26
+ at deffnx {} BFD_RELOC_24
+ at deffnx {} BFD_RELOC_16
+ at deffnx {} BFD_RELOC_14
+ at deffnx {} BFD_RELOC_8
+Basic absolute relocations of N bits.
+ at end deffn
+ at deffn {} BFD_RELOC_64_PCREL
+ at deffnx {} BFD_RELOC_32_PCREL
+ at deffnx {} BFD_RELOC_24_PCREL
+ at deffnx {} BFD_RELOC_16_PCREL
+ at deffnx {} BFD_RELOC_12_PCREL
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_32_SECREL
+Section relative relocations.  Some targets need this for DWARF2.
+ at end deffn
+ at deffn {} BFD_RELOC_32_GOT_PCREL
+ at deffnx {} BFD_RELOC_16_GOT_PCREL
+ at deffnx {} BFD_RELOC_8_GOT_PCREL
+ at deffnx {} BFD_RELOC_32_GOTOFF
+ at deffnx {} BFD_RELOC_16_GOTOFF
+ at deffnx {} BFD_RELOC_LO16_GOTOFF
+ at deffnx {} BFD_RELOC_HI16_GOTOFF
+ at deffnx {} BFD_RELOC_HI16_S_GOTOFF
+ at deffnx {} BFD_RELOC_8_GOTOFF
+ at deffnx {} BFD_RELOC_64_PLT_PCREL
+ at deffnx {} BFD_RELOC_32_PLT_PCREL
+ at deffnx {} BFD_RELOC_24_PLT_PCREL
+ at deffnx {} BFD_RELOC_16_PLT_PCREL
+ at deffnx {} BFD_RELOC_8_PLT_PCREL
+ at deffnx {} BFD_RELOC_64_PLTOFF
+ at deffnx {} BFD_RELOC_32_PLTOFF
+ at deffnx {} BFD_RELOC_16_PLTOFF
+ at deffnx {} BFD_RELOC_LO16_PLTOFF
+ at deffnx {} BFD_RELOC_HI16_PLTOFF
+ at deffnx {} BFD_RELOC_HI16_S_PLTOFF
+ at deffnx {} BFD_RELOC_8_PLTOFF
+For ELF.
+ at end deffn
+ at deffn {} BFD_RELOC_68K_GLOB_DAT
+ at deffnx {} BFD_RELOC_68K_JMP_SLOT
+ at deffnx {} BFD_RELOC_68K_RELATIVE
+Relocations used by 68K ELF.
+ at end deffn
+ at deffn {} BFD_RELOC_32_BASEREL
+ at deffnx {} BFD_RELOC_16_BASEREL
+ at deffnx {} BFD_RELOC_LO16_BASEREL
+ at deffnx {} BFD_RELOC_HI16_BASEREL
+ at deffnx {} BFD_RELOC_HI16_S_BASEREL
+ at deffnx {} BFD_RELOC_8_BASEREL
+ at deffnx {} BFD_RELOC_RVA
+Linkage-table relative.
+ at end deffn
+ at deffn {} BFD_RELOC_8_FFnn
+Absolute 8-bit relocation, but used to form an address like 0xFFnn.
+ at end deffn
+ at deffn {} BFD_RELOC_32_PCREL_S2
+ at deffnx {} BFD_RELOC_16_PCREL_S2
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_HI22
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_GPREL16
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_I960_CALLJ
+Reloc types used for i960/b.out.
+ at end deffn
+ at deffn {} BFD_RELOC_NONE
+ at deffnx {} BFD_RELOC_SPARC_WDISP22
+ at deffnx {} BFD_RELOC_SPARC22
+ at deffnx {} BFD_RELOC_SPARC13
+ at deffnx {} BFD_RELOC_SPARC_GOT10
+ at deffnx {} BFD_RELOC_SPARC_GOT13
+ at deffnx {} BFD_RELOC_SPARC_GOT22
+ at deffnx {} BFD_RELOC_SPARC_PC10
+ at deffnx {} BFD_RELOC_SPARC_PC22
+ at deffnx {} BFD_RELOC_SPARC_WPLT30
+ at deffnx {} BFD_RELOC_SPARC_COPY
+ at deffnx {} BFD_RELOC_SPARC_GLOB_DAT
+ at deffnx {} BFD_RELOC_SPARC_JMP_SLOT
+ at deffnx {} BFD_RELOC_SPARC_RELATIVE
+ at deffnx {} BFD_RELOC_SPARC_UA16
+ at deffnx {} BFD_RELOC_SPARC_UA32
+ at deffnx {} BFD_RELOC_SPARC_UA64
+SPARC ELF relocations.  There is probably some overlap with other
+relocation types already defined.
+ at end deffn
+ at deffn {} BFD_RELOC_SPARC_BASE13
+ at deffnx {} BFD_RELOC_SPARC_BASE22
+I think these are specific to SPARC a.out (e.g., Sun 4).
+ at end deffn
+ at deffn {} BFD_RELOC_SPARC_64
+ at deffnx {} BFD_RELOC_SPARC_10
+ at deffnx {} BFD_RELOC_SPARC_11
+ at deffnx {} BFD_RELOC_SPARC_OLO10
+ at deffnx {} BFD_RELOC_SPARC_HH22
+ at deffnx {} BFD_RELOC_SPARC_HM10
+ at deffnx {} BFD_RELOC_SPARC_LM22
+ at deffnx {} BFD_RELOC_SPARC_PC_HH22
+ at deffnx {} BFD_RELOC_SPARC_PC_HM10
+ at deffnx {} BFD_RELOC_SPARC_PC_LM22
+ at deffnx {} BFD_RELOC_SPARC_WDISP16
+ at deffnx {} BFD_RELOC_SPARC_WDISP19
+ at deffnx {} BFD_RELOC_SPARC_7
+ at deffnx {} BFD_RELOC_SPARC_6
+ at deffnx {} BFD_RELOC_SPARC_5
+ at deffnx {} BFD_RELOC_SPARC_DISP64
+ at deffnx {} BFD_RELOC_SPARC_PLT32
+ at deffnx {} BFD_RELOC_SPARC_PLT64
+ at deffnx {} BFD_RELOC_SPARC_HIX22
+ at deffnx {} BFD_RELOC_SPARC_LOX10
+ at deffnx {} BFD_RELOC_SPARC_H44
+ at deffnx {} BFD_RELOC_SPARC_M44
+ at deffnx {} BFD_RELOC_SPARC_L44
+ at deffnx {} BFD_RELOC_SPARC_REGISTER
+SPARC64 relocations
+ at end deffn
+ at deffn {} BFD_RELOC_SPARC_REV32
+SPARC little endian relocation
+ at end deffn
+ at deffn {} BFD_RELOC_SPARC_TLS_GD_HI22
+ at deffnx {} BFD_RELOC_SPARC_TLS_GD_LO10
+ at deffnx {} BFD_RELOC_SPARC_TLS_GD_ADD
+ at deffnx {} BFD_RELOC_SPARC_TLS_GD_CALL
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDM_HI22
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDM_LO10
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDM_ADD
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDM_CALL
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDO_HIX22
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDO_LOX10
+ at deffnx {} BFD_RELOC_SPARC_TLS_LDO_ADD
+ at deffnx {} BFD_RELOC_SPARC_TLS_IE_HI22
+ at deffnx {} BFD_RELOC_SPARC_TLS_IE_LO10
+ at deffnx {} BFD_RELOC_SPARC_TLS_IE_LD
+ at deffnx {} BFD_RELOC_SPARC_TLS_IE_LDX
+ at deffnx {} BFD_RELOC_SPARC_TLS_IE_ADD
+ at deffnx {} BFD_RELOC_SPARC_TLS_LE_HIX22
+ at deffnx {} BFD_RELOC_SPARC_TLS_LE_LOX10
+ at deffnx {} BFD_RELOC_SPARC_TLS_DTPMOD32
+ at deffnx {} BFD_RELOC_SPARC_TLS_DTPMOD64
+ at deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF32
+ at deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF64
+ at deffnx {} BFD_RELOC_SPARC_TLS_TPOFF32
+ at deffnx {} BFD_RELOC_SPARC_TLS_TPOFF64
+SPARC TLS relocations
+ at end deffn
+ at deffn {} 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).
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_ALPHA_LITERAL
+ at deffnx {} BFD_RELOC_ALPHA_ELF_LITERAL
+ at deffnx {} 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)
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_ALPHA_LINKAGE
+The LINKAGE relocation outputs a linkage pair in the object file,
+which is filled by the linker.
+ at end deffn
+ at deffn {} BFD_RELOC_ALPHA_CODEADDR
+The CODEADDR relocation outputs a STO_CA in the object file,
+which is filled by the linker.
+ at end deffn
+ at deffn {} BFD_RELOC_ALPHA_GPREL_HI16
+ at deffnx {} BFD_RELOC_ALPHA_GPREL_LO16
+The GPREL_HI/LO relocations together form a 32-bit offset from the
+GP register.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_ALPHA_TLSGD
+ at deffnx {} BFD_RELOC_ALPHA_TLSLDM
+ at deffnx {} BFD_RELOC_ALPHA_DTPMOD64
+ at deffnx {} BFD_RELOC_ALPHA_GOTDTPREL16
+ at deffnx {} BFD_RELOC_ALPHA_DTPREL64
+ at deffnx {} BFD_RELOC_ALPHA_DTPREL_HI16
+ at deffnx {} BFD_RELOC_ALPHA_DTPREL_LO16
+ at deffnx {} BFD_RELOC_ALPHA_DTPREL16
+ at deffnx {} BFD_RELOC_ALPHA_GOTTPREL16
+ at deffnx {} BFD_RELOC_ALPHA_TPREL64
+ at deffnx {} BFD_RELOC_ALPHA_TPREL_HI16
+ at deffnx {} BFD_RELOC_ALPHA_TPREL_LO16
+ at deffnx {} BFD_RELOC_ALPHA_TPREL16
+Alpha thread-local storage relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS_JMP
+Bits 27..2 of the relocation address shifted right 2 bits;
+simple reloc otherwise.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS16_JMP
+The MIPS16 jump instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS16_GPREL
+MIPS16 GP relative reloc.
+ at end deffn
+ at deffn {} BFD_RELOC_HI16
+High 16 bits of 32-bit value; simple reloc.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_LO16
+Low 16 bits.
+ at end deffn
+ at deffn {} BFD_RELOC_HI16_PCREL
+High 16 bits of 32-bit pc-relative value
+ at end deffn
+ at deffn {} BFD_RELOC_HI16_S_PCREL
+High 16 bits of 32-bit pc-relative value, adjusted
+ at end deffn
+ at deffn {} BFD_RELOC_LO16_PCREL
+Low 16 bits of pc-relative value
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS16_HI16
+MIPS16 high 16 bits of 32-bit value.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS16_LO16
+MIPS16 low 16 bits.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS_LITERAL
+Relocation against a MIPS literal section.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS_GOT16
+ at deffnx {} BFD_RELOC_MIPS_CALL16
+ at deffnx {} BFD_RELOC_MIPS_GOT_HI16
+ at deffnx {} BFD_RELOC_MIPS_GOT_LO16
+ at deffnx {} BFD_RELOC_MIPS_CALL_HI16
+ at deffnx {} BFD_RELOC_MIPS_CALL_LO16
+ at deffnx {} BFD_RELOC_MIPS_SUB
+ at deffnx {} BFD_RELOC_MIPS_GOT_PAGE
+ at deffnx {} BFD_RELOC_MIPS_GOT_OFST
+ at deffnx {} BFD_RELOC_MIPS_GOT_DISP
+ at deffnx {} BFD_RELOC_MIPS_SHIFT5
+ at deffnx {} BFD_RELOC_MIPS_SHIFT6
+ at deffnx {} BFD_RELOC_MIPS_INSERT_A
+ at deffnx {} BFD_RELOC_MIPS_INSERT_B
+ at deffnx {} BFD_RELOC_MIPS_DELETE
+ at deffnx {} BFD_RELOC_MIPS_HIGHEST
+ at deffnx {} BFD_RELOC_MIPS_HIGHER
+ at deffnx {} BFD_RELOC_MIPS_SCN_DISP
+ at deffnx {} BFD_RELOC_MIPS_REL16
+ at deffnx {} BFD_RELOC_MIPS_RELGOT
+ at deffnx {} BFD_RELOC_MIPS_JALR
+ at deffnx {} BFD_RELOC_MIPS_TLS_DTPMOD32
+ at deffnx {} BFD_RELOC_MIPS_TLS_DTPREL32
+ at deffnx {} BFD_RELOC_MIPS_TLS_DTPMOD64
+ at deffnx {} BFD_RELOC_MIPS_TLS_DTPREL64
+ at deffnx {} BFD_RELOC_MIPS_TLS_GD
+ at deffnx {} BFD_RELOC_MIPS_TLS_LDM
+ at deffnx {} BFD_RELOC_MIPS_TLS_DTPREL_HI16
+ at deffnx {} BFD_RELOC_MIPS_TLS_DTPREL_LO16
+ at deffnx {} BFD_RELOC_MIPS_TLS_GOTTPREL
+ at deffnx {} BFD_RELOC_MIPS_TLS_TPREL32
+ at deffnx {} BFD_RELOC_MIPS_TLS_TPREL64
+ at deffnx {} BFD_RELOC_MIPS_TLS_TPREL_HI16
+ at deffnx {} BFD_RELOC_MIPS_TLS_TPREL_LO16
+MIPS ELF relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_MIPS_COPY
+ at deffnx {} BFD_RELOC_MIPS_JUMP_SLOT
+MIPS ELF relocations (VxWorks extensions).
+ at end deffn
+ at deffn {} BFD_RELOC_FRV_LABEL16
+ at deffnx {} BFD_RELOC_FRV_LABEL24
+ at deffnx {} BFD_RELOC_FRV_LO16
+ at deffnx {} BFD_RELOC_FRV_HI16
+ at deffnx {} BFD_RELOC_FRV_GPREL12
+ at deffnx {} BFD_RELOC_FRV_GPRELU12
+ at deffnx {} BFD_RELOC_FRV_GPREL32
+ at deffnx {} BFD_RELOC_FRV_GPRELHI
+ at deffnx {} BFD_RELOC_FRV_GPRELLO
+ at deffnx {} BFD_RELOC_FRV_GOT12
+ at deffnx {} BFD_RELOC_FRV_GOTHI
+ at deffnx {} BFD_RELOC_FRV_GOTLO
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_GOT12
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTHI
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTLO
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_VALUE
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFF12
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
+ at deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
+ at deffnx {} BFD_RELOC_FRV_GOTOFF12
+ at deffnx {} BFD_RELOC_FRV_GOTOFFHI
+ at deffnx {} BFD_RELOC_FRV_GOTOFFLO
+ at deffnx {} BFD_RELOC_FRV_GETTLSOFF
+ at deffnx {} BFD_RELOC_FRV_TLSDESC_VALUE
+ at deffnx {} BFD_RELOC_FRV_GOTTLSDESC12
+ at deffnx {} BFD_RELOC_FRV_GOTTLSDESCHI
+ at deffnx {} BFD_RELOC_FRV_GOTTLSDESCLO
+ at deffnx {} BFD_RELOC_FRV_TLSMOFF12
+ at deffnx {} BFD_RELOC_FRV_TLSMOFFHI
+ at deffnx {} BFD_RELOC_FRV_TLSMOFFLO
+ at deffnx {} BFD_RELOC_FRV_GOTTLSOFF12
+ at deffnx {} BFD_RELOC_FRV_GOTTLSOFFHI
+ at deffnx {} BFD_RELOC_FRV_GOTTLSOFFLO
+ at deffnx {} BFD_RELOC_FRV_TLSOFF
+ at deffnx {} BFD_RELOC_FRV_TLSDESC_RELAX
+ at deffnx {} BFD_RELOC_FRV_GETTLSOFF_RELAX
+ at deffnx {} BFD_RELOC_FRV_TLSOFF_RELAX
+ at deffnx {} BFD_RELOC_FRV_TLSMOFF
+Fujitsu Frv Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_GOTOFF24
+This is a 24bit GOT-relative reloc for the mn10300.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_GOT32
+This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
+in the instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_GOT24
+This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
+in the instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_GOT16
+This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
+in the instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_COPY
+Copy symbol at runtime.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_GLOB_DAT
+Create GOT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_JMP_SLOT
+Create PLT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_RELATIVE
+Adjust by program base.
+ at end deffn
+ at deffn {} BFD_RELOC_386_GOT32
+ at deffnx {} BFD_RELOC_386_PLT32
+ at deffnx {} BFD_RELOC_386_COPY
+ at deffnx {} BFD_RELOC_386_GLOB_DAT
+ at deffnx {} BFD_RELOC_386_JUMP_SLOT
+ at deffnx {} BFD_RELOC_386_RELATIVE
+ at deffnx {} BFD_RELOC_386_GOTOFF
+ at deffnx {} BFD_RELOC_386_GOTPC
+ at deffnx {} BFD_RELOC_386_TLS_TPOFF
+ at deffnx {} BFD_RELOC_386_TLS_IE
+ at deffnx {} BFD_RELOC_386_TLS_GOTIE
+ at deffnx {} BFD_RELOC_386_TLS_LE
+ at deffnx {} BFD_RELOC_386_TLS_GD
+ at deffnx {} BFD_RELOC_386_TLS_LDM
+ at deffnx {} BFD_RELOC_386_TLS_LDO_32
+ at deffnx {} BFD_RELOC_386_TLS_IE_32
+ at deffnx {} BFD_RELOC_386_TLS_LE_32
+ at deffnx {} BFD_RELOC_386_TLS_DTPMOD32
+ at deffnx {} BFD_RELOC_386_TLS_DTPOFF32
+ at deffnx {} BFD_RELOC_386_TLS_TPOFF32
+ at deffnx {} BFD_RELOC_386_TLS_GOTDESC
+ at deffnx {} BFD_RELOC_386_TLS_DESC_CALL
+ at deffnx {} BFD_RELOC_386_TLS_DESC
+i386/elf relocations
+ at end deffn
+ at deffn {} BFD_RELOC_X86_64_GOT32
+ at deffnx {} BFD_RELOC_X86_64_PLT32
+ at deffnx {} BFD_RELOC_X86_64_COPY
+ at deffnx {} BFD_RELOC_X86_64_GLOB_DAT
+ at deffnx {} BFD_RELOC_X86_64_JUMP_SLOT
+ at deffnx {} BFD_RELOC_X86_64_RELATIVE
+ at deffnx {} BFD_RELOC_X86_64_GOTPCREL
+ at deffnx {} BFD_RELOC_X86_64_32S
+ at deffnx {} BFD_RELOC_X86_64_DTPMOD64
+ at deffnx {} BFD_RELOC_X86_64_DTPOFF64
+ at deffnx {} BFD_RELOC_X86_64_TPOFF64
+ at deffnx {} BFD_RELOC_X86_64_TLSGD
+ at deffnx {} BFD_RELOC_X86_64_TLSLD
+ at deffnx {} BFD_RELOC_X86_64_DTPOFF32
+ at deffnx {} BFD_RELOC_X86_64_GOTTPOFF
+ at deffnx {} BFD_RELOC_X86_64_TPOFF32
+ at deffnx {} BFD_RELOC_X86_64_GOTOFF64
+ at deffnx {} BFD_RELOC_X86_64_GOTPC32
+ at deffnx {} BFD_RELOC_X86_64_GOT64
+ at deffnx {} BFD_RELOC_X86_64_GOTPCREL64
+ at deffnx {} BFD_RELOC_X86_64_GOTPC64
+ at deffnx {} BFD_RELOC_X86_64_GOTPLT64
+ at deffnx {} BFD_RELOC_X86_64_PLTOFF64
+ at deffnx {} BFD_RELOC_X86_64_GOTPC32_TLSDESC
+ at deffnx {} BFD_RELOC_X86_64_TLSDESC_CALL
+ at deffnx {} BFD_RELOC_X86_64_TLSDESC
+x86-64/elf relocations
+ at end deffn
+ at deffn {} BFD_RELOC_NS32K_IMM_8
+ at deffnx {} BFD_RELOC_NS32K_IMM_16
+ at deffnx {} BFD_RELOC_NS32K_IMM_32
+ at deffnx {} BFD_RELOC_NS32K_IMM_8_PCREL
+ at deffnx {} BFD_RELOC_NS32K_IMM_16_PCREL
+ at deffnx {} BFD_RELOC_NS32K_IMM_32_PCREL
+ at deffnx {} BFD_RELOC_NS32K_DISP_8
+ at deffnx {} BFD_RELOC_NS32K_DISP_16
+ at deffnx {} BFD_RELOC_NS32K_DISP_32
+ at deffnx {} BFD_RELOC_NS32K_DISP_8_PCREL
+ at deffnx {} BFD_RELOC_NS32K_DISP_16_PCREL
+ at deffnx {} BFD_RELOC_NS32K_DISP_32_PCREL
+ns32k relocations
+ at end deffn
+ at deffn {} BFD_RELOC_PDP11_DISP_8_PCREL
+ at deffnx {} BFD_RELOC_PDP11_DISP_6_PCREL
+PDP11 relocations
+ at end deffn
+ at deffn {} BFD_RELOC_PJ_CODE_HI16
+ at deffnx {} BFD_RELOC_PJ_CODE_LO16
+ at deffnx {} BFD_RELOC_PJ_CODE_DIR16
+ at deffnx {} BFD_RELOC_PJ_CODE_DIR32
+ at deffnx {} BFD_RELOC_PJ_CODE_REL16
+ at deffnx {} BFD_RELOC_PJ_CODE_REL32
+Picojava relocs.  Not all of these appear in object files.
+ at end deffn
+ at deffn {} BFD_RELOC_PPC_B26
+ at deffnx {} BFD_RELOC_PPC_BA26
+ at deffnx {} BFD_RELOC_PPC_TOC16
+ at deffnx {} BFD_RELOC_PPC_B16
+ at deffnx {} BFD_RELOC_PPC_B16_BRTAKEN
+ at deffnx {} BFD_RELOC_PPC_B16_BRNTAKEN
+ at deffnx {} BFD_RELOC_PPC_BA16
+ at deffnx {} BFD_RELOC_PPC_BA16_BRTAKEN
+ at deffnx {} BFD_RELOC_PPC_BA16_BRNTAKEN
+ at deffnx {} BFD_RELOC_PPC_COPY
+ at deffnx {} BFD_RELOC_PPC_GLOB_DAT
+ at deffnx {} BFD_RELOC_PPC_JMP_SLOT
+ at deffnx {} BFD_RELOC_PPC_RELATIVE
+ at deffnx {} BFD_RELOC_PPC_LOCAL24PC
+ at deffnx {} BFD_RELOC_PPC_EMB_NADDR32
+ at deffnx {} BFD_RELOC_PPC_EMB_NADDR16
+ at deffnx {} BFD_RELOC_PPC_EMB_NADDR16_LO
+ at deffnx {} BFD_RELOC_PPC_EMB_NADDR16_HI
+ at deffnx {} BFD_RELOC_PPC_EMB_NADDR16_HA
+ at deffnx {} BFD_RELOC_PPC_EMB_SDAI16
+ at deffnx {} BFD_RELOC_PPC_EMB_SDA2I16
+ at deffnx {} BFD_RELOC_PPC_EMB_SDA2REL
+ at deffnx {} BFD_RELOC_PPC_EMB_SDA21
+ at deffnx {} BFD_RELOC_PPC_EMB_MRKREF
+ at deffnx {} BFD_RELOC_PPC_EMB_RELSEC16
+ at deffnx {} BFD_RELOC_PPC_EMB_RELST_LO
+ at deffnx {} BFD_RELOC_PPC_EMB_RELST_HI
+ at deffnx {} BFD_RELOC_PPC_EMB_RELST_HA
+ at deffnx {} BFD_RELOC_PPC_EMB_BIT_FLD
+ at deffnx {} BFD_RELOC_PPC_EMB_RELSDA
+ at deffnx {} BFD_RELOC_PPC64_HIGHER
+ at deffnx {} BFD_RELOC_PPC64_HIGHER_S
+ at deffnx {} BFD_RELOC_PPC64_HIGHEST
+ at deffnx {} BFD_RELOC_PPC64_HIGHEST_S
+ at deffnx {} BFD_RELOC_PPC64_TOC16_LO
+ at deffnx {} BFD_RELOC_PPC64_TOC16_HI
+ at deffnx {} BFD_RELOC_PPC64_TOC16_HA
+ at deffnx {} BFD_RELOC_PPC64_TOC
+ at deffnx {} BFD_RELOC_PPC64_PLTGOT16
+ at deffnx {} BFD_RELOC_PPC64_PLTGOT16_LO
+ at deffnx {} BFD_RELOC_PPC64_PLTGOT16_HI
+ at deffnx {} BFD_RELOC_PPC64_PLTGOT16_HA
+ at deffnx {} BFD_RELOC_PPC64_ADDR16_DS
+ at deffnx {} BFD_RELOC_PPC64_ADDR16_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_GOT16_DS
+ at deffnx {} BFD_RELOC_PPC64_GOT16_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_PLT16_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_SECTOFF_DS
+ at deffnx {} BFD_RELOC_PPC64_SECTOFF_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_TOC16_DS
+ at deffnx {} BFD_RELOC_PPC64_TOC16_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_PLTGOT16_DS
+ at deffnx {} BFD_RELOC_PPC64_PLTGOT16_LO_DS
+Power(rs6000) and PowerPC relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_PPC_TLS
+ at deffnx {} BFD_RELOC_PPC_DTPMOD
+ at deffnx {} BFD_RELOC_PPC_TPREL16
+ at deffnx {} BFD_RELOC_PPC_TPREL16_LO
+ at deffnx {} BFD_RELOC_PPC_TPREL16_HI
+ at deffnx {} BFD_RELOC_PPC_TPREL16_HA
+ at deffnx {} BFD_RELOC_PPC_TPREL
+ at deffnx {} BFD_RELOC_PPC_DTPREL16
+ at deffnx {} BFD_RELOC_PPC_DTPREL16_LO
+ at deffnx {} BFD_RELOC_PPC_DTPREL16_HI
+ at deffnx {} BFD_RELOC_PPC_DTPREL16_HA
+ at deffnx {} BFD_RELOC_PPC_DTPREL
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSGD16
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_LO
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_HI
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_HA
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSLD16
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_LO
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_HI
+ at deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_HA
+ at deffnx {} BFD_RELOC_PPC_GOT_TPREL16
+ at deffnx {} BFD_RELOC_PPC_GOT_TPREL16_LO
+ at deffnx {} BFD_RELOC_PPC_GOT_TPREL16_HI
+ at deffnx {} BFD_RELOC_PPC_GOT_TPREL16_HA
+ at deffnx {} BFD_RELOC_PPC_GOT_DTPREL16
+ at deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_LO
+ at deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HI
+ at deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HA
+ at deffnx {} BFD_RELOC_PPC64_TPREL16_DS
+ at deffnx {} BFD_RELOC_PPC64_TPREL16_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHER
+ at deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHERA
+ at deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHEST
+ at deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHESTA
+ at deffnx {} BFD_RELOC_PPC64_DTPREL16_DS
+ at deffnx {} BFD_RELOC_PPC64_DTPREL16_LO_DS
+ at deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHER
+ at deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHERA
+ at deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHEST
+ at deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHESTA
+PowerPC and PowerPC64 thread-local storage relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_I370_D12
+IBM 370/390 relocations
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_PCREL_CALL
+ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_PCREL_JUMP
+ARM 26-bit pc-relative branch for B or conditional BL instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_THUMB_PCREL_BRANCH7
+ at deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH9
+ at deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH12
+ at deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH20
+ at deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH23
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_OFFSET_IMM
+12-bit immediate offset, used in ARM-format ldr and str instructions.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_THUMB_OFFSET
+5-bit immediate offset, used in Thumb-format ldr and str instructions.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_TARGET1
+Pc-relative or absolute relocation depending on target.  Used for
+entries in .init_array sections.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_ROSEGREL32
+Read-only segment base relative address.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_SBREL32
+Data segment base relative address.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_PREL31
+31-bit PC relative address.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_JUMP_SLOT
+ at deffnx {} BFD_RELOC_ARM_GLOB_DAT
+ at deffnx {} BFD_RELOC_ARM_GOT32
+ at deffnx {} BFD_RELOC_ARM_PLT32
+ at deffnx {} BFD_RELOC_ARM_RELATIVE
+ at deffnx {} BFD_RELOC_ARM_GOTOFF
+ at deffnx {} BFD_RELOC_ARM_GOTPC
+Relocations for setting up GOTs and PLTs for shared libraries.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_TLS_GD32
+ at deffnx {} BFD_RELOC_ARM_TLS_LDO32
+ at deffnx {} BFD_RELOC_ARM_TLS_LDM32
+ at deffnx {} BFD_RELOC_ARM_TLS_DTPOFF32
+ at deffnx {} BFD_RELOC_ARM_TLS_DTPMOD32
+ at deffnx {} BFD_RELOC_ARM_TLS_TPOFF32
+ at deffnx {} BFD_RELOC_ARM_TLS_IE32
+ at deffnx {} BFD_RELOC_ARM_TLS_LE32
+ARM thread-local storage relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_ARM_IMMEDIATE
+ at deffnx {} BFD_RELOC_ARM_ADRL_IMMEDIATE
+ at deffnx {} BFD_RELOC_ARM_T32_IMMEDIATE
+ at deffnx {} BFD_RELOC_ARM_T32_IMM12
+ at deffnx {} BFD_RELOC_ARM_T32_ADD_PC12
+ at deffnx {} BFD_RELOC_ARM_SHIFT_IMM
+ at deffnx {} BFD_RELOC_ARM_SMC
+ at deffnx {} BFD_RELOC_ARM_SWI
+ at deffnx {} BFD_RELOC_ARM_MULTI
+ at deffnx {} BFD_RELOC_ARM_CP_OFF_IMM
+ at deffnx {} BFD_RELOC_ARM_CP_OFF_IMM_S2
+ at deffnx {} BFD_RELOC_ARM_T32_CP_OFF_IMM
+ at deffnx {} BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
+ at deffnx {} BFD_RELOC_ARM_ADR_IMM
+ at deffnx {} BFD_RELOC_ARM_LDR_IMM
+ at deffnx {} BFD_RELOC_ARM_LITERAL
+ at deffnx {} BFD_RELOC_ARM_IN_POOL
+ at deffnx {} BFD_RELOC_ARM_OFFSET_IMM8
+ at deffnx {} BFD_RELOC_ARM_T32_OFFSET_U8
+ at deffnx {} BFD_RELOC_ARM_T32_OFFSET_IMM
+ at deffnx {} BFD_RELOC_ARM_HWLITERAL
+ at deffnx {} BFD_RELOC_ARM_THUMB_ADD
+ at deffnx {} BFD_RELOC_ARM_THUMB_IMM
+ at deffnx {} BFD_RELOC_ARM_THUMB_SHIFT
+These relocs are only used within the ARM assembler.  They are not
+(at present) written to any object files.
+ at end deffn
+ at deffn {} BFD_RELOC_SH_PCDISP8BY2
+ at deffnx {} BFD_RELOC_SH_PCDISP12BY2
+ at deffnx {} BFD_RELOC_SH_IMM3
+ at deffnx {} BFD_RELOC_SH_IMM3U
+ at deffnx {} BFD_RELOC_SH_DISP12
+ at deffnx {} BFD_RELOC_SH_DISP12BY2
+ at deffnx {} BFD_RELOC_SH_DISP12BY4
+ at deffnx {} BFD_RELOC_SH_DISP12BY8
+ at deffnx {} BFD_RELOC_SH_DISP20
+ at deffnx {} BFD_RELOC_SH_DISP20BY8
+ at deffnx {} BFD_RELOC_SH_IMM4
+ at deffnx {} BFD_RELOC_SH_IMM4BY2
+ at deffnx {} BFD_RELOC_SH_IMM4BY4
+ at deffnx {} BFD_RELOC_SH_IMM8
+ at deffnx {} BFD_RELOC_SH_IMM8BY2
+ at deffnx {} BFD_RELOC_SH_IMM8BY4
+ at deffnx {} BFD_RELOC_SH_PCRELIMM8BY2
+ at deffnx {} BFD_RELOC_SH_PCRELIMM8BY4
+ at deffnx {} BFD_RELOC_SH_SWITCH16
+ at deffnx {} BFD_RELOC_SH_SWITCH32
+ at deffnx {} BFD_RELOC_SH_USES
+ at deffnx {} BFD_RELOC_SH_COUNT
+ at deffnx {} BFD_RELOC_SH_ALIGN
+ at deffnx {} BFD_RELOC_SH_CODE
+ at deffnx {} BFD_RELOC_SH_DATA
+ at deffnx {} BFD_RELOC_SH_LABEL
+ at deffnx {} BFD_RELOC_SH_LOOP_START
+ at deffnx {} BFD_RELOC_SH_LOOP_END
+ at deffnx {} BFD_RELOC_SH_COPY
+ at deffnx {} BFD_RELOC_SH_GLOB_DAT
+ at deffnx {} BFD_RELOC_SH_JMP_SLOT
+ at deffnx {} BFD_RELOC_SH_RELATIVE
+ at deffnx {} BFD_RELOC_SH_GOTPC
+ at deffnx {} BFD_RELOC_SH_GOT_LOW16
+ at deffnx {} BFD_RELOC_SH_GOT_MEDLOW16
+ at deffnx {} BFD_RELOC_SH_GOT_MEDHI16
+ at deffnx {} BFD_RELOC_SH_GOT_HI16
+ at deffnx {} BFD_RELOC_SH_GOTPLT_LOW16
+ at deffnx {} BFD_RELOC_SH_GOTPLT_MEDLOW16
+ at deffnx {} BFD_RELOC_SH_GOTPLT_MEDHI16
+ at deffnx {} BFD_RELOC_SH_GOTPLT_HI16
+ at deffnx {} BFD_RELOC_SH_PLT_LOW16
+ at deffnx {} BFD_RELOC_SH_PLT_MEDLOW16
+ at deffnx {} BFD_RELOC_SH_PLT_MEDHI16
+ at deffnx {} BFD_RELOC_SH_PLT_HI16
+ at deffnx {} BFD_RELOC_SH_GOTOFF_LOW16
+ at deffnx {} BFD_RELOC_SH_GOTOFF_MEDLOW16
+ at deffnx {} BFD_RELOC_SH_GOTOFF_MEDHI16
+ at deffnx {} BFD_RELOC_SH_GOTOFF_HI16
+ at deffnx {} BFD_RELOC_SH_GOTPC_LOW16
+ at deffnx {} BFD_RELOC_SH_GOTPC_MEDLOW16
+ at deffnx {} BFD_RELOC_SH_GOTPC_MEDHI16
+ at deffnx {} BFD_RELOC_SH_GOTPC_HI16
+ at deffnx {} BFD_RELOC_SH_COPY64
+ at deffnx {} BFD_RELOC_SH_GLOB_DAT64
+ at deffnx {} BFD_RELOC_SH_JMP_SLOT64
+ at deffnx {} BFD_RELOC_SH_RELATIVE64
+ at deffnx {} BFD_RELOC_SH_GOT10BY4
+ at deffnx {} BFD_RELOC_SH_GOT10BY8
+ at deffnx {} BFD_RELOC_SH_GOTPLT10BY4
+ at deffnx {} BFD_RELOC_SH_GOTPLT10BY8
+ at deffnx {} BFD_RELOC_SH_GOTPLT32
+ at deffnx {} BFD_RELOC_SH_SHMEDIA_CODE
+ at deffnx {} BFD_RELOC_SH_IMMU5
+ at deffnx {} BFD_RELOC_SH_IMMS6
+ at deffnx {} BFD_RELOC_SH_IMMS6BY32
+ at deffnx {} BFD_RELOC_SH_IMMU6
+ at deffnx {} BFD_RELOC_SH_IMMS10
+ at deffnx {} BFD_RELOC_SH_IMMS10BY2
+ at deffnx {} BFD_RELOC_SH_IMMS10BY4
+ at deffnx {} BFD_RELOC_SH_IMMS10BY8
+ at deffnx {} BFD_RELOC_SH_IMMS16
+ at deffnx {} BFD_RELOC_SH_IMMU16
+ at deffnx {} BFD_RELOC_SH_IMM_LOW16
+ at deffnx {} BFD_RELOC_SH_IMM_LOW16_PCREL
+ at deffnx {} BFD_RELOC_SH_IMM_MEDLOW16
+ at deffnx {} BFD_RELOC_SH_IMM_MEDLOW16_PCREL
+ at deffnx {} BFD_RELOC_SH_IMM_MEDHI16
+ at deffnx {} BFD_RELOC_SH_IMM_MEDHI16_PCREL
+ at deffnx {} BFD_RELOC_SH_IMM_HI16
+ at deffnx {} BFD_RELOC_SH_IMM_HI16_PCREL
+ at deffnx {} BFD_RELOC_SH_PT_16
+ at deffnx {} BFD_RELOC_SH_TLS_GD_32
+ at deffnx {} BFD_RELOC_SH_TLS_LD_32
+ at deffnx {} BFD_RELOC_SH_TLS_LDO_32
+ at deffnx {} BFD_RELOC_SH_TLS_IE_32
+ at deffnx {} BFD_RELOC_SH_TLS_LE_32
+ at deffnx {} BFD_RELOC_SH_TLS_DTPMOD32
+ at deffnx {} BFD_RELOC_SH_TLS_DTPOFF32
+ at deffnx {} BFD_RELOC_SH_TLS_TPOFF32
+Renesas / SuperH SH relocs.  Not all of these appear in object files.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_16_IMM
+ADI Blackfin 16 bit immediate absolute reloc.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_16_HIGH
+ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_4_PCREL
+ADI Blackfin 'a' part of LSETUP.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_5_PCREL
+ADI Blackfin.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_16_LOW
+ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_10_PCREL
+ADI Blackfin.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_11_PCREL
+ADI Blackfin 'b' part of LSETUP.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_12_PCREL_JUMP
+ADI Blackfin.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_12_PCREL_JUMP_S
+ADI Blackfin Short jump, pcrel.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_24_PCREL_CALL_X
+ADI Blackfin Call.x not implemented.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_24_PCREL_JUMP_L
+ADI Blackfin Long Jump pcrel.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_GOT17M4
+ at deffnx {} BFD_RELOC_BFIN_GOTHI
+ at deffnx {} BFD_RELOC_BFIN_GOTLO
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOT17M4
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTHI
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTLO
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_VALUE
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
+ at deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
+ at deffnx {} BFD_RELOC_BFIN_GOTOFF17M4
+ at deffnx {} BFD_RELOC_BFIN_GOTOFFHI
+ at deffnx {} BFD_RELOC_BFIN_GOTOFFLO
+ADI Blackfin FD-PIC relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_GOT
+ADI Blackfin GOT relocation.
+ at end deffn
+ at deffn {} BFD_RELOC_BFIN_PLTPC
+ADI Blackfin PLTPC relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_PUSH
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_CONST
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_ADD
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_SUB
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_MULT
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_DIV
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_MOD
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_LSHIFT
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_RSHIFT
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_AND
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_OR
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_XOR
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_LAND
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_LOR
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_LEN
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_NEG
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_COMP
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_PAGE
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_HWPAGE
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_ARELOC_BFIN_ADDR
+ADI Blackfin arithmetic relocation.
+ at end deffn
+ at deffn {} BFD_RELOC_D10V_10_PCREL_R
+Mitsubishi D10V relocs.
+This is a 10-bit reloc with the right 2 bits
+assumed to be 0.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_D10V_18
+This is an 18-bit reloc with the right 2 bits
+assumed to be 0.
+ at end deffn
+ at deffn {} BFD_RELOC_D10V_18_PCREL
+This is an 18-bit reloc with the right 2 bits
+assumed to be 0.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_6
+Mitsubishi D30V relocs.
+This is a 6-bit absolute reloc.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_9_PCREL
+This is a 6-bit pc-relative reloc with
+the right 3 bits assumed to be 0.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_15
+This is a 12-bit absolute reloc with the
+right 3 bitsassumed to be 0.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_15_PCREL
+This is a 12-bit pc-relative reloc with
+the right 3 bits assumed to be 0.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_21
+This is an 18-bit absolute reloc with
+the right 3 bits assumed to be 0.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_21_PCREL
+This is an 18-bit pc-relative reloc with
+the right 3 bits assumed to be 0.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_32
+This is a 32-bit absolute reloc.
+ at end deffn
+ at deffn {} BFD_RELOC_D30V_32_PCREL
+This is a 32-bit pc-relative reloc.
+ at end deffn
+ at deffn {} BFD_RELOC_DLX_HI16_S
+DLX relocs
+ at end deffn
+ at deffn {} BFD_RELOC_DLX_LO16
+DLX relocs
+ at end deffn
+ at deffn {} BFD_RELOC_DLX_JMP26
+DLX relocs
+ at end deffn
+ at deffn {} BFD_RELOC_M32C_HI8
+ at deffnx {} BFD_RELOC_M32C_RL_JUMP
+ at deffnx {} BFD_RELOC_M32C_RL_1ADDR
+ at deffnx {} BFD_RELOC_M32C_RL_2ADDR
+Renesas M16C/M32C Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_24
+Renesas M32R (formerly Mitsubishi M32R) relocs.
+This is a 24 bit absolute address.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_10_PCREL
+This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_18_PCREL
+This is an 18-bit reloc with the right 2 bits assumed to be 0.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_26_PCREL
+This is a 26-bit reloc with the right 2 bits assumed to be 0.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_LO16
+This is a 16-bit reloc containing the lower 16 bits of an address.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_SDA16
+This is a 16-bit reloc containing the small data area offset for use in
+add3, load, and store instructions.
+ at end deffn
+ at deffn {} BFD_RELOC_M32R_GOT24
+ at deffnx {} BFD_RELOC_M32R_26_PLTREL
+ at deffnx {} BFD_RELOC_M32R_COPY
+ at deffnx {} BFD_RELOC_M32R_GLOB_DAT
+ at deffnx {} BFD_RELOC_M32R_JMP_SLOT
+ at deffnx {} BFD_RELOC_M32R_RELATIVE
+ at deffnx {} BFD_RELOC_M32R_GOTOFF
+ at deffnx {} BFD_RELOC_M32R_GOTOFF_HI_ULO
+ at deffnx {} BFD_RELOC_M32R_GOTOFF_HI_SLO
+ at deffnx {} BFD_RELOC_M32R_GOTOFF_LO
+ at deffnx {} BFD_RELOC_M32R_GOTPC24
+ at deffnx {} BFD_RELOC_M32R_GOT16_HI_ULO
+ at deffnx {} BFD_RELOC_M32R_GOT16_HI_SLO
+ at deffnx {} BFD_RELOC_M32R_GOT16_LO
+ at deffnx {} BFD_RELOC_M32R_GOTPC_HI_ULO
+ at deffnx {} BFD_RELOC_M32R_GOTPC_HI_SLO
+ at deffnx {} BFD_RELOC_M32R_GOTPC_LO
+For PIC.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_9_PCREL
+This is a 9-bit reloc
+ at end deffn
+ at deffn {} BFD_RELOC_V850_22_PCREL
+This is a 22-bit reloc
+ at end deffn
+ at deffn {} BFD_RELOC_V850_SDA_16_16_OFFSET
+This is a 16 bit offset from the short data area pointer.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_ZDA_16_16_OFFSET
+This is a 16 bit offset from the zero data area pointer.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_TDA_7_7_OFFSET
+This is a 7 bit offset from the tiny data area pointer.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_TDA_16_16_OFFSET
+This is a 16 bit offset from the tiny data area pointer.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_TDA_4_4_OFFSET
+This is a 4 bit offset from the tiny data area pointer.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_CALLT_6_7_OFFSET
+This is a 6 bit offset from the call table base pointer.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_CALLT_16_16_OFFSET
+This is a 16 bit offset from the call table base pointer.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_LONGCALL
+Used for relaxing indirect function calls.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_LONGJUMP
+Used for relaxing indirect jumps.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_ALIGN
+Used to maintain alignment whilst relaxing.
+ at end deffn
+ at deffn {} BFD_RELOC_V850_LO16_SPLIT_OFFSET
+This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
+instructions.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_32_PCREL
+This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
+instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MN10300_16_PCREL
+This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
+instruction.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_TIC54X_23
+This is an extended address 23-bit reloc for the tms320c54x.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_FR30_48
+This is a 48 bit reloc for the FR30 that stores 32 bits.
+ at end deffn
+ at deffn {} BFD_RELOC_FR30_20
+This is a 32 bit reloc for the FR30 that stores 20 bits split up into
+two sections.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_MCORE_PCREL_IMM8BY4
+ at deffnx {} BFD_RELOC_MCORE_PCREL_IMM11BY2
+ at deffnx {} BFD_RELOC_MCORE_PCREL_IMM4BY2
+ at deffnx {} BFD_RELOC_MCORE_PCREL_32
+ at deffnx {} BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
+ at deffnx {} BFD_RELOC_MCORE_RVA
+Motorola Mcore relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_GETA
+ at deffnx {} BFD_RELOC_MMIX_GETA_1
+ at deffnx {} BFD_RELOC_MMIX_GETA_2
+ at deffnx {} BFD_RELOC_MMIX_GETA_3
+These are relocations for the GETA instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_CBRANCH
+ at deffnx {} BFD_RELOC_MMIX_CBRANCH_J
+ at deffnx {} BFD_RELOC_MMIX_CBRANCH_1
+ at deffnx {} BFD_RELOC_MMIX_CBRANCH_2
+ at deffnx {} BFD_RELOC_MMIX_CBRANCH_3
+These are relocations for a conditional branch instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_PUSHJ
+ at deffnx {} BFD_RELOC_MMIX_PUSHJ_1
+ at deffnx {} BFD_RELOC_MMIX_PUSHJ_2
+ at deffnx {} BFD_RELOC_MMIX_PUSHJ_3
+ at deffnx {} BFD_RELOC_MMIX_PUSHJ_STUBBABLE
+These are relocations for the PUSHJ instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_JMP
+ at deffnx {} BFD_RELOC_MMIX_JMP_1
+ at deffnx {} BFD_RELOC_MMIX_JMP_2
+ at deffnx {} BFD_RELOC_MMIX_JMP_3
+These are relocations for the JMP instruction.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_ADDR19
+This is a relocation for a relative address as in a GETA instruction or
+a branch.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_ADDR27
+This is a relocation for a relative address as in a JMP instruction.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_REG
+This is a relocation for an instruction field that may be a general
+register.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_MMIX_LOCAL
+This relocation is an assertion that the expression is not allocated as
+a global register.  It does not modify contents.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_AVR_CALL
+This is a 32 bit reloc for the AVR that stores 23 bit value
+into 22 bits.
+ at end deffn
+ at deffn {} 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
+ at end deffn
+ at deffn {} BFD_RELOC_AVR_6
+This is a 6 bit reloc for the AVR that stores offset for ldd/std
+instructions
+ at end deffn
+ at deffn {} BFD_RELOC_AVR_6_ADIW
+This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
+instructions
+ at end deffn
+ at deffn {} BFD_RELOC_390_12
+Direct 12 bit.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOT12
+12 bit GOT offset.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLT32
+32 bit PC relative PLT address.
+ at end deffn
+ at deffn {} BFD_RELOC_390_COPY
+Copy symbol at runtime.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GLOB_DAT
+Create GOT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_390_JMP_SLOT
+Create PLT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_390_RELATIVE
+Adjust by program base.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPC
+32 bit PC relative offset to GOT.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOT16
+16 bit GOT offset.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PC16DBL
+PC relative 16 bit shifted by 1.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLT16DBL
+16 bit PC rel. PLT shifted by 1.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PC32DBL
+PC relative 32 bit shifted by 1.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLT32DBL
+32 bit PC rel. PLT shifted by 1.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPCDBL
+32 bit PC rel. GOT shifted by 1.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOT64
+64 bit GOT offset.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLT64
+64 bit PC relative PLT address.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTENT
+32 bit rel. offset to GOT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTOFF64
+64 bit offset to GOT.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPLT12
+12-bit offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPLT16
+16-bit offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPLT32
+32-bit offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPLT64
+64-bit offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_390_GOTPLTENT
+32-bit rel. offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLTOFF16
+16-bit rel. offset from the GOT to a PLT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLTOFF32
+32-bit rel. offset from the GOT to a PLT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_390_PLTOFF64
+64-bit rel. offset from the GOT to a PLT entry.
+ at end deffn
+ at deffn {} BFD_RELOC_390_TLS_LOAD
+ at deffnx {} BFD_RELOC_390_TLS_GDCALL
+ at deffnx {} BFD_RELOC_390_TLS_LDCALL
+ at deffnx {} BFD_RELOC_390_TLS_GD32
+ at deffnx {} BFD_RELOC_390_TLS_GD64
+ at deffnx {} BFD_RELOC_390_TLS_GOTIE12
+ at deffnx {} BFD_RELOC_390_TLS_GOTIE32
+ at deffnx {} BFD_RELOC_390_TLS_GOTIE64
+ at deffnx {} BFD_RELOC_390_TLS_LDM32
+ at deffnx {} BFD_RELOC_390_TLS_LDM64
+ at deffnx {} BFD_RELOC_390_TLS_IE32
+ at deffnx {} BFD_RELOC_390_TLS_IE64
+ at deffnx {} BFD_RELOC_390_TLS_IEENT
+ at deffnx {} BFD_RELOC_390_TLS_LE32
+ at deffnx {} BFD_RELOC_390_TLS_LE64
+ at deffnx {} BFD_RELOC_390_TLS_LDO32
+ at deffnx {} BFD_RELOC_390_TLS_LDO64
+ at deffnx {} BFD_RELOC_390_TLS_DTPMOD
+ at deffnx {} BFD_RELOC_390_TLS_DTPOFF
+ at deffnx {} BFD_RELOC_390_TLS_TPOFF
+s390 tls relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_390_20
+ at deffnx {} BFD_RELOC_390_GOT20
+ at deffnx {} BFD_RELOC_390_GOTPLT20
+ at deffnx {} BFD_RELOC_390_TLS_GOTIE20
+Long displacement extension.
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_FR9
+Scenix IP2K - 9-bit register number / data address
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_BANK
+Scenix IP2K - 4-bit register/data bank number
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_ADDR16CJP
+Scenix IP2K - low 13 bits of instruction word address
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_PAGE3
+Scenix IP2K - high 3 bits of instruction word address
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_LO8DATA
+ at deffnx {} BFD_RELOC_IP2K_HI8DATA
+ at deffnx {} BFD_RELOC_IP2K_EX8DATA
+Scenix IP2K - ext/low/high 8 bits of data address
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_LO8INSN
+ at deffnx {} BFD_RELOC_IP2K_HI8INSN
+Scenix IP2K - low/high 8 bits of instruction word address
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_PC_SKIP
+Scenix IP2K - even/odd PC modifier to modify snb pcl.0
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_TEXT
+Scenix IP2K - 16 bit word address in text section.
+ at end deffn
+ at deffn {} BFD_RELOC_IP2K_FR_OFFSET
+Scenix IP2K - 7-bit sp or dp offset
+ at end deffn
+ at deffn {} BFD_RELOC_VPE4KMATH_DATA
+ at deffnx {} BFD_RELOC_VPE4KMATH_INSN
+Scenix VPE4K coprocessor - data/insn-space addressing
+ at end deffn
+ at deffn {} BFD_RELOC_VTABLE_INHERIT
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_IA64_IMM14
+ at deffnx {} BFD_RELOC_IA64_IMM22
+ at deffnx {} BFD_RELOC_IA64_IMM64
+ at deffnx {} BFD_RELOC_IA64_DIR32MSB
+ at deffnx {} BFD_RELOC_IA64_DIR32LSB
+ at deffnx {} BFD_RELOC_IA64_DIR64MSB
+ at deffnx {} BFD_RELOC_IA64_DIR64LSB
+ at deffnx {} BFD_RELOC_IA64_GPREL22
+ at deffnx {} BFD_RELOC_IA64_GPREL64I
+ at deffnx {} BFD_RELOC_IA64_GPREL32MSB
+ at deffnx {} BFD_RELOC_IA64_GPREL32LSB
+ at deffnx {} BFD_RELOC_IA64_GPREL64MSB
+ at deffnx {} BFD_RELOC_IA64_GPREL64LSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF22
+ at deffnx {} BFD_RELOC_IA64_LTOFF64I
+ at deffnx {} BFD_RELOC_IA64_PLTOFF22
+ at deffnx {} BFD_RELOC_IA64_PLTOFF64I
+ at deffnx {} BFD_RELOC_IA64_PLTOFF64MSB
+ at deffnx {} BFD_RELOC_IA64_PLTOFF64LSB
+ at deffnx {} BFD_RELOC_IA64_FPTR64I
+ at deffnx {} BFD_RELOC_IA64_FPTR32MSB
+ at deffnx {} BFD_RELOC_IA64_FPTR32LSB
+ at deffnx {} BFD_RELOC_IA64_FPTR64MSB
+ at deffnx {} BFD_RELOC_IA64_FPTR64LSB
+ at deffnx {} BFD_RELOC_IA64_PCREL21B
+ at deffnx {} BFD_RELOC_IA64_PCREL21BI
+ at deffnx {} BFD_RELOC_IA64_PCREL21M
+ at deffnx {} BFD_RELOC_IA64_PCREL21F
+ at deffnx {} BFD_RELOC_IA64_PCREL22
+ at deffnx {} BFD_RELOC_IA64_PCREL60B
+ at deffnx {} BFD_RELOC_IA64_PCREL64I
+ at deffnx {} BFD_RELOC_IA64_PCREL32MSB
+ at deffnx {} BFD_RELOC_IA64_PCREL32LSB
+ at deffnx {} BFD_RELOC_IA64_PCREL64MSB
+ at deffnx {} BFD_RELOC_IA64_PCREL64LSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_FPTR22
+ at deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64I
+ at deffnx {} BFD_RELOC_IA64_LTOFF_FPTR32MSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_FPTR32LSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64MSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64LSB
+ at deffnx {} BFD_RELOC_IA64_SEGREL32MSB
+ at deffnx {} BFD_RELOC_IA64_SEGREL32LSB
+ at deffnx {} BFD_RELOC_IA64_SEGREL64MSB
+ at deffnx {} BFD_RELOC_IA64_SEGREL64LSB
+ at deffnx {} BFD_RELOC_IA64_SECREL32MSB
+ at deffnx {} BFD_RELOC_IA64_SECREL32LSB
+ at deffnx {} BFD_RELOC_IA64_SECREL64MSB
+ at deffnx {} BFD_RELOC_IA64_SECREL64LSB
+ at deffnx {} BFD_RELOC_IA64_REL32MSB
+ at deffnx {} BFD_RELOC_IA64_REL32LSB
+ at deffnx {} BFD_RELOC_IA64_REL64MSB
+ at deffnx {} BFD_RELOC_IA64_REL64LSB
+ at deffnx {} BFD_RELOC_IA64_LTV32MSB
+ at deffnx {} BFD_RELOC_IA64_LTV32LSB
+ at deffnx {} BFD_RELOC_IA64_LTV64MSB
+ at deffnx {} BFD_RELOC_IA64_LTV64LSB
+ at deffnx {} BFD_RELOC_IA64_IPLTMSB
+ at deffnx {} BFD_RELOC_IA64_IPLTLSB
+ at deffnx {} BFD_RELOC_IA64_COPY
+ at deffnx {} BFD_RELOC_IA64_LTOFF22X
+ at deffnx {} BFD_RELOC_IA64_LDXMOV
+ at deffnx {} BFD_RELOC_IA64_TPREL14
+ at deffnx {} BFD_RELOC_IA64_TPREL22
+ at deffnx {} BFD_RELOC_IA64_TPREL64I
+ at deffnx {} BFD_RELOC_IA64_TPREL64MSB
+ at deffnx {} BFD_RELOC_IA64_TPREL64LSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_TPREL22
+ at deffnx {} BFD_RELOC_IA64_DTPMOD64MSB
+ at deffnx {} BFD_RELOC_IA64_DTPMOD64LSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_DTPMOD22
+ at deffnx {} BFD_RELOC_IA64_DTPREL14
+ at deffnx {} BFD_RELOC_IA64_DTPREL22
+ at deffnx {} BFD_RELOC_IA64_DTPREL64I
+ at deffnx {} BFD_RELOC_IA64_DTPREL32MSB
+ at deffnx {} BFD_RELOC_IA64_DTPREL32LSB
+ at deffnx {} BFD_RELOC_IA64_DTPREL64MSB
+ at deffnx {} BFD_RELOC_IA64_DTPREL64LSB
+ at deffnx {} BFD_RELOC_IA64_LTOFF_DTPREL22
+Intel IA64 Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_M68HC11_HI8
+Motorola 68HC11 reloc.
+This is the 8 bit high part of an absolute address.
+ at end deffn
+ at deffn {} BFD_RELOC_M68HC11_LO8
+Motorola 68HC11 reloc.
+This is the 8 bit low part of an absolute address.
+ at end deffn
+ at deffn {} BFD_RELOC_M68HC11_3B
+Motorola 68HC11 reloc.
+This is the 3 bit of a value.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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).
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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).
+ at end deffn
+ at deffn {} BFD_RELOC_M68HC12_5B
+Motorola 68HC12 reloc.
+This is the 5 bits of a value.
+ at end deffn
+ at deffn {} BFD_RELOC_16C_NUM08
+ at deffnx {} BFD_RELOC_16C_NUM08_C
+ at deffnx {} BFD_RELOC_16C_NUM16
+ at deffnx {} BFD_RELOC_16C_NUM16_C
+ at deffnx {} BFD_RELOC_16C_NUM32
+ at deffnx {} BFD_RELOC_16C_NUM32_C
+ at deffnx {} BFD_RELOC_16C_DISP04
+ at deffnx {} BFD_RELOC_16C_DISP04_C
+ at deffnx {} BFD_RELOC_16C_DISP08
+ at deffnx {} BFD_RELOC_16C_DISP08_C
+ at deffnx {} BFD_RELOC_16C_DISP16
+ at deffnx {} BFD_RELOC_16C_DISP16_C
+ at deffnx {} BFD_RELOC_16C_DISP24
+ at deffnx {} BFD_RELOC_16C_DISP24_C
+ at deffnx {} BFD_RELOC_16C_DISP24a
+ at deffnx {} BFD_RELOC_16C_DISP24a_C
+ at deffnx {} BFD_RELOC_16C_REG04
+ at deffnx {} BFD_RELOC_16C_REG04_C
+ at deffnx {} BFD_RELOC_16C_REG04a
+ at deffnx {} BFD_RELOC_16C_REG04a_C
+ at deffnx {} BFD_RELOC_16C_REG14
+ at deffnx {} BFD_RELOC_16C_REG14_C
+ at deffnx {} BFD_RELOC_16C_REG16
+ at deffnx {} BFD_RELOC_16C_REG16_C
+ at deffnx {} BFD_RELOC_16C_REG20
+ at deffnx {} BFD_RELOC_16C_REG20_C
+ at deffnx {} BFD_RELOC_16C_ABS20
+ at deffnx {} BFD_RELOC_16C_ABS20_C
+ at deffnx {} BFD_RELOC_16C_ABS24
+ at deffnx {} BFD_RELOC_16C_ABS24_C
+ at deffnx {} BFD_RELOC_16C_IMM04
+ at deffnx {} BFD_RELOC_16C_IMM04_C
+ at deffnx {} BFD_RELOC_16C_IMM16
+ at deffnx {} BFD_RELOC_16C_IMM16_C
+ at deffnx {} BFD_RELOC_16C_IMM20
+ at deffnx {} BFD_RELOC_16C_IMM20_C
+ at deffnx {} BFD_RELOC_16C_IMM24
+ at deffnx {} BFD_RELOC_16C_IMM24_C
+ at deffnx {} BFD_RELOC_16C_IMM32
+ at deffnx {} BFD_RELOC_16C_IMM32_C
+NS CR16C Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_CRX_REL4
+ at deffnx {} BFD_RELOC_CRX_REL8
+ at deffnx {} BFD_RELOC_CRX_REL8_CMP
+ at deffnx {} BFD_RELOC_CRX_REL16
+ at deffnx {} BFD_RELOC_CRX_REL24
+ at deffnx {} BFD_RELOC_CRX_REL32
+ at deffnx {} BFD_RELOC_CRX_REGREL12
+ at deffnx {} BFD_RELOC_CRX_REGREL22
+ at deffnx {} BFD_RELOC_CRX_REGREL28
+ at deffnx {} BFD_RELOC_CRX_REGREL32
+ at deffnx {} BFD_RELOC_CRX_ABS16
+ at deffnx {} BFD_RELOC_CRX_ABS32
+ at deffnx {} BFD_RELOC_CRX_NUM8
+ at deffnx {} BFD_RELOC_CRX_NUM16
+ at deffnx {} BFD_RELOC_CRX_NUM32
+ at deffnx {} BFD_RELOC_CRX_IMM16
+ at deffnx {} BFD_RELOC_CRX_IMM32
+ at deffnx {} BFD_RELOC_CRX_SWITCH8
+ at deffnx {} BFD_RELOC_CRX_SWITCH16
+ at deffnx {} BFD_RELOC_CRX_SWITCH32
+NS CRX Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_BDISP8
+ at deffnx {} BFD_RELOC_CRIS_UNSIGNED_5
+ at deffnx {} BFD_RELOC_CRIS_SIGNED_6
+ at deffnx {} BFD_RELOC_CRIS_UNSIGNED_6
+ at deffnx {} BFD_RELOC_CRIS_SIGNED_8
+ at deffnx {} BFD_RELOC_CRIS_UNSIGNED_8
+ at deffnx {} BFD_RELOC_CRIS_SIGNED_16
+ at deffnx {} BFD_RELOC_CRIS_UNSIGNED_16
+ at deffnx {} BFD_RELOC_CRIS_LAPCQ_OFFSET
+ at deffnx {} BFD_RELOC_CRIS_UNSIGNED_4
+These relocs are only used within the CRIS assembler.  They are not
+(at present) written to any object files.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_COPY
+ at deffnx {} BFD_RELOC_CRIS_GLOB_DAT
+ at deffnx {} BFD_RELOC_CRIS_JUMP_SLOT
+ at deffnx {} BFD_RELOC_CRIS_RELATIVE
+Relocs used in ELF shared libraries for CRIS.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_32_GOT
+32-bit offset to symbol-entry within GOT.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_16_GOT
+16-bit offset to symbol-entry within GOT.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_32_GOTPLT
+32-bit offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_16_GOTPLT
+16-bit offset to symbol-entry within GOT, with PLT handling.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_32_GOTREL
+32-bit offset to symbol, relative to GOT.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_32_PLT_GOTREL
+32-bit offset to symbol with PLT entry, relative to GOT.
+ at end deffn
+ at deffn {} BFD_RELOC_CRIS_32_PLT_PCREL
+32-bit offset to symbol with PLT entry, relative to this relocation.
+ at end deffn
+ at deffn {} BFD_RELOC_860_COPY
+ at deffnx {} BFD_RELOC_860_GLOB_DAT
+ at deffnx {} BFD_RELOC_860_JUMP_SLOT
+ at deffnx {} BFD_RELOC_860_RELATIVE
+ at deffnx {} BFD_RELOC_860_PC26
+ at deffnx {} BFD_RELOC_860_PLT26
+ at deffnx {} BFD_RELOC_860_PC16
+ at deffnx {} BFD_RELOC_860_LOW0
+ at deffnx {} BFD_RELOC_860_SPLIT0
+ at deffnx {} BFD_RELOC_860_LOW1
+ at deffnx {} BFD_RELOC_860_SPLIT1
+ at deffnx {} BFD_RELOC_860_LOW2
+ at deffnx {} BFD_RELOC_860_SPLIT2
+ at deffnx {} BFD_RELOC_860_LOW3
+ at deffnx {} BFD_RELOC_860_LOGOT0
+ at deffnx {} BFD_RELOC_860_SPGOT0
+ at deffnx {} BFD_RELOC_860_LOGOT1
+ at deffnx {} BFD_RELOC_860_SPGOT1
+ at deffnx {} BFD_RELOC_860_LOGOTOFF0
+ at deffnx {} BFD_RELOC_860_SPGOTOFF0
+ at deffnx {} BFD_RELOC_860_LOGOTOFF1
+ at deffnx {} BFD_RELOC_860_SPGOTOFF1
+ at deffnx {} BFD_RELOC_860_LOGOTOFF2
+ at deffnx {} BFD_RELOC_860_LOGOTOFF3
+ at deffnx {} BFD_RELOC_860_LOPC
+ at deffnx {} BFD_RELOC_860_HIGHADJ
+ at deffnx {} BFD_RELOC_860_HAGOT
+ at deffnx {} BFD_RELOC_860_HAGOTOFF
+ at deffnx {} BFD_RELOC_860_HAPC
+ at deffnx {} BFD_RELOC_860_HIGH
+ at deffnx {} BFD_RELOC_860_HIGOT
+ at deffnx {} BFD_RELOC_860_HIGOTOFF
+Intel i860 Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_OPENRISC_ABS_26
+ at deffnx {} BFD_RELOC_OPENRISC_REL_26
+OpenRISC Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_H8_DIR16A8
+ at deffnx {} BFD_RELOC_H8_DIR16R8
+ at deffnx {} BFD_RELOC_H8_DIR24A8
+ at deffnx {} BFD_RELOC_H8_DIR24R8
+ at deffnx {} BFD_RELOC_H8_DIR32A16
+H8 elf Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_XSTORMY16_REL_12
+ at deffnx {} BFD_RELOC_XSTORMY16_12
+ at deffnx {} BFD_RELOC_XSTORMY16_24
+ at deffnx {} BFD_RELOC_XSTORMY16_FPTR16
+Sony Xstormy16 Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_XC16X_PAG
+ at deffnx {} BFD_RELOC_XC16X_POF
+ at deffnx {} BFD_RELOC_XC16X_SEG
+ at deffnx {} BFD_RELOC_XC16X_SOF
+Infineon Relocations.
+ at end deffn
+ at deffn {} BFD_RELOC_VAX_GLOB_DAT
+ at deffnx {} BFD_RELOC_VAX_JMP_SLOT
+ at deffnx {} BFD_RELOC_VAX_RELATIVE
+Relocations used by VAX ELF.
+ at end deffn
+ at deffn {} BFD_RELOC_MT_PC16
+Morpho MT - 16 bit immediate relocation.
+ at end deffn
+ at deffn {} BFD_RELOC_MT_HI16
+Morpho MT - Hi 16 bits of an address.
+ at end deffn
+ at deffn {} BFD_RELOC_MT_LO16
+Morpho MT - Low 16 bits of an address.
+ at end deffn
+ at deffn {} BFD_RELOC_MT_GNU_VTINHERIT
+Morpho MT - Used to tell the linker which vtable entries are used.
+ at end deffn
+ at deffn {} BFD_RELOC_MT_GNU_VTENTRY
+Morpho MT - Used to tell the linker which vtable entries are used.
+ at end deffn
+ at deffn {} BFD_RELOC_MT_PCINSN8
+Morpho MT - 8 bit immediate relocation.
+ at end deffn
+ at deffn {} BFD_RELOC_MSP430_10_PCREL
+ at deffnx {} BFD_RELOC_MSP430_16_PCREL
+ at deffnx {} BFD_RELOC_MSP430_16
+ at deffnx {} BFD_RELOC_MSP430_16_PCREL_BYTE
+ at deffnx {} BFD_RELOC_MSP430_16_BYTE
+ at deffnx {} BFD_RELOC_MSP430_2X_PCREL
+ at deffnx {} BFD_RELOC_MSP430_RL_PCREL
+msp430 specific relocation codes
+ at end deffn
+ at deffn {} BFD_RELOC_IQ2000_OFFSET_16
+ at deffnx {} BFD_RELOC_IQ2000_OFFSET_21
+ at deffnx {} BFD_RELOC_IQ2000_UHI16
+IQ2000 Relocations.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_XTENSA_GLOB_DAT
+ at deffnx {} BFD_RELOC_XTENSA_JMP_SLOT
+ at deffnx {} BFD_RELOC_XTENSA_RELATIVE
+Xtensa relocations for ELF shared objects.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_XTENSA_DIFF8
+ at deffnx {} BFD_RELOC_XTENSA_DIFF16
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_XTENSA_SLOT0_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT1_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT2_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT3_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT4_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT5_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT6_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT7_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT8_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT9_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT10_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT11_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT12_OP
+ at deffnx {} BFD_RELOC_XTENSA_SLOT13_OP
+ at deffnx {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_XTENSA_SLOT0_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT1_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT2_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT3_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT4_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT5_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT6_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT7_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT8_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT9_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT10_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT11_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT12_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT13_ALT
+ at deffnx {} BFD_RELOC_XTENSA_SLOT14_ALT
+Alternate Xtensa relocations.  Only the slot is encoded in the
+relocation.  The meaning of these relocations is opcode-specific.
+ at end deffn
+ at deffn {} BFD_RELOC_XTENSA_OP0
+ at deffnx {} BFD_RELOC_XTENSA_OP1
+ at deffnx {} BFD_RELOC_XTENSA_OP2
+Xtensa relocations for backward compatibility.  These have all been
+replaced by BFD_RELOC_XTENSA_SLOT0_OP.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} 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.
+ at end deffn
+ at deffn {} BFD_RELOC_Z80_DISP8
+8 bit signed offset in (ix+d) or (iy+d).
+ at end deffn
+ at deffn {} BFD_RELOC_Z8K_DISP7
+DJNZ offset.
+ at end deffn
+ at deffn {} BFD_RELOC_Z8K_CALLR
+CALR offset.
+ at end deffn
+ at deffn {} BFD_RELOC_Z8K_IMM4L
+4 bit value.
+ at end deffn
+
+ at example
+
+typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+ at end example
+ at findex bfd_reloc_type_lookup
+ at subsubsection @code{bfd_reloc_type_lookup}
+ at strong{Synopsis}
+ at example
+reloc_howto_type *bfd_reloc_type_lookup
+   (bfd *abfd, bfd_reloc_code_real_type code);
+ at end example
+ at strong{Description}@*
+Return a pointer to a howto structure which, when
+invoked, will perform the relocation @var{code} on data from the
+architecture noted.
+
+ at findex bfd_default_reloc_type_lookup
+ at subsubsection @code{bfd_default_reloc_type_lookup}
+ at strong{Synopsis}
+ at example
+reloc_howto_type *bfd_default_reloc_type_lookup
+   (bfd *abfd, bfd_reloc_code_real_type  code);
+ at end example
+ at strong{Description}@*
+Provides a default relocation lookup routine for any architecture.
+
+ at findex bfd_get_reloc_code_name
+ at subsubsection @code{bfd_get_reloc_code_name}
+ at strong{Synopsis}
+ at example
+const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
+ at end example
+ at strong{Description}@*
+Provides a printable name for the supplied relocation code.
+Useful mainly for printing error messages.
+
+ at findex bfd_generic_relax_section
+ at subsubsection @code{bfd_generic_relax_section}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_generic_relax_section
+   (bfd *abfd,
+    asection *section,
+    struct bfd_link_info *,
+    bfd_boolean *);
+ at end example
+ at strong{Description}@*
+Provides default handling for relaxing for back ends which
+don't do relaxing.
+
+ at findex bfd_generic_gc_sections
+ at subsubsection @code{bfd_generic_gc_sections}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_generic_gc_sections
+   (bfd *, struct bfd_link_info *);
+ at end example
+ at strong{Description}@*
+Provides default handling for relaxing for back ends which
+don't do section gc -- i.e., does nothing.
+
+ at findex bfd_generic_merge_sections
+ at subsubsection @code{bfd_generic_merge_sections}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_generic_merge_sections
+   (bfd *, struct bfd_link_info *);
+ at end example
+ at strong{Description}@*
+Provides default handling for SEC_MERGE section merging for back ends
+which don't have SEC_MERGE support -- i.e., does nothing.
+
+ at findex bfd_generic_get_relocated_section_contents
+ at subsubsection @code{bfd_generic_get_relocated_section_contents}
+ at strong{Synopsis}
+ at example
+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);
+ at end example
+ at strong{Description}@*
+Provides default handling of relocation effort for back ends
+which can't be bothered to do it efficiently.
+

Added: branches/binutils/package/bfd/doc/section.texi
===================================================================
--- branches/binutils/package/bfd/doc/section.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/section.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,989 @@
+ at section 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 @code{section.c}.
+
+ at menu
+* Section Input::
+* Section Output::
+* typedef asection::
+* section prototypes::
+ at end menu
+
+ at node Section Input, Section Output, Sections, Sections
+ at subsection 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, @code{a.out} would contain at least
+three sections, called @code{.text}, @code{.data} and @code{.bss}.
+
+Names need not be unique; for example a COFF file may have several
+sections named @code{.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
+ at code{bfd_make_section}) to the sections attached to an already open
+BFD. For example, the linker creates an extra section
+ at code{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 @code{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.
+
+ at node Section Output, typedef asection, Section Input, Sections
+ at subsection 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 @code{bfd_set_section_contents}.
+
+Any program that creates or combines sections (e.g., the assembler
+and linker) must use the @code{asection} fields @code{output_section} and
+ at code{output_offset} to indicate the file sections to which each
+section must be written.  (If the section is being created from
+scratch, @code{output_section} should probably point to the section
+itself and @code{output_offset} should probably be zero.)
+
+The data to be written comes from input sections attached
+(via @code{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 @code{asection}
+structures would look like:
+
+ at example
+   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  --------|
+ at end example
+
+ at subsection Link orders
+The data within a section is stored in a @dfn{link_order}.
+These are much like the fixups in @code{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.
+
+
+ at node typedef asection, section prototypes, Section Output, Sections
+ at subsection typedef asection
+Here is the section structure:
+
+
+ at example
+
+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 @code{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., @code{__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 @code{__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
+     @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}; a debug section could be
+     @code{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.  */
+#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 @code{a.out}, where
+      the default address for @code{.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 @code{.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))
+
+extern const struct bfd_symbol * const bfd_abs_symbol;
+extern const struct bfd_symbol * const bfd_com_symbol;
+extern const struct bfd_symbol * const bfd_und_symbol;
+extern const struct bfd_symbol * const bfd_ind_symbol;
+
+/* 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, SYM_PTR, 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,                                                       */  \
+     (struct bfd_symbol *) SYM,                                        \
+                                                                       \
+  /* symbol_ptr_ptr,                                               */  \
+     (struct bfd_symbol **) SYM_PTR,                                   \
+                                                                       \
+  /* map_head, map_tail                                            */  \
+     @{ NULL @}, @{ NULL @}                                                \
+    @}
+
+ at end example
+
+ at node section prototypes,  , typedef asection, Sections
+ at subsection Section prototypes
+These are the functions exported by the section handling part of BFD.
+
+ at findex bfd_section_list_clear
+ at subsubsection @code{bfd_section_list_clear}
+ at strong{Synopsis}
+ at example
+void bfd_section_list_clear (bfd *);
+ at end example
+ at strong{Description}@*
+Clears the section list, and also resets the section count and
+hash table entries.
+
+ at findex bfd_get_section_by_name
+ at subsubsection @code{bfd_get_section_by_name}
+ at strong{Synopsis}
+ at example
+asection *bfd_get_section_by_name (bfd *abfd, const char *name);
+ at end example
+ at strong{Description}@*
+Run through @var{abfd} and return the one of the
+ at code{asection}s whose name matches @var{name}, otherwise @code{NULL}.
+ at xref{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 @code{bfd_map_over_sections} and
+ at code{strcmp} on the name (or better yet, base it on the section flags
+or something else) for each section.
+
+ at findex bfd_get_section_by_name_if
+ at subsubsection @code{bfd_get_section_by_name_if}
+ at strong{Synopsis}
+ at example
+asection *bfd_get_section_by_name_if
+   (bfd *abfd,
+    const char *name,
+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+ at end example
+ at strong{Description}@*
+Call the provided function @var{func} for each section
+attached to the BFD @var{abfd} whose name matches @var{name},
+passing @var{obj} as an argument. The function will be called
+as if by
+
+ at example
+       func (abfd, the_section, obj);
+ at end example
+
+It returns the first section for which @var{func} returns true,
+otherwise @code{NULL}.
+
+ at findex bfd_get_unique_section_name
+ at subsubsection @code{bfd_get_unique_section_name}
+ at strong{Synopsis}
+ at example
+char *bfd_get_unique_section_name
+   (bfd *abfd, const char *templat, int *count);
+ at end example
+ at strong{Description}@*
+Invent a section name that is unique in @var{abfd} by tacking
+a dot and a digit suffix onto the original @var{templat}.  If
+ at var{count} is non-NULL, then it specifies the first number
+tried as a suffix to generate a unique name.  The value
+pointed to by @var{count} will be incremented in this case.
+
+ at findex bfd_make_section_old_way
+ at subsubsection @code{bfd_make_section_old_way}
+ at strong{Synopsis}
+ at example
+asection *bfd_make_section_old_way (bfd *abfd, const char *name);
+ at end example
+ at strong{Description}@*
+Create a new empty section called @var{name}
+and attach it to the end of the chain of sections for the
+BFD @var{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:
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_invalid_operation} -
+If output has already started for this BFD.
+ at item
+ at code{bfd_error_no_memory} -
+If memory allocation fails.
+ at end itemize
+
+ at findex bfd_make_section_anyway_with_flags
+ at subsubsection @code{bfd_make_section_anyway_with_flags}
+ at strong{Synopsis}
+ at example
+asection *bfd_make_section_anyway_with_flags
+   (bfd *abfd, const char *name, flagword flags);
+ at end example
+ at strong{Description}@*
+Create a new empty section called @var{name} and attach it to the end of
+the chain of sections for @var{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 @var{flags}.
+
+Return @code{NULL} and set @code{bfd_error} on error; possible errors are:
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_invalid_operation} - If output has already started for @var{abfd}.
+ at item
+ at code{bfd_error_no_memory} - If memory allocation fails.
+ at end itemize
+
+ at findex bfd_make_section_anyway
+ at subsubsection @code{bfd_make_section_anyway}
+ at strong{Synopsis}
+ at example
+asection *bfd_make_section_anyway (bfd *abfd, const char *name);
+ at end example
+ at strong{Description}@*
+Create a new empty section called @var{name} and attach it to the end of
+the chain of sections for @var{abfd}.  Create a new section even if there
+is already a section with that name.
+
+Return @code{NULL} and set @code{bfd_error} on error; possible errors are:
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_invalid_operation} - If output has already started for @var{abfd}.
+ at item
+ at code{bfd_error_no_memory} - If memory allocation fails.
+ at end itemize
+
+ at findex bfd_make_section_with_flags
+ at subsubsection @code{bfd_make_section_with_flags}
+ at strong{Synopsis}
+ at example
+asection *bfd_make_section_with_flags
+   (bfd *, const char *name, flagword flags);
+ at end example
+ at strong{Description}@*
+Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
+bfd_set_error ()) without changing the section chain if there is already a
+section named @var{name}.  Also set the attributes of the new section to
+the value @var{flags}.  If there is an error, return @code{NULL} and set
+ at code{bfd_error}.
+
+ at findex bfd_make_section
+ at subsubsection @code{bfd_make_section}
+ at strong{Synopsis}
+ at example
+asection *bfd_make_section (bfd *, const char *name);
+ at end example
+ at strong{Description}@*
+Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
+bfd_set_error ()) without changing the section chain if there is already a
+section named @var{name}.  If there is an error, return @code{NULL} and set
+ at code{bfd_error}.
+
+ at findex bfd_set_section_flags
+ at subsubsection @code{bfd_set_section_flags}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_section_flags
+   (bfd *abfd, asection *sec, flagword flags);
+ at end example
+ at strong{Description}@*
+Set the attributes of the section @var{sec} in the BFD
+ at var{abfd} to the value @var{flags}. Return @code{TRUE} on success,
+ at code{FALSE} on error. Possible error returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_invalid_operation} -
+The section cannot have one or more of the attributes
+requested. For example, a .bss section in @code{a.out} may not
+have the @code{SEC_HAS_CONTENTS} field set.
+ at end itemize
+
+ at findex bfd_map_over_sections
+ at subsubsection @code{bfd_map_over_sections}
+ at strong{Synopsis}
+ at example
+void bfd_map_over_sections
+   (bfd *abfd,
+    void (*func) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+ at end example
+ at strong{Description}@*
+Call the provided function @var{func} for each section
+attached to the BFD @var{abfd}, passing @var{obj} as an
+argument. The function will be called as if by
+
+ at example
+       func (abfd, the_section, obj);
+ at end example
+
+This is the preferred method for iterating over sections; an
+alternative would be to use a loop:
+
+ at example
+          section *p;
+          for (p = abfd->sections; p != NULL; p = p->next)
+             func (abfd, p, ...)
+ at end example
+
+ at findex bfd_sections_find_if
+ at subsubsection @code{bfd_sections_find_if}
+ at strong{Synopsis}
+ at example
+asection *bfd_sections_find_if
+   (bfd *abfd,
+    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+ at end example
+ at strong{Description}@*
+Call the provided function @var{operation} for each section
+attached to the BFD @var{abfd}, passing @var{obj} as an
+argument. The function will be called as if by
+
+ at example
+       operation (abfd, the_section, obj);
+ at end example
+
+It returns the first section for which @var{operation} returns true.
+
+ at findex bfd_set_section_size
+ at subsubsection @code{bfd_set_section_size}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_section_size
+   (bfd *abfd, asection *sec, bfd_size_type val);
+ at end example
+ at strong{Description}@*
+Set @var{sec} to the size @var{val}. If the operation is
+ok, then @code{TRUE} is returned, else @code{FALSE}.
+
+Possible error returns:
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_invalid_operation} -
+Writing has started to the BFD, so setting the size is invalid.
+ at end itemize
+
+ at findex bfd_set_section_contents
+ at subsubsection @code{bfd_set_section_contents}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_section_contents
+   (bfd *abfd, asection *section, const void *data,
+    file_ptr offset, bfd_size_type count);
+ at end example
+ at strong{Description}@*
+Sets the contents of the section @var{section} in BFD
+ at var{abfd} to the data starting in memory at @var{data}. The
+data is written to the output section starting at offset
+ at var{offset} for @var{count} octets.
+
+Normally @code{TRUE} is returned, else @code{FALSE}. Possible error
+returns are:
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_contents} -
+The output section does not have the @code{SEC_HAS_CONTENTS}
+attribute, so nothing can be written to it.
+ at item
+and some more too
+ at end itemize
+This routine is front end to the back end function
+ at code{_bfd_set_section_contents}.
+
+ at findex bfd_get_section_contents
+ at subsubsection @code{bfd_get_section_contents}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_get_section_contents
+   (bfd *abfd, asection *section, void *location, file_ptr offset,
+    bfd_size_type count);
+ at end example
+ at strong{Description}@*
+Read data from @var{section} in BFD @var{abfd}
+into memory starting at @var{location}. The data is read at an
+offset of @var{offset} from the start of the input section,
+and is read for @var{count} bytes.
+
+If the contents of a constructor with the @code{SEC_CONSTRUCTOR}
+flag set are requested or if the section does not have the
+ at code{SEC_HAS_CONTENTS} flag set, then the @var{location} is filled
+with zeroes. If no errors occur, @code{TRUE} is returned, else
+ at code{FALSE}.
+
+ at findex bfd_malloc_and_get_section
+ at subsubsection @code{bfd_malloc_and_get_section}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_malloc_and_get_section
+   (bfd *abfd, asection *section, bfd_byte **buf);
+ at end example
+ at strong{Description}@*
+Read all data from @var{section} in BFD @var{abfd}
+into a buffer, *@var{buf}, malloc'd by this function.
+
+ at findex bfd_copy_private_section_data
+ at subsubsection @code{bfd_copy_private_section_data}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_copy_private_section_data
+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+ at end example
+ at strong{Description}@*
+Copy private section information from @var{isec} in the BFD
+ at var{ibfd} to the section @var{osec} in the BFD @var{obfd}.
+Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
+returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_memory} -
+Not enough memory exists to create private data for @var{osec}.
+ at end itemize
+ at example
+#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+     BFD_SEND (obfd, _bfd_copy_private_section_data, \
+               (ibfd, isection, obfd, osection))
+ at end example
+
+ at findex bfd_generic_is_group_section
+ at subsubsection @code{bfd_generic_is_group_section}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+ at end example
+ at strong{Description}@*
+Returns TRUE if @var{sec} is a member of a group.
+
+ at findex bfd_generic_discard_group
+ at subsubsection @code{bfd_generic_discard_group}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+ at end example
+ at strong{Description}@*
+Remove all members of @var{group} from the output.
+

Added: branches/binutils/package/bfd/doc/syms.texi
===================================================================
--- branches/binutils/package/bfd/doc/syms.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/syms.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,461 @@
+ at section 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 @code{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 @code{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.
+ at menu
+* Reading Symbols::
+* Writing Symbols::
+* Mini Symbols::
+* typedef asymbol::
+* symbol handling functions::
+ at end menu
+
+ at node Reading Symbols, Writing Symbols, Symbols, Symbols
+ at subsection 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:
+
+ at example
+         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]);
+ at end example
+
+All storage for the symbols themselves is in an objalloc
+connected to the BFD; it is freed when the BFD is closed.
+
+ at node Writing Symbols, Mini Symbols, Reading Symbols, Symbols
+ at subsection 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 @code{bfd_make_empty_symbol}.  Here is an
+example showing the creation of a symbol table with only one element:
+
+ at example
+       #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
+ at end example
+
+Many formats cannot represent arbitrary symbol information; for
+instance, the @code{a.out} object format does not allow an
+arbitrary number of sections. A symbol pointing to a section
+which is not one  of @code{.text}, @code{.data} or @code{.bss} cannot
+be described.
+
+ at node Mini Symbols, typedef asymbol, Writing Symbols, Symbols
+ at subsection 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 @code{bfd_read_minisymbols} function will read the symbols
+into memory in an internal form.  It will return a @code{void *}
+pointer to a block of memory, a symbol count, and the size of
+each symbol.  The pointer is allocated using @code{malloc}, and
+should be freed by the caller when it is no longer needed.
+
+The function @code{bfd_minisymbol_to_symbol} will take a pointer
+to a minisymbol, and a pointer to a structure returned by
+ at code{bfd_make_empty_symbol}, and return a @code{asymbol} structure.
+The return value may or may not be the same as the value from
+ at code{bfd_make_empty_symbol} which was passed in.
+
+
+ at node typedef asymbol, symbol handling functions, Mini Symbols, Symbols
+ at subsection typedef asymbol
+An @code{asymbol} has the form:
+
+
+ at example
+
+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; @code{static} in @code{C}. The value
+     is the offset into the section of the data.  */
+#define BSF_LOCAL      0x01
+
+  /* The symbol has global scope; initialized data in @code{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:
+     @code{BSF_LOCAL}, @code{BSF_FORT_COMM},  @code{BSF_UNDEFINED} or
+     @code{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 @code{ISFCN} symbol
+     which is also @code{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;
+
+ at end example
+
+ at node symbol handling functions,  , typedef asymbol, Symbols
+ at subsection Symbol handling functions
+
+
+ at findex bfd_get_symtab_upper_bound
+ at subsubsection @code{bfd_get_symtab_upper_bound}
+ at strong{Description}@*
+Return the number of bytes required to store a vector of pointers
+to @code{asymbols} for all the symbols in the BFD @var{abfd},
+including a terminal NULL pointer. If there are no symbols in
+the BFD, then return 0.  If an error occurs, return -1.
+ at example
+#define bfd_get_symtab_upper_bound(abfd) \
+     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
+
+ at end example
+
+ at findex bfd_is_local_label
+ at subsubsection @code{bfd_is_local_label}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
+ at end example
+ at strong{Description}@*
+Return TRUE if the given symbol @var{sym} in the BFD @var{abfd} is
+a compiler generated local label, else return FALSE.
+
+ at findex bfd_is_local_label_name
+ at subsubsection @code{bfd_is_local_label_name}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
+ at end example
+ at strong{Description}@*
+Return TRUE if a symbol with the name @var{name} in the BFD
+ at var{abfd} is a compiler generated local label, else return
+FALSE.  This just checks whether the name has the form of a
+local label.
+ at example
+#define bfd_is_local_label_name(abfd, name) \
+  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+
+ at end example
+
+ at findex bfd_is_target_special_symbol
+ at subsubsection @code{bfd_is_target_special_symbol}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+ at end example
+ at strong{Description}@*
+Return TRUE iff a symbol @var{sym} in the BFD @var{abfd} is something
+special to the particular target represented by the BFD.  Such symbols
+should normally not be mentioned to the user.
+ at example
+#define bfd_is_target_special_symbol(abfd, sym) \
+  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+
+ at end example
+
+ at findex bfd_canonicalize_symtab
+ at subsubsection @code{bfd_canonicalize_symtab}
+ at strong{Description}@*
+Read the symbols from the BFD @var{abfd}, and fills in
+the vector @var{location} with pointers to the symbols and
+a trailing NULL.
+Return the actual number of symbol pointers, not
+including the NULL.
+ at example
+#define bfd_canonicalize_symtab(abfd, location) \
+  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
+
+ at end example
+
+ at findex bfd_set_symtab
+ at subsubsection @code{bfd_set_symtab}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_symtab
+   (bfd *abfd, asymbol **location, unsigned int count);
+ at end example
+ at strong{Description}@*
+Arrange that when the output BFD @var{abfd} is closed,
+the table @var{location} of @var{count} pointers to symbols
+will be written.
+
+ at findex bfd_print_symbol_vandf
+ at subsubsection @code{bfd_print_symbol_vandf}
+ at strong{Synopsis}
+ at example
+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
+ at end example
+ at strong{Description}@*
+Print the value and flags of the @var{symbol} supplied to the
+stream @var{file}.
+
+ at findex bfd_make_empty_symbol
+ at subsubsection @code{bfd_make_empty_symbol}
+ at strong{Description}@*
+Create a new @code{asymbol} structure for the BFD @var{abfd}
+and return a pointer to it.
+
+This routine is necessary because each back end has private
+information surrounding the @code{asymbol}. Building your own
+ at code{asymbol} and pointing to it will not create the private
+information, and will cause problems later on.
+ at example
+#define bfd_make_empty_symbol(abfd) \
+  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
+
+ at end example
+
+ at findex _bfd_generic_make_empty_symbol
+ at subsubsection @code{_bfd_generic_make_empty_symbol}
+ at strong{Synopsis}
+ at example
+asymbol *_bfd_generic_make_empty_symbol (bfd *);
+ at end example
+ at strong{Description}@*
+Create a new @code{asymbol} structure for the BFD @var{abfd}
+and return a pointer to it.  Used by core file routines,
+binary back-end and anywhere else where no private info
+is needed.
+
+ at findex bfd_make_debug_symbol
+ at subsubsection @code{bfd_make_debug_symbol}
+ at strong{Description}@*
+Create a new @code{asymbol} structure for the BFD @var{abfd},
+to be used as a debugging symbol.  Further details of its use have
+yet to be worked out.
+ at example
+#define bfd_make_debug_symbol(abfd,ptr,size) \
+  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+
+ at end example
+
+ at findex bfd_decode_symclass
+ at subsubsection @code{bfd_decode_symclass}
+ at strong{Description}@*
+Return a character corresponding to the symbol
+class of @var{symbol}, or '?' for an unknown class.
+
+ at strong{Synopsis}
+ at example
+int bfd_decode_symclass (asymbol *symbol);
+ at end example
+ at findex bfd_is_undefined_symclass
+ at subsubsection @code{bfd_is_undefined_symclass}
+ at strong{Description}@*
+Returns non-zero if the class symbol returned by
+bfd_decode_symclass represents an undefined symbol.
+Returns zero otherwise.
+
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_is_undefined_symclass (int symclass);
+ at end example
+ at findex bfd_symbol_info
+ at subsubsection @code{bfd_symbol_info}
+ at strong{Description}@*
+Fill in the basic info about symbol that nm needs.
+Additional info may be added by the back-ends after
+calling this function.
+
+ at strong{Synopsis}
+ at example
+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+ at end example
+ at findex bfd_copy_private_symbol_data
+ at subsubsection @code{bfd_copy_private_symbol_data}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_copy_private_symbol_data
+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
+ at end example
+ at strong{Description}@*
+Copy private symbol information from @var{isym} in the BFD
+ at var{ibfd} to the symbol @var{osym} in the BFD @var{obfd}.
+Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
+returns are:
+
+ at itemize @bullet
+
+ at item
+ at code{bfd_error_no_memory} -
+Not enough memory exists to create private data for @var{osec}.
+ at end itemize
+ at example
+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+            (ibfd, isymbol, obfd, osymbol))
+
+ at end example
+

Added: branches/binutils/package/bfd/doc/targets.texi
===================================================================
--- branches/binutils/package/bfd/doc/targets.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/doc/targets.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,551 @@
+ at section Targets
+
+
+ at strong{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 @code{bfd_openr}, its format and
+target are unknown. BFD uses various mechanisms to determine
+how to interpret the file. The operations performed are:
+
+ at itemize @bullet
+
+ at item
+Create a BFD by calling the internal routine
+ at code{_bfd_new_bfd}, then call @code{bfd_find_target} with the
+target string supplied to @code{bfd_openr} and the new BFD pointer.
+
+ at item
+If a null target string was provided to @code{bfd_find_target},
+look up the environment variable @code{GNUTARGET} and use
+that as the target string.
+
+ at item
+If the target string is still @code{NULL}, or the target string is
+ at code{default}, then use the first item in the target vector
+as the target type, and set @code{target_defaulted} in the BFD to
+cause @code{bfd_check_format} to loop through all the targets.
+ at xref{bfd_target}.  @xref{Formats}.
+
+ at item
+Otherwise, inspect the elements in the target vector
+one by one, until a match on target name is found. When found,
+use it.
+
+ at item
+Otherwise return the error @code{bfd_error_invalid_target} to
+ at code{bfd_openr}.
+
+ at item
+ at code{bfd_openr} attempts to open the file using
+ at code{bfd_open_file}, and returns the BFD.
+ at end itemize
+Once the BFD has been opened and the target selected, the file
+format may be determined. This is done by calling
+ at code{bfd_check_format} on the BFD with a suggested format.
+If @code{target_defaulted} has been set, each possible target
+type is tried to see if it recognizes the specified format.
+ at code{bfd_check_format} returns @code{TRUE} when the caller guesses right.
+ at menu
+* bfd_target::
+ at end menu
+
+ at node bfd_target,  , Targets, Targets
+
+ at subsection bfd_target
+
+
+ at strong{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 @code{xvec}
+member.
+
+The macros below are used to dispatch to functions through the
+ at code{bfd_target} vector. They are used in a number of macros further
+down in @file{bfd.h}, and are also used when calling various
+routines by hand inside the BFD implementation.  The @var{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.
+ at example
+#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
+ at end example
+For operations which index on the BFD format:
+ at example
+#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
+
+ at end example
+This is the structure which defines the type of BFD this is.  The
+ at code{xvec} member of the struct @code{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!
+ at example
+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 @code{BFD_NO_FLAGS}, @code{HAS_RELOC}, ... at code{D_PAGED}.  */
+  flagword object_flags;
+
+ /* A mask of all the flags which a section may have set - from
+    the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ... at code{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 @code{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 @code{bfd_close}.  */
+  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+
+ at end example
+The general target vector.  These vectors are initialized using the
+BFD_JUMP_TABLE macros.
+ at example
+
+  /* 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 *, bfd_boolean);
+  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 *);
+
+  /* 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 **);
+
+ at end example
+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.
+ at example
+  /* 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;
+
+ at end example
+
+ at findex bfd_set_default_target
+ at subsubsection @code{bfd_set_default_target}
+ at strong{Synopsis}
+ at example
+bfd_boolean bfd_set_default_target (const char *name);
+ at end example
+ at strong{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.
+
+ at findex bfd_find_target
+ at subsubsection @code{bfd_find_target}
+ at strong{Synopsis}
+ at example
+const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
+ at end example
+ at strong{Description}@*
+Return a pointer to the transfer vector for the object target
+named @var{target_name}.  If @var{target_name} is @code{NULL}, choose the
+one in the environment variable @code{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.  This causes @code{bfd_check_format} to loop over all the
+targets to find the one that matches the file being read.
+
+ at findex bfd_target_list
+ at subsubsection @code{bfd_target_list}
+ at strong{Synopsis}
+ at example
+const char ** bfd_target_list (void);
+ at end example
+ at strong{Description}@*
+Return a freshly malloced NULL-terminated
+vector of the names of all the valid BFD targets. Do not
+modify the names.
+
+ at findex bfd_seach_for_target
+ at subsubsection @code{bfd_seach_for_target}
+ at strong{Synopsis}
+ at example
+const bfd_target *bfd_search_for_target
+   (int (*search_func) (const bfd_target *, void *),
+    void *);
+ at end example
+ at strong{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 @var{search_func}.  The
+parameter @var{data} is passed, unexamined, to the search
+function.
+

Modified: branches/binutils/package/bfd/elf-eh-frame.c
===================================================================
--- branches/binutils/package/bfd/elf-eh-frame.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elf-eh-frame.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1076,12 +1076,12 @@
       end = buf + ent->size;
       new_size = size_of_output_cie_fde (ent, ptr_size);
 
-      /* Install the new size, filling the extra bytes with DW_CFA_nops.  */
+      /* Update the size.  It may be shrinked.  */
+      bfd_put_32 (abfd, new_size - 4, buf);
+
+      /* Filling the extra bytes with DW_CFA_nops.  */
       if (new_size != ent->size)
-	{
-	  memset (end, 0, new_size - ent->size);
-	  bfd_put_32 (abfd, new_size - 4, buf);
-	}
+	memset (end, 0, new_size - ent->size);
 
       if (ent->cie)
 	{
@@ -1263,41 +1263,14 @@
 	}
     }
 
-    {
-      unsigned int alignment = 1 << sec->alignment_power;
-      unsigned int pad = sec->size % alignment;
+  /* We don't align the section to its section alignment since the
+     runtime library only expects all CIE/FDE records aligned at
+     the pointer size. _bfd_elf_discard_section_eh_frame should 
+     have padded CIE/FDE records to multiple of pointer size with
+     size_of_output_cie_fde.  */
+  if ((sec->size % ptr_size) != 0)
+    abort ();
 
-      /* Don't pad beyond the raw size of the output section. It
-	 can happen at the last input section.  */
-      if (pad
-	  && ((sec->output_offset + sec->size + pad)
-	      <= sec->output_section->size))
-	{
-	  bfd_byte *buf;
-	  unsigned int new_size;
-
-	  /* Find the last CIE/FDE.  */
-	  ent = sec_info->entry + sec_info->count;
-	  while (--ent != sec_info->entry)
-	    if (!ent->removed)
-	      break;
-
-	  /* The size of the last CIE/FDE must be at least 4.  */
-	  if (ent->removed || ent->size < 4)
-	    abort ();
-
-	  pad = alignment - pad;
-	  buf = contents + ent->new_offset - sec->output_offset;
-	  new_size = size_of_output_cie_fde (ent, ptr_size);
-
-	  /* Pad it with DW_CFA_nop  */
-	  memset (buf + new_size, 0, pad);
-	  bfd_put_32 (abfd, new_size + pad - 4, buf);
-
-	  sec->size += pad;
-	}
-    }
-
   return bfd_set_section_contents (abfd, sec->output_section,
 				   contents, (file_ptr) sec->output_offset,
 				   sec->size);

Modified: branches/binutils/package/bfd/elf32-arm.c
===================================================================
--- branches/binutils/package/bfd/elf32-arm.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elf32-arm.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -3274,9 +3274,11 @@
 	  break;
 
 	case R_ARM_REL32:
+	  value += addend;
+	  if (sym_flags == STT_ARM_TFUNC)
+	    value |= 1;
 	  value -= (input_section->output_section->vma
 		    + input_section->output_offset + rel->r_offset);
-	  value += addend;
 	  break;
 
 	case R_ARM_PREL31:

Modified: branches/binutils/package/bfd/elf32-ppc.c
===================================================================
--- branches/binutils/package/bfd/elf32-ppc.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elf32-ppc.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -5181,6 +5181,10 @@
       else if (r_type != R_PPC_PLTREL24)
 	toff += irel->r_addend;
 
+      /* Attempted -shared link of non-pic code loses.  */
+      if (tsec->output_section == NULL)
+	continue;
+
       symaddr = tsec->output_section->vma + tsec->output_offset + toff;
 
       roff = irel->r_offset;

Modified: branches/binutils/package/bfd/elf32-xtensa.c
===================================================================
--- branches/binutils/package/bfd/elf32-xtensa.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elf32-xtensa.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -5766,7 +5766,8 @@
 static bfd_boolean compute_ebb_proposed_actions (ebb_constraint *);
 static bfd_boolean compute_ebb_actions (ebb_constraint *);
 static bfd_boolean check_section_ebb_pcrels_fit
-  (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, const ebb_constraint *);
+  (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, const ebb_constraint *,
+   const xtensa_opcode *);
 static bfd_boolean check_section_ebb_reduces (const ebb_constraint *);
 static void text_action_add_proposed
   (text_action_list *, const ebb_constraint *, asection *);
@@ -6302,6 +6303,24 @@
 }
 
 
+static xtensa_opcode *
+build_reloc_opcodes (bfd *abfd,
+		     asection *sec,
+		     bfd_byte *contents,
+		     Elf_Internal_Rela *internal_relocs)
+{
+  unsigned i;
+  xtensa_opcode *reloc_opcodes =
+    (xtensa_opcode *) bfd_malloc (sizeof (xtensa_opcode) * sec->reloc_count);
+  for (i = 0; i < sec->reloc_count; i++)
+    {
+      Elf_Internal_Rela *irel = &internal_relocs[i];
+      reloc_opcodes[i] = get_relocation_opcode (abfd, sec, contents, irel);
+    }
+  return reloc_opcodes;
+}
+
+
 /* The compute_text_actions function will build a list of potential
    transformation actions for code in the extended basic block of each
    longcall that is optimized to a direct call.  From this list we
@@ -6318,6 +6337,7 @@
 		      asection *sec,
 		      struct bfd_link_info *link_info)
 {
+  xtensa_opcode *reloc_opcodes = NULL;
   xtensa_relax_info *relax_info;
   bfd_byte *contents;
   Elf_Internal_Rela *internal_relocs;
@@ -6423,11 +6443,17 @@
       ebb->start_reloc_idx = i;
       ebb->end_reloc_idx = i;
 
+      /* Precompute the opcode for each relocation.  */
+      if (reloc_opcodes == NULL)
+	reloc_opcodes = build_reloc_opcodes (abfd, sec, contents,
+					     internal_relocs);
+
       if (!extend_ebb_bounds (ebb)
 	  || !compute_ebb_proposed_actions (&ebb_table)
 	  || !compute_ebb_actions (&ebb_table)
 	  || !check_section_ebb_pcrels_fit (abfd, sec, contents,
-					    internal_relocs, &ebb_table)
+					    internal_relocs, &ebb_table,
+					    reloc_opcodes)
 	  || !check_section_ebb_reduces (&ebb_table))
 	{
 	  /* If anything goes wrong or we get unlucky and something does
@@ -6459,6 +6485,8 @@
   release_internal_relocs (sec, internal_relocs);
   if (prop_table)
     free (prop_table);
+  if (reloc_opcodes)
+    free (reloc_opcodes);
 
   return ok;
 }
@@ -7026,7 +7054,8 @@
 			      asection *sec,
 			      bfd_byte *contents,
 			      Elf_Internal_Rela *internal_relocs,
-			      const ebb_constraint *constraint)
+			      const ebb_constraint *constraint,
+			      const xtensa_opcode *reloc_opcodes)
 {
   unsigned i, j;
   Elf_Internal_Rela *irel;
@@ -7117,7 +7146,10 @@
 	  xtensa_opcode opcode;
 	  int opnum;
 
-	  opcode = get_relocation_opcode (abfd, sec, contents, irel);
+	  if (reloc_opcodes)
+	    opcode = reloc_opcodes[i];
+	  else
+	    opcode = get_relocation_opcode (abfd, sec, contents, irel);
 	  if (opcode == XTENSA_UNDEFINED)
 	    {
 	      ok = FALSE;
@@ -7814,7 +7846,7 @@
   relocs_fit = check_section_ebb_pcrels_fit (target_sec->owner, target_sec, 
 					     target_sec_cache->contents,
 					     target_sec_cache->relocs,
-					     &ebb_table);
+					     &ebb_table, NULL);
 
   if (!relocs_fit) 
     return FALSE;

Modified: branches/binutils/package/bfd/elf64-ppc.c
===================================================================
--- branches/binutils/package/bfd/elf64-ppc.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elf64-ppc.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -2623,6 +2623,32 @@
   if (a->value + a->section->vma > b->value + b->section->vma)
     return 1;
 
+  /* For syms with the same value, prefer strong dynamic global function
+     syms over other syms.  */
+  if ((a->flags & BSF_GLOBAL) != 0 && (b->flags & BSF_GLOBAL) == 0)
+    return -1;
+
+  if ((a->flags & BSF_GLOBAL) == 0 && (b->flags & BSF_GLOBAL) != 0)
+    return 1;
+
+  if ((a->flags & BSF_FUNCTION) != 0 && (b->flags & BSF_FUNCTION) == 0)
+    return -1;
+
+  if ((a->flags & BSF_FUNCTION) == 0 && (b->flags & BSF_FUNCTION) != 0)
+    return 1;
+
+  if ((a->flags & BSF_WEAK) == 0 && (b->flags & BSF_WEAK) != 0)
+    return -1;
+
+  if ((a->flags & BSF_WEAK) != 0 && (b->flags & BSF_WEAK) == 0)
+    return 1;
+
+  if ((a->flags & BSF_DYNAMIC) != 0 && (b->flags & BSF_DYNAMIC) == 0)
+    return -1;
+
+  if ((a->flags & BSF_DYNAMIC) == 0 && (b->flags & BSF_DYNAMIC) != 0)
+    return 1;
+
   return 0;
 }
 
@@ -6696,12 +6722,22 @@
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
     {
       Elf_Internal_Sym *locsyms = NULL;
+      asection *toc = bfd_get_section_by_name (ibfd, ".toc");
+      unsigned char *toc_ref = NULL;
 
-      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+      /* Look at all the sections for this file, with TOC last.  */
+      for (sec = (ibfd->sections == toc && toc && toc->next ? toc->next
+		  : ibfd->sections);
+	   sec != NULL;
+	   sec = (sec == toc ? NULL
+		  : sec->next == NULL ? toc
+		  : sec->next == toc && toc->next ? toc->next
+		  : sec->next))
 	if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section))
 	  {
 	    Elf_Internal_Rela *relstart, *rel, *relend;
 	    int expecting_tls_get_addr;
+	    long toc_ref_index = 0;
 
 	    /* Read the relocations.  */
 	    relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
@@ -6730,6 +6766,8 @@
 		  err_free_rel:
 		    if (elf_section_data (sec)->relocs != relstart)
 		      free (relstart);
+		    if (toc_ref != NULL)
+		      free (toc_ref);
 		    if (locsyms != NULL
 			&& (elf_tdata (ibfd)->symtab_hdr.contents
 			    != (unsigned char *) locsyms))
@@ -6837,8 +6875,12 @@
 						   rel - 1, ibfd);
 			    if (retval == 0)
 			      goto err_free_rel;
-			    if (toc_tls != NULL)
-			      expecting_tls_get_addr = retval > 1;
+			    if (retval > 1 && toc_tls != NULL)
+			      {
+				expecting_tls_get_addr = 1;
+				if (toc_ref != NULL)
+				  toc_ref[toc_ref_index] = 1;
+			      }
 			  }
 
 			if (expecting_tls_get_addr)
@@ -6856,8 +6898,40 @@
 		    expecting_tls_get_addr = 0;
 		    continue;
 
+		  case R_PPC64_TOC16:
+		  case R_PPC64_TOC16_LO:
+		  case R_PPC64_TLS:
+		    expecting_tls_get_addr = 0;
+		    if (sym_sec == toc && toc != NULL)
+		      {
+			/* Mark this toc entry as referenced by a TLS
+			   code sequence.  We can do that now in the
+			   case of R_PPC64_TLS, and after checking for
+			   tls_get_addr for the TOC16 relocs.  */
+			if (toc_ref == NULL)
+			  {
+			    toc_ref = bfd_zmalloc (toc->size / 8);
+			    if (toc_ref == NULL)
+			      goto err_free_rel;
+			  }
+			if (h != NULL)
+			  value = h->root.u.def.value;
+			else
+			  value = sym->st_value;
+			value += rel->r_addend;
+			BFD_ASSERT (value < toc->size && value % 8 == 0);
+			toc_ref_index = value / 8;
+			if (r_type == R_PPC64_TLS)
+			  toc_ref[toc_ref_index] = 1;
+		      }
+		    continue;
+
 		  case R_PPC64_TPREL64:
 		    expecting_tls_get_addr = 0;
+		    if (sec != toc
+			|| toc_ref == NULL
+			|| !toc_ref[rel->r_offset / 8])
+		      continue;
 		    if (ok_tprel)
 		      {
 			/* IE -> LE */
@@ -6870,6 +6944,10 @@
 
 		  case R_PPC64_DTPMOD64:
 		    expecting_tls_get_addr = 0;
+		    if (sec != toc
+			|| toc_ref == NULL
+			|| !toc_ref[rel->r_offset / 8])
+		      continue;
 		    if (rel + 1 < relend
 			&& (rel[1].r_info
 			    == ELF64_R_INFO (r_symndx, R_PPC64_DTPREL64))
@@ -6948,6 +7026,9 @@
 	      free (relstart);
 	  }
 
+      if (toc_ref != NULL)
+	free (toc_ref);
+
       if (locsyms != NULL
 	  && (elf_tdata (ibfd)->symtab_hdr.contents
 	      != (unsigned char *) locsyms))
@@ -7143,13 +7224,14 @@
 	  return FALSE;
 	}
 
-      /* Now check all kept sections that might reference the toc.  */
-      for (sec = ibfd->sections;
+      /* Now check all kept sections that might reference the toc.
+	 Check the toc itself last.  */
+      for (sec = (ibfd->sections == toc && toc->next ? toc->next
+		  : ibfd->sections);
 	   sec != NULL;
-	   /* Check the toc itself last.  */
 	   sec = (sec == toc ? NULL
-		  : sec->next == toc && sec->next->next ? sec->next->next
 		  : sec->next == NULL ? toc
+		  : sec->next == toc && toc->next ? toc->next
 		  : sec->next))
 	{
 	  int repeat;

Modified: branches/binutils/package/bfd/elfcode.h
===================================================================
--- branches/binutils/package/bfd/elfcode.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elfcode.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -458,6 +458,25 @@
 	  && (x_ehdrp->e_ident[EI_MAG3] == ELFMAG3));
 }
 
+/* Determines if a given section index is valid.  */
+
+static inline bfd_boolean
+valid_section_index_p (unsigned index, unsigned num_sections)
+{
+  /* Note: We allow SHN_UNDEF as a valid section index.  */
+  if (index < SHN_LORESERVE || index > SHN_HIRESERVE)
+    return index < num_sections;
+  
+  /* We disallow the use of reserved indcies, except for those
+     with OS or Application specific meaning.  The test make use
+     of the knowledge that:
+       SHN_LORESERVE == SHN_LOPROC
+     and
+       SHN_HIPROC == SHN_LOOS - 1  */
+  /* XXX - Should we allow SHN_XINDEX as a valid index here ?  */
+  return (index >= SHN_LOPROC && index <= SHN_HIOS);
+}
+
 /* Check to see if the file associated with ABFD matches the target vector
    that ABFD points to.
 
@@ -545,7 +564,7 @@
   if (i_ehdrp->e_shoff == 0 && i_ehdrp->e_type == ET_REL)
     goto got_wrong_format_error;
 
-  /* As a simple sanity check, verify that the what BFD thinks is the
+  /* As a simple sanity check, verify that what BFD thinks is the
      size of each section header table entry actually matches the size
      recorded in the file, but only if there are any sections.  */
   if (i_ehdrp->e_shentsize != sizeof (x_shdr) && i_ehdrp->e_shnum != 0)
@@ -711,17 +730,13 @@
 	  elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex);
 
 	  /* Sanity check sh_link and sh_info.  */
-	  if (i_shdrp[shindex].sh_link >= num_sec
-	      || (i_shdrp[shindex].sh_link >= SHN_LORESERVE
-		  && i_shdrp[shindex].sh_link <= SHN_HIRESERVE))
+	  if (! valid_section_index_p (i_shdrp[shindex].sh_link, num_sec))
 	    goto got_wrong_format_error;
 
 	  if (((i_shdrp[shindex].sh_flags & SHF_INFO_LINK)
 	       || i_shdrp[shindex].sh_type == SHT_RELA
 	       || i_shdrp[shindex].sh_type == SHT_REL)
-	      && (i_shdrp[shindex].sh_info >= num_sec
-		  || (i_shdrp[shindex].sh_info >= SHN_LORESERVE
-		      && i_shdrp[shindex].sh_info <= SHN_HIRESERVE)))
+	      && ! valid_section_index_p (i_shdrp[shindex].sh_info, num_sec))
 	    goto got_wrong_format_error;
 
 	  /* If the section is loaded, but not page aligned, clear
@@ -739,12 +754,19 @@
   /* A further sanity check.  */
   if (i_ehdrp->e_shnum != 0)
     {
-      if (i_ehdrp->e_shstrndx >= elf_numsections (abfd)
-	  || (i_ehdrp->e_shstrndx >= SHN_LORESERVE
-	      && i_ehdrp->e_shstrndx <= SHN_HIRESERVE))
-	goto got_wrong_format_error;
+      if (! valid_section_index_p (i_ehdrp->e_shstrndx, elf_numsections (abfd)))
+	{
+	  /* PR 2257:
+	     We used to just goto got_wrong_format_error here
+	     but there are binaries in existance for which this test
+	     will prevent the binutils from working with them at all.
+	     So we are kind, and reset the string index value to 0
+	     so that at least some processing can be done.  */
+	  i_ehdrp->e_shstrndx = SHN_UNDEF;
+	  _bfd_error_handler (_("warning: %s has a corrupt string table index - ignoring"), abfd->filename);
+	}
     }
-  else if (i_ehdrp->e_shstrndx != 0)
+  else if (i_ehdrp->e_shstrndx != SHN_UNDEF)
     goto got_wrong_format_error;
 
   /* Read in the program headers.  */
@@ -1340,10 +1362,9 @@
 	}
       else
 	{
-	  asymbol **ps, *s;
+	  asymbol **ps;
 
 	  ps = symbols + ELF_R_SYM (rela.r_info) - 1;
-	  s = *ps;
 
 	  relent->sym_ptr_ptr = ps;
 	}

Modified: branches/binutils/package/bfd/elflink.c
===================================================================
--- branches/binutils/package/bfd/elflink.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elflink.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -2810,10 +2810,6 @@
   if (! is_elf_hash_table (hash_table))
     return FALSE;
 
-  if (info->warn_shared_textrel && info->shared && tag == DT_TEXTREL)
-    _bfd_error_handler
-      (_("warning: creating a DT_TEXTREL in a shared object."));
-
   bed = get_elf_backend_data (hash_table->dynobj);
   s = bfd_get_section_by_name (hash_table->dynobj, ".dynamic");
   BFD_ASSERT (s != NULL);
@@ -6758,7 +6754,7 @@
 _bfd_elf_default_action_discarded (asection *sec)
 {
   if (sec->flags & SEC_DEBUGGING)
-    return 0;
+    return PRETEND;
 
   if (strcmp (".eh_frame", sec->name) == 0)
     return 0;
@@ -6782,6 +6778,7 @@
       if (bfd_elf_match_symbols_in_sections (s, sec))
 	return s;
 
+      s = elf_next_in_group (s);
       if (s == first)
 	break;
     }
@@ -8654,6 +8651,32 @@
       if (! (*bed->elf_backend_finish_dynamic_sections) (abfd, info))
 	goto error_return;
 
+      /* Check for DT_TEXTREL (late, in case the backend removes it).  */
+      if (info->warn_shared_textrel && info->shared)
+	{
+	  bfd_byte *dyncon, *dynconend;
+
+	  /* Fix up .dynamic entries.  */
+	  o = bfd_get_section_by_name (dynobj, ".dynamic");
+	  BFD_ASSERT (o != NULL);
+
+	  dyncon = o->contents;
+	  dynconend = o->contents + o->size;
+	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
+	    {
+	      Elf_Internal_Dyn dyn;
+
+	      bed->s->swap_dyn_in (dynobj, dyncon, &dyn);
+
+	      if (dyn.d_tag == DT_TEXTREL)
+		{
+		  _bfd_error_handler
+		    (_("warning: creating a DT_TEXTREL in a shared object."));
+		  break;
+		}
+	    }
+	}
+
       for (o = dynobj->sections; o != NULL; o = o->next)
 	{
 	  if ((o->flags & SEC_HAS_CONTENTS) == 0
@@ -8964,7 +8987,7 @@
 	{
 	  /* Keep debug and special sections.  */
 	  if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
-	      || (o->flags & (SEC_ALLOC | SEC_LOAD)) == 0)
+	      || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
 	    o->gc_mark = 1;
 
 	  if (o->gc_mark)

Modified: branches/binutils/package/bfd/elfxx-mips.c
===================================================================
--- branches/binutils/package/bfd/elfxx-mips.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/elfxx-mips.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -335,6 +335,8 @@
   bfd_vma plt_header_size;
   /* The size of a PLT entry in bytes (VxWorks only).  */
   bfd_vma plt_entry_size;
+  /* The size of a function stub entry in bytes.  */
+  bfd_vma function_stub_size;
 };
 
 #define TLS_RELOC_P(r_type) \
@@ -535,6 +537,11 @@
 #define MIPS_ELF_OPTIONS_SECTION_NAME_P(NAME) \
   (strcmp (NAME, ".MIPS.options") == 0 || strcmp (NAME, ".options") == 0)
 
+/* Whether the section is readonly.  */
+#define MIPS_ELF_READONLY_SECTION(sec) \
+  ((sec->flags & (SEC_ALLOC | SEC_LOAD | SEC_READONLY))		\
+   == (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
+
 /* The name of the stub section.  */
 #define MIPS_ELF_STUB_SECTION_NAME(abfd) ".MIPS.stubs"
 
@@ -618,21 +625,26 @@
 #define MIPS_ELF_GOT_MAX_SIZE(INFO) (ELF_MIPS_GP_OFFSET (INFO) + 0x7fff)
 
 /* Instructions which appear in a stub.  */
-#define STUB_LW(abfd)						\
-  ((ABI_64_P (abfd)  						\
-    ? 0xdf998010		/* ld t9,0x8010(gp) */		\
-    : 0x8f998010))              /* lw t9,0x8010(gp) */
-#define STUB_MOVE(abfd)                                         \
-   ((ABI_64_P (abfd)						\
-     ? 0x03e0782d		/* daddu t7,ra */		\
-     : 0x03e07821))		/* addu t7,ra */
-#define STUB_JALR 0x0320f809	/* jalr t9,ra */
-#define STUB_LI16(abfd)                                         \
-  ((ABI_64_P (abfd)						\
-   ? 0x64180000			/* daddiu t8,zero,0 */		\
-   : 0x24180000))		/* addiu t8,zero,0 */
-#define MIPS_FUNCTION_STUB_SIZE (16)
+#define STUB_LW(abfd)							\
+  ((ABI_64_P (abfd)							\
+    ? 0xdf998010				/* ld t9,0x8010(gp) */	\
+    : 0x8f998010))              		/* lw t9,0x8010(gp) */
+#define STUB_MOVE(abfd)							\
+   ((ABI_64_P (abfd)							\
+     ? 0x03e0782d				/* daddu t7,ra */	\
+     : 0x03e07821))				/* addu t7,ra */
+#define STUB_LUI(VAL) (0x3c180000 + (VAL))	/* lui t8,VAL */
+#define STUB_JALR 0x0320f809			/* jalr t9,ra */
+#define STUB_ORI(VAL) (0x37180000 + (VAL))	/* ori t8,t8,VAL */
+#define STUB_LI16U(VAL) (0x34180000 + (VAL))	/* ori t8,zero,VAL unsigned */
+#define STUB_LI16S(abfd, VAL)						\
+   ((ABI_64_P (abfd)							\
+    ? (0x64180000 + (VAL))	/* daddiu t8,zero,VAL sign extended */	\
+    : (0x24180000 + (VAL))))	/* addiu t8,zero,VAL sign extended */
 
+#define MIPS_FUNCTION_STUB_NORMAL_SIZE 16
+#define MIPS_FUNCTION_STUB_BIG_SIZE 20
+
 /* The name of the dynamic interpreter.  This is put in the .interp
    section.  */
 
@@ -4909,6 +4921,12 @@
 	}
     }
 
+  /* If we've written this relocation for a readonly section,
+     we need to set DF_TEXTREL again, so that we do not delete the
+     DT_TEXTREL tag.  */
+  if (MIPS_ELF_READONLY_SECTION (input_section))
+    info->flags |= DF_TEXTREL;
+
   return TRUE;
 }
 
@@ -6513,15 +6531,13 @@
 		  if (sreloc == NULL)
 		    return FALSE;
 		}
-#define MIPS_READONLY_SECTION (SEC_ALLOC | SEC_LOAD | SEC_READONLY)
 	      if (info->shared)
 		{
 		  /* When creating a shared object, we must copy these
 		     reloc types into the output file as R_MIPS_REL32
 		     relocs.  Make room for this reloc in .rel(a).dyn.  */
 		  mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
-		  if ((sec->flags & MIPS_READONLY_SECTION)
-		      == MIPS_READONLY_SECTION)
+		  if (MIPS_ELF_READONLY_SECTION (sec))
 		    /* We tell the dynamic linker that there are
 		       relocations against the text segment.  */
 		    info->flags |= DF_TEXTREL;
@@ -6534,8 +6550,7 @@
                      defined in a dynamic object.  */
 		  hmips = (struct mips_elf_link_hash_entry *) h;
 		  ++hmips->possibly_dynamic_relocs;
-		  if ((sec->flags & MIPS_READONLY_SECTION)
-		      == MIPS_READONLY_SECTION)
+		  if (MIPS_ELF_READONLY_SECTION (sec))
 		    /* We need it to tell the dynamic linker if there
 		       are relocations against the text segment.  */
 		    hmips->readonly_reloc = TRUE;
@@ -6822,7 +6837,9 @@
   bfd *dynobj;
   struct mips_elf_link_hash_entry *hmips;
   asection *s;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
 
   /* Make sure we know what is going on here.  */
@@ -6875,7 +6892,7 @@
 	  h->plt.offset = s->size;
 
 	  /* Make room for this stub code.  */
-	  s->size += MIPS_FUNCTION_STUB_SIZE;
+	  s->size += htab->function_stub_size;
 
 	  /* The last half word of the stub will be filled with the index
 	     of this symbol in .dynsym section.  */
@@ -7063,6 +7080,32 @@
   return TRUE;
 }
 
+/* Return the number of dynamic section symbols required by OUTPUT_BFD.
+   The number might be exact or a worst-case estimate, depending on how
+   much information is available to elf_backend_omit_section_dynsym at
+   the current linking stage.  */
+
+static bfd_size_type
+count_section_dynsyms (bfd *output_bfd, struct bfd_link_info *info)
+{
+  bfd_size_type count;
+
+  count = 0;
+  if (info->shared)
+    {
+      asection *p;
+      const struct elf_backend_data *bed;
+
+      bed = get_elf_backend_data (output_bfd);
+      for (p = output_bfd->sections; p ; p = p->next)
+	if ((p->flags & SEC_EXCLUDE) == 0
+	    && (p->flags & SEC_ALLOC) != 0
+	    && !(*bed->elf_backend_omit_section_dynsym) (output_bfd, info, p))
+	  ++count;
+    }
+  return count;
+}
+
 /* This function is called after all the input files have been read,
    and the input sections have been assigned to output sections.  We
    check for any mips16 stub sections that we can discard.  */
@@ -7079,6 +7122,7 @@
   int i;
   bfd_size_type loadable_size = 0;
   bfd_size_type local_gotno;
+  bfd_size_type dynsymcount;
   bfd *sub;
   struct mips_elf_count_tls_arg count_tls_arg;
   struct mips_elf_link_hash_table *htab;
@@ -7137,10 +7181,22 @@
        relocations, then GLOBAL_GOTSYM will be NULL.  */
     i = 0;
 
+  /* Get a worst-case estimate of the number of dynamic symbols needed.
+     At this point, dynsymcount does not account for section symbols
+     and count_section_dynsyms may overestimate the number that will
+     be needed.  */
+  dynsymcount = (elf_hash_table (info)->dynsymcount
+		 + count_section_dynsyms (output_bfd, info));
+
+  /* Determine the size of one stub entry.  */
+  htab->function_stub_size = (dynsymcount > 0x10000
+			      ? MIPS_FUNCTION_STUB_BIG_SIZE
+			      : MIPS_FUNCTION_STUB_NORMAL_SIZE);
+
   /* In the worst case, we'll get one stub per dynamic symbol, plus
      one to account for the dummy entry at the end required by IRIX
      rld.  */
-  loadable_size += MIPS_FUNCTION_STUB_SIZE * (i + 1);
+  loadable_size += htab->function_stub_size * (i + 1);
 
   if (htab->is_vxworks)
     /* There's no need to allocate page entries for VxWorks; R_MIPS_GOT16
@@ -7357,14 +7413,14 @@
       else if (strcmp (name, MIPS_ELF_STUB_SECTION_NAME (output_bfd)) == 0)
 	{
 	  /* IRIX rld assumes that the function stub isn't at the end
-	     of .text section. So put a dummy. XXX  */
-	  s->size += MIPS_FUNCTION_STUB_SIZE;
+	     of .text section.  So put a dummy.  XXX  */
+	  s->size += htab->function_stub_size;
 	}
       else if (! info->shared
 	       && ! mips_elf_hash_table (info)->use_rld_obj_head
 	       && strncmp (name, ".rld_map", 8) == 0)
 	{
-	  /* We add a room for __rld_map. It will be filled in by the
+	  /* We add a room for __rld_map.  It will be filled in by the
 	     rtld to contain a pointer to the _r_debug structure.  */
 	  s->size += 4;
 	}
@@ -7452,6 +7508,12 @@
 	{
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_TEXTREL, 0))
 	    return FALSE;
+
+	  /* Clear the DF_TEXTREL flag.  It will be set again if we
+	     write out an actual text relocation; we may not, because
+	     at this point we do not know whether e.g. any .eh_frame
+	     absolute relocations have been converted to PC-relative.  */
+	  info->flags &= ~DF_TEXTREL;
 	}
 
       if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTGOT, 0))
@@ -7989,13 +8051,16 @@
   asection *sgot;
   struct mips_got_info *g, *gg;
   const char *name;
+  int idx;
+  struct mips_elf_link_hash_table *htab;
 
+  htab = mips_elf_hash_table (info);
   dynobj = elf_hash_table (info)->dynobj;
 
   if (h->plt.offset != MINUS_ONE)
     {
       asection *s;
-      bfd_byte stub[MIPS_FUNCTION_STUB_SIZE];
+      bfd_byte stub[MIPS_FUNCTION_STUB_BIG_SIZE];
 
       /* This symbol has a stub.  Set it up.  */
 
@@ -8005,18 +8070,42 @@
 				   MIPS_ELF_STUB_SECTION_NAME (dynobj));
       BFD_ASSERT (s != NULL);
 
-      /* FIXME: Can h->dynindx be more than 64K?  */
-      if (h->dynindx & 0xffff0000)
+      BFD_ASSERT ((htab->function_stub_size == MIPS_FUNCTION_STUB_BIG_SIZE)
+                  || (h->dynindx <= 0xffff));
+
+      /* Values up to 2^31 - 1 are allowed.  Larger values would cause
+	 sign extension at runtime in the stub, resulting in a negative
+	 index value.  */
+      if (h->dynindx & ~0x7fffffff)
 	return FALSE;
 
       /* Fill the stub.  */
-      bfd_put_32 (output_bfd, STUB_LW (output_bfd), stub);
-      bfd_put_32 (output_bfd, STUB_MOVE (output_bfd), stub + 4);
-      bfd_put_32 (output_bfd, STUB_JALR, stub + 8);
-      bfd_put_32 (output_bfd, STUB_LI16 (output_bfd) + h->dynindx, stub + 12);
+      idx = 0;
+      bfd_put_32 (output_bfd, STUB_LW (output_bfd), stub + idx);
+      idx += 4;
+      bfd_put_32 (output_bfd, STUB_MOVE (output_bfd), stub + idx);
+      idx += 4;
+      if (htab->function_stub_size == MIPS_FUNCTION_STUB_BIG_SIZE)
+        {
+          bfd_put_32 (output_bfd, STUB_LUI ((h->dynindx >> 16) & 0x7fff),
+                      stub + idx);
+          idx += 4;
+        }
+      bfd_put_32 (output_bfd, STUB_JALR, stub + idx);
+      idx += 4;
 
+      /* If a large stub is not required and sign extension is not a
+         problem, then use legacy code in the stub.  */
+      if (htab->function_stub_size == MIPS_FUNCTION_STUB_BIG_SIZE)
+	bfd_put_32 (output_bfd, STUB_ORI (h->dynindx & 0xffff), stub + idx);
+      else if (h->dynindx & ~0x7fff)
+        bfd_put_32 (output_bfd, STUB_LI16U (h->dynindx & 0xffff), stub + idx);
+      else
+        bfd_put_32 (output_bfd, STUB_LI16S (output_bfd, h->dynindx),
+		    stub + idx);
+
       BFD_ASSERT (h->plt.offset <= s->size);
-      memcpy (s->contents + h->plt.offset, stub, MIPS_FUNCTION_STUB_SIZE);
+      memcpy (s->contents + h->plt.offset, stub, htab->function_stub_size);
 
       /* Mark the symbol as undefined.  plt.offset != -1 occurs
 	 only for the referenced symbol.  */
@@ -8478,6 +8567,7 @@
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       bfd_byte *b;
+      int dyn_to_skip = 0, dyn_skipped = 0;
 
       BFD_ASSERT (sdyn != NULL);
       BFD_ASSERT (g != NULL);
@@ -8632,15 +8722,44 @@
 				+ htab->srelplt->output_offset);
 	      break;
 
+	    case DT_TEXTREL:
+	      /* If we didn't need any text relocations after all, delete
+		 the dynamic tag.  */
+	      if (!(info->flags & DF_TEXTREL))
+		{
+		  dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj);
+		  swap_out_p = FALSE;
+		}
+	      break;
+
+	    case DT_FLAGS:
+	      /* If we didn't need any text relocations after all, clear
+		 DF_TEXTREL from DT_FLAGS.  */
+	      if (!(info->flags & DF_TEXTREL))
+		dyn.d_un.d_val &= ~DF_TEXTREL;
+	      else
+		swap_out_p = FALSE;
+	      break;
+
 	    default:
 	      swap_out_p = FALSE;
 	      break;
 	    }
 
-	  if (swap_out_p)
+	  if (swap_out_p || dyn_skipped)
 	    (*get_elf_backend_data (dynobj)->s->swap_dyn_out)
-	      (dynobj, &dyn, b);
+	      (dynobj, &dyn, b - dyn_skipped);
+
+	  if (dyn_to_skip)
+	    {
+	      dyn_skipped += dyn_to_skip;
+	      dyn_to_skip = 0;
+	    }
 	}
+
+      /* Wipe out any trailing entries if we shifted down a dynamic tag.  */
+      if (dyn_skipped > 0)
+	memset (b - dyn_skipped, 0, dyn_skipped);
     }
 
   if (sgot != NULL && sgot->size > 0)
@@ -8789,10 +8908,10 @@
 	      {
 		file_ptr dummy_offset;
 
-		BFD_ASSERT (s->size >= MIPS_FUNCTION_STUB_SIZE);
-		dummy_offset = s->size - MIPS_FUNCTION_STUB_SIZE;
+		BFD_ASSERT (s->size >= htab->function_stub_size);
+		dummy_offset = s->size - htab->function_stub_size;
 		memset (s->contents + dummy_offset, 0,
-			MIPS_FUNCTION_STUB_SIZE);
+			htab->function_stub_size);
 	      }
 	  }
       }
@@ -9904,6 +10023,7 @@
   ret->splt = NULL;
   ret->plt_header_size = 0;
   ret->plt_entry_size = 0;
+  ret->function_stub_size = 0;
 
   return &ret->root.root;
 }
@@ -9979,18 +10099,7 @@
 	 we count the sections after (possibly) removing the .options
 	 section above.  */
 
-      dynsecsymcount = 0;
-      if (info->shared)
-	{
-	  asection * p;
-
-	  for (p = abfd->sections; p ; p = p->next)
-	    if ((p->flags & SEC_EXCLUDE) == 0
-		&& (p->flags & SEC_ALLOC) != 0
-		&& !(*bed->elf_backend_omit_section_dynsym) (abfd, info, p))
-	      ++ dynsecsymcount;
-	}
-
+      dynsecsymcount = count_section_dynsyms (abfd, info);
       if (! mips_elf_sort_hash_table (info, dynsecsymcount + 1))
 	return FALSE;
 

Deleted: branches/binutils/package/bfd/po/.cvsignore
===================================================================
--- branches/binutils/package/bfd/po/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/po/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1 +0,0 @@
-*.gmo

Modified: branches/binutils/package/bfd/po/Make-in
===================================================================
--- branches/binutils/package/bfd/po/Make-in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/po/Make-in	2006-12-31 16:27:59 UTC (rev 19)
@@ -199,7 +199,7 @@
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp

Modified: branches/binutils/package/bfd/po/SRC-POTFILES.in
===================================================================
--- branches/binutils/package/bfd/po/SRC-POTFILES.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/po/SRC-POTFILES.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -115,6 +115,7 @@
 cpu-vax.c
 cpu-w65.c
 cpu-we32k.c
+cpu-xc16x.c
 cpu-xstormy16.c
 cpu-xtensa.c
 cpu-z80.c
@@ -174,6 +175,7 @@
 elf32-sparc.c
 elf32-v850.c
 elf32-vax.c
+elf32-xc16x.c
 elf32-xstormy16.c
 elf32-xtensa.c
 elf64-alpha.c

Added: branches/binutils/package/bfd/po/da.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/da.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/es.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/bfd/po/es.po
===================================================================
--- branches/binutils/package/bfd/po/es.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/po/es.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,65 +1,65 @@
-# Mensajes en español para bfd 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para bfd 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.15.96\n"
+"Project-Id-Version: bfd 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 22:14+1030\n"
-"PO-Revision-Date: 2005-03-14 17:11-0600\n"
+"POT-Creation-Date: 2005-10-25 22:24+0930\n"
+"PO-Revision-Date: 2006-05-27 11:34-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga at itam.mx>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: aout-adobe.c:204
+#: aout-adobe.c:127
 msgid "%B: Unknown section type in a.out.adobe file: %x\n"
 msgstr "%B: Tipo de sección desconocido en el fichero a.out.adobe: %x\n"
 
-#: aout-cris.c:207
+#: aout-cris.c:202
 #, c-format
 msgid "%s: Invalid relocation type exported: %d"
 msgstr "%s: Tipo de reubicación exportado inválido: %d"
 
-#: aout-cris.c:251
+#: aout-cris.c:245
 msgid "%B: Invalid relocation type imported: %d"
 msgstr "%B: Tipo de reubicación importado inválido: %d"
 
-#: aout-cris.c:262
+#: aout-cris.c:256
 msgid "%B: Bad relocation record imported: %d"
 msgstr "%B: Registro de reubicación importado erróneo: %d"
 
-#: aoutx.h:1287 aoutx.h:1626
+#: aoutx.h:1244 aoutx.h:1578
 #, c-format
 msgid "%s: can not represent section `%s' in a.out object file format"
 msgstr "%s: no se puede representar la sección `%s' en el fichero objeto de formato a.out"
 
-#: aoutx.h:1592
+#: aoutx.h:1544
 #, c-format
 msgid "%s: can not represent section for symbol `%s' in a.out object file format"
 msgstr "%s: no se puede representar la sección para el símbolo `%s' en el fichero objeto de formato a.out"
 
-#: aoutx.h:1594
+#: aoutx.h:1546
 msgid "*unknown*"
 msgstr "*desconocido*"
 
-#: aoutx.h:3682
+#: aoutx.h:5281
 #, c-format
 msgid "%s: relocatable link from %s to %s not supported"
 msgstr "%s: el enlace reubicable de %s a %s no está soportado"
 
-#: archive.c:1729
+#: archive.c:1760
 msgid "Warning: writing archive was slow: rewriting timestamp\n"
 msgstr "Aviso: la escritura del fichero fue lenta: reescribiendo la marca de tiempo\n"
 
 # ¡Uff! Si utilizáramos file=archivo, esta traducción sería imposible. cfuga
-#: archive.c:1992
+#: archive.c:2019
 msgid "Reading archive file mod timestamp"
 msgstr "Leyendo el archivo de la modificación de marca de tiempo del fichero"
 
-#: archive.c:2018
+#: archive.c:2043
 msgid "Writing updated armap timestamp"
 msgstr "Escribiendo la marca de tiempo actualizada de armap"
 
@@ -143,22 +143,22 @@
 msgid "#<Invalid error code>"
 msgstr "#<Código de error inválido>"
 
-#: bfd.c:768
+#: bfd.c:771
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "falló la aseveración BFD %s %s:%d"
 
-#: bfd.c:784
+#: bfd.c:787
 #, c-format
 msgid "BFD %s internal error, aborting at %s line %d in %s\n"
 msgstr "error interno de BFD %s, abortando en %s línea %d en %s\n"
 
-#: bfd.c:788
+#: bfd.c:791
 #, c-format
 msgid "BFD %s internal error, aborting at %s line %d\n"
 msgstr "error interno de BFD %s, abortando en %s línea %d\n"
 
-#: bfd.c:790
+#: bfd.c:793
 msgid "Please report this bug.\n"
 msgstr "Por favor reporte este bicho.\n"
 
@@ -172,54 +172,59 @@
 msgid "not mapping: env var not set\n"
 msgstr "no se mapea: no se estableció la variable de ambiente\n"
 
-#: binary.c:309
+#: binary.c:285
 #, c-format
 msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
 msgstr "Aviso: Escribiendo la sección `%s' a un desplazamiento de fichero grande (pe negativo) 0x%lx."
 
-#: coff64-rs6000.c:2107 coff-rs6000.c:3608
+#: coff64-rs6000.c:2109 coff-rs6000.c:3610
 msgid "%B: symbol `%s' has unrecognized smclas %d"
 msgstr "%B: el símbolo `%s' tiene smclas %d no reconocido"
 
-#: coff-a29k.c:120
-msgid "Missing IHCONST"
-msgstr "IHCONST faltante"
+#: coff-alpha.c:489
+msgid ""
+"%B: Cannot handle compressed Alpha binaries.\n"
+"   Use compiler flags, or objZ, to generate uncompressed binaries."
+msgstr ""
+"%B: No se pueden manejar binarios Alpha comprimidos.\n"
+"   Use las opciones del compilador, o objZ, para generar binarios sin comprimir."
 
-#: coff-a29k.c:181
-msgid "Missing IHIHALF"
-msgstr "IHIHALF faltante"
+#: coff-alpha.c:646
+msgid "%B: unknown/unsupported relocation type %d"
+msgstr "%B: tipo de reubicación %d desconocida/sin soporte"
 
-#: coff-a29k.c:213 coff-or32.c:227
-msgid "Unrecognized reloc"
-msgstr "Reubicación no reconocida"
-
-#: coff-a29k.c:409
-msgid "missing IHCONST reloc"
-msgstr "reubicación IHCONST faltante"
-
-#: coff-a29k.c:499
-msgid "missing IHIHALF reloc"
-msgstr "reubicación IHIHALF faltante"
-
-#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1972 coff-mips.c:985
+#: coff-alpha.c:898 coff-alpha.c:935 coff-alpha.c:2007 coff-mips.c:985
 msgid "GP relative relocation used when GP not defined"
 msgstr "se usó una reubicación GP relativa cuando GP no estaba definido"
 
-#: coff-alpha.c:1467
+#: coff-alpha.c:1484
 msgid "using multiple gp values"
 msgstr "usando valores múltiples de gp"
 
-#: coff-arm.c:1066 elf32-arm.c:1425
+#: coff-alpha.c:1543
+msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH"
+msgstr "%B: tipo de reubicación sin soporte: ALPHA_R_GPRELHIGH"
+
+#: coff-alpha.c:1550
+msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
+msgstr "%B: tipo de reubicación sin soporte: ALPHA_R_GPRELLOW"
+
+#: coff-alpha.c:1557 elf32-m32r.c:2471 elf64-alpha.c:3912 elf64-alpha.c:4038
+#: elf32-ia64.c:4108 elf64-ia64.c:4108
+msgid "%B: unknown relocation type %d"
+msgstr "%B: tipo de reubicación %d desconocido"
+
+#: coff-arm.c:990 elf32-arm.c:1926
 #, c-format
 msgid "%B: unable to find THUMB glue '%s' for `%s'"
 msgstr "%B: no se puede encontrar el pegamento THUMB '%s' para `%s'"
 
-#: coff-arm.c:1096 elf32-arm.c:1459
+#: coff-arm.c:1019 elf32-arm.c:1960
 #, c-format
 msgid "%B: unable to find ARM glue '%s' for `%s'"
 msgstr "%B: no se puede encontrar el pegamento ARM '%s' para `%s'"
 
-#: coff-arm.c:1394 elf32-arm.c:2165
+#: coff-arm.c:1319 elf32-arm.c:2683
 #, c-format
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
@@ -228,7 +233,7 @@
 "%B(%s): aviso: interoperabilidad no activada.\n"
 "  primer suceso: %B: llamada arm a thumb"
 
-#: coff-arm.c:1484
+#: coff-arm.c:1409
 #, c-format
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
@@ -239,148 +244,148 @@
 "  primer suceso: %B: llamada arm a thumb\n"
 "  considere reenlazar con --support-old-code activado"
 
-#: coff-arm.c:1776 cofflink.c:3013 coff-tic80.c:687
+#: coff-arm.c:1702 cofflink.c:3015 coff-tic80.c:695
 msgid "%B: bad reloc address 0x%lx in section `%A'"
 msgstr "%B: dirección de reubicación 0x%lx errónea en la sección `%A'"
 
-#: coff-arm.c:2110
+#: coff-arm.c:2028
 msgid "%B: illegal symbol index in reloc: %d"
 msgstr "%B: índice de símbolos ilegal en la reubicación: %d"
 
-#: coff-arm.c:2243
+#: coff-arm.c:2158
 #, c-format
 msgid "ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
 msgstr "ERROR: %B está compilado para APCS-%d, mientras que %B está compilado para APCS-%d"
 
-#: coff-arm.c:2259 elf32-arm.c:3583
+#: coff-arm.c:2174 elf32-arm.c:5093
 #, c-format
 msgid "ERROR: %B passes floats in float registers, whereas %B passes them in integer registers"
 msgstr "ERROR: %B pasa números de coma flotante en registros de coma flotante, mientras que %B los pasa en registros enteros"
 
-#: coff-arm.c:2262 elf32-arm.c:3587
+#: coff-arm.c:2177 elf32-arm.c:5097
 #, c-format
 msgid "ERROR: %B passes floats in integer registers, whereas %B passes them in float registers"
 msgstr "ERROR: %B pasa números de coma flotante en registros enteros, mientras que %B los pasa en registros de coma flotante"
 
-#: coff-arm.c:2276
+#: coff-arm.c:2191
 #, c-format
 msgid "ERROR: %B is compiled as position independent code, whereas target %B is absolute position"
 msgstr "ERROR: %B está compilado como código independiente de posición, mientras que el objetivo %B es de posición absoluta"
 
-#: coff-arm.c:2279
+#: coff-arm.c:2194
 #, c-format
 msgid "ERROR: %B is compiled as absolute position code, whereas target %B is position independent"
 msgstr "ERROR: %B está compilado como código de posición absoluta, mientras que el objetivo %B es independiente de posición"
 
-#: coff-arm.c:2307 elf32-arm.c:3652
+#: coff-arm.c:2222 elf32-arm.c:5162
 #, c-format
 msgid "Warning: %B supports interworking, whereas %B does not"
 msgstr "Aviso: %B soporta interoperabilidad, mientras que %B no"
 
-#: coff-arm.c:2310 elf32-arm.c:3658
+#: coff-arm.c:2225 elf32-arm.c:5168
 #, c-format
 msgid "Warning: %B does not support interworking, whereas %B does"
 msgstr "Aviso: %B no soporta interoperabilidad, mientras que %B sí"
 
-#: coff-arm.c:2336
+#: coff-arm.c:2249
 #, c-format
 msgid "private flags = %x:"
 msgstr "opciones privadas = %x:"
 
-#: coff-arm.c:2344 elf32-arm.c:3709
+#: coff-arm.c:2257 elf32-arm.c:5219
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr "[números de coma flotante pasados en registros de coma flotante]"
 
-#: coff-arm.c:2346
+#: coff-arm.c:2259
 #, c-format
 msgid " [floats passed in integer registers]"
 msgstr "[números de coma flotante pasados en registros enteros]"
 
-#: coff-arm.c:2349 elf32-arm.c:3712
+#: coff-arm.c:2262 elf32-arm.c:5222
 #, c-format
 msgid " [position independent]"
 msgstr "[independiente de posición]"
 
-#: coff-arm.c:2351
+#: coff-arm.c:2264
 #, c-format
 msgid " [absolute position]"
 msgstr "[posición absoluta]"
 
-#: coff-arm.c:2355
+#: coff-arm.c:2268
 #, c-format
 msgid " [interworking flag not initialised]"
 msgstr "[opción de interoperabilidad no iniciada]"
 
-#: coff-arm.c:2357
+#: coff-arm.c:2270
 #, c-format
 msgid " [interworking supported]"
 msgstr "[soporte para interoperabilidad]"
 
-#: coff-arm.c:2359
+#: coff-arm.c:2272
 #, c-format
 msgid " [interworking not supported]"
 msgstr "[sin soporte para interoperabilidad]"
 
-#: coff-arm.c:2407 elf32-arm.c:3390
+#: coff-arm.c:2318 elf32-arm.c:4571
 #, c-format
 msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking"
 msgstr "Aviso: No se establece la opción de interoperabilidad de %B ya que se había especificado con anterioridad como no interoperable"
 
-#: coff-arm.c:2411 elf32-arm.c:3394
+#: coff-arm.c:2322 elf32-arm.c:4575
 #, c-format
 msgid "Warning: Clearing the interworking flag of %B due to outside request"
 msgstr "Aviso: Limpiando la opción de interoperabilidad de %B debido a una petición externa"
 
-#: coffcode.h:859
+#: coffcode.h:849
 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%B: aviso: el símbolo COMDAT '%s' no coincide con el nombre de sección '%s'"
 
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1072
+#: coffcode.h:1061
 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s"
 msgstr "%B: Aviso: Se ignora la opción de sección IMAGE_SCN_MEM_NOT_PAGED en la sección %s"
 
-#: coffcode.h:1127
+#: coffcode.h:1116
 msgid "%B (%s): Section flag %s (0x%x) ignored"
 msgstr "%B (%s): Se ignora la opción de sección %s (0x%x)"
 
-#: coffcode.h:2255
+#: coffcode.h:2204
 #, c-format
 msgid "Unrecognized TI COFF target id '0x%x'"
 msgstr "Id de objetivo TI COFF '0x%x' no reconocido"
 
-#: coffcode.h:4375
+#: coffcode.h:4211
 msgid "%B: warning: line number table read failed"
 msgstr "%B: aviso: falló la lectura de tabla de números de línea"
 
-#: coffcode.h:4407
+#: coffcode.h:4243
 msgid "%B: warning: illegal symbol index %ld in line numbers"
 msgstr "%B: aviso: índice de símbolos %ld ilegal en los números de línea"
 
-#: coffcode.h:4421
+#: coffcode.h:4257
 msgid "%B: warning: duplicate line number information for `%s'"
 msgstr "%B: aviso: información duplicada de números de línea para `%s'"
 
-#: coffcode.h:4771
+#: coffcode.h:4597
 msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
 msgstr "%B: Clase de almacenamiento %d no reconocida para %s símbolo `%s'"
 
-#: coffcode.h:4904
+#: coffcode.h:4723
 msgid "warning: %B: local symbol `%s' has no section"
 msgstr "aviso: %B: el símbolo local `%s' no tiene sección"
 
-#: coffcode.h:5010 coff-i860.c:586 coff-tic54x.c:376
+#: coffcode.h:4827 coff-i860.c:586 coff-tic54x.c:376
 msgid "%B: warning: illegal symbol index %ld in relocs"
 msgstr "%B: aviso: índice de símbolos %ld ilegal en reubicaciones"
 
-#: coffcode.h:5048
+#: coffcode.h:4865
 msgid "%B: illegal relocation type %d at address 0x%lx"
 msgstr "%B: tipo de reubicación %d ilegal en la dirección 0x%lx"
 
-#: coffgen.c:1594
+#: coffgen.c:1511
 msgid "%B: bad string table size %lu"
 msgstr "%B: tamaño de tabla de cadenas %lu erróneo"
 
@@ -398,7 +403,7 @@
 msgid "uncertain calling convention for non-COFF symbol"
 msgstr "convención de llamada incierta para un símbolo que no es COFF"
 
-#: cofflink.c:507 elflink.c:3955
+#: cofflink.c:507 elflink.c:3948
 msgid "Warning: type of symbol `%s' changed from %d to %d in %B"
 msgstr "Aviso: el tipo del símbolo `%s' cambió de %d a %d en %B"
 
@@ -406,17 +411,17 @@
 msgid "%B: relocs in section `%A', but it has no contents"
 msgstr "%B: reubicaciones en la sección `%A', pero no tiene contenido"
 
-#: cofflink.c:2624 coffswap.h:890
+#: cofflink.c:2624 coffswap.h:823
 #, c-format
 msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%s: %s: desbordamiento de reubicación: 0x%lx > 0xffff"
 
-#: cofflink.c:2633 coffswap.h:876
+#: cofflink.c:2633 coffswap.h:809
 #, c-format
 msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
 msgstr "%s: aviso: %s: desbordamiento de número de línea: 0x%lx > 0xffff"
 
-#: coff-m68k.c:482 elf32-m68k.c:2128
+#: coff-m68k.c:482 elf32-bfin.c:2722 elf32-m68k.c:2193
 msgid "unsupported reloc type"
 msgstr "tipo de reubicación sin soporte"
 
@@ -444,17 +449,21 @@
 msgid "GP relative relocation when _gp not defined"
 msgstr "reubicación GP relativa cuando _gp no está definido"
 
-#: coff-rs6000.c:2783
+#: coff-or32.c:227
+msgid "Unrecognized reloc"
+msgstr "Reubicación no reconocida"
+
+#: coff-rs6000.c:2785
 #, c-format
 msgid "%s: unsupported relocation type 0x%02x"
 msgstr "%s: tipo de reubicación 0x%02x sin soporte"
 
-#: coff-rs6000.c:2876
+#: coff-rs6000.c:2878
 #, c-format
 msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
 msgstr "%s: reubicación de TOC en 0x%x al símbolo `%s' sin entrada TOC"
 
-#: coff-tic4x.c:174 coff-tic54x.c:282 coff-tic80.c:450
+#: coff-tic4x.c:174 coff-tic54x.c:282 coff-tic80.c:458
 #, c-format
 msgid "Unrecognized reloc type 0x%x"
 msgstr "Tipo de reubicación 0x%x no reconocida"
@@ -478,72 +487,76 @@
 msgid "warning: unable to update contents of %s section in %s"
 msgstr "aviso: no se puede actualizar el contenido de la sección %s en %s"
 
-#: dwarf2.c:296
+#: dwarf2.c:315
 msgid "Dwarf Error: Can't find .debug_str section."
 msgstr "Error de Dwarf: No se puede encontrar la sección .debug_str."
 
-#: dwarf2.c:314
+#: dwarf2.c:333
 #, c-format
 msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."
 msgstr "Error de Dwarf: El desplazamiento DW_FROM_strp (%lu) es más grande o igual que el tamaño de .debug_str (%lu)."
 
-#: dwarf2.c:388
+#: dwarf2.c:426
 msgid "Dwarf Error: Can't find .debug_abbrev section."
 msgstr "Error de Dwarf: No se puede encontrar la sección .debug_abbrev."
 
-#: dwarf2.c:403
+#: dwarf2.c:441
 #, c-format
 msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."
 msgstr "Error de Dwarf: El desplazamiento de abreviatura (%lu) es más grande o igual que el tamaño de .debug_abbrev (%lu)."
 
-#: dwarf2.c:601
+#: dwarf2.c:656
 #, c-format
 msgid "Dwarf Error: Invalid or unhandled FORM value: %u."
 msgstr "Error de Dwarf: Valor de FORM inválido o no manejado: %u."
 
-#: dwarf2.c:773
+#: dwarf2.c:856
 msgid "Dwarf Error: mangled line number section (bad file number)."
 msgstr "Error de Dwarf: sección de números de línea revuelta (número erróneo de fichero)."
 
-#: dwarf2.c:866
+#: dwarf2.c:947
 msgid "Dwarf Error: Can't find .debug_line section."
 msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_line."
 
-#: dwarf2.c:883
+#: dwarf2.c:964
 #, c-format
 msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."
 msgstr "Error de Dwarf: El desplazamiento de línea (%lu) es más grande o igual que el tamaño de .debug_line (%lu)."
 
-#: dwarf2.c:1088
+#: dwarf2.c:1192
 msgid "Dwarf Error: mangled line number section."
 msgstr "Error de Dwarf: sección de números de línea revuelta."
 
-#: dwarf2.c:1285 dwarf2.c:1343 dwarf2.c:1498
+#: dwarf2.c:1382
+msgid "Dwarf Error: Can't find .debug_ranges section."
+msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_ranges."
+
+#: dwarf2.c:1544 dwarf2.c:1660 dwarf2.c:1930
 #, c-format
 msgid "Dwarf Error: Could not find abbrev number %u."
 msgstr "Error de Dwarf: No se puede encontrar el número de abreviatura %u."
 
-#: dwarf2.c:1459
+#: dwarf2.c:1891
 #, c-format
 msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."
 msgstr "Error de Dwarf: se encontró la versión de dwarf '%u', este lector solamente maneja información de la versión 2."
 
-#: dwarf2.c:1466
+#: dwarf2.c:1898
 #, c-format
 msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
 msgstr "Error de Dwarf: se encontró el tamaño de dirección '%u', este lector no puede manejar tamaños más grandes que '%u'."
 
-#: dwarf2.c:1489
+#: dwarf2.c:1921
 #, c-format
 msgid "Dwarf Error: Bad abbrev number: %u."
 msgstr "Error de Dwarf: Número de abreviación erróneo: %u."
 
-#: ecoff.c:1269
+#: ecoff.c:1227
 #, c-format
 msgid "Unknown basic type %d"
 msgstr "Tipo básico %d desconocido"
 
-#: ecoff.c:1529
+#: ecoff.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -552,7 +565,7 @@
 "\n"
 "      Símbolo final+1: %ld"
 
-#: ecoff.c:1536 ecoff.c:1539
+#: ecoff.c:1491 ecoff.c:1494
 #, c-format
 msgid ""
 "\n"
@@ -561,7 +574,7 @@
 "\n"
 "      Primer símbolo: %ld"
 
-#: ecoff.c:1551
+#: ecoff.c:1506
 #, c-format
 msgid ""
 "\n"
@@ -570,7 +583,7 @@
 "\n"
 "      Símbolo final+1: %-7ld Tipo: %s"
 
-#: ecoff.c:1558
+#: ecoff.c:1513
 #, c-format
 msgid ""
 "\n"
@@ -579,7 +592,7 @@
 "\n"
 "      Símbolo local: %ld"
 
-#: ecoff.c:1566
+#: ecoff.c:1521
 #, c-format
 msgid ""
 "\n"
@@ -588,7 +601,7 @@
 "\n"
 "      struct; símbolo final+1: %ld"
 
-#: ecoff.c:1571
+#: ecoff.c:1526
 #, c-format
 msgid ""
 "\n"
@@ -597,7 +610,7 @@
 "\n"
 "      union; símbolo final+1: %ld"
 
-#: ecoff.c:1576
+#: ecoff.c:1531
 #, c-format
 msgid ""
 "\n"
@@ -606,7 +619,7 @@
 "\n"
 "      enum; símbolo final+1: %ld"
 
-#: ecoff.c:1582
+#: ecoff.c:1537
 #, c-format
 msgid ""
 "\n"
@@ -615,16 +628,16 @@
 "\n"
 "      Tipo: %s"
 
-#: elf32-arm.c:1794
+#: elf32-arm.c:2315
 msgid "%B: BE8 images only valid in big-endian mode."
 msgstr "%B: las imágenes BE8 sólo son válidas en modo big-endian."
 
-#: elf32-arm.c:1953
+#: elf32-arm.c:2471
 #, c-format
 msgid "Invalid TARGET2 relocation type '%s'."
 msgstr "Tipo de reubicación TARGET2 '%s' inválido."
 
-#: elf32-arm.c:2060
+#: elf32-arm.c:2578
 msgid ""
 "%B(%s): warning: interworking not enabled.\n"
 "  first occurrence: %B: thumb call to arm"
@@ -632,212 +645,298 @@
 "%s(%s): aviso: interoperabilidad no activada.\n"
 "  primer suceso: %B: llamada thumb para arm"
 
-#: elf32-arm.c:2476
+#: elf32-arm.c:3044
 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'."
 msgstr "\\%B: Aviso: La instrucción Arm BLX apunta a la función Arm '%s'."
 
-#: elf32-arm.c:2665
+#: elf32-arm.c:3227
 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
 msgstr "%B: Aviso: La instrucción Thumb BLX apunta a la función thumb '%s'."
 
-#: elf32-arm.c:3185 elf32-sh.c:4610 elf64-sh64.c:1537
+#: elf32-arm.c:3889
+msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object"
+msgstr "%B(%A+0x%lx): la reubicación R_ARM_TLS_LE32 no se permite en objetos compartidos"
+
+#: elf32-arm.c:4290 elf32-sh.c:4618 elf64-sh64.c:1537
 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section"
 msgstr "%B(%A+0x%lx): reubicación %s contra la sección SEC_MERGE"
 
-#: elf32-arm.c:3277
-msgid "%B(%A): warning: unresolvable relocation %d against symbol `%s'"
-msgstr "%B(%A): aviso: reubicación %d sin resolución contra el símbolo `%s'"
+#: elf32-arm.c:4351 elf64-ppc.c:9672
+msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
+msgstr "%B(%A+0x%lx): se usó %s con el símbolo TLS %s"
 
-#: elf32-arm.c:3329 elf32-avr.c:875 elf32-cr16c.c:773 elf32-cris.c:1502
-#: elf32-crx.c:911 elf32-d10v.c:564 elf32-fr30.c:595 elf32-frv.c:4107
-#: elf32-h8300.c:494 elf32-i860.c:1189 elf32-ip2k.c:1550 elf32-iq2000.c:611
-#: elf32-m32r.c:3250 elf32-m68hc1x.c:1189 elf32-msp430.c:503
-#: elf32-openrisc.c:415 elf32-v850.c:1749 elf32-xstormy16.c:954
-#: elf64-mmix.c:1517 elf-m10200.c:427 elf-m10300.c:1527
+#: elf32-arm.c:4352 elf64-ppc.c:9673
+msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
+msgstr "%B(%A+0x%lx): se usó %s con el símbolo %s que no es TLS"
+
+#: elf32-arm.c:4375 elf32-i386.c:3038 elf32-m32r.c:2653 elf32-m68k.c:1737
+#: elf32-ppc.c:6561 elf32-s390.c:3012 elf32-sh.c:4717 elf32-xtensa.c:2311
+#: elf64-ppc.c:10825 elf64-s390.c:3010 elf64-sh64.c:1626 elf64-x86-64.c:2522
+#: elf-hppa.h:1413 elf-m10300.c:1460 elfxx-sparc.c:3137
+msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
+msgstr "%B(%A+0x%lx): reubicación %s sin resolución contra el símbolo `%s'"
+
+#: elf32-arm.c:4411 elf32-avr.c:880 elf32-cr16c.c:773 elf32-cris.c:1502
+#: elf32-crx.c:911 elf32-d10v.c:536 elf32-fr30.c:595 elf32-frv.c:4107
+#: elf32-h8300.c:494 elf32-i860.c:1189 elf32-ip2k.c:1474 elf32-iq2000.c:616
+#: elf32-m32c.c:465 elf32-m32r.c:3111 elf32-m68hc1x.c:1194 elf32-ms1.c:373
+#: elf32-msp430.c:508 elf32-openrisc.c:383 elf32-v850.c:1672
+#: elf32-xstormy16.c:909 elf64-mmix.c:1517 elf-m10200.c:427 elf-m10300.c:1509
 msgid "internal error: out of range error"
 msgstr "error interno: error fuera de rango"
 
-#: elf32-arm.c:3333 elf32-avr.c:879 elf32-cr16c.c:777 elf32-cris.c:1506
-#: elf32-crx.c:915 elf32-d10v.c:568 elf32-fr30.c:599 elf32-frv.c:4111
-#: elf32-h8300.c:498 elf32-i860.c:1193 elf32-iq2000.c:615 elf32-m32r.c:3254
-#: elf32-m68hc1x.c:1193 elf32-msp430.c:507 elf32-openrisc.c:419
-#: elf32-v850.c:1753 elf32-xstormy16.c:958 elf64-mmix.c:1521 elf-m10200.c:431
-#: elf-m10300.c:1531 elfxx-mips.c:7179
+#: elf32-arm.c:4415 elf32-avr.c:884 elf32-cr16c.c:777 elf32-cris.c:1506
+#: elf32-crx.c:915 elf32-d10v.c:540 elf32-fr30.c:599 elf32-frv.c:4111
+#: elf32-h8300.c:498 elf32-i860.c:1193 elf32-iq2000.c:620 elf32-m32c.c:469
+#: elf32-m32r.c:3115 elf32-m68hc1x.c:1198 elf32-msp430.c:512
+#: elf32-openrisc.c:387 elf32-v850.c:1676 elf32-xstormy16.c:913
+#: elf64-mmix.c:1521 elf-m10200.c:431 elf-m10300.c:1513 elfxx-mips.c:7212
 msgid "internal error: unsupported relocation error"
 msgstr "error interno: error de reubicación sin soporte"
 
-#: elf32-arm.c:3337 elf32-cr16c.c:781 elf32-crx.c:919 elf32-d10v.c:572
-#: elf32-h8300.c:502 elf32-m32r.c:3258 elf32-m68hc1x.c:1197 elf-m10200.c:435
-#: elf-m10300.c:1535
+#: elf32-arm.c:4419 elf32-cr16c.c:781 elf32-crx.c:919 elf32-d10v.c:544
+#: elf32-h8300.c:502 elf32-m32r.c:3119 elf32-m68hc1x.c:1202 elf-m10200.c:435
+#: elf-m10300.c:1517
 msgid "internal error: dangerous error"
 msgstr "error interno: error peligroso"
 
-#: elf32-arm.c:3341 elf32-avr.c:887 elf32-cr16c.c:785 elf32-cris.c:1514
-#: elf32-crx.c:923 elf32-d10v.c:576 elf32-fr30.c:607 elf32-frv.c:4119
-#: elf32-h8300.c:506 elf32-i860.c:1201 elf32-ip2k.c:1565 elf32-iq2000.c:623
-#: elf32-m32r.c:3262 elf32-m68hc1x.c:1201 elf32-msp430.c:515
-#: elf32-openrisc.c:427 elf32-v850.c:1773 elf32-xstormy16.c:966
-#: elf64-mmix.c:1529 elf-m10200.c:439 elf-m10300.c:1539
+#: elf32-arm.c:4423 elf32-avr.c:892 elf32-cr16c.c:785 elf32-cris.c:1514
+#: elf32-crx.c:923 elf32-d10v.c:548 elf32-fr30.c:607 elf32-frv.c:4119
+#: elf32-h8300.c:506 elf32-i860.c:1201 elf32-ip2k.c:1489 elf32-iq2000.c:628
+#: elf32-m32c.c:477 elf32-m32r.c:3123 elf32-m68hc1x.c:1206 elf32-ms1.c:381
+#: elf32-msp430.c:520 elf32-openrisc.c:395 elf32-v850.c:1696
+#: elf32-xstormy16.c:921 elf64-mmix.c:1529 elf-m10200.c:439 elf-m10300.c:1521
 msgid "internal error: unknown error"
 msgstr "error interno: error desconocido"
 
-#: elf32-arm.c:3440
+#: elf32-arm.c:4664
 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it"
 msgstr "Aviso: Limpiando la opción de interoperación en %B porque se ha enlazado con él código no interoperable en %B"
 
-#: elf32-arm.c:3559
+#: elf32-arm.c:4751
+msgid "ERROR: %B uses VFP register arguments, %B does not"
+msgstr "ERROR: %B utiliza argumentos de registro VFP, mientras que %B no"
+
+#: elf32-arm.c:4798
+msgid "ERROR: %B: Conflicting architecture profiles %c/%c"
+msgstr "ERROR: %B: Perfiles de arquitecturas en conflicto %c/%c"
+
+#: elf32-arm.c:4813
+msgid "Warning: %B: Conflicting platform configuration"
+msgstr "Aviso: %B: Configuración de plataformas en conflicto"
+
+#: elf32-arm.c:4821
+msgid "ERROR: %B: Conflicting use of R9"
+msgstr "ERROR: %B: Uso en conflicto de R9"
+
+#: elf32-arm.c:4833
+msgid "ERROR: %B: SB relative addressing conflicts with use of R9"
+msgstr "ERROR: %B: El direccionamiento relativo a SB tiene conflictos con el uso de R9"
+
+#: elf32-arm.c:4855
+msgid "ERROR: %B: Conflicting definitions of wchar_t"
+msgstr "ERROR: %B: Definiciones en conflicto de wchar_t"
+
+#: elf32-arm.c:4881
+msgid "ERROR: %B: Conflicting enum sizes"
+msgstr "ERROR: %B: Tamaños de enum en conflicto"
+
+#: elf32-arm.c:4892
+msgid "ERROR: %B uses iWMMXt register arguments, %B does not"
+msgstr "ERROR: %B utiliza argumentos de registro iWMMXt, mientras que %B no"
+
+#: elf32-arm.c:4912
+msgid "ERROR: %B: Must be processed by '%s' toolchain"
+msgstr "ERROR: %B: Se debe procesar por la cadena de compilación '%s'"
+
+#: elf32-arm.c:4932 elf32-arm.c:4951
+msgid "ERROR: %B: Incompatible object tag '%s':%d"
+msgstr "ERROR: %B: Etiqueta de objeto '%s' incompatible:%d"
+
+#: elf32-arm.c:4961
+msgid "Warning: %B: Unknown EABI object attribute %d"
+msgstr "Aviso: %B: Atributo de objeto EABI %d desconocido"
+
+#: elf32-arm.c:5069
 msgid "ERROR: Source object %B has EABI version %d, but target %B has EABI version %d"
 msgstr "ERROR: El objeto fuente %B tiene EABI versión %d, pero el objetivo %B tiene EABI versión %d"
 
-#: elf32-arm.c:3572
+#: elf32-arm.c:5082
 msgid "ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"
 msgstr "ERROR: %B está compilado para APCS-%d mientras que el objetivo %B usa APCS-%d"
 
-#: elf32-arm.c:3597
+#: elf32-arm.c:5107
 msgid "ERROR: %B uses VFP instructions, whereas %B does not"
 msgstr "ERROR: %B utiliza instrucciones VFP, mientras que %B no"
 
-#: elf32-arm.c:3601
+#: elf32-arm.c:5111
 msgid "ERROR: %B uses FPA instructions, whereas %B does not"
 msgstr "ERROR: %B utiliza instrucciones FPA, mientras que %B no"
 
-#: elf32-arm.c:3611
+#: elf32-arm.c:5121
 msgid "ERROR: %B uses Maverick instructions, whereas %B does not"
 msgstr "ERROR: %B utiliza instrucciones Maverick, mientras que %B no"
 
-#: elf32-arm.c:3615
+#: elf32-arm.c:5125
 msgid "ERROR: %B does not use Maverick instructions, whereas %B does"
 msgstr "ERROR: %B no utiliza instrucciones Maverick, mientras que %B sí"
 
-#: elf32-arm.c:3634
+#: elf32-arm.c:5144
 msgid "ERROR: %B uses software FP, whereas %B uses hardware FP"
 msgstr "ERROR: %B utiliza FP de software, mientras que %B utiliza FP de hardware"
 
-#: elf32-arm.c:3638
+#: elf32-arm.c:5148
 msgid "ERROR: %B uses hardware FP, whereas %B uses software FP"
 msgstr "ERROR: %B utiliza FP de hardware, mientras que %B utiliza FP de software"
 
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
-#: elf32-arm.c:3685 elf32-cris.c:3243 elf32-m68hc1x.c:1333 elf32-m68k.c:397
-#: elf32-vax.c:546 elfxx-mips.c:9846
+#: elf32-arm.c:5195 elf32-bfin.c:2164 elf32-cris.c:3243 elf32-m68hc1x.c:1338
+#: elf32-m68k.c:428 elf32-vax.c:528 elfxx-mips.c:9933
 #, c-format
 msgid "private flags = %lx:"
 msgstr "opciones privadas = %lx:"
 
-#: elf32-arm.c:3694
+#: elf32-arm.c:5204
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [interoperabilidad activada]"
 
-#: elf32-arm.c:3702
+#: elf32-arm.c:5212
 #, c-format
 msgid " [VFP float format]"
 msgstr " [formato de coma flotante VFP]"
 
-#: elf32-arm.c:3704
+#: elf32-arm.c:5214
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [formato de coma flotante Maverick]"
 
-#: elf32-arm.c:3706
+#: elf32-arm.c:5216
 #, c-format
 msgid " [FPA float format]"
 msgstr " [formato de coma flotante FPA]"
 
-#: elf32-arm.c:3715
+#: elf32-arm.c:5225
 #, c-format
 msgid " [new ABI]"
 msgstr " [ABI nuevo]"
 
-#: elf32-arm.c:3718
+#: elf32-arm.c:5228
 #, c-format
 msgid " [old ABI]"
 msgstr " [ABI antiguo]"
 
-#: elf32-arm.c:3721
+#: elf32-arm.c:5231
 #, c-format
 msgid " [software FP]"
 msgstr " [FP por software]"
 
-#: elf32-arm.c:3730
+#: elf32-arm.c:5240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [EABI Version1]"
 
-#: elf32-arm.c:3733 elf32-arm.c:3744
+#: elf32-arm.c:5243 elf32-arm.c:5254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [tabla de símbolos ordenados]"
 
-#: elf32-arm.c:3735 elf32-arm.c:3746
+#: elf32-arm.c:5245 elf32-arm.c:5256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [tabla de símbolos sin ordenar]"
 
-#: elf32-arm.c:3741
+#: elf32-arm.c:5251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [EABI Version2]"
 
-#: elf32-arm.c:3749
+#: elf32-arm.c:5259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [los símbolos dinámicos utilizan índices de segmento]"
 
-#: elf32-arm.c:3752
+#: elf32-arm.c:5262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [el mapeo de símbolos precede a otros]"
 
-#: elf32-arm.c:3759
+#: elf32-arm.c:5269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [EABI Version3]"
 
-#: elf32-arm.c:3763
+#: elf32-arm.c:5273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [EABI Version4]"
 
-#: elf32-arm.c:3766
+#: elf32-arm.c:5276
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:3769
+#: elf32-arm.c:5279
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:3775
+#: elf32-arm.c:5285
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <versión de EABI no reconocida>"
 
-#: elf32-arm.c:3782
+#: elf32-arm.c:5292
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [ejecutable reubicable]"
 
-#: elf32-arm.c:3785
+#: elf32-arm.c:5295
 #, c-format
 msgid " [has entry point]"
 msgstr " [tiene punto de entrada]"
 
-#: elf32-arm.c:3790
+#: elf32-arm.c:5300
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<Conjunto de bits de opción no reconocidos>"
 
-#: elf32-avr.c:883 elf32-cris.c:1510 elf32-fr30.c:603 elf32-frv.c:4115
-#: elf32-i860.c:1197 elf32-ip2k.c:1561 elf32-iq2000.c:619 elf32-msp430.c:511
-#: elf32-openrisc.c:423 elf32-v850.c:1757 elf32-xstormy16.c:962
-#: elf64-mmix.c:1525
+#: elf32-arm.c:5536 elf32-i386.c:902 elf32-s390.c:989 elf32-xtensa.c:784
+#: elf64-s390.c:942 elf64-x86-64.c:666 elfxx-sparc.c:1016
+msgid "%B: bad symbol index: %d"
+msgstr "%B: índice de símbolos erróneo: %d"
+
+#: elf32-arm.c:6023 elf32-cris.c:2385 elf32-hppa.c:1813 elf32-i370.c:491
+#: elf32-i386.c:1465 elf32-m32r.c:1913 elf32-m68k.c:1088 elf32-ppc.c:4145
+#: elf32-s390.c:1686 elf32-sh.c:3920 elf32-vax.c:1059 elf64-ppc.c:5717
+#: elf64-s390.c:1659 elf64-sh64.c:3442 elf64-x86-64.c:1252 elf-m10300.c:4107
+#: elfxx-sparc.c:1720
+#, c-format
+msgid "dynamic variable `%s' is zero size"
+msgstr "la variable dinámica `%s' es de tamaño cero"
+
+#: elf32-avr.c:888 elf32-cris.c:1510 elf32-fr30.c:603 elf32-frv.c:4115
+#: elf32-i860.c:1197 elf32-ip2k.c:1485 elf32-iq2000.c:624 elf32-m32c.c:473
+#: elf32-ms1.c:377 elf32-msp430.c:516 elf32-openrisc.c:391 elf32-v850.c:1680
+#: elf32-xstormy16.c:917 elf64-mmix.c:1525
 msgid "internal error: dangerous relocation"
 msgstr "error interno: reubicación peligrosa"
 
+#: elf32-bfin.c:96
+msgid "Division by zero. "
+msgstr "División por cero. "
+
+#: elf32-bfin.c:1958
+msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
+msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
+
+#: elf32-bfin.c:1991 elf32-i386.c:3079 elf32-m68k.c:1778 elf32-s390.c:3064
+#: elf64-s390.c:3062 elf64-x86-64.c:2567
+msgid "%B(%A+0x%lx): reloc against `%s': error %d"
+msgstr "%B(%A+0x%lx): reubicación contra `%s': error %d"
+
 #: elf32-cris.c:1050
 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'"
 msgstr "%B, sección %A: reubicación %s sin resolución contra el símbolo `%s'"
@@ -874,7 +973,7 @@
 msgid "%B: Internal inconsistency; no relocation section %s"
 msgstr "%B: Inconsistencia interna; no se encuentra la sección de reubicación %s"
 
-#: elf32-cris.c:2507
+#: elf32-cris.c:2520
 msgid ""
 "%B, section %A:\n"
 "  v10/v32 compatible object %s must not contain a PIC relocation"
@@ -882,7 +981,7 @@
 "%B, sección %A:\n"
 "  el objeto %s compatible con v10/v32 no debe contener una reubicación PIC"
 
-#: elf32-cris.c:2694 elf32-cris.c:2762
+#: elf32-cris.c:2707 elf32-cris.c:2775
 msgid ""
 "%B, section %A:\n"
 "  relocation %s should not be used in a shared object; recompile with -fPIC"
@@ -1009,276 +1108,251 @@
 msgid "relocation references a different segment"
 msgstr "la reubicación referencía un segmento diferente"
 
-#: elf32-frv.c:6344
+#: elf32-frv.c:6324
 msgid "%B: unsupported relocation type %i"
 msgstr "%B: tipo de reubicación %i sin soporte"
 
-#: elf32-frv.c:6662
+#: elf32-frv.c:6642
 #, c-format
 msgid "%s: compiled with %s and linked with modules that use non-pic relocations"
 msgstr "%s: compilado con %s y enlazado con módulos que usan reubicaciones que no son pic"
 
-#: elf32-frv.c:6715 elf32-iq2000.c:796
+#: elf32-frv.c:6695 elf32-iq2000.c:801 elf32-m32c.c:785
 #, c-format
 msgid "%s: compiled with %s and linked with modules compiled with %s"
 msgstr "%s: compilado con %s y enlazado con módulos compilados con %s"
 
-#: elf32-frv.c:6727
+#: elf32-frv.c:6707
 #, c-format
 msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr "%s: usa campos e_flags desconocidos (0x%lx) diferentes a aquéllos de los módulos previos (0x%lx)"
 
-#: elf32-frv.c:6748
+#: elf32-frv.c:6728
 #, c-format
 msgid "%s: cannot link non-fdpic object file into fdpic executable"
 msgstr "%s: enlazando código que no es fdpic en un ejecutable fdpic"
 
-#: elf32-frv.c:6752
+#: elf32-frv.c:6732
 #, c-format
 msgid "%s: cannot link fdpic object file into non-fdpic executable"
 msgstr "%s: enlazando código fdpic en un ejecutable que no es fdpic"
 
-#: elf32-frv.c:6777 elf32-iq2000.c:833
+#: elf32-frv.c:6757 elf32-iq2000.c:838 elf32-m32c.c:821 elf32-ms1.c:596
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "opciones privadas = 0x%lx:"
 
-#: elf32-gen.c:83 elf64-gen.c:83
+#: elf32-gen.c:68 elf64-gen.c:68
 msgid "%B: Relocations in generic ELF (EM: %d)"
 msgstr "%B: Reubicaciones en ELF genérico (EM: %d)"
 
-#: elf32-hppa.c:542 elf32-m68hc1x.c:161 elf64-ppc.c:3644
+#: elf32-hppa.c:569 elf32-m68hc1x.c:161 elf64-ppc.c:3660
 msgid "%B: cannot create stub entry %s"
 msgstr "%B: no se puede crear la entrada de cabo %s"
 
-#: elf32-hppa.c:795 elf32-hppa.c:3359
+#: elf32-hppa.c:822 elf32-hppa.c:3411
 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections"
 msgstr "%B(%A+0x%lx): no se puede alcanzar %s, recompile con -ffuntion-sections"
 
-#: elf32-hppa.c:1176
+#: elf32-hppa.c:1212
 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC"
 msgstr "%B: no se puede usar la reubicación %s cuando se hace un objeto compartido; recompile con -fPIC"
 
-#: elf32-hppa.c:1370
+#: elf32-hppa.c:1405
 #, c-format
 msgid "Could not find relocation section for %s"
 msgstr "No se puede encontrar la sección de reubicación para %s"
 
-#: elf32-hppa.c:2623
+#: elf32-hppa.c:2677
 msgid "%B: duplicate export stub %s"
 msgstr "%B: cabo de exportación %s duplicado"
 
-#: elf32-hppa.c:3214
+#: elf32-hppa.c:3266
 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"
 msgstr "%B(%A+0x%lx): la compostura %s para la insn 0x%x no tiene soporte en un enlazado que no es compartido"
 
-#: elf32-hppa.c:3844
+#: elf32-hppa.c:3895
 msgid "%B(%A+0x%lx): cannot handle %s for %s"
 msgstr "%B(%A+0x%lx): no se puede manejar %s para %s"
 
-#: elf32-hppa.c:4137
+#: elf32-hppa.c:4189
 msgid ".got section not immediately after .plt section"
 msgstr "la sección .got no está inmediatamente después de la sección .plt"
 
-#: elf32-i386.c:326
+#: elf32-i386.c:327 elf32-s390.c:368 elf64-ppc.c:2124 elf64-s390.c:390
+#: elf64-x86-64.c:204
 msgid "%B: invalid relocation type %d"
 msgstr "%B: tipo de reubicación %d inválido"
 
-#: elf32-i386.c:865 elf32-s390.c:985 elf32-sparc.c:910 elf32-xtensa.c:788
-#: elf64-s390.c:938 elf64-x86-64.c:646
-msgid "%B: bad symbol index: %d"
-msgstr "%B: índice de símbolos erróneo: %d"
-
-#: elf32-i386.c:973 elf32-s390.c:1162 elf32-sh.c:6388 elf32-sparc.c:1033
-#: elf64-s390.c:1124
+#: elf32-i386.c:1015 elf32-s390.c:1171 elf32-sh.c:6389 elf64-s390.c:1133
+#: elfxx-sparc.c:1144
 msgid "%B: `%s' accessed both as normal and thread local symbol"
 msgstr "%B: se accesó `%s' como un símbolo normal y un símbolo local de hilo"
 
-#: elf32-i386.c:1088 elf32-s390.c:1271 elf64-ppc.c:4676 elf64-s390.c:1236
-#: elf64-x86-64.c:882
+#: elf32-i386.c:1130 elf32-s390.c:1280 elf64-ppc.c:4731 elf64-s390.c:1245
+#: elf64-x86-64.c:910
 msgid "%B: bad relocation section name `%s'"
 msgstr "%B: nombre de sección de reubicación `%s' erróneo"
 
-#: elf32-i386.c:2043
+#: elf32-i386.c:2149
 msgid "%B: unrecognized relocation (0x%x) in section `%A'"
 msgstr "%B: no se reconoce la dirección de reubicación (0x%lx) en la sección `%A'"
 
-#: elf32-i386.c:2287
+#: elf32-i386.c:2409
 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object"
 msgstr "%B: no se puede usar la reubicación R_386_GOTOFF contra la función protegida `%s' cuando se hace un objeto compartido"
 
-#: elf32-i386.c:2931 elf32-m68k.c:1700 elf32-s390.c:2993 elf32-sparc.c:2859
-#: elf32-xtensa.c:2321 elf64-s390.c:2990 elf64-sparc.c:2684
-#: elf64-x86-64.c:2438
-msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
-
-#: elf32-i386.c:2971 elf32-m68k.c:1740 elf32-s390.c:3044 elf64-s390.c:3041
-#: elf64-x86-64.c:2482
-msgid "%B(%A+0x%lx): reloc against `%s': error %d"
-msgstr "%B(%A+0x%lx): reubicación contra `%s': error %d"
-
-#: elf32-ip2k.c:557 elf32-ip2k.c:563 elf32-ip2k.c:726 elf32-ip2k.c:732
+#: elf32-ip2k.c:853 elf32-ip2k.c:859 elf32-ip2k.c:926 elf32-ip2k.c:932
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "relajador ip2k: tabla switch sin información completa de reubicación de coincidencias."
 
-#: elf32-ip2k.c:580 elf32-ip2k.c:759
+#: elf32-ip2k.c:876 elf32-ip2k.c:959
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "relajador ip2k: encabezado de tabla switch corrupto."
 
-#: elf32-ip2k.c:1377
+#: elf32-ip2k.c:1301
 #, c-format
 msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)."
 msgstr "enlazador ip2k: instrucción de página faltante en 0x%08lx (dest = 0x%08lx)."
 
-#: elf32-ip2k.c:1391
+#: elf32-ip2k.c:1317
 #, c-format
 msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)."
 msgstr "enlazador ip2k: instrucción de página redundante en 0x%08lx (dest = 0x%08lx)."
 
 #. Only if it's not an unresolved symbol.
-#: elf32-ip2k.c:1557
+#: elf32-ip2k.c:1481
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "reubicación sin soporte entre espacios de direcciones datos/insn"
 
-#: elf32-iq2000.c:809
+#: elf32-iq2000.c:814 elf32-m32c.c:797
 #, c-format
 msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr "%s: usa campos de e_flags diferentes (0x%lx) que los módulos previos (0x%lx)"
 
-#: elf32-m32r.c:1530
+#: elf32-m32r.c:1436
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr "reubicación SDA cuando _SDA_BASE_ no está definido"
 
-#: elf32-m32r.c:2604 elf64-alpha.c:4181 elf64-alpha.c:4307 elf32-ia64.c:3910
-#: elf64-ia64.c:3910
-msgid "%B: unknown relocation type %d"
-msgstr "%B: tipo de reubicación %d desconocido"
-
-#: elf32-m32r.c:2789 elf64-sh64.c:1626 elf-m10300.c:1481
-#, c-format
-msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
-msgstr "%s: aviso: reubicación sin resolución contra el símbolo `%s' de la sección %s"
-
-#: elf32-m32r.c:3187
+#: elf32-m32r.c:3048
 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)"
 msgstr "%B: El objetivo (%s) de una reubicación %s está en la sección errónea (%A)"
 
-#: elf32-m32r.c:3719
+#: elf32-m32r.c:3576
 msgid "%B: Instruction set mismatch with previous modules"
 msgstr "%B: Conjunto de instrucciones no coincidente con módulos previos"
 
-#: elf32-m32r.c:3741
+#: elf32-m32r.c:3597
 #, c-format
 msgid "private flags = %lx"
 msgstr "opciones privadas = %lx"
 
-#: elf32-m32r.c:3746
+#: elf32-m32r.c:3602
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instrucciones m32r"
 
-#: elf32-m32r.c:3747
+#: elf32-m32r.c:3603
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instrucciones m32rx"
 
-#: elf32-m32r.c:3748
+#: elf32-m32r.c:3604
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instrucciones m32r2"
 
-#: elf32-m68hc1x.c:1101
+#: elf32-m68hc1x.c:1106
 #, c-format
 msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
 msgstr "Una referencia al símbolo far `%s' usando una reubicación incorrecta puede resultar en una ejecución incorrecta"
 
-#: elf32-m68hc1x.c:1124
+#: elf32-m68hc1x.c:1129
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "la dirección almacenada [%lx:%04lx] (%lx) no está en el mismo banco que la dirección almacenada actual [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1143
+#: elf32-m68hc1x.c:1148
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "referencia a una dirección almacenada [%lx:%04lx] en el espacio normal de direcciones en %04lx"
 
-#: elf32-m68hc1x.c:1276
+#: elf32-m68hc1x.c:1281
 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
 msgstr "%B: enlazando ficheros compilados con enteros de 16-bit (-mshort) y otros con enteros de 32-bit"
 
-#: elf32-m68hc1x.c:1283
+#: elf32-m68hc1x.c:1288
 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
 msgstr "%B: enlazando ficheros compilados con dobles de 32-bit (-fshort-double) y otros con dobles de 64-bit"
 
-#: elf32-m68hc1x.c:1292
+#: elf32-m68hc1x.c:1297
 msgid "%B: linking files compiled for HCS12 with others compiled for HC12"
 msgstr "%B: enlazando ficheros compilados para HCS12, con otros compilados para HC12"
 
-#: elf32-m68hc1x.c:1308 elf32-ppc.c:2298 elf64-sparc.c:3090 elfxx-mips.c:9807
+#: elf32-m68hc1x.c:1313 elf32-ppc.c:3576 elf64-sparc.c:696 elfxx-mips.c:9894
 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 msgstr "%B: usa campos de e_flags diferentes (0x%lx) que los módulos previos (0x%lx)"
 
-#: elf32-m68hc1x.c:1336
+#: elf32-m68hc1x.c:1341
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[abi=int de 32-bit, "
 
-#: elf32-m68hc1x.c:1338
+#: elf32-m68hc1x.c:1343
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[abi=int de 16-bit, "
 
-#: elf32-m68hc1x.c:1341
+#: elf32-m68hc1x.c:1346
 #, c-format
 msgid "64-bit double, "
 msgstr "doble de 64-bit, "
 
-#: elf32-m68hc1x.c:1343
+#: elf32-m68hc1x.c:1348
 #, c-format
 msgid "32-bit double, "
 msgstr "doble de 32-bit, "
 
-#: elf32-m68hc1x.c:1346
+#: elf32-m68hc1x.c:1351
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1348
+#: elf32-m68hc1x.c:1353
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1350
+#: elf32-m68hc1x.c:1355
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1353
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [memoria=modelo de bancos]"
 
-#: elf32-m68hc1x.c:1355
+#: elf32-m68hc1x.c:1360
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memoria=plana]"
 
-#: elf32-m68k.c:400
+#: elf32-m68k.c:431
 #, c-format
 msgid " [cpu32]"
 msgstr " [cpu32]"
 
-#: elf32-m68k.c:403
+#: elf32-m68k.c:434
 #, c-format
 msgid " [m68000]"
 msgstr " [m68000]"
 
-#: elf32-mcore.c:353 elf32-mcore.c:455
+#: elf32-mcore.c:98 elf32-mcore.c:428
 msgid "%B: Relocation %s (%d) is not currently supported.\n"
 msgstr "%B: La reubicación %s (%d) actualmente no tiene soporte.\n"
 
-#: elf32-mcore.c:441
+#: elf32-mcore.c:414
 msgid "%B: Unknown relocation type %d\n"
 msgstr "%B: Tipo de reubicación %d desconocido\n"
 
@@ -1295,128 +1369,124 @@
 msgid "Linking mips16 objects into %s format is not supported"
 msgstr "Enlazar objetos mips16 en el formato %s no tiene soporte"
 
-#: elf32-ppc.c:2181
+#: elf32-ppc.c:1652
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "el enlazador genérico no puede manejar %s"
 
-#: elf32-ppc.c:2263
-msgid "%B: compiled with -mrelocatable and linked with modules compiled normally"
-msgstr "%B: compilado con -mrelocatable y enlazado con módulos compilados de forma normal"
+#: elf32-ppc.c:2080
+msgid "corrupt or empty %s section in %B"
+msgstr "sección %s corrupta o vacía en %B"
 
-#: elf32-ppc.c:2271
-msgid "%B: compiled normally and linked with modules compiled with -mrelocatable"
-msgstr "%B: compilado de forma normal y enlazado con módulos compilados con -mrelocatable"
+#: elf32-ppc.c:2087
+msgid "unable to read in %s section from %B"
+msgstr "no se puede leer en la sección %s desde %B"
 
-#: elf32-ppc.c:3526
+#: elf32-ppc.c:2093
+msgid "corrupt %s section in %B"
+msgstr "sección %s corrupta en %B"
+
+#: elf32-ppc.c:2136
+msgid "warning: unable to set size of %s section in %B"
+msgstr "aviso: no se puede establecer el tamaño de la sección %s en %B"
+
+#: elf32-ppc.c:2183
+msgid "failed to allocate space for new APUinfo section."
+msgstr "no se puede reservar espacio para la nueva sección APUinfo."
+
+#: elf32-ppc.c:2202
+msgid "failed to compute new APUinfo section."
+msgstr "no se puede calcular la nueva sección APUinfo."
+
+#: elf32-ppc.c:2205
+msgid "failed to install new APUinfo section."
+msgstr "no se puede instalar la nueva sección APUinfo."
+
+#: elf32-ppc.c:2941
 msgid "%B: relocation %s cannot be used when making a shared object"
 msgstr "%B: no se puede usar la reubicación %s cuando se hace un objeto compartido"
 
 #. It does not make sense to have a procedure linkage
 #. table entry for a local symbol.
-#: elf32-ppc.c:3731
+#: elf32-ppc.c:3211
 msgid "%B(%A+0x%lx): %s reloc against local symbol"
 msgstr "%B(%A+0x%lx): reubicación %s contra un símbolo local"
 
-#: elf32-ppc.c:4935 elf64-ppc.c:9967
+#: elf32-ppc.c:3541
+msgid "%B: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%B: compilado con -mrelocatable y enlazado con módulos compilados de forma normal"
+
+#: elf32-ppc.c:3549
+msgid "%B: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%B: compilado de forma normal y enlazado con módulos compilados con -mrelocatable"
+
+#: elf32-ppc.c:5768 elf64-ppc.c:10186
 msgid "%B: unknown relocation type %d for symbol %s"
 msgstr "%B: tipo de reubicación %d desconocido para el símbolo %s"
 
-#: elf32-ppc.c:5184
+#: elf32-ppc.c:6018
 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'"
 msgstr "%B(%A+0x%lx): adición que no es cero en la reubicación %s contra `%s'"
 
-#: elf32-ppc.c:5510 elf32-ppc.c:5536 elf32-ppc.c:5595
+#: elf32-ppc.c:6365 elf32-ppc.c:6391 elf32-ppc.c:6450
 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr "%B: el objetivo (%s) de una reubicación %s está en la sección de salida errónea (%s)"
 
-#: elf32-ppc.c:5650
+#: elf32-ppc.c:6505
 msgid "%B: relocation %s is not yet supported for symbol %s."
 msgstr "%B: la reubicación %s aún no tiene soporte para el símbolo %s."
 
-#: elf32-ppc.c:5705 elf64-ppc.c:10606
-msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): reubicación %s sin resolución contra el símbolo `%s'"
-
-#: elf32-ppc.c:5756 elf64-ppc.c:10653
+#: elf32-ppc.c:6610 elf64-ppc.c:10872
 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d"
 msgstr "%B(%A+0x%lx): reubicación %s contra `%s': error %d"
 
-#: elf32-ppc.c:5999
-msgid "corrupt or empty %s section in %B"
-msgstr "sección %s corrupta o vacía en %B"
-
-#: elf32-ppc.c:6006
-msgid "unable to read in %s section from %B"
-msgstr "no se puede leer en la sección %s desde %B"
-
-#: elf32-ppc.c:6012
-msgid "corrupt %s section in %B"
-msgstr "sección %s corrupta en %B"
-
-#: elf32-ppc.c:6055
-msgid "warning: unable to set size of %s section in %B"
-msgstr "aviso: no se puede establecer el tamaño de la sección %s en %B"
-
-#: elf32-ppc.c:6104
-msgid "failed to allocate space for new APUinfo section."
-msgstr "no se puede reservar espacio para la nueva sección APUinfo."
-
-#: elf32-ppc.c:6123
-msgid "failed to compute new APUinfo section."
-msgstr "no se puede calcular la nueva sección APUinfo."
-
-#: elf32-ppc.c:6126
-msgid "failed to install new APUinfo section."
-msgstr "no se puede instalar la nueva sección APUinfo."
-
-#: elf32-s390.c:2234 elf64-s390.c:2205
+#: elf32-s390.c:2253 elf64-s390.c:2225
 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s"
 msgstr "%B(%A+0x%lx): instrucción inválida para la reubicación TLS %s"
 
-#: elf32-sh64.c:218 elf64-sh64.c:2319
+#: elf32-sh64.c:218 elf64-sh64.c:2322
 #, c-format
 msgid "%s: compiled as 32-bit object and %s is 64-bit"
 msgstr "%s: compilado como un objeto de 32-bit y %s es de 64-bit"
 
-#: elf32-sh64.c:221 elf64-sh64.c:2322
+#: elf32-sh64.c:221 elf64-sh64.c:2325
 #, c-format
 msgid "%s: compiled as 64-bit object and %s is 32-bit"
 msgstr "%s: compilado como un objeto de 64-bit y %s es de 32-bit"
 
-#: elf32-sh64.c:223 elf64-sh64.c:2324
+#: elf32-sh64.c:223 elf64-sh64.c:2327
 #, c-format
 msgid "%s: object size does not match that of target %s"
 msgstr "%s: el tamaño del objeto no coincide con el tamaño del objetivo %s"
 
-#: elf32-sh64.c:445 elf64-sh64.c:2890
+#: elf32-sh64.c:446 elf64-sh64.c:2899
 #, c-format
 msgid "%s: encountered datalabel symbol in input"
 msgstr "%s: se encontró un símbolo datalabel en la entrada"
 
-#: elf32-sh64.c:522
+#: elf32-sh64.c:523
 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
 msgstr "No coincide PTB: una dirección SHmedia (bit 0 == 1)"
 
-#: elf32-sh64.c:525
+#: elf32-sh64.c:526
 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
 msgstr "No coincide PTA: una dirección SHcompact (bit 0 == 0)"
 
-#: elf32-sh64.c:543
+#: elf32-sh64.c:544
 #, c-format
 msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
 msgstr "%s: error de GAS: instrucción PTB inesperada con R_SH_PT_16"
 
-#: elf32-sh64.c:592
+#: elf32-sh64.c:593
 msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n"
 msgstr "%B: error: tipo de reubicación %d sin alinear en %08x reubicación %p\n"
 
-#: elf32-sh64.c:668
+#: elf32-sh64.c:669
 #, c-format
 msgid "%s: could not write out added .cranges entries"
 msgstr "%s: no se pueden escribir las entradas .cranges agregadas"
 
-#: elf32-sh64.c:728
+#: elf32-sh64.c:729
 #, c-format
 msgid "%s: could not write out sorted .cranges entries"
 msgstr "%s: no se pueden escribir las entradas .cranges ordenadas"
@@ -1453,31 +1523,27 @@
 msgid "%B: 0x%lx: fatal: reloc overflow while relaxing"
 msgstr "%B: 0x%lx: fatal: desbordamiento de reubicación durante la relajación"
 
-#: elf32-sh.c:4558 elf64-sh64.c:1509
+#: elf32-sh.c:4566 elf64-sh64.c:1509
 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
 msgstr "No se maneja un STO_SH5_ISA32 inesperado en un símbolo local"
 
-#: elf32-sh.c:4709
-msgid "%B(%A): unresolvable relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
-
-#: elf32-sh.c:4779
+#: elf32-sh.c:4791
 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation"
 msgstr "%B: 0x%lx: fatal: objetivo de ramificación sin alineación para la reubicación de soporte de relajamiento"
 
-#: elf32-sh.c:4812 elf32-sh.c:4827
+#: elf32-sh.c:4824 elf32-sh.c:4839
 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx"
 msgstr "%B: 0x%lx: fatal: reubicación %s sin alineación 0x%lx"
 
-#: elf32-sh.c:4841
+#: elf32-sh.c:4853
 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32"
 msgstr "%B: 0x%lx: fatal: la reubicación R_SH_PSHA %d no está en el rango -32..32"
 
-#: elf32-sh.c:4855
+#: elf32-sh.c:4867
 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32"
 msgstr "%B: 0x%lx: fatal: la reubicación R_SH_PSHL %d no está en el rango -32..32"
 
-#: elf32-sh.c:6599 elf64-alpha.c:4725
+#: elf32-sh.c:6601 elf64-alpha.c:4466
 msgid "%B: TLS local exec code cannot be linked into shared objects"
 msgstr "%B: el código de ejecución local TLS no se puede enlazar en objetos compartidos"
 
@@ -1493,214 +1559,209 @@
 msgid "%B: Failed to add renamed symbol %s"
 msgstr "%B: Falló al agregar el símbolo renombrado %s"
 
-#: elf32-sparc.c:2501 elf64-sparc.c:2340
-msgid "%B: probably compiled without -fPIC?"
-msgstr "%B: ¿Compilado probablemente sin -fPIC?"
-
-#: elf32-sparc.c:3324
+#: elf32-sparc.c:87
 msgid "%B: compiled for a 64 bit system and target is 32 bit"
 msgstr "%B: compilado para un sistema de 64 bit y el objetivo es de 32 bit"
 
-#: elf32-sparc.c:3337
+#: elf32-sparc.c:100
 msgid "%B: linking little endian files with big endian files"
 msgstr "%B: enlazando ficheros little endian con ficheros big endian"
 
-#: elf32-v850.c:769
+#: elf32-v850.c:160
 #, c-format
 msgid "Variable `%s' cannot occupy in multiple small data regions"
 msgstr "La variable `%s' no puede ocupar múltiples regiones de datos small"
 
-#: elf32-v850.c:772
+#: elf32-v850.c:163
 #, c-format
 msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr "La variable `%s' solamente puede estar en una de las regiones de datos small, cero, y tiny"
 
-#: elf32-v850.c:775
+#: elf32-v850.c:166
 #, c-format
 msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos small y cero"
 
-#: elf32-v850.c:778
+#: elf32-v850.c:169
 #, c-format
 msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos small y tiny"
 
-#: elf32-v850.c:781
+#: elf32-v850.c:172
 #, c-format
 msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos cero y tiny"
 
-#: elf32-v850.c:1090
+#: elf32-v850.c:475
 #, c-format
 msgid "FAILED to find previous HI16 reloc\n"
 msgstr "FALLO para encontrar la reubicación HI16 previa\n"
 
-#: elf32-v850.c:1761
+#: elf32-v850.c:1684
 msgid "could not locate special linker symbol __gp"
 msgstr "no se puede localizar el símbolo especial del enlazador __gp"
 
-#: elf32-v850.c:1765
+#: elf32-v850.c:1688
 msgid "could not locate special linker symbol __ep"
 msgstr "no se puede localizar el símbolo especial del enlazador __ep"
 
-#: elf32-v850.c:1769
+#: elf32-v850.c:1692
 msgid "could not locate special linker symbol __ctbp"
 msgstr "no se puede localizar el símbolo especial del enlazador __ctbp"
 
-#: elf32-v850.c:1954
+#: elf32-v850.c:1870
 msgid "%B: Architecture mismatch with previous modules"
 msgstr "%B: No coincide la arquitectura con los módulos previos"
 
-#: elf32-v850.c:1975
+#: elf32-v850.c:1889
 #, c-format
 msgid "private flags = %lx: "
 msgstr "opciones privadas = %lx: "
 
-#: elf32-v850.c:1980
+#: elf32-v850.c:1894
 #, c-format
 msgid "v850 architecture"
 msgstr "arquitectura v850"
 
-#: elf32-v850.c:1981
+#: elf32-v850.c:1895
 #, c-format
 msgid "v850e architecture"
 msgstr "arquitectura v850e"
 
-#: elf32-v850.c:1982
+#: elf32-v850.c:1896
 #, c-format
 msgid "v850e1 architecture"
 msgstr "arquitectura v850e1"
 
-#: elf32-vax.c:549
+#: elf32-vax.c:531
 #, c-format
 msgid " [nonpic]"
 msgstr " [no pic]"
 
-#: elf32-vax.c:552
+#: elf32-vax.c:534
 #, c-format
 msgid " [d-float]"
 msgstr " [flotante-d]"
 
-#: elf32-vax.c:555
+#: elf32-vax.c:537
 #, c-format
 msgid " [g-float]"
 msgstr " [flotante-g]"
 
-#: elf32-vax.c:663
+#: elf32-vax.c:647
 #, c-format
 msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld"
 msgstr "%s: aviso: la adición GOT de %ld a `%s' no coincide con la adición previa GOT de %ld"
 
-#: elf32-vax.c:1636
+#: elf32-vax.c:1604
 #, c-format
 msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
 msgstr "%s: aviso: se ignora la adición PLT de %d a `%s' de la sección %s"
 
-#: elf32-vax.c:1760
+#: elf32-vax.c:1728
 #, c-format
 msgid "%s: warning: %s relocation against symbol `%s' from %s section"
 msgstr "%s: aviso: reubicación %s contra el símbolo `%s' de la sección %s"
 
-#: elf32-vax.c:1766
+#: elf32-vax.c:1734
 #, c-format
 msgid "%s: warning: %s relocation to 0x%x from %s section"
 msgstr "%s: aviso: reubicación %s a 0x%x de la sección %s"
 
-#: elf32-xstormy16.c:462 elf32-ia64.c:2394 elf64-ia64.c:2394
+#: elf32-xstormy16.c:425 elf32-ia64.c:2563 elf64-ia64.c:2563
 msgid "non-zero addend in @fptr reloc"
 msgstr "adición que no es cero en la reubicación @fptr"
 
-#: elf32-xtensa.c:709
+#: elf32-xtensa.c:705
 msgid "%B(%A): invalid property table"
 msgstr "%B(%A): tabla de propiedades inválida"
 
-#: elf32-xtensa.c:2209
+#: elf32-xtensa.c:2199
 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)"
 msgstr "%B(%A+0x%lx): desplazamiento de reubicación fuera de rango (tamaño=0x%x)"
 
-#: elf32-xtensa.c:2266
+#: elf32-xtensa.c:2256
 msgid "dynamic relocation in read-only section"
 msgstr "reubicación dinámica en la sección de sólo lectura"
 
-#: elf32-xtensa.c:2430
+#: elf32-xtensa.c:2421
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "inconsistencia interna en el tamaño de la sección .got.loc"
 
-#: elf32-xtensa.c:2744
+#: elf32-xtensa.c:2735
 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x"
 msgstr "%B: tipo de máquina incompatible. La salida es 0x%x. La entrada es 0x%x"
 
-#: elf32-xtensa.c:3890 elf32-xtensa.c:3898
+#: elf32-xtensa.c:3881 elf32-xtensa.c:3889
 msgid "Attempt to convert L32R/CALLX to CALL failed"
 msgstr "Falló el intento de convertir L32R/CALLX a CALL"
 
-#: elf32-xtensa.c:5476 elf32-xtensa.c:5552 elf32-xtensa.c:6505
-#: elf32-xtensa.c:6559
+#: elf32-xtensa.c:5467 elf32-xtensa.c:5543 elf32-xtensa.c:6496
+#: elf32-xtensa.c:6550
 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch"
 msgstr "%B(%A+0x%lx): no se puede decodificar la instrucción; posible falta de coincidencia de la configuración"
 
-#: elf32-xtensa.c:6378 elf32-xtensa.c:6541
+#: elf32-xtensa.c:6369 elf32-xtensa.c:6532
 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
 msgstr "%B(%A+0x%lx): no se puede decodificar la instrucción para la reubicación XTENSA_ASM_SIMPLIFY; posible falta de coincidencia de la configuración"
 
-#: elf32-xtensa.c:7859
+#: elf32-xtensa.c:7855
 msgid "invalid relocation address"
 msgstr "dirección de reubicación inválida"
 
-#: elf32-xtensa.c:7908
+#: elf32-xtensa.c:7904
 msgid "overflow after relaxation"
 msgstr "desbordamiento después de la relajación"
 
-#: elf32-xtensa.c:9036
+#: elf32-xtensa.c:9032
 msgid "%B(%A+0x%lx): unexpected fix for %s relocation"
 msgstr "%B(%A+0x%lx): compostura inesperada para la reubicación %s"
 
-#: elf64-alpha.c:1069
+#: elf64-alpha.c:443
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "la reubicación GPDISP no encontró las instrucciones ldah y lda"
 
-#: elf64-alpha.c:3557
-#, c-format
-msgid "Symbol %s has no GOT subsection for offset 0x%x"
-msgstr "El símbolo %s no tiene subsección GOT para el desplazamiento 0x%x"
-
-#: elf64-alpha.c:3642
+#: elf64-alpha.c:2363
 msgid "%B: .got subsegment exceeds 64K (size %d)"
 msgstr "%B: el subsegmento .got excede los 64K (tamaño %d)"
 
-#: elf64-alpha.c:4479 elf64-alpha.c:4491
+#: elf64-alpha.c:4210 elf64-alpha.c:4222
 msgid "%B: gp-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación gp relativa contra el símbolo dinámico %s"
 
-#: elf64-alpha.c:4517 elf64-alpha.c:4650
+#: elf64-alpha.c:4248 elf64-alpha.c:4383
 msgid "%B: pc-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación relativa al pc contra el símbolo dinámico %s"
 
-#: elf64-alpha.c:4545
+#: elf64-alpha.c:4276
 msgid "%B: change in gp: BRSGP %s"
 msgstr "%B: cambio en gp: BRSGP %s"
 
-#: elf64-alpha.c:4570
+#: elf64-alpha.c:4301
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: elf64-alpha.c:4575
+#: elf64-alpha.c:4306
 msgid "%B: !samegp reloc against symbol without .prologue: %s"
 msgstr "%B: reubicación !samegp contra un símbolo sin .prologue: %s"
 
-#: elf64-alpha.c:4626
+#: elf64-alpha.c:4358
 msgid "%B: unhandled dynamic relocation against %s"
 msgstr "%B: reubicación dinámica sin manejar contra %s"
 
-#: elf64-alpha.c:4709
+#: elf64-alpha.c:4390
+msgid "%B: pc-relative relocation against undefined weak symbol %s"
+msgstr "%B: reubicación relativa al pc contra el símbolo débil sin definir %s"
+
+#: elf64-alpha.c:4450
 msgid "%B: dtp-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación relativa a dtp contra el símbolo dinámico %s"
 
-#: elf64-alpha.c:4732
+#: elf64-alpha.c:4473
 msgid "%B: tp-relative relocation against dynamic symbol %s"
 msgstr "%B: reubicación relativa a tp contra el símbolo dinámico %s"
 
-#: elf64-hppa.c:2085
+#: elf64-hppa.c:2046
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %ld"
 msgstr "la entrada de cabo para %s no puede cargar .plt, desplazamiento dp = %ld"
@@ -1744,16 +1805,16 @@
 msgid "%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld."
 msgstr "%s: directiva LOCAL: El registro $%ld no es un registro local.  El primer registro global es $%ld."
 
-#: elf64-mmix.c:2201
+#: elf64-mmix.c:2207
 #, c-format
 msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
 msgstr "%s: Error: definición múltiple de `%s'; el inicio de %s está definido en un fichero enlazado con anterioridad\n"
 
-#: elf64-mmix.c:2260
+#: elf64-mmix.c:2265
 msgid "Register section has contents\n"
 msgstr "La sección de registros no tiene contenido\n"
 
-#: elf64-mmix.c:2453
+#: elf64-mmix.c:2457
 #, c-format
 msgid ""
 "Internal inconsistency: remaining %u != max %u.\n"
@@ -1762,60 +1823,73 @@
 "Inconsistencia interna: %u restante != %u máximo.\n"
 "  Por favor reporte este bicho."
 
-#: elf64-ppc.c:2490 libbfd.c:826
+#: elf64-ppc.c:2500 libbfd.c:931
 msgid "%B: compiled for a big endian system and target is little endian"
 msgstr "%B: compilado para un sistema big endian y el objetivo es little endian"
 
-#: elf64-ppc.c:2493 libbfd.c:828
+#: elf64-ppc.c:2503 libbfd.c:933
 msgid "%B: compiled for a little endian system and target is big endian"
 msgstr "%B: compilado para un sistema little endian y el objetivo es big endian"
 
-#: elf64-ppc.c:5640
+#: elf64-ppc.c:5707
 #, c-format
 msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc"
 msgstr "la reubicación de copia contra `%s' requiere de enlazado plt suelto; evite establecer LD_BIND_NOW=1 o actualice gcc"
 
-#: elf64-ppc.c:6043
+#: elf64-ppc.c:6155
+msgid "dynreloc miscount for %B, section %A"
+msgstr "cuenta errónea de la reubicación dinámica de %B, sección %A"
+
+#: elf64-ppc.c:6257
 msgid "%B: .opd is not a regular array of opd entries"
 msgstr "%B: .opd no es una matriz regular de entradas opd"
 
-#: elf64-ppc.c:6052
+#: elf64-ppc.c:6266
 msgid "%B: unexpected reloc type %u in .opd section"
 msgstr "%B: tipo de reubicación %u inesperado en la sección .opd"
 
-#: elf64-ppc.c:6072
+#: elf64-ppc.c:6287
 msgid "%B: undefined sym `%s' in .opd section"
 msgstr "%B: símbolo `%s' indefinido en la sección .opd"
 
-#: elf64-ppc.c:6757 elf64-ppc.c:7132
+#: elf64-ppc.c:6939 elf64-ppc.c:7318
 #, c-format
 msgid "%s defined in removed toc entry"
 msgstr "se definió %s en la entrada toc eliminada"
 
-#: elf64-ppc.c:7921
+#: elf64-ppc.c:8041
 #, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr "desbordamiento del desplazamiento de stub de ramificación long `%s'"
+
+#: elf64-ppc.c:8116
+#, c-format
 msgid "can't find branch stub `%s'"
 msgstr "no se puede encontrar la ramificación de cabo `%s'"
 
-#: elf64-ppc.c:7960 elf64-ppc.c:8036
+#: elf64-ppc.c:8155 elf64-ppc.c:8231
 #, c-format
 msgid "linkage table error against `%s'"
 msgstr "error de la tabla de enlazado contra `%s'"
 
-#: elf64-ppc.c:8165
+#: elf64-ppc.c:8360
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "no se puede construir la ramificación de cabos `%s'"
 
-#: elf64-ppc.c:9093
+#: elf64-ppc.c:8784
+msgid "%B section %A exceeds stub group size"
+msgstr "%B sección %A excede el tamaño de grupo de stub"
+
+#: elf64-ppc.c:9295
 msgid ".glink and .plt too far apart"
 msgstr ".glink y .plt están demasiado alejados"
 
-#: elf64-ppc.c:9206
+#: elf64-ppc.c:9408
 msgid "stubs don't match calculated size"
 msgstr "los cabos no coinciden con el tamaño calculado"
 
-#: elf64-ppc.c:9218
+#: elf64-ppc.c:9420
 #, c-format
 msgid ""
 "linker stubs in %u group%s\n"
@@ -1832,88 +1906,84 @@
 "  ajuste toc long %lu\n"
 "  llamada plt     %lu"
 
-#: elf64-ppc.c:9455
-msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
-msgstr "%B(%A+0x%lx): se usó %s con el símbolo TLS %s"
-
-#: elf64-ppc.c:9456
-msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
-msgstr "%B(%A+0x%lx): se usó %s con el símbolo %s que no es TLS"
-
-#: elf64-ppc.c:9856
+#: elf64-ppc.c:10075
 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc"
 msgstr "%B(%A+0x%lx): los TOCs múltiples automáticos no tienen soporte utilizando sus ficheros crt; recompile con -mminimal-toc o actualice gcc"
 
-#: elf64-ppc.c:9864
+#: elf64-ppc.c:10083
 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern"
 msgstr "%B(%A+0x%lx): la optimización de llamada hermana a `%s' no permite TOCs múltiples automáticos; recompile con -mminimal-toc ó -fno-optimize-sibling-calls, o vuelva `%s' externa"
 
-#: elf64-ppc.c:10508
+#: elf64-ppc.c:10727
 msgid "%B: relocation %s is not supported for symbol %s."
 msgstr "%B: la reubicación %s no tiene soporte para el símbolo %s."
 
-#: elf64-ppc.c:10587
+#: elf64-ppc.c:10806
 msgid "%B: error: relocation %s not a multiple of %d"
 msgstr "%B: error: la reubicación %s no es un múltiplo de %d"
 
-#: elf64-sh64.c:1673
+#: elf64-sh64.c:1676
 #, c-format
 msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
 msgstr "%s: error: tipo de reubicación %d sin alinear en %08x reubicación %08x\n"
 
-#: elf64-sparc.c:1419
-msgid "%B: check_relocs: unhandled reloc type %d"
-msgstr "%B: check_relocs: tipo de reubicación %d sin manejar"
-
-#: elf64-sparc.c:1455
+#: elf64-sparc.c:438
 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr "%B: Solamente los registros %%g[2367] se pueden declarar utilizando STT_REGISTER"
 
-#: elf64-sparc.c:1475
+#: elf64-sparc.c:458
 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B"
 msgstr "El registro %%g%d se usó de forma incompatible: %s en %B, previamente %s en %B"
 
-#: elf64-sparc.c:1498
+#: elf64-sparc.c:481
 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"
 msgstr "El símbolo `%s' tiene tipos divergentes: REGISTER en %B, previamente %s en %B"
 
-#: elf64-sparc.c:1543
+#: elf64-sparc.c:526
 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"
 msgstr "El símbolo `%s' tiene tipos divergentes: %s en %B, previamente REGISTER en %B"
 
-#: elf64-sparc.c:3071
+#: elf64-sparc.c:677
 msgid "%B: linking UltraSPARC specific with HAL specific code"
 msgstr "%B: enlazando código específico de UltraSPARC con código específico de HAL"
 
-#: elf64-x86-64.c:667 elf64-x86-64.c:792 elf64-x86-64.c:1988
+#: elf64-x86-64.c:692 elf64-x86-64.c:818 elf64-x86-64.c:2069
 msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
 msgstr "%B: no se puede usar la reubicación %s contra `%s' cuando se hace un objeto compartido; recompile con -fPIC"
 
-#: elf64-x86-64.c:735
+#: elf64-x86-64.c:760
 msgid "%B: %s' accessed both as normal and thread local symbol"
 msgstr "%B: se accesó `%s' como un símbolo normal y como un símbolo local de hilo"
 
-#: elf64-x86-64.c:1984
+#: elf64-x86-64.c:2000
+msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object"
+msgstr "%B: no se puede usar la reubicación R_X86_64_GOTOFF contra la función protegida `%s' cuando se hace un objeto compartido"
+
+#: elf64-x86-64.c:2065
 msgid "%B: relocation R_X86_64_PC32 against protected function `%s' can not be used when making a shared object"
 msgstr "%B: no se puede usar la reubicación R_X86_64_PC32 contra la función protegida `%' cuando se hace un objeto compartido"
 
-#: elf.c:296
+#: elf.c:288
 msgid "%B: invalid string offset %u >= %lu for section `%s'"
 msgstr "%B: desplazamiento de cadena inválido %u >= %lu para la sección `%s'"
 
-#: elf.c:543
+#: elf.c:552
 msgid "%B: invalid SHT_GROUP entry"
 msgstr "%B: entrada SHT_GROUP inválida"
 
-#: elf.c:613
+#: elf.c:622
 msgid "%B: no group info for section %A"
 msgstr "%B: no hay información de grupo para la sección %A"
 
-#: elf.c:650
+#: elf.c:652 elf.c:3091 elflink.c:7588
+msgid "%B: warning: sh_link not set for section `%A'"
+msgstr "%B: aviso: no se estableción sh_link para la sección `%A'"
+
+#: elf.c:688
 msgid "%B: unknown [%d] section `%s' in group [%s]"
 msgstr "%B: sección [%d] desconocida `%s' en el grupo [%s]"
 
-#: elf.c:1011
+#: elf.c:1071
 #, c-format
 msgid ""
 "\n"
@@ -1922,7 +1992,7 @@
 "\n"
 "Encabezado del Programa:\n"
 
-#: elf.c:1063
+#: elf.c:1123
 #, c-format
 msgid ""
 "\n"
@@ -1931,7 +2001,7 @@
 "\n"
 "Sección Dinámica:\n"
 
-#: elf.c:1188
+#: elf.c:1248
 #, c-format
 msgid ""
 "\n"
@@ -1940,7 +2010,7 @@
 "\n"
 "Definiciones de versión:\n"
 
-#: elf.c:1211
+#: elf.c:1273
 #, c-format
 msgid ""
 "\n"
@@ -1949,358 +2019,375 @@
 "\n"
 "Referencias de Versión:\n"
 
-#: elf.c:1216
+#: elf.c:1278
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  requerido desde %s:\n"
 
-#: elf.c:1905
+#: elf.c:1985
 msgid "%B: invalid link %lu for reloc section %s (index %u)"
 msgstr "%B: enlace %lu inválido para la sección de reubicación %s (índice %u)"
 
-#: elf.c:2910
-msgid "%B: warning: sh_link not set for section `%S'"
-msgstr "%B: aviso: no se estableció sh_link para la sección `%S'"
+#: elf.c:3062
+msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'"
+msgstr "%B: sh_link de la sección `%A' apunta a la sección descartada `%A' de `%B'"
 
-#: elf.c:3904
+#: elf.c:4070
 msgid "%B: Not enough room for program headers (allocated %u, need %u)"
 msgstr "%B: No hay suficiente espacio para los encabezados del programa (%u asignados, %u necesarios)"
 
-#: elf.c:4010
+#: elf.c:4173
 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr "%B: La primera sección en el segmento PT_DYNAMIC no es la sección .dynamic"
 
-#: elf.c:4054
+#: elf.c:4217
 msgid "%B: Not enough room for program headers, try linking with -N"
 msgstr "%B: No hay suficiente espacio para los encabezados del programa, pruebe enlazar con -N"
 
-#: elf.c:4145
+#: elf.c:4308
 msgid "%B: section %A lma 0x%lx overlaps previous sections"
 msgstr "%B: la sección %A lma 0x%lx traslapa las secciones anteriores"
 
-#: elf.c:4546
+#: elf.c:4709
 msgid "%B: warning: allocated section `%s' not in segment"
 msgstr "%B: aviso: la sección asignada `%s' no está en el segmento"
 
-#: elf.c:4850
+#: elf.c:5002
 msgid "%B: symbol `%s' required but not present"
 msgstr "%B: se requiere el símbolo `%s' pero no está presente"
 
-#: elf.c:5147
+#: elf.c:5299
 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n"
 msgstr "%B: aviso: Se detectó un segmento cargable vacío, ¿ esto es intencional ?\n"
 
-#: elf.c:5761
+#: elf.c:5961
 #, c-format
 msgid "Unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "No se puede encontrar la sección de salida equivalente para el símbolo '%s' de la sección '%s'"
 
-#: elf.c:6620
+#: elf.c:6917
 msgid "%B: unsupported relocation type %s"
 msgstr "%B: tipo de reubicación %s sin soporte"
 
-#: elfcode.h:1039
+#: elfcode.h:1110
 #, c-format
 msgid "%s: version count (%ld) does not match symbol count (%ld)"
 msgstr "%s: la cuenta de versión (%ld) no coincide con la cuenta de símbolos (%ld)"
 
-#: elfcode.h:1266
+#: elfcode.h:1337
 #, c-format
 msgid "%s(%s): relocation %d has invalid symbol index %ld"
 msgstr "%s(%s): la reubicación %d tiene un índice de símbolo %ld inválido"
 
-#: elf-hppa.h:1401 elf-hppa.h:1427 elf-hppa.h:1442
+#: elf-hppa.h:1443 elf-hppa.h:1458
 msgid "%B(%A): warning: unresolvable relocation against symbol `%s'"
 msgstr "%B(%A): aviso: reubicación sin resolución contra el símbolo `%s'"
 
-#: elflink.c:941
+#: elflink.c:907
 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A"
 msgstr "%s: la definición TLS en %B sección %A no coincide con la definición que no es TLS en %B sección %A"
 
-#: elflink.c:945
+#: elflink.c:911
 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
 msgstr "%s: la referencia TLS en %b no coincide con la referencia que no es TLS en %B"
 
-#: elflink.c:949
+#: elflink.c:915
 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
 msgstr "%s: la definición TLS en %B sección %A no coincide con la referencia que no es TLS en %B"
 
-#: elflink.c:953
+#: elflink.c:919
 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
 msgstr "%s: la referencia TLS en %B no coincide con la definición que no es TLS en %B sección %A"
 
-#: elflink.c:1508
+#: elflink.c:1491
 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%B: redefinición inesperada del símbolo con versión indirecta `%s'"
 
-#: elflink.c:1825
+#: elflink.c:1807
 msgid "%B: undefined versioned symbol name %s"
 msgstr "%B: nombre de símbolo con versión %s sin definir"
 
-#: elflink.c:1974
+#: elflink.c:1955
 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'"
 msgstr "%B: índice de símbolos de reubicación inválido (0x%lx >= 0x%lx) erróneo para el desplazamiento 0x%lx en la sección `%A'"
 
-#: elflink.c:2164
+#: elflink.c:2147
 msgid "%B: relocation size mismatch in %B section %A"
 msgstr "%B: el tamaño de reubicación no coincide en %B sección %A"
 
-#: elflink.c:2454
+#: elflink.c:2437
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "aviso: el tipo y tamaño del símbolo dinámico `%s' no están definidos"
 
-#: elflink.c:2775
+#: elflink.c:2761
 msgid "warning: creating a DT_TEXTREL in a shared object."
 msgstr "aviso: se crea un DT_TEXTREL en un objeto compartido."
 
-#: elflink.c:3702
+#: elflink.c:3696
 msgid "%B: %s: invalid version %u (max %d)"
 msgstr "%B: %s: versión %u inválida (máximo %d)"
 
-#: elflink.c:3738
+#: elflink.c:3732
 msgid "%B: %s: invalid needed version %d"
 msgstr "%B: %s: versión requerida %d inválida"
 
-#: elflink.c:3919
+#: elflink.c:3912
 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B"
 msgstr "Aviso: la alineación %u del símbolo `%s' en %B es más pequeña que %u en %B"
 
-#: elflink.c:3931
+#: elflink.c:3924
 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B"
 msgstr "Aviso: el tamaño del símbolo `%s' cambió de %lu en %B a %lu en %B"
 
-#: elflink.c:4098
+#: elflink.c:4091
 #, c-format
 msgid "%s: invalid DSO for symbol `%s' definition"
 msgstr "%s: DSO inválido para la definición del símbolo `%s'"
 
-#: elflink.c:5155
+#: elflink.c:5152
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: versión sin definir: %s"
 
-#: elflink.c:5221
+#: elflink.c:5219
 msgid "%B: .preinit_array section is not allowed in DSO"
 msgstr "%B: no se permite la sección .preinit_array en DSO"
 
-#: elflink.c:5961
+#: elflink.c:5978
 msgid "Not enough memory to sort relocations"
 msgstr "No hay suficiente memoria para ordenar las reubicaciones"
 
-#: elflink.c:6352
+#: elflink.c:6369
 msgid "%B: %s symbol `%s' in %B is referenced by DSO"
 msgstr "%B: el símbolo %s `%s' en %B está referenciado por DSO"
 
-#: elflink.c:6433
+#: elflink.c:6452
 msgid "%B: could not find output section %A for input section %A"
 msgstr "%B: no se puede encontrar la sección de salida %A para la sección de entrada %A"
 
-#: elflink.c:6530
+#: elflink.c:6549
 msgid "%B: %s symbol `%s' isn't defined"
 msgstr "%B: el símbolo %s `%s' no está definido"
 
-#: elflink.c:7017
-msgid "`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n"
-msgstr "`%s' referido en la sección `%A' de %B: se definió en la sección descartada `%A' de %B\n"
+#: elflink.c:7024
+msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol"
+msgstr "error: %B contiene una reubicación (0x%s) para la sección %A que refiere a un símbolo global que no existe"
 
-#: elflink.c:7551
-msgid "%B: warning: sh_link not set for section `%A'"
-msgstr "%B: aviso: no se estableción sh_link para la sección `%A'"
+#: elflink.c:7058
+msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n"
+msgstr "%X`%s' referido en la sección `%A' de %B: se definió en la sección descartada `%A' de %B\n"
 
-#: elflink.c:7624
+#: elflink.c:7665
+msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
+msgstr "%A tiene tanto secciones ordenadas [`%A' en %B] como desordenadas [`%A' en %B]"
+
+#: elflink.c:7670
 #, c-format
 msgid "%A has both ordered and unordered sections"
 msgstr "%A tiene tanto secciones ordenadas como desordenadas"
 
-#: elflink.c:8437 elflink.c:8478
+#: elflink.c:8487 elflink.c:8528
 msgid "%B: could not find output section %s"
 msgstr "%B: no se puede encontrar la sección de salida %s"
 
-#: elflink.c:8442
+#: elflink.c:8492
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "aviso: la sección %s es de tamaño cero"
 
-#: elflink.c:9017
+#: elflink.c:9087
 msgid "Warning: gc-sections option ignored"
 msgstr "Aviso: se ignora la opción gc-sections"
 
-#: elflink.c:9606
-msgid "%B: ignoring duplicate section `%A'\n"
-msgstr "%B: se ignora la sección duplicada `%A'\n"
+#: elflink.c:9704
+msgid "%B: ignoring duplicate section `%A'"
+msgstr "%B: se ignora la sección duplicada `%A'"
 
-#: elflink.c:9613 elflink.c:9620
-msgid "%B: duplicate section `%A' has different size\n"
-msgstr "%B: la sección duplicada `%A' tiene tamaño diferente\n"
+#: elflink.c:9711 elflink.c:9718
+msgid "%B: duplicate section `%A' has different size"
+msgstr "%B: la sección duplicada `%A' tiene tamaño diferente"
 
-#: elflink.c:9628 elflink.c:9633
-msgid "%B: warning: could not read contents of section `%A'\n"
-msgstr "%B: aviso: no se puede leer el contenido de la sección `%A'\n"
+#: elflink.c:9726 elflink.c:9731
+msgid "%B: warning: could not read contents of section `%A'"
+msgstr "%B: aviso: no se puede leer el contenido de la sección `%A'"
 
-#: elflink.c:9637
-msgid "%B: warning: duplicate section `%A' has different contents\n"
-msgstr "%B: aviso: la sección duplicada `%A' tiene contenido diferente\n"
+#: elflink.c:9735
+msgid "%B: warning: duplicate section `%A' has different contents"
+msgstr "%B: aviso: la sección duplicada `%A' tiene contenido diferente"
 
-#: elfxx-mips.c:860
+#: elfxx-mips.c:866
 msgid "static procedure (no name)"
 msgstr "procedimiento estático (sin nombre)"
 
-#: elfxx-mips.c:2508
+#: elfxx-mips.c:2513
 msgid "not enough GOT space for local GOT entries"
 msgstr "no hay suficiente espacio GOT para entradas GOT locales"
 
-#: elfxx-mips.c:4353
+#: elfxx-mips.c:4356
 msgid "%B: %A+0x%lx: jump to stub routine which is not jal"
 msgstr "%B: %A+0x%lx: salto a una rutina cabo la cual no es jal"
 
-#: elfxx-mips.c:5919
+#: elfxx-mips.c:4993 elfxx-mips.c:5214
+msgid "%B: Warning: bad `%s' option size %u smaller than its header"
+msgstr "%B: Aviso: el tamaño de opción `%s' %u erróneo es más pequeño que su encabezado"
+
+#: elfxx-mips.c:5965
 msgid "%B: Malformed reloc detected for section %s"
 msgstr "%B: Se detectó una reubicación malformada para la sección %s"
 
-#: elfxx-mips.c:5995
+#: elfxx-mips.c:6041
 msgid "%B: CALL16 reloc at 0x%lx not against global symbol"
 msgstr "%B: la reubicación CALL16 en 0x%lx no es contra un símbolo global"
 
-#: elfxx-mips.c:9308
+#: elfxx-mips.c:9380
 #, c-format
 msgid "%s: illegal section name `%s'"
 msgstr "%s: nombre de sección `%s' ilegal"
 
-#: elfxx-mips.c:9632
+#: elfxx-mips.c:9719
 msgid "%B: endianness incompatible with that of the selected emulation"
 msgstr "%B: la endianez es incompatible con aquella de la emulación seleccionada"
 
-#: elfxx-mips.c:9644
+#: elfxx-mips.c:9731
 msgid "%B: ABI is incompatible with that of the selected emulation"
 msgstr "%B: la ABI es incompatible con aquella de la emulación seleccionada"
 
-#: elfxx-mips.c:9716
+#: elfxx-mips.c:9803
 msgid "%B: warning: linking PIC files with non-PIC files"
 msgstr "%B: aviso: enlazando ficheros PIC con ficheros que no son PIC"
 
-#: elfxx-mips.c:9733
+#: elfxx-mips.c:9820
 msgid "%B: linking 32-bit code with 64-bit code"
 msgstr "%B: enlazando código de 32-bit con código de 64-bit"
 
-#: elfxx-mips.c:9761
+#: elfxx-mips.c:9848
 msgid "%B: linking %s module with previous %s modules"
 msgstr "%B: enlazando el módulo %s con módulos %s previos"
 
-#: elfxx-mips.c:9784
+#: elfxx-mips.c:9871
 msgid "%B: ABI mismatch: linking %s module with previous %s modules"
 msgstr "%B: no coincide el ABI: enlazando el módulo %s con módulos %s previos"
 
-#: elfxx-mips.c:9849
+#: elfxx-mips.c:9936
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:9851
+#: elfxx-mips.c:9938
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:9853
+#: elfxx-mips.c:9940
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:9855
+#: elfxx-mips.c:9942
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:9857
+#: elfxx-mips.c:9944
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi desconocido]"
 
-#: elfxx-mips.c:9859
+#: elfxx-mips.c:9946
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:9861
+#: elfxx-mips.c:9948
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:9863
+#: elfxx-mips.c:9950
 #, c-format
 msgid " [no abi set]"
 msgstr " [no hay conjunto abi]"
 
-#: elfxx-mips.c:9866
+#: elfxx-mips.c:9953
 #, c-format
 msgid " [mips1]"
 msgstr " [mips1]"
 
-#: elfxx-mips.c:9868
+#: elfxx-mips.c:9955
 #, c-format
 msgid " [mips2]"
 msgstr " [mips2]"
 
-#: elfxx-mips.c:9870
+#: elfxx-mips.c:9957
 #, c-format
 msgid " [mips3]"
 msgstr " [mips3]"
 
-#: elfxx-mips.c:9872
+#: elfxx-mips.c:9959
 #, c-format
 msgid " [mips4]"
 msgstr " [mips4]"
 
-#: elfxx-mips.c:9874
+#: elfxx-mips.c:9961
 #, c-format
 msgid " [mips5]"
 msgstr " [mips5]"
 
-#: elfxx-mips.c:9876
+#: elfxx-mips.c:9963
 #, c-format
 msgid " [mips32]"
 msgstr " [mips32]"
 
-#: elfxx-mips.c:9878
+#: elfxx-mips.c:9965
 #, c-format
 msgid " [mips64]"
 msgstr " [mips64]"
 
-#: elfxx-mips.c:9880
+#: elfxx-mips.c:9967
 #, c-format
 msgid " [mips32r2]"
 msgstr " [mips32r2]"
 
-#: elfxx-mips.c:9882
+#: elfxx-mips.c:9969
 #, c-format
 msgid " [mips64r2]"
 msgstr " [mips64r2]"
 
-#: elfxx-mips.c:9884
+#: elfxx-mips.c:9971
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA desconocido]"
 
-#: elfxx-mips.c:9887
+#: elfxx-mips.c:9974
 #, c-format
 msgid " [mdmx]"
 msgstr " [mdmx]"
 
-#: elfxx-mips.c:9890
+#: elfxx-mips.c:9977
 #, c-format
 msgid " [mips16]"
 msgstr " [mips16]"
 
-#: elfxx-mips.c:9893
+#: elfxx-mips.c:9980
 #, c-format
 msgid " [32bitmode]"
 msgstr " [modo 32bit]"
 
-#: elfxx-mips.c:9895
+#: elfxx-mips.c:9982
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [no es modo 32bit]"
 
+#: elfxx-sparc.c:402
+#, c-format
+msgid "invalid relocation type %d"
+msgstr "tipo de reubicación %d inválido"
+
+#: elfxx-sparc.c:2783
+msgid "%B: probably compiled without -fPIC?"
+msgstr "%B: ¿Compilado probablemente sin -fPIC?"
+
 #: i386linux.c:457 m68klinux.c:461 sparclinux.c:458
 #, c-format
 msgid "Output file requires shared library `%s'\n"
@@ -2321,75 +2408,75 @@
 msgid "Warning: fixup count mismatch\n"
 msgstr "Aviso: no coincide la cuenta de composturas\n"
 
-#: ieee.c:293
+#: ieee.c:157
 #, c-format
 msgid "%s: string too long (%d chars, max 65535)"
 msgstr "%s: la cadena es demasiado larga (%d caracteres, máximo 65535)"
 
-#: ieee.c:428
+#: ieee.c:284
 #, c-format
 msgid "%s: unrecognized symbol `%s' flags 0x%x"
 msgstr "%s: símbolo `%s' no reconocido opciones 0x%x"
 
-#: ieee.c:938
+#: ieee.c:786
 msgid "%B: unimplemented ATI record %u for symbol %u"
 msgstr "%B: grabación ATI %u sin implementar para el símbolo %u"
 
-#: ieee.c:962
+#: ieee.c:810
 msgid "%B: unexpected ATN type %d in external part"
 msgstr "%B: tipo ATN %d inesperado en la parte externa"
 
-#: ieee.c:984
+#: ieee.c:832
 msgid "%B: unexpected type after ATN"
 msgstr "%B: tipo inesperado después de ATN"
 
-#: ihex.c:264
+#: ihex.c:228
 msgid "%B:%d: unexpected character `%s' in Intel Hex file"
 msgstr "%B:%d: carácter `%s' inesperado en el fichero Hexadecimal de Intel"
 
-#: ihex.c:372
+#: ihex.c:335
 msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr "%B:%u: suma de comprobación errónea en el fichero Hexadecimal de Intel (se esperaba %u, se obtuvo %u)"
 
-#: ihex.c:426
+#: ihex.c:389
 msgid "%B:%u: bad extended address record length in Intel Hex file"
 msgstr "%B:%u: longitud de registro de dirección extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:443
+#: ihex.c:406
 msgid "%B:%u: bad extended start address length in Intel Hex file"
 msgstr "%B:%u: longitud de dirección de inicio extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:460
+#: ihex.c:423
 msgid "%B:%u: bad extended linear address record length in Intel Hex file"
 msgstr "%B:%u: longitud de registro de dirección lineal extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:477
+#: ihex.c:440
 msgid "%B:%u: bad extended linear start address length in Intel Hex file"
 msgstr "%B:%u: longitud de dirección de inicio lineal extendida errónea en el fichero Hexadecimal de Intel"
 
-#: ihex.c:494
+#: ihex.c:457
 msgid "%B:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr "%B:%u: tipo ihex %u no reconocido en el fichero Hexadecimal de Intel"
 
-#: ihex.c:619
+#: ihex.c:578
 msgid "%B: internal error in ihex_read_section"
 msgstr "%B: error interno en ihex_read_section"
 
-#: ihex.c:653
+#: ihex.c:612
 msgid "%B: bad section length in ihex_read_section"
 msgstr "%B: longitud de sección errónea en ihex_read_section"
 
-#: ihex.c:870
+#: ihex.c:824
 #, c-format
 msgid "%s: address 0x%s out of range for Intel Hex file"
 msgstr "%s: la dirección 0x%s está fuera de rango en el fichero Hexadecimal de Intel"
 
-#: libbfd.c:856
+#: libbfd.c:961
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "Se llamó a %s que es obsoleto en %s línea %d en %s\n"
 
-#: libbfd.c:859
+#: libbfd.c:964
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "Se llamó a %s que es obsoleto\n"
@@ -2398,20 +2485,20 @@
 msgid "%B: indirect symbol `%s' to `%s' is a loop"
 msgstr "%B: el símbolo indirecto `%s' para `%s' es un ciclo"
 
-#: linker.c:2741
+#: linker.c:2740
 #, c-format
 msgid "Attempt to do relocatable link with %s input and %s output"
 msgstr "Se intentó hacer un enlace reubicable con entrada %s y salida %s"
 
-#: linker.c:3038
+#: linker.c:3037
 msgid "%B: warning: ignoring duplicate section `%A'\n"
 msgstr "%B: aviso: se ignora la sección duplicada `%A'\n"
 
-#: linker.c:3052
+#: linker.c:3051
 msgid "%B: warning: duplicate section `%A' has different size\n"
 msgstr "%B: aviso: la sección duplicada `%A' es de tamaño diferente\n"
 
-#: merge.c:796
+#: merge.c:817
 #, c-format
 msgid "%s: access beyond end of merged section (%ld)"
 msgstr "%s: acceso más allá del final de la sección mezclada (%ld)"
@@ -2486,62 +2573,62 @@
 msgid "%s: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr "%s: fichero mmo inválido: no se especificó un nombre de fichero para el número %d antes de utilizarse\n"
 
-#: mmo.c:1891
+#: mmo.c:1892
 #, c-format
 msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr "%s: fichero mmo inválido: los campos y y z de lop_stab no son cero, y: %d, z: %d\n"
 
-#: mmo.c:1927
+#: mmo.c:1928
 #, c-format
 msgid "%s: invalid mmo file: lop_end not last item in file\n"
 msgstr "%s: fichero mmo inválido: lop_end no es el último elemento en el fichero\n"
 
-#: mmo.c:1940
+#: mmo.c:1941
 #, c-format
 msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr "%s: fichero mmo inválido: YZ de lop_end (%ld) no es igual al número de tetras del lop_stab precedente (%ld)\n"
 
-#: mmo.c:2647
+#: mmo.c:2649
 #, c-format
 msgid "%s: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%s: tabla de símbolos inválida: símbolo `%s' duplicado\n"
 
-#: mmo.c:2890
+#: mmo.c:2892
 #, c-format
 msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr "%s: Definición de símbolo errónea: `Main' se estableción como %s en lugar de la dirección de inicio %s\n"
 
-#: mmo.c:2982
+#: mmo.c:2984
 #, c-format
 msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr "%s: aviso: la tabla de símbolos es demasiado grande para mmo, es más grande que 65535 words de 32-bit: %d. Sólo se emitirá `Main'.\n"
 
-#: mmo.c:3027
+#: mmo.c:3029
 #, c-format
 msgid "%s: internal error, symbol table changed size from %d to %d words\n"
 msgstr "%s: error interno, la tabla de símbolos cambió de tamaño de %d a %d words\n"
 
-#: mmo.c:3079
+#: mmo.c:3081
 #, c-format
 msgid "%s: internal error, internal register section %s had contents\n"
 msgstr "%s: error interno, la sección interna de registros %s tiene contenido\n"
 
-#: mmo.c:3130
+#: mmo.c:3132
 #, c-format
 msgid "%s: no initialized registers; section length 0\n"
 msgstr "%s: no hay registros iniciados; longitud de sección 0\n"
 
-#: mmo.c:3136
+#: mmo.c:3138
 #, c-format
 msgid "%s: too many initialized registers; section length %ld\n"
 msgstr "%s: demasiados registros iniciados: longitud de sección %ld\n"
 
-#: mmo.c:3141
+#: mmo.c:3143
 #, c-format
 msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n"
 msgstr "%s: dirección de inicio inválida para los registros iniciados de longitud %ld: 0x%lx%08lx\n"
 
-#: oasys.c:1033
+#: oasys.c:876
 #, c-format
 msgid "%s: can not represent section `%s' in oasys"
 msgstr "%s: no se puede representar la sección `%s' en oasys"
@@ -2552,56 +2639,55 @@
 msgstr "Tipo de sección de fichero núcleo OSF/1 %d sin manejar\n"
 
 #. XXX code yet to be written.
-#: peicode.h:760
+#: peicode.h:731
 msgid "%B: Unhandled import type; %x"
 msgstr "%B: Tipo de importación sin manejar; %x"
 
-#: peicode.h:765
+#: peicode.h:736
 msgid "%B: Unrecognised import type; %x"
 msgstr "%B: Tipo de importación no reconocida; %x"
 
-#: peicode.h:779
+#: peicode.h:750
 msgid "%B: Unrecognised import name type; %x"
 msgstr "%B: Tipo de nombre de importación no reconocida; %x"
 
-#: peicode.h:1169
+#: peicode.h:1120
 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr "%B: Tipo de máquina (0x%x) no reconocida en el archivo de Formato de Importación de Bibliotecas"
 
-#: peicode.h:1181
+#: peicode.h:1132
 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
 msgstr "%B: Tipo de máquina (0x%x) reconocida pero sin manejar en el archivo de Formato de Importación de Bibliotecas"
 
-#: peicode.h:1199
+#: peicode.h:1150
 msgid "%B: size field is zero in Import Library Format header"
 msgstr "%B: el tamaño del campo es cero en el encabezado del Formato de Importación de Bibliotecas"
 
-#: peicode.h:1230
+#: peicode.h:1181
 msgid "%B: string not null terminated in ILF object file."
 msgstr "%B: cadena no terminada en null en el fichero objeto ILF."
 
-#: pe-mips.c:627
+#: pe-mips.c:588
 msgid "%B: `ld -r' not supported with PE MIPS objects\n"
 msgstr "%B: `ld -r' no tiene soporte con objetos PE MIPS\n"
 
 #. OK, at this point the following variables are set up:
 #. src = VMA of the memory we're fixing up
 #. mem = pointer to memory we're fixing up
-#. val = VMA of what we need to refer to
-#.
-#: pe-mips.c:749
+#. val = VMA of what we need to refer to.
+#: pe-mips.c:704
 msgid "%B: unimplemented %s\n"
 msgstr "%B: %s sin implementar\n"
 
-#: pe-mips.c:775
+#: pe-mips.c:730
 msgid "%B: jump too far away\n"
 msgstr "%B: salto demasiado lejos\n"
 
-#: pe-mips.c:801
+#: pe-mips.c:756
 msgid "%B: bad pair/reflo after refhi\n"
 msgstr "%B: pair/reflo erróneo después de refhi\n"
 
-#: ppcboot.c:418
+#: ppcboot.c:419
 #, c-format
 msgid ""
 "\n"
@@ -2610,27 +2696,27 @@
 "\n"
 "encabezado de ppcboot:\n"
 
-#: ppcboot.c:419
+#: ppcboot.c:420
 #, c-format
 msgid "Entry offset        = 0x%.8lx (%ld)\n"
 msgstr "Desplazamiento de entrada = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:420
+#: ppcboot.c:421
 #, c-format
 msgid "Length              = 0x%.8lx (%ld)\n"
 msgstr "Longitud                  = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:423
+#: ppcboot.c:424
 #, c-format
 msgid "Flag field          = 0x%.2x\n"
 msgstr "Campo de opciones         = 0x%.2x\n"
 
-#: ppcboot.c:429
+#: ppcboot.c:430
 #, c-format
 msgid "Partition name      = \"%s\"\n"
 msgstr "Nombre de la partición    = \"%s\"\n"
 
-#: ppcboot.c:448
+#: ppcboot.c:449
 #, c-format
 msgid ""
 "\n"
@@ -2639,22 +2725,22 @@
 "\n"
 "Partición[%d] inicio = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:454
+#: ppcboot.c:455
 #, c-format
 msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 msgstr "Partición[%d] fin    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:460
+#: ppcboot.c:461
 #, c-format
 msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
 msgstr "Partición[%d] sector = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:461
+#: ppcboot.c:462
 #, c-format
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Partición[%d] longitud = 0x%.8lx (%ld)\n"
 
-#: som.c:5269
+#: som.c:5069
 #, c-format
 msgid ""
 "\n"
@@ -2663,15 +2749,15 @@
 "\n"
 "Encabezado Auxiliar de Ejecución\n"
 
-#: som.c:5543
+#: som.c:5330
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers sin implementar"
 
-#: srec.c:302
+#: srec.c:259
 msgid "%B:%d: Unexpected character `%s' in S-record file\n"
 msgstr "%B:%d: Caractér `%s' inesperado en el fichero S-record\n"
 
-#: stabs.c:296
+#: stabs.c:276
 msgid "%B(%A+0x%lx): Stabs entry has invalid string index."
 msgstr "%B(%A+0x%lx): La entrada de cabos tiene una cadena índice inválida."
 
@@ -2679,118 +2765,118 @@
 msgid "Unsupported .stab relocation"
 msgstr "Reubicación .stab sin soporte"
 
-#: vms-gsd.c:356
+#: vms-gsd.c:337
 #, c-format
 msgid "bfd_make_section (%s) failed"
 msgstr "bfd_make_section (%s) falló"
 
-#: vms-gsd.c:371
+#: vms-gsd.c:352
 #, c-format
 msgid "bfd_set_section_flags (%s, %x) failed"
 msgstr "bfd_set_section_flags (%s, %x) falló"
 
-#: vms-gsd.c:407
+#: vms-gsd.c:387
 #, c-format
 msgid "Size mismatch section %s=%lx, %s=%lx"
 msgstr "No coincide el tamaño de la sección %s=%lx, %s=%lx"
 
-#: vms-gsd.c:702
+#: vms-gsd.c:678
 #, c-format
 msgid "unknown gsd/egsd subtype %d"
 msgstr "subtipo de gsd/egsd %d desconocido"
 
-#: vms-hdr.c:409
+#: vms-hdr.c:327
 msgid "Object module NOT error-free !\n"
 msgstr "¡ El módulo objeto NO está libre de errores !\n"
 
-#: vms-misc.c:541
+#: vms-misc.c:473
 #, c-format
 msgid "Stack overflow (%d) in _bfd_vms_push"
 msgstr "Desbordamiento de la pila (%d) en _bfd_vms_push"
 
-#: vms-misc.c:559
+#: vms-misc.c:488
 msgid "Stack underflow in _bfd_vms_pop"
 msgstr "Desbordamiento por debajo de la pila en _bfd_vms_pop"
 
-#: vms-misc.c:912
+#: vms-misc.c:802
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "se llamó _bfd_vms_output_counted con cero bytes"
 
-#: vms-misc.c:917
+#: vms-misc.c:807
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "se llamó _bfd_vms_output_counted con demasiados bytes"
 
-#: vms-misc.c:1048
+#: vms-misc.c:925
 #, c-format
 msgid "Symbol %s replaced by %s\n"
 msgstr "El símbolo %s fue reemplazado por %s\n"
 
-#: vms-misc.c:1111
+#: vms-misc.c:984
 #, c-format
 msgid "failed to enter %s"
 msgstr "falló la introducción de %s"
 
-#: vms-tir.c:102
+#: vms-tir.c:55
 msgid "No Mem !"
 msgstr "¡ No hay Memoria !"
 
-#: vms-tir.c:383
+#: vms-tir.c:298
 #, c-format
 msgid "bad section index in %s"
 msgstr "Índice de sección erróneo en %s"
 
-#: vms-tir.c:396
+#: vms-tir.c:311
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "orden STA %s sin soporte"
 
-#: vms-tir.c:401 vms-tir.c:1247
+#: vms-tir.c:316 vms-tir.c:1118
 #, c-format
 msgid "reserved STA cmd %d"
 msgstr "orden STA %d reservada"
 
-#: vms-tir.c:502 vms-tir.c:525
+#: vms-tir.c:408 vms-tir.c:430
 #, c-format
 msgid "%s: no symbol \"%s\""
 msgstr "%s: no existe el símbolo \"%s\""
 
-#. unsigned shift
-#. rotate
+#. Unsigned shift.
+#. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-tir.c:592 vms-tir.c:704 vms-tir.c:814 vms-tir.c:832 vms-tir.c:840
-#: vms-tir.c:849 vms-tir.c:1570
+#: vms-tir.c:495 vms-tir.c:604 vms-tir.c:702 vms-tir.c:719 vms-tir.c:726
+#: vms-tir.c:734 vms-tir.c:1438
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: no tiene soporte"
 
-#: vms-tir.c:597 vms-tir.c:1425
+#: vms-tir.c:500 vms-tir.c:1295
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: sin implementar"
 
-#: vms-tir.c:601 vms-tir.c:1429
+#: vms-tir.c:504 vms-tir.c:1299
 #, c-format
 msgid "reserved STO cmd %d"
 msgstr "orden STO %d reservada"
 
-#: vms-tir.c:719 vms-tir.c:1575
+#: vms-tir.c:619 vms-tir.c:1443
 #, c-format
 msgid "reserved OPR cmd %d"
 msgstr "orden OPR %d reservada"
 
-#: vms-tir.c:787 vms-tir.c:1639
+#: vms-tir.c:679 vms-tir.c:1507
 #, c-format
 msgid "reserved CTL cmd %d"
 msgstr "orden CTL %d reservada"
 
 #. stack byte from image
 #. arg: none.
-#: vms-tir.c:1155
+#: vms-tir.c:1026
 msgid "stack-from-image not implemented"
 msgstr "pila-desde-imagen sin implementar"
 
-#: vms-tir.c:1173
+#: vms-tir.c:1044
 msgid "stack-entry-mask not fully implemented"
 msgstr "pila-máscara-entrada no está completamente implementado"
 
@@ -2801,262 +2887,262 @@
 #.
 #. compare argument descriptor with symbol argument (ARG$V_PASSMECH)
 #. and stack TRUE (args match) or FALSE (args dont match) value.
-#: vms-tir.c:1187
+#: vms-tir.c:1058
 msgid "PASSMECH not fully implemented"
 msgstr "PASSMECH no está completamente implementado"
 
-#: vms-tir.c:1206
+#: vms-tir.c:1077
 msgid "stack-local-symbol not fully implemented"
 msgstr "pila-símbolo-local no está completamente implementado"
 
-#: vms-tir.c:1219
+#: vms-tir.c:1090
 msgid "stack-literal not fully implemented"
 msgstr "pila-literal no está completamente implementado"
 
-#: vms-tir.c:1240
+#: vms-tir.c:1111
 msgid "stack-local-symbol-entry-point-mask not fully implemented"
 msgstr "pila-símbolo-local-máscara-punto-entrada no está completamente implementado"
 
-#: vms-tir.c:1517 vms-tir.c:1529 vms-tir.c:1541 vms-tir.c:1553 vms-tir.c:1618
-#: vms-tir.c:1626 vms-tir.c:1634
+#: vms-tir.c:1385 vms-tir.c:1397 vms-tir.c:1409 vms-tir.c:1421 vms-tir.c:1486
+#: vms-tir.c:1494 vms-tir.c:1502
 #, c-format
 msgid "%s: not fully implemented"
 msgstr "%s: no está completamente implementado"
 
-#: vms-tir.c:1691
+#: vms-tir.c:1560
 #, c-format
 msgid "obj code %d not found"
 msgstr "no se encontró el código objeto %d"
 
-#: vms-tir.c:2029
+#: vms-tir.c:1868
 #, c-format
 msgid "SEC_RELOC with no relocs in section %s"
 msgstr "SEC_RELOC sin reubicaciones en la sección %s"
 
-#: vms-tir.c:2304
+#: vms-tir.c:2150
 #, c-format
 msgid "Unhandled relocation %s"
 msgstr "Reubicación %s sin manejar"
 
-#: xcofflink.c:1243
+#: xcofflink.c:564
+#, c-format
+msgid "%s: XCOFF shared object when not producing XCOFF output"
+msgstr "%s: objeto compartido XCOFF cuando no se produce salida XCOFF"
+
+#: xcofflink.c:585
+#, c-format
+msgid "%s: dynamic object with no .loader section"
+msgstr "%s: objeto dinámico sin sección .loader"
+
+#: xcofflink.c:1148
 msgid "%B: `%s' has line numbers but no enclosing section"
 msgstr "%B: `%s' tiene números de línea pero no una sección contenedora"
 
-#: xcofflink.c:1296
+#: xcofflink.c:1200
 msgid "%B: class %d symbol `%s' has no aux entries"
 msgstr "%B: clase %d símbolo `%s' no tiene entradas auxiliares"
 
-#: xcofflink.c:1319
+#: xcofflink.c:1223
 msgid "%B: symbol `%s' has unrecognized csect type %d"
 msgstr "%B: el símbolo `%s' tiene un tipo csect %d no reconocido"
 
-#: xcofflink.c:1331
+#: xcofflink.c:1235
 msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
 msgstr "%B: símbolo XTY_ER `%s' erróneo: clase %d scnum %d scnlen %d"
 
-#: xcofflink.c:1367
+#: xcofflink.c:1271
 msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d"
 msgstr "%B: símbolo XMC_TCO `%s' es clase %d scnlen %d"
 
-#: xcofflink.c:1518
+#: xcofflink.c:1417
 msgid "%B: csect `%s' not in enclosing section"
 msgstr "%B: csect `%s' no está contenido en una sección"
 
-#: xcofflink.c:1625
+#: xcofflink.c:1524
 msgid "%B: misplaced XTY_LD `%s'"
 msgstr "%B: XTY_LD `%s' mal ubicado"
 
-#: xcofflink.c:1956
+#: xcofflink.c:1839
 msgid "%B: reloc %s:%d not in csect"
 msgstr "%B: la reubicación %s:%d no está en csect"
 
-#: xcofflink.c:2093
+#: xcofflink.c:2637
 #, c-format
-msgid "%s: XCOFF shared object when not producing XCOFF output"
-msgstr "%s: objeto compartido XCOFF cuando no se produce salida XCOFF"
-
-#: xcofflink.c:2114
-#, c-format
-msgid "%s: dynamic object with no .loader section"
-msgstr "%s: objeto dinámico sin sección .loader"
-
-#: xcofflink.c:2759
-#, c-format
 msgid "%s: no such symbol"
 msgstr "%s: no hay tal símbolo"
 
-#: xcofflink.c:2892
-msgid "error: undefined symbol __rtinit"
-msgstr "error: símbolo __rtinit indefinido"
-
-#: xcofflink.c:3449
+#: xcofflink.c:2866
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "aviso: intento de exportar el símbolo sin definir `%s'"
 
-#: xcofflink.c:4444
+#: xcofflink.c:3033
+msgid "error: undefined symbol __rtinit"
+msgstr "error: símbolo __rtinit indefinido"
+
+#: xcofflink.c:3653
 #, c-format
 msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
 msgstr "Desbordamiento de TOC: 0x%lx > 0x10000; pruebe -mminimal-toc al compilar"
 
-#: xcofflink.c:5285
+#: xcofflink.c:4489
 msgid "%B: loader reloc in unrecognized section `%A'"
 msgstr "%B: reubicación del cargador en la sección `%A' no reconocida"
 
-#: xcofflink.c:5306
+#: xcofflink.c:4510
 msgid "%B: `%s' in loader reloc but not loader sym"
 msgstr "%B: `%s' en la reubicación del cargador pero no es un símbolo del cargador"
 
-#: xcofflink.c:5321
+#: xcofflink.c:4525
 msgid "%B: loader reloc in read-only section %A"
 msgstr "%B: reubicación del cargador en la sección de sólo lectura %A"
 
-#: xcofflink.c:5747 xcofflink.c:5809 xcofflink.c:6111
+#: xcofflink.c:4934 xcofflink.c:4996 xcofflink.c:5291
 #, c-format
 msgid "%s: loader reloc in unrecognized section `%s'"
 msgstr "%s: reubicación del cargador en la sección `%s' no reconocida"
 
-#: xcofflink.c:6122
+#: xcofflink.c:5302
 #, c-format
 msgid "%s: `%s' in loader reloc but not loader sym"
 msgstr "%s: `%s' en la reubicación del cargador pero no es un símbolo del cargador"
 
-#: elf32-ia64.c:987 elf64-ia64.c:987
+#: elf32-ia64.c:1139 elf64-ia64.c:1139
 msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch."
 msgstr "%B: No se puede relajar br en 0x%lx en la sección `%A'. Por favor use brl o ramificación indirecta."
 
-#: elf32-ia64.c:2339 elf64-ia64.c:2339
+#: elf32-ia64.c:2508 elf64-ia64.c:2508
 msgid "@pltoff reloc against local symbol"
 msgstr "reubicación @pltoff contra un símbolo local"
 
-#: elf32-ia64.c:3757 elf64-ia64.c:3757
+#: elf32-ia64.c:3955 elf64-ia64.c:3955
 #, c-format
 msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
 msgstr "%s: segmento de datos short desbordado (0x%lx >= 0x400000)"
 
-#: elf32-ia64.c:3768 elf64-ia64.c:3768
+#: elf32-ia64.c:3966 elf64-ia64.c:3966
 #, c-format
 msgid "%s: __gp does not cover short data segment"
 msgstr "%s: __gp no cubre el segmento de datos short"
 
-#: elf32-ia64.c:4015 elf64-ia64.c:4015
+#: elf32-ia64.c:4213 elf64-ia64.c:4213
 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr "%B: código que no es pic con reubicación imm contra el símbolo dinámico %s"
 
-#: elf32-ia64.c:4080 elf64-ia64.c:4080
+#: elf32-ia64.c:4280 elf64-ia64.c:4280
 msgid "%B: @gprel relocation against dynamic symbol %s"
 msgstr "%B: reubicación @gprel contra el símbolo dinámico %s"
 
-#: elf32-ia64.c:4140 elf64-ia64.c:4140
+#: elf32-ia64.c:4343 elf64-ia64.c:4343
 msgid "%B: linking non-pic code in a position independent executable"
 msgstr "%B: enlazando código que no es pic en un ejecutable independiente de posición"
 
-#: elf32-ia64.c:4277 elf64-ia64.c:4277
+#: elf32-ia64.c:4480 elf64-ia64.c:4480
 msgid "%B: @internal branch to dynamic symbol %s"
 msgstr "%B: ramificación @internal al símbolo dinámico %s"
 
-#: elf32-ia64.c:4279 elf64-ia64.c:4279
+#: elf32-ia64.c:4482 elf64-ia64.c:4482
 msgid "%B: speculation fixup to dynamic symbol %s"
 msgstr "%B: compostura de especulación al símbolo dinámico %s"
 
-#: elf32-ia64.c:4281 elf64-ia64.c:4281
+#: elf32-ia64.c:4484 elf64-ia64.c:4484
 msgid "%B: @pcrel relocation against dynamic symbol %s"
 msgstr "%B: reubicación @pcrel contra el símbolo dinámico %s"
 
-#: elf32-ia64.c:4488 elf64-ia64.c:4488
+#: elf32-ia64.c:4691 elf64-ia64.c:4691
 msgid "unsupported reloc"
 msgstr "reubicación sin soporte"
 
-#: elf32-ia64.c:4528 elf64-ia64.c:4528
+#: elf32-ia64.c:4724 elf64-ia64.c:4724
 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)."
 msgstr "%B: No se puede relajar br (%s) a `%s' en 0x%lx en la sección `%A' con tamaño 0x%lx (> 0x1000000)."
 
-#: elf32-ia64.c:4789 elf64-ia64.c:4789
+#: elf32-ia64.c:4985 elf64-ia64.c:4985
 msgid "%B: linking trap-on-NULL-dereference with non-trapping files"
 msgstr "%B: enlazando deferencias-captura-en-NULL con ficheros que no son de captura"
 
-#: elf32-ia64.c:4798 elf64-ia64.c:4798
+#: elf32-ia64.c:4994 elf64-ia64.c:4994
 msgid "%B: linking big-endian files with little-endian files"
 msgstr "%B: enlazando ficheros big-endian con ficheros little-endian"
 
-#: elf32-ia64.c:4807 elf64-ia64.c:4807
+#: elf32-ia64.c:5003 elf64-ia64.c:5003
 msgid "%B: linking 64-bit files with 32-bit files"
 msgstr "%B: enlazando ficheros de 64-bit con ficheros de 32-bit"
 
-#: elf32-ia64.c:4816 elf64-ia64.c:4816
+#: elf32-ia64.c:5012 elf64-ia64.c:5012
 msgid "%B: linking constant-gp files with non-constant-gp files"
 msgstr "%B: enlazando ficheros de gp constante con ficheros con gp no constante"
 
-#: elf32-ia64.c:4826 elf64-ia64.c:4826
+#: elf32-ia64.c:5022 elf64-ia64.c:5022
 msgid "%B: linking auto-pic files with non-auto-pic files"
 msgstr "%B: enlazando ficheros de pic automático con ficheros sin pic automático"
 
-#: peigen.c:1014 pepigen.c:1014
+#: peigen.c:979 pepigen.c:979
 #, c-format
 msgid "%s: line number overflow: 0x%lx > 0xffff"
 msgstr "%s: desbordamiento de número de línea: 0x%lx > 0xffff"
 
-#: peigen.c:1041 pepigen.c:1041
+#: peigen.c:1006 pepigen.c:1006
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "Directorio de Exportación [.edata (o donde quiera que se encuentre)]"
 
-#: peigen.c:1042 pepigen.c:1042
+#: peigen.c:1007 pepigen.c:1007
 msgid "Import Directory [parts of .idata]"
 msgstr "Directorio de Importación [partes de .idata]"
 
-#: peigen.c:1043 pepigen.c:1043
+#: peigen.c:1008 pepigen.c:1008
 msgid "Resource Directory [.rsrc]"
 msgstr "Directorio de Recursos [.rsrc]"
 
-#: peigen.c:1044 pepigen.c:1044
+#: peigen.c:1009 pepigen.c:1009
 msgid "Exception Directory [.pdata]"
 msgstr "Directorio de Excepciones [.pdata]"
 
-#: peigen.c:1045 pepigen.c:1045
+#: peigen.c:1010 pepigen.c:1010
 msgid "Security Directory"
 msgstr "Directorio de Seguridad"
 
-#: peigen.c:1046 pepigen.c:1046
+#: peigen.c:1011 pepigen.c:1011
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Directorio de Reubicación Base [.reloc]"
 
-#: peigen.c:1047 pepigen.c:1047
+#: peigen.c:1012 pepigen.c:1012
 msgid "Debug Directory"
 msgstr "Directorio de Depuración"
 
-#: peigen.c:1048 pepigen.c:1048
+#: peigen.c:1013 pepigen.c:1013
 msgid "Description Directory"
 msgstr "Directorio de Descripciones"
 
-#: peigen.c:1049 pepigen.c:1049
+#: peigen.c:1014 pepigen.c:1014
 msgid "Special Directory"
 msgstr "Directorio Especial"
 
-#: peigen.c:1050 pepigen.c:1050
+#: peigen.c:1015 pepigen.c:1015
 msgid "Thread Storage Directory [.tls]"
 msgstr "Directorio de Almacenamiento de Hilos [.tls]"
 
-#: peigen.c:1051 pepigen.c:1051
+#: peigen.c:1016 pepigen.c:1016
 msgid "Load Configuration Directory"
 msgstr "Directorio de Carga de Configuraciones"
 
-#: peigen.c:1052 pepigen.c:1052
+#: peigen.c:1017 pepigen.c:1017
 msgid "Bound Import Directory"
 msgstr "Directorio de Importación de Relaciones"
 
-#: peigen.c:1053 pepigen.c:1053
+#: peigen.c:1018 pepigen.c:1018
 msgid "Import Address Table Directory"
 msgstr "Directorio de Importación de Tablas de Direcciones"
 
-#: peigen.c:1054 pepigen.c:1054
+#: peigen.c:1019 pepigen.c:1019
 msgid "Delay Import Directory"
 msgstr "Directorio de Retardo de Importación"
 
-#: peigen.c:1055 peigen.c:1056 pepigen.c:1055 pepigen.c:1056
+#: peigen.c:1020 peigen.c:1021 pepigen.c:1020 pepigen.c:1021
 msgid "Reserved"
 msgstr "Reservado"
 
-#: peigen.c:1118 pepigen.c:1118
+#: peigen.c:1081 pepigen.c:1081
 #, c-format
 msgid ""
 "\n"
@@ -3065,7 +3151,7 @@
 "\n"
 "Hay una tabla de importación, pero la sección que la contiene no se puede encontrar\n"
 
-#: peigen.c:1123 pepigen.c:1123
+#: peigen.c:1086 pepigen.c:1086
 #, c-format
 msgid ""
 "\n"
@@ -3074,7 +3160,7 @@
 "\n"
 "Hay una tabla de importación en %s en 0x%lx\n"
 
-#: peigen.c:1159 pepigen.c:1159
+#: peigen.c:1129 pepigen.c:1129
 #, c-format
 msgid ""
 "\n"
@@ -3083,12 +3169,12 @@
 "\n"
 "Se localizó el descriptor de función en la dirección de inicio: %04lx\n"
 
-#: peigen.c:1162 pepigen.c:1162
+#: peigen.c:1132 pepigen.c:1132
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\tcódigo-base %08lx tabla-de-contenidos (cargable/actual) %08lx/%08lx\n"
 
-#: peigen.c:1170 pepigen.c:1170
+#: peigen.c:1140 pepigen.c:1140
 #, c-format
 msgid ""
 "\n"
@@ -3097,7 +3183,7 @@
 "\n"
 "¡No está la sección reldata! No se decodificó el descriptor de función.\n"
 
-#: peigen.c:1175 pepigen.c:1175
+#: peigen.c:1145 pepigen.c:1145
 #, c-format
 msgid ""
 "\n"
@@ -3106,7 +3192,7 @@
 "\n"
 "Las Tablas de Importación (se interpretaron los contenidos de la sección %s)\n"
 
-#: peigen.c:1178 pepigen.c:1178
+#: peigen.c:1148 pepigen.c:1148
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -3115,7 +3201,7 @@
 " vma:            Pista   Fecha     Adelante DLL       Primero\n"
 "                 Tabla   Estampa   Cadena   Nombre    Thunk\n"
 
-#: peigen.c:1223 pepigen.c:1223
+#: peigen.c:1196 pepigen.c:1196
 #, c-format
 msgid ""
 "\n"
@@ -3124,12 +3210,12 @@
 "\n"
 "\tNombre de la DLL: %s\n"
 
-#: peigen.c:1234 pepigen.c:1234
+#: peigen.c:1207 pepigen.c:1207
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Pista/Ord Nombre-Miembro Unido-A\n"
 
-#: peigen.c:1259 pepigen.c:1259
+#: peigen.c:1232 pepigen.c:1232
 #, c-format
 msgid ""
 "\n"
@@ -3138,7 +3224,7 @@
 "\n"
 "Hay un thunk inicial, pero la sección que lo contiene no se puede encontrar\n"
 
-#: peigen.c:1399 pepigen.c:1399
+#: peigen.c:1365 pepigen.c:1365
 #, c-format
 msgid ""
 "\n"
@@ -3147,16 +3233,25 @@
 "\n"
 "Hay una tabla de exportación, pero la sección que la contiene no se puede encontrar\n"
 
-#: peigen.c:1404 pepigen.c:1404
+#: peigen.c:1374 pepigen.c:1374
 #, c-format
 msgid ""
 "\n"
+"There is an export table in %s, but it does not fit into that section\n"
+msgstr ""
+"\n"
+"Hay una tabla de exportación en %s, pero no cabe en esa sección\n"
+
+#: peigen.c:1380 pepigen.c:1380
+#, c-format
+msgid ""
+"\n"
 "There is an export table in %s at 0x%lx\n"
 msgstr ""
 "\n"
 "Hay una tabla de exportación en %s en 0x%lx\n"
 
-#: peigen.c:1435 pepigen.c:1435
+#: peigen.c:1408 pepigen.c:1408
 #, c-format
 msgid ""
 "\n"
@@ -3167,68 +3262,68 @@
 "Las Tablas de Exportación (se interpretaron los contenidos de la sección %s)\n"
 "\n"
 
-#: peigen.c:1439 pepigen.c:1439
+#: peigen.c:1412 pepigen.c:1412
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "Opciones de Exportación \t\t\t%lx\n"
 
-#: peigen.c:1442 pepigen.c:1442
+#: peigen.c:1415 pepigen.c:1415
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "marca de Hora/Fecha \t\t%lx\n"
 
-#: peigen.c:1445 pepigen.c:1445
+#: peigen.c:1418 pepigen.c:1418
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Mayor/Menor \t\t\t%d/%d\n"
 
-#: peigen.c:1448 pepigen.c:1448
+#: peigen.c:1421 pepigen.c:1421
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Nombre \t\t\t\t"
 
-#: peigen.c:1454 pepigen.c:1454
+#: peigen.c:1427 pepigen.c:1427
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Base Ordinal \t\t\t%ld\n"
 
-#: peigen.c:1457 pepigen.c:1457
+#: peigen.c:1430 pepigen.c:1430
 #, c-format
 msgid "Number in:\n"
 msgstr "Número en:\n"
 
-#: peigen.c:1460 pepigen.c:1460
+#: peigen.c:1433 pepigen.c:1433
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tTabla de Exportación de Direcciones \t\t%08lx\n"
 
-#: peigen.c:1464 pepigen.c:1464
+#: peigen.c:1437 pepigen.c:1437
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\tTabla [Nombre Puntero/Ordinal]\t%08lx\n"
 
-#: peigen.c:1467 pepigen.c:1467
+#: peigen.c:1440 pepigen.c:1440
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Direcciones de la Tabla\n"
 
-#: peigen.c:1470 pepigen.c:1470
+#: peigen.c:1443 pepigen.c:1443
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tTabla de Exportación de Direcciones \t\t"
 
-#: peigen.c:1475 pepigen.c:1475
+#: peigen.c:1448 pepigen.c:1448
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tNombre de la Tabla de Punteros \t\t"
 
 # continuar aqui
-#: peigen.c:1480 pepigen.c:1480
+#: peigen.c:1453 pepigen.c:1453
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tTabla Ordinal \t\t\t"
 
-#: peigen.c:1495 pepigen.c:1495
+#: peigen.c:1467 pepigen.c:1467
 #, c-format
 msgid ""
 "\n"
@@ -3237,15 +3332,15 @@
 "\n"
 "Tabla de Exportación de Direcciones -- Base Ordinal %ld\n"
 
-#: peigen.c:1514 pepigen.c:1514
+#: peigen.c:1486 pepigen.c:1486
 msgid "Forwarder RVA"
 msgstr "RVA Adelantador"
 
-#: peigen.c:1525 pepigen.c:1525
+#: peigen.c:1497 pepigen.c:1497
 msgid "Export RVA"
 msgstr "RVA Exportador"
 
-#: peigen.c:1532 pepigen.c:1532
+#: peigen.c:1504 pepigen.c:1504
 #, c-format
 msgid ""
 "\n"
@@ -3254,12 +3349,12 @@
 "\n"
 "Tabla [Puntero a Ordinal/Nombre]\n"
 
-#: peigen.c:1587 pepigen.c:1587
+#: peigen.c:1557 pepigen.c:1557
 #, c-format
 msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr "Aviso, el tamaño de la sección .pdata (%ld) no es un múltiplo de %d\n"
 
-#: peigen.c:1591 pepigen.c:1591
+#: peigen.c:1561 pepigen.c:1561
 #, c-format
 msgid ""
 "\n"
@@ -3268,12 +3363,12 @@
 "\n"
 "La Tabla de Funciones (se interpretaron los contenidos de la sección .pdata)\n"
 
-#: peigen.c:1594 pepigen.c:1594
+#: peigen.c:1564 pepigen.c:1564
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tDirección Inicio Dirección Fin    Información Desenvuelta\n"
 
-#: peigen.c:1596 pepigen.c:1596
+#: peigen.c:1566 pepigen.c:1566
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -3282,22 +3377,22 @@
 " vma:\t\tInicio   Fin      EH       EH       FinPrólogo Excepción\n"
 "     \t\tDirecc   Direcc   Asa      Datos    Dirección  Máscara\n"
 
-#: peigen.c:1666 pepigen.c:1666
+#: peigen.c:1636 pepigen.c:1636
 #, c-format
 msgid " Register save millicode"
 msgstr " Registro para guardar milicódigo"
 
-#: peigen.c:1669 pepigen.c:1669
+#: peigen.c:1639 pepigen.c:1639
 #, c-format
 msgid " Register restore millicode"
 msgstr " Registro para restaurar milicódigo"
 
-#: peigen.c:1672 pepigen.c:1672
+#: peigen.c:1642 pepigen.c:1642
 #, c-format
 msgid " Glue code sequence"
 msgstr " Secuencia de código pegamento"
 
-#: peigen.c:1724 pepigen.c:1724
+#: peigen.c:1692 pepigen.c:1692
 #, c-format
 msgid ""
 "\n"
@@ -3308,7 +3403,7 @@
 "\n"
 "Reubicaciones de Fichero Base PE (se interpretaron los contenidos de la sección .reloc)\n"
 
-#: peigen.c:1754 pepigen.c:1754
+#: peigen.c:1722 pepigen.c:1722
 #, c-format
 msgid ""
 "\n"
@@ -3317,7 +3412,7 @@
 "\n"
 "Dirección Virtual: %08lx Tamaño del trozo %ld (0x%lx) Número de composturas %ld\n"
 
-#: peigen.c:1767 pepigen.c:1767
+#: peigen.c:1735 pepigen.c:1735
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\treubicación %4d desplazamiento %4x [%4lx] %s"
@@ -3325,7 +3420,7 @@
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:1807 pepigen.c:1807
+#: peigen.c:1773 pepigen.c:1773
 #, c-format
 msgid ""
 "\n"
@@ -3334,6 +3429,36 @@
 "\n"
 "Características 0x%x\n"
 
+#~ msgid "Missing IHCONST"
+#~ msgstr "IHCONST faltante"
+
+#~ msgid "Missing IHIHALF"
+#~ msgstr "IHIHALF faltante"
+
+#~ msgid "missing IHCONST reloc"
+#~ msgstr "reubicación IHCONST faltante"
+
+#~ msgid "missing IHIHALF reloc"
+#~ msgstr "reubicación IHIHALF faltante"
+
+#~ msgid "%B(%A): warning: unresolvable relocation %d against symbol `%s'"
+#~ msgstr "%B(%A): aviso: reubicación %d sin resolución contra el símbolo `%s'"
+
+#~ msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
+#~ msgstr "%s: aviso: reubicación sin resolución contra el símbolo `%s' de la sección %s"
+
+#~ msgid "%B(%A): unresolvable relocation against symbol `%s'"
+#~ msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'"
+
+#~ msgid "Symbol %s has no GOT subsection for offset 0x%x"
+#~ msgstr "El símbolo %s no tiene subsección GOT para el desplazamiento 0x%x"
+
+#~ msgid "%B: check_relocs: unhandled reloc type %d"
+#~ msgstr "%B: check_relocs: tipo de reubicación %d sin manejar"
+
+#~ msgid "%B: warning: sh_link not set for section `%S'"
+#~ msgstr "%B: aviso: no se estableció sh_link para la sección `%S'"
+
 #~ msgid "  first occurrence: %s: arm call to thumb"
 #~ msgstr "  primera ocurrencia: %s: llamada arm a thumb"
 

Added: branches/binutils/package/bfd/po/fr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/fr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/ja.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/ja.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/ro.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/ro.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/rw.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/rw.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/sv.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/sv.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/tr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/tr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/vi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/vi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/bfd/po/zh_CN.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/bfd/po/zh_CN.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/bfd/tekhex.c
===================================================================
--- branches/binutils/package/bfd/tekhex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/tekhex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -264,36 +264,50 @@
 
 #define enda(x) (x->vma + x->size)
 
-static bfd_vma
-getvalue (char **srcp)
+static bfd_boolean
+getvalue (char **srcp, bfd_vma *valuep)
 {
   char *src = *srcp;
   bfd_vma value = 0;
-  unsigned int len = hex_value(*src++);
+  unsigned int len;
 
+  if (!ISHEX (*src))
+    return FALSE;
+
+  len = hex_value (*src++);
   if (len == 0)
     len = 16;
   while (len--)
-    value = value << 4 | hex_value(*src++);
+    {
+      if (!ISHEX (*src))
+	return FALSE;
+      value = value << 4 | hex_value (*src++);
+    }
 
   *srcp = src;
-  return value;
+  *valuep = value;
+  return TRUE;
 }
 
-static unsigned int
-getsym (char *dstp, char **srcp)
+static bfd_boolean
+getsym (char *dstp, char **srcp, unsigned int *lenp)
 {
   char *src = *srcp;
   unsigned int i;
-  unsigned int len = hex_value(*src++);
+  unsigned int len;
+  
+  if (!ISHEX (*src))
+    return FALSE;
 
+  len = hex_value (*src++);
   if (len == 0)
     len = 16;
   for (i = 0; i < len; i++)
     dstp[i] = src[i];
   dstp[i] = 0;
   *srcp = src + i;
-  return len;
+  *lenp = len;
+  return TRUE;
 }
 
 static struct data_struct *
@@ -333,11 +347,12 @@
 /* The first pass is to find the names of all the sections, and see
   how big the data is.  */
 
-static void
+static bfd_boolean
 first_phase (bfd *abfd, int type, char *src)
 {
   asection *section = bfd_abs_section_ptr;
   unsigned int len;
+  bfd_vma val;
   char sym[17];			/* A symbol can only be 16chars long.  */
 
   switch (type)
@@ -345,8 +360,11 @@
     case '6':
       /* Data record - read it and store it.  */
       {
-	bfd_vma addr = getvalue (&src);
+	bfd_vma addr;
 
+	if (!getvalue (&src, &addr))
+	  return FALSE;
+
 	while (*src)
 	  {
 	    insert_byte (abfd, HEX (src), addr);
@@ -355,17 +373,18 @@
 	  }
       }
 
-      return;
+      return TRUE;
     case '3':
       /* Symbol record, read the segment.  */
-      len = getsym (sym, &src);
+      if (!getsym (sym, &src, &len))
+	return FALSE;
       section = bfd_get_section_by_name (abfd, sym);
       if (section == NULL)
 	{
 	  char *n = bfd_alloc (abfd, (bfd_size_type) len + 1);
 
 	  if (!n)
-	    abort ();		/* FIXME.  */
+	    return FALSE;
 	  memcpy (n, sym, len + 1);
 	  section = bfd_make_section (abfd, n);
 	}
@@ -375,8 +394,11 @@
 	    {
 	    case '1':		/* Section range.  */
 	      src++;
-	      section->vma = getvalue (&src);
-	      section->size = getvalue (&src) - section->vma;
+	      if (!getvalue (&src, &section->vma))
+		return FALSE;
+	      if (!getvalue (&src, &val))
+		return FALSE;
+	      section->size = val - section->vma;
 	      section->flags = SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC;
 	      break;
 	    case '0':
@@ -393,35 +415,42 @@
 		char stype = (*src);
 
 		if (!new)
-		  abort ();	/* FIXME.  */
+		  return FALSE;
 		new->symbol.the_bfd = abfd;
 		src++;
 		abfd->symcount++;
 		abfd->flags |= HAS_SYMS;
 		new->prev = abfd->tdata.tekhex_data->symbols;
 		abfd->tdata.tekhex_data->symbols = new;
-		len = getsym (sym, &src);
+		if (!getsym (sym, &src, &len))
+		  return FALSE;
 		new->symbol.name = bfd_alloc (abfd, (bfd_size_type) len + 1);
 		if (!new->symbol.name)
-		  abort ();	/* FIXME.  */
+		  return FALSE;
 		memcpy ((char *) (new->symbol.name), sym, len + 1);
 		new->symbol.section = section;
 		if (stype <= '4')
 		  new->symbol.flags = (BSF_GLOBAL | BSF_EXPORT);
 		else
 		  new->symbol.flags = BSF_LOCAL;
-		new->symbol.value = getvalue (&src) - section->vma;
+		if (!getvalue (&src, &val))
+		  return FALSE;
+		new->symbol.value = val - section->vma;
 	      }
+	    default:
+	      return FALSE;
 	    }
 	}
     }
+
+  return TRUE;
 }
 
 /* Pass over a tekhex, calling one of the above functions on each
    record.  */
 
-static void
-pass_over (bfd *abfd, void (*func) (bfd *, int, char *))
+static bfd_boolean
+pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *))
 {
   unsigned int chars_on_line;
   bfd_boolean eof = FALSE;
@@ -462,8 +491,11 @@
       /* Put a null at the end.  */
       src[chars_on_line] = 0;
 
-      func (abfd, type, src);
+      if (!func (abfd, type, src))
+	return FALSE;
     }
+
+  return TRUE;
 }
 
 static long
@@ -524,7 +556,9 @@
 
   tekhex_mkobject (abfd);
 
-  pass_over (abfd, first_phase);
+  if (!pass_over (abfd, first_phase))
+    return NULL;
+
   return abfd->xvec;
 }
 

Modified: branches/binutils/package/bfd/version.h
===================================================================
--- branches/binutils/package/bfd/version.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/bfd/version.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,3 @@
-#define BFD_VERSION_DATE 20060413
+#define BFD_VERSION_DATE 20060623
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING @bfd_version_string@

Modified: branches/binutils/package/binutils/ChangeLog
===================================================================
--- branches/binutils/package/binutils/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,56 @@
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-02  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* doc/Makefile.am (TEXI2DVI): Define.
+	* doc/Makefile.in: Regenerate.
+
+2006-06-01  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	Backport:
+	2006-05-19  Andreas Schwab  <schwab at suse.de>
+	* doc/Makefile.am (addr2line.1): Depend on $(binutils_TEXINFOS).
+	(ar.1): Likewise.
+	(dlltool.1): Likewise.
+	(nlmconv.1): Likewise.
+	(nm.1): Likewise.
+	(objcopy.1): Likewise.
+	(objdump.1): Likewise.
+	(ranlib.1): Likewise.
+	(readelf.1): Likewise.
+	(size.1): Likewise.
+	(strings.1): Likewise.
+	(strip.1): Likewise.
+	(windres.1): Likewise.
+	(cxxfilt.man): Likewise.
+	* doc/Makefile.in: Regenerated.
+
+2006-05-30  Nick Clifton  <nickc at redhat.com>
+
+	* po/es.po: Updated Spanish translation.
+
+2006-05-24  Nick Clifton  <nickc at redhat.com>
+
+	* po/fr.po: Updated French translation.
+
+2006-05-23  Nick Clifton  <nickc at redhat.com>
+
+	* po/vi.po: Updated Vietnamese translation.
+
+2006-05-22  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* po/ru.po: Updated translation.
+
+2006-05-02  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* doc/Makefile.am (AM_MAKEINFOFLAGS): New.
+	(TEXI2POD): Use AM_MAKEINFOFLAGS.
+	(config.texi): Don't set top_srcdir.
+	* doc/binutils.texi: Don't use top_srcdir.
+	* aclocal.m4, Makefile.in, doc/Makefile.in: Regenerated.
+
 2006-04-12  Nick Clifton  <nickc at redhat.com>
 
 	* objdump.c (objdump_symbol_at_address): Fix typo in comment.

Modified: branches/binutils/package/binutils/Makefile.in
===================================================================
--- branches/binutils/package/binutils/Makefile.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/Makefile.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -14,8 +14,6 @@
 
 @SET_MAKE@
 
-SOURCES = $(addr2line_SOURCES) $(ar_SOURCES) $(coffdump_SOURCES) $(cxxfilt_SOURCES) $(dlltool_SOURCES) $(dllwrap_SOURCES) $(nlmconv_SOURCES) $(nm_new_SOURCES) $(objcopy_SOURCES) $(objdump_SOURCES) $(ranlib_SOURCES) $(readelf_SOURCES) $(size_SOURCES) $(srconv_SOURCES) $(strings_SOURCES) $(strip_new_SOURCES) $(sysdump_SOURCES) $(windres_SOURCES)
-
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@

Modified: branches/binutils/package/binutils/aclocal.m4
===================================================================
--- branches/binutils/package/binutils/aclocal.m4	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/aclocal.m4	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005  Free Software Foundation, Inc.
@@ -28,7 +28,7 @@
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.9.5])])
+	 [AM_AUTOMAKE_VERSION([1.9.6])])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 

Added: branches/binutils/package/binutils/arlex.c
===================================================================
--- branches/binutils/package/binutils/arlex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/arlex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1856 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/binutils/Attic/arlex.c,v 1.1.16.1 2006/04/16 18:36:40 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 40
+#define YY_END_OF_BUFFER 41
+static yyconst short int yy_accept[177] =
+    {   0,
+        0,    0,   41,   40,   39,   38,   35,   32,   33,   36,
+       40,   34,   37,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   36,   31,   37,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,    7,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   22,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   10,   11,   12,   35,   15,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   25,   26,   27,
+       35,   30,   35,   35,   35,    3,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   18,   35,   35,   35,   35,
+       35,   35,   35,    1,    2,    4,    5,   35,   35,   35,
+       35,   35,   16,   17,   19,   20,   35,   35,   35,   35,
+       35,   35,    8,    9,   13,   14,   35,   23,   24,   28,
+       29,   35,   35,    6,   21,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    3,    1,    1,    1,    4,    1,    1,    1,    5,
+        6,    7,    8,    9,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,   10,    1,
+        1,    1,    1,    1,   11,   12,   13,   14,   15,   16,
+        4,   17,   18,    4,    4,   19,   20,   21,   22,   23,
+        4,   24,   25,   26,   27,   28,    4,   29,   30,    4,
+        1,    4,    1,    1,    4,    1,   31,   32,   33,   34,
+
+       35,   36,    4,   37,   38,    4,    4,   39,   40,   41,
+       42,   43,    4,   44,   45,   46,   47,   48,    4,   49,
+       50,    4,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[51] =
+    {   0,
+        1,    2,    1,    3,    1,    1,    1,    1,    1,    1,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3
+    } ;
+
+static yyconst short int yy_base[180] =
+    {   0,
+        0,    0,  193,  194,  194,  194,    0,  194,  194,    0,
+      190,  194,    0,  177,   32,   37,   32,  163,  174,  170,
+      164,  171,  174,  169,  149,   15,   22,   17,  135,  146,
+      142,  136,  143,  146,  141,    0,    0,  194,    0,  161,
+      159,  158,  153,  147,  156,  143,  149,  148,  141,  150,
+      141,  135,  138,  127,  125,  124,  119,  113,  122,  109,
+      115,  114,  107,  116,  107,  101,  104,   43,  136,  135,
+      130,  129,    0,  119,  123,  118,  114,  118,  119,  122,
+      124,   25,  104,  103,   98,   97,    0,   87,   91,   86,
+       82,   86,   87,   90,   92,  105,  100,   97,   94,   93,
+
+      105,  106,  102,    0,    0,    0,  104,    0,   92,   75,
+       70,   67,   64,   63,   75,   76,   72,    0,    0,    0,
+       74,    0,   62,   91,   88,    0,   86,   85,   73,   85,
+       79,   83,   70,   62,   59,    0,   57,   56,   44,   56,
+       50,   54,   41,    0,    0,    0,    0,   63,   58,   59,
+       67,   66,    0,    0,    0,    0,   38,   33,   34,   42,
+       41,   51,    0,    0,    0,    0,   30,    0,    0,    0,
+        0,   43,   21,    0,    0,  194,   65,   66,   69
+    } ;
+
+static yyconst short int yy_def[180] =
+    {   0,
+      176,    1,  176,  176,  176,  176,  177,  176,  176,  178,
+      176,  176,  179,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  178,  176,  179,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,    0,  176,  176,  176
+    } ;
+
+static yyconst short int yy_nxt[245] =
+    {   0,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,    7,   15,   16,   17,   18,   19,    7,   20,    7,
+        7,   21,    7,   22,   23,    7,    7,   24,    7,    7,
+       25,    7,   26,   27,   28,   29,   30,    7,   31,    7,
+        7,   32,    7,   33,   34,    7,    7,   35,    7,    7,
+       41,   43,   45,   55,   44,   42,   57,   59,   56,   58,
+       46,   96,   97,  110,  111,   60,   37,   36,   37,   39,
+      175,   39,  174,  173,  172,  171,  170,  169,  168,  167,
+      166,  165,  164,  163,  162,  161,  160,  159,  158,  157,
+      156,  155,  154,  153,  152,  151,  150,  149,  148,  147,
+
+      146,  145,  144,  143,  142,  141,  140,  139,  138,  137,
+      136,  135,  134,  133,  132,  131,  130,  129,  128,  127,
+      126,  125,  124,  123,  122,  121,  120,  119,  118,  117,
+      116,  115,  114,  113,  112,  109,  108,  107,  106,  105,
+      104,  103,  102,  101,  100,   99,   98,   95,   94,   93,
+       92,   91,   90,   89,   88,   87,   86,   85,   84,   83,
+       82,   81,   80,   79,   78,   77,   76,   75,   74,   73,
+       72,   71,   70,   69,   68,   67,   66,   65,   64,   63,
+       62,   61,   54,   53,   52,   51,   50,   49,   48,   47,
+       40,   38,  176,    3,  176,  176,  176,  176,  176,  176,
+
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176
+    } ;
+
+static yyconst short int yy_chk[245] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       15,   16,   17,   26,   16,   15,   27,   28,   26,   27,
+       17,   68,   68,   82,   82,   28,  178,  177,  178,  179,
+      173,  179,  172,  167,  162,  161,  160,  159,  158,  157,
+      152,  151,  150,  149,  148,  143,  142,  141,  140,  139,
+      138,  137,  135,  134,  133,  132,  131,  130,  129,  128,
+
+      127,  125,  124,  123,  121,  117,  116,  115,  114,  113,
+      112,  111,  110,  109,  107,  103,  102,  101,  100,   99,
+       98,   97,   96,   95,   94,   93,   92,   91,   90,   89,
+       88,   86,   85,   84,   83,   81,   80,   79,   78,   77,
+       76,   75,   74,   72,   71,   70,   69,   67,   66,   65,
+       64,   63,   62,   61,   60,   59,   58,   57,   56,   55,
+       54,   53,   52,   51,   50,   49,   48,   47,   46,   45,
+       44,   43,   42,   41,   40,   35,   34,   33,   32,   31,
+       30,   29,   25,   24,   23,   22,   21,   20,   19,   18,
+       14,   11,    3,  176,  176,  176,  176,  176,  176,  176,
+
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "arlex.l"
+#define INITIAL 0
+#line 2 "arlex.l"
+/* arlex.l - Strange script language lexer */
+
+/* Copyright 1992, 1997, 2000, 2001, 2002, 2003, 2004
+   Free Software Foundation, Inc.
+
+This file is part of GNU Binutils.
+
+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 2 of the License, 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; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+
+/* Contributed by Steve Chamberlain <sac at cygnus.com>.  */
+
+#define DONTDECLARE_MALLOC
+#include "ansidecl.h"
+#include "libiberty.h"
+#include "arparse.h"
+
+#define YY_NO_UNPUT
+
+extern int yylex (void);
+
+int linenumber;
+#line 511 "arlex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 41 "arlex.l"
+
+
+#line 676 "arlex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 177 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 194 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 43 "arlex.l"
+{ return ADDLIB; }
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 44 "arlex.l"
+{ return ADDMOD; }
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 45 "arlex.l"
+{ return CLEAR; }
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 46 "arlex.l"
+{ return CREATE; }
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 47 "arlex.l"
+{ return DELETE; }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 48 "arlex.l"
+{ return DIRECTORY; }
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 49 "arlex.l"
+{ return END; }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 50 "arlex.l"
+{ return EXTRACT; }
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 51 "arlex.l"
+{ return FULLDIR; }
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 52 "arlex.l"
+{ return HELP; }
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 53 "arlex.l"
+{ return LIST; }
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 54 "arlex.l"
+{ return OPEN; }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 55 "arlex.l"
+{ return REPLACE; }
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 56 "arlex.l"
+{ return VERBOSE; }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 57 "arlex.l"
+{ return SAVE; }
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 58 "arlex.l"
+{ return ADDLIB; }
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 59 "arlex.l"
+{ return ADDMOD; }
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 60 "arlex.l"
+{ return CLEAR; }
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 61 "arlex.l"
+{ return CREATE; }
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 62 "arlex.l"
+{ return DELETE; }
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 63 "arlex.l"
+{ return DIRECTORY; }
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 64 "arlex.l"
+{ return END; }
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 65 "arlex.l"
+{ return EXTRACT; }
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 66 "arlex.l"
+{ return FULLDIR; }
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 67 "arlex.l"
+{ return HELP; }
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 68 "arlex.l"
+{ return LIST; }
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 69 "arlex.l"
+{ return OPEN; }
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 70 "arlex.l"
+{ return REPLACE; }
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 71 "arlex.l"
+{ return VERBOSE; }
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 72 "arlex.l"
+{ return SAVE; }
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 73 "arlex.l"
+{ linenumber ++; }
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 74 "arlex.l"
+{ return '('; }
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 75 "arlex.l"
+{ return ')'; }
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 76 "arlex.l"
+{ return ','; }
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 77 "arlex.l"
+{ 	
+		yylval.name =  xstrdup (yytext);
+		return FILENAME;
+		}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 81 "arlex.l"
+{ }
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 82 "arlex.l"
+{ }
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 83 "arlex.l"
+{ }
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 84 "arlex.l"
+{ linenumber ++; return NEWLINE; }	
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 86 "arlex.l"
+ECHO;
+	YY_BREAK
+#line 962 "arlex.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 177 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 177 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 176);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 86 "arlex.l"
+
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif

Added: branches/binutils/package/binutils/arparse.c
===================================================================
--- branches/binutils/package/binutils/arparse.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/arparse.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1605 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     NEWLINE = 258,
+     VERBOSE = 259,
+     FILENAME = 260,
+     ADDLIB = 261,
+     LIST = 262,
+     ADDMOD = 263,
+     CLEAR = 264,
+     CREATE = 265,
+     DELETE = 266,
+     DIRECTORY = 267,
+     END = 268,
+     EXTRACT = 269,
+     FULLDIR = 270,
+     HELP = 271,
+     QUIT = 272,
+     REPLACE = 273,
+     SAVE = 274,
+     OPEN = 275
+   };
+#endif
+/* Tokens.  */
+#define NEWLINE 258
+#define VERBOSE 259
+#define FILENAME 260
+#define ADDLIB 261
+#define LIST 262
+#define ADDMOD 263
+#define CLEAR 264
+#define CREATE 265
+#define DELETE 266
+#define DIRECTORY 267
+#define END 268
+#define EXTRACT 269
+#define FULLDIR 270
+#define HELP 271
+#define QUIT 272
+#define REPLACE 273
+#define SAVE 274
+#define OPEN 275
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 1 "arparse.y"
+
+/* arparse.y - Stange script language parser */
+
+/*   Copyright 1992, 1993, 1995, 1997, 1999, 2002, 2003
+     Free Software Foundation, Inc.
+
+This file is part of GNU Binutils.
+
+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 2 of the License, 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; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+
+/* Contributed by Steve Chamberlain
+   		  sac at cygnus.com
+
+*/
+#define DONTDECLARE_MALLOC
+#include "bfd.h"
+#include "bucomm.h"
+#include "arsup.h"
+extern int verbose;
+extern int yylex (void);
+static int yyerror (const char *);
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 37 "arparse.y"
+typedef union YYSTYPE {
+  char *name;
+struct list *list ;
+
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 167 "arparse.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 179 "arparse.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  3
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   34
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  24
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  22
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  42
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  53
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   275
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      21,    22,     2,     2,    23,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned char yyprhs[] =
+{
+       0,     0,     3,     4,     7,    10,    11,    14,    16,    18,
+      20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
+      40,    42,    44,    45,    48,    51,    53,    56,    59,    61,
+      63,    66,    69,    73,    78,    80,    81,    85,    86,    90,
+      91,    93,    94
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      25,     0,    -1,    -1,    26,    27,    -1,    27,    28,    -1,
+      -1,    29,     3,    -1,    37,    -1,    38,    -1,    45,    -1,
+      40,    -1,    39,    -1,    32,    -1,    34,    -1,    36,    -1,
+      30,    -1,    31,    -1,    33,    -1,    35,    -1,    13,    -1,
+       1,    -1,     5,    -1,    -1,    14,    43,    -1,    18,    43,
+      -1,     9,    -1,    11,    43,    -1,     8,    43,    -1,     7,
+      -1,    19,    -1,    20,     5,    -1,    10,     5,    -1,     6,
+       5,    42,    -1,    12,     5,    42,    41,    -1,     5,    -1,
+      -1,    21,    43,    22,    -1,    -1,    43,    44,     5,    -1,
+      -1,    23,    -1,    -1,     4,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned char yyrline[] =
+{
+       0,    68,    68,    68,    72,    73,    77,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    95,    96,   101,   106,   111,   116,   120,   125,   130,
+     137,   142,   148,   152,   159,   161,   165,   168,   172,   178,
+     183,   184,   189
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "NEWLINE", "VERBOSE", "FILENAME",
+  "ADDLIB", "LIST", "ADDMOD", "CLEAR", "CREATE", "DELETE", "DIRECTORY",
+  "END", "EXTRACT", "FULLDIR", "HELP", "QUIT", "REPLACE", "SAVE", "OPEN",
+  "'('", "')'", "','", "$accept", "start", "@1", "session", "command_line",
+  "command", "extract_command", "replace_command", "clear_command",
+  "delete_command", "addmod_command", "list_command", "save_command",
+  "open_command", "create_command", "addlib_command", "directory_command",
+  "optional_filename", "modulelist", "modulename", "optcomma",
+  "verbose_command", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,    40,    41,    44
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    24,    26,    25,    27,    27,    28,    29,    29,    29,
+      29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
+      29,    29,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    41,    42,    42,    43,    43,
+      44,    44,    45
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     0,     2,     2,     0,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     2,     2,     1,     2,     2,     1,     1,
+       2,     2,     3,     4,     1,     0,     3,     0,     3,     0,
+       1,     0,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       2,     0,     5,     1,     0,    20,    42,    21,     0,    28,
+      39,    25,     0,    39,     0,    19,    39,    39,    29,     0,
+       4,     0,    15,    16,    12,    17,    13,    18,    14,     7,
+       8,    11,    10,     9,    37,    27,    31,    26,    37,    23,
+      24,    30,     6,    39,    32,    40,     0,    35,    41,    38,
+      34,    33,    36
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,     1,     2,     4,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    51,    44,    35,
+      46,    33
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -14
+static const yysigned_char yypact[] =
+{
+     -14,     1,   -14,   -14,     5,   -14,   -14,   -14,     2,   -14,
+     -14,   -14,    21,   -14,    22,   -14,   -14,   -14,   -14,    23,
+     -14,    26,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,
+     -14,   -14,   -14,   -14,    10,    -3,   -14,    -3,    10,    -3,
+      -3,   -14,   -14,   -14,   -14,   -14,    27,    28,    -1,   -14,
+     -14,   -14,   -14
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yysigned_char yypgoto[] =
+{
+     -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,
+     -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,    -4,   -13,
+     -14,   -14
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -42
+static const yysigned_char yytable[] =
+{
+      37,     3,   -41,    39,    40,    -3,     5,    34,   -22,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      45,    52,    45,    17,    18,    19,    36,    38,    41,    42,
+      48,    43,    49,    50,    47
+};
+
+static const unsigned char yycheck[] =
+{
+      13,     0,     5,    16,    17,     0,     1,     5,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      23,    22,    23,    18,    19,    20,     5,     5,     5,     3,
+      43,    21,     5,     5,    38
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,    25,    26,     0,    27,     1,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    18,    19,    20,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    45,     5,    43,     5,    43,     5,    43,
+      43,     5,     3,    21,    42,    23,    44,    42,    43,     5,
+       5,    41,    22
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 2:
+#line 68 "arparse.y"
+    { prompt(); }
+    break;
+
+  case 6:
+#line 77 "arparse.y"
+    { prompt(); }
+    break;
+
+  case 19:
+#line 93 "arparse.y"
+    { ar_end(); return 0; }
+    break;
+
+  case 21:
+#line 95 "arparse.y"
+    { yyerror("foo"); }
+    break;
+
+  case 23:
+#line 102 "arparse.y"
+    { ar_extract((yyvsp[0].list)); }
+    break;
+
+  case 24:
+#line 107 "arparse.y"
+    { ar_replace((yyvsp[0].list)); }
+    break;
+
+  case 25:
+#line 112 "arparse.y"
+    { ar_clear(); }
+    break;
+
+  case 26:
+#line 117 "arparse.y"
+    { ar_delete((yyvsp[0].list)); }
+    break;
+
+  case 27:
+#line 121 "arparse.y"
+    { ar_addmod((yyvsp[0].list)); }
+    break;
+
+  case 28:
+#line 126 "arparse.y"
+    { ar_list(); }
+    break;
+
+  case 29:
+#line 131 "arparse.y"
+    { ar_save(); }
+    break;
+
+  case 30:
+#line 138 "arparse.y"
+    { ar_open((yyvsp[0].name),0); }
+    break;
+
+  case 31:
+#line 143 "arparse.y"
+    { ar_open((yyvsp[0].name),1); }
+    break;
+
+  case 32:
+#line 149 "arparse.y"
+    { ar_addlib((yyvsp[-1].name),(yyvsp[0].list)); }
+    break;
+
+  case 33:
+#line 153 "arparse.y"
+    { ar_directory((yyvsp[-2].name), (yyvsp[-1].list), (yyvsp[0].name)); }
+    break;
+
+  case 34:
+#line 160 "arparse.y"
+    { (yyval.name) = (yyvsp[0].name); }
+    break;
+
+  case 35:
+#line 161 "arparse.y"
+    { (yyval.name) = 0; }
+    break;
+
+  case 36:
+#line 166 "arparse.y"
+    { (yyval.list) = (yyvsp[-1].list); }
+    break;
+
+  case 37:
+#line 168 "arparse.y"
+    { (yyval.list) = 0; }
+    break;
+
+  case 38:
+#line 173 "arparse.y"
+    { 	struct list *n  = (struct list *) malloc(sizeof(struct list));
+			n->next = (yyvsp[-2].list); 
+			n->name = (yyvsp[0].name);
+			(yyval.list) = n;
+		 }
+    break;
+
+  case 39:
+#line 178 "arparse.y"
+    { (yyval.list) = 0; }
+    break;
+
+  case 42:
+#line 190 "arparse.y"
+    { verbose = !verbose; }
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1327 "arparse.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 194 "arparse.y"
+
+
+static int
+yyerror (const char *x ATTRIBUTE_UNUSED)
+{
+  extern int linenumber;
+
+  printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
+  return 0;
+}
+

Added: branches/binutils/package/binutils/arparse.h
===================================================================
--- branches/binutils/package/binutils/arparse.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/arparse.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,92 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     NEWLINE = 258,
+     VERBOSE = 259,
+     FILENAME = 260,
+     ADDLIB = 261,
+     LIST = 262,
+     ADDMOD = 263,
+     CLEAR = 264,
+     CREATE = 265,
+     DELETE = 266,
+     DIRECTORY = 267,
+     END = 268,
+     EXTRACT = 269,
+     FULLDIR = 270,
+     HELP = 271,
+     QUIT = 272,
+     REPLACE = 273,
+     SAVE = 274,
+     OPEN = 275
+   };
+#endif
+/* Tokens.  */
+#define NEWLINE 258
+#define VERBOSE 259
+#define FILENAME 260
+#define ADDLIB 261
+#define LIST 262
+#define ADDMOD 263
+#define CLEAR 264
+#define CREATE 265
+#define DELETE 266
+#define DIRECTORY 267
+#define END 268
+#define EXTRACT 269
+#define FULLDIR 270
+#define HELP 271
+#define QUIT 272
+#define REPLACE 273
+#define SAVE 274
+#define OPEN 275
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 37 "arparse.y"
+typedef union YYSTYPE {
+  char *name;
+struct list *list ;
+
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 84 "arparse.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Added: branches/binutils/package/binutils/deflex.c
===================================================================
--- branches/binutils/package/binutils/deflex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/deflex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1881 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/binutils/Attic/deflex.c,v 1.1.16.1 2006/04/16 18:36:40 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 41
+#define YY_END_OF_BUFFER 42
+static yyconst short int yy_accept[198] =
+    {   0,
+        0,    0,   42,   41,   34,   36,   35,   33,   41,   28,
+       41,   31,   40,   38,   27,   32,   37,   39,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,    0,   29,   28,    0,   30,   31,   27,
+       32,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   12,    6,   28,    7,
+       28,   28,   28,   28,   28,   28,   28,   28,    1,   28,
+
+       28,   28,   16,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       17,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   14,   28,   28,   28,   19,   21,   28,   28,   28,
+       28,   28,   28,   18,    9,   28,   10,   28,   28,    2,
+       28,   28,   15,   28,   28,   28,   28,   11,   13,   28,
+        5,   28,   28,   22,   28,    8,   28,   28,   28,   28,
+       28,   28,   20,    4,   28,   28,   28,   24,   28,   26,
+       28,    3,   28,   28,   23,   25,    0
+
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    5,    1,    6,    1,    7,    1,    1,    8,    1,
+        1,    9,    1,   10,    7,   11,   12,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,    7,   14,    1,
+       15,    1,    7,   16,   17,   18,   19,   20,   21,   22,
+       23,   24,   25,    7,   26,   27,   28,   29,   30,   31,
+        7,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+        1,    1,    1,    1,    7,    1,   22,   22,   22,   22,
+
+       22,   22,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,   22,
+        7,    7,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[41] =
+    {   0,
+        1,    1,    2,    1,    1,    1,    3,    1,    1,    1,
+        1,    4,    5,    1,    1,    4,    6,    6,    6,    6,
+        6,    6,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3
+    } ;
+
+static yyconst short int yy_base[205] =
+    {   0,
+        0,    0,  229,  230,  230,  230,  230,  230,  222,    0,
+      219,    0,  230,  230,    0,    0,  230,    0,  209,  195,
+       24,  186,  202,   14,  197,  186,   27,  188,  198,   25,
+      197,  196,  184,  209,  230,    0,  206,  230,    0,    0,
+        0,    0,  180,   27,  178,  178,   27,  193,  178,  183,
+      189,  179,  177,  175,  178,  185,  182,  183,  170,  181,
+      165,  164,  170,  173,  172,  159,  174,  171,  170,  158,
+      156,  156,  151,  152,  149,  161,   34,  145,  160,  145,
+      146,  154,  157,  147,  141,  139,    0,    0,  138,    0,
+      139,  135,  137,  135,  135,   29,  149,  140,    0,  136,
+
+      139,  145,    0,  136,  139,  132,  132,   30,  132,  135,
+      138,  129,  119,  118,  126,  116,  122,  119,  115,  115,
+      124,  127,  109,  112,  121,  119,  106,  111,  108,  106,
+        0,  106,  103,  112,   99,   91,   97,   99,   95,   88,
+       99,    0,   93,  103,   94,    0,    0,   97,   91,   87,
+       90,   84,   83,    0,    0,   95,    0,   97,   80,    0,
+       92,   91,    0,   78,   70,   91,   74,    0,    0,   82,
+        0,   89,   88,    0,   84,    0,   82,   85,   83,   69,
+       66,   56,    0,    0,   39,   36,   35,    0,   44,    0,
+       43,    0,   40,   39,    0,    0,  230,   67,   71,   77,
+
+       83,   85,   91,   95
+    } ;
+
+static yyconst short int yy_def[205] =
+    {   0,
+      197,    1,  197,  197,  197,  197,  197,  197,  198,  199,
+      200,  201,  197,  197,  202,  203,  197,  204,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  198,  197,  199,  200,  197,  201,  202,
+      203,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,    0,  197,  197,  197,
+
+      197,  197,  197,  197
+    } ;
+
+static yyconst short int yy_nxt[271] =
+    {   0,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,    4,   15,   16,   17,   18,   10,   19,   20,   21,
+       22,   10,   10,   23,   24,   10,   25,   26,   27,   10,
+       28,   29,   30,   31,   10,   32,   33,   10,   10,   10,
+       45,   49,   50,   53,   46,   57,   65,   69,   58,   59,
+      100,  117,  128,  118,  129,   66,   54,   70,   60,  196,
+      195,  194,  193,  192,  191,  190,  101,   34,   34,   34,
+       34,   34,   34,   36,   36,   36,   36,   37,   37,   37,
+       37,   37,   37,   39,  189,   39,   39,   39,   39,   40,
+       40,   41,  188,   41,   41,   41,   41,   42,  187,  186,
+
+       42,  185,  184,  183,  182,  181,  180,  179,  178,  177,
+      176,  175,  174,  173,  172,  171,  170,  169,  168,  167,
+      166,  165,  164,  163,  162,  161,  160,  159,  158,  157,
+      156,  155,  154,  153,  152,  151,  150,  149,  148,  147,
+      146,  145,  144,  143,  142,  141,  140,  139,  138,  137,
+      136,  135,  134,  133,  132,  131,  130,  127,  126,  125,
+      124,  123,  122,  121,  120,  119,  116,  115,  114,  113,
+      112,  111,  110,  109,  108,  107,  106,  105,  104,  103,
+      102,   99,   98,   97,   96,   95,   94,   93,   92,   91,
+       90,   89,   88,   87,   86,   85,   84,   83,   82,   81,
+
+       80,   79,   78,   77,   76,   75,   74,   73,   72,   71,
+       68,   67,   64,   38,   35,   63,   62,   61,   56,   55,
+       52,   51,   48,   47,   44,   43,   38,   35,  197,    3,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197
+    } ;
+
+static yyconst short int yy_chk[271] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       21,   24,   24,   27,   21,   30,   44,   47,   30,   30,
+       77,   96,  108,   96,  108,   44,   27,   47,   30,  194,
+      193,  191,  189,  187,  186,  185,   77,  198,  198,  198,
+      198,  198,  198,  199,  199,  199,  199,  200,  200,  200,
+      200,  200,  200,  201,  182,  201,  201,  201,  201,  202,
+      202,  203,  181,  203,  203,  203,  203,  204,  180,  179,
+
+      204,  178,  177,  175,  173,  172,  170,  167,  166,  165,
+      164,  162,  161,  159,  158,  156,  153,  152,  151,  150,
+      149,  148,  145,  144,  143,  141,  140,  139,  138,  137,
+      136,  135,  134,  133,  132,  130,  129,  128,  127,  126,
+      125,  124,  123,  122,  121,  120,  119,  118,  117,  116,
+      115,  114,  113,  112,  111,  110,  109,  107,  106,  105,
+      104,  102,  101,  100,   98,   97,   95,   94,   93,   92,
+       91,   89,   86,   85,   84,   83,   82,   81,   80,   79,
+       78,   76,   75,   74,   73,   72,   71,   70,   69,   68,
+       67,   66,   65,   64,   63,   62,   61,   60,   59,   58,
+
+       57,   56,   55,   54,   53,   52,   51,   50,   49,   48,
+       46,   45,   43,   37,   34,   33,   32,   31,   29,   28,
+       26,   25,   23,   22,   20,   19,   11,    9,    3,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "deflex.l"
+#define INITIAL 0
+#line 2 "deflex.l"
+
+/*  Copyright 1995, 1997, 1998, 1999, 2002, 2003, 2004, 2005
+    Free Software Foundation, Inc.
+
+    This file is part of GNU Binutils.
+
+    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 2 of the License, 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; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+
+/* Contributed by Steve Chamberlain: sac at cygnus.com  */
+
+#define DONTDECLARE_MALLOC
+#include "libiberty.h"
+#include "defparse.h"
+#include "dlltool.h"
+
+#define YY_NO_UNPUT
+
+int linenumber;
+
+#line 523 "deflex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 35 "deflex.l"
+
+#line 687 "deflex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 198 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 230 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 36 "deflex.l"
+{ return NAME;}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 37 "deflex.l"
+{ return LIBRARY;}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 38 "deflex.l"
+{ return DESCRIPTION;}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 39 "deflex.l"
+{ return STACKSIZE;}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 40 "deflex.l"
+{ return HEAPSIZE;}
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 41 "deflex.l"
+{ return CODE;}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 42 "deflex.l"
+{ return DATA;}
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 43 "deflex.l"
+{ return SECTIONS;}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 44 "deflex.l"
+{ return EXPORTS;}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 45 "deflex.l"
+{ return IMPORTS;}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 46 "deflex.l"
+{ return VERSIONK;}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 47 "deflex.l"
+{ return BASE;}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 48 "deflex.l"
+{ return CONSTANT; }
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 49 "deflex.l"
+{ return NONAME; }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 50 "deflex.l"
+{ return PRIVATE; }
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 51 "deflex.l"
+{ return READ;}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 52 "deflex.l"
+{ return WRITE;}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 53 "deflex.l"
+{ return EXECUTE;}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 54 "deflex.l"
+{ return SHARED;}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 55 "deflex.l"
+{ return NONSHARED;}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 56 "deflex.l"
+{ return SINGLE;}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 57 "deflex.l"
+{ return MULTIPLE;}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 58 "deflex.l"
+{ return INITINSTANCE;}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 59 "deflex.l"
+{ return INITGLOBAL;}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 60 "deflex.l"
+{ return TERMINSTANCE;}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 61 "deflex.l"
+{ return TERMGLOBAL;}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 63 "deflex.l"
+{ yylval.number = strtol (yytext,0,0); 
+		return NUMBER; }
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 66 "deflex.l"
+{ 	
+		yylval.id =  xstrdup (yytext);
+		return ID;
+		}
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 71 "deflex.l"
+{
+		yylval.id = xstrdup (yytext+1);
+		yylval.id[yyleng-2] = 0;
+		return ID;
+		}
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 77 "deflex.l"
+{
+		yylval.id = xstrdup (yytext+1);
+		yylval.id[yyleng-2] = 0;
+		return ID;
+		}
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 82 "deflex.l"
+{ }
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 83 "deflex.l"
+{ }
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 84 "deflex.l"
+{ }
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 85 "deflex.l"
+{ }
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 86 "deflex.l"
+{ }
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 87 "deflex.l"
+{ linenumber ++ ;}
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 88 "deflex.l"
+{ return '=';}
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 89 "deflex.l"
+{ return '.';}
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 90 "deflex.l"
+{ return '@';}
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 91 "deflex.l"
+{ return ',';}
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 92 "deflex.l"
+ECHO;
+	YY_BREAK
+#line 987 "deflex.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 198 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 198 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 197);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 92 "deflex.l"
+
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif

Added: branches/binutils/package/binutils/defparse.c
===================================================================
--- branches/binutils/package/binutils/defparse.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/defparse.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1777 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     NAME = 258,
+     LIBRARY = 259,
+     DESCRIPTION = 260,
+     STACKSIZE = 261,
+     HEAPSIZE = 262,
+     CODE = 263,
+     DATA = 264,
+     SECTIONS = 265,
+     EXPORTS = 266,
+     IMPORTS = 267,
+     VERSIONK = 268,
+     BASE = 269,
+     CONSTANT = 270,
+     READ = 271,
+     WRITE = 272,
+     EXECUTE = 273,
+     SHARED = 274,
+     NONSHARED = 275,
+     NONAME = 276,
+     PRIVATE = 277,
+     SINGLE = 278,
+     MULTIPLE = 279,
+     INITINSTANCE = 280,
+     INITGLOBAL = 281,
+     TERMINSTANCE = 282,
+     TERMGLOBAL = 283,
+     ID = 284,
+     NUMBER = 285
+   };
+#endif
+/* Tokens.  */
+#define NAME 258
+#define LIBRARY 259
+#define DESCRIPTION 260
+#define STACKSIZE 261
+#define HEAPSIZE 262
+#define CODE 263
+#define DATA 264
+#define SECTIONS 265
+#define EXPORTS 266
+#define IMPORTS 267
+#define VERSIONK 268
+#define BASE 269
+#define CONSTANT 270
+#define READ 271
+#define WRITE 272
+#define EXECUTE 273
+#define SHARED 274
+#define NONSHARED 275
+#define NONAME 276
+#define PRIVATE 277
+#define SINGLE 278
+#define MULTIPLE 279
+#define INITINSTANCE 280
+#define INITGLOBAL 281
+#define TERMINSTANCE 282
+#define TERMGLOBAL 283
+#define ID 284
+#define NUMBER 285
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 1 "defparse.y"
+ /* defparse.y - parser for .def files */
+
+/*  Copyright 1995, 1997, 1998, 1999, 2001, 2004
+    Free Software Foundation, Inc.
+
+    This file is part of GNU Binutils.
+
+    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 2 of the License, 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; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include "bfd.h"
+#include "bucomm.h"
+#include "dlltool.h"
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 27 "defparse.y"
+typedef union YYSTYPE {
+  char *id;
+  int number;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 176 "defparse.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 188 "defparse.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  38
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   114
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  35
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  23
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  68
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  98
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   285
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    33,     2,    31,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,    32,     2,     2,    34,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned char yyprhs[] =
+{
+       0,     0,     3,     6,     8,    12,    17,    20,    23,    27,
+      31,    34,    37,    40,    43,    46,    51,    52,    55,    63,
+      66,    68,    76,    84,    90,    96,   102,   108,   112,   116,
+     119,   121,   124,   128,   130,   132,   133,   136,   137,   139,
+     141,   143,   145,   147,   149,   151,   153,   154,   156,   157,
+     159,   160,   162,   163,   165,   169,   170,   173,   174,   177,
+     182,   183,   187,   188,   189,   193,   195,   197,   199
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      36,     0,    -1,    36,    37,    -1,    37,    -1,     3,    52,
+      55,    -1,     4,    52,    55,    56,    -1,    11,    38,    -1,
+       5,    29,    -1,     6,    30,    46,    -1,     7,    30,    46,
+      -1,     8,    44,    -1,     9,    44,    -1,    10,    42,    -1,
+      12,    40,    -1,    13,    30,    -1,    13,    30,    31,    30,
+      -1,    -1,    38,    39,    -1,    29,    54,    53,    49,    48,
+      50,    51,    -1,    40,    41,    -1,    41,    -1,    29,    32,
+      29,    31,    29,    31,    29,    -1,    29,    32,    29,    31,
+      29,    31,    30,    -1,    29,    32,    29,    31,    29,    -1,
+      29,    32,    29,    31,    30,    -1,    29,    31,    29,    31,
+      29,    -1,    29,    31,    29,    31,    30,    -1,    29,    31,
+      29,    -1,    29,    31,    30,    -1,    42,    43,    -1,    43,
+      -1,    29,    44,    -1,    44,    45,    47,    -1,    47,    -1,
+      33,    -1,    -1,    33,    30,    -1,    -1,    16,    -1,    17,
+      -1,    18,    -1,    19,    -1,    20,    -1,    23,    -1,    24,
+      -1,    15,    -1,    -1,    21,    -1,    -1,     9,    -1,    -1,
+      22,    -1,    -1,    29,    -1,    29,    31,    29,    -1,    -1,
+      34,    30,    -1,    -1,    32,    29,    -1,    32,    29,    31,
+      29,    -1,    -1,    14,    32,    30,    -1,    -1,    -1,    56,
+      45,    57,    -1,    25,    -1,    26,    -1,    27,    -1,    28,
+      -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned char yyrline[] =
+{
+       0,    44,    44,    45,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    64,    66,    70,    74,
+      75,    79,    80,    81,    82,    83,    84,    85,    86,    90,
+      91,    95,    99,   100,   104,   105,   107,   108,   112,   113,
+     114,   115,   116,   117,   118,   122,   123,   127,   128,   132,
+     133,   137,   138,   141,   142,   148,   152,   153,   157,   158,
+     164,   167,   168,   171,   173,   177,   178,   179,   180
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "NAME", "LIBRARY", "DESCRIPTION",
+  "STACKSIZE", "HEAPSIZE", "CODE", "DATA", "SECTIONS", "EXPORTS",
+  "IMPORTS", "VERSIONK", "BASE", "CONSTANT", "READ", "WRITE", "EXECUTE",
+  "SHARED", "NONSHARED", "NONAME", "PRIVATE", "SINGLE", "MULTIPLE",
+  "INITINSTANCE", "INITGLOBAL", "TERMINSTANCE", "TERMGLOBAL", "ID",
+  "NUMBER", "'.'", "'='", "','", "'@'", "$accept", "start", "command",
+  "explist", "expline", "implist", "impline", "seclist", "secline",
+  "attr_list", "opt_comma", "opt_number", "attr", "opt_CONSTANT",
+  "opt_NONAME", "opt_DATA", "opt_PRIVATE", "opt_name", "opt_ordinal",
+  "opt_equal_name", "opt_base", "option_list", "option", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,    46,    61,    44,    64
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    35,    36,    36,    37,    37,    37,    37,    37,    37,
+      37,    37,    37,    37,    37,    37,    38,    38,    39,    40,
+      40,    41,    41,    41,    41,    41,    41,    41,    41,    42,
+      42,    43,    44,    44,    45,    45,    46,    46,    47,    47,
+      47,    47,    47,    47,    47,    48,    48,    49,    49,    50,
+      50,    51,    51,    52,    52,    52,    53,    53,    54,    54,
+      54,    55,    55,    56,    56,    57,    57,    57,    57
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     2,     1,     3,     4,     2,     2,     3,     3,
+       2,     2,     2,     2,     2,     4,     0,     2,     7,     2,
+       1,     7,     7,     5,     5,     5,     5,     3,     3,     2,
+       1,     2,     3,     1,     1,     0,     2,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     1,     0,     1,
+       0,     1,     0,     1,     3,     0,     2,     0,     2,     4,
+       0,     3,     0,     0,     3,     1,     1,     1,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       0,    55,    55,     0,     0,     0,     0,     0,     0,    16,
+       0,     0,     0,     3,    53,    62,    62,     7,    37,    37,
+      38,    39,    40,    41,    42,    43,    44,    10,    33,    11,
+       0,    12,    30,     6,     0,    13,    20,    14,     1,     2,
+       0,     0,     4,    63,     0,     8,     9,    34,     0,    31,
+      29,    60,    17,     0,     0,    19,     0,    54,     0,     5,
+      36,    32,     0,    57,    27,    28,     0,    15,    61,     0,
+      58,     0,    48,     0,     0,    65,    66,    67,    68,    64,
+       0,    56,    47,    46,    25,    26,    23,    24,    59,    45,
+      50,     0,    49,    52,    21,    22,    51,    18
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,    12,    13,    33,    52,    35,    36,    31,    32,    27,
+      48,    45,    28,    90,    83,    93,    97,    15,    72,    63,
+      42,    59,    79
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -26
+static const yysigned_char yypact[] =
+{
+      32,   -12,   -12,    17,    -8,    33,    -4,    -4,    35,   -26,
+      36,    37,    21,   -26,    38,    48,    48,   -26,    39,    39,
+     -26,   -26,   -26,   -26,   -26,   -26,   -26,   -15,   -26,   -15,
+      -4,    35,   -26,    41,   -25,    36,   -26,    40,   -26,   -26,
+      44,    34,   -26,   -26,    45,   -26,   -26,   -26,    -4,   -15,
+     -26,    42,   -26,   -19,    47,   -26,    49,   -26,    50,    22,
+     -26,   -26,    52,    43,    51,   -26,    53,   -26,   -26,    26,
+      54,    56,    57,    27,    29,   -26,   -26,   -26,   -26,   -26,
+      58,   -26,   -26,    68,   -26,   -26,    59,   -26,   -26,   -26,
+      79,    31,   -26,    46,   -26,   -26,   -26,   -26
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yysigned_char yypgoto[] =
+{
+     -26,   -26,    77,   -26,   -26,   -26,    60,   -26,    61,    -7,
+      55,    72,    62,   -26,   -26,   -26,   -26,    91,   -26,   -26,
+      78,   -26,   -26
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -36
+static const yysigned_char yytable[] =
+{
+      29,   -35,   -35,   -35,   -35,   -35,    53,    54,   -35,   -35,
+      64,    65,    20,    21,    22,    23,    24,    14,    47,    25,
+      26,    38,    18,    49,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    17,   -35,   -35,   -35,
+     -35,    75,    76,    77,    78,    47,    84,    85,    86,    87,
+      94,    95,    41,    19,    30,    34,    58,    37,    96,    40,
+      51,    56,    44,    57,    62,    60,    66,    71,    82,    67,
+      68,    70,    73,    89,    74,    80,    81,    88,    92,    39,
+      91,    46,    50,    16,    43,    55,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      61,     0,     0,     0,    69
+};
+
+static const yysigned_char yycheck[] =
+{
+       7,    16,    17,    18,    19,    20,    31,    32,    23,    24,
+      29,    30,    16,    17,    18,    19,    20,    29,    33,    23,
+      24,     0,    30,    30,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    29,    25,    26,    27,
+      28,    25,    26,    27,    28,    33,    29,    30,    29,    30,
+      29,    30,    14,    30,    29,    29,    32,    30,    22,    31,
+      29,    31,    33,    29,    32,    30,    29,    34,    21,    30,
+      30,    29,    31,    15,    31,    31,    30,    29,     9,    12,
+      31,    19,    31,     2,    16,    35,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      48,    -1,    -1,    -1,    59
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    36,    37,    29,    52,    52,    29,    30,    30,
+      16,    17,    18,    19,    20,    23,    24,    44,    47,    44,
+      29,    42,    43,    38,    29,    40,    41,    30,     0,    37,
+      31,    14,    55,    55,    33,    46,    46,    33,    45,    44,
+      43,    29,    39,    31,    32,    41,    31,    29,    32,    56,
+      30,    47,    32,    54,    29,    30,    29,    30,    30,    45,
+      29,    34,    53,    31,    31,    25,    26,    27,    28,    57,
+      31,    30,    21,    49,    29,    30,    29,    30,    29,    15,
+      48,    31,     9,    50,    29,    30,    22,    51
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 4:
+#line 49 "defparse.y"
+    { def_name ((yyvsp[-1].id), (yyvsp[0].number)); }
+    break;
+
+  case 5:
+#line 50 "defparse.y"
+    { def_library ((yyvsp[-2].id), (yyvsp[-1].number)); }
+    break;
+
+  case 7:
+#line 52 "defparse.y"
+    { def_description ((yyvsp[0].id));}
+    break;
+
+  case 8:
+#line 53 "defparse.y"
+    { def_stacksize ((yyvsp[-1].number), (yyvsp[0].number));}
+    break;
+
+  case 9:
+#line 54 "defparse.y"
+    { def_heapsize ((yyvsp[-1].number), (yyvsp[0].number));}
+    break;
+
+  case 10:
+#line 55 "defparse.y"
+    { def_code ((yyvsp[0].number));}
+    break;
+
+  case 11:
+#line 56 "defparse.y"
+    { def_data ((yyvsp[0].number));}
+    break;
+
+  case 14:
+#line 59 "defparse.y"
+    { def_version ((yyvsp[0].number),0);}
+    break;
+
+  case 15:
+#line 60 "defparse.y"
+    { def_version ((yyvsp[-2].number),(yyvsp[0].number));}
+    break;
+
+  case 18:
+#line 71 "defparse.y"
+    { def_exports ((yyvsp[-6].id), (yyvsp[-5].id), (yyvsp[-4].number), (yyvsp[-3].number), (yyvsp[-2].number), (yyvsp[-1].number), (yyvsp[0].number));}
+    break;
+
+  case 21:
+#line 79 "defparse.y"
+    { def_import ((yyvsp[-6].id),(yyvsp[-4].id),(yyvsp[-2].id),(yyvsp[0].id), 0); }
+    break;
+
+  case 22:
+#line 80 "defparse.y"
+    { def_import ((yyvsp[-6].id),(yyvsp[-4].id),(yyvsp[-2].id), 0,(yyvsp[0].number)); }
+    break;
+
+  case 23:
+#line 81 "defparse.y"
+    { def_import ((yyvsp[-4].id),(yyvsp[-2].id), 0,(yyvsp[0].id), 0); }
+    break;
+
+  case 24:
+#line 82 "defparse.y"
+    { def_import ((yyvsp[-4].id),(yyvsp[-2].id), 0, 0,(yyvsp[0].number)); }
+    break;
+
+  case 25:
+#line 83 "defparse.y"
+    { def_import ( 0,(yyvsp[-4].id),(yyvsp[-2].id),(yyvsp[0].id), 0); }
+    break;
+
+  case 26:
+#line 84 "defparse.y"
+    { def_import ( 0,(yyvsp[-4].id),(yyvsp[-2].id), 0,(yyvsp[0].number)); }
+    break;
+
+  case 27:
+#line 85 "defparse.y"
+    { def_import ( 0,(yyvsp[-2].id), 0,(yyvsp[0].id), 0); }
+    break;
+
+  case 28:
+#line 86 "defparse.y"
+    { def_import ( 0,(yyvsp[-2].id), 0, 0,(yyvsp[0].number)); }
+    break;
+
+  case 31:
+#line 95 "defparse.y"
+    { def_section ((yyvsp[-1].id),(yyvsp[0].number));}
+    break;
+
+  case 36:
+#line 107 "defparse.y"
+    { (yyval.number)=(yyvsp[0].number);}
+    break;
+
+  case 37:
+#line 108 "defparse.y"
+    { (yyval.number)=-1;}
+    break;
+
+  case 38:
+#line 112 "defparse.y"
+    { (yyval.number) = 1; }
+    break;
+
+  case 39:
+#line 113 "defparse.y"
+    { (yyval.number) = 2; }
+    break;
+
+  case 40:
+#line 114 "defparse.y"
+    { (yyval.number) = 4; }
+    break;
+
+  case 41:
+#line 115 "defparse.y"
+    { (yyval.number) = 8; }
+    break;
+
+  case 42:
+#line 116 "defparse.y"
+    { (yyval.number) = 0; }
+    break;
+
+  case 43:
+#line 117 "defparse.y"
+    { (yyval.number) = 0; }
+    break;
+
+  case 44:
+#line 118 "defparse.y"
+    { (yyval.number) = 0; }
+    break;
+
+  case 45:
+#line 122 "defparse.y"
+    {(yyval.number)=1;}
+    break;
+
+  case 46:
+#line 123 "defparse.y"
+    {(yyval.number)=0;}
+    break;
+
+  case 47:
+#line 127 "defparse.y"
+    {(yyval.number)=1;}
+    break;
+
+  case 48:
+#line 128 "defparse.y"
+    {(yyval.number)=0;}
+    break;
+
+  case 49:
+#line 132 "defparse.y"
+    { (yyval.number) = 1; }
+    break;
+
+  case 50:
+#line 133 "defparse.y"
+    { (yyval.number) = 0; }
+    break;
+
+  case 51:
+#line 137 "defparse.y"
+    { (yyval.number) = 1; }
+    break;
+
+  case 52:
+#line 138 "defparse.y"
+    { (yyval.number) = 0; }
+    break;
+
+  case 53:
+#line 141 "defparse.y"
+    { (yyval.id) =(yyvsp[0].id); }
+    break;
+
+  case 54:
+#line 143 "defparse.y"
+    { 
+	    char *name = xmalloc (strlen ((yyvsp[-2].id)) + 1 + strlen ((yyvsp[0].id)) + 1);
+	    sprintf (name, "%s.%s", (yyvsp[-2].id), (yyvsp[0].id));
+	    (yyval.id) = name;
+	  }
+    break;
+
+  case 55:
+#line 148 "defparse.y"
+    { (yyval.id)=""; }
+    break;
+
+  case 56:
+#line 152 "defparse.y"
+    { (yyval.number)=(yyvsp[0].number);}
+    break;
+
+  case 57:
+#line 153 "defparse.y"
+    { (yyval.number)=-1;}
+    break;
+
+  case 58:
+#line 157 "defparse.y"
+    { (yyval.id) = (yyvsp[0].id); }
+    break;
+
+  case 59:
+#line 159 "defparse.y"
+    { 
+	    char *name = xmalloc (strlen ((yyvsp[-2].id)) + 1 + strlen ((yyvsp[0].id)) + 1);
+	    sprintf (name, "%s.%s", (yyvsp[-2].id), (yyvsp[0].id));
+	    (yyval.id) = name;
+	  }
+    break;
+
+  case 60:
+#line 164 "defparse.y"
+    { (yyval.id) =  0; }
+    break;
+
+  case 61:
+#line 167 "defparse.y"
+    { (yyval.number)= (yyvsp[0].number);}
+    break;
+
+  case 62:
+#line 168 "defparse.y"
+    { (yyval.number)=-1;}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1510 "defparse.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+

Added: branches/binutils/package/binutils/defparse.h
===================================================================
--- branches/binutils/package/binutils/defparse.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/defparse.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,111 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     NAME = 258,
+     LIBRARY = 259,
+     DESCRIPTION = 260,
+     STACKSIZE = 261,
+     HEAPSIZE = 262,
+     CODE = 263,
+     DATA = 264,
+     SECTIONS = 265,
+     EXPORTS = 266,
+     IMPORTS = 267,
+     VERSIONK = 268,
+     BASE = 269,
+     CONSTANT = 270,
+     READ = 271,
+     WRITE = 272,
+     EXECUTE = 273,
+     SHARED = 274,
+     NONSHARED = 275,
+     NONAME = 276,
+     PRIVATE = 277,
+     SINGLE = 278,
+     MULTIPLE = 279,
+     INITINSTANCE = 280,
+     INITGLOBAL = 281,
+     TERMINSTANCE = 282,
+     TERMGLOBAL = 283,
+     ID = 284,
+     NUMBER = 285
+   };
+#endif
+/* Tokens.  */
+#define NAME 258
+#define LIBRARY 259
+#define DESCRIPTION 260
+#define STACKSIZE 261
+#define HEAPSIZE 262
+#define CODE 263
+#define DATA 264
+#define SECTIONS 265
+#define EXPORTS 266
+#define IMPORTS 267
+#define VERSIONK 268
+#define BASE 269
+#define CONSTANT 270
+#define READ 271
+#define WRITE 272
+#define EXECUTE 273
+#define SHARED 274
+#define NONSHARED 275
+#define NONAME 276
+#define PRIVATE 277
+#define SINGLE 278
+#define MULTIPLE 279
+#define INITINSTANCE 280
+#define INITGLOBAL 281
+#define TERMINSTANCE 282
+#define TERMGLOBAL 283
+#define ID 284
+#define NUMBER 285
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 27 "defparse.y"
+typedef union YYSTYPE {
+  char *id;
+  int number;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 103 "defparse.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Modified: branches/binutils/package/binutils/doc/Makefile.am
===================================================================
--- branches/binutils/package/binutils/doc/Makefile.am	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/Makefile.am	2006-12-31 16:27:59 UTC (rev 19)
@@ -8,7 +8,7 @@
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
 
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 
 POD2MAN = pod2man --center="GNU Development Tools" \
 	 --release="binutils-$(VERSION)" --section=1
@@ -34,106 +34,108 @@
 binutils_TEXINFOS = config.texi
 binutils_TEXI = $(srcdir)/binutils.texi
 
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+
 config.texi: $(srcdir)/../../bfd/configure $(binutils_TEXI)
 	rm -f config.texi
 	eval `grep '^ *VERSION=' $(srcdir)/../../bfd/configure`; \
 	  echo "@set VERSION $$VERSION" > $@
 	echo "@set UPDATED `date "+%B %Y"`" >> config.texi
-	echo "@set top_srcdir $(top_srcdir)" >> config.texi
 
 # Man page generation from texinfo
-addr2line.1:	$(binutils_TEXI)
+addr2line.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
 	-($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f addr2line.pod
 
-ar.1:	$(binutils_TEXI)
+ar.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
 	-($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f ar.pod
 
-dlltool.1:	$(binutils_TEXI)
+dlltool.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
 	-($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f dlltool.pod
 
-nlmconv.1:	$(binutils_TEXI)
+nlmconv.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
 	-($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f nlmconv.pod
 
-nm.1:	$(binutils_TEXI)
+nm.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
 	-($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f nm.pod
 
-objcopy.1:	$(binutils_TEXI)
+objcopy.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
 	-($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f objcopy.pod
 
-objdump.1:	$(binutils_TEXI)
+objdump.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
 	-($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f objdump.pod
 
-ranlib.1:	$(binutils_TEXI)
+ranlib.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
 	-($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f ranlib.pod
 
-readelf.1:	$(binutils_TEXI)
+readelf.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
 	-($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f readelf.pod
 
-size.1:	$(binutils_TEXI)
+size.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
 	-($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f size.pod
 
-strings.1:	$(binutils_TEXI)
+strings.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
 	-($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f strings.pod
 
-strip.1:	$(binutils_TEXI)
+strip.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
 	-($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f strip.pod
 
-windres.1:	$(binutils_TEXI)
+windres.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
 	-($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f windres.pod
 
-cxxfilt.man:	$(binutils_TEXI)
+cxxfilt.man:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
 	-($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \

Modified: branches/binutils/package/binutils/doc/Makefile.in
===================================================================
--- branches/binutils/package/binutils/doc/Makefile.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/Makefile.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -61,11 +61,6 @@
 PSS = binutils.ps
 HTMLS = binutils.html
 TEXINFOS = binutils.texi
-TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then \
-             echo $(top_srcdir)/../texinfo/util/texi2dvi; \
-           else \
-             echo texi2dvi; \
-           fi`
 TEXI2PDF = $(TEXI2DVI) --pdf --batch
 MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
@@ -217,7 +212,7 @@
 
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 POD2MAN = pod2man --center="GNU Development Tools" \
 	 --release="binutils-$(VERSION)" --section=1
 
@@ -242,6 +237,8 @@
 info_TEXINFOS = binutils.texi
 binutils_TEXINFOS = config.texi
 binutils_TEXI = $(srcdir)/binutils.texi
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
 MAINTAINERCLEANFILES = config.texi
 MOSTLYCLEANFILES = $(DEMANGLER_NAME).1
 html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
@@ -292,9 +289,11 @@
 	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	am__cwd=`pwd` && cd $(srcdir) && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
-	for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-	  if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-	done; \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
 	cd "$$am__cwd"; \
 	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
 	 -o $@ $<; \
@@ -336,6 +335,7 @@
 binutils.pdf: binutils.texi $(binutils_TEXINFOS)
 binutils.html: binutils.texi $(binutils_TEXINFOS)
 .dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	$(DVIPS) -o $@ $<
 
 uninstall-info-am:
@@ -574,101 +574,100 @@
 	eval `grep '^ *VERSION=' $(srcdir)/../../bfd/configure`; \
 	  echo "@set VERSION $$VERSION" > $@
 	echo "@set UPDATED `date "+%B %Y"`" >> config.texi
-	echo "@set top_srcdir $(top_srcdir)" >> config.texi
 
 # Man page generation from texinfo
-addr2line.1:	$(binutils_TEXI)
+addr2line.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
 	-($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f addr2line.pod
 
-ar.1:	$(binutils_TEXI)
+ar.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
 	-($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f ar.pod
 
-dlltool.1:	$(binutils_TEXI)
+dlltool.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
 	-($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f dlltool.pod
 
-nlmconv.1:	$(binutils_TEXI)
+nlmconv.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
 	-($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f nlmconv.pod
 
-nm.1:	$(binutils_TEXI)
+nm.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
 	-($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f nm.pod
 
-objcopy.1:	$(binutils_TEXI)
+objcopy.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
 	-($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f objcopy.pod
 
-objdump.1:	$(binutils_TEXI)
+objdump.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
 	-($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f objdump.pod
 
-ranlib.1:	$(binutils_TEXI)
+ranlib.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
 	-($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f ranlib.pod
 
-readelf.1:	$(binutils_TEXI)
+readelf.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
 	-($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f readelf.pod
 
-size.1:	$(binutils_TEXI)
+size.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
 	-($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f size.pod
 
-strings.1:	$(binutils_TEXI)
+strings.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
 	-($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f strings.pod
 
-strip.1:	$(binutils_TEXI)
+strip.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
 	-($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f strip.pod
 
-windres.1:	$(binutils_TEXI)
+windres.1:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
 	-($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
 		mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
 	rm -f windres.pod
 
-cxxfilt.man:	$(binutils_TEXI)
+cxxfilt.man:	$(binutils_TEXI) $(binutils_TEXINFOS)
 	touch $@
 	-$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
 	-($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \

Added: branches/binutils/package/binutils/doc/addr2line.1
===================================================================
--- branches/binutils/package/binutils/doc/addr2line.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/addr2line.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,265 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "ADDR2LINE 1"
+.TH ADDR2LINE 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+addr2line \- convert addresses into file names and line numbers.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+addr2line [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR]
+          [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]]
+          [\fB\-e\fR \fIfilename\fR|\fB\-\-exe=\fR\fIfilename\fR]
+          [\fB\-f\fR|\fB\-\-functions\fR] [\fB\-s\fR|\fB\-\-basename\fR]
+          [\fB\-i\fR|\fB\-\-inlines\fR]
+          [\fB\-j\fR|\fB\-\-section=\fR\fIname\fR]
+          [\fB\-H\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
+          [addr addr ...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBaddr2line\fR translates addresses into file names and line numbers.
+Given an address in an executable or an offset in a section of a relocatable
+object, it uses the debugging information to figure out which file name and
+line number are associated with it.
+.PP
+The executable or relocatable object to use is specified with the \fB\-e\fR
+option.  The default is the file \fIa.out\fR.  The section in the relocatable
+object to use is specified with the \fB\-j\fR option.
+.PP
+\&\fBaddr2line\fR has two modes of operation.
+.PP
+In the first, hexadecimal addresses are specified on the command line,
+and \fBaddr2line\fR displays the file name and line number for each
+address.
+.PP
+In the second, \fBaddr2line\fR reads hexadecimal addresses from
+standard input, and prints the file name and line number for each
+address on standard output.  In this mode, \fBaddr2line\fR may be used
+in a pipe to convert dynamically chosen addresses.
+.PP
+The format of the output is \fB\s-1FILENAME:LINENO\s0\fR.  The file name and
+line number for each address is printed on a separate line.  If the
+\&\fB\-f\fR option is used, then each \fB\s-1FILENAME:LINENO\s0\fR line is
+preceded by a \fB\s-1FUNCTIONNAME\s0\fR line which is the name of the function
+containing the address.
+.PP
+If the file name or function name can not be determined,
+\&\fBaddr2line\fR will print two question marks in their place.  If the
+line number can not be determined, \fBaddr2line\fR will print 0.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The long and short forms of options, shown here as alternatives, are
+equivalent.
+.IP "\fB\-b\fR \fIbfdname\fR" 4
+.IX Item "-b bfdname"
+.PD 0
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+.PD
+Specify that the object-code format for the object files is
+\&\fIbfdname\fR.
+.IP "\fB\-C\fR" 4
+.IX Item "-C"
+.PD 0
+.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
+.IX Item "--demangle[=style]"
+.PD
+Decode (\fIdemangle\fR) low-level symbol names into user-level names.
+Besides removing any initial underscore prepended by the system, this
+makes \*(C+ function names readable.  Different compilers have different
+mangling styles. The optional demangling style argument can be used to 
+choose an appropriate demangling style for your compiler. 
+.IP "\fB\-e\fR \fIfilename\fR" 4
+.IX Item "-e filename"
+.PD 0
+.IP "\fB\-\-exe=\fR\fIfilename\fR" 4
+.IX Item "--exe=filename"
+.PD
+Specify the name of the executable for which addresses should be
+translated.  The default file is \fIa.out\fR.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+.PD 0
+.IP "\fB\-\-functions\fR" 4
+.IX Item "--functions"
+.PD
+Display function names as well as file and line number information.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-basenames\fR" 4
+.IX Item "--basenames"
+.PD
+Display only the base of each file name.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+.PD 0
+.IP "\fB\-\-inlines\fR" 4
+.IX Item "--inlines"
+.PD
+If the address belongs to a function that was inlined, the source
+information for all enclosing scopes back to the first non-inlined
+function will also be printed.  For example, if \f(CW\*(C`main\*(C'\fR inlines
+\&\f(CW\*(C`callee1\*(C'\fR which inlines \f(CW\*(C`callee2\*(C'\fR, and address is from
+\&\f(CW\*(C`callee2\*(C'\fR, the source information for \f(CW\*(C`callee1\*(C'\fR and \f(CW\*(C`main\*(C'\fR
+will also be printed.
+.IP "\fB\-j\fR" 4
+.IX Item "-j"
+.PD 0
+.IP "\fB\-\-section\fR" 4
+.IX Item "--section"
+.PD
+Read offsets relative to the specified section instead of absolute addresses.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/ar.1
===================================================================
--- branches/binutils/package/binutils/doc/ar.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/ar.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,390 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "AR 1"
+.TH AR 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+ar \- create, modify, and extract from archives
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ar [\fB\-X32_64\fR] [\fB\-\fR]\fIp\fR[\fImod\fR [\fIrelpos\fR] [\fIcount\fR]] \fIarchive\fR [\fImember\fR...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \s-1GNU\s0 \fBar\fR program creates, modifies, and extracts from
+archives.  An \fIarchive\fR is a single file holding a collection of
+other files in a structure that makes it possible to retrieve
+the original individual files (called \fImembers\fR of the archive).
+.PP
+The original files' contents, mode (permissions), timestamp, owner, and
+group are preserved in the archive, and can be restored on
+extraction.  
+.PP
+\&\s-1GNU\s0 \fBar\fR can maintain archives whose members have names of any
+length; however, depending on how \fBar\fR is configured on your
+system, a limit on member-name length may be imposed for compatibility
+with archive formats maintained with other tools.  If it exists, the
+limit is often 15 characters (typical of formats related to a.out) or 16
+characters (typical of formats related to coff).
+.PP
+\&\fBar\fR is considered a binary utility because archives of this sort
+are most often used as \fIlibraries\fR holding commonly needed
+subroutines.
+.PP
+\&\fBar\fR creates an index to the symbols defined in relocatable
+object modules in the archive when you specify the modifier \fBs\fR.
+Once created, this index is updated in the archive whenever \fBar\fR
+makes a change to its contents (save for the \fBq\fR update operation).
+An archive with such an index speeds up linking to the library, and
+allows routines in the library to call each other without regard to
+their placement in the archive.
+.PP
+You may use \fBnm \-s\fR or \fBnm \-\-print\-armap\fR to list this index
+table.  If an archive lacks the table, another form of \fBar\fR called
+\&\fBranlib\fR can be used to add just the table.
+.PP
+\&\s-1GNU\s0 \fBar\fR is designed to be compatible with two different
+facilities.  You can control its activity using command-line options,
+like the different varieties of \fBar\fR on Unix systems; or, if you
+specify the single command-line option \fB\-M\fR, you can control it
+with a script supplied via standard input, like the \s-1MRI\s0 \*(L"librarian\*(R"
+program.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+\&\s-1GNU\s0 \fBar\fR allows you to mix the operation code \fIp\fR and modifier
+flags \fImod\fR in any order, within the first command-line argument.
+.PP
+If you wish, you may begin the first command-line argument with a
+dash.
+.PP
+The \fIp\fR keyletter specifies what operation to execute; it may be
+any of the following, but you must specify only one of them:
+.IP "\fBd\fR" 4
+.IX Item "d"
+\&\fIDelete\fR modules from the archive.  Specify the names of modules to
+be deleted as \fImember\fR...; the archive is untouched if you
+specify no files to delete.
+.Sp
+If you specify the \fBv\fR modifier, \fBar\fR lists each module
+as it is deleted.
+.IP "\fBm\fR" 4
+.IX Item "m"
+Use this operation to \fImove\fR members in an archive.
+.Sp
+The ordering of members in an archive can make a difference in how
+programs are linked using the library, if a symbol is defined in more
+than one member.  
+.Sp
+If no modifiers are used with \f(CW\*(C`m\*(C'\fR, any members you name in the
+\&\fImember\fR arguments are moved to the \fIend\fR of the archive;
+you can use the \fBa\fR, \fBb\fR, or \fBi\fR modifiers to move them to a
+specified place instead.
+.IP "\fBp\fR" 4
+.IX Item "p"
+\&\fIPrint\fR the specified members of the archive, to the standard
+output file.  If the \fBv\fR modifier is specified, show the member
+name before copying its contents to standard output.
+.Sp
+If you specify no \fImember\fR arguments, all the files in the archive are
+printed.
+.IP "\fBq\fR" 4
+.IX Item "q"
+\&\fIQuick append\fR; Historically, add the files \fImember\fR... to the end of
+\&\fIarchive\fR, without checking for replacement.
+.Sp
+The modifiers \fBa\fR, \fBb\fR, and \fBi\fR do \fInot\fR affect this
+operation; new members are always placed at the end of the archive.
+.Sp
+The modifier \fBv\fR makes \fBar\fR list each file as it is appended.
+.Sp
+Since the point of this operation is speed, the archive's symbol table
+index is not updated, even if it already existed; you can use \fBar s\fR or
+\&\fBranlib\fR explicitly to update the symbol table index.
+.Sp
+However, too many different systems assume quick append rebuilds the
+index, so \s-1GNU\s0 \fBar\fR implements \fBq\fR as a synonym for \fBr\fR.
+.IP "\fBr\fR" 4
+.IX Item "r"
+Insert the files \fImember\fR... into \fIarchive\fR (with
+\&\fIreplacement\fR). This operation differs from \fBq\fR in that any
+previously existing members are deleted if their names match those being
+added.
+.Sp
+If one of the files named in \fImember\fR... does not exist, \fBar\fR
+displays an error message, and leaves undisturbed any existing members
+of the archive matching that name.
+.Sp
+By default, new members are added at the end of the file; but you may
+use one of the modifiers \fBa\fR, \fBb\fR, or \fBi\fR to request
+placement relative to some existing member.
+.Sp
+The modifier \fBv\fR used with this operation elicits a line of
+output for each file inserted, along with one of the letters \fBa\fR or
+\&\fBr\fR to indicate whether the file was appended (no old member
+deleted) or replaced.
+.IP "\fBt\fR" 4
+.IX Item "t"
+Display a \fItable\fR listing the contents of \fIarchive\fR, or those
+of the files listed in \fImember\fR... that are present in the
+archive.  Normally only the member name is shown; if you also want to
+see the modes (permissions), timestamp, owner, group, and size, you can
+request that by also specifying the \fBv\fR modifier.
+.Sp
+If you do not specify a \fImember\fR, all files in the archive
+are listed.
+.Sp
+If there is more than one file with the same name (say, \fBfie\fR) in
+an archive (say \fBb.a\fR), \fBar t b.a fie\fR lists only the
+first instance; to see them all, you must ask for a complete
+listing\-\-\-in our example, \fBar t b.a\fR.
+.IP "\fBx\fR" 4
+.IX Item "x"
+\&\fIExtract\fR members (named \fImember\fR) from the archive.  You can
+use the \fBv\fR modifier with this operation, to request that
+\&\fBar\fR list each name as it extracts it.
+.Sp
+If you do not specify a \fImember\fR, all files in the archive
+are extracted.
+.PP
+A number of modifiers (\fImod\fR) may immediately follow the \fIp\fR
+keyletter, to specify variations on an operation's behavior:
+.IP "\fBa\fR" 4
+.IX Item "a"
+Add new files \fIafter\fR an existing member of the
+archive.  If you use the modifier \fBa\fR, the name of an existing archive
+member must be present as the \fIrelpos\fR argument, before the
+\&\fIarchive\fR specification.
+.IP "\fBb\fR" 4
+.IX Item "b"
+Add new files \fIbefore\fR an existing member of the
+archive.  If you use the modifier \fBb\fR, the name of an existing archive
+member must be present as the \fIrelpos\fR argument, before the
+\&\fIarchive\fR specification.  (same as \fBi\fR).
+.IP "\fBc\fR" 4
+.IX Item "c"
+\&\fICreate\fR the archive.  The specified \fIarchive\fR is always
+created if it did not exist, when you request an update.  But a warning is
+issued unless you specify in advance that you expect to create it, by
+using this modifier.
+.IP "\fBf\fR" 4
+.IX Item "f"
+Truncate names in the archive.  \s-1GNU\s0 \fBar\fR will normally permit file
+names of any length.  This will cause it to create archives which are
+not compatible with the native \fBar\fR program on some systems.  If
+this is a concern, the \fBf\fR modifier may be used to truncate file
+names when putting them in the archive.
+.IP "\fBi\fR" 4
+.IX Item "i"
+Insert new files \fIbefore\fR an existing member of the
+archive.  If you use the modifier \fBi\fR, the name of an existing archive
+member must be present as the \fIrelpos\fR argument, before the
+\&\fIarchive\fR specification.  (same as \fBb\fR).
+.IP "\fBl\fR" 4
+.IX Item "l"
+This modifier is accepted but not used.
+.IP "\fBN\fR" 4
+.IX Item "N"
+Uses the \fIcount\fR parameter.  This is used if there are multiple
+entries in the archive with the same name.  Extract or delete instance
+\&\fIcount\fR of the given name from the archive.
+.IP "\fBo\fR" 4
+.IX Item "o"
+Preserve the \fIoriginal\fR dates of members when extracting them.  If
+you do not specify this modifier, files extracted from the archive
+are stamped with the time of extraction.
+.IP "\fBP\fR" 4
+.IX Item "P"
+Use the full path name when matching names in the archive.  \s-1GNU\s0
+\&\fBar\fR can not create an archive with a full path name (such archives
+are not \s-1POSIX\s0 complaint), but other archive creators can.  This option
+will cause \s-1GNU\s0 \fBar\fR to match file names using a complete path
+name, which can be convenient when extracting a single file from an
+archive created by another tool.
+.IP "\fBs\fR" 4
+.IX Item "s"
+Write an object-file index into the archive, or update an existing one,
+even if no other change is made to the archive.  You may use this modifier
+flag either with any operation, or alone.  Running \fBar s\fR on an
+archive is equivalent to running \fBranlib\fR on it.
+.IP "\fBS\fR" 4
+.IX Item "S"
+Do not generate an archive symbol table.  This can speed up building a
+large library in several steps.  The resulting archive can not be used
+with the linker.  In order to build a symbol table, you must omit the
+\&\fBS\fR modifier on the last execution of \fBar\fR, or you must run
+\&\fBranlib\fR on the archive.
+.IP "\fBu\fR" 4
+.IX Item "u"
+Normally, \fBar r\fR... inserts all files
+listed into the archive.  If you would like to insert \fIonly\fR those
+of the files you list that are newer than existing members of the same
+names, use this modifier.  The \fBu\fR modifier is allowed only for the
+operation \fBr\fR (replace).  In particular, the combination \fBqu\fR is
+not allowed, since checking the timestamps would lose any speed
+advantage from the operation \fBq\fR.
+.IP "\fBv\fR" 4
+.IX Item "v"
+This modifier requests the \fIverbose\fR version of an operation.  Many
+operations display additional information, such as filenames processed,
+when the modifier \fBv\fR is appended.
+.IP "\fBV\fR" 4
+.IX Item "V"
+This modifier shows the version number of \fBar\fR.
+.PP
+\&\fBar\fR ignores an initial option spelt \fB\-X32_64\fR, for
+compatibility with \s-1AIX\s0.  The behaviour produced by this option is the
+default for \s-1GNU\s0 \fBar\fR.  \fBar\fR does not support any of the other
+\&\fB\-X\fR options; in particular, it does not support \fB\-X32\fR
+which is the default for \s-1AIX\s0 \fBar\fR.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fInm\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/binutils.info
===================================================================
--- branches/binutils/package/binutils/doc/binutils.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/binutils.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3835 @@
+This is ../.././binutils/doc/binutils.info, produced by makeinfo
+version 4.8 from ../.././binutils/doc/binutils.texi.
+
+START-INFO-DIR-ENTRY
+* Binutils: (binutils).         The GNU binary utilities.
+* ar: (binutils)ar.               Create, modify, and extract from archives
+* nm: (binutils)nm.               List symbols from object files
+* objcopy: (binutils)objcopy.	  Copy and translate object files
+* objdump: (binutils)objdump.     Display information from object files
+* ranlib: (binutils)ranlib.       Generate index to archive contents
+* readelf: (binutils)readelf.	  Display the contents of ELF format files.
+* size: (binutils)size.           List section sizes and total size
+* strings: (binutils)strings.     List printable strings from files
+* strip: (binutils)strip.         Discard symbols
+* c++filt: (binutils)c++filt.	  Filter to demangle encoded C++ symbols
+* cxxfilt: (binutils)c++filt.     MS-DOS name for c++filt
+* addr2line: (binutils)addr2line. Convert addresses to file and line
+* nlmconv: (binutils)nlmconv.     Converts object code into an NLM
+* windres: (binutils)windres.	  Manipulate Windows resources
+* dlltool: (binutils)dlltool.	  Create files needed to build and use DLLs
+END-INFO-DIR-ENTRY
+
+   Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 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".
+
+
+File: binutils.info,  Node: Top,  Next: ar,  Up: (dir)
+
+Introduction
+************
+
+This brief manual contains documentation for the GNU binary utilities
+(collectively version 2.17):
+
+   This document is distributed under the terms of the GNU Free
+Documentation License.  A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+* Menu:
+
+* ar::                          Create, modify, and extract from archives
+* nm::                          List symbols from object files
+* objcopy::			Copy and translate object files
+* objdump::                     Display information from object files
+* ranlib::                      Generate index to archive contents
+* readelf::			Display the contents of ELF format files.
+* size::                        List section sizes and total size
+* strings::                     List printable strings from files
+* strip::                       Discard symbols
+* c++filt::			Filter to demangle encoded C++ symbols
+* cxxfilt: c++filt.             MS-DOS name for c++filt
+* addr2line::			Convert addresses to file and line
+* nlmconv::                     Converts object code into an NLM
+* windres::			Manipulate Windows resources
+* dlltool::			Create files needed to build and use DLLs
+* Common Options::              Command-line options for all utilities
+* Selecting The Target System:: How these utilities determine the target.
+* Reporting Bugs::              Reporting Bugs
+* GNU Free Documentation License::  GNU Free Documentation License
+* Index::                       Index
+
+
+File: binutils.info,  Node: ar,  Next: nm,  Prev: Top,  Up: Top
+
+1 ar
+****
+
+     ar [-]P[MOD [RELPOS] [COUNT]] ARCHIVE [MEMBER...]
+     ar -M [ <mri-script ]
+
+   The GNU `ar' program creates, modifies, and extracts from archives.
+An "archive" is a single file holding a collection of other files in a
+structure that makes it possible to retrieve the original individual
+files (called "members" of the archive).
+
+   The original files' contents, mode (permissions), timestamp, owner,
+and group are preserved in the archive, and can be restored on
+extraction.
+
+   GNU `ar' can maintain archives whose members have names of any
+length; however, depending on how `ar' is configured on your system, a
+limit on member-name length may be imposed for compatibility with
+archive formats maintained with other tools.  If it exists, the limit
+is often 15 characters (typical of formats related to a.out) or 16
+characters (typical of formats related to coff).
+
+   `ar' is considered a binary utility because archives of this sort
+are most often used as "libraries" holding commonly needed subroutines.
+
+   `ar' creates an index to the symbols defined in relocatable object
+modules in the archive when you specify the modifier `s'.  Once
+created, this index is updated in the archive whenever `ar' makes a
+change to its contents (save for the `q' update operation).  An archive
+with such an index speeds up linking to the library, and allows
+routines in the library to call each other without regard to their
+placement in the archive.
+
+   You may use `nm -s' or `nm --print-armap' to list this index table.
+If an archive lacks the table, another form of `ar' called `ranlib' can
+be used to add just the table.
+
+   GNU `ar' is designed to be compatible with two different facilities.
+You can control its activity using command-line options, like the
+different varieties of `ar' on Unix systems; or, if you specify the
+single command-line option `-M', you can control it with a script
+supplied via standard input, like the MRI "librarian" program.
+
+* Menu:
+
+* ar cmdline::                  Controlling `ar' on the command line
+* ar scripts::                  Controlling `ar' with a script
+
+
+File: binutils.info,  Node: ar cmdline,  Next: ar scripts,  Up: ar
+
+1.1 Controlling `ar' on the Command Line
+========================================
+
+     ar [`-X32_64'] [`-']P[MOD [RELPOS] [COUNT]] ARCHIVE [MEMBER...]
+
+   When you use `ar' in the Unix style, `ar' insists on at least two
+arguments to execute: one keyletter specifying the _operation_
+(optionally accompanied by other keyletters specifying _modifiers_),
+and the archive name to act on.
+
+   Most operations can also accept further MEMBER arguments, specifying
+particular files to operate on.
+
+   GNU `ar' allows you to mix the operation code P and modifier flags
+MOD in any order, within the first command-line argument.
+
+   If you wish, you may begin the first command-line argument with a
+dash.
+
+   The P keyletter specifies what operation to execute; it may be any
+of the following, but you must specify only one of them:
+
+`d'
+     _Delete_ modules from the archive.  Specify the names of modules to
+     be deleted as MEMBER...; the archive is untouched if you specify
+     no files to delete.
+
+     If you specify the `v' modifier, `ar' lists each module as it is
+     deleted.
+
+`m'
+     Use this operation to _move_ members in an archive.
+
+     The ordering of members in an archive can make a difference in how
+     programs are linked using the library, if a symbol is defined in
+     more than one member.
+
+     If no modifiers are used with `m', any members you name in the
+     MEMBER arguments are moved to the _end_ of the archive; you can
+     use the `a', `b', or `i' modifiers to move them to a specified
+     place instead.
+
+`p'
+     _Print_ the specified members of the archive, to the standard
+     output file.  If the `v' modifier is specified, show the member
+     name before copying its contents to standard output.
+
+     If you specify no MEMBER arguments, all the files in the archive
+     are printed.
+
+`q'
+     _Quick append_; Historically, add the files MEMBER... to the end of
+     ARCHIVE, without checking for replacement.
+
+     The modifiers `a', `b', and `i' do _not_ affect this operation;
+     new members are always placed at the end of the archive.
+
+     The modifier `v' makes `ar' list each file as it is appended.
+
+     Since the point of this operation is speed, the archive's symbol
+     table index is not updated, even if it already existed; you can
+     use `ar s' or `ranlib' explicitly to update the symbol table index.
+
+     However, too many different systems assume quick append rebuilds
+     the index, so GNU `ar' implements `q' as a synonym for `r'.
+
+`r'
+     Insert the files MEMBER... into ARCHIVE (with _replacement_). This
+     operation differs from `q' in that any previously existing members
+     are deleted if their names match those being added.
+
+     If one of the files named in MEMBER... does not exist, `ar'
+     displays an error message, and leaves undisturbed any existing
+     members of the archive matching that name.
+
+     By default, new members are added at the end of the file; but you
+     may use one of the modifiers `a', `b', or `i' to request placement
+     relative to some existing member.
+
+     The modifier `v' used with this operation elicits a line of output
+     for each file inserted, along with one of the letters `a' or `r'
+     to indicate whether the file was appended (no old member deleted)
+     or replaced.
+
+`t'
+     Display a _table_ listing the contents of ARCHIVE, or those of the
+     files listed in MEMBER... that are present in the archive.
+     Normally only the member name is shown; if you also want to see
+     the modes (permissions), timestamp, owner, group, and size, you can
+     request that by also specifying the `v' modifier.
+
+     If you do not specify a MEMBER, all files in the archive are
+     listed.
+
+     If there is more than one file with the same name (say, `fie') in
+     an archive (say `b.a'), `ar t b.a fie' lists only the first
+     instance; to see them all, you must ask for a complete listing--in
+     our example, `ar t b.a'.
+
+`x'
+     _Extract_ members (named MEMBER) from the archive.  You can use
+     the `v' modifier with this operation, to request that `ar' list
+     each name as it extracts it.
+
+     If you do not specify a MEMBER, all files in the archive are
+     extracted.
+
+
+   A number of modifiers (MOD) may immediately follow the P keyletter,
+to specify variations on an operation's behavior:
+
+`a'
+     Add new files _after_ an existing member of the archive.  If you
+     use the modifier `a', the name of an existing archive member must
+     be present as the RELPOS argument, before the ARCHIVE
+     specification.
+
+`b'
+     Add new files _before_ an existing member of the archive.  If you
+     use the modifier `b', the name of an existing archive member must
+     be present as the RELPOS argument, before the ARCHIVE
+     specification.  (same as `i').
+
+`c'
+     _Create_ the archive.  The specified ARCHIVE is always created if
+     it did not exist, when you request an update.  But a warning is
+     issued unless you specify in advance that you expect to create it,
+     by using this modifier.
+
+`f'
+     Truncate names in the archive.  GNU `ar' will normally permit file
+     names of any length.  This will cause it to create archives which
+     are not compatible with the native `ar' program on some systems.
+     If this is a concern, the `f' modifier may be used to truncate file
+     names when putting them in the archive.
+
+`i'
+     Insert new files _before_ an existing member of the archive.  If
+     you use the modifier `i', the name of an existing archive member
+     must be present as the RELPOS argument, before the ARCHIVE
+     specification.  (same as `b').
+
+`l'
+     This modifier is accepted but not used.
+
+`N'
+     Uses the COUNT parameter.  This is used if there are multiple
+     entries in the archive with the same name.  Extract or delete
+     instance COUNT of the given name from the archive.
+
+`o'
+     Preserve the _original_ dates of members when extracting them.  If
+     you do not specify this modifier, files extracted from the archive
+     are stamped with the time of extraction.
+
+`P'
+     Use the full path name when matching names in the archive.  GNU
+     `ar' can not create an archive with a full path name (such archives
+     are not POSIX complaint), but other archive creators can.  This
+     option will cause GNU `ar' to match file names using a complete
+     path name, which can be convenient when extracting a single file
+     from an archive created by another tool.
+
+`s'
+     Write an object-file index into the archive, or update an existing
+     one, even if no other change is made to the archive.  You may use
+     this modifier flag either with any operation, or alone.  Running
+     `ar s' on an archive is equivalent to running `ranlib' on it.
+
+`S'
+     Do not generate an archive symbol table.  This can speed up
+     building a large library in several steps.  The resulting archive
+     can not be used with the linker.  In order to build a symbol
+     table, you must omit the `S' modifier on the last execution of
+     `ar', or you must run `ranlib' on the archive.
+
+`u'
+     Normally, `ar r'... inserts all files listed into the archive.  If
+     you would like to insert _only_ those of the files you list that
+     are newer than existing members of the same names, use this
+     modifier.  The `u' modifier is allowed only for the operation `r'
+     (replace).  In particular, the combination `qu' is not allowed,
+     since checking the timestamps would lose any speed advantage from
+     the operation `q'.
+
+`v'
+     This modifier requests the _verbose_ version of an operation.  Many
+     operations display additional information, such as filenames
+     processed, when the modifier `v' is appended.
+
+`V'
+     This modifier shows the version number of `ar'.
+
+   `ar' ignores an initial option spelt `-X32_64', for compatibility
+with AIX.  The behaviour produced by this option is the default for GNU
+`ar'.  `ar' does not support any of the other `-X' options; in
+particular, it does not support `-X32' which is the default for AIX
+`ar'.
+
+
+File: binutils.info,  Node: ar scripts,  Prev: ar cmdline,  Up: ar
+
+1.2 Controlling `ar' with a Script
+==================================
+
+     ar -M [ <SCRIPT ]
+
+   If you use the single command-line option `-M' with `ar', you can
+control its operation with a rudimentary command language.  This form
+of `ar' operates interactively if standard input is coming directly
+from a terminal.  During interactive use, `ar' prompts for input (the
+prompt is `AR >'), and continues executing even after errors.  If you
+redirect standard input to a script file, no prompts are issued, and
+`ar' abandons execution (with a nonzero exit code) on any error.
+
+   The `ar' command language is _not_ designed to be equivalent to the
+command-line options; in fact, it provides somewhat less control over
+archives.  The only purpose of the command language is to ease the
+transition to GNU `ar' for developers who already have scripts written
+for the MRI "librarian" program.
+
+   The syntax for the `ar' command language is straightforward:
+   * commands are recognized in upper or lower case; for example, `LIST'
+     is the same as `list'.  In the following descriptions, commands are
+     shown in upper case for clarity.
+
+   * a single command may appear on each line; it is the first word on
+     the line.
+
+   * empty lines are allowed, and have no effect.
+
+   * comments are allowed; text after either of the characters `*' or
+     `;' is ignored.
+
+   * Whenever you use a list of names as part of the argument to an `ar'
+     command, you can separate the individual names with either commas
+     or blanks.  Commas are shown in the explanations below, for
+     clarity.
+
+   * `+' is used as a line continuation character; if `+' appears at
+     the end of a line, the text on the following line is considered
+     part of the current command.
+
+   Here are the commands you can use in `ar' scripts, or when using
+`ar' interactively.  Three of them have special significance:
+
+   `OPEN' or `CREATE' specify a "current archive", which is a temporary
+file required for most of the other commands.
+
+   `SAVE' commits the changes so far specified by the script.  Prior to
+`SAVE', commands affect only the temporary copy of the current archive.
+
+`ADDLIB ARCHIVE'
+`ADDLIB ARCHIVE (MODULE, MODULE, ... MODULE)'
+     Add all the contents of ARCHIVE (or, if specified, each named
+     MODULE from ARCHIVE) to the current archive.
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+`ADDMOD MEMBER, MEMBER, ... MEMBER'
+     Add each named MEMBER as a module in the current archive.
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+`CLEAR'
+     Discard the contents of the current archive, canceling the effect
+     of any operations since the last `SAVE'.  May be executed (with no
+     effect) even if  no current archive is specified.
+
+`CREATE ARCHIVE'
+     Creates an archive, and makes it the current archive (required for
+     many other commands).  The new archive is created with a temporary
+     name; it is not actually saved as ARCHIVE until you use `SAVE'.
+     You can overwrite existing archives; similarly, the contents of any
+     existing file named ARCHIVE will not be destroyed until `SAVE'.
+
+`DELETE MODULE, MODULE, ... MODULE'
+     Delete each listed MODULE from the current archive; equivalent to
+     `ar -d ARCHIVE MODULE ... MODULE'.
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+`DIRECTORY ARCHIVE (MODULE, ... MODULE)'
+`DIRECTORY ARCHIVE (MODULE, ... MODULE) OUTPUTFILE'
+     List each named MODULE present in ARCHIVE.  The separate command
+     `VERBOSE' specifies the form of the output: when verbose output is
+     off, output is like that of `ar -t ARCHIVE MODULE...'.  When
+     verbose output is on, the listing is like `ar -tv ARCHIVE
+     MODULE...'.
+
+     Output normally goes to the standard output stream; however, if you
+     specify OUTPUTFILE as a final argument, `ar' directs the output to
+     that file.
+
+`END'
+     Exit from `ar', with a `0' exit code to indicate successful
+     completion.  This command does not save the output file; if you
+     have changed the current archive since the last `SAVE' command,
+     those changes are lost.
+
+`EXTRACT MODULE, MODULE, ... MODULE'
+     Extract each named MODULE from the current archive, writing them
+     into the current directory as separate files.  Equivalent to `ar -x
+     ARCHIVE MODULE...'.
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+`LIST'
+     Display full contents of the current archive, in "verbose" style
+     regardless of the state of `VERBOSE'.  The effect is like `ar tv
+     ARCHIVE'.  (This single command is a GNU `ar' enhancement, rather
+     than present for MRI compatibility.)
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+`OPEN ARCHIVE'
+     Opens an existing archive for use as the current archive (required
+     for many other commands).  Any changes as the result of subsequent
+     commands will not actually affect ARCHIVE until you next use
+     `SAVE'.
+
+`REPLACE MODULE, MODULE, ... MODULE'
+     In the current archive, replace each existing MODULE (named in the
+     `REPLACE' arguments) from files in the current working directory.
+     To execute this command without errors, both the file, and the
+     module in the current archive, must exist.
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+`VERBOSE'
+     Toggle an internal flag governing the output from `DIRECTORY'.
+     When the flag is on, `DIRECTORY' output matches output from `ar
+     -tv '....
+
+`SAVE'
+     Commit your changes to the current archive, and actually save it
+     as a file with the name specified in the last `CREATE' or `OPEN'
+     command.
+
+     Requires prior use of `OPEN' or `CREATE'.
+
+
+
+File: binutils.info,  Node: nm,  Next: objcopy,  Prev: ar,  Up: Top
+
+2 nm
+****
+
+     nm [`-a'|`--debug-syms'] [`-g'|`--extern-only']
+        [`-B'] [`-C'|`--demangle'[=STYLE]] [`-D'|`--dynamic']
+        [`-S'|`--print-size'] [`-s'|`--print-armap']
+        [`-A'|`-o'|`--print-file-name'][`--special-syms']
+        [`-n'|`-v'|`--numeric-sort'] [`-p'|`--no-sort']
+        [`-r'|`--reverse-sort'] [`--size-sort'] [`-u'|`--undefined-only']
+        [`-t' RADIX|`--radix='RADIX] [`-P'|`--portability']
+        [`--target='BFDNAME] [`-f'FORMAT|`--format='FORMAT]
+        [`--defined-only'] [`-l'|`--line-numbers'] [`--no-demangle']
+        [`-V'|`--version'] [`-X 32_64'] [`--help']  [OBJFILE...]
+
+   GNU `nm' lists the symbols from object files OBJFILE....  If no
+object files are listed as arguments, `nm' assumes the file `a.out'.
+
+   For each symbol, `nm' shows:
+
+   * The symbol value, in the radix selected by options (see below), or
+     hexadecimal by default.
+
+   * The symbol type.  At least the following types are used; others
+     are, as well, depending on the object file format.  If lowercase,
+     the symbol is local; if uppercase, the symbol is global (external).
+
+    `A'
+          The symbol's value is absolute, and will not be changed by
+          further linking.
+
+    `B'
+          The symbol is in the uninitialized data section (known as
+          BSS).
+
+    `C'
+          The symbol is common.  Common symbols are uninitialized data.
+          When linking, multiple common symbols may appear with the
+          same name.  If the symbol is defined anywhere, the common
+          symbols are treated as undefined references.  For more
+          details on common symbols, see the discussion of -warn-common
+          in *Note Linker options: (ld.info)Options.
+
+    `D'
+          The symbol is in the initialized data section.
+
+    `G'
+          The symbol is in an initialized data section for small
+          objects.  Some object file formats permit more efficient
+          access to small data objects, such as a global int variable
+          as opposed to a large global array.
+
+    `I'
+          The symbol is an indirect reference to another symbol.  This
+          is a GNU extension to the a.out object file format which is
+          rarely used.
+
+    `N'
+          The symbol is a debugging symbol.
+
+    `R'
+          The symbol is in a read only data section.
+
+    `S'
+          The symbol is in an uninitialized data section for small
+          objects.
+
+    `T'
+          The symbol is in the text (code) section.
+
+    `U'
+          The symbol is undefined.
+
+    `V'
+          The symbol is a weak object.  When a weak defined symbol is
+          linked with a normal defined symbol, the normal defined
+          symbol is used with no error.  When a weak undefined symbol
+          is linked and the symbol is not defined, the value of the
+          weak symbol becomes zero with no error.
+
+    `W'
+          The symbol is a weak symbol that has not been specifically
+          tagged as a weak object symbol.  When a weak defined symbol
+          is linked with a normal defined symbol, the normal defined
+          symbol is used with no error.  When a weak undefined symbol
+          is linked and the symbol is not defined, the value of the
+          symbol is determined in a system-specific manner without
+          error.  On some systems, uppercase indicates that a default
+          value has been specified.
+
+    `-'
+          The symbol is a stabs symbol in an a.out object file.  In
+          this case, the next values printed are the stabs other field,
+          the stabs desc field, and the stab type.  Stabs symbols are
+          used to hold debugging information.  For more information,
+          see *Note Stabs: (stabs.info)Top.
+
+    `?'
+          The symbol type is unknown, or object file format specific.
+
+   * The symbol name.
+
+   The long and short forms of options, shown here as alternatives, are
+equivalent.
+
+`-A'
+`-o'
+`--print-file-name'
+     Precede each symbol by the name of the input file (or archive
+     member) in which it was found, rather than identifying the input
+     file once only, before all of its symbols.
+
+`-a'
+`--debug-syms'
+     Display all symbols, even debugger-only symbols; normally these
+     are not listed.
+
+`-B'
+     The same as `--format=bsd' (for compatibility with the MIPS `nm').
+
+`-C'
+`--demangle[=STYLE]'
+     Decode ("demangle") low-level symbol names into user-level names.
+     Besides removing any initial underscore prepended by the system,
+     this makes C++ function names readable. Different compilers have
+     different mangling styles. The optional demangling style argument
+     can be used to choose an appropriate demangling style for your
+     compiler. *Note c++filt::, for more information on demangling.
+
+`--no-demangle'
+     Do not demangle low-level symbol names.  This is the default.
+
+`-D'
+`--dynamic'
+     Display the dynamic symbols rather than the normal symbols.  This
+     is only meaningful for dynamic objects, such as certain types of
+     shared libraries.
+
+`-f FORMAT'
+`--format=FORMAT'
+     Use the output format FORMAT, which can be `bsd', `sysv', or
+     `posix'.  The default is `bsd'.  Only the first character of
+     FORMAT is significant; it can be either upper or lower case.
+
+`-g'
+`--extern-only'
+     Display only external symbols.
+
+`-l'
+`--line-numbers'
+     For each symbol, use debugging information to try to find a
+     filename and line number.  For a defined symbol, look for the line
+     number of the address of the symbol.  For an undefined symbol,
+     look for the line number of a relocation entry which refers to the
+     symbol.  If line number information can be found, print it after
+     the other symbol information.
+
+`-n'
+`-v'
+`--numeric-sort'
+     Sort symbols numerically by their addresses, rather than
+     alphabetically by their names.
+
+`-p'
+`--no-sort'
+     Do not bother to sort the symbols in any order; print them in the
+     order encountered.
+
+`-P'
+`--portability'
+     Use the POSIX.2 standard output format instead of the default
+     format.  Equivalent to `-f posix'.
+
+`-S'
+`--print-size'
+     Print size, not the value, of defined symbols for the `bsd' output
+     format.
+
+`-s'
+`--print-armap'
+     When listing symbols from archive members, include the index: a
+     mapping (stored in the archive by `ar' or `ranlib') of which
+     modules contain definitions for which names.
+
+`-r'
+`--reverse-sort'
+     Reverse the order of the sort (whether numeric or alphabetic); let
+     the last come first.
+
+`--size-sort'
+     Sort symbols by size.  The size is computed as the difference
+     between the value of the symbol and the value of the symbol with
+     the next higher value.  If the `bsd' output format is used the
+     size of the symbol is printed, rather than the value, and `-S'
+     must be used in order both size and value to be printed.
+
+`--special-syms'
+     Display symbols which have a target-specific special meaning.
+     These symbols are usually used by the target for some special
+     processing and are not normally helpful when included included in
+     the normal symbol lists.  For example for ARM targets this option
+     would skip the mapping symbols used to mark transistions between
+     ARM code, THUMB code and data.
+
+`-t RADIX'
+`--radix=RADIX'
+     Use RADIX as the radix for printing the symbol values.  It must be
+     `d' for decimal, `o' for octal, or `x' for hexadecimal.
+
+`--target=BFDNAME'
+     Specify an object code format other than your system's default
+     format.  *Note Target Selection::, for more information.
+
+`-u'
+`--undefined-only'
+     Display only undefined symbols (those external to each object
+     file).
+
+`--defined-only'
+     Display only defined symbols for each object file.
+
+`-V'
+`--version'
+     Show the version number of `nm' and exit.
+
+`-X'
+     This option is ignored for compatibility with the AIX version of
+     `nm'.  It takes one parameter which must be the string `32_64'.
+     The default mode of AIX `nm' corresponds to `-X 32', which is not
+     supported by GNU `nm'.
+
+`--help'
+     Show a summary of the options to `nm' and exit.
+
+
+File: binutils.info,  Node: objcopy,  Next: objdump,  Prev: nm,  Up: Top
+
+3 objcopy
+*********
+
+     objcopy [`-F' BFDNAME|`--target='BFDNAME]
+             [`-I' BFDNAME|`--input-target='BFDNAME]
+             [`-O' BFDNAME|`--output-target='BFDNAME]
+             [`-B' BFDARCH|`--binary-architecture='BFDARCH]
+             [`-S'|`--strip-all']
+             [`-g'|`--strip-debug']
+             [`-K' SYMBOLNAME|`--keep-symbol='SYMBOLNAME]
+             [`-N' SYMBOLNAME|`--strip-symbol='SYMBOLNAME]
+             [`--strip-unneeded-symbol='SYMBOLNAME]
+             [`-G' SYMBOLNAME|`--keep-global-symbol='SYMBOLNAME]
+             [`-L' SYMBOLNAME|`--localize-symbol='SYMBOLNAME]
+             [`--globalize-symbol='SYMBOLNAME]
+             [`-W' SYMBOLNAME|`--weaken-symbol='SYMBOLNAME]
+             [`-w'|`--wildcard']
+             [`-x'|`--discard-all']
+             [`-X'|`--discard-locals']
+             [`-b' BYTE|`--byte='BYTE]
+             [`-i' INTERLEAVE|`--interleave='INTERLEAVE]
+             [`-j' SECTIONNAME|`--only-section='SECTIONNAME]
+             [`-R' SECTIONNAME|`--remove-section='SECTIONNAME]
+             [`-p'|`--preserve-dates']
+             [`--debugging']
+             [`--gap-fill='VAL]
+             [`--pad-to='ADDRESS]
+             [`--set-start='VAL]
+             [`--adjust-start='INCR]
+             [`--change-addresses='INCR]
+             [`--change-section-address' SECTION{=,+,-}VAL]
+             [`--change-section-lma' SECTION{=,+,-}VAL]
+             [`--change-section-vma' SECTION{=,+,-}VAL]
+             [`--change-warnings'] [`--no-change-warnings']
+             [`--set-section-flags' SECTION=FLAGS]
+             [`--add-section' SECTIONNAME=FILENAME]
+             [`--rename-section' OLDNAME=NEWNAME[,FLAGS]]
+             [`--change-leading-char'] [`--remove-leading-char']
+             [`--srec-len='IVAL] [`--srec-forceS3']
+             [`--redefine-sym' OLD=NEW]
+             [`--redefine-syms='FILENAME]
+             [`--weaken']
+             [`--keep-symbols='FILENAME]
+             [`--strip-symbols='FILENAME]
+             [`--strip-unneeded-symbols='FILENAME]
+             [`--keep-global-symbols='FILENAME]
+             [`--localize-symbols='FILENAME]
+             [`--globalize-symbols='FILENAME]
+             [`--weaken-symbols='FILENAME]
+             [`--alt-machine-code='INDEX]
+             [`--prefix-symbols='STRING]
+             [`--prefix-sections='STRING]
+             [`--prefix-alloc-sections='STRING]
+             [`--add-gnu-debuglink='PATH-TO-FILE]
+             [`--keep-file-symbols']
+             [`--only-keep-debug']
+             [`--writable-text']
+             [`--readonly-text']
+             [`--pure']
+             [`--impure']
+             [`-v'|`--verbose']
+             [`-V'|`--version']
+             [`--help'] [`--info']
+             INFILE [OUTFILE]
+
+   The GNU `objcopy' utility copies the contents of an object file to
+another.  `objcopy' uses the GNU BFD Library to read and write the
+object files.  It can write the destination object file in a format
+different from that of the source object file.  The exact behavior of
+`objcopy' is controlled by command-line options.  Note that `objcopy'
+should be able to copy a fully linked file between any two formats.
+However, copying a relocatable object file between any two formats may
+not work as expected.
+
+   `objcopy' creates temporary files to do its translations and deletes
+them afterward.  `objcopy' uses BFD to do all its translation work; it
+has access to all the formats described in BFD and thus is able to
+recognize most formats without being told explicitly.  *Note BFD:
+(ld.info)BFD.
+
+   `objcopy' can be used to generate S-records by using an output
+target of `srec' (e.g., use `-O srec').
+
+   `objcopy' can be used to generate a raw binary file by using an
+output target of `binary' (e.g., use `-O binary').  When `objcopy'
+generates a raw binary file, it will essentially produce a memory dump
+of the contents of the input object file.  All symbols and relocation
+information will be discarded.  The memory dump will start at the load
+address of the lowest section copied into the output file.
+
+   When generating an S-record or a raw binary file, it may be helpful
+to use `-S' to remove sections containing debugging information.  In
+some cases `-R' will be useful to remove sections which contain
+information that is not needed by the binary file.
+
+   Note--`objcopy' is not able to change the endianness of its input
+files.  If the input format has an endianness (some formats do not),
+`objcopy' can only copy the inputs into file formats that have the same
+endianness or which have no endianness (e.g., `srec').
+
+`INFILE'
+`OUTFILE'
+     The input and output files, respectively.  If you do not specify
+     OUTFILE, `objcopy' creates a temporary file and destructively
+     renames the result with the name of INFILE.
+
+`-I BFDNAME'
+`--input-target=BFDNAME'
+     Consider the source file's object format to be BFDNAME, rather than
+     attempting to deduce it.  *Note Target Selection::, for more
+     information.
+
+`-O BFDNAME'
+`--output-target=BFDNAME'
+     Write the output file using the object format BFDNAME.  *Note
+     Target Selection::, for more information.
+
+`-F BFDNAME'
+`--target=BFDNAME'
+     Use BFDNAME as the object format for both the input and the output
+     file; i.e., simply transfer data from source to destination with no
+     translation.  *Note Target Selection::, for more information.
+
+`-B BFDARCH'
+`--binary-architecture=BFDARCH'
+     Useful when transforming a raw binary input file into an object
+     file.  In this case the output architecture can be set to BFDARCH.
+     This option will be ignored if the input file has a known BFDARCH.
+     You can access this binary data inside a program by referencing
+     the special symbols that are created by the conversion process.
+     These symbols are called _binary_OBJFILE_start,
+     _binary_OBJFILE_end and _binary_OBJFILE_size.  e.g. you can
+     transform a picture file into an object file and then access it in
+     your code using these symbols.
+
+`-j SECTIONNAME'
+`--only-section=SECTIONNAME'
+     Copy only the named section from the input file to the output file.
+     This option may be given more than once.  Note that using this
+     option inappropriately may make the output file unusable.
+
+`-R SECTIONNAME'
+`--remove-section=SECTIONNAME'
+     Remove any section named SECTIONNAME from the output file.  This
+     option may be given more than once.  Note that using this option
+     inappropriately may make the output file unusable.
+
+`-S'
+`--strip-all'
+     Do not copy relocation and symbol information from the source file.
+
+`-g'
+`--strip-debug'
+     Do not copy debugging symbols or sections from the source file.
+
+`--strip-unneeded'
+     Strip all symbols that are not needed for relocation processing.
+
+`-K SYMBOLNAME'
+`--keep-symbol=SYMBOLNAME'
+     When stripping symbols, keep symbol SYMBOLNAME even if it would
+     normally be stripped.  This option may be given more than once.
+
+`-N SYMBOLNAME'
+`--strip-symbol=SYMBOLNAME'
+     Do not copy symbol SYMBOLNAME from the source file.  This option
+     may be given more than once.
+
+`--strip-unneeded-symbol=SYMBOLNAME'
+     Do not copy symbol SYMBOLNAME from the source file unless it is
+     needed by a relocation.  This option may be given more than once.
+
+`-G SYMBOLNAME'
+`--keep-global-symbol=SYMBOLNAME'
+     Keep only symbol SYMBOLNAME global.  Make all other symbols local
+     to the file, so that they are not visible externally.  This option
+     may be given more than once.
+
+`-L SYMBOLNAME'
+`--localize-symbol=SYMBOLNAME'
+     Make symbol SYMBOLNAME local to the file, so that it is not
+     visible externally.  This option may be given more than once.
+
+`-W SYMBOLNAME'
+`--weaken-symbol=SYMBOLNAME'
+     Make symbol SYMBOLNAME weak. This option may be given more than
+     once.
+
+`--globalize-symbol=SYMBOLNAME'
+     Give symbol SYMBOLNAME global scoping so that it is visible
+     outside of the file in which it is defined.  This option may be
+     given more than once.
+
+`-w'
+`--wildcard'
+     Permit regular expressions in SYMBOLNAMEs used in other command
+     line options.  The question mark (?), asterisk (*), backslash (\)
+     and square brackets ([]) operators can be used anywhere in the
+     symbol name.  If the first character of the symbol name is the
+     exclamation point (!) then the sense of the switch is reversed for
+     that symbol.  For example:
+
+            -w -W !foo -W fo*
+
+     would cause objcopy to weaken all symbols that start with "fo"
+     except for the symbol "foo".
+
+`-x'
+`--discard-all'
+     Do not copy non-global symbols from the source file.
+
+`-X'
+`--discard-locals'
+     Do not copy compiler-generated local symbols.  (These usually
+     start with `L' or `.'.)
+
+`-b BYTE'
+`--byte=BYTE'
+     Keep only every BYTEth byte of the input file (header data is not
+     affected).  BYTE can be in the range from 0 to INTERLEAVE-1, where
+     INTERLEAVE is given by the `-i' or `--interleave' option, or the
+     default of 4.  This option is useful for creating files to program
+     ROM.  It is typically used with an `srec' output target.
+
+`-i INTERLEAVE'
+`--interleave=INTERLEAVE'
+     Only copy one out of every INTERLEAVE bytes.  Select which byte to
+     copy with the `-b' or `--byte' option.  The default is 4.
+     `objcopy' ignores this option if you do not specify either `-b' or
+     `--byte'.
+
+`-p'
+`--preserve-dates'
+     Set the access and modification dates of the output file to be the
+     same as those of the input file.
+
+`--debugging'
+     Convert debugging information, if possible.  This is not the
+     default because only certain debugging formats are supported, and
+     the conversion process can be time consuming.
+
+`--gap-fill VAL'
+     Fill gaps between sections with VAL.  This operation applies to
+     the _load address_ (LMA) of the sections.  It is done by increasing
+     the size of the section with the lower address, and filling in the
+     extra space created with VAL.
+
+`--pad-to ADDRESS'
+     Pad the output file up to the load address ADDRESS.  This is done
+     by increasing the size of the last section.  The extra space is
+     filled in with the value specified by `--gap-fill' (default zero).
+
+`--set-start VAL'
+     Set the start address of the new file to VAL.  Not all object file
+     formats support setting the start address.
+
+`--change-start INCR'
+`--adjust-start INCR'
+     Change the start address by adding INCR.  Not all object file
+     formats support setting the start address.
+
+`--change-addresses INCR'
+`--adjust-vma INCR'
+     Change the VMA and LMA addresses of all sections, as well as the
+     start address, by adding INCR.  Some object file formats do not
+     permit section addresses to be changed arbitrarily.  Note that
+     this does not relocate the sections; if the program expects
+     sections to be loaded at a certain address, and this option is
+     used to change the sections such that they are loaded at a
+     different address, the program may fail.
+
+`--change-section-address SECTION{=,+,-}VAL'
+`--adjust-section-vma SECTION{=,+,-}VAL'
+     Set or change both the VMA address and the LMA address of the named
+     SECTION.  If `=' is used, the section address is set to VAL.
+     Otherwise, VAL is added to or subtracted from the section address.
+     See the comments under `--change-addresses', above. If SECTION
+     does not exist in the input file, a warning will be issued, unless
+     `--no-change-warnings' is used.
+
+`--change-section-lma SECTION{=,+,-}VAL'
+     Set or change the LMA address of the named SECTION.  The LMA
+     address is the address where the section will be loaded into
+     memory at program load time.  Normally this is the same as the VMA
+     address, which is the address of the section at program run time,
+     but on some systems, especially those where a program is held in
+     ROM, the two can be different.  If `=' is used, the section
+     address is set to VAL.  Otherwise, VAL is added to or subtracted
+     from the section address.  See the comments under
+     `--change-addresses', above.  If SECTION does not exist in the
+     input file, a warning will be issued, unless
+     `--no-change-warnings' is used.
+
+`--change-section-vma SECTION{=,+,-}VAL'
+     Set or change the VMA address of the named SECTION.  The VMA
+     address is the address where the section will be located once the
+     program has started executing.  Normally this is the same as the
+     LMA address, which is the address where the section will be loaded
+     into memory, but on some systems, especially those where a program
+     is held in ROM, the two can be different.  If `=' is used, the
+     section address is set to VAL.  Otherwise, VAL is added to or
+     subtracted from the section address.  See the comments under
+     `--change-addresses', above.  If SECTION does not exist in the
+     input file, a warning will be issued, unless
+     `--no-change-warnings' is used.
+
+`--change-warnings'
+`--adjust-warnings'
+     If `--change-section-address' or `--change-section-lma' or
+     `--change-section-vma' is used, and the named section does not
+     exist, issue a warning.  This is the default.
+
+`--no-change-warnings'
+`--no-adjust-warnings'
+     Do not issue a warning if `--change-section-address' or
+     `--adjust-section-lma' or `--adjust-section-vma' is used, even if
+     the named section does not exist.
+
+`--set-section-flags SECTION=FLAGS'
+     Set the flags for the named section.  The FLAGS argument is a
+     comma separated string of flag names.  The recognized names are
+     `alloc', `contents', `load', `noload', `readonly', `code', `data',
+     `rom', `share', and `debug'.  You can set the `contents' flag for
+     a section which does not have contents, but it is not meaningful
+     to clear the `contents' flag of a section which does have
+     contents-just remove the section instead.  Not all flags are
+     meaningful for all object file formats.
+
+`--add-section SECTIONNAME=FILENAME'
+     Add a new section named SECTIONNAME while copying the file.  The
+     contents of the new section are taken from the file FILENAME.  The
+     size of the section will be the size of the file.  This option only
+     works on file formats which can support sections with arbitrary
+     names.
+
+`--rename-section OLDNAME=NEWNAME[,FLAGS]'
+     Rename a section from OLDNAME to NEWNAME, optionally changing the
+     section's flags to FLAGS in the process.  This has the advantage
+     over usng a linker script to perform the rename in that the output
+     stays as an object file and does not become a linked executable.
+
+     This option is particularly helpful when the input format is
+     binary, since this will always create a section called .data.  If
+     for example, you wanted instead to create a section called .rodata
+     containing binary data you could use the following command line to
+     achieve it:
+
+            objcopy -I binary -O <output_format> -B <architecture> \
+             --rename-section .data=.rodata,alloc,load,readonly,data,contents \
+             <input_binary_file> <output_object_file>
+
+`--change-leading-char'
+     Some object file formats use special characters at the start of
+     symbols.  The most common such character is underscore, which
+     compilers often add before every symbol.  This option tells
+     `objcopy' to change the leading character of every symbol when it
+     converts between object file formats.  If the object file formats
+     use the same leading character, this option has no effect.
+     Otherwise, it will add a character, or remove a character, or
+     change a character, as appropriate.
+
+`--remove-leading-char'
+     If the first character of a global symbol is a special symbol
+     leading character used by the object file format, remove the
+     character.  The most common symbol leading character is
+     underscore.  This option will remove a leading underscore from all
+     global symbols.  This can be useful if you want to link together
+     objects of different file formats with different conventions for
+     symbol names.  This is different from `--change-leading-char'
+     because it always changes the symbol name when appropriate,
+     regardless of the object file format of the output file.
+
+`--srec-len=IVAL'
+     Meaningful only for srec output.  Set the maximum length of the
+     Srecords being produced to IVAL.  This length covers both address,
+     data and crc fields.
+
+`--srec-forceS3'
+     Meaningful only for srec output.  Avoid generation of S1/S2
+     records, creating S3-only record format.
+
+`--redefine-sym OLD=NEW'
+     Change the name of a symbol OLD, to NEW.  This can be useful when
+     one is trying link two things together for which you have no
+     source, and there are name collisions.
+
+`--redefine-syms=FILENAME'
+     Apply `--redefine-sym' to each symbol pair "OLD NEW" listed in the
+     file FILENAME.  FILENAME is simply a flat file, with one symbol
+     pair per line.  Line comments may be introduced by the hash
+     character.  This option may be given more than once.
+
+`--weaken'
+     Change all global symbols in the file to be weak.  This can be
+     useful when building an object which will be linked against other
+     objects using the `-R' option to the linker.  This option is only
+     effective when using an object file format which supports weak
+     symbols.
+
+`--keep-symbols=FILENAME'
+     Apply `--keep-symbol' option to each symbol listed in the file
+     FILENAME.  FILENAME is simply a flat file, with one symbol name
+     per line.  Line comments may be introduced by the hash character.
+     This option may be given more than once.
+
+`--strip-symbols=FILENAME'
+     Apply `--strip-symbol' option to each symbol listed in the file
+     FILENAME.  FILENAME is simply a flat file, with one symbol name
+     per line.  Line comments may be introduced by the hash character.
+     This option may be given more than once.
+
+`--strip-unneeded-symbols=FILENAME'
+     Apply `--strip-unneeded-symbol' option to each symbol listed in
+     the file FILENAME.  FILENAME is simply a flat file, with one
+     symbol name per line.  Line comments may be introduced by the hash
+     character.  This option may be given more than once.
+
+`--keep-global-symbols=FILENAME'
+     Apply `--keep-global-symbol' option to each symbol listed in the
+     file FILENAME.  FILENAME is simply a flat file, with one symbol
+     name per line.  Line comments may be introduced by the hash
+     character.  This option may be given more than once.
+
+`--localize-symbols=FILENAME'
+     Apply `--localize-symbol' option to each symbol listed in the file
+     FILENAME.  FILENAME is simply a flat file, with one symbol name
+     per line.  Line comments may be introduced by the hash character.
+     This option may be given more than once.
+
+`--globalize-symbols=FILENAME'
+     Apply `--globalize-symbol' option to each symbol listed in the file
+     FILENAME.  FILENAME is simply a flat file, with one symbol name
+     per line.  Line comments may be introduced by the hash character.
+     This option may be given more than once.
+
+`--weaken-symbols=FILENAME'
+     Apply `--weaken-symbol' option to each symbol listed in the file
+     FILENAME.  FILENAME is simply a flat file, with one symbol name
+     per line.  Line comments may be introduced by the hash character.
+     This option may be given more than once.
+
+`--alt-machine-code=INDEX'
+     If the output architecture has alternate machine codes, use the
+     INDEXth code instead of the default one.  This is useful in case a
+     machine is assigned an official code and the tool-chain adopts the
+     new code, but other applications still depend on the original code
+     being used.  For ELF based architectures if the INDEX alternative
+     does not exist then the value is treated as an absolute number to
+     be stored in the e_machine field of the ELF header.
+
+`--writable-text'
+     Mark the output text as writable.  This option isn't meaningful
+     for all object file formats.
+
+`--readonly-text'
+     Make the output text write protected.  This option isn't
+     meaningful for all object file formats.
+
+`--pure'
+     Mark the output file as demand paged.  This option isn't
+     meaningful for all object file formats.
+
+`--impure'
+     Mark the output file as impure.  This option isn't meaningful for
+     all object file formats.
+
+`--prefix-symbols=STRING'
+     Prefix all symbols in the output file with STRING.
+
+`--prefix-sections=STRING'
+     Prefix all section names in the output file with STRING.
+
+`--prefix-alloc-sections=STRING'
+     Prefix all the names of all allocated sections in the output file
+     with STRING.
+
+`--add-gnu-debuglink=PATH-TO-FILE'
+     Creates a .gnu_debuglink section which contains a reference to
+     PATH-TO-FILE and adds it to the output file.
+
+`--keep-file-symbols'
+     When stripping a file, perhaps with `--strip-debug' or
+     `--strip-unneeded', retain any symbols specifying source file
+     names, which would otherwise get stripped.
+
+`--only-keep-debug'
+     Strip a file, removing contents of any sections that would not be
+     stripped by `--strip-debug' and leaving the debugging sections
+     intact.
+
+     The intention is that this option will be used in conjunction with
+     `--add-gnu-debuglink' to create a two part executable.  One a
+     stripped binary which will occupy less space in RAM and in a
+     distribution and the second a debugging information file which is
+     only needed if debugging abilities are required.  The suggested
+     procedure to create these files is as follows:
+
+       1. Link the executable as normal.  Assuming that is is called
+          `foo' then...
+
+       2. Run `objcopy --only-keep-debug foo foo.dbg' to create a file
+          containing the debugging info.
+
+       3. Run `objcopy --strip-debug foo' to create a stripped
+          executable.
+
+       4. Run `objcopy --add-gnu-debuglink=foo.dbg foo' to add a link
+          to the debugging info into the stripped executable.
+
+     Note - the choice of `.dbg' as an extension for the debug info
+     file is arbitrary.  Also the `--only-keep-debug' step is optional.
+     You could instead do this:
+
+       1. Link the executable as normal.
+
+       2. Copy `foo' to  `foo.full'
+
+       3. Run `objcopy --strip-debug foo'
+
+       4. Run `objcopy --add-gnu-debuglink=foo.full foo'
+
+     i.e. the file pointed to by the `--add-gnu-debuglink' can be the
+     full executable.  It does not have to be a file created by the
+     `--only-keep-debug' switch.
+
+`-V'
+`--version'
+     Show the version number of `objcopy'.
+
+`-v'
+`--verbose'
+     Verbose output: list all object files modified.  In the case of
+     archives, `objcopy -V' lists all members of the archive.
+
+`--help'
+     Show a summary of the options to `objcopy'.
+
+`--info'
+     Display a list showing all architectures and object formats
+     available.
+
+
+File: binutils.info,  Node: objdump,  Next: ranlib,  Prev: objcopy,  Up: Top
+
+4 objdump
+*********
+
+     objdump [`-a'|`--archive-headers']
+             [`-b' BFDNAME|`--target=BFDNAME']
+             [`-C'|`--demangle'[=STYLE] ]
+             [`-d'|`--disassemble']
+             [`-D'|`--disassemble-all']
+             [`-z'|`--disassemble-zeroes']
+             [`-EB'|`-EL'|`--endian='{big | little }]
+             [`-f'|`--file-headers']
+             [`--file-start-context']
+             [`-g'|`--debugging']
+             [`-e'|`--debugging-tags']
+             [`-h'|`--section-headers'|`--headers']
+             [`-i'|`--info']
+             [`-j' SECTION|`--section='SECTION]
+             [`-l'|`--line-numbers']
+             [`-S'|`--source']
+             [`-m' MACHINE|`--architecture='MACHINE]
+             [`-M' OPTIONS|`--disassembler-options='OPTIONS]
+             [`-p'|`--private-headers']
+             [`-r'|`--reloc']
+             [`-R'|`--dynamic-reloc']
+             [`-s'|`--full-contents']
+             [`-W'|`--dwarf']
+             [`-G'|`--stabs']
+             [`-t'|`--syms']
+             [`-T'|`--dynamic-syms']
+             [`-x'|`--all-headers']
+             [`-w'|`--wide']
+             [`--start-address='ADDRESS]
+             [`--stop-address='ADDRESS]
+             [`--prefix-addresses']
+             [`--[no-]show-raw-insn']
+             [`--adjust-vma='OFFSET]
+             [`--special-syms']
+             [`-V'|`--version']
+             [`-H'|`--help']
+             OBJFILE...
+
+   `objdump' displays information about one or more object files.  The
+options control what particular information to display.  This
+information is mostly useful to programmers who are working on the
+compilation tools, as opposed to programmers who just want their
+program to compile and work.
+
+   OBJFILE... are the object files to be examined.  When you specify
+archives, `objdump' shows information on each of the member object
+files.
+
+   The long and short forms of options, shown here as alternatives, are
+equivalent.  At least one option from the list
+`-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-r,-R,-s,-S,-t,-T,-V,-x' must be given.
+
+`-a'
+`--archive-header'
+     If any of the OBJFILE files are archives, display the archive
+     header information (in a format similar to `ls -l').  Besides the
+     information you could list with `ar tv', `objdump -a' shows the
+     object file format of each archive member.
+
+`--adjust-vma=OFFSET'
+     When dumping information, first add OFFSET to all the section
+     addresses.  This is useful if the section addresses do not
+     correspond to the symbol table, which can happen when putting
+     sections at particular addresses when using a format which can not
+     represent section addresses, such as a.out.
+
+`-b BFDNAME'
+`--target=BFDNAME'
+     Specify that the object-code format for the object files is
+     BFDNAME.  This option may not be necessary; OBJDUMP can
+     automatically recognize many formats.
+
+     For example,
+          objdump -b oasys -m vax -h fu.o
+     displays summary information from the section headers (`-h') of
+     `fu.o', which is explicitly identified (`-m') as a VAX object file
+     in the format produced by Oasys compilers.  You can list the
+     formats available with the `-i' option.  *Note Target Selection::,
+     for more information.
+
+`-C'
+`--demangle[=STYLE]'
+     Decode ("demangle") low-level symbol names into user-level names.
+     Besides removing any initial underscore prepended by the system,
+     this makes C++ function names readable.  Different compilers have
+     different mangling styles. The optional demangling style argument
+     can be used to choose an appropriate demangling style for your
+     compiler. *Note c++filt::, for more information on demangling.
+
+`-g'
+`--debugging'
+     Display debugging information.  This attempts to parse debugging
+     information stored in the file and print it out using a C like
+     syntax.  Only certain types of debugging information have been
+     implemented.  Some other types are supported by `readelf -w'.
+     *Note readelf::.
+
+`-e'
+`--debugging-tags'
+     Like `-g', but the information is generated in a format compatible
+     with ctags tool.
+
+`-d'
+`--disassemble'
+     Display the assembler mnemonics for the machine instructions from
+     OBJFILE.  This option only disassembles those sections which are
+     expected to contain instructions.
+
+`-D'
+`--disassemble-all'
+     Like `-d', but disassemble the contents of all sections, not just
+     those expected to contain instructions.
+
+`--prefix-addresses'
+     When disassembling, print the complete address on each line.  This
+     is the older disassembly format.
+
+`-EB'
+`-EL'
+`--endian={big|little}'
+     Specify the endianness of the object files.  This only affects
+     disassembly.  This can be useful when disassembling a file format
+     which does not describe endianness information, such as S-records.
+
+`-f'
+`--file-headers'
+     Display summary information from the overall header of each of the
+     OBJFILE files.
+
+`--file-start-context'
+     Specify that when displaying interlisted source code/disassembly
+     (assumes `-S') from a file that has not yet been displayed, extend
+     the context to the start of the file.
+
+`-h'
+`--section-headers'
+`--headers'
+     Display summary information from the section headers of the object
+     file.
+
+     File segments may be relocated to nonstandard addresses, for
+     example by using the `-Ttext', `-Tdata', or `-Tbss' options to
+     `ld'.  However, some object file formats, such as a.out, do not
+     store the starting address of the file segments.  In those
+     situations, although `ld' relocates the sections correctly, using
+     `objdump -h' to list the file section headers cannot show the
+     correct addresses.  Instead, it shows the usual addresses, which
+     are implicit for the target.
+
+`-H'
+`--help'
+     Print a summary of the options to `objdump' and exit.
+
+`-i'
+`--info'
+     Display a list showing all architectures and object formats
+     available for specification with `-b' or `-m'.
+
+`-j NAME'
+`--section=NAME'
+     Display information only for section NAME.
+
+`-l'
+`--line-numbers'
+     Label the display (using debugging information) with the filename
+     and source line numbers corresponding to the object code or relocs
+     shown.  Only useful with `-d', `-D', or `-r'.
+
+`-m MACHINE'
+`--architecture=MACHINE'
+     Specify the architecture to use when disassembling object files.
+     This can be useful when disassembling object files which do not
+     describe architecture information, such as S-records.  You can
+     list the available architectures with the `-i' option.
+
+`-M OPTIONS'
+`--disassembler-options=OPTIONS'
+     Pass target specific information to the disassembler.  Only
+     supported on some targets.  If it is necessary to specify more
+     than one disassembler option then multiple `-M' options can be
+     used or can be placed together into a comma separated list.
+
+     If the target is an ARM architecture then this switch can be used
+     to select which register name set is used during disassembler.
+     Specifying `-M reg-names-std' (the default) will select the
+     register names as used in ARM's instruction set documentation, but
+     with register 13 called 'sp', register 14 called 'lr' and register
+     15 called 'pc'.  Specifying `-M reg-names-apcs' will select the
+     name set used by the ARM Procedure Call Standard, whilst
+     specifying `-M reg-names-raw' will just use `r' followed by the
+     register number.
+
+     There are also two variants on the APCS register naming scheme
+     enabled by `-M reg-names-atpcs' and `-M reg-names-special-atpcs'
+     which use the ARM/Thumb Procedure Call Standard naming
+     conventions.  (Either with the normal register names or the
+     special register names).
+
+     This option can also be used for ARM architectures to force the
+     disassembler to interpret all instructions as Thumb instructions by
+     using the switch `--disassembler-options=force-thumb'.  This can be
+     useful when attempting to disassemble thumb code produced by other
+     compilers.
+
+     For the x86, some of the options duplicate functions of the `-m'
+     switch, but allow finer grained control.  Multiple selections from
+     the following may be specified as a comma separated string.
+     `x86-64', `i386' and `i8086' select disassembly for the given
+     architecture.  `intel' and `att' select between intel syntax mode
+     and AT&T syntax mode.  `addr32', `addr16', `data32' and `data16'
+     specify the default address size and operand size.  These four
+     options will be overridden if `x86-64', `i386' or `i8086' appear
+     later in the option string.  Lastly, `suffix', when in AT&T mode,
+     instructs the disassembler to print a mnemonic suffix even when the
+     suffix could be inferred by the operands.
+
+     For PPC, `booke', `booke32' and `booke64' select disassembly of
+     BookE instructions.  `32' and `64' select PowerPC and PowerPC64
+     disassembly, respectively.  `e300' selects disassembly for the
+     e300 family.
+
+     For MIPS, this option controls the printing of instruction
+     mneumonic names and register names in disassembled instructions.
+     Multiple selections from the following may be specified as a comma
+     separated string, and invalid options are ignored:
+
+    `no-aliases'
+          Print the 'raw' instruction mneumonic instead of some pseudo
+          instruction mneumonic.  I.E. print 'daddu' or 'or' instead of
+          'move', 'sll' instead of 'nop', etc.
+
+    `gpr-names=ABI'
+          Print GPR (general-purpose register) names as appropriate for
+          the specified ABI.  By default, GPR names are selected
+          according to the ABI of the binary being disassembled.
+
+    `fpr-names=ABI'
+          Print FPR (floating-point register) names as appropriate for
+          the specified ABI.  By default, FPR numbers are printed
+          rather than names.
+
+    `cp0-names=ARCH'
+          Print CP0 (system control coprocessor; coprocessor 0)
+          register names as appropriate for the CPU or architecture
+          specified by ARCH.  By default, CP0 register names are
+          selected according to the architecture and CPU of the binary
+          being disassembled.
+
+    `hwr-names=ARCH'
+          Print HWR (hardware register, used by the `rdhwr'
+          instruction) names as appropriate for the CPU or architecture
+          specified by ARCH.  By default, HWR names are selected
+          according to the architecture and CPU of the binary being
+          disassembled.
+
+    `reg-names=ABI'
+          Print GPR and FPR names as appropriate for the selected ABI.
+
+    `reg-names=ARCH'
+          Print CPU-specific register names (CP0 register and HWR names)
+          as appropriate for the selected CPU or architecture.
+
+     For any of the options listed above, ABI or ARCH may be specified
+     as `numeric' to have numbers printed rather than names, for the
+     selected types of registers.  You can list the available values of
+     ABI and ARCH using the `--help' option.
+
+     For VAX, you can specify function entry addresses with `-M
+     entry:0xf00ba'.  You can use this multiple times to properly
+     disassemble VAX binary files that don't contain symbol tables (like
+     ROM dumps).  In these cases, the function entry mask would
+     otherwise be decoded as VAX instructions, which would probably
+     lead the the rest of the function being wrongly disassembled.
+
+`-p'
+`--private-headers'
+     Print information that is specific to the object file format.  The
+     exact information printed depends upon the object file format.
+     For some object file formats, no additional information is printed.
+
+`-r'
+`--reloc'
+     Print the relocation entries of the file.  If used with `-d' or
+     `-D', the relocations are printed interspersed with the
+     disassembly.
+
+`-R'
+`--dynamic-reloc'
+     Print the dynamic relocation entries of the file.  This is only
+     meaningful for dynamic objects, such as certain types of shared
+     libraries.
+
+`-s'
+`--full-contents'
+     Display the full contents of any sections requested.  By default
+     all non-empty sections are displayed.
+
+`-S'
+`--source'
+     Display source code intermixed with disassembly, if possible.
+     Implies `-d'.
+
+`--show-raw-insn'
+     When disassembling instructions, print the instruction in hex as
+     well as in symbolic form.  This is the default except when
+     `--prefix-addresses' is used.
+
+`--no-show-raw-insn'
+     When disassembling instructions, do not print the instruction
+     bytes.  This is the default when `--prefix-addresses' is used.
+
+`-W'
+`--dwarf'
+     Displays the contents of the DWARF debug sections in the file, if
+     any are present.
+
+`-G'
+`--stabs'
+     Display the full contents of any sections requested.  Display the
+     contents of the .stab and .stab.index and .stab.excl sections from
+     an ELF file.  This is only useful on systems (such as Solaris 2.0)
+     in which `.stab' debugging symbol-table entries are carried in an
+     ELF section.  In most other file formats, debugging symbol-table
+     entries are interleaved with linkage symbols, and are visible in
+     the `--syms' output.  For more information on stabs symbols, see
+     *Note Stabs: (stabs.info)Top.
+
+`--start-address=ADDRESS'
+     Start displaying data at the specified address.  This affects the
+     output of the `-d', `-r' and `-s' options.
+
+`--stop-address=ADDRESS'
+     Stop displaying data at the specified address.  This affects the
+     output of the `-d', `-r' and `-s' options.
+
+`-t'
+`--syms'
+     Print the symbol table entries of the file.  This is similar to
+     the information provided by the `nm' program.
+
+`-T'
+`--dynamic-syms'
+     Print the dynamic symbol table entries of the file.  This is only
+     meaningful for dynamic objects, such as certain types of shared
+     libraries.  This is similar to the information provided by the `nm'
+     program when given the `-D' (`--dynamic') option.
+
+`--special-syms'
+     When displaying symbols include those which the target considers
+     to be special in some way and which would not normally be of
+     interest to the user.
+
+`-V'
+`--version'
+     Print the version number of `objdump' and exit.
+
+`-x'
+`--all-headers'
+     Display all available header information, including the symbol
+     table and relocation entries.  Using `-x' is equivalent to
+     specifying all of `-a -f -h -p -r -t'.
+
+`-w'
+`--wide'
+     Format some lines for output devices that have more than 80
+     columns.  Also do not truncate symbol names when they are
+     displayed.
+
+`-z'
+`--disassemble-zeroes'
+     Normally the disassembly output will skip blocks of zeroes.  This
+     option directs the disassembler to disassemble those blocks, just
+     like any other data.
+
+
+File: binutils.info,  Node: ranlib,  Next: readelf,  Prev: objdump,  Up: Top
+
+5 ranlib
+********
+
+     ranlib [`-vV'] ARCHIVE
+
+   `ranlib' generates an index to the contents of an archive and stores
+it in the archive.  The index lists each symbol defined by a member of
+an archive that is a relocatable object file.
+
+   You may use `nm -s' or `nm --print-armap' to list this index.
+
+   An archive with such an index speeds up linking to the library and
+allows routines in the library to call each other without regard to
+their placement in the archive.
+
+   The GNU `ranlib' program is another form of GNU `ar'; running
+`ranlib' is completely equivalent to executing `ar -s'.  *Note ar::.
+
+`-v'
+`-V'
+`--version'
+     Show the version number of `ranlib'.
+
+
+File: binutils.info,  Node: size,  Next: strings,  Prev: readelf,  Up: Top
+
+6 size
+******
+
+     size [`-A'|`-B'|`--format='COMPATIBILITY]
+          [`--help']
+          [`-d'|`-o'|`-x'|`--radix='NUMBER]
+          [`-t'|`--totals']
+          [`--target='BFDNAME] [`-V'|`--version']
+          [OBJFILE...]
+
+   The GNU `size' utility lists the section sizes--and the total
+size--for each of the object or archive files OBJFILE in its argument
+list.  By default, one line of output is generated for each object file
+or each module in an archive.
+
+   OBJFILE... are the object files to be examined.  If none are
+specified, the file `a.out' will be used.
+
+   The command line options have the following meanings:
+
+`-A'
+`-B'
+`--format=COMPATIBILITY'
+     Using one of these options, you can choose whether the output from
+     GNU `size' resembles output from System V `size' (using `-A', or
+     `--format=sysv'), or Berkeley `size' (using `-B', or
+     `--format=berkeley').  The default is the one-line format similar
+     to Berkeley's.
+
+     Here is an example of the Berkeley (default) format of output from
+     `size':
+          $ size --format=Berkeley ranlib size
+          text    data    bss     dec     hex     filename
+          294880  81920   11592   388392  5ed28   ranlib
+          294880  81920   11888   388688  5ee50   size
+
+     This is the same data, but displayed closer to System V
+     conventions:
+
+          $ size --format=SysV ranlib size
+          ranlib  :
+          section         size         addr
+          .text         294880         8192
+          .data          81920       303104
+          .bss           11592       385024
+          Total         388392
+
+
+          size  :
+          section         size         addr
+          .text         294880         8192
+          .data          81920       303104
+          .bss           11888       385024
+          Total         388688
+
+`--help'
+     Show a summary of acceptable arguments and options.
+
+`-d'
+`-o'
+`-x'
+`--radix=NUMBER'
+     Using one of these options, you can control whether the size of
+     each section is given in decimal (`-d', or `--radix=10'); octal
+     (`-o', or `--radix=8'); or hexadecimal (`-x', or `--radix=16').
+     In `--radix=NUMBER', only the three values (8, 10, 16) are
+     supported.  The total size is always given in two radices; decimal
+     and hexadecimal for `-d' or `-x' output, or octal and hexadecimal
+     if you're using `-o'.
+
+`-t'
+`--totals'
+     Show totals of all objects listed (Berkeley format listing mode
+     only).
+
+`--target=BFDNAME'
+     Specify that the object-code format for OBJFILE is BFDNAME.  This
+     option may not be necessary; `size' can automatically recognize
+     many formats.  *Note Target Selection::, for more information.
+
+`-V'
+`--version'
+     Display the version number of `size'.
+
+
+File: binutils.info,  Node: strings,  Next: strip,  Prev: size,  Up: Top
+
+7 strings
+*********
+
+     strings [`-afov'] [`-'MIN-LEN]
+             [`-n' MIN-LEN] [`--bytes='MIN-LEN]
+             [`-t' RADIX] [`--radix='RADIX]
+             [`-e' ENCODING] [`--encoding='ENCODING]
+             [`-'] [`--all'] [`--print-file-name']
+             [`--target='BFDNAME]
+             [`--help'] [`--version'] FILE...
+
+   For each FILE given, GNU `strings' prints the printable character
+sequences that are at least 4 characters long (or the number given with
+the options below) and are followed by an unprintable character.  By
+default, it only prints the strings from the initialized and loaded
+sections of object files; for other types of files, it prints the
+strings from the whole file.
+
+   `strings' is mainly useful for determining the contents of non-text
+files.
+
+`-a'
+`--all'
+`-'
+     Do not scan only the initialized and loaded sections of object
+     files; scan the whole files.
+
+`-f'
+`--print-file-name'
+     Print the name of the file before each string.
+
+`--help'
+     Print a summary of the program usage on the standard output and
+     exit.
+
+`-MIN-LEN'
+`-n MIN-LEN'
+`--bytes=MIN-LEN'
+     Print sequences of characters that are at least MIN-LEN characters
+     long, instead of the default 4.
+
+`-o'
+     Like `-t o'.  Some other versions of `strings' have `-o' act like
+     `-t d' instead.  Since we can not be compatible with both ways, we
+     simply chose one.
+
+`-t RADIX'
+`--radix=RADIX'
+     Print the offset within the file before each string.  The single
+     character argument specifies the radix of the offset--`o' for
+     octal, `x' for hexadecimal, or `d' for decimal.
+
+`-e ENCODING'
+`--encoding=ENCODING'
+     Select the character encoding of the strings that are to be found.
+     Possible values for ENCODING are: `s' = single-7-bit-byte
+     characters (ASCII, ISO 8859, etc., default), `S' =
+     single-8-bit-byte characters, `b' = 16-bit bigendian, `l' = 16-bit
+     littleendian, `B' = 32-bit bigendian, `L' = 32-bit littleendian.
+     Useful for finding wide character strings.
+
+`--target=BFDNAME'
+     Specify an object code format other than your system's default
+     format.  *Note Target Selection::, for more information.
+
+`-v'
+`--version'
+     Print the program version number on the standard output and exit.
+
+
+File: binutils.info,  Node: strip,  Next: c++filt,  Prev: strings,  Up: Top
+
+8 strip
+*******
+
+     strip [`-F' BFDNAME |`--target='BFDNAME]
+           [`-I' BFDNAME |`--input-target='BFDNAME]
+           [`-O' BFDNAME |`--output-target='BFDNAME]
+           [`-s'|`--strip-all']
+           [`-S'|`-g'|`-d'|`--strip-debug']
+           [`-K' SYMBOLNAME |`--keep-symbol='SYMBOLNAME]
+           [`-N' SYMBOLNAME |`--strip-symbol='SYMBOLNAME]
+           [`-w'|`--wildcard']
+           [`-x'|`--discard-all'] [`-X' |`--discard-locals']
+           [`-R' SECTIONNAME |`--remove-section='SECTIONNAME]
+           [`-o' FILE] [`-p'|`--preserve-dates']
+           [`--keep-file-symbols']
+           [`--only-keep-debug']
+           [`-v' |`--verbose'] [`-V'|`--version']
+           [`--help'] [`--info']
+           OBJFILE...
+
+   GNU `strip' discards all symbols from object files OBJFILE.  The
+list of object files may include archives.  At least one object file
+must be given.
+
+   `strip' modifies the files named in its argument, rather than
+writing modified copies under different names.
+
+`-F BFDNAME'
+`--target=BFDNAME'
+     Treat the original OBJFILE as a file with the object code format
+     BFDNAME, and rewrite it in the same format.  *Note Target
+     Selection::, for more information.
+
+`--help'
+     Show a summary of the options to `strip' and exit.
+
+`--info'
+     Display a list showing all architectures and object formats
+     available.
+
+`-I BFDNAME'
+`--input-target=BFDNAME'
+     Treat the original OBJFILE as a file with the object code format
+     BFDNAME.  *Note Target Selection::, for more information.
+
+`-O BFDNAME'
+`--output-target=BFDNAME'
+     Replace OBJFILE with a file in the output format BFDNAME.  *Note
+     Target Selection::, for more information.
+
+`-R SECTIONNAME'
+`--remove-section=SECTIONNAME'
+     Remove any section named SECTIONNAME from the output file.  This
+     option may be given more than once.  Note that using this option
+     inappropriately may make the output file unusable.
+
+`-s'
+`--strip-all'
+     Remove all symbols.
+
+`-g'
+`-S'
+`-d'
+`--strip-debug'
+     Remove debugging symbols only.
+
+`--strip-unneeded'
+     Remove all symbols that are not needed for relocation processing.
+
+`-K SYMBOLNAME'
+`--keep-symbol=SYMBOLNAME'
+     When stripping symbols, keep symbol SYMBOLNAME even if it would
+     normally be stripped.  This option may be given more than once.
+
+`-N SYMBOLNAME'
+`--strip-symbol=SYMBOLNAME'
+     Remove symbol SYMBOLNAME from the source file. This option may be
+     given more than once, and may be combined with strip options other
+     than `-K'.
+
+`-o FILE'
+     Put the stripped output in FILE, rather than replacing the
+     existing file.  When this argument is used, only one OBJFILE
+     argument may be specified.
+
+`-p'
+`--preserve-dates'
+     Preserve the access and modification dates of the file.
+
+`-w'
+`--wildcard'
+     Permit regular expressions in SYMBOLNAMEs used in other command
+     line options.  The question mark (?), asterisk (*), backslash (\)
+     and square brackets ([]) operators can be used anywhere in the
+     symbol name.  If the first character of the symbol name is the
+     exclamation point (!) then the sense of the switch is reversed for
+     that symbol.  For example:
+
+            -w -K !foo -K fo*
+
+     would cause strip to only keep symbols that start with the letters
+     "fo", but to discard the symbol "foo".
+
+`-x'
+`--discard-all'
+     Remove non-global symbols.
+
+`-X'
+`--discard-locals'
+     Remove compiler-generated local symbols.  (These usually start
+     with `L' or `.'.)
+
+`--keep-file-symbols'
+     When stripping a file, perhaps with `--strip-debug' or
+     `--strip-unneeded', retain any symbols specifying source file
+     names, which would otherwise get stripped.
+
+`--only-keep-debug'
+     Strip a file, removing any sections that would be stripped by
+     `--strip-debug' and leaving the debugging sections.
+
+     The intention is that this option will be used in conjunction with
+     `--add-gnu-debuglink' to create a two part executable.  One a
+     stripped binary which will occupy less space in RAM and in a
+     distribution and the second a debugging information file which is
+     only needed if debugging abilities are required.  The suggested
+     procedure to create these files is as follows:
+
+       1. Link the executable as normal.  Assuming that is is called
+          `foo' then...
+
+       2. Run `objcopy --only-keep-debug foo foo.dbg' to create a file
+          containing the debugging info.
+
+       3. Run `objcopy --strip-debug foo' to create a stripped
+          executable.
+
+       4. Run `objcopy --add-gnu-debuglink=foo.dbg foo' to add a link
+          to the debugging info into the stripped executable.
+
+     Note - the choice of `.dbg' as an extension for the debug info
+     file is arbitrary.  Also the `--only-keep-debug' step is optional.
+     You could instead do this:
+
+       1. Link the executable as normal.
+
+       2. Copy `foo' to  `foo.full'
+
+       3. Run `strip --strip-debug foo'
+
+       4. Run `objcopy --add-gnu-debuglink=foo.full foo'
+
+     ie the file pointed to by the `--add-gnu-debuglink' can be the
+     full executable.  It does not have to be a file created by the
+     `--only-keep-debug' switch.
+
+`-V'
+`--version'
+     Show the version number for `strip'.
+
+`-v'
+`--verbose'
+     Verbose output: list all object files modified.  In the case of
+     archives, `strip -v' lists all members of the archive.
+
+
+File: binutils.info,  Node: c++filt,  Next: addr2line,  Prev: strip,  Up: Top
+
+9 c++filt
+*********
+
+     c++filt [`-_'|`--strip-underscores']
+             [`-n'|`--no-strip-underscores']
+             [`-p'|`--no-params']
+             [`-t'|`--types']
+             [`-i'|`--no-verbose']
+             [`-s' FORMAT|`--format='FORMAT]
+             [`--help']  [`--version']  [SYMBOL...]
+
+   The C++ and Java languages provide function overloading, which means
+that you can write many functions with the same name, providing that
+each function takes parameters of different types.  In order to be able
+to distinguish these similarly named functions C++ and Java encode them
+into a low-level assembler name which uniquely identifies each
+different version.  This process is known as "mangling". The `c++filt'
+(1) program does the inverse mapping: it decodes ("demangles") low-level
+names into user-level names so that they can be read.
+
+   Every alphanumeric word (consisting of letters, digits, underscores,
+dollars, or periods) seen in the input is a potential mangled name.  If
+the name decodes into a C++ name, the C++ name replaces the low-level
+name in the output, otherwise the original word is output.  In this way
+you can pass an entire assembler source file, containing mangled names,
+through `c++filt' and see the same source file containing demangled
+names.
+
+   You can also use `c++filt' to decipher individual symbols by passing
+them on the command line:
+
+     c++filt SYMBOL
+
+   If no SYMBOL arguments are given, `c++filt' reads symbol names from
+the standard input instead.  All the results are printed on the
+standard output.  The difference between reading names from the command
+line versus reading names from the standard input is that command line
+arguments are expected to be just mangled names and no checking is
+performed to seperate them from surrounding text.  Thus for example:
+
+     c++filt -n _Z1fv
+
+   will work and demangle the name to "f()" whereas:
+
+     c++filt -n _Z1fv,
+
+   will not work.  (Note the extra comma at the end of the mangled name
+which makes it invalid).  This command however will work:
+
+     echo _Z1fv, | c++filt -n
+
+   and will display "f()," ie the demangled name followed by a trailing
+comma.  This behaviour is because when the names are read from the
+standard input it is expected that they might be part of an assembler
+source file where there might be extra, extraneous characters trailing
+after a mangled name.  eg:
+
+         .type   _Z1fv, @function
+
+`-_'
+`--strip-underscores'
+     On some systems, both the C and C++ compilers put an underscore in
+     front of every name.  For example, the C name `foo' gets the
+     low-level name `_foo'.  This option removes the initial
+     underscore.  Whether `c++filt' removes the underscore by default
+     is target dependent.
+
+`-j'
+`--java'
+     Prints demangled names using Java syntax.  The default is to use
+     C++ syntax.
+
+`-n'
+`--no-strip-underscores'
+     Do not remove the initial underscore.
+
+`-p'
+`--no-params'
+     When demangling the name of a function, do not display the types of
+     the function's parameters.
+
+`-t'
+`--types'
+     Attempt to demangle types as well as function names.  This is
+     disabled by default since mangled types are normally only used
+     internally in the compiler, and they can be confused with
+     non-mangled names.  eg a function called "a" treated as a mangled
+     type name would be demangled to "signed char".
+
+`-i'
+`--no-verbose'
+     Do not include implementation details (if any) in the demangled
+     output.
+
+`-s FORMAT'
+`--format=FORMAT'
+     `c++filt' can decode various methods of mangling, used by
+     different compilers.  The argument to this option selects which
+     method it uses:
+
+    `auto'
+          Automatic selection based on executable (the default method)
+
+    `gnu'
+          the one used by the GNU C++ compiler (g++)
+
+    `lucid'
+          the one used by the Lucid compiler (lcc)
+
+    `arm'
+          the one specified by the C++ Annotated Reference Manual
+
+    `hp'
+          the one used by the HP compiler (aCC)
+
+    `edg'
+          the one used by the EDG compiler
+
+    `gnu-v3'
+          the one used by the GNU C++ compiler (g++) with the V3 ABI.
+
+    `java'
+          the one used by the GNU Java compiler (gcj)
+
+    `gnat'
+          the one used by the GNU Ada compiler (GNAT).
+
+`--help'
+     Print a summary of the options to `c++filt' and exit.
+
+`--version'
+     Print the version number of `c++filt' and exit.
+
+     _Warning:_ `c++filt' is a new utility, and the details of its user
+     interface are subject to change in future releases.  In particular,
+     a command-line option may be required in the the future to decode
+     a name passed as an argument on the command line; in other words,
+
+          c++filt SYMBOL
+
+     may in a future release become
+
+          c++filt OPTION SYMBOL
+
+   ---------- Footnotes ----------
+
+   (1) MS-DOS does not allow `+' characters in file names, so on MS-DOS
+this program is named `CXXFILT'.
+
+
+File: binutils.info,  Node: addr2line,  Next: nlmconv,  Prev: c++filt,  Up: Top
+
+10 addr2line
+************
+
+     addr2line [`-b' BFDNAME|`--target='BFDNAME]
+               [`-C'|`--demangle'[=STYLE]]
+               [`-e' FILENAME|`--exe='FILENAME]
+               [`-f'|`--functions'] [`-s'|`--basename']
+               [`-i'|`--inlines']
+               [`-j'|`--section='NAME]
+               [`-H'|`--help'] [`-V'|`--version']
+               [addr addr ...]
+
+   `addr2line' translates addresses into file names and line numbers.
+Given an address in an executable or an offset in a section of a
+relocatable object, it uses the debugging information to figure out
+which file name and line number are associated with it.
+
+   The executable or relocatable object to use is specified with the
+`-e' option.  The default is the file `a.out'.  The section in the
+relocatable object to use is specified with the `-j' option.
+
+   `addr2line' has two modes of operation.
+
+   In the first, hexadecimal addresses are specified on the command
+line, and `addr2line' displays the file name and line number for each
+address.
+
+   In the second, `addr2line' reads hexadecimal addresses from standard
+input, and prints the file name and line number for each address on
+standard output.  In this mode, `addr2line' may be used in a pipe to
+convert dynamically chosen addresses.
+
+   The format of the output is `FILENAME:LINENO'.  The file name and
+line number for each address is printed on a separate line.  If the
+`-f' option is used, then each `FILENAME:LINENO' line is preceded by a
+`FUNCTIONNAME' line which is the name of the function containing the
+address.
+
+   If the file name or function name can not be determined, `addr2line'
+will print two question marks in their place.  If the line number can
+not be determined, `addr2line' will print 0.
+
+   The long and short forms of options, shown here as alternatives, are
+equivalent.
+
+`-b BFDNAME'
+`--target=BFDNAME'
+     Specify that the object-code format for the object files is
+     BFDNAME.
+
+`-C'
+`--demangle[=STYLE]'
+     Decode ("demangle") low-level symbol names into user-level names.
+     Besides removing any initial underscore prepended by the system,
+     this makes C++ function names readable.  Different compilers have
+     different mangling styles. The optional demangling style argument
+     can be used to choose an appropriate demangling style for your
+     compiler. *Note c++filt::, for more information on demangling.
+
+`-e FILENAME'
+`--exe=FILENAME'
+     Specify the name of the executable for which addresses should be
+     translated.  The default file is `a.out'.
+
+`-f'
+`--functions'
+     Display function names as well as file and line number information.
+
+`-s'
+`--basenames'
+     Display only the base of each file name.
+
+`-i'
+`--inlines'
+     If the address belongs to a function that was inlined, the source
+     information for all enclosing scopes back to the first non-inlined
+     function will also be printed.  For example, if `main' inlines
+     `callee1' which inlines `callee2', and address is from `callee2',
+     the source information for `callee1' and `main' will also be
+     printed.
+
+`-j'
+`--section'
+     Read offsets relative to the specified section instead of absolute
+     addresses.
+
+
+File: binutils.info,  Node: nlmconv,  Next: windres,  Prev: addr2line,  Up: Top
+
+11 nlmconv
+**********
+
+`nlmconv' converts a relocatable object file into a NetWare Loadable
+Module.
+
+     _Warning:_ `nlmconv' is not always built as part of the binary
+     utilities, since it is only useful for NLM targets.
+
+     nlmconv [`-I' BFDNAME|`--input-target='BFDNAME]
+             [`-O' BFDNAME|`--output-target='BFDNAME]
+             [`-T' HEADERFILE|`--header-file='HEADERFILE]
+             [`-d'|`--debug'] [`-l' LINKER|`--linker='LINKER]
+             [`-h'|`--help'] [`-V'|`--version']
+             INFILE OUTFILE
+
+   `nlmconv' converts the relocatable `i386' object file INFILE into
+the NetWare Loadable Module OUTFILE, optionally reading HEADERFILE for
+NLM header information.  For instructions on writing the NLM command
+file language used in header files, see the `linkers' section,
+`NLMLINK' in particular, of the `NLM Development and Tools Overview',
+which is part of the NLM Software Developer's Kit ("NLM SDK"),
+available from Novell, Inc.  `nlmconv' uses the GNU Binary File
+Descriptor library to read INFILE; see *Note BFD: (ld.info)BFD, for
+more information.
+
+   `nlmconv' can perform a link step.  In other words, you can list
+more than one object file for input if you list them in the definitions
+file (rather than simply specifying one input file on the command line).
+In this case, `nlmconv' calls the linker for you.
+
+`-I BFDNAME'
+`--input-target=BFDNAME'
+     Object format of the input file.  `nlmconv' can usually determine
+     the format of a given file (so no default is necessary).  *Note
+     Target Selection::, for more information.
+
+`-O BFDNAME'
+`--output-target=BFDNAME'
+     Object format of the output file.  `nlmconv' infers the output
+     format based on the input format, e.g. for a `i386' input file the
+     output format is `nlm32-i386'.  *Note Target Selection::, for more
+     information.
+
+`-T HEADERFILE'
+`--header-file=HEADERFILE'
+     Reads HEADERFILE for NLM header information.  For instructions on
+     writing the NLM command file language used in header files, see
+     see the `linkers' section, of the `NLM Development and Tools
+     Overview', which is part of the NLM Software Developer's Kit,
+     available from Novell, Inc.
+
+`-d'
+`--debug'
+     Displays (on standard error) the linker command line used by
+     `nlmconv'.
+
+`-l LINKER'
+`--linker=LINKER'
+     Use LINKER for any linking.  LINKER can be an absolute or a
+     relative pathname.
+
+`-h'
+`--help'
+     Prints a usage summary.
+
+`-V'
+`--version'
+     Prints the version number for `nlmconv'.
+
+
+File: binutils.info,  Node: windres,  Next: dlltool,  Prev: nlmconv,  Up: Top
+
+12 windres
+**********
+
+`windres' may be used to manipulate Windows resources.
+
+     _Warning:_ `windres' is not always built as part of the binary
+     utilities, since it is only useful for Windows targets.
+
+     windres [options] [input-file] [output-file]
+
+   `windres' reads resources from an input file and copies them into an
+output file.  Either file may be in one of three formats:
+
+`rc'
+     A text format read by the Resource Compiler.
+
+`res'
+     A binary format generated by the Resource Compiler.
+
+`coff'
+     A COFF object or executable.
+
+   The exact description of these different formats is available in
+documentation from Microsoft.
+
+   When `windres' converts from the `rc' format to the `res' format, it
+is acting like the Windows Resource Compiler.  When `windres' converts
+from the `res' format to the `coff' format, it is acting like the
+Windows `CVTRES' program.
+
+   When `windres' generates an `rc' file, the output is similar but not
+identical to the format expected for the input.  When an input `rc'
+file refers to an external filename, an output `rc' file will instead
+include the file contents.
+
+   If the input or output format is not specified, `windres' will guess
+based on the file name, or, for the input file, the file contents.  A
+file with an extension of `.rc' will be treated as an `rc' file, a file
+with an extension of `.res' will be treated as a `res' file, and a file
+with an extension of `.o' or `.exe' will be treated as a `coff' file.
+
+   If no output file is specified, `windres' will print the resources
+in `rc' format to standard output.
+
+   The normal use is for you to write an `rc' file, use `windres' to
+convert it to a COFF object file, and then link the COFF file into your
+application.  This will make the resources described in the `rc' file
+available to Windows.
+
+`-i FILENAME'
+`--input FILENAME'
+     The name of the input file.  If this option is not used, then
+     `windres' will use the first non-option argument as the input file
+     name.  If there are no non-option arguments, then `windres' will
+     read from standard input.  `windres' can not read a COFF file from
+     standard input.
+
+`-o FILENAME'
+`--output FILENAME'
+     The name of the output file.  If this option is not used, then
+     `windres' will use the first non-option argument, after any used
+     for the input file name, as the output file name.  If there is no
+     non-option argument, then `windres' will write to standard output.
+     `windres' can not write a COFF file to standard output.  Note, for
+     compatability with `rc' the option `-fo' is also accepted, but its
+     use is not recommended.
+
+`-J FORMAT'
+`--input-format FORMAT'
+     The input format to read.  FORMAT may be `res', `rc', or `coff'.
+     If no input format is specified, `windres' will guess, as
+     described above.
+
+`-O FORMAT'
+`--output-format FORMAT'
+     The output format to generate.  FORMAT may be `res', `rc', or
+     `coff'.  If no output format is specified, `windres' will guess,
+     as described above.
+
+`-F TARGET'
+`--target TARGET'
+     Specify the BFD format to use for a COFF file as input or output.
+     This is a BFD target name; you can use the `--help' option to see
+     a list of supported targets.  Normally `windres' will use the
+     default format, which is the first one listed by the `--help'
+     option.  *Note Target Selection::.
+
+`--preprocessor PROGRAM'
+     When `windres' reads an `rc' file, it runs it through the C
+     preprocessor first.  This option may be used to specify the
+     preprocessor to use, including any leading arguments.  The default
+     preprocessor argument is `gcc -E -xc-header -DRC_INVOKED'.
+
+`-I DIRECTORY'
+`--include-dir DIRECTORY'
+     Specify an include directory to use when reading an `rc' file.
+     `windres' will pass this to the preprocessor as an `-I' option.
+     `windres' will also search this directory when looking for files
+     named in the `rc' file.  If the argument passed to this command
+     matches any of the supported FORMATS (as descrived in the `-J'
+     option), it will issue a deprecation warning, and behave just like
+     the `-J' option.  New programs should not use this behaviour.  If a
+     directory happens to match a FORMAT, simple prefix it with `./' to
+     disable the backward compatibility.
+
+`-D TARGET'
+`--define SYM[=VAL]'
+     Specify a `-D' option to pass to the preprocessor when reading an
+     `rc' file.
+
+`-U TARGET'
+`--undefine SYM'
+     Specify a `-U' option to pass to the preprocessor when reading an
+     `rc' file.
+
+`-r'
+     Ignored for compatibility with rc.
+
+`-v'
+     Enable verbose mode.  This tells you what the preprocessor is if
+     you didn't specify one.
+
+`-l VAL'
+
+`--language VAL'
+     Specify the default language to use when reading an `rc' file.
+     VAL should be a hexadecimal language code.  The low eight bits are
+     the language, and the high eight bits are the sublanguage.
+
+`--use-temp-file'
+     Use a temporary file to instead of using popen to read the output
+     of the preprocessor. Use this option if the popen implementation
+     is buggy on the host (eg., certain non-English language versions
+     of Windows 95 and Windows 98 are known to have buggy popen where
+     the output will instead go the console).
+
+`--no-use-temp-file'
+     Use popen, not a temporary file, to read the output of the
+     preprocessor.  This is the default behaviour.
+
+`-h'
+
+`--help'
+     Prints a usage summary.
+
+`-V'
+
+`--version'
+     Prints the version number for `windres'.
+
+`--yydebug'
+     If `windres' is compiled with `YYDEBUG' defined as `1', this will
+     turn on parser debugging.
+
+
+File: binutils.info,  Node: dlltool,  Next: Common Options,  Prev: windres,  Up: Top
+
+13 dlltool
+**********
+
+`dlltool' is used to create the files needed to create dynamic link
+libraries (DLLs) on systems which understand PE format image files such
+as Windows.  A DLL contains an export table which contains information
+that the runtime loader needs to resolve references from a referencing
+program.
+
+   The export table is generated by this program by reading in a `.def'
+file or scanning the `.a' and `.o' files which will be in the DLL.  A
+`.o' file can contain information in special `.drectve' sections with
+export information.
+
+     _Note:_ `dlltool' is not always built as part of the binary
+     utilities, since it is only useful for those targets which support
+     DLLs.
+
+     dlltool [`-d'|`--input-def' DEF-FILE-NAME]
+             [`-b'|`--base-file' BASE-FILE-NAME]
+             [`-e'|`--output-exp' EXPORTS-FILE-NAME]
+             [`-z'|`--output-def' DEF-FILE-NAME]
+             [`-l'|`--output-lib' LIBRARY-FILE-NAME]
+             [`--export-all-symbols'] [`--no-export-all-symbols']
+             [`--exclude-symbols' LIST]
+             [`--no-default-excludes']
+             [`-S'|`--as' PATH-TO-ASSEMBLER] [`-f'|`--as-flags' OPTIONS]
+             [`-D'|`--dllname' NAME] [`-m'|`--machine' MACHINE]
+             [`-a'|`--add-indirect']
+             [`-U'|`--add-underscore'] [`--add-stdcall-underscore']
+             [`-k'|`--kill-at'] [`-A'|`--add-stdcall-alias']
+             [`-p'|`--ext-prefix-alias' PREFIX]
+             [`-x'|`--no-idata4'] [`-c'|`--no-idata5'] [`-i'|`--interwork']
+             [`-n'|`--nodelete'] [`-t'|`--temp-prefix' PREFIX]
+             [`-v'|`--verbose']
+             [`-h'|`--help'] [`-V'|`--version']
+             [object-file ...]
+
+   `dlltool' reads its inputs, which can come from the `-d' and `-b'
+options as well as object files specified on the command line.  It then
+processes these inputs and if the `-e' option has been specified it
+creates a exports file.  If the `-l' option has been specified it
+creates a library file and if the `-z' option has been specified it
+creates a def file.  Any or all of the `-e', `-l' and `-z' options can
+be present in one invocation of dlltool.
+
+   When creating a DLL, along with the source for the DLL, it is
+necessary to have three other files.  `dlltool' can help with the
+creation of these files.
+
+   The first file is a `.def' file which specifies which functions are
+exported from the DLL, which functions the DLL imports, and so on.  This
+is a text file and can be created by hand, or `dlltool' can be used to
+create it using the `-z' option.  In this case `dlltool' will scan the
+object files specified on its command line looking for those functions
+which have been specially marked as being exported and put entries for
+them in the `.def' file it creates.
+
+   In order to mark a function as being exported from a DLL, it needs to
+have an `-export:<name_of_function>' entry in the `.drectve' section of
+the object file.  This can be done in C by using the asm() operator:
+
+       asm (".section .drectve");
+       asm (".ascii \"-export:my_func\"");
+
+       int my_func (void) { ... }
+
+   The second file needed for DLL creation is an exports file.  This
+file is linked with the object files that make up the body of the DLL
+and it handles the interface between the DLL and the outside world.
+This is a binary file and it can be created by giving the `-e' option to
+`dlltool' when it is creating or reading in a `.def' file.
+
+   The third file needed for DLL creation is the library file that
+programs will link with in order to access the functions in the DLL.
+This file can be created by giving the `-l' option to dlltool when it
+is creating or reading in a `.def' file.
+
+   `dlltool' builds the library file by hand, but it builds the exports
+file by creating temporary files containing assembler statements and
+then assembling these.  The `-S' command line option can be used to
+specify the path to the assembler that dlltool will use, and the `-f'
+option can be used to pass specific flags to that assembler.  The `-n'
+can be used to prevent dlltool from deleting these temporary assembler
+files when it is done, and if `-n' is specified twice then this will
+prevent dlltool from deleting the temporary object files it used to
+build the library.
+
+   Here is an example of creating a DLL from a source file `dll.c' and
+also creating a program (from an object file called `program.o') that
+uses that DLL:
+
+       gcc -c dll.c
+       dlltool -e exports.o -l dll.lib dll.o
+       gcc dll.o exports.o -o dll.dll
+       gcc program.o dll.lib -o program
+
+   The command line options have the following meanings:
+
+`-d FILENAME'
+`--input-def FILENAME'
+     Specifies the name of a `.def' file to be read in and processed.
+
+`-b FILENAME'
+`--base-file FILENAME'
+     Specifies the name of a base file to be read in and processed.  The
+     contents of this file will be added to the relocation section in
+     the exports file generated by dlltool.
+
+`-e FILENAME'
+`--output-exp FILENAME'
+     Specifies the name of the export file to be created by dlltool.
+
+`-z FILENAME'
+`--output-def FILENAME'
+     Specifies the name of the `.def' file to be created by dlltool.
+
+`-l FILENAME'
+`--output-lib FILENAME'
+     Specifies the name of the library file to be created by dlltool.
+
+`--export-all-symbols'
+     Treat all global and weak defined symbols found in the input object
+     files as symbols to be exported.  There is a small list of symbols
+     which are not exported by default; see the `--no-default-excludes'
+     option.  You may add to the list of symbols to not export by using
+     the `--exclude-symbols' option.
+
+`--no-export-all-symbols'
+     Only export symbols explicitly listed in an input `.def' file or in
+     `.drectve' sections in the input object files.  This is the default
+     behaviour.  The `.drectve' sections are created by `dllexport'
+     attributes in the source code.
+
+`--exclude-symbols LIST'
+     Do not export the symbols in LIST.  This is a list of symbol names
+     separated by comma or colon characters.  The symbol names should
+     not contain a leading underscore.  This is only meaningful when
+     `--export-all-symbols' is used.
+
+`--no-default-excludes'
+     When `--export-all-symbols' is used, it will by default avoid
+     exporting certain special symbols.  The current list of symbols to
+     avoid exporting is `DllMain at 12', `DllEntryPoint at 0', `impure_ptr'.
+     You may use the `--no-default-excludes' option to go ahead and
+     export these special symbols.  This is only meaningful when
+     `--export-all-symbols' is used.
+
+`-S PATH'
+`--as PATH'
+     Specifies the path, including the filename, of the assembler to be
+     used to create the exports file.
+
+`-f OPTIONS'
+`--as-flags OPTIONS'
+     Specifies any specific command line options to be passed to the
+     assembler when building the exports file.  This option will work
+     even if the `-S' option is not used.  This option only takes one
+     argument, and if it occurs more than once on the command line,
+     then later occurrences will override earlier occurrences.  So if
+     it is necessary to pass multiple options to the assembler they
+     should be enclosed in double quotes.
+
+`-D NAME'
+`--dll-name NAME'
+     Specifies the name to be stored in the `.def' file as the name of
+     the DLL when the `-e' option is used.  If this option is not
+     present, then the filename given to the `-e' option will be used
+     as the name of the DLL.
+
+`-m MACHINE'
+`-machine MACHINE'
+     Specifies the type of machine for which the library file should be
+     built.  `dlltool' has a built in default type, depending upon how
+     it was created, but this option can be used to override that.
+     This is normally only useful when creating DLLs for an ARM
+     processor, when the contents of the DLL are actually encode using
+     Thumb instructions.
+
+`-a'
+`--add-indirect'
+     Specifies that when `dlltool' is creating the exports file it
+     should add a section which allows the exported functions to be
+     referenced without using the import library.  Whatever the hell
+     that means!
+
+`-U'
+`--add-underscore'
+     Specifies that when `dlltool' is creating the exports file it
+     should prepend an underscore to the names of _all_ exported
+     symbols.
+
+`--add-stdcall-underscore'
+     Specifies that when `dlltool' is creating the exports file it
+     should prepend an underscore to the names of exported _stdcall_
+     functions. Variable names and non-stdcall function names are not
+     modified.  This option is useful when creating GNU-compatible
+     import libs for third party DLLs that were built with MS-Windows
+     tools.
+
+`-k'
+`--kill-at'
+     Specifies that when `dlltool' is creating the exports file it
+     should not append the string `@ <number>'.  These numbers are
+     called ordinal numbers and they represent another way of accessing
+     the function in a DLL, other than by name.
+
+`-A'
+`--add-stdcall-alias'
+     Specifies that when `dlltool' is creating the exports file it
+     should add aliases for stdcall symbols without `@ <number>' in
+     addition to the symbols with `@ <number>'.
+
+`-p'
+`--ext-prefix-alias PREFIX'
+     Causes `dlltool' to create external aliases for all DLL imports
+     with the specified prefix.  The aliases are created for both
+     external and import symbols with no leading underscore.
+
+`-x'
+`--no-idata4'
+     Specifies that when `dlltool' is creating the exports and library
+     files it should omit the `.idata4' section.  This is for
+     compatibility with certain operating systems.
+
+`-c'
+`--no-idata5'
+     Specifies that when `dlltool' is creating the exports and library
+     files it should omit the `.idata5' section.  This is for
+     compatibility with certain operating systems.
+
+`-i'
+`--interwork'
+     Specifies that `dlltool' should mark the objects in the library
+     file and exports file that it produces as supporting interworking
+     between ARM and Thumb code.
+
+`-n'
+`--nodelete'
+     Makes `dlltool' preserve the temporary assembler files it used to
+     create the exports file.  If this option is repeated then dlltool
+     will also preserve the temporary object files it uses to create
+     the library file.
+
+`-t PREFIX'
+`--temp-prefix PREFIX'
+     Makes `dlltool' use PREFIX when constructing the names of
+     temporary assembler and object files.  By default, the temp file
+     prefix is generated from the pid.
+
+`-v'
+`--verbose'
+     Make dlltool describe what it is doing.
+
+`-h'
+`--help'
+     Displays a list of command line options and then exits.
+
+`-V'
+`--version'
+     Displays dlltool's version number and then exits.
+
+
+* Menu:
+
+* def file format::             The format of the dlltool `.def' file
+
+
+File: binutils.info,  Node: def file format,  Up: dlltool
+
+13.1 The format of the `dlltool' `.def' file
+============================================
+
+A `.def' file contains any number of the following commands:
+
+`NAME' NAME `[ ,' BASE `]'
+     The result is going to be named NAME`.exe'.
+
+`LIBRARY' NAME `[ ,' BASE `]'
+     The result is going to be named NAME`.dll'.
+
+`EXPORTS ( ( (' NAME1 `[ = ' NAME2 `] ) | ( ' NAME1 `=' MODULE-NAME `.' EXTERNAL-NAME `) )'
+
+`[' INTEGER `] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *'
+     Declares NAME1 as an exported symbol from the DLL, with optional
+     ordinal number INTEGER, or declares NAME1 as an alias (forward) of
+     the function EXTERNAL-NAME in the DLL MODULE-NAME.
+
+`IMPORTS ( (' INTERNAL-NAME `=' MODULE-NAME `.' INTEGER `) | [' INTERNAL-NAME `= ]' MODULE-NAME `.' EXTERNAL-NAME `) ) *'
+     Declares that EXTERNAL-NAME or the exported function whose ordinal
+     number is INTEGER is to be imported from the file MODULE-NAME.  If
+     INTERNAL-NAME is specified then this is the name that the imported
+     function will be referred to in the body of the DLL.
+
+`DESCRIPTION' STRING
+     Puts STRING into the output `.exp' file in the `.rdata' section.
+
+`STACKSIZE' NUMBER-RESERVE `[, ' NUMBER-COMMIT `]'
+
+`HEAPSIZE' NUMBER-RESERVE `[, ' NUMBER-COMMIT `]'
+     Generates `--stack' or `--heap' NUMBER-RESERVE,NUMBER-COMMIT in
+     the output `.drectve' section.  The linker will see this and act
+     upon it.
+
+`CODE' ATTR `+'
+
+`DATA' ATTR `+'
+
+`SECTIONS (' SECTION-NAME ATTR` + ) *'
+     Generates `--attr' SECTION-NAME ATTR in the output `.drectve'
+     section, where ATTR is one of `READ', `WRITE', `EXECUTE' or
+     `SHARED'.  The linker will see this and act upon it.
+
+
+
+File: binutils.info,  Node: readelf,  Next: size,  Prev: ranlib,  Up: Top
+
+14 readelf
+**********
+
+     readelf [`-a'|`--all']
+             [`-h'|`--file-header']
+             [`-l'|`--program-headers'|`--segments']
+             [`-S'|`--section-headers'|`--sections']
+             [`-g'|`--section-groups']
+             [`-t'|`--section-details']
+             [`-e'|`--headers']
+             [`-s'|`--syms'|`--symbols']
+             [`-n'|`--notes']
+             [`-r'|`--relocs']
+             [`-u'|`--unwind']
+             [`-d'|`--dynamic']
+             [`-V'|`--version-info']
+             [`-A'|`--arch-specific']
+             [`-D'|`--use-dynamic']
+             [`-x' <number or name>|`--hex-dump='<number or name>]
+             [`-w[liaprmfFsoR]'|
+              `--debug-dump'[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]]
+             [`-I'|`-histogram']
+             [`-v'|`--version']
+             [`-W'|`--wide']
+             [`-H'|`--help']
+             ELFFILE...
+
+   `readelf' displays information about one or more ELF format object
+files.  The options control what particular information to display.
+
+   ELFFILE... are the object files to be examined.  32-bit and 64-bit
+ELF files are supported, as are archives containing ELF files.
+
+   This program performs a similar function to `objdump' but it goes
+into more detail and it exists independently of the BFD library, so if
+there is a bug in BFD then readelf will not be affected.
+
+   The long and short forms of options, shown here as alternatives, are
+equivalent.  At least one option besides `-v' or `-H' must be given.
+
+`-a'
+`--all'
+     Equivalent to specifiying `--file-header', `--program-headers',
+     `--sections', `--symbols', `--relocs', `--dynamic', `--notes' and
+     `--version-info'.
+
+`-h'
+`--file-header'
+     Displays the information contained in the ELF header at the start
+     of the file.
+
+`-l'
+`--program-headers'
+`--segments'
+     Displays the information contained in the file's segment headers,
+     if it has any.
+
+`-S'
+`--sections'
+`--section-headers'
+     Displays the information contained in the file's section headers,
+     if it has any.
+
+`-g'
+`--section-groups'
+     Displays the information contained in the file's section groups,
+     if it has any.
+
+`-t'
+`--section-details'
+     Displays the detailed section information. Implies `-S'.
+
+`-s'
+`--symbols'
+`--syms'
+     Displays the entries in symbol table section of the file, if it
+     has one.
+
+`-e'
+`--headers'
+     Display all the headers in the file.  Equivalent to `-h -l -S'.
+
+`-n'
+`--notes'
+     Displays the contents of the NOTE segments and/or sections, if any.
+
+`-r'
+`--relocs'
+     Displays the contents of the file's relocation section, if it has
+     one.
+
+`-u'
+`--unwind'
+     Displays the contents of the file's unwind section, if it has one.
+     Only the unwind sections for IA64 ELF files are currently
+     supported.
+
+`-d'
+`--dynamic'
+     Displays the contents of the file's dynamic section, if it has one.
+
+`-V'
+`--version-info'
+     Displays the contents of the version sections in the file, it they
+     exist.
+
+`-A'
+`--arch-specific'
+     Displays architecture-specific information in the file, if there
+     is any.
+
+`-D'
+`--use-dynamic'
+     When displaying symbols, this option makes `readelf' use the
+     symbol table in the file's dynamic section, rather than the one in
+     the symbols section.
+
+`-x <number or name>'
+`--hex-dump=<number or name>'
+     Displays the contents of the indicated section as a hexadecimal
+     dump.  A number identifies a particular section by index in the
+     section table; any other string identifies all sections with that
+     name in the object file.
+
+`-w[liaprmfFsoR]'
+`--debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]'
+     Displays the contents of the debug sections in the file, if any are
+     present.  If one of the optional letters or words follows the
+     switch then only data found in those specific sections will be
+     dumped.
+
+`-I'
+`--histogram'
+     Display a histogram of bucket list lengths when displaying the
+     contents of the symbol tables.
+
+`-v'
+`--version'
+     Display the version number of readelf.
+
+`-W'
+`--wide'
+     Don't break output lines to fit into 80 columns. By default
+     `readelf' breaks section header and segment listing lines for
+     64-bit ELF files, so that they fit into 80 columns. This option
+     causes `readelf' to print each section header resp. each segment
+     one a single line, which is far more readable on terminals wider
+     than 80 columns.
+
+`-H'
+`--help'
+     Display the command line options understood by `readelf'.
+
+
+
+File: binutils.info,  Node: Common Options,  Next: Selecting The Target System,  Prev: dlltool,  Up: Top
+
+15 Common Options
+*****************
+
+The following command-line options are supported by all of the programs
+described in this manual.
+
+`@FILE'
+     Read command-line options from FILE.  The options read are
+     inserted in place of the original @FILE option.  If FILE does not
+     exist, or cannot be read, then the option will be treated
+     literally, and not removed.
+
+     Options in FILE are separated by whitespace.  A whitespace
+     character may be included in an option by surrounding the entire
+     option in either single or double quotes.  Any character
+     (including a backslash) may be included by prefixing the character
+     to be included with a backslash.  The FILE may itself contain
+     additional @FILE options; any such options will be processed
+     recursively.
+
+`--help'
+     Display the command-line options supported by the program.
+
+`--version'
+     Display the version number of the program.
+
+
+
+File: binutils.info,  Node: Selecting The Target System,  Next: Reporting Bugs,  Prev: Common Options,  Up: Top
+
+16 Selecting the Target System
+******************************
+
+You can specify two aspects of the target system to the GNU binary file
+utilities, each in several ways:
+
+   * the target
+
+   * the architecture
+
+   In the following summaries, the lists of ways to specify values are
+in order of decreasing precedence.  The ways listed first override those
+listed later.
+
+   The commands to list valid values only list the values for which the
+programs you are running were configured.  If they were configured with
+`--enable-targets=all', the commands list most of the available values,
+but a few are left out; not all targets can be configured in at once
+because some of them can only be configured "native" (on hosts with the
+same type as the target system).
+
+* Menu:
+
+* Target Selection::
+* Architecture Selection::
+
+
+File: binutils.info,  Node: Target Selection,  Next: Architecture Selection,  Up: Selecting The Target System
+
+16.1 Target Selection
+=====================
+
+A "target" is an object file format.  A given target may be supported
+for multiple architectures (*note Architecture Selection::).  A target
+selection may also have variations for different operating systems or
+architectures.
+
+   The command to list valid target values is `objdump -i' (the first
+column of output contains the relevant information).
+
+   Some sample values are: `a.out-hp300bsd', `ecoff-littlemips',
+`a.out-sunos-big'.
+
+   You can also specify a target using a configuration triplet.  This is
+the same sort of name that is passed to `configure' to specify a
+target.  When you use a configuration triplet as an argument, it must be
+fully canonicalized.  You can see the canonical version of a triplet by
+running the shell script `config.sub' which is included with the
+sources.
+
+   Some sample configuration triplets are: `m68k-hp-bsd',
+`mips-dec-ultrix', `sparc-sun-sunos'.
+
+`objdump' Target
+----------------
+
+Ways to specify:
+
+  1. command line option: `-b' or `--target'
+
+  2. environment variable `GNUTARGET'
+
+  3. deduced from the input file
+
+`objcopy' and `strip' Input Target
+----------------------------------
+
+Ways to specify:
+
+  1. command line options: `-I' or `--input-target', or `-F' or
+     `--target'
+
+  2. environment variable `GNUTARGET'
+
+  3. deduced from the input file
+
+`objcopy' and `strip' Output Target
+-----------------------------------
+
+Ways to specify:
+
+  1. command line options: `-O' or `--output-target', or `-F' or
+     `--target'
+
+  2. the input target (see "`objcopy' and `strip' Input Target" above)
+
+  3. environment variable `GNUTARGET'
+
+  4. deduced from the input file
+
+`nm', `size', and `strings' Target
+----------------------------------
+
+Ways to specify:
+
+  1. command line option: `--target'
+
+  2. environment variable `GNUTARGET'
+
+  3. deduced from the input file
+
+
+File: binutils.info,  Node: Architecture Selection,  Prev: Target Selection,  Up: Selecting The Target System
+
+16.2 Architecture Selection
+===========================
+
+An "architecture" is a type of CPU on which an object file is to run.
+Its name may contain a colon, separating the name of the processor
+family from the name of the particular CPU.
+
+   The command to list valid architecture values is `objdump -i' (the
+second column contains the relevant information).
+
+   Sample values: `m68k:68020', `mips:3000', `sparc'.
+
+`objdump' Architecture
+----------------------
+
+Ways to specify:
+
+  1. command line option: `-m' or `--architecture'
+
+  2. deduced from the input file
+
+`objcopy', `nm', `size', `strings' Architecture
+-----------------------------------------------
+
+Ways to specify:
+
+  1. deduced from the input file
+
+
+File: binutils.info,  Node: Reporting Bugs,  Next: GNU Free Documentation License,  Prev: Selecting The Target System,  Up: Top
+
+17 Reporting Bugs
+*****************
+
+Your bug reports play an essential role in making the binary utilities
+reliable.
+
+   Reporting a bug may help you by bringing a solution to your problem,
+or it may not.  But in any case the principal function of a bug report
+is to help the entire community by making the next version of the binary
+utilities work better.  Bug reports are your contribution to their
+maintenance.
+
+   In order for a bug report to serve its purpose, you must include the
+information that enables us to fix the bug.
+
+* Menu:
+
+* Bug Criteria::                Have you found a bug?
+* Bug Reporting::               How to report bugs
+
+
+File: binutils.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
+
+17.1 Have You Found a Bug?
+==========================
+
+If you are not sure whether you have found a bug, here are some
+guidelines:
+
+   * If a binary utility gets a fatal signal, for any input whatever,
+     that is a bug.  Reliable utilities never crash.
+
+   * If a binary utility produces an error message for valid input,
+     that is a bug.
+
+   * If you are an experienced user of binary utilities, your
+     suggestions for improvement are welcome in any case.
+
+
+File: binutils.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
+
+17.2 How to Report Bugs
+=======================
+
+A number of companies and individuals offer support for GNU products.
+If you obtained the binary utilities from a support organization, we
+recommend you contact that organization first.
+
+   You can find contact information for many support companies and
+individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
+
+   In any event, we also recommend that you send bug reports for the
+binary utilities to `bug-binutils at gnu.org'.
+
+   The fundamental principle of reporting bugs usefully is this:
+*report all the facts*.  If you are not sure whether to state a fact or
+leave it out, state it!
+
+   Often people omit facts because they think they know what causes the
+problem and assume that some details do not matter.  Thus, you might
+assume that the name of a file you use in an example does not matter.
+Well, probably it does not, but one cannot be sure.  Perhaps the bug is
+a stray memory reference which happens to fetch from the location where
+that pathname is stored in memory; perhaps, if the pathname were
+different, the contents of that location would fool the utility into
+doing the right thing despite the bug.  Play it safe and give a
+specific, complete example.  That is the easiest thing for you to do,
+and the most helpful.
+
+   Keep in mind that the purpose of a bug report is to enable us to fix
+the bug if it is new to us.  Therefore, always write your bug reports
+on the assumption that the bug has not been reported previously.
+
+   Sometimes people give a few sketchy facts and ask, "Does this ring a
+bell?"  This cannot help us fix a bug, so it is basically useless.  We
+respond by asking for enough details to enable us to investigate.  You
+might as well expedite matters by sending them to begin with.
+
+   To enable us to fix the bug, you should include all these things:
+
+   * The version of the utility.  Each utility announces it if you
+     start it with the `--version' argument.
+
+     Without this, we will not know whether there is any point in
+     looking for the bug in the current version of the binary utilities.
+
+   * Any patches you may have applied to the source, including any
+     patches made to the `BFD' library.
+
+   * The type of machine you are using, and the operating system name
+     and version number.
+
+   * What compiler (and its version) was used to compile the
+     utilities--e.g.  "`gcc-2.7'".
+
+   * The command arguments you gave the utility to observe the bug.  To
+     guarantee you will not omit something important, list them all.  A
+     copy of the Makefile (or the output from make) is sufficient.
+
+     If we were to try to guess the arguments, we would probably guess
+     wrong and then we might not encounter the bug.
+
+   * A complete input file, or set of input files, that will reproduce
+     the bug.  If the utility is reading an object file or files, then
+     it is generally most helpful to send the actual object files,
+     uuencoded if necessary to get them through the mail system.  Note
+     that `bug-binutils at gnu.org' is a mailing list, so you should avoid
+     sending very large files to it.  Making the files available for
+     anonymous FTP is OK.
+
+     If the source files were produced exclusively using GNU programs
+     (e.g., `gcc', `gas', and/or the GNU `ld'), then it may be OK to
+     send the source files rather than the object files.  In this case,
+     be sure to say exactly what version of `gcc', or whatever, was
+     used to produce the object files.  Also say how `gcc', or
+     whatever, was configured.
+
+   * A description of what behavior you observe that you believe is
+     incorrect.  For example, "It gets a fatal signal."
+
+     Of course, if the bug is that the utility gets a fatal signal,
+     then we will certainly notice it.  But if the bug is incorrect
+     output, we might not notice unless it is glaringly wrong.  You
+     might as well not give us a chance to make a mistake.
+
+     Even if the problem you experience is a fatal signal, you should
+     still say so explicitly.  Suppose something strange is going on,
+     such as your copy of the utility is out of synch, or you have
+     encountered a bug in the C library on your system.  (This has
+     happened!)  Your copy might crash and ours would not.  If you told
+     us to expect a crash, then when ours fails to crash, we would know
+     that the bug was not happening for us.  If you had not told us to
+     expect a crash, then we would not be able to draw any conclusion
+     from our observations.
+
+   * If you wish to suggest changes to the source, send us context
+     diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
+     Always send diffs from the old file to the new file.  If you wish
+     to discuss something in the `ld' source, refer to it by context,
+     not by line number.
+
+     The line numbers in our development sources will not match those
+     in your sources.  Your line numbers would convey no useful
+     information to us.
+
+   Here are some things that are not necessary:
+
+   * A description of the envelope of the bug.
+
+     Often people who encounter a bug spend a lot of time investigating
+     which changes to the input file will make the bug go away and which
+     changes will not affect it.
+
+     This is often time consuming and not very useful, because the way
+     we will find the bug is by running a single example under the
+     debugger with breakpoints, not by pure deduction from a series of
+     examples.  We recommend that you save your time for something else.
+
+     Of course, if you can find a simpler example to report _instead_
+     of the original one, that is a convenience for us.  Errors in the
+     output will be easier to spot, running under the debugger will take
+     less time, and so on.
+
+     However, simplification is not vital; if you do not want to do
+     this, report the bug anyway and send us the entire test case you
+     used.
+
+   * A patch for the bug.
+
+     A patch for the bug does help us if it is a good one.  But do not
+     omit the necessary information, such as the test case, on the
+     assumption that a patch is all we need.  We might see problems
+     with your patch and decide to fix the problem another way, or we
+     might not understand it at all.
+
+     Sometimes with programs as complicated as the binary utilities it
+     is very hard to construct an example that will make the program
+     follow a certain path through the code.  If you do not send us the
+     example, we will not be able to construct one, so we will not be
+     able to verify that the bug is fixed.
+
+     And if we cannot understand what bug you are trying to fix, or why
+     your patch should be an improvement, we will not install it.  A
+     test case will help us to understand.
+
+   * A guess about what the bug is or what it depends on.
+
+     Such guesses are usually wrong.  Even we cannot guess right about
+     such things without first using the debugger to find the facts.
+
+
+File: binutils.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Reporting Bugs,  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.
+
+
+File: binutils.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+ [index ]
+* Menu:
+
+* .stab:                                 objdump.             (line 324)
+* addr2line:                             addr2line.           (line   6)
+* address to file name and line number:  addr2line.           (line   6)
+* all header information, object file:   objdump.             (line 364)
+* ar:                                    ar.                  (line   6)
+* ar compatibility:                      ar.                  (line  40)
+* architecture:                          objdump.             (line 176)
+* architectures available:               objdump.             (line 161)
+* archive contents:                      ranlib.              (line   6)
+* archive headers:                       objdump.             (line  60)
+* archives:                              ar.                  (line   6)
+* base files:                            dlltool.             (line 108)
+* bug criteria:                          Bug Criteria.        (line   6)
+* bug reports:                           Bug Reporting.       (line   6)
+* bugs:                                  Reporting Bugs.      (line   6)
+* bugs, reporting:                       Bug Reporting.       (line   6)
+* c++filt:                               c++filt.             (line   6)
+* changing object addresses:             objcopy.             (line 266)
+* changing section address:              objcopy.             (line 276)
+* changing section LMA:                  objcopy.             (line 284)
+* changing section VMA:                  objcopy.             (line 297)
+* changing start address:                objcopy.             (line 261)
+* collections of files:                  ar.                  (line   6)
+* compatibility, ar:                     ar.                  (line  40)
+* contents of archive:                   ar cmdline.          (line  88)
+* crash:                                 Bug Criteria.        (line   9)
+* creating archives:                     ar cmdline.          (line 127)
+* cxxfilt:                               c++filt.             (line  14)
+* dates in archive:                      ar cmdline.          (line 154)
+* debug symbols:                         objdump.             (line 319)
+* debugging symbols:                     nm.                  (line 116)
+* deleting from archive:                 ar cmdline.          (line  26)
+* demangling C++ symbols:                c++filt.             (line   6)
+* demangling in nm:                      nm.                  (line 124)
+* demangling in objdump <1>:             addr2line.           (line  55)
+* demangling in objdump:                 objdump.             (line  88)
+* disassembling object code:             objdump.             (line 110)
+* disassembly architecture:              objdump.             (line 176)
+* disassembly endianness:                objdump.             (line 126)
+* disassembly, with source:              objdump.             (line 305)
+* discarding symbols:                    strip.               (line   6)
+* DLL:                                   dlltool.             (line   6)
+* dlltool:                               dlltool.             (line   6)
+* DWARF:                                 objdump.             (line 319)
+* dynamic relocation entries, in object file: objdump.        (line 294)
+* dynamic symbol table entries, printing: objdump.            (line 348)
+* dynamic symbols:                       nm.                  (line 136)
+* ELF dynamic section information:       readelf.             (line 102)
+* ELF file header information:           readelf.             (line  51)
+* ELF file information:                  readelf.             (line   6)
+* ELF notes:                             readelf.             (line  87)
+* ELF object file format:                objdump.             (line 324)
+* ELF program header information:        readelf.             (line  57)
+* ELF reloc information:                 readelf.             (line  91)
+* ELF section group information:         readelf.             (line  68)
+* ELF section information:               readelf.             (line  63)
+* ELF segment information:               readelf.             (line  57)
+* ELF symbol table information:          readelf.             (line  78)
+* ELF version sections informations:     readelf.             (line 106)
+* endianness:                            objdump.             (line 126)
+* error on valid input:                  Bug Criteria.        (line  12)
+* external symbols:                      nm.                  (line 148)
+* extract from archive:                  ar cmdline.          (line 103)
+* fatal signal:                          Bug Criteria.        (line   9)
+* file name:                             nm.                  (line 110)
+* header information, all:               objdump.             (line 364)
+* input .def file:                       dlltool.             (line 104)
+* input file name:                       nm.                  (line 110)
+* libraries:                             ar.                  (line  25)
+* listings strings:                      strings.             (line   6)
+* machine instructions:                  objdump.             (line 110)
+* moving in archive:                     ar cmdline.          (line  34)
+* MRI compatibility, ar:                 ar scripts.          (line   8)
+* name duplication in archive:           ar cmdline.          (line  97)
+* name length:                           ar.                  (line  18)
+* nm:                                    nm.                  (line   6)
+* nm compatibility:                      nm.                  (line 120)
+* nm format:                             nm.                  (line 120)
+* not writing archive index:             ar cmdline.          (line 173)
+* objdump:                               objdump.             (line   6)
+* object code format <1>:                addr2line.           (line  50)
+* object code format <2>:                strings.             (line  65)
+* object code format <3>:                size.                (line  79)
+* object code format <4>:                objdump.             (line  74)
+* object code format:                    nm.                  (line 212)
+* object file header:                    objdump.             (line 132)
+* object file information:               objdump.             (line   6)
+* object file sections:                  objdump.             (line 300)
+* object formats available:              objdump.             (line 161)
+* operations on archive:                 ar cmdline.          (line  22)
+* printing from archive:                 ar cmdline.          (line  46)
+* printing strings:                      strings.             (line   6)
+* quick append to archive:               ar cmdline.          (line  54)
+* radix for section sizes:               size.                (line  65)
+* ranlib:                                ranlib.              (line   6)
+* readelf:                               readelf.             (line   6)
+* relative placement in archive:         ar cmdline.          (line 115)
+* relocation entries, in object file:    objdump.             (line 288)
+* removing symbols:                      strip.               (line   6)
+* repeated names in archive:             ar cmdline.          (line  97)
+* replacement in archive:                ar cmdline.          (line  70)
+* reporting bugs:                        Reporting Bugs.      (line   6)
+* scripts, ar:                           ar scripts.          (line   8)
+* section addresses in objdump:          objdump.             (line  66)
+* section headers:                       objdump.             (line 143)
+* section information:                   objdump.             (line 166)
+* section sizes:                         size.                (line   6)
+* sections, full contents:               objdump.             (line 300)
+* size:                                  size.                (line   6)
+* size display format:                   size.                (line  26)
+* size number format:                    size.                (line  65)
+* sorting symbols:                       nm.                  (line 167)
+* source code context:                   objdump.             (line 136)
+* source disassembly:                    objdump.             (line 305)
+* source file name:                      nm.                  (line 110)
+* source filenames for object files:     objdump.             (line 170)
+* stab:                                  objdump.             (line 324)
+* start-address:                         objdump.             (line 334)
+* stop-address:                          objdump.             (line 338)
+* strings:                               strings.             (line   6)
+* strings, printing:                     strings.             (line   6)
+* strip:                                 strip.               (line   6)
+* symbol index <1>:                      ranlib.              (line   6)
+* symbol index:                          ar.                  (line  28)
+* symbol index, listing:                 nm.                  (line 182)
+* symbol line numbers:                   nm.                  (line 152)
+* symbol table entries, printing:        objdump.             (line 343)
+* symbols:                               nm.                  (line   6)
+* symbols, discarding:                   strip.               (line   6)
+* undefined symbols:                     nm.                  (line 217)
+* Unix compatibility, ar:                ar cmdline.          (line   8)
+* unwind information:                    readelf.             (line  96)
+* updating an archive:                   ar cmdline.          (line 180)
+* version:                               Top.                 (line   6)
+* VMA in objdump:                        objdump.             (line  66)
+* wide output, printing:                 objdump.             (line 370)
+* writing archive index:                 ar cmdline.          (line 167)
+
+
+
+Tag Table:
+Node: Top1751
+Node: ar3304
+Node: ar cmdline5482
+Node: ar scripts13625
+Node: nm19313
+Node: objcopy27509
+Node: objdump50561
+Node: ranlib65474
+Node: size66229
+Node: strings69076
+Node: strip71426
+Node: c++filt76905
+Ref: c++filt-Footnote-181833
+Node: addr2line81939
+Node: nlmconv85210
+Node: windres87816
+Node: dlltool93549
+Node: def file format104387
+Node: readelf106125
+Node: Common Options110833
+Node: Selecting The Target System111873
+Node: Target Selection112805
+Node: Architecture Selection114787
+Node: Reporting Bugs115615
+Node: Bug Criteria116394
+Node: Bug Reporting116947
+Node: GNU Free Documentation License124041
+Node: Index143773
+
+End Tag Table

Modified: branches/binutils/package/binutils/doc/binutils.texi
===================================================================
--- branches/binutils/package/binutils/doc/binutils.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/binutils.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -3525,7 +3525,7 @@
 
 @c man begin OPTIONS
 @table @env
- at include @value{top_srcdir}/../libiberty/at-file.texi
+ at include at-file.texi
 @c man end
 
 @item --help

Added: branches/binutils/package/binutils/doc/config.texi
===================================================================
--- branches/binutils/package/binutils/doc/config.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/config.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2 @@
+ at set VERSION 2.17
+ at set UPDATED June 2006

Added: branches/binutils/package/binutils/doc/cxxfilt.man
===================================================================
--- branches/binutils/package/binutils/doc/cxxfilt.man	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/cxxfilt.man	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,345 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "C++FILT 1"
+.TH C++FILT 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+cxxfilt \- Demangle C++ and Java symbols.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+c++filt [\fB\-_\fR|\fB\-\-strip\-underscores\fR]
+        [\fB\-n\fR|\fB\-\-no\-strip\-underscores\fR]
+        [\fB\-p\fR|\fB\-\-no\-params\fR]
+        [\fB\-t\fR|\fB\-\-types\fR]
+        [\fB\-i\fR|\fB\-\-no\-verbose\fR]
+        [\fB\-s\fR \fIformat\fR|\fB\-\-format=\fR\fIformat\fR]
+        [\fB\-\-help\fR]  [\fB\-\-version\fR]  [\fIsymbol\fR...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \*(C+ and Java languages provide function overloading, which means
+that you can write many functions with the same name, providing that
+each function takes parameters of different types.  In order to be
+able to distinguish these similarly named functions \*(C+ and Java
+encode them into a low-level assembler name which uniquely identifies
+each different version.  This process is known as \fImangling\fR. The
+\&\fBc++filt\fR
+[1]
+program does the inverse mapping: it decodes (\fIdemangles\fR) low-level
+names into user-level names so that they can be read.
+.PP
+Every alphanumeric word (consisting of letters, digits, underscores,
+dollars, or periods) seen in the input is a potential mangled name.
+If the name decodes into a \*(C+ name, the \*(C+ name replaces the
+low-level name in the output, otherwise the original word is output.
+In this way you can pass an entire assembler source file, containing
+mangled names, through \fBc++filt\fR and see the same source file
+containing demangled names.
+.PP
+You can also use \fBc++filt\fR to decipher individual symbols by
+passing them on the command line:
+.PP
+.Vb 1
+\&        c++filt <symbol>
+.Ve
+.PP
+If no \fIsymbol\fR arguments are given, \fBc++filt\fR reads symbol
+names from the standard input instead.  All the results are printed on
+the standard output.  The difference between reading names from the
+command line versus reading names from the standard input is that
+command line arguments are expected to be just mangled names and no
+checking is performed to seperate them from surrounding text.  Thus
+for example:
+.PP
+.Vb 1
+\&        c++filt \-n _Z1fv
+.Ve
+.PP
+will work and demangle the name to \*(L"f()\*(R" whereas:
+.PP
+.Vb 1
+\&        c++filt \-n _Z1fv,
+.Ve
+.PP
+will not work.  (Note the extra comma at the end of the mangled
+name which makes it invalid).  This command however will work:
+.PP
+.Vb 1
+\&        echo _Z1fv, | c++filt \-n
+.Ve
+.PP
+and will display \*(L"f(),\*(R" ie the demangled name followed by a
+trailing comma.  This behaviour is because when the names are read
+from the standard input it is expected that they might be part of an
+assembler source file where there might be extra, extraneous
+characters trailing after a mangled name.  eg:
+.PP
+.Vb 1
+\&            .type   _Z1fv, @function
+.Ve
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-_\fR" 4
+.IX Item "-_"
+.PD 0
+.IP "\fB\-\-strip\-underscores\fR" 4
+.IX Item "--strip-underscores"
+.PD
+On some systems, both the C and \*(C+ compilers put an underscore in front
+of every name.  For example, the C name \f(CW\*(C`foo\*(C'\fR gets the low-level
+name \f(CW\*(C`_foo\*(C'\fR.  This option removes the initial underscore.  Whether
+\&\fBc++filt\fR removes the underscore by default is target dependent.
+.IP "\fB\-j\fR" 4
+.IX Item "-j"
+.PD 0
+.IP "\fB\-\-java\fR" 4
+.IX Item "--java"
+.PD
+Prints demangled names using Java syntax.  The default is to use \*(C+
+syntax.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-no\-strip\-underscores\fR" 4
+.IX Item "--no-strip-underscores"
+.PD
+Do not remove the initial underscore.
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-no\-params\fR" 4
+.IX Item "--no-params"
+.PD
+When demangling the name of a function, do not display the types of
+the function's parameters.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-types\fR" 4
+.IX Item "--types"
+.PD
+Attempt to demangle types as well as function names.  This is disabled
+by default since mangled types are normally only used internally in
+the compiler, and they can be confused with non-mangled names.  eg
+a function called \*(L"a\*(R" treated as a mangled type name would be
+demangled to \*(L"signed char\*(R".
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+.PD 0
+.IP "\fB\-\-no\-verbose\fR" 4
+.IX Item "--no-verbose"
+.PD
+Do not include implementation details (if any) in the demangled
+output.
+.IP "\fB\-s\fR \fIformat\fR" 4
+.IX Item "-s format"
+.PD 0
+.IP "\fB\-\-format=\fR\fIformat\fR" 4
+.IX Item "--format=format"
+.PD
+\&\fBc++filt\fR can decode various methods of mangling, used by
+different compilers.  The argument to this option selects which
+method it uses:
+.RS 4
+.ie n .IP """auto""" 4
+.el .IP "\f(CWauto\fR" 4
+.IX Item "auto"
+Automatic selection based on executable (the default method)
+.ie n .IP """gnu""" 4
+.el .IP "\f(CWgnu\fR" 4
+.IX Item "gnu"
+the one used by the \s-1GNU\s0 \*(C+ compiler (g++)
+.ie n .IP """lucid""" 4
+.el .IP "\f(CWlucid\fR" 4
+.IX Item "lucid"
+the one used by the Lucid compiler (lcc)
+.ie n .IP """arm""" 4
+.el .IP "\f(CWarm\fR" 4
+.IX Item "arm"
+the one specified by the \*(C+ Annotated Reference Manual
+.ie n .IP """hp""" 4
+.el .IP "\f(CWhp\fR" 4
+.IX Item "hp"
+the one used by the \s-1HP\s0 compiler (aCC)
+.ie n .IP """edg""" 4
+.el .IP "\f(CWedg\fR" 4
+.IX Item "edg"
+the one used by the \s-1EDG\s0 compiler
+.ie n .IP """gnu\-v3""" 4
+.el .IP "\f(CWgnu\-v3\fR" 4
+.IX Item "gnu-v3"
+the one used by the \s-1GNU\s0 \*(C+ compiler (g++) with the V3 \s-1ABI\s0.
+.ie n .IP """java""" 4
+.el .IP "\f(CWjava\fR" 4
+.IX Item "java"
+the one used by the \s-1GNU\s0 Java compiler (gcj)
+.ie n .IP """gnat""" 4
+.el .IP "\f(CWgnat\fR" 4
+.IX Item "gnat"
+the one used by the \s-1GNU\s0 Ada compiler (\s-1GNAT\s0).
+.RE
+.RS 4
+.RE
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print a summary of the options to \fBc++filt\fR and exit.
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+Print the version number of \fBc++filt\fR and exit.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "FOOTNOTES"
+.IX Header "FOOTNOTES"
+.IP "1." 4
+MS-DOS does not allow \f(CW\*(C`+\*(C'\fR characters in file names, so on 
+MS-DOS this program is named \fB\s-1CXXFILT\s0\fR.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/dlltool.1
===================================================================
--- branches/binutils/package/binutils/doc/dlltool.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/dlltool.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,478 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "DLLTOOL 1"
+.TH DLLTOOL 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+dlltool \- Create files needed to build and use DLLs.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+dlltool [\fB\-d\fR|\fB\-\-input\-def\fR \fIdef-file-name\fR]
+        [\fB\-b\fR|\fB\-\-base\-file\fR \fIbase-file-name\fR]
+        [\fB\-e\fR|\fB\-\-output\-exp\fR \fIexports-file-name\fR]
+        [\fB\-z\fR|\fB\-\-output\-def\fR \fIdef-file-name\fR]
+        [\fB\-l\fR|\fB\-\-output\-lib\fR \fIlibrary-file-name\fR]        
+        [\fB\-\-export\-all\-symbols\fR] [\fB\-\-no\-export\-all\-symbols\fR]
+        [\fB\-\-exclude\-symbols\fR \fIlist\fR]
+        [\fB\-\-no\-default\-excludes\fR]
+        [\fB\-S\fR|\fB\-\-as\fR \fIpath-to-assembler\fR] [\fB\-f\fR|\fB\-\-as\-flags\fR \fIoptions\fR]
+        [\fB\-D\fR|\fB\-\-dllname\fR \fIname\fR] [\fB\-m\fR|\fB\-\-machine\fR \fImachine\fR]
+        [\fB\-a\fR|\fB\-\-add\-indirect\fR]
+        [\fB\-U\fR|\fB\-\-add\-underscore\fR] [\fB\-\-add\-stdcall\-underscore\fR]
+        [\fB\-k\fR|\fB\-\-kill\-at\fR] [\fB\-A\fR|\fB\-\-add\-stdcall\-alias\fR]
+        [\fB\-p\fR|\fB\-\-ext\-prefix\-alias\fR \fIprefix\fR]
+        [\fB\-x\fR|\fB\-\-no\-idata4\fR] [\fB\-c\fR|\fB\-\-no\-idata5\fR] [\fB\-i\fR|\fB\-\-interwork\fR]
+        [\fB\-n\fR|\fB\-\-nodelete\fR] [\fB\-t\fR|\fB\-\-temp\-prefix\fR \fIprefix\fR]
+        [\fB\-v\fR|\fB\-\-verbose\fR] 
+        [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
+        [object\-file ...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBdlltool\fR reads its inputs, which can come from the \fB\-d\fR and
+\&\fB\-b\fR options as well as object files specified on the command
+line.  It then processes these inputs and if the \fB\-e\fR option has
+been specified it creates a exports file.  If the \fB\-l\fR option
+has been specified it creates a library file and if the \fB\-z\fR option
+has been specified it creates a def file.  Any or all of the \fB\-e\fR, 
+\&\fB\-l\fR and \fB\-z\fR options can be present in one invocation of 
+dlltool.
+.PP
+When creating a \s-1DLL\s0, along with the source for the \s-1DLL\s0, it is necessary
+to have three other files.  \fBdlltool\fR can help with the creation of
+these files.
+.PP
+The first file is a \fI.def\fR file which specifies which functions are
+exported from the \s-1DLL\s0, which functions the \s-1DLL\s0 imports, and so on.  This
+is a text file and can be created by hand, or \fBdlltool\fR can be used
+to create it using the \fB\-z\fR option.  In this case \fBdlltool\fR
+will scan the object files specified on its command line looking for
+those functions which have been specially marked as being exported and
+put entries for them in the \fI.def\fR file it creates.
+.PP
+In order to mark a function as being exported from a \s-1DLL\s0, it needs to
+have an \fB\-export:<name_of_function>\fR entry in the \fB.drectve\fR
+section of the object file.  This can be done in C by using the
+\&\fIasm()\fR operator:
+.PP
+.Vb 2
+\&          asm (".section .drectve");  
+\&          asm (".ascii \e"\-export:my_func\e"");
+.Ve
+.PP
+.Vb 1
+\&          int my_func (void) { ... }
+.Ve
+.PP
+The second file needed for \s-1DLL\s0 creation is an exports file.  This file
+is linked with the object files that make up the body of the \s-1DLL\s0 and it
+handles the interface between the \s-1DLL\s0 and the outside world.  This is a
+binary file and it can be created by giving the \fB\-e\fR option to
+\&\fBdlltool\fR when it is creating or reading in a \fI.def\fR file. 
+.PP
+The third file needed for \s-1DLL\s0 creation is the library file that programs
+will link with in order to access the functions in the \s-1DLL\s0.  This file
+can be created by giving the \fB\-l\fR option to dlltool when it
+is creating or reading in a \fI.def\fR file.
+.PP
+\&\fBdlltool\fR builds the library file by hand, but it builds the
+exports file by creating temporary files containing assembler statements
+and then assembling these.  The \fB\-S\fR command line option can be
+used to specify the path to the assembler that dlltool will use,
+and the \fB\-f\fR option can be used to pass specific flags to that
+assembler.  The \fB\-n\fR can be used to prevent dlltool from deleting
+these temporary assembler files when it is done, and if \fB\-n\fR is
+specified twice then this will prevent dlltool from deleting the
+temporary object files it used to build the library.
+.PP
+Here is an example of creating a \s-1DLL\s0 from a source file \fBdll.c\fR and
+also creating a program (from an object file called \fBprogram.o\fR)
+that uses that \s-1DLL:\s0
+.PP
+.Vb 4
+\&          gcc \-c dll.c
+\&          dlltool \-e exports.o \-l dll.lib dll.o
+\&          gcc dll.o exports.o \-o dll.dll
+\&          gcc program.o dll.lib \-o program
+.Ve
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The command line options have the following meanings:
+.IP "\fB\-d\fR \fIfilename\fR" 4
+.IX Item "-d filename"
+.PD 0
+.IP "\fB\-\-input\-def\fR \fIfilename\fR" 4
+.IX Item "--input-def filename"
+.PD
+Specifies the name of a \fI.def\fR file to be read in and processed.
+.IP "\fB\-b\fR \fIfilename\fR" 4
+.IX Item "-b filename"
+.PD 0
+.IP "\fB\-\-base\-file\fR \fIfilename\fR" 4
+.IX Item "--base-file filename"
+.PD
+Specifies the name of a base file to be read in and processed.  The
+contents of this file will be added to the relocation section in the
+exports file generated by dlltool.
+.IP "\fB\-e\fR \fIfilename\fR" 4
+.IX Item "-e filename"
+.PD 0
+.IP "\fB\-\-output\-exp\fR \fIfilename\fR" 4
+.IX Item "--output-exp filename"
+.PD
+Specifies the name of the export file to be created by dlltool.
+.IP "\fB\-z\fR \fIfilename\fR" 4
+.IX Item "-z filename"
+.PD 0
+.IP "\fB\-\-output\-def\fR \fIfilename\fR" 4
+.IX Item "--output-def filename"
+.PD
+Specifies the name of the \fI.def\fR file to be created by dlltool.
+.IP "\fB\-l\fR \fIfilename\fR" 4
+.IX Item "-l filename"
+.PD 0
+.IP "\fB\-\-output\-lib\fR \fIfilename\fR" 4
+.IX Item "--output-lib filename"
+.PD
+Specifies the name of the library file to be created by dlltool.
+.IP "\fB\-\-export\-all\-symbols\fR" 4
+.IX Item "--export-all-symbols"
+Treat all global and weak defined symbols found in the input object
+files as symbols to be exported.  There is a small list of symbols which
+are not exported by default; see the \fB\-\-no\-default\-excludes\fR
+option.  You may add to the list of symbols to not export by using the
+\&\fB\-\-exclude\-symbols\fR option.
+.IP "\fB\-\-no\-export\-all\-symbols\fR" 4
+.IX Item "--no-export-all-symbols"
+Only export symbols explicitly listed in an input \fI.def\fR file or in
+\&\fB.drectve\fR sections in the input object files.  This is the default
+behaviour.  The \fB.drectve\fR sections are created by \fBdllexport\fR
+attributes in the source code.
+.IP "\fB\-\-exclude\-symbols\fR \fIlist\fR" 4
+.IX Item "--exclude-symbols list"
+Do not export the symbols in \fIlist\fR.  This is a list of symbol names
+separated by comma or colon characters.  The symbol names should not
+contain a leading underscore.  This is only meaningful when
+\&\fB\-\-export\-all\-symbols\fR is used.
+.IP "\fB\-\-no\-default\-excludes\fR" 4
+.IX Item "--no-default-excludes"
+When \fB\-\-export\-all\-symbols\fR is used, it will by default avoid
+exporting certain special symbols.  The current list of symbols to avoid
+exporting is \fBDllMain at 12\fR, \fBDllEntryPoint at 0\fR,
+\&\fBimpure_ptr\fR.  You may use the \fB\-\-no\-default\-excludes\fR option
+to go ahead and export these special symbols.  This is only meaningful
+when \fB\-\-export\-all\-symbols\fR is used.
+.IP "\fB\-S\fR \fIpath\fR" 4
+.IX Item "-S path"
+.PD 0
+.IP "\fB\-\-as\fR \fIpath\fR" 4
+.IX Item "--as path"
+.PD
+Specifies the path, including the filename, of the assembler to be used
+to create the exports file.
+.IP "\fB\-f\fR \fIoptions\fR" 4
+.IX Item "-f options"
+.PD 0
+.IP "\fB\-\-as\-flags\fR \fIoptions\fR" 4
+.IX Item "--as-flags options"
+.PD
+Specifies any specific command line options to be passed to the
+assembler when building the exports file.  This option will work even if
+the \fB\-S\fR option is not used.  This option only takes one argument,
+and if it occurs more than once on the command line, then later
+occurrences will override earlier occurrences.  So if it is necessary to
+pass multiple options to the assembler they should be enclosed in
+double quotes.
+.IP "\fB\-D\fR \fIname\fR" 4
+.IX Item "-D name"
+.PD 0
+.IP "\fB\-\-dll\-name\fR \fIname\fR" 4
+.IX Item "--dll-name name"
+.PD
+Specifies the name to be stored in the \fI.def\fR file as the name of
+the \s-1DLL\s0 when the \fB\-e\fR option is used.  If this option is not
+present, then the filename given to the \fB\-e\fR option will be
+used as the name of the \s-1DLL\s0.
+.IP "\fB\-m\fR \fImachine\fR" 4
+.IX Item "-m machine"
+.PD 0
+.IP "\fB\-machine\fR \fImachine\fR" 4
+.IX Item "-machine machine"
+.PD
+Specifies the type of machine for which the library file should be
+built.  \fBdlltool\fR has a built in default type, depending upon how
+it was created, but this option can be used to override that.  This is
+normally only useful when creating DLLs for an \s-1ARM\s0 processor, when the
+contents of the \s-1DLL\s0 are actually encode using Thumb instructions.
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-add\-indirect\fR" 4
+.IX Item "--add-indirect"
+.PD
+Specifies that when \fBdlltool\fR is creating the exports file it
+should add a section which allows the exported functions to be
+referenced without using the import library.  Whatever the hell that
+means! 
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+.PD 0
+.IP "\fB\-\-add\-underscore\fR" 4
+.IX Item "--add-underscore"
+.PD
+Specifies that when \fBdlltool\fR is creating the exports file it
+should prepend an underscore to the names of \fIall\fR exported symbols. 
+.IP "\fB\-\-add\-stdcall\-underscore\fR" 4
+.IX Item "--add-stdcall-underscore"
+Specifies that when \fBdlltool\fR is creating the exports file it
+should prepend an underscore to the names of exported \fIstdcall\fR
+functions. Variable names and non-stdcall function names are not modified.
+This option is useful when creating GNU-compatible import libs for third
+party DLLs that were built with MS-Windows tools.
+.IP "\fB\-k\fR" 4
+.IX Item "-k"
+.PD 0
+.IP "\fB\-\-kill\-at\fR" 4
+.IX Item "--kill-at"
+.PD
+Specifies that when \fBdlltool\fR is creating the exports file it
+should not append the string \fB@ <number>\fR.  These numbers are
+called ordinal numbers and they represent another way of accessing the
+function in a \s-1DLL\s0, other than by name.
+.IP "\fB\-A\fR" 4
+.IX Item "-A"
+.PD 0
+.IP "\fB\-\-add\-stdcall\-alias\fR" 4
+.IX Item "--add-stdcall-alias"
+.PD
+Specifies that when \fBdlltool\fR is creating the exports file it
+should add aliases for stdcall symbols without \fB@ <number>\fR
+in addition to the symbols with \fB@ <number>\fR.
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-ext\-prefix\-alias\fR \fIprefix\fR" 4
+.IX Item "--ext-prefix-alias prefix"
+.PD
+Causes \fBdlltool\fR to create external aliases for all \s-1DLL\s0
+imports with the specified prefix.  The aliases are created for both
+external and import symbols with no leading underscore.
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.IP "\fB\-\-no\-idata4\fR" 4
+.IX Item "--no-idata4"
+.PD
+Specifies that when \fBdlltool\fR is creating the exports and library
+files it should omit the \f(CW\*(C`.idata4\*(C'\fR section.  This is for compatibility
+with certain operating systems.
+.IP "\fB\-c\fR" 4
+.IX Item "-c"
+.PD 0
+.IP "\fB\-\-no\-idata5\fR" 4
+.IX Item "--no-idata5"
+.PD
+Specifies that when \fBdlltool\fR is creating the exports and library
+files it should omit the \f(CW\*(C`.idata5\*(C'\fR section.  This is for compatibility
+with certain operating systems.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+.PD 0
+.IP "\fB\-\-interwork\fR" 4
+.IX Item "--interwork"
+.PD
+Specifies that \fBdlltool\fR should mark the objects in the library
+file and exports file that it produces as supporting interworking
+between \s-1ARM\s0 and Thumb code.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-nodelete\fR" 4
+.IX Item "--nodelete"
+.PD
+Makes \fBdlltool\fR preserve the temporary assembler files it used to
+create the exports file.  If this option is repeated then dlltool will
+also preserve the temporary object files it uses to create the library
+file.
+.IP "\fB\-t\fR \fIprefix\fR" 4
+.IX Item "-t prefix"
+.PD 0
+.IP "\fB\-\-temp\-prefix\fR \fIprefix\fR" 4
+.IX Item "--temp-prefix prefix"
+.PD
+Makes \fBdlltool\fR use \fIprefix\fR when constructing the names of
+temporary assembler and object files.  By default, the temp file prefix
+is generated from the pid.  
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-verbose\fR" 4
+.IX Item "--verbose"
+.PD
+Make dlltool describe what it is doing.
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Displays a list of command line options and then exits.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Displays dlltool's version number and then exits.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+The Info pages for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/nlmconv.1
===================================================================
--- branches/binutils/package/binutils/doc/nlmconv.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/nlmconv.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,243 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "NLMCONV 1"
+.TH NLMCONV 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+nlmconv \- converts object code into an NLM.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+nlmconv [\fB\-I\fR \fIbfdname\fR|\fB\-\-input\-target=\fR\fIbfdname\fR]
+        [\fB\-O\fR \fIbfdname\fR|\fB\-\-output\-target=\fR\fIbfdname\fR]
+        [\fB\-T\fR \fIheaderfile\fR|\fB\-\-header\-file=\fR\fIheaderfile\fR]
+        [\fB\-d\fR|\fB\-\-debug\fR] [\fB\-l\fR \fIlinker\fR|\fB\-\-linker=\fR\fIlinker\fR]
+        [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
+        \fIinfile\fR \fIoutfile\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBnlmconv\fR converts the relocatable \fBi386\fR object file
+\&\fIinfile\fR into the NetWare Loadable Module \fIoutfile\fR, optionally
+reading \fIheaderfile\fR for \s-1NLM\s0 header information.  For instructions
+on writing the \s-1NLM\s0 command file language used in header files, see the
+\&\fBlinkers\fR section, \fB\s-1NLMLINK\s0\fR in particular, of the \fI\s-1NLM\s0
+Development and Tools Overview\fR, which is part of the \s-1NLM\s0 Software
+Developer's Kit (\*(L"\s-1NLM\s0 \s-1SDK\s0\*(R"), available from Novell, Inc.
+\&\fBnlmconv\fR uses the \s-1GNU\s0 Binary File Descriptor library to read
+\&\fIinfile\fR;
+.PP
+\&\fBnlmconv\fR can perform a link step.  In other words, you can list
+more than one object file for input if you list them in the definitions
+file (rather than simply specifying one input file on the command line).
+In this case, \fBnlmconv\fR calls the linker for you.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-I\fR \fIbfdname\fR" 4
+.IX Item "-I bfdname"
+.PD 0
+.IP "\fB\-\-input\-target=\fR\fIbfdname\fR" 4
+.IX Item "--input-target=bfdname"
+.PD
+Object format of the input file.  \fBnlmconv\fR can usually determine
+the format of a given file (so no default is necessary).
+.IP "\fB\-O\fR \fIbfdname\fR" 4
+.IX Item "-O bfdname"
+.PD 0
+.IP "\fB\-\-output\-target=\fR\fIbfdname\fR" 4
+.IX Item "--output-target=bfdname"
+.PD
+Object format of the output file.  \fBnlmconv\fR infers the output
+format based on the input format, e.g. for a \fBi386\fR input file the
+output format is \fBnlm32\-i386\fR.
+.IP "\fB\-T\fR \fIheaderfile\fR" 4
+.IX Item "-T headerfile"
+.PD 0
+.IP "\fB\-\-header\-file=\fR\fIheaderfile\fR" 4
+.IX Item "--header-file=headerfile"
+.PD
+Reads \fIheaderfile\fR for \s-1NLM\s0 header information.  For instructions on
+writing the \s-1NLM\s0 command file language used in header files, see see the
+\&\fBlinkers\fR section, of the \fI\s-1NLM\s0 Development and Tools
+Overview\fR, which is part of the \s-1NLM\s0 Software Developer's Kit, available
+from Novell, Inc.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-\-debug\fR" 4
+.IX Item "--debug"
+.PD
+Displays (on standard error) the linker command line used by \fBnlmconv\fR.
+.IP "\fB\-l\fR \fIlinker\fR" 4
+.IX Item "-l linker"
+.PD 0
+.IP "\fB\-\-linker=\fR\fIlinker\fR" 4
+.IX Item "--linker=linker"
+.PD
+Use \fIlinker\fR for any linking.  \fIlinker\fR can be an absolute or a
+relative pathname.
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Prints a usage summary.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Prints the version number for \fBnlmconv\fR.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/nm.1
===================================================================
--- branches/binutils/package/binutils/doc/nm.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/nm.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,449 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "NM 1"
+.TH NM 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+nm \- list symbols from object files
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+nm [\fB\-a\fR|\fB\-\-debug\-syms\fR] [\fB\-g\fR|\fB\-\-extern\-only\fR]
+   [\fB\-B\fR] [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]] [\fB\-D\fR|\fB\-\-dynamic\fR]
+   [\fB\-S\fR|\fB\-\-print\-size\fR] [\fB\-s\fR|\fB\-\-print\-armap\fR]
+   [\fB\-A\fR|\fB\-o\fR|\fB\-\-print\-file\-name\fR][\fB\-\-special\-syms\fR]
+   [\fB\-n\fR|\fB\-v\fR|\fB\-\-numeric\-sort\fR] [\fB\-p\fR|\fB\-\-no\-sort\fR]
+   [\fB\-r\fR|\fB\-\-reverse\-sort\fR] [\fB\-\-size\-sort\fR] [\fB\-u\fR|\fB\-\-undefined\-only\fR]
+   [\fB\-t\fR \fIradix\fR|\fB\-\-radix=\fR\fIradix\fR] [\fB\-P\fR|\fB\-\-portability\fR]
+   [\fB\-\-target=\fR\fIbfdname\fR] [\fB\-f\fR\fIformat\fR|\fB\-\-format=\fR\fIformat\fR]
+   [\fB\-\-defined\-only\fR] [\fB\-l\fR|\fB\-\-line\-numbers\fR] [\fB\-\-no\-demangle\fR]
+   [\fB\-V\fR|\fB\-\-version\fR] [\fB\-X 32_64\fR] [\fB\-\-help\fR]  [\fIobjfile\fR...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\s-1GNU\s0 \fBnm\fR lists the symbols from object files \fIobjfile\fR....
+If no object files are listed as arguments, \fBnm\fR assumes the file
+\&\fIa.out\fR.
+.PP
+For each symbol, \fBnm\fR shows:
+.IP "\(bu" 4
+The symbol value, in the radix selected by options (see below), or
+hexadecimal by default.
+.IP "\(bu" 4
+The symbol type.  At least the following types are used; others are, as
+well, depending on the object file format.  If lowercase, the symbol is
+local; if uppercase, the symbol is global (external).
+.RS 4
+.ie n .IP """A""" 4
+.el .IP "\f(CWA\fR" 4
+.IX Item "A"
+The symbol's value is absolute, and will not be changed by further
+linking.
+.ie n .IP """B""" 4
+.el .IP "\f(CWB\fR" 4
+.IX Item "B"
+The symbol is in the uninitialized data section (known as \s-1BSS\s0).
+.ie n .IP """C""" 4
+.el .IP "\f(CWC\fR" 4
+.IX Item "C"
+The symbol is common.  Common symbols are uninitialized data.  When
+linking, multiple common symbols may appear with the same name.  If the
+symbol is defined anywhere, the common symbols are treated as undefined
+references.
+.ie n .IP """D""" 4
+.el .IP "\f(CWD\fR" 4
+.IX Item "D"
+The symbol is in the initialized data section.
+.ie n .IP """G""" 4
+.el .IP "\f(CWG\fR" 4
+.IX Item "G"
+The symbol is in an initialized data section for small objects.  Some
+object file formats permit more efficient access to small data objects,
+such as a global int variable as opposed to a large global array.
+.ie n .IP """I""" 4
+.el .IP "\f(CWI\fR" 4
+.IX Item "I"
+The symbol is an indirect reference to another symbol.  This is a \s-1GNU\s0
+extension to the a.out object file format which is rarely used.
+.ie n .IP """N""" 4
+.el .IP "\f(CWN\fR" 4
+.IX Item "N"
+The symbol is a debugging symbol.
+.ie n .IP """R""" 4
+.el .IP "\f(CWR\fR" 4
+.IX Item "R"
+The symbol is in a read only data section.
+.ie n .IP """S""" 4
+.el .IP "\f(CWS\fR" 4
+.IX Item "S"
+The symbol is in an uninitialized data section for small objects.
+.ie n .IP """T""" 4
+.el .IP "\f(CWT\fR" 4
+.IX Item "T"
+The symbol is in the text (code) section.
+.ie n .IP """U""" 4
+.el .IP "\f(CWU\fR" 4
+.IX Item "U"
+The symbol is undefined.
+.ie n .IP """V""" 4
+.el .IP "\f(CWV\fR" 4
+.IX Item "V"
+The symbol is a weak object.  When a weak defined symbol is linked with
+a normal defined symbol, the normal defined symbol is used with no error.
+When a weak undefined symbol is linked and the symbol is not defined,
+the value of the weak symbol becomes zero with no error.
+.ie n .IP """W""" 4
+.el .IP "\f(CWW\fR" 4
+.IX Item "W"
+The symbol is a weak symbol that has not been specifically tagged as a
+weak object symbol.  When a weak defined symbol is linked with a normal
+defined symbol, the normal defined symbol is used with no error.
+When a weak undefined symbol is linked and the symbol is not defined,
+the value of the symbol is determined in a system-specific manner without
+error.  On some systems, uppercase indicates that a default value has been 
+specified.
+.ie n .IP """\-""" 4
+.el .IP "\f(CW\-\fR" 4
+.IX Item "-"
+The symbol is a stabs symbol in an a.out object file.  In this case, the
+next values printed are the stabs other field, the stabs desc field, and
+the stab type.  Stabs symbols are used to hold debugging information.
+.ie n .IP """?""" 4
+.el .IP "\f(CW?\fR" 4
+.IX Item "?"
+The symbol type is unknown, or object file format specific.
+.RE
+.RS 4
+.RE
+.IP "\(bu" 4
+The symbol name.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The long and short forms of options, shown here as alternatives, are
+equivalent.
+.IP "\fB\-A\fR" 4
+.IX Item "-A"
+.PD 0
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+.IP "\fB\-\-print\-file\-name\fR" 4
+.IX Item "--print-file-name"
+.PD
+Precede each symbol by the name of the input file (or archive member)
+in which it was found, rather than identifying the input file once only,
+before all of its symbols.
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-debug\-syms\fR" 4
+.IX Item "--debug-syms"
+.PD
+Display all symbols, even debugger-only symbols; normally these are not
+listed.
+.IP "\fB\-B\fR" 4
+.IX Item "-B"
+The same as \fB\-\-format=bsd\fR (for compatibility with the \s-1MIPS\s0 \fBnm\fR).
+.IP "\fB\-C\fR" 4
+.IX Item "-C"
+.PD 0
+.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
+.IX Item "--demangle[=style]"
+.PD
+Decode (\fIdemangle\fR) low-level symbol names into user-level names.
+Besides removing any initial underscore prepended by the system, this
+makes \*(C+ function names readable. Different compilers have different
+mangling styles. The optional demangling style argument can be used to 
+choose an appropriate demangling style for your compiler. 
+.IP "\fB\-\-no\-demangle\fR" 4
+.IX Item "--no-demangle"
+Do not demangle low-level symbol names.  This is the default.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-dynamic\fR" 4
+.IX Item "--dynamic"
+.PD
+Display the dynamic symbols rather than the normal symbols.  This is
+only meaningful for dynamic objects, such as certain types of shared
+libraries.
+.IP "\fB\-f\fR \fIformat\fR" 4
+.IX Item "-f format"
+.PD 0
+.IP "\fB\-\-format=\fR\fIformat\fR" 4
+.IX Item "--format=format"
+.PD
+Use the output format \fIformat\fR, which can be \f(CW\*(C`bsd\*(C'\fR,
+\&\f(CW\*(C`sysv\*(C'\fR, or \f(CW\*(C`posix\*(C'\fR.  The default is \f(CW\*(C`bsd\*(C'\fR.
+Only the first character of \fIformat\fR is significant; it can be
+either upper or lower case.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+.PD 0
+.IP "\fB\-\-extern\-only\fR" 4
+.IX Item "--extern-only"
+.PD
+Display only external symbols.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+.PD 0
+.IP "\fB\-\-line\-numbers\fR" 4
+.IX Item "--line-numbers"
+.PD
+For each symbol, use debugging information to try to find a filename and
+line number.  For a defined symbol, look for the line number of the
+address of the symbol.  For an undefined symbol, look for the line
+number of a relocation entry which refers to the symbol.  If line number
+information can be found, print it after the other symbol information.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.IP "\fB\-\-numeric\-sort\fR" 4
+.IX Item "--numeric-sort"
+.PD
+Sort symbols numerically by their addresses, rather than alphabetically
+by their names. 
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-no\-sort\fR" 4
+.IX Item "--no-sort"
+.PD
+Do not bother to sort the symbols in any order; print them in the order
+encountered.
+.IP "\fB\-P\fR" 4
+.IX Item "-P"
+.PD 0
+.IP "\fB\-\-portability\fR" 4
+.IX Item "--portability"
+.PD
+Use the \s-1POSIX\s0.2 standard output format instead of the default format.
+Equivalent to \fB\-f posix\fR.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-print\-size\fR" 4
+.IX Item "--print-size"
+.PD
+Print size, not the value, of defined symbols for the \f(CW\*(C`bsd\*(C'\fR output format.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-print\-armap\fR" 4
+.IX Item "--print-armap"
+.PD
+When listing symbols from archive members, include the index: a mapping
+(stored in the archive by \fBar\fR or \fBranlib\fR) of which modules
+contain definitions for which names.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.IP "\fB\-\-reverse\-sort\fR" 4
+.IX Item "--reverse-sort"
+.PD
+Reverse the order of the sort (whether numeric or alphabetic); let the
+last come first.
+.IP "\fB\-\-size\-sort\fR" 4
+.IX Item "--size-sort"
+Sort symbols by size.  The size is computed as the difference between
+the value of the symbol and the value of the symbol with the next higher
+value.  If the \f(CW\*(C`bsd\*(C'\fR output format is used the size of the symbol 
+is printed, rather than the value, and \fB\-S\fR must be used in order 
+both size and value to be printed.
+.IP "\fB\-\-special\-syms\fR" 4
+.IX Item "--special-syms"
+Display symbols which have a target-specific special meaning.  These
+symbols are usually used by the target for some special processing and
+are not normally helpful when included included in the normal symbol
+lists.  For example for \s-1ARM\s0 targets this option would skip the mapping
+symbols used to mark transistions between \s-1ARM\s0 code, \s-1THUMB\s0 code and
+data.
+.IP "\fB\-t\fR \fIradix\fR" 4
+.IX Item "-t radix"
+.PD 0
+.IP "\fB\-\-radix=\fR\fIradix\fR" 4
+.IX Item "--radix=radix"
+.PD
+Use \fIradix\fR as the radix for printing the symbol values.  It must be
+\&\fBd\fR for decimal, \fBo\fR for octal, or \fBx\fR for hexadecimal.
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+Specify an object code format other than your system's default format.
+.IP "\fB\-u\fR" 4
+.IX Item "-u"
+.PD 0
+.IP "\fB\-\-undefined\-only\fR" 4
+.IX Item "--undefined-only"
+.PD
+Display only undefined symbols (those external to each object file).
+.IP "\fB\-\-defined\-only\fR" 4
+.IX Item "--defined-only"
+Display only defined symbols for each object file.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Show the version number of \fBnm\fR and exit.
+.IP "\fB\-X\fR" 4
+.IX Item "-X"
+This option is ignored for compatibility with the \s-1AIX\s0 version of
+\&\fBnm\fR.  It takes one parameter which must be the string
+\&\fB32_64\fR.  The default mode of \s-1AIX\s0 \fBnm\fR corresponds
+to \fB\-X 32\fR, which is not supported by \s-1GNU\s0 \fBnm\fR.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Show a summary of the options to \fBnm\fR and exit.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/objcopy.1
===================================================================
--- branches/binutils/package/binutils/doc/objcopy.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/objcopy.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,795 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "OBJCOPY 1"
+.TH OBJCOPY 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+objcopy \- copy and translate object files
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+objcopy [\fB\-F\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR]
+        [\fB\-I\fR \fIbfdname\fR|\fB\-\-input\-target=\fR\fIbfdname\fR]
+        [\fB\-O\fR \fIbfdname\fR|\fB\-\-output\-target=\fR\fIbfdname\fR]
+        [\fB\-B\fR \fIbfdarch\fR|\fB\-\-binary\-architecture=\fR\fIbfdarch\fR]
+        [\fB\-S\fR|\fB\-\-strip\-all\fR]
+        [\fB\-g\fR|\fB\-\-strip\-debug\fR]
+        [\fB\-K\fR \fIsymbolname\fR|\fB\-\-keep\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-N\fR \fIsymbolname\fR|\fB\-\-strip\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-G\fR \fIsymbolname\fR|\fB\-\-keep\-global\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-L\fR \fIsymbolname\fR|\fB\-\-localize\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-\-globalize\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-W\fR \fIsymbolname\fR|\fB\-\-weaken\-symbol=\fR\fIsymbolname\fR]
+        [\fB\-w\fR|\fB\-\-wildcard\fR]
+        [\fB\-x\fR|\fB\-\-discard\-all\fR]
+        [\fB\-X\fR|\fB\-\-discard\-locals\fR]
+        [\fB\-b\fR \fIbyte\fR|\fB\-\-byte=\fR\fIbyte\fR]
+        [\fB\-i\fR \fIinterleave\fR|\fB\-\-interleave=\fR\fIinterleave\fR]
+        [\fB\-j\fR \fIsectionname\fR|\fB\-\-only\-section=\fR\fIsectionname\fR]
+        [\fB\-R\fR \fIsectionname\fR|\fB\-\-remove\-section=\fR\fIsectionname\fR]
+        [\fB\-p\fR|\fB\-\-preserve\-dates\fR]
+        [\fB\-\-debugging\fR]
+        [\fB\-\-gap\-fill=\fR\fIval\fR]
+        [\fB\-\-pad\-to=\fR\fIaddress\fR]
+        [\fB\-\-set\-start=\fR\fIval\fR]
+        [\fB\-\-adjust\-start=\fR\fIincr\fR]
+        [\fB\-\-change\-addresses=\fR\fIincr\fR]
+        [\fB\-\-change\-section\-address\fR \fIsection\fR{=,+,\-}\fIval\fR]
+        [\fB\-\-change\-section\-lma\fR \fIsection\fR{=,+,\-}\fIval\fR]
+        [\fB\-\-change\-section\-vma\fR \fIsection\fR{=,+,\-}\fIval\fR]
+        [\fB\-\-change\-warnings\fR] [\fB\-\-no\-change\-warnings\fR]
+        [\fB\-\-set\-section\-flags\fR \fIsection\fR=\fIflags\fR]
+        [\fB\-\-add\-section\fR \fIsectionname\fR=\fIfilename\fR]
+        [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR[,\fIflags\fR]]
+        [\fB\-\-change\-leading\-char\fR] [\fB\-\-remove\-leading\-char\fR]
+        [\fB\-\-srec\-len=\fR\fIival\fR] [\fB\-\-srec\-forceS3\fR]
+        [\fB\-\-redefine\-sym\fR \fIold\fR=\fInew\fR]
+        [\fB\-\-redefine\-syms=\fR\fIfilename\fR]
+        [\fB\-\-weaken\fR]
+        [\fB\-\-keep\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-strip\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-keep\-global\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-localize\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-globalize\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-weaken\-symbols=\fR\fIfilename\fR]
+        [\fB\-\-alt\-machine\-code=\fR\fIindex\fR]
+        [\fB\-\-prefix\-symbols=\fR\fIstring\fR]
+        [\fB\-\-prefix\-sections=\fR\fIstring\fR]
+        [\fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR]
+        [\fB\-\-add\-gnu\-debuglink=\fR\fIpath-to-file\fR]
+        [\fB\-\-keep\-file\-symbols\fR]
+        [\fB\-\-only\-keep\-debug\fR]
+        [\fB\-\-writable\-text\fR]
+        [\fB\-\-readonly\-text\fR]
+        [\fB\-\-pure\fR]
+        [\fB\-\-impure\fR]
+        [\fB\-v\fR|\fB\-\-verbose\fR]
+        [\fB\-V\fR|\fB\-\-version\fR]  
+        [\fB\-\-help\fR] [\fB\-\-info\fR]
+        \fIinfile\fR [\fIoutfile\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \s-1GNU\s0 \fBobjcopy\fR utility copies the contents of an object
+file to another.  \fBobjcopy\fR uses the \s-1GNU\s0 \s-1BFD\s0 Library to
+read and write the object files.  It can write the destination object
+file in a format different from that of the source object file.  The
+exact behavior of \fBobjcopy\fR is controlled by command-line options.
+Note that \fBobjcopy\fR should be able to copy a fully linked file
+between any two formats. However, copying a relocatable object file
+between any two formats may not work as expected.
+.PP
+\&\fBobjcopy\fR creates temporary files to do its translations and
+deletes them afterward.  \fBobjcopy\fR uses \s-1BFD\s0 to do all its
+translation work; it has access to all the formats described in \s-1BFD\s0
+and thus is able to recognize most formats without being told
+explicitly.  
+.PP
+\&\fBobjcopy\fR can be used to generate S\-records by using an output
+target of \fBsrec\fR (e.g., use \fB\-O srec\fR).
+.PP
+\&\fBobjcopy\fR can be used to generate a raw binary file by using an
+output target of \fBbinary\fR (e.g., use \fB\-O binary\fR).  When
+\&\fBobjcopy\fR generates a raw binary file, it will essentially produce
+a memory dump of the contents of the input object file.  All symbols and
+relocation information will be discarded.  The memory dump will start at
+the load address of the lowest section copied into the output file.
+.PP
+When generating an S\-record or a raw binary file, it may be helpful to
+use \fB\-S\fR to remove sections containing debugging information.  In
+some cases \fB\-R\fR will be useful to remove sections which contain
+information that is not needed by the binary file.
+.PP
+Note\-\-\-\fBobjcopy\fR is not able to change the endianness of its input
+files.  If the input format has an endianness (some formats do not),
+\&\fBobjcopy\fR can only copy the inputs into file formats that have the
+same endianness or which have no endianness (e.g., \fBsrec\fR).
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fIinfile\fR" 4
+.IX Item "infile"
+.PD 0
+.IP "\fIoutfile\fR" 4
+.IX Item "outfile"
+.PD
+The input and output files, respectively.
+If you do not specify \fIoutfile\fR, \fBobjcopy\fR creates a
+temporary file and destructively renames the result with
+the name of \fIinfile\fR.
+.IP "\fB\-I\fR \fIbfdname\fR" 4
+.IX Item "-I bfdname"
+.PD 0
+.IP "\fB\-\-input\-target=\fR\fIbfdname\fR" 4
+.IX Item "--input-target=bfdname"
+.PD
+Consider the source file's object format to be \fIbfdname\fR, rather than
+attempting to deduce it.  
+.IP "\fB\-O\fR \fIbfdname\fR" 4
+.IX Item "-O bfdname"
+.PD 0
+.IP "\fB\-\-output\-target=\fR\fIbfdname\fR" 4
+.IX Item "--output-target=bfdname"
+.PD
+Write the output file using the object format \fIbfdname\fR.
+.IP "\fB\-F\fR \fIbfdname\fR" 4
+.IX Item "-F bfdname"
+.PD 0
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+.PD
+Use \fIbfdname\fR as the object format for both the input and the output
+file; i.e., simply transfer data from source to destination with no
+translation.  
+.IP "\fB\-B\fR \fIbfdarch\fR" 4
+.IX Item "-B bfdarch"
+.PD 0
+.IP "\fB\-\-binary\-architecture=\fR\fIbfdarch\fR" 4
+.IX Item "--binary-architecture=bfdarch"
+.PD
+Useful when transforming a raw binary input file into an object file.
+In this case the output architecture can be set to \fIbfdarch\fR. This
+option will be ignored if the input file has a known \fIbfdarch\fR. You
+can access this binary data inside a program by referencing the special
+symbols that are created by the conversion process.  These symbols are
+called _binary_\fIobjfile\fR_start, _binary_\fIobjfile\fR_end and
+_binary_\fIobjfile\fR_size.  e.g. you can transform a picture file into
+an object file and then access it in your code using these symbols. 
+.IP "\fB\-j\fR \fIsectionname\fR" 4
+.IX Item "-j sectionname"
+.PD 0
+.IP "\fB\-\-only\-section=\fR\fIsectionname\fR" 4
+.IX Item "--only-section=sectionname"
+.PD
+Copy only the named section from the input file to the output file.
+This option may be given more than once.  Note that using this option
+inappropriately may make the output file unusable.
+.IP "\fB\-R\fR \fIsectionname\fR" 4
+.IX Item "-R sectionname"
+.PD 0
+.IP "\fB\-\-remove\-section=\fR\fIsectionname\fR" 4
+.IX Item "--remove-section=sectionname"
+.PD
+Remove any section named \fIsectionname\fR from the output file.  This
+option may be given more than once.  Note that using this option
+inappropriately may make the output file unusable.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-strip\-all\fR" 4
+.IX Item "--strip-all"
+.PD
+Do not copy relocation and symbol information from the source file.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+.PD 0
+.IP "\fB\-\-strip\-debug\fR" 4
+.IX Item "--strip-debug"
+.PD
+Do not copy debugging symbols or sections from the source file.
+.IP "\fB\-\-strip\-unneeded\fR" 4
+.IX Item "--strip-unneeded"
+Strip all symbols that are not needed for relocation processing.
+.IP "\fB\-K\fR \fIsymbolname\fR" 4
+.IX Item "-K symbolname"
+.PD 0
+.IP "\fB\-\-keep\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--keep-symbol=symbolname"
+.PD
+When stripping symbols, keep symbol \fIsymbolname\fR even if it would
+normally be stripped.  This option may be given more than once.
+.IP "\fB\-N\fR \fIsymbolname\fR" 4
+.IX Item "-N symbolname"
+.PD 0
+.IP "\fB\-\-strip\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--strip-symbol=symbolname"
+.PD
+Do not copy symbol \fIsymbolname\fR from the source file.  This option
+may be given more than once.
+.IP "\fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--strip-unneeded-symbol=symbolname"
+Do not copy symbol \fIsymbolname\fR from the source file unless it is needed
+by a relocation.  This option may be given more than once.
+.IP "\fB\-G\fR \fIsymbolname\fR" 4
+.IX Item "-G symbolname"
+.PD 0
+.IP "\fB\-\-keep\-global\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--keep-global-symbol=symbolname"
+.PD
+Keep only symbol \fIsymbolname\fR global.  Make all other symbols local
+to the file, so that they are not visible externally.  This option may
+be given more than once.
+.IP "\fB\-L\fR \fIsymbolname\fR" 4
+.IX Item "-L symbolname"
+.PD 0
+.IP "\fB\-\-localize\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--localize-symbol=symbolname"
+.PD
+Make symbol \fIsymbolname\fR local to the file, so that it is not
+visible externally.  This option may be given more than once.
+.IP "\fB\-W\fR \fIsymbolname\fR" 4
+.IX Item "-W symbolname"
+.PD 0
+.IP "\fB\-\-weaken\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--weaken-symbol=symbolname"
+.PD
+Make symbol \fIsymbolname\fR weak. This option may be given more than once.
+.IP "\fB\-\-globalize\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--globalize-symbol=symbolname"
+Give symbol \fIsymbolname\fR global scoping so that it is visible
+outside of the file in which it is defined.  This option may be given
+more than once.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+.PD 0
+.IP "\fB\-\-wildcard\fR" 4
+.IX Item "--wildcard"
+.PD
+Permit regular expressions in \fIsymbolname\fRs used in other command
+line options.  The question mark (?), asterisk (*), backslash (\e) and
+square brackets ([]) operators can be used anywhere in the symbol
+name.  If the first character of the symbol name is the exclamation
+point (!) then the sense of the switch is reversed for that symbol.
+For example:
+.Sp
+.Vb 1
+\&          \-w \-W !foo \-W fo*
+.Ve
+.Sp
+would cause objcopy to weaken all symbols that start with \*(L"fo\*(R"
+except for the symbol \*(L"foo\*(R".
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.IP "\fB\-\-discard\-all\fR" 4
+.IX Item "--discard-all"
+.PD
+Do not copy non-global symbols from the source file.
+.IP "\fB\-X\fR" 4
+.IX Item "-X"
+.PD 0
+.IP "\fB\-\-discard\-locals\fR" 4
+.IX Item "--discard-locals"
+.PD
+Do not copy compiler-generated local symbols.
+(These usually start with \fBL\fR or \fB.\fR.)
+.IP "\fB\-b\fR \fIbyte\fR" 4
+.IX Item "-b byte"
+.PD 0
+.IP "\fB\-\-byte=\fR\fIbyte\fR" 4
+.IX Item "--byte=byte"
+.PD
+Keep only every \fIbyte\fRth byte of the input file (header data is not
+affected).  \fIbyte\fR can be in the range from 0 to \fIinterleave\fR\-1,
+where \fIinterleave\fR is given by the \fB\-i\fR or \fB\-\-interleave\fR
+option, or the default of 4.  This option is useful for creating files
+to program \s-1ROM\s0.  It is typically used with an \f(CW\*(C`srec\*(C'\fR output
+target.
+.IP "\fB\-i\fR \fIinterleave\fR" 4
+.IX Item "-i interleave"
+.PD 0
+.IP "\fB\-\-interleave=\fR\fIinterleave\fR" 4
+.IX Item "--interleave=interleave"
+.PD
+Only copy one out of every \fIinterleave\fR bytes.  Select which byte to
+copy with the \fB\-b\fR or \fB\-\-byte\fR option.  The default is 4.
+\&\fBobjcopy\fR ignores this option if you do not specify either \fB\-b\fR or
+\&\fB\-\-byte\fR.
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-preserve\-dates\fR" 4
+.IX Item "--preserve-dates"
+.PD
+Set the access and modification dates of the output file to be the same
+as those of the input file.
+.IP "\fB\-\-debugging\fR" 4
+.IX Item "--debugging"
+Convert debugging information, if possible.  This is not the default
+because only certain debugging formats are supported, and the
+conversion process can be time consuming.
+.IP "\fB\-\-gap\-fill\fR \fIval\fR" 4
+.IX Item "--gap-fill val"
+Fill gaps between sections with \fIval\fR.  This operation applies to
+the \fIload address\fR (\s-1LMA\s0) of the sections.  It is done by increasing
+the size of the section with the lower address, and filling in the extra
+space created with \fIval\fR.
+.IP "\fB\-\-pad\-to\fR \fIaddress\fR" 4
+.IX Item "--pad-to address"
+Pad the output file up to the load address \fIaddress\fR.  This is
+done by increasing the size of the last section.  The extra space is
+filled in with the value specified by \fB\-\-gap\-fill\fR (default zero).
+.IP "\fB\-\-set\-start\fR \fIval\fR" 4
+.IX Item "--set-start val"
+Set the start address of the new file to \fIval\fR.  Not all object file
+formats support setting the start address.
+.IP "\fB\-\-change\-start\fR \fIincr\fR" 4
+.IX Item "--change-start incr"
+.PD 0
+.IP "\fB\-\-adjust\-start\fR \fIincr\fR" 4
+.IX Item "--adjust-start incr"
+.PD
+Change the start address by adding \fIincr\fR.  Not all object file
+formats support setting the start address.
+.IP "\fB\-\-change\-addresses\fR \fIincr\fR" 4
+.IX Item "--change-addresses incr"
+.PD 0
+.IP "\fB\-\-adjust\-vma\fR \fIincr\fR" 4
+.IX Item "--adjust-vma incr"
+.PD
+Change the \s-1VMA\s0 and \s-1LMA\s0 addresses of all sections, as well as the start
+address, by adding \fIincr\fR.  Some object file formats do not permit
+section addresses to be changed arbitrarily.  Note that this does not
+relocate the sections; if the program expects sections to be loaded at a
+certain address, and this option is used to change the sections such
+that they are loaded at a different address, the program may fail. 
+.IP "\fB\-\-change\-section\-address\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-address section{=,+,-}val"
+.PD 0
+.IP "\fB\-\-adjust\-section\-vma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--adjust-section-vma section{=,+,-}val"
+.PD
+Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of the named
+\&\fIsection\fR.  If \fB=\fR is used, the section address is set to
+\&\fIval\fR.  Otherwise, \fIval\fR is added to or subtracted from the
+section address.  See the comments under \fB\-\-change\-addresses\fR,
+above. If \fIsection\fR does not exist in the input file, a warning will
+be issued, unless \fB\-\-no\-change\-warnings\fR is used.
+.IP "\fB\-\-change\-section\-lma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-lma section{=,+,-}val"
+Set or change the \s-1LMA\s0 address of the named \fIsection\fR.  The \s-1LMA\s0
+address is the address where the section will be loaded into memory at
+program load time.  Normally this is the same as the \s-1VMA\s0 address, which
+is the address of the section at program run time, but on some systems,
+especially those where a program is held in \s-1ROM\s0, the two can be
+different.  If \fB=\fR is used, the section address is set to
+\&\fIval\fR.  Otherwise, \fIval\fR is added to or subtracted from the
+section address.  See the comments under \fB\-\-change\-addresses\fR,
+above.  If \fIsection\fR does not exist in the input file, a warning
+will be issued, unless \fB\-\-no\-change\-warnings\fR is used.  
+.IP "\fB\-\-change\-section\-vma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-vma section{=,+,-}val"
+Set or change the \s-1VMA\s0 address of the named \fIsection\fR.  The \s-1VMA\s0
+address is the address where the section will be located once the
+program has started executing.  Normally this is the same as the \s-1LMA\s0
+address, which is the address where the section will be loaded into
+memory, but on some systems, especially those where a program is held in
+\&\s-1ROM\s0, the two can be different.  If \fB=\fR is used, the section address
+is set to \fIval\fR.  Otherwise, \fIval\fR is added to or subtracted
+from the section address.  See the comments under
+\&\fB\-\-change\-addresses\fR, above.  If \fIsection\fR does not exist in
+the input file, a warning will be issued, unless
+\&\fB\-\-no\-change\-warnings\fR is used.   
+.IP "\fB\-\-change\-warnings\fR" 4
+.IX Item "--change-warnings"
+.PD 0
+.IP "\fB\-\-adjust\-warnings\fR" 4
+.IX Item "--adjust-warnings"
+.PD
+If \fB\-\-change\-section\-address\fR or \fB\-\-change\-section\-lma\fR or
+\&\fB\-\-change\-section\-vma\fR is used, and the named section does not
+exist, issue a warning.  This is the default. 
+.IP "\fB\-\-no\-change\-warnings\fR" 4
+.IX Item "--no-change-warnings"
+.PD 0
+.IP "\fB\-\-no\-adjust\-warnings\fR" 4
+.IX Item "--no-adjust-warnings"
+.PD
+Do not issue a warning if \fB\-\-change\-section\-address\fR or
+\&\fB\-\-adjust\-section\-lma\fR or \fB\-\-adjust\-section\-vma\fR is used, even
+if the named section does not exist. 
+.IP "\fB\-\-set\-section\-flags\fR \fIsection\fR\fB=\fR\fIflags\fR" 4
+.IX Item "--set-section-flags section=flags"
+Set the flags for the named section.  The \fIflags\fR argument is a
+comma separated string of flag names.  The recognized names are
+\&\fBalloc\fR, \fBcontents\fR, \fBload\fR, \fBnoload\fR,
+\&\fBreadonly\fR, \fBcode\fR, \fBdata\fR, \fBrom\fR, \fBshare\fR, and
+\&\fBdebug\fR.  You can set the \fBcontents\fR flag for a section which
+does not have contents, but it is not meaningful to clear the
+\&\fBcontents\fR flag of a section which does have contents\*(--just remove
+the section instead.  Not all flags are meaningful for all object file
+formats.
+.IP "\fB\-\-add\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4
+.IX Item "--add-section sectionname=filename"
+Add a new section named \fIsectionname\fR while copying the file.  The
+contents of the new section are taken from the file \fIfilename\fR.  The
+size of the section will be the size of the file.  This option only
+works on file formats which can support sections with arbitrary names.
+.IP "\fB\-\-rename\-section\fR \fIoldname\fR\fB=\fR\fInewname\fR\fB[,\fR\fIflags\fR\fB]\fR" 4
+.IX Item "--rename-section oldname=newname[,flags]"
+Rename a section from \fIoldname\fR to \fInewname\fR, optionally
+changing the section's flags to \fIflags\fR in the process.  This has
+the advantage over usng a linker script to perform the rename in that
+the output stays as an object file and does not become a linked
+executable.
+.Sp
+This option is particularly helpful when the input format is binary,
+since this will always create a section called .data.  If for example,
+you wanted instead to create a section called .rodata containing binary
+data you could use the following command line to achieve it:
+.Sp
+.Vb 3
+\&          objcopy \-I binary \-O <output_format> \-B <architecture> \e
+\&           \-\-rename\-section .data=.rodata,alloc,load,readonly,data,contents \e
+\&           <input_binary_file> <output_object_file>
+.Ve
+.IP "\fB\-\-change\-leading\-char\fR" 4
+.IX Item "--change-leading-char"
+Some object file formats use special characters at the start of
+symbols.  The most common such character is underscore, which compilers
+often add before every symbol.  This option tells \fBobjcopy\fR to
+change the leading character of every symbol when it converts between
+object file formats.  If the object file formats use the same leading
+character, this option has no effect.  Otherwise, it will add a
+character, or remove a character, or change a character, as
+appropriate.
+.IP "\fB\-\-remove\-leading\-char\fR" 4
+.IX Item "--remove-leading-char"
+If the first character of a global symbol is a special symbol leading
+character used by the object file format, remove the character.  The
+most common symbol leading character is underscore.  This option will
+remove a leading underscore from all global symbols.  This can be useful
+if you want to link together objects of different file formats with
+different conventions for symbol names.  This is different from
+\&\fB\-\-change\-leading\-char\fR because it always changes the symbol name
+when appropriate, regardless of the object file format of the output
+file.
+.IP "\fB\-\-srec\-len=\fR\fIival\fR" 4
+.IX Item "--srec-len=ival"
+Meaningful only for srec output.  Set the maximum length of the Srecords
+being produced to \fIival\fR.  This length covers both address, data and
+crc fields.
+.IP "\fB\-\-srec\-forceS3\fR" 4
+.IX Item "--srec-forceS3"
+Meaningful only for srec output.  Avoid generation of S1/S2 records, 
+creating S3\-only record format.
+.IP "\fB\-\-redefine\-sym\fR \fIold\fR\fB=\fR\fInew\fR" 4
+.IX Item "--redefine-sym old=new"
+Change the name of a symbol \fIold\fR, to \fInew\fR.  This can be useful
+when one is trying link two things together for which you have no
+source, and there are name collisions.
+.IP "\fB\-\-redefine\-syms=\fR\fIfilename\fR" 4
+.IX Item "--redefine-syms=filename"
+Apply \fB\-\-redefine\-sym\fR to each symbol pair "\fIold\fR \fInew\fR"
+listed in the file \fIfilename\fR.  \fIfilename\fR is simply a flat file,
+with one symbol pair per line.  Line comments may be introduced by the hash
+character.  This option may be given more than once.
+.IP "\fB\-\-weaken\fR" 4
+.IX Item "--weaken"
+Change all global symbols in the file to be weak.  This can be useful
+when building an object which will be linked against other objects using
+the \fB\-R\fR option to the linker.  This option is only effective when
+using an object file format which supports weak symbols.
+.IP "\fB\-\-keep\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--keep-symbols=filename"
+Apply \fB\-\-keep\-symbol\fR option to each symbol listed in the file
+\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
+name per line.  Line comments may be introduced by the hash character.
+This option may be given more than once.
+.IP "\fB\-\-strip\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--strip-symbols=filename"
+Apply \fB\-\-strip\-symbol\fR option to each symbol listed in the file
+\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
+name per line.  Line comments may be introduced by the hash character.
+This option may be given more than once.
+.IP "\fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--strip-unneeded-symbols=filename"
+Apply \fB\-\-strip\-unneeded\-symbol\fR option to each symbol listed in
+the file \fIfilename\fR.  \fIfilename\fR is simply a flat file, with one
+symbol name per line.  Line comments may be introduced by the hash
+character.  This option may be given more than once.
+.IP "\fB\-\-keep\-global\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--keep-global-symbols=filename"
+Apply \fB\-\-keep\-global\-symbol\fR option to each symbol listed in the
+file \fIfilename\fR.  \fIfilename\fR is simply a flat file, with one
+symbol name per line.  Line comments may be introduced by the hash
+character.  This option may be given more than once.
+.IP "\fB\-\-localize\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--localize-symbols=filename"
+Apply \fB\-\-localize\-symbol\fR option to each symbol listed in the file
+\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
+name per line.  Line comments may be introduced by the hash character.
+This option may be given more than once.
+.IP "\fB\-\-globalize\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--globalize-symbols=filename"
+Apply \fB\-\-globalize\-symbol\fR option to each symbol listed in the file
+\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
+name per line.  Line comments may be introduced by the hash character.
+This option may be given more than once.
+.IP "\fB\-\-weaken\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--weaken-symbols=filename"
+Apply \fB\-\-weaken\-symbol\fR option to each symbol listed in the file
+\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
+name per line.  Line comments may be introduced by the hash character.
+This option may be given more than once.
+.IP "\fB\-\-alt\-machine\-code=\fR\fIindex\fR" 4
+.IX Item "--alt-machine-code=index"
+If the output architecture has alternate machine codes, use the
+\&\fIindex\fRth code instead of the default one.  This is useful in case
+a machine is assigned an official code and the tool-chain adopts the 
+new code, but other applications still depend on the original code
+being used.  For \s-1ELF\s0 based architectures if the \fIindex\fR
+alternative does not exist then the value is treated as an absolute
+number to be stored in the e_machine field of the \s-1ELF\s0 header.
+.IP "\fB\-\-writable\-text\fR" 4
+.IX Item "--writable-text"
+Mark the output text as writable.  This option isn't meaningful for all
+object file formats.
+.IP "\fB\-\-readonly\-text\fR" 4
+.IX Item "--readonly-text"
+Make the output text write protected.  This option isn't meaningful for all
+object file formats.
+.IP "\fB\-\-pure\fR" 4
+.IX Item "--pure"
+Mark the output file as demand paged.  This option isn't meaningful for all
+object file formats.
+.IP "\fB\-\-impure\fR" 4
+.IX Item "--impure"
+Mark the output file as impure.  This option isn't meaningful for all
+object file formats.
+.IP "\fB\-\-prefix\-symbols=\fR\fIstring\fR" 4
+.IX Item "--prefix-symbols=string"
+Prefix all symbols in the output file with \fIstring\fR.
+.IP "\fB\-\-prefix\-sections=\fR\fIstring\fR" 4
+.IX Item "--prefix-sections=string"
+Prefix all section names in the output file with \fIstring\fR.
+.IP "\fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR" 4
+.IX Item "--prefix-alloc-sections=string"
+Prefix all the names of all allocated sections in the output file with
+\&\fIstring\fR.
+.IP "\fB\-\-add\-gnu\-debuglink=\fR\fIpath-to-file\fR" 4
+.IX Item "--add-gnu-debuglink=path-to-file"
+Creates a .gnu_debuglink section which contains a reference to \fIpath-to-file\fR
+and adds it to the output file.
+.IP "\fB\-\-keep\-file\-symbols\fR" 4
+.IX Item "--keep-file-symbols"
+When stripping a file, perhaps with \fB\-\-strip\-debug\fR or
+\&\fB\-\-strip\-unneeded\fR, retain any symbols specifying source file names,
+which would otherwise get stripped.
+.IP "\fB\-\-only\-keep\-debug\fR" 4
+.IX Item "--only-keep-debug"
+Strip a file, removing contents of any sections that would not be
+stripped by \fB\-\-strip\-debug\fR and leaving the debugging sections
+intact.
+.Sp
+The intention is that this option will be used in conjunction with
+\&\fB\-\-add\-gnu\-debuglink\fR to create a two part executable.  One a
+stripped binary which will occupy less space in \s-1RAM\s0 and in a
+distribution and the second a debugging information file which is only
+needed if debugging abilities are required.  The suggested procedure
+to create these files is as follows:
+.RS 4
+.IP "1.<Link the executable as normal.  Assuming that is is called>" 4
+.IX Item "1.<Link the executable as normal.  Assuming that is is called>"
+\&\f(CW\*(C`foo\*(C'\fR then...
+.ie n .IP "1.<Run ""objcopy \-\-only\-keep\-debug foo foo.dbg"" to>" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-only\-keep\-debug foo foo.dbg\fR to>" 4
+.IX Item "1.<Run objcopy --only-keep-debug foo foo.dbg to>"
+create a file containing the debugging info.
+.ie n .IP "1.<Run ""objcopy \-\-strip\-debug foo"" to create a>" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-strip\-debug foo\fR to create a>" 4
+.IX Item "1.<Run objcopy --strip-debug foo to create a>"
+stripped executable.
+.ie n .IP "1.<Run ""objcopy \-\-add\-gnu\-debuglink=foo.dbg foo"">" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-add\-gnu\-debuglink=foo.dbg foo\fR>" 4
+.IX Item "1.<Run objcopy --add-gnu-debuglink=foo.dbg foo>"
+to add a link to the debugging info into the stripped executable.
+.RE
+.RS 4
+.Sp
+Note \- the choice of \f(CW\*(C`.dbg\*(C'\fR as an extension for the debug info
+file is arbitrary.  Also the \f(CW\*(C`\-\-only\-keep\-debug\*(C'\fR step is
+optional.  You could instead do this:
+.IP "1.<Link the executable as normal.>" 4
+.IX Item "1.<Link the executable as normal.>"
+.PD 0
+.ie n .IP "1.<Copy ""foo""\fR to  \f(CW""foo.full"">" 4
+.el .IP "1.<Copy \f(CWfoo\fR to  \f(CWfoo.full\fR>" 4
+.IX Item "1.<Copy foo to  foo.full>"
+.ie n .IP "1.<Run ""objcopy \-\-strip\-debug foo"">" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-strip\-debug foo\fR>" 4
+.IX Item "1.<Run objcopy --strip-debug foo>"
+.ie n .IP "1.<Run ""objcopy \-\-add\-gnu\-debuglink=foo.full foo"">" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-add\-gnu\-debuglink=foo.full foo\fR>" 4
+.IX Item "1.<Run objcopy --add-gnu-debuglink=foo.full foo>"
+.RE
+.RS 4
+.PD
+.Sp
+i.e. the file pointed to by the \fB\-\-add\-gnu\-debuglink\fR can be the
+full executable.  It does not have to be a file created by the
+\&\fB\-\-only\-keep\-debug\fR switch.
+.RE
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Show the version number of \fBobjcopy\fR.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-verbose\fR" 4
+.IX Item "--verbose"
+.PD
+Verbose output: list all object files modified.  In the case of
+archives, \fBobjcopy \-V\fR lists all members of the archive.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Show a summary of the options to \fBobjcopy\fR.
+.IP "\fB\-\-info\fR" 4
+.IX Item "--info"
+Display a list showing all architectures and object formats available.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIld\fR\|(1), \fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/objdump.1
===================================================================
--- branches/binutils/package/binutils/doc/objdump.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/objdump.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,634 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "OBJDUMP 1"
+.TH OBJDUMP 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+objdump \- display information from object files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+objdump [\fB\-a\fR|\fB\-\-archive\-headers\fR]
+        [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR]
+        [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR] ]
+        [\fB\-d\fR|\fB\-\-disassemble\fR]
+        [\fB\-D\fR|\fB\-\-disassemble\-all\fR]
+        [\fB\-z\fR|\fB\-\-disassemble\-zeroes\fR]
+        [\fB\-EB\fR|\fB\-EL\fR|\fB\-\-endian=\fR{big | little }]
+        [\fB\-f\fR|\fB\-\-file\-headers\fR]
+        [\fB\-\-file\-start\-context\fR]
+        [\fB\-g\fR|\fB\-\-debugging\fR]
+        [\fB\-e\fR|\fB\-\-debugging\-tags\fR]
+        [\fB\-h\fR|\fB\-\-section\-headers\fR|\fB\-\-headers\fR]
+        [\fB\-i\fR|\fB\-\-info\fR]
+        [\fB\-j\fR \fIsection\fR|\fB\-\-section=\fR\fIsection\fR]
+        [\fB\-l\fR|\fB\-\-line\-numbers\fR]
+        [\fB\-S\fR|\fB\-\-source\fR]
+        [\fB\-m\fR \fImachine\fR|\fB\-\-architecture=\fR\fImachine\fR]
+        [\fB\-M\fR \fIoptions\fR|\fB\-\-disassembler\-options=\fR\fIoptions\fR]
+        [\fB\-p\fR|\fB\-\-private\-headers\fR]
+        [\fB\-r\fR|\fB\-\-reloc\fR]
+        [\fB\-R\fR|\fB\-\-dynamic\-reloc\fR]
+        [\fB\-s\fR|\fB\-\-full\-contents\fR]
+        [\fB\-W\fR|\fB\-\-dwarf\fR]
+        [\fB\-G\fR|\fB\-\-stabs\fR]
+        [\fB\-t\fR|\fB\-\-syms\fR]
+        [\fB\-T\fR|\fB\-\-dynamic\-syms\fR]
+        [\fB\-x\fR|\fB\-\-all\-headers\fR]
+        [\fB\-w\fR|\fB\-\-wide\fR]
+        [\fB\-\-start\-address=\fR\fIaddress\fR]
+        [\fB\-\-stop\-address=\fR\fIaddress\fR]
+        [\fB\-\-prefix\-addresses\fR]
+        [\fB\-\-[no\-]show\-raw\-insn\fR]
+        [\fB\-\-adjust\-vma=\fR\fIoffset\fR]
+        [\fB\-\-special\-syms\fR]
+        [\fB\-V\fR|\fB\-\-version\fR]
+        [\fB\-H\fR|\fB\-\-help\fR]
+        \fIobjfile\fR...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBobjdump\fR displays information about one or more object files.
+The options control what particular information to display.  This
+information is mostly useful to programmers who are working on the
+compilation tools, as opposed to programmers who just want their
+program to compile and work.
+.PP
+\&\fIobjfile\fR... are the object files to be examined.  When you
+specify archives, \fBobjdump\fR shows information on each of the member
+object files.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The long and short forms of options, shown here as alternatives, are
+equivalent.  At least one option from the list
+\&\fB\-a,\-d,\-D,\-e,\-f,\-g,\-G,\-h,\-H,\-p,\-r,\-R,\-s,\-S,\-t,\-T,\-V,\-x\fR must be given.
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-archive\-header\fR" 4
+.IX Item "--archive-header"
+.PD
+If any of the \fIobjfile\fR files are archives, display the archive
+header information (in a format similar to \fBls \-l\fR).  Besides the
+information you could list with \fBar tv\fR, \fBobjdump \-a\fR shows
+the object file format of each archive member.
+.IP "\fB\-\-adjust\-vma=\fR\fIoffset\fR" 4
+.IX Item "--adjust-vma=offset"
+When dumping information, first add \fIoffset\fR to all the section
+addresses.  This is useful if the section addresses do not correspond to
+the symbol table, which can happen when putting sections at particular
+addresses when using a format which can not represent section addresses,
+such as a.out.
+.IP "\fB\-b\fR \fIbfdname\fR" 4
+.IX Item "-b bfdname"
+.PD 0
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+.PD
+Specify that the object-code format for the object files is
+\&\fIbfdname\fR.  This option may not be necessary; \fIobjdump\fR can
+automatically recognize many formats.
+.Sp
+For example,
+.Sp
+.Vb 1
+\&        objdump \-b oasys \-m vax \-h fu.o
+.Ve
+.Sp
+displays summary information from the section headers (\fB\-h\fR) of
+\&\fIfu.o\fR, which is explicitly identified (\fB\-m\fR) as a \s-1VAX\s0 object
+file in the format produced by Oasys compilers.  You can list the
+formats available with the \fB\-i\fR option.
+.IP "\fB\-C\fR" 4
+.IX Item "-C"
+.PD 0
+.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
+.IX Item "--demangle[=style]"
+.PD
+Decode (\fIdemangle\fR) low-level symbol names into user-level names.
+Besides removing any initial underscore prepended by the system, this
+makes \*(C+ function names readable.  Different compilers have different
+mangling styles. The optional demangling style argument can be used to 
+choose an appropriate demangling style for your compiler. 
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+.PD 0
+.IP "\fB\-\-debugging\fR" 4
+.IX Item "--debugging"
+.PD
+Display debugging information.  This attempts to parse debugging
+information stored in the file and print it out using a C like syntax.
+Only certain types of debugging information have been implemented.
+Some other types are supported by \fBreadelf \-w\fR.
+.IP "\fB\-e\fR" 4
+.IX Item "-e"
+.PD 0
+.IP "\fB\-\-debugging\-tags\fR" 4
+.IX Item "--debugging-tags"
+.PD
+Like \fB\-g\fR, but the information is generated in a format compatible
+with ctags tool.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-\-disassemble\fR" 4
+.IX Item "--disassemble"
+.PD
+Display the assembler mnemonics for the machine instructions from
+\&\fIobjfile\fR.  This option only disassembles those sections which are
+expected to contain instructions.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-disassemble\-all\fR" 4
+.IX Item "--disassemble-all"
+.PD
+Like \fB\-d\fR, but disassemble the contents of all sections, not just
+those expected to contain instructions.
+.IP "\fB\-\-prefix\-addresses\fR" 4
+.IX Item "--prefix-addresses"
+When disassembling, print the complete address on each line.  This is
+the older disassembly format.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+.PD 0
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+.IP "\fB\-\-endian={big|little}\fR" 4
+.IX Item "--endian={big|little}"
+.PD
+Specify the endianness of the object files.  This only affects
+disassembly.  This can be useful when disassembling a file format which
+does not describe endianness information, such as S\-records.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+.PD 0
+.IP "\fB\-\-file\-headers\fR" 4
+.IX Item "--file-headers"
+.PD
+Display summary information from the overall header of
+each of the \fIobjfile\fR files.
+.IP "\fB\-\-file\-start\-context\fR" 4
+.IX Item "--file-start-context"
+Specify that when displaying interlisted source code/disassembly
+(assumes \fB\-S\fR) from a file that has not yet been displayed, extend the
+context to the start of the file.
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-section\-headers\fR" 4
+.IX Item "--section-headers"
+.IP "\fB\-\-headers\fR" 4
+.IX Item "--headers"
+.PD
+Display summary information from the section headers of the
+object file.
+.Sp
+File segments may be relocated to nonstandard addresses, for example by
+using the \fB\-Ttext\fR, \fB\-Tdata\fR, or \fB\-Tbss\fR options to
+\&\fBld\fR.  However, some object file formats, such as a.out, do not
+store the starting address of the file segments.  In those situations,
+although \fBld\fR relocates the sections correctly, using \fBobjdump
+\&\-h\fR to list the file section headers cannot show the correct addresses.
+Instead, it shows the usual addresses, which are implicit for the
+target.
+.IP "\fB\-H\fR" 4
+.IX Item "-H"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Print a summary of the options to \fBobjdump\fR and exit.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+.PD 0
+.IP "\fB\-\-info\fR" 4
+.IX Item "--info"
+.PD
+Display a list showing all architectures and object formats available
+for specification with \fB\-b\fR or \fB\-m\fR.
+.IP "\fB\-j\fR \fIname\fR" 4
+.IX Item "-j name"
+.PD 0
+.IP "\fB\-\-section=\fR\fIname\fR" 4
+.IX Item "--section=name"
+.PD
+Display information only for section \fIname\fR.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+.PD 0
+.IP "\fB\-\-line\-numbers\fR" 4
+.IX Item "--line-numbers"
+.PD
+Label the display (using debugging information) with the filename and
+source line numbers corresponding to the object code or relocs shown.
+Only useful with \fB\-d\fR, \fB\-D\fR, or \fB\-r\fR.
+.IP "\fB\-m\fR \fImachine\fR" 4
+.IX Item "-m machine"
+.PD 0
+.IP "\fB\-\-architecture=\fR\fImachine\fR" 4
+.IX Item "--architecture=machine"
+.PD
+Specify the architecture to use when disassembling object files.  This
+can be useful when disassembling object files which do not describe
+architecture information, such as S\-records.  You can list the available
+architectures with the \fB\-i\fR option.
+.IP "\fB\-M\fR \fIoptions\fR" 4
+.IX Item "-M options"
+.PD 0
+.IP "\fB\-\-disassembler\-options=\fR\fIoptions\fR" 4
+.IX Item "--disassembler-options=options"
+.PD
+Pass target specific information to the disassembler.  Only supported on
+some targets.  If it is necessary to specify more than one
+disassembler option then multiple \fB\-M\fR options can be used or
+can be placed together into a comma separated list.
+.Sp
+If the target is an \s-1ARM\s0 architecture then this switch can be used to
+select which register name set is used during disassembler.  Specifying
+\&\fB\-M reg-names-std\fR (the default) will select the register names as
+used in \s-1ARM\s0's instruction set documentation, but with register 13 called
+\&'sp', register 14 called 'lr' and register 15 called 'pc'.  Specifying
+\&\fB\-M reg-names-apcs\fR will select the name set used by the \s-1ARM\s0
+Procedure Call Standard, whilst specifying \fB\-M reg-names-raw\fR will
+just use \fBr\fR followed by the register number.
+.Sp
+There are also two variants on the \s-1APCS\s0 register naming scheme enabled
+by \fB\-M reg-names-atpcs\fR and \fB\-M reg-names-special-atpcs\fR which
+use the ARM/Thumb Procedure Call Standard naming conventions.  (Either
+with the normal register names or the special register names).
+.Sp
+This option can also be used for \s-1ARM\s0 architectures to force the
+disassembler to interpret all instructions as Thumb instructions by
+using the switch \fB\-\-disassembler\-options=force\-thumb\fR.  This can be
+useful when attempting to disassemble thumb code produced by other
+compilers.
+.Sp
+For the x86, some of the options duplicate functions of the \fB\-m\fR
+switch, but allow finer grained control.  Multiple selections from the
+following may be specified as a comma separated string.
+\&\fBx86\-64\fR, \fBi386\fR and \fBi8086\fR select disassembly for
+the given architecture.  \fBintel\fR and \fBatt\fR select between
+intel syntax mode and \s-1AT&T\s0 syntax mode.  \fBaddr32\fR,
+\&\fBaddr16\fR, \fBdata32\fR and \fBdata16\fR specify the default
+address size and operand size.  These four options will be overridden if
+\&\fBx86\-64\fR, \fBi386\fR or \fBi8086\fR appear later in the
+option string.  Lastly, \fBsuffix\fR, when in \s-1AT&T\s0 mode,
+instructs the disassembler to print a mnemonic suffix even when the
+suffix could be inferred by the operands.
+.Sp
+For \s-1PPC\s0, \fBbooke\fR, \fBbooke32\fR and \fBbooke64\fR select
+disassembly of BookE instructions.  \fB32\fR and \fB64\fR select
+PowerPC and PowerPC64 disassembly, respectively.  \fBe300\fR selects
+disassembly for the e300 family.
+.Sp
+For \s-1MIPS\s0, this option controls the printing of instruction mneumonic
+names and register names in disassembled instructions.  Multiple
+selections from the following may be specified as a comma separated
+string, and invalid options are ignored:
+.RS 4
+.ie n .IP """no\-aliases""" 4
+.el .IP "\f(CWno\-aliases\fR" 4
+.IX Item "no-aliases"
+Print the 'raw' instruction mneumonic instead of some pseudo
+instruction mneumonic.  I.E. print 'daddu' or 'or' instead of 'move',
+\&'sll' instead of 'nop', etc.
+.ie n .IP """gpr\-names=\f(CI\s-1ABI\s0\f(CW""" 4
+.el .IP "\f(CWgpr\-names=\f(CI\s-1ABI\s0\f(CW\fR" 4
+.IX Item "gpr-names=ABI"
+Print \s-1GPR\s0 (general\-purpose register) names as appropriate
+for the specified \s-1ABI\s0.  By default, \s-1GPR\s0 names are selected according to
+the \s-1ABI\s0 of the binary being disassembled.
+.ie n .IP """fpr\-names=\f(CI\s-1ABI\s0\f(CW""" 4
+.el .IP "\f(CWfpr\-names=\f(CI\s-1ABI\s0\f(CW\fR" 4
+.IX Item "fpr-names=ABI"
+Print \s-1FPR\s0 (floating\-point register) names as
+appropriate for the specified \s-1ABI\s0.  By default, \s-1FPR\s0 numbers are printed
+rather than names.
+.ie n .IP """cp0\-names=\f(CI\s-1ARCH\s0\f(CW""" 4
+.el .IP "\f(CWcp0\-names=\f(CI\s-1ARCH\s0\f(CW\fR" 4
+.IX Item "cp0-names=ARCH"
+Print \s-1CP0\s0 (system control coprocessor; coprocessor 0) register names
+as appropriate for the \s-1CPU\s0 or architecture specified by
+\&\fI\s-1ARCH\s0\fR.  By default, \s-1CP0\s0 register names are selected according to
+the architecture and \s-1CPU\s0 of the binary being disassembled.
+.ie n .IP """hwr\-names=\f(CI\s-1ARCH\s0\f(CW""" 4
+.el .IP "\f(CWhwr\-names=\f(CI\s-1ARCH\s0\f(CW\fR" 4
+.IX Item "hwr-names=ARCH"
+Print \s-1HWR\s0 (hardware register, used by the \f(CW\*(C`rdhwr\*(C'\fR instruction) names
+as appropriate for the \s-1CPU\s0 or architecture specified by
+\&\fI\s-1ARCH\s0\fR.  By default, \s-1HWR\s0 names are selected according to
+the architecture and \s-1CPU\s0 of the binary being disassembled.
+.ie n .IP """reg\-names=\f(CI\s-1ABI\s0\f(CW""" 4
+.el .IP "\f(CWreg\-names=\f(CI\s-1ABI\s0\f(CW\fR" 4
+.IX Item "reg-names=ABI"
+Print \s-1GPR\s0 and \s-1FPR\s0 names as appropriate for the selected \s-1ABI\s0.
+.ie n .IP """reg\-names=\f(CI\s-1ARCH\s0\f(CW""" 4
+.el .IP "\f(CWreg\-names=\f(CI\s-1ARCH\s0\f(CW\fR" 4
+.IX Item "reg-names=ARCH"
+Print CPU-specific register names (\s-1CP0\s0 register and \s-1HWR\s0 names)
+as appropriate for the selected \s-1CPU\s0 or architecture.
+.RE
+.RS 4
+.Sp
+For any of the options listed above, \fI\s-1ABI\s0\fR or
+\&\fI\s-1ARCH\s0\fR may be specified as \fBnumeric\fR to have numbers printed
+rather than names, for the selected types of registers.
+You can list the available values of \fI\s-1ABI\s0\fR and \fI\s-1ARCH\s0\fR using
+the \fB\-\-help\fR option.
+.Sp
+For \s-1VAX\s0, you can specify function entry addresses with \fB\-M
+entry:0xf00ba\fR.  You can use this multiple times to properly
+disassemble \s-1VAX\s0 binary files that don't contain symbol tables (like
+\&\s-1ROM\s0 dumps).  In these cases, the function entry mask would otherwise
+be decoded as \s-1VAX\s0 instructions, which would probably lead the the rest
+of the function being wrongly disassembled.
+.RE
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-private\-headers\fR" 4
+.IX Item "--private-headers"
+.PD
+Print information that is specific to the object file format.  The exact
+information printed depends upon the object file format.  For some
+object file formats, no additional information is printed.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.IP "\fB\-\-reloc\fR" 4
+.IX Item "--reloc"
+.PD
+Print the relocation entries of the file.  If used with \fB\-d\fR or
+\&\fB\-D\fR, the relocations are printed interspersed with the
+disassembly.
+.IP "\fB\-R\fR" 4
+.IX Item "-R"
+.PD 0
+.IP "\fB\-\-dynamic\-reloc\fR" 4
+.IX Item "--dynamic-reloc"
+.PD
+Print the dynamic relocation entries of the file.  This is only
+meaningful for dynamic objects, such as certain types of shared
+libraries.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-full\-contents\fR" 4
+.IX Item "--full-contents"
+.PD
+Display the full contents of any sections requested.  By default all
+non-empty sections are displayed.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-source\fR" 4
+.IX Item "--source"
+.PD
+Display source code intermixed with disassembly, if possible.  Implies
+\&\fB\-d\fR.
+.IP "\fB\-\-show\-raw\-insn\fR" 4
+.IX Item "--show-raw-insn"
+When disassembling instructions, print the instruction in hex as well as
+in symbolic form.  This is the default except when
+\&\fB\-\-prefix\-addresses\fR is used.
+.IP "\fB\-\-no\-show\-raw\-insn\fR" 4
+.IX Item "--no-show-raw-insn"
+When disassembling instructions, do not print the instruction bytes.
+This is the default when \fB\-\-prefix\-addresses\fR is used.
+.IP "\fB\-W\fR" 4
+.IX Item "-W"
+.PD 0
+.IP "\fB\-\-dwarf\fR" 4
+.IX Item "--dwarf"
+.PD
+Displays the contents of the \s-1DWARF\s0 debug sections in the file, if any
+are present.
+.IP "\fB\-G\fR" 4
+.IX Item "-G"
+.PD 0
+.IP "\fB\-\-stabs\fR" 4
+.IX Item "--stabs"
+.PD
+Display the full contents of any sections requested.  Display the
+contents of the .stab and .stab.index and .stab.excl sections from an
+\&\s-1ELF\s0 file.  This is only useful on systems (such as Solaris 2.0) in which
+\&\f(CW\*(C`.stab\*(C'\fR debugging symbol-table entries are carried in an \s-1ELF\s0
+section.  In most other file formats, debugging symbol-table entries are
+interleaved with linkage symbols, and are visible in the \fB\-\-syms\fR
+output.
+.IP "\fB\-\-start\-address=\fR\fIaddress\fR" 4
+.IX Item "--start-address=address"
+Start displaying data at the specified address.  This affects the output
+of the \fB\-d\fR, \fB\-r\fR and \fB\-s\fR options.
+.IP "\fB\-\-stop\-address=\fR\fIaddress\fR" 4
+.IX Item "--stop-address=address"
+Stop displaying data at the specified address.  This affects the output
+of the \fB\-d\fR, \fB\-r\fR and \fB\-s\fR options.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-syms\fR" 4
+.IX Item "--syms"
+.PD
+Print the symbol table entries of the file.
+This is similar to the information provided by the \fBnm\fR program.
+.IP "\fB\-T\fR" 4
+.IX Item "-T"
+.PD 0
+.IP "\fB\-\-dynamic\-syms\fR" 4
+.IX Item "--dynamic-syms"
+.PD
+Print the dynamic symbol table entries of the file.  This is only
+meaningful for dynamic objects, such as certain types of shared
+libraries.  This is similar to the information provided by the \fBnm\fR
+program when given the \fB\-D\fR (\fB\-\-dynamic\fR) option.
+.IP "\fB\-\-special\-syms\fR" 4
+.IX Item "--special-syms"
+When displaying symbols include those which the target considers to be
+special in some way and which would not normally be of interest to the
+user.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Print the version number of \fBobjdump\fR and exit.
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.IP "\fB\-\-all\-headers\fR" 4
+.IX Item "--all-headers"
+.PD
+Display all available header information, including the symbol table and
+relocation entries.  Using \fB\-x\fR is equivalent to specifying all of
+\&\fB\-a \-f \-h \-p \-r \-t\fR.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+.PD 0
+.IP "\fB\-\-wide\fR" 4
+.IX Item "--wide"
+.PD
+Format some lines for output devices that have more than 80 columns.
+Also do not truncate symbol names when they are displayed.
+.IP "\fB\-z\fR" 4
+.IX Item "-z"
+.PD 0
+.IP "\fB\-\-disassemble\-zeroes\fR" 4
+.IX Item "--disassemble-zeroes"
+.PD
+Normally the disassembly output will skip blocks of zeroes.  This
+option directs the disassembler to disassemble those blocks, just like
+any other data.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fInm\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/ranlib.1
===================================================================
--- branches/binutils/package/binutils/doc/ranlib.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/ranlib.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,188 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "RANLIB 1"
+.TH RANLIB 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+ranlib \- generate index to archive.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ranlib [\fB\-vV\fR] \fIarchive\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBranlib\fR generates an index to the contents of an archive and
+stores it in the archive.  The index lists each symbol defined by a
+member of an archive that is a relocatable object file.  
+.PP
+You may use \fBnm \-s\fR or \fBnm \-\-print\-armap\fR to list this index.
+.PP
+An archive with such an index speeds up linking to the library and
+allows routines in the library to call each other without regard to
+their placement in the archive.
+.PP
+The \s-1GNU\s0 \fBranlib\fR program is another form of \s-1GNU\s0 \fBar\fR; running
+\&\fBranlib\fR is completely equivalent to executing \fBar \-s\fR.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Show the version number of \fBranlib\fR.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fInm\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/readelf.1
===================================================================
--- branches/binutils/package/binutils/doc/readelf.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/readelf.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,376 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "READELF 1"
+.TH READELF 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+readelf \- Displays information about ELF files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+readelf [\fB\-a\fR|\fB\-\-all\fR] 
+        [\fB\-h\fR|\fB\-\-file\-header\fR]
+        [\fB\-l\fR|\fB\-\-program\-headers\fR|\fB\-\-segments\fR]
+        [\fB\-S\fR|\fB\-\-section\-headers\fR|\fB\-\-sections\fR]
+        [\fB\-g\fR|\fB\-\-section\-groups\fR]
+        [\fB\-t\fR|\fB\-\-section\-details\fR]
+        [\fB\-e\fR|\fB\-\-headers\fR]
+        [\fB\-s\fR|\fB\-\-syms\fR|\fB\-\-symbols\fR]
+        [\fB\-n\fR|\fB\-\-notes\fR]
+        [\fB\-r\fR|\fB\-\-relocs\fR]
+        [\fB\-u\fR|\fB\-\-unwind\fR]
+        [\fB\-d\fR|\fB\-\-dynamic\fR]
+        [\fB\-V\fR|\fB\-\-version\-info\fR]
+        [\fB\-A\fR|\fB\-\-arch\-specific\fR]
+        [\fB\-D\fR|\fB\-\-use\-dynamic\fR]
+        [\fB\-x\fR <number or name>|\fB\-\-hex\-dump=\fR<number or name>]
+        [\fB\-w[liaprmfFsoR]\fR|
+         \fB\-\-debug\-dump\fR[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges]]
+        [\fB\-I\fR|\fB\-histogram\fR]
+        [\fB\-v\fR|\fB\-\-version\fR]
+        [\fB\-W\fR|\fB\-\-wide\fR]
+        [\fB\-H\fR|\fB\-\-help\fR]
+        \fIelffile\fR...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBreadelf\fR displays information about one or more \s-1ELF\s0 format object
+files.  The options control what particular information to display.
+.PP
+\&\fIelffile\fR... are the object files to be examined.  32\-bit and
+64\-bit \s-1ELF\s0 files are supported, as are archives containing \s-1ELF\s0 files.
+.PP
+This program performs a similar function to \fBobjdump\fR but it
+goes into more detail and it exists independently of the \s-1BFD\s0
+library, so if there is a bug in \s-1BFD\s0 then readelf will not be
+affected.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The long and short forms of options, shown here as alternatives, are
+equivalent.  At least one option besides \fB\-v\fR or \fB\-H\fR must be
+given. 
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-all\fR" 4
+.IX Item "--all"
+.PD
+Equivalent to specifiying \fB\-\-file\-header\fR,
+\&\fB\-\-program\-headers\fR, \fB\-\-sections\fR, \fB\-\-symbols\fR,
+\&\fB\-\-relocs\fR, \fB\-\-dynamic\fR, \fB\-\-notes\fR and
+\&\fB\-\-version\-info\fR. 
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-file\-header\fR" 4
+.IX Item "--file-header"
+.PD
+Displays the information contained in the \s-1ELF\s0 header at the start of the
+file.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+.PD 0
+.IP "\fB\-\-program\-headers\fR" 4
+.IX Item "--program-headers"
+.IP "\fB\-\-segments\fR" 4
+.IX Item "--segments"
+.PD
+Displays the information contained in the file's segment headers, if it
+has any.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-sections\fR" 4
+.IX Item "--sections"
+.IP "\fB\-\-section\-headers\fR" 4
+.IX Item "--section-headers"
+.PD
+Displays the information contained in the file's section headers, if it
+has any.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+.PD 0
+.IP "\fB\-\-section\-groups\fR" 4
+.IX Item "--section-groups"
+.PD
+Displays the information contained in the file's section groups, if it
+has any.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-section\-details\fR" 4
+.IX Item "--section-details"
+.PD
+Displays the detailed section information. Implies \fB\-S\fR.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-symbols\fR" 4
+.IX Item "--symbols"
+.IP "\fB\-\-syms\fR" 4
+.IX Item "--syms"
+.PD
+Displays the entries in symbol table section of the file, if it has one.
+.IP "\fB\-e\fR" 4
+.IX Item "-e"
+.PD 0
+.IP "\fB\-\-headers\fR" 4
+.IX Item "--headers"
+.PD
+Display all the headers in the file.  Equivalent to \fB\-h \-l \-S\fR.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-notes\fR" 4
+.IX Item "--notes"
+.PD
+Displays the contents of the \s-1NOTE\s0 segments and/or sections, if any.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.IP "\fB\-\-relocs\fR" 4
+.IX Item "--relocs"
+.PD
+Displays the contents of the file's relocation section, if it has one.
+.IP "\fB\-u\fR" 4
+.IX Item "-u"
+.PD 0
+.IP "\fB\-\-unwind\fR" 4
+.IX Item "--unwind"
+.PD
+Displays the contents of the file's unwind section, if it has one.  Only
+the unwind sections for \s-1IA64\s0 \s-1ELF\s0 files are currently supported.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-\-dynamic\fR" 4
+.IX Item "--dynamic"
+.PD
+Displays the contents of the file's dynamic section, if it has one.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\-info\fR" 4
+.IX Item "--version-info"
+.PD
+Displays the contents of the version sections in the file, it they
+exist.
+.IP "\fB\-A\fR" 4
+.IX Item "-A"
+.PD 0
+.IP "\fB\-\-arch\-specific\fR" 4
+.IX Item "--arch-specific"
+.PD
+Displays architecture-specific information in the file, if there
+is any.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-use\-dynamic\fR" 4
+.IX Item "--use-dynamic"
+.PD
+When displaying symbols, this option makes \fBreadelf\fR use the
+symbol table in the file's dynamic section, rather than the one in the
+symbols section.
+.IP "\fB\-x <number or name>\fR" 4
+.IX Item "-x <number or name>"
+.PD 0
+.IP "\fB\-\-hex\-dump=<number or name>\fR" 4
+.IX Item "--hex-dump=<number or name>"
+.PD
+Displays the contents of the indicated section as a hexadecimal dump.
+A number identifies a particular section by index in the section table;
+any other string identifies all sections with that name in the object file.
+.IP "\fB\-w[liaprmfFsoR]\fR" 4
+.IX Item "-w[liaprmfFsoR]"
+.PD 0
+.IP "\fB\-\-debug\-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges]\fR" 4
+.IX Item "--debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]"
+.PD
+Displays the contents of the debug sections in the file, if any are
+present.  If one of the optional letters or words follows the switch
+then only data found in those specific sections will be dumped.
+.IP "\fB\-I\fR" 4
+.IX Item "-I"
+.PD 0
+.IP "\fB\-\-histogram\fR" 4
+.IX Item "--histogram"
+.PD
+Display a histogram of bucket list lengths when displaying the contents
+of the symbol tables.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Display the version number of readelf.
+.IP "\fB\-W\fR" 4
+.IX Item "-W"
+.PD 0
+.IP "\fB\-\-wide\fR" 4
+.IX Item "--wide"
+.PD
+Don't break output lines to fit into 80 columns. By default
+\&\fBreadelf\fR breaks section header and segment listing lines for
+64\-bit \s-1ELF\s0 files, so that they fit into 80 columns. This option causes
+\&\fBreadelf\fR to print each section header resp. each segment one a
+single line, which is far more readable on terminals wider than 80 columns.
+.IP "\fB\-H\fR" 4
+.IX Item "-H"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Display the command line options understood by \fBreadelf\fR.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/size.1
===================================================================
--- branches/binutils/package/binutils/doc/size.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/size.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,263 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "SIZE 1"
+.TH SIZE 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+size \- list section sizes and total size.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+size [\fB\-A\fR|\fB\-B\fR|\fB\-\-format=\fR\fIcompatibility\fR]
+     [\fB\-\-help\fR]
+     [\fB\-d\fR|\fB\-o\fR|\fB\-x\fR|\fB\-\-radix=\fR\fInumber\fR]
+     [\fB\-t\fR|\fB\-\-totals\fR]
+     [\fB\-\-target=\fR\fIbfdname\fR] [\fB\-V\fR|\fB\-\-version\fR]  
+     [\fIobjfile\fR...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \s-1GNU\s0 \fBsize\fR utility lists the section sizes\-\-\-and the total
+size\-\-\-for each of the object or archive files \fIobjfile\fR in its
+argument list.  By default, one line of output is generated for each
+object file or each module in an archive.
+.PP
+\&\fIobjfile\fR... are the object files to be examined.
+If none are specified, the file \f(CW\*(C`a.out\*(C'\fR will be used.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The command line options have the following meanings:
+.IP "\fB\-A\fR" 4
+.IX Item "-A"
+.PD 0
+.IP "\fB\-B\fR" 4
+.IX Item "-B"
+.IP "\fB\-\-format=\fR\fIcompatibility\fR" 4
+.IX Item "--format=compatibility"
+.PD
+Using one of these options, you can choose whether the output from \s-1GNU\s0
+\&\fBsize\fR resembles output from System V \fBsize\fR (using \fB\-A\fR,
+or \fB\-\-format=sysv\fR), or Berkeley \fBsize\fR (using \fB\-B\fR, or
+\&\fB\-\-format=berkeley\fR).  The default is the one-line format similar to
+Berkeley's.  
+.Sp
+Here is an example of the Berkeley (default) format of output from
+\&\fBsize\fR: 
+.Sp
+.Vb 4
+\&        $ size \-\-format=Berkeley ranlib size
+\&        text    data    bss     dec     hex     filename
+\&        294880  81920   11592   388392  5ed28   ranlib
+\&        294880  81920   11888   388688  5ee50   size
+.Ve
+.Sp
+This is the same data, but displayed closer to System V conventions:
+.Sp
+.Vb 7
+\&        $ size \-\-format=SysV ranlib size
+\&        ranlib  :
+\&        section         size         addr
+\&        .text         294880         8192       
+\&        .data          81920       303104       
+\&        .bss           11592       385024       
+\&        Total         388392
+.Ve
+.Sp
+.Vb 6
+\&        size  :
+\&        section         size         addr
+\&        .text         294880         8192       
+\&        .data          81920       303104       
+\&        .bss           11888       385024       
+\&        Total         388688
+.Ve
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Show a summary of acceptable arguments and options.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.IP "\fB\-\-radix=\fR\fInumber\fR" 4
+.IX Item "--radix=number"
+.PD
+Using one of these options, you can control whether the size of each
+section is given in decimal (\fB\-d\fR, or \fB\-\-radix=10\fR); octal
+(\fB\-o\fR, or \fB\-\-radix=8\fR); or hexadecimal (\fB\-x\fR, or
+\&\fB\-\-radix=16\fR).  In \fB\-\-radix=\fR\fInumber\fR, only the three
+values (8, 10, 16) are supported.  The total size is always given in two
+radices; decimal and hexadecimal for \fB\-d\fR or \fB\-x\fR output, or
+octal and hexadecimal if you're using \fB\-o\fR.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-totals\fR" 4
+.IX Item "--totals"
+.PD
+Show totals of all objects listed (Berkeley format listing mode only).
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+Specify that the object-code format for \fIobjfile\fR is
+\&\fIbfdname\fR.  This option may not be necessary; \fBsize\fR can
+automatically recognize many formats.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Display the version number of \fBsize\fR.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/strings.1
===================================================================
--- branches/binutils/package/binutils/doc/strings.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/strings.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,249 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "STRINGS 1"
+.TH STRINGS 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+strings \- print the strings of printable characters in files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+strings [\fB\-afov\fR] [\fB\-\fR\fImin-len\fR]
+        [\fB\-n\fR \fImin-len\fR] [\fB\-\-bytes=\fR\fImin-len\fR]
+        [\fB\-t\fR \fIradix\fR] [\fB\-\-radix=\fR\fIradix\fR]
+        [\fB\-e\fR \fIencoding\fR] [\fB\-\-encoding=\fR\fIencoding\fR]
+        [\fB\-\fR] [\fB\-\-all\fR] [\fB\-\-print\-file\-name\fR]
+        [\fB\-\-target=\fR\fIbfdname\fR]
+        [\fB\-\-help\fR] [\fB\-\-version\fR] \fIfile\fR...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+For each \fIfile\fR given, \s-1GNU\s0 \fBstrings\fR prints the printable
+character sequences that are at least 4 characters long (or the number
+given with the options below) and are followed by an unprintable
+character.  By default, it only prints the strings from the initialized
+and loaded sections of object files; for other types of files, it prints
+the strings from the whole file.
+.PP
+\&\fBstrings\fR is mainly useful for determining the contents of non-text
+files.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-all\fR" 4
+.IX Item "--all"
+.IP "\fB\-\fR" 4
+.IX Item "-"
+.PD
+Do not scan only the initialized and loaded sections of object files;
+scan the whole files.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+.PD 0
+.IP "\fB\-\-print\-file\-name\fR" 4
+.IX Item "--print-file-name"
+.PD
+Print the name of the file before each string.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print a summary of the program usage on the standard output and exit.
+.IP "\fB\-\fR\fImin-len\fR" 4
+.IX Item "-min-len"
+.PD 0
+.IP "\fB\-n\fR \fImin-len\fR" 4
+.IX Item "-n min-len"
+.IP "\fB\-\-bytes=\fR\fImin-len\fR" 4
+.IX Item "--bytes=min-len"
+.PD
+Print sequences of characters that are at least \fImin-len\fR characters
+long, instead of the default 4.
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+Like \fB\-t o\fR.  Some other versions of \fBstrings\fR have \fB\-o\fR
+act like \fB\-t d\fR instead.  Since we can not be compatible with both
+ways, we simply chose one.
+.IP "\fB\-t\fR \fIradix\fR" 4
+.IX Item "-t radix"
+.PD 0
+.IP "\fB\-\-radix=\fR\fIradix\fR" 4
+.IX Item "--radix=radix"
+.PD
+Print the offset within the file before each string.  The single
+character argument specifies the radix of the offset\-\-\-\fBo\fR for
+octal, \fBx\fR for hexadecimal, or \fBd\fR for decimal.
+.IP "\fB\-e\fR \fIencoding\fR" 4
+.IX Item "-e encoding"
+.PD 0
+.IP "\fB\-\-encoding=\fR\fIencoding\fR" 4
+.IX Item "--encoding=encoding"
+.PD
+Select the character encoding of the strings that are to be found.
+Possible values for \fIencoding\fR are: \fBs\fR = single\-7\-bit\-byte
+characters (\s-1ASCII\s0, \s-1ISO\s0 8859, etc., default), \fBS\fR =
+single\-8\-bit\-byte characters, \fBb\fR = 16\-bit bigendian, \fBl\fR =
+16\-bit littleendian, \fBB\fR = 32\-bit bigendian, \fBL\fR = 32\-bit
+littleendian. Useful for finding wide character strings.
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+Specify an object code format other than your system's default format.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Print the program version number on the standard output and exit.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjdump\fR\|(1), \fIranlib\fR\|(1), \fIreadelf\fR\|(1)
+and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/strip.1
===================================================================
--- branches/binutils/package/binutils/doc/strip.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/strip.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,383 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "STRIP 1"
+.TH STRIP 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+strip \- Discard symbols from object files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+strip [\fB\-F\fR \fIbfdname\fR |\fB\-\-target=\fR\fIbfdname\fR]
+      [\fB\-I\fR \fIbfdname\fR |\fB\-\-input\-target=\fR\fIbfdname\fR]
+      [\fB\-O\fR \fIbfdname\fR |\fB\-\-output\-target=\fR\fIbfdname\fR]
+      [\fB\-s\fR|\fB\-\-strip\-all\fR]
+      [\fB\-S\fR|\fB\-g\fR|\fB\-d\fR|\fB\-\-strip\-debug\fR]
+      [\fB\-K\fR \fIsymbolname\fR |\fB\-\-keep\-symbol=\fR\fIsymbolname\fR]
+      [\fB\-N\fR \fIsymbolname\fR |\fB\-\-strip\-symbol=\fR\fIsymbolname\fR]
+      [\fB\-w\fR|\fB\-\-wildcard\fR]
+      [\fB\-x\fR|\fB\-\-discard\-all\fR] [\fB\-X\fR |\fB\-\-discard\-locals\fR]
+      [\fB\-R\fR \fIsectionname\fR |\fB\-\-remove\-section=\fR\fIsectionname\fR]
+      [\fB\-o\fR \fIfile\fR] [\fB\-p\fR|\fB\-\-preserve\-dates\fR]
+      [\fB\-\-keep\-file\-symbols\fR]
+      [\fB\-\-only\-keep\-debug\fR]
+      [\fB\-v\fR |\fB\-\-verbose\fR] [\fB\-V\fR|\fB\-\-version\fR]
+      [\fB\-\-help\fR] [\fB\-\-info\fR]
+      \fIobjfile\fR...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\s-1GNU\s0 \fBstrip\fR discards all symbols from object files
+\&\fIobjfile\fR.  The list of object files may include archives.
+At least one object file must be given.
+.PP
+\&\fBstrip\fR modifies the files named in its argument,
+rather than writing modified copies under different names.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-F\fR \fIbfdname\fR" 4
+.IX Item "-F bfdname"
+.PD 0
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+.PD
+Treat the original \fIobjfile\fR as a file with the object
+code format \fIbfdname\fR, and rewrite it in the same format.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Show a summary of the options to \fBstrip\fR and exit.
+.IP "\fB\-\-info\fR" 4
+.IX Item "--info"
+Display a list showing all architectures and object formats available.
+.IP "\fB\-I\fR \fIbfdname\fR" 4
+.IX Item "-I bfdname"
+.PD 0
+.IP "\fB\-\-input\-target=\fR\fIbfdname\fR" 4
+.IX Item "--input-target=bfdname"
+.PD
+Treat the original \fIobjfile\fR as a file with the object
+code format \fIbfdname\fR.
+.IP "\fB\-O\fR \fIbfdname\fR" 4
+.IX Item "-O bfdname"
+.PD 0
+.IP "\fB\-\-output\-target=\fR\fIbfdname\fR" 4
+.IX Item "--output-target=bfdname"
+.PD
+Replace \fIobjfile\fR with a file in the output format \fIbfdname\fR.
+.IP "\fB\-R\fR \fIsectionname\fR" 4
+.IX Item "-R sectionname"
+.PD 0
+.IP "\fB\-\-remove\-section=\fR\fIsectionname\fR" 4
+.IX Item "--remove-section=sectionname"
+.PD
+Remove any section named \fIsectionname\fR from the output file.  This
+option may be given more than once.  Note that using this option
+inappropriately may make the output file unusable.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-strip\-all\fR" 4
+.IX Item "--strip-all"
+.PD
+Remove all symbols.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+.PD 0
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.IP "\fB\-\-strip\-debug\fR" 4
+.IX Item "--strip-debug"
+.PD
+Remove debugging symbols only.
+.IP "\fB\-\-strip\-unneeded\fR" 4
+.IX Item "--strip-unneeded"
+Remove all symbols that are not needed for relocation processing.
+.IP "\fB\-K\fR \fIsymbolname\fR" 4
+.IX Item "-K symbolname"
+.PD 0
+.IP "\fB\-\-keep\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--keep-symbol=symbolname"
+.PD
+When stripping symbols, keep symbol \fIsymbolname\fR even if it would
+normally be stripped.  This option may be given more than once.
+.IP "\fB\-N\fR \fIsymbolname\fR" 4
+.IX Item "-N symbolname"
+.PD 0
+.IP "\fB\-\-strip\-symbol=\fR\fIsymbolname\fR" 4
+.IX Item "--strip-symbol=symbolname"
+.PD
+Remove symbol \fIsymbolname\fR from the source file. This option may be
+given more than once, and may be combined with strip options other than
+\&\fB\-K\fR.
+.IP "\fB\-o\fR \fIfile\fR" 4
+.IX Item "-o file"
+Put the stripped output in \fIfile\fR, rather than replacing the
+existing file.  When this argument is used, only one \fIobjfile\fR
+argument may be specified.
+.IP "\fB\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-preserve\-dates\fR" 4
+.IX Item "--preserve-dates"
+.PD
+Preserve the access and modification dates of the file.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+.PD 0
+.IP "\fB\-\-wildcard\fR" 4
+.IX Item "--wildcard"
+.PD
+Permit regular expressions in \fIsymbolname\fRs used in other command
+line options.  The question mark (?), asterisk (*), backslash (\e) and
+square brackets ([]) operators can be used anywhere in the symbol
+name.  If the first character of the symbol name is the exclamation
+point (!) then the sense of the switch is reversed for that symbol.
+For example:
+.Sp
+.Vb 1
+\&          \-w \-K !foo \-K fo*
+.Ve
+.Sp
+would cause strip to only keep symbols that start with the letters
+\&\*(L"fo\*(R", but to discard the symbol \*(L"foo\*(R".
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.IP "\fB\-\-discard\-all\fR" 4
+.IX Item "--discard-all"
+.PD
+Remove non-global symbols.
+.IP "\fB\-X\fR" 4
+.IX Item "-X"
+.PD 0
+.IP "\fB\-\-discard\-locals\fR" 4
+.IX Item "--discard-locals"
+.PD
+Remove compiler-generated local symbols.
+(These usually start with \fBL\fR or \fB.\fR.)
+.IP "\fB\-\-keep\-file\-symbols\fR" 4
+.IX Item "--keep-file-symbols"
+When stripping a file, perhaps with \fB\-\-strip\-debug\fR or
+\&\fB\-\-strip\-unneeded\fR, retain any symbols specifying source file names,
+which would otherwise get stripped.
+.IP "\fB\-\-only\-keep\-debug\fR" 4
+.IX Item "--only-keep-debug"
+Strip a file, removing any sections that would be stripped by
+\&\fB\-\-strip\-debug\fR and leaving the debugging sections.
+.Sp
+The intention is that this option will be used in conjunction with
+\&\fB\-\-add\-gnu\-debuglink\fR to create a two part executable.  One a
+stripped binary which will occupy less space in \s-1RAM\s0 and in a
+distribution and the second a debugging information file which is only
+needed if debugging abilities are required.  The suggested procedure
+to create these files is as follows:
+.RS 4
+.IP "1.<Link the executable as normal.  Assuming that is is called>" 4
+.IX Item "1.<Link the executable as normal.  Assuming that is is called>"
+\&\f(CW\*(C`foo\*(C'\fR then...
+.ie n .IP "1.<Run ""objcopy \-\-only\-keep\-debug foo foo.dbg"" to>" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-only\-keep\-debug foo foo.dbg\fR to>" 4
+.IX Item "1.<Run objcopy --only-keep-debug foo foo.dbg to>"
+create a file containing the debugging info.
+.ie n .IP "1.<Run ""objcopy \-\-strip\-debug foo"" to create a>" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-strip\-debug foo\fR to create a>" 4
+.IX Item "1.<Run objcopy --strip-debug foo to create a>"
+stripped executable.
+.ie n .IP "1.<Run ""objcopy \-\-add\-gnu\-debuglink=foo.dbg foo"">" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-add\-gnu\-debuglink=foo.dbg foo\fR>" 4
+.IX Item "1.<Run objcopy --add-gnu-debuglink=foo.dbg foo>"
+to add a link to the debugging info into the stripped executable.
+.RE
+.RS 4
+.Sp
+Note \- the choice of \f(CW\*(C`.dbg\*(C'\fR as an extension for the debug info
+file is arbitrary.  Also the \f(CW\*(C`\-\-only\-keep\-debug\*(C'\fR step is
+optional.  You could instead do this:
+.IP "1.<Link the executable as normal.>" 4
+.IX Item "1.<Link the executable as normal.>"
+.PD 0
+.ie n .IP "1.<Copy ""foo""\fR to  \f(CW""foo.full"">" 4
+.el .IP "1.<Copy \f(CWfoo\fR to  \f(CWfoo.full\fR>" 4
+.IX Item "1.<Copy foo to  foo.full>"
+.ie n .IP "1.<Run ""strip \-\-strip\-debug foo"">" 4
+.el .IP "1.<Run \f(CWstrip \-\-strip\-debug foo\fR>" 4
+.IX Item "1.<Run strip --strip-debug foo>"
+.ie n .IP "1.<Run ""objcopy \-\-add\-gnu\-debuglink=foo.full foo"">" 4
+.el .IP "1.<Run \f(CWobjcopy \-\-add\-gnu\-debuglink=foo.full foo\fR>" 4
+.IX Item "1.<Run objcopy --add-gnu-debuglink=foo.full foo>"
+.RE
+.RS 4
+.PD
+.Sp
+ie the file pointed to by the \fB\-\-add\-gnu\-debuglink\fR can be the
+full executable.  It does not have to be a file created by the
+\&\fB\-\-only\-keep\-debug\fR switch.
+.RE
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Show the version number for \fBstrip\fR.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-verbose\fR" 4
+.IX Item "--verbose"
+.PD
+Verbose output: list all object files modified.  In the case of
+archives, \fBstrip \-v\fR lists all members of the archive.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/doc/windres.1
===================================================================
--- branches/binutils/package/binutils/doc/windres.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/doc/windres.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,343 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "WINDRES 1"
+.TH WINDRES 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+windres \- manipulate Windows resources.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+windres [options] [input\-file] [output\-file]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBwindres\fR reads resources from an input file and copies them into
+an output file.  Either file may be in one of three formats:
+.ie n .IP """rc""" 4
+.el .IP "\f(CWrc\fR" 4
+.IX Item "rc"
+A text format read by the Resource Compiler.
+.ie n .IP """res""" 4
+.el .IP "\f(CWres\fR" 4
+.IX Item "res"
+A binary format generated by the Resource Compiler.
+.ie n .IP """coff""" 4
+.el .IP "\f(CWcoff\fR" 4
+.IX Item "coff"
+A \s-1COFF\s0 object or executable.
+.PP
+The exact description of these different formats is available in
+documentation from Microsoft.
+.PP
+When \fBwindres\fR converts from the \f(CW\*(C`rc\*(C'\fR format to the \f(CW\*(C`res\*(C'\fR
+format, it is acting like the Windows Resource Compiler.  When
+\&\fBwindres\fR converts from the \f(CW\*(C`res\*(C'\fR format to the \f(CW\*(C`coff\*(C'\fR
+format, it is acting like the Windows \f(CW\*(C`CVTRES\*(C'\fR program.
+.PP
+When \fBwindres\fR generates an \f(CW\*(C`rc\*(C'\fR file, the output is similar
+but not identical to the format expected for the input.  When an input
+\&\f(CW\*(C`rc\*(C'\fR file refers to an external filename, an output \f(CW\*(C`rc\*(C'\fR file
+will instead include the file contents.
+.PP
+If the input or output format is not specified, \fBwindres\fR will
+guess based on the file name, or, for the input file, the file contents.
+A file with an extension of \fI.rc\fR will be treated as an \f(CW\*(C`rc\*(C'\fR
+file, a file with an extension of \fI.res\fR will be treated as a
+\&\f(CW\*(C`res\*(C'\fR file, and a file with an extension of \fI.o\fR or
+\&\fI.exe\fR will be treated as a \f(CW\*(C`coff\*(C'\fR file.
+.PP
+If no output file is specified, \fBwindres\fR will print the resources
+in \f(CW\*(C`rc\*(C'\fR format to standard output.
+.PP
+The normal use is for you to write an \f(CW\*(C`rc\*(C'\fR file, use \fBwindres\fR
+to convert it to a \s-1COFF\s0 object file, and then link the \s-1COFF\s0 file into
+your application.  This will make the resources described in the
+\&\f(CW\*(C`rc\*(C'\fR file available to Windows.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-i\fR \fIfilename\fR" 4
+.IX Item "-i filename"
+.PD 0
+.IP "\fB\-\-input\fR \fIfilename\fR" 4
+.IX Item "--input filename"
+.PD
+The name of the input file.  If this option is not used, then
+\&\fBwindres\fR will use the first non-option argument as the input file
+name.  If there are no non-option arguments, then \fBwindres\fR will
+read from standard input.  \fBwindres\fR can not read a \s-1COFF\s0 file from
+standard input.
+.IP "\fB\-o\fR \fIfilename\fR" 4
+.IX Item "-o filename"
+.PD 0
+.IP "\fB\-\-output\fR \fIfilename\fR" 4
+.IX Item "--output filename"
+.PD
+The name of the output file.  If this option is not used, then
+\&\fBwindres\fR will use the first non-option argument, after any used
+for the input file name, as the output file name.  If there is no
+non-option argument, then \fBwindres\fR will write to standard output.
+\&\fBwindres\fR can not write a \s-1COFF\s0 file to standard output.  Note,
+for compatability with \fBrc\fR the option \fB\-fo\fR is also
+accepted, but its use is not recommended.
+.IP "\fB\-J\fR \fIformat\fR" 4
+.IX Item "-J format"
+.PD 0
+.IP "\fB\-\-input\-format\fR \fIformat\fR" 4
+.IX Item "--input-format format"
+.PD
+The input format to read.  \fIformat\fR may be \fBres\fR, \fBrc\fR, or
+\&\fBcoff\fR.  If no input format is specified, \fBwindres\fR will
+guess, as described above.
+.IP "\fB\-O\fR \fIformat\fR" 4
+.IX Item "-O format"
+.PD 0
+.IP "\fB\-\-output\-format\fR \fIformat\fR" 4
+.IX Item "--output-format format"
+.PD
+The output format to generate.  \fIformat\fR may be \fBres\fR,
+\&\fBrc\fR, or \fBcoff\fR.  If no output format is specified,
+\&\fBwindres\fR will guess, as described above.
+.IP "\fB\-F\fR \fItarget\fR" 4
+.IX Item "-F target"
+.PD 0
+.IP "\fB\-\-target\fR \fItarget\fR" 4
+.IX Item "--target target"
+.PD
+Specify the \s-1BFD\s0 format to use for a \s-1COFF\s0 file as input or output.  This
+is a \s-1BFD\s0 target name; you can use the \fB\-\-help\fR option to see a list
+of supported targets.  Normally \fBwindres\fR will use the default
+format, which is the first one listed by the \fB\-\-help\fR option.
+.IP "\fB\-\-preprocessor\fR \fIprogram\fR" 4
+.IX Item "--preprocessor program"
+When \fBwindres\fR reads an \f(CW\*(C`rc\*(C'\fR file, it runs it through the C
+preprocessor first.  This option may be used to specify the preprocessor
+to use, including any leading arguments.  The default preprocessor
+argument is \f(CW\*(C`gcc \-E \-xc\-header \-DRC_INVOKED\*(C'\fR.
+.IP "\fB\-I\fR \fIdirectory\fR" 4
+.IX Item "-I directory"
+.PD 0
+.IP "\fB\-\-include\-dir\fR \fIdirectory\fR" 4
+.IX Item "--include-dir directory"
+.PD
+Specify an include directory to use when reading an \f(CW\*(C`rc\*(C'\fR file.
+\&\fBwindres\fR will pass this to the preprocessor as an \fB\-I\fR
+option.  \fBwindres\fR will also search this directory when looking for
+files named in the \f(CW\*(C`rc\*(C'\fR file.  If the argument passed to this command
+matches any of the supported \fIformats\fR (as descrived in the \fB\-J\fR 
+option), it will issue a deprecation warning, and behave just like the
+\&\fB\-J\fR option.  New programs should not use this behaviour.  If a
+directory happens to match a \fIformat\fR, simple prefix it with \fB./\fR
+to disable the backward compatibility.
+.IP "\fB\-D\fR \fItarget\fR" 4
+.IX Item "-D target"
+.PD 0
+.IP "\fB\-\-define\fR \fIsym\fR\fB[=\fR\fIval\fR\fB]\fR" 4
+.IX Item "--define sym[=val]"
+.PD
+Specify a \fB\-D\fR option to pass to the preprocessor when reading an
+\&\f(CW\*(C`rc\*(C'\fR file.
+.IP "\fB\-U\fR \fItarget\fR" 4
+.IX Item "-U target"
+.PD 0
+.IP "\fB\-\-undefine\fR \fIsym\fR" 4
+.IX Item "--undefine sym"
+.PD
+Specify a \fB\-U\fR option to pass to the preprocessor when reading an
+\&\f(CW\*(C`rc\*(C'\fR file.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+Ignored for compatibility with rc.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Enable verbose mode.  This tells you what the preprocessor is if you
+didn't specify one.
+.IP "\fB\-l\fR \fIval\fR" 4
+.IX Item "-l val"
+.PD 0
+.IP "\fB\-\-language\fR \fIval\fR" 4
+.IX Item "--language val"
+.PD
+Specify the default language to use when reading an \f(CW\*(C`rc\*(C'\fR file.
+\&\fIval\fR should be a hexadecimal language code.  The low eight bits are
+the language, and the high eight bits are the sublanguage.
+.IP "\fB\-\-use\-temp\-file\fR" 4
+.IX Item "--use-temp-file"
+Use a temporary file to instead of using popen to read the output of
+the preprocessor. Use this option if the popen implementation is buggy 
+on the host (eg., certain non-English language versions of Windows 95 and 
+Windows 98 are known to have buggy popen where the output will instead
+go the console).
+.IP "\fB\-\-no\-use\-temp\-file\fR" 4
+.IX Item "--no-use-temp-file"
+Use popen, not a temporary file, to read the output of the preprocessor.
+This is the default behaviour.
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Prints a usage summary.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Prints the version number for \fBwindres\fR.
+.IP "\fB\-\-yydebug\fR" 4
+.IX Item "--yydebug"
+If \fBwindres\fR is compiled with \f(CW\*(C`YYDEBUG\*(C'\fR defined as \f(CW1\fR,
+this will turn on parser debugging.
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/binutils/nlmheader.c
===================================================================
--- branches/binutils/package/binutils/nlmheader.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/nlmheader.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2534 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     CHECK = 258,
+     CODESTART = 259,
+     COPYRIGHT = 260,
+     CUSTOM = 261,
+     DATE = 262,
+     DEBUG = 263,
+     DESCRIPTION = 264,
+     EXIT = 265,
+     EXPORT = 266,
+     FLAG_ON = 267,
+     FLAG_OFF = 268,
+     FULLMAP = 269,
+     HELP = 270,
+     IMPORT = 271,
+     INPUT = 272,
+     MAP = 273,
+     MESSAGES = 274,
+     MODULE = 275,
+     MULTIPLE = 276,
+     OS_DOMAIN = 277,
+     OUTPUT = 278,
+     PSEUDOPREEMPTION = 279,
+     REENTRANT = 280,
+     SCREENNAME = 281,
+     SHARELIB = 282,
+     STACK = 283,
+     START = 284,
+     SYNCHRONIZE = 285,
+     THREADNAME = 286,
+     TYPE = 287,
+     VERBOSE = 288,
+     VERSIONK = 289,
+     XDCDATA = 290,
+     STRING = 291,
+     QUOTED_STRING = 292
+   };
+#endif
+/* Tokens.  */
+#define CHECK 258
+#define CODESTART 259
+#define COPYRIGHT 260
+#define CUSTOM 261
+#define DATE 262
+#define DEBUG 263
+#define DESCRIPTION 264
+#define EXIT 265
+#define EXPORT 266
+#define FLAG_ON 267
+#define FLAG_OFF 268
+#define FULLMAP 269
+#define HELP 270
+#define IMPORT 271
+#define INPUT 272
+#define MAP 273
+#define MESSAGES 274
+#define MODULE 275
+#define MULTIPLE 276
+#define OS_DOMAIN 277
+#define OUTPUT 278
+#define PSEUDOPREEMPTION 279
+#define REENTRANT 280
+#define SCREENNAME 281
+#define SHARELIB 282
+#define STACK 283
+#define START 284
+#define SYNCHRONIZE 285
+#define THREADNAME 286
+#define TYPE 287
+#define VERBOSE 288
+#define VERSIONK 289
+#define XDCDATA 290
+#define STRING 291
+#define QUOTED_STRING 292
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 1 "nlmheader.y"
+/* nlmheader.y - parse NLM header specification keywords.
+     Copyright 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003
+     Free Software Foundation, Inc.
+
+This file is part of GNU Binutils.
+
+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 2 of the License, 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; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Ian Lance Taylor <ian at cygnus.com>.
+
+   This bison file parses the commands recognized by the NetWare NLM
+   linker, except for lists of object files.  It stores the
+   information in global variables.
+
+   This implementation is based on the description in the NetWare Tool
+   Maker Specification manual, edition 1.0.  */
+
+#include "ansidecl.h"
+#include <stdio.h>
+#include "safe-ctype.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "nlm/common.h"
+#include "nlm/internal.h"
+#include "nlmconv.h"
+
+/* Information is stored in the structures pointed to by these
+   variables.  */
+
+Nlm_Internal_Fixed_Header *fixed_hdr;
+Nlm_Internal_Variable_Header *var_hdr;
+Nlm_Internal_Version_Header *version_hdr;
+Nlm_Internal_Copyright_Header *copyright_hdr;
+Nlm_Internal_Extended_Header *extended_hdr;
+
+/* Procedure named by CHECK.  */
+char *check_procedure;
+/* File named by CUSTOM.  */
+char *custom_file;
+/* Whether to generate debugging information (DEBUG).  */
+bfd_boolean debug_info;
+/* Procedure named by EXIT.  */
+char *exit_procedure;
+/* Exported symbols (EXPORT).  */
+struct string_list *export_symbols;
+/* List of files from INPUT.  */
+struct string_list *input_files;
+/* Map file name (MAP, FULLMAP).  */
+char *map_file;
+/* Whether a full map has been requested (FULLMAP).  */
+bfd_boolean full_map;
+/* File named by HELP.  */
+char *help_file;
+/* Imported symbols (IMPORT).  */
+struct string_list *import_symbols;
+/* File named by MESSAGES.  */
+char *message_file;
+/* Autoload module list (MODULE).  */
+struct string_list *modules;
+/* File named by OUTPUT.  */
+char *output_file;
+/* File named by SHARELIB.  */
+char *sharelib_file;
+/* Start procedure name (START).  */
+char *start_procedure;
+/* VERBOSE.  */
+bfd_boolean verbose;
+/* RPC description file (XDCDATA).  */
+char *rpc_file;
+
+/* The number of serious errors that have occurred.  */
+int parse_errors;
+
+/* The current symbol prefix when reading a list of import or export
+   symbols.  */
+static char *symbol_prefix;
+
+/* Parser error message handler.  */
+#define yyerror(msg) nlmheader_error (msg);
+
+/* Local functions.  */
+static int yylex (void);
+static void nlmlex_file_push (const char *);
+static bfd_boolean nlmlex_file_open (const char *);
+static int nlmlex_buf_init (void);
+static char nlmlex_buf_add (int);
+static long nlmlex_get_number (const char *);
+static void nlmheader_identify (void);
+static void nlmheader_warn (const char *, int);
+static void nlmheader_error (const char *);
+static struct string_list * string_list_cons (char *, struct string_list *);
+static struct string_list * string_list_append (struct string_list *,
+						struct string_list *);
+static struct string_list * string_list_append1 (struct string_list *,
+						 char *);
+static char *xstrdup (const char *);
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 113 "nlmheader.y"
+typedef union YYSTYPE {
+  char *string;
+  struct string_list *list;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 275 "nlmheader.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 287 "nlmheader.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  64
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   73
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  40
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  11
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  52
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  82
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   292
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      38,    39,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned char yyprhs[] =
+{
+       0,     0,     3,     5,     6,     9,    12,    15,    18,    21,
+      26,    28,    31,    34,    35,    39,    42,    45,    47,    50,
+      53,    54,    58,    61,    63,    66,    69,    72,    74,    76,
+      79,    81,    83,    86,    89,    92,    95,    97,   100,   103,
+     105,   110,   114,   117,   118,   120,   122,   124,   127,   130,
+     134,   136,   137
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      41,     0,    -1,    42,    -1,    -1,    43,    42,    -1,     3,
+      36,    -1,     4,    36,    -1,     5,    37,    -1,     6,    36,
+      -1,     7,    36,    36,    36,    -1,     8,    -1,     9,    37,
+      -1,    10,    36,    -1,    -1,    11,    44,    46,    -1,    12,
+      36,    -1,    13,    36,    -1,    14,    -1,    14,    36,    -1,
+      15,    36,    -1,    -1,    16,    45,    46,    -1,    17,    50,
+      -1,    18,    -1,    18,    36,    -1,    19,    36,    -1,    20,
+      50,    -1,    21,    -1,    22,    -1,    23,    36,    -1,    24,
+      -1,    25,    -1,    26,    37,    -1,    27,    36,    -1,    28,
+      36,    -1,    29,    36,    -1,    30,    -1,    31,    37,    -1,
+      32,    36,    -1,    33,    -1,    34,    36,    36,    36,    -1,
+      34,    36,    36,    -1,    35,    36,    -1,    -1,    47,    -1,
+      49,    -1,    48,    -1,    47,    49,    -1,    47,    48,    -1,
+      38,    36,    39,    -1,    36,    -1,    -1,    36,    50,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   144,   144,   149,   151,   157,   161,   166,   183,   187,
+     205,   209,   225,   230,   229,   237,   242,   247,   252,   257,
+     262,   261,   269,   273,   277,   281,   285,   289,   293,   297,
+     304,   308,   312,   328,   332,   337,   341,   345,   361,   366,
+     370,   394,   410,   420,   423,   434,   438,   442,   446,   455,
+     466,   483,   486
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "CHECK", "CODESTART", "COPYRIGHT",
+  "CUSTOM", "DATE", "DEBUG", "DESCRIPTION", "EXIT", "EXPORT", "FLAG_ON",
+  "FLAG_OFF", "FULLMAP", "HELP", "IMPORT", "INPUT", "MAP", "MESSAGES",
+  "MODULE", "MULTIPLE", "OS_DOMAIN", "OUTPUT", "PSEUDOPREEMPTION",
+  "REENTRANT", "SCREENNAME", "SHARELIB", "STACK", "START", "SYNCHRONIZE",
+  "THREADNAME", "TYPE", "VERBOSE", "VERSIONK", "XDCDATA", "STRING",
+  "QUOTED_STRING", "'('", "')'", "$accept", "file", "commands", "command",
+  "@1", "@2", "symbol_list_opt", "symbol_list", "symbol_prefix", "symbol",
+  "string_list", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,    40,    41
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    40,    41,    42,    42,    43,    43,    43,    43,    43,
+      43,    43,    43,    44,    43,    43,    43,    43,    43,    43,
+      45,    43,    43,    43,    43,    43,    43,    43,    43,    43,
+      43,    43,    43,    43,    43,    43,    43,    43,    43,    43,
+      43,    43,    43,    46,    46,    47,    47,    47,    47,    48,
+      49,    50,    50
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     0,     2,     2,     2,     2,     2,     4,
+       1,     2,     2,     0,     3,     2,     2,     1,     2,     2,
+       0,     3,     2,     1,     2,     2,     2,     1,     1,     2,
+       1,     1,     2,     2,     2,     2,     1,     2,     2,     1,
+       4,     3,     2,     0,     1,     1,     1,     2,     2,     3,
+       1,     0,     2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       3,     0,     0,     0,     0,     0,    10,     0,     0,    13,
+       0,     0,    17,     0,    20,    51,    23,     0,    51,    27,
+      28,     0,    30,    31,     0,     0,     0,     0,    36,     0,
+       0,    39,     0,     0,     0,     2,     3,     5,     6,     7,
+       8,     0,    11,    12,    43,    15,    16,    18,    19,    43,
+      51,    22,    24,    25,    26,    29,    32,    33,    34,    35,
+      37,    38,     0,    42,     1,     4,     0,    50,     0,    14,
+      44,    46,    45,    21,    52,    41,     9,     0,    48,    47,
+      40,    49
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,    34,    35,    36,    44,    49,    69,    70,    71,    72,
+      51
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -20
+static const yysigned_char yypact[] =
+{
+      -3,    -1,     1,     2,     4,     5,   -20,     6,     8,   -20,
+       9,    10,    11,    12,   -20,    13,    14,    16,    13,   -20,
+     -20,    17,   -20,   -20,    18,    20,    21,    22,   -20,    23,
+      25,   -20,    26,    27,    38,   -20,    -3,   -20,   -20,   -20,
+     -20,    28,   -20,   -20,    -2,   -20,   -20,   -20,   -20,    -2,
+      13,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
+     -20,   -20,    30,   -20,   -20,   -20,    31,   -20,    32,   -20,
+      -2,   -20,   -20,   -20,   -20,    33,   -20,     3,   -20,   -20,
+     -20,   -20
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yysigned_char yypgoto[] =
+{
+     -20,   -20,    34,   -20,   -20,   -20,    24,   -20,   -19,   -16,
+      15
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -1
+static const unsigned char yytable[] =
+{
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    54,    67,    37,    68,    38,    64,    39,
+      40,    41,    81,    42,    43,    45,    46,    47,    48,    50,
+      52,    78,    53,    55,    79,    56,    57,    58,    59,     0,
+      60,    61,    62,    63,    66,    74,    75,    76,    77,    80,
+      65,     0,     0,    73
+};
+
+static const yysigned_char yycheck[] =
+{
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    18,    36,    36,    38,    36,     0,    37,
+      36,    36,    39,    37,    36,    36,    36,    36,    36,    36,
+      36,    70,    36,    36,    70,    37,    36,    36,    36,    -1,
+      37,    36,    36,    36,    36,    50,    36,    36,    36,    36,
+      36,    -1,    -1,    49
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    41,    42,    43,    36,    36,    37,
+      36,    36,    37,    36,    44,    36,    36,    36,    36,    45,
+      36,    50,    36,    36,    50,    36,    37,    36,    36,    36,
+      37,    36,    36,    36,     0,    42,    36,    36,    38,    46,
+      47,    48,    49,    46,    50,    36,    36,    36,    48,    49,
+      36,    39
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 5:
+#line 158 "nlmheader.y"
+    {
+	    check_procedure = (yyvsp[0].string);
+	  }
+    break;
+
+  case 6:
+#line 162 "nlmheader.y"
+    {
+	    nlmheader_warn (_("CODESTART is not implemented; sorry"), -1);
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 7:
+#line 167 "nlmheader.y"
+    {
+	    int len;
+
+	    strncpy (copyright_hdr->stamp, "CoPyRiGhT=", 10);
+	    len = strlen ((yyvsp[0].string));
+	    if (len >= NLM_MAX_COPYRIGHT_MESSAGE_LENGTH)
+	      {
+		nlmheader_warn (_("copyright string is too long"),
+				NLM_MAX_COPYRIGHT_MESSAGE_LENGTH - 1);
+		len = NLM_MAX_COPYRIGHT_MESSAGE_LENGTH - 1;
+	      }
+	    copyright_hdr->copyrightMessageLength = len;
+	    strncpy (copyright_hdr->copyrightMessage, (yyvsp[0].string), len);
+	    copyright_hdr->copyrightMessage[len] = '\0';
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 8:
+#line 184 "nlmheader.y"
+    {
+	    custom_file = (yyvsp[0].string);
+	  }
+    break;
+
+  case 9:
+#line 188 "nlmheader.y"
+    {
+	    /* We don't set the version stamp here, because we use the
+	       version stamp to detect whether the required VERSION
+	       keyword was given.  */
+	    version_hdr->month = nlmlex_get_number ((yyvsp[-2].string));
+	    version_hdr->day = nlmlex_get_number ((yyvsp[-1].string));
+	    version_hdr->year = nlmlex_get_number ((yyvsp[0].string));
+	    free ((yyvsp[-2].string));
+	    free ((yyvsp[-1].string));
+	    free ((yyvsp[0].string));
+	    if (version_hdr->month < 1 || version_hdr->month > 12)
+	      nlmheader_warn (_("illegal month"), -1);
+	    if (version_hdr->day < 1 || version_hdr->day > 31)
+	      nlmheader_warn (_("illegal day"), -1);
+	    if (version_hdr->year < 1900 || version_hdr->year > 3000)
+	      nlmheader_warn (_("illegal year"), -1);
+	  }
+    break;
+
+  case 10:
+#line 206 "nlmheader.y"
+    {
+	    debug_info = TRUE;
+	  }
+    break;
+
+  case 11:
+#line 210 "nlmheader.y"
+    {
+	    int len;
+
+	    len = strlen ((yyvsp[0].string));
+	    if (len > NLM_MAX_DESCRIPTION_LENGTH)
+	      {
+		nlmheader_warn (_("description string is too long"),
+				NLM_MAX_DESCRIPTION_LENGTH);
+		len = NLM_MAX_DESCRIPTION_LENGTH;
+	      }
+	    var_hdr->descriptionLength = len;
+	    strncpy (var_hdr->descriptionText, (yyvsp[0].string), len);
+	    var_hdr->descriptionText[len] = '\0';
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 12:
+#line 226 "nlmheader.y"
+    {
+	    exit_procedure = (yyvsp[0].string);
+	  }
+    break;
+
+  case 13:
+#line 230 "nlmheader.y"
+    {
+	    symbol_prefix = NULL;
+	  }
+    break;
+
+  case 14:
+#line 234 "nlmheader.y"
+    {
+	    export_symbols = string_list_append (export_symbols, (yyvsp[0].list));
+	  }
+    break;
+
+  case 15:
+#line 238 "nlmheader.y"
+    {
+	    fixed_hdr->flags |= nlmlex_get_number ((yyvsp[0].string));
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 16:
+#line 243 "nlmheader.y"
+    {
+	    fixed_hdr->flags &=~ nlmlex_get_number ((yyvsp[0].string));
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 17:
+#line 248 "nlmheader.y"
+    {
+	    map_file = "";
+	    full_map = TRUE;
+	  }
+    break;
+
+  case 18:
+#line 253 "nlmheader.y"
+    {
+	    map_file = (yyvsp[0].string);
+	    full_map = TRUE;
+	  }
+    break;
+
+  case 19:
+#line 258 "nlmheader.y"
+    {
+	    help_file = (yyvsp[0].string);
+	  }
+    break;
+
+  case 20:
+#line 262 "nlmheader.y"
+    {
+	    symbol_prefix = NULL;
+	  }
+    break;
+
+  case 21:
+#line 266 "nlmheader.y"
+    {
+	    import_symbols = string_list_append (import_symbols, (yyvsp[0].list));
+	  }
+    break;
+
+  case 22:
+#line 270 "nlmheader.y"
+    {
+	    input_files = string_list_append (input_files, (yyvsp[0].list));
+	  }
+    break;
+
+  case 23:
+#line 274 "nlmheader.y"
+    {
+	    map_file = "";
+	  }
+    break;
+
+  case 24:
+#line 278 "nlmheader.y"
+    {
+	    map_file = (yyvsp[0].string);
+	  }
+    break;
+
+  case 25:
+#line 282 "nlmheader.y"
+    {
+	    message_file = (yyvsp[0].string);
+	  }
+    break;
+
+  case 26:
+#line 286 "nlmheader.y"
+    {
+	    modules = string_list_append (modules, (yyvsp[0].list));
+	  }
+    break;
+
+  case 27:
+#line 290 "nlmheader.y"
+    {
+	    fixed_hdr->flags |= 0x2;
+	  }
+    break;
+
+  case 28:
+#line 294 "nlmheader.y"
+    {
+	    fixed_hdr->flags |= 0x10;
+	  }
+    break;
+
+  case 29:
+#line 298 "nlmheader.y"
+    {
+	    if (output_file == NULL)
+	      output_file = (yyvsp[0].string);
+	    else
+	      nlmheader_warn (_("ignoring duplicate OUTPUT statement"), -1);
+	  }
+    break;
+
+  case 30:
+#line 305 "nlmheader.y"
+    {
+	    fixed_hdr->flags |= 0x8;
+	  }
+    break;
+
+  case 31:
+#line 309 "nlmheader.y"
+    {
+	    fixed_hdr->flags |= 0x1;
+	  }
+    break;
+
+  case 32:
+#line 313 "nlmheader.y"
+    {
+	    int len;
+
+	    len = strlen ((yyvsp[0].string));
+	    if (len >= NLM_MAX_SCREEN_NAME_LENGTH)
+	      {
+		nlmheader_warn (_("screen name is too long"),
+				NLM_MAX_SCREEN_NAME_LENGTH);
+		len = NLM_MAX_SCREEN_NAME_LENGTH;
+	      }
+	    var_hdr->screenNameLength = len;
+	    strncpy (var_hdr->screenName, (yyvsp[0].string), len);
+	    var_hdr->screenName[NLM_MAX_SCREEN_NAME_LENGTH] = '\0';
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 33:
+#line 329 "nlmheader.y"
+    {
+	    sharelib_file = (yyvsp[0].string);
+	  }
+    break;
+
+  case 34:
+#line 333 "nlmheader.y"
+    {
+	    var_hdr->stackSize = nlmlex_get_number ((yyvsp[0].string));
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 35:
+#line 338 "nlmheader.y"
+    {
+	    start_procedure = (yyvsp[0].string);
+	  }
+    break;
+
+  case 36:
+#line 342 "nlmheader.y"
+    {
+	    fixed_hdr->flags |= 0x4;
+	  }
+    break;
+
+  case 37:
+#line 346 "nlmheader.y"
+    {
+	    int len;
+
+	    len = strlen ((yyvsp[0].string));
+	    if (len >= NLM_MAX_THREAD_NAME_LENGTH)
+	      {
+		nlmheader_warn (_("thread name is too long"),
+				NLM_MAX_THREAD_NAME_LENGTH);
+		len = NLM_MAX_THREAD_NAME_LENGTH;
+	      }
+	    var_hdr->threadNameLength = len;
+	    strncpy (var_hdr->threadName, (yyvsp[0].string), len);
+	    var_hdr->threadName[len] = '\0';
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 38:
+#line 362 "nlmheader.y"
+    {
+	    fixed_hdr->moduleType = nlmlex_get_number ((yyvsp[0].string));
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 39:
+#line 367 "nlmheader.y"
+    {
+	    verbose = TRUE;
+	  }
+    break;
+
+  case 40:
+#line 371 "nlmheader.y"
+    {
+	    long val;
+
+	    strncpy (version_hdr->stamp, "VeRsIoN#", 8);
+	    version_hdr->majorVersion = nlmlex_get_number ((yyvsp[-2].string));
+	    val = nlmlex_get_number ((yyvsp[-1].string));
+	    if (val < 0 || val > 99)
+	      nlmheader_warn (_("illegal minor version number (must be between 0 and 99)"),
+			      -1);
+	    else
+	      version_hdr->minorVersion = val;
+	    val = nlmlex_get_number ((yyvsp[0].string));
+	    if (val < 0)
+	      nlmheader_warn (_("illegal revision number (must be between 0 and 26)"),
+			      -1);
+	    else if (val > 26)
+	      version_hdr->revision = 0;
+	    else
+	      version_hdr->revision = val;
+	    free ((yyvsp[-2].string));
+	    free ((yyvsp[-1].string));
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 41:
+#line 395 "nlmheader.y"
+    {
+	    long val;
+
+	    strncpy (version_hdr->stamp, "VeRsIoN#", 8);
+	    version_hdr->majorVersion = nlmlex_get_number ((yyvsp[-1].string));
+	    val = nlmlex_get_number ((yyvsp[0].string));
+	    if (val < 0 || val > 99)
+	      nlmheader_warn (_("illegal minor version number (must be between 0 and 99)"),
+			      -1);
+	    else
+	      version_hdr->minorVersion = val;
+	    version_hdr->revision = 0;
+	    free ((yyvsp[-1].string));
+	    free ((yyvsp[0].string));
+	  }
+    break;
+
+  case 42:
+#line 411 "nlmheader.y"
+    {
+	    rpc_file = (yyvsp[0].string);
+	  }
+    break;
+
+  case 43:
+#line 420 "nlmheader.y"
+    {
+	    (yyval.list) = NULL;
+	  }
+    break;
+
+  case 44:
+#line 424 "nlmheader.y"
+    {
+	    (yyval.list) = (yyvsp[0].list);
+	  }
+    break;
+
+  case 45:
+#line 435 "nlmheader.y"
+    {
+	    (yyval.list) = string_list_cons ((yyvsp[0].string), NULL);
+	  }
+    break;
+
+  case 46:
+#line 439 "nlmheader.y"
+    {
+	    (yyval.list) = NULL;
+	  }
+    break;
+
+  case 47:
+#line 443 "nlmheader.y"
+    {
+	    (yyval.list) = string_list_append1 ((yyvsp[-1].list), (yyvsp[0].string));
+	  }
+    break;
+
+  case 48:
+#line 447 "nlmheader.y"
+    {
+	    (yyval.list) = (yyvsp[-1].list);
+	  }
+    break;
+
+  case 49:
+#line 456 "nlmheader.y"
+    {
+	    if (symbol_prefix != NULL)
+	      free (symbol_prefix);
+	    symbol_prefix = (yyvsp[-1].string);
+	  }
+    break;
+
+  case 50:
+#line 467 "nlmheader.y"
+    {
+	    if (symbol_prefix == NULL)
+	      (yyval.string) = (yyvsp[0].string);
+	    else
+	      {
+		(yyval.string) = xmalloc (strlen (symbol_prefix) + strlen ((yyvsp[0].string)) + 2);
+		sprintf ((yyval.string), "%s@%s", symbol_prefix, (yyvsp[0].string));
+		free ((yyvsp[0].string));
+	      }
+	  }
+    break;
+
+  case 51:
+#line 483 "nlmheader.y"
+    {
+	    (yyval.list) = NULL;
+	  }
+    break;
+
+  case 52:
+#line 487 "nlmheader.y"
+    {
+	    (yyval.list) = string_list_cons ((yyvsp[-1].string), (yyvsp[0].list));
+	  }
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1797 "nlmheader.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 492 "nlmheader.y"
+
+
+/* If strerror is just a macro, we want to use the one from libiberty
+   since it will handle undefined values.  */
+#undef strerror
+extern char *strerror PARAMS ((int));
+
+/* The lexer is simple, too simple for flex.  Keywords are only
+   recognized at the start of lines.  Everything else must be an
+   argument.  A comma is treated as whitespace.  */
+
+/* The states the lexer can be in.  */
+
+enum lex_state
+{
+  /* At the beginning of a line.  */
+  BEGINNING_OF_LINE,
+  /* In the middle of a line.  */
+  IN_LINE
+};
+
+/* We need to keep a stack of files to handle file inclusion.  */
+
+struct input
+{
+  /* The file to read from.  */
+  FILE *file;
+  /* The name of the file.  */
+  char *name;
+  /* The current line number.  */
+  int lineno;
+  /* The current state.  */
+  enum lex_state state;
+  /* The next file on the stack.  */
+  struct input *next;
+};
+
+/* The current input file.  */
+
+static struct input current;
+
+/* The character which introduces comments.  */
+#define COMMENT_CHAR '#'
+
+/* Start the lexer going on the main input file.  */
+
+bfd_boolean
+nlmlex_file (const char *name)
+{
+  current.next = NULL;
+  return nlmlex_file_open (name);
+}
+
+/* Start the lexer going on a subsidiary input file.  */
+
+static void
+nlmlex_file_push (const char *name)
+{
+  struct input *push;
+
+  push = (struct input *) xmalloc (sizeof (struct input));
+  *push = current;
+  if (nlmlex_file_open (name))
+    current.next = push;
+  else
+    {
+      current = *push;
+      free (push);
+    }
+}
+
+/* Start lexing from a file.  */
+
+static bfd_boolean
+nlmlex_file_open (const char *name)
+{
+  current.file = fopen (name, "r");
+  if (current.file == NULL)
+    {
+      fprintf (stderr, "%s:%s: %s\n", program_name, name, strerror (errno));
+      ++parse_errors;
+      return FALSE;
+    }
+  current.name = xstrdup (name);
+  current.lineno = 1;
+  current.state = BEGINNING_OF_LINE;
+  return TRUE;
+}
+
+/* Table used to turn keywords into tokens.  */
+
+struct keyword_tokens_struct
+{
+  const char *keyword;
+  int token;
+};
+
+static struct keyword_tokens_struct keyword_tokens[] =
+{
+  { "CHECK", CHECK },
+  { "CODESTART", CODESTART },
+  { "COPYRIGHT", COPYRIGHT },
+  { "CUSTOM", CUSTOM },
+  { "DATE", DATE },
+  { "DEBUG", DEBUG },
+  { "DESCRIPTION", DESCRIPTION },
+  { "EXIT", EXIT },
+  { "EXPORT", EXPORT },
+  { "FLAG_ON", FLAG_ON },
+  { "FLAG_OFF", FLAG_OFF },
+  { "FULLMAP", FULLMAP },
+  { "HELP", HELP },
+  { "IMPORT", IMPORT },
+  { "INPUT", INPUT },
+  { "MAP", MAP },
+  { "MESSAGES", MESSAGES },
+  { "MODULE", MODULE },
+  { "MULTIPLE", MULTIPLE },
+  { "OS_DOMAIN", OS_DOMAIN },
+  { "OUTPUT", OUTPUT },
+  { "PSEUDOPREEMPTION", PSEUDOPREEMPTION },
+  { "REENTRANT", REENTRANT },
+  { "SCREENNAME", SCREENNAME },
+  { "SHARELIB", SHARELIB },
+  { "STACK", STACK },
+  { "STACKSIZE", STACK },
+  { "START", START },
+  { "SYNCHRONIZE", SYNCHRONIZE },
+  { "THREADNAME", THREADNAME },
+  { "TYPE", TYPE },
+  { "VERBOSE", VERBOSE },
+  { "VERSION", VERSIONK },
+  { "XDCDATA", XDCDATA }
+};
+
+#define KEYWORD_COUNT (sizeof (keyword_tokens) / sizeof (keyword_tokens[0]))
+
+/* The lexer accumulates strings in these variables.  */
+static char *lex_buf;
+static int lex_size;
+static int lex_pos;
+
+/* Start accumulating strings into the buffer.  */
+#define BUF_INIT() \
+  ((void) (lex_buf != NULL ? lex_pos = 0 : nlmlex_buf_init ()))
+
+static int
+nlmlex_buf_init (void)
+{
+  lex_size = 10;
+  lex_buf = xmalloc (lex_size + 1);
+  lex_pos = 0;
+  return 0;
+}
+
+/* Finish a string in the buffer.  */
+#define BUF_FINISH() ((void) (lex_buf[lex_pos] = '\0'))
+
+/* Accumulate a character into the buffer.  */
+#define BUF_ADD(c) \
+  ((void) (lex_pos < lex_size \
+	   ? lex_buf[lex_pos++] = (c) \
+	   : nlmlex_buf_add (c)))
+
+static char
+nlmlex_buf_add (int c)
+{
+  if (lex_pos >= lex_size)
+    {
+      lex_size *= 2;
+      lex_buf = xrealloc (lex_buf, lex_size + 1);
+    }
+
+  return lex_buf[lex_pos++] = c;
+}
+
+/* The lexer proper.  This is called by the bison generated parsing
+   code.  */
+
+static int
+yylex (void)
+{
+  int c;
+
+tail_recurse:
+
+  c = getc (current.file);
+
+  /* Commas are treated as whitespace characters.  */
+  while (ISSPACE (c) || c == ',')
+    {
+      current.state = IN_LINE;
+      if (c == '\n')
+	{
+	  ++current.lineno;
+	  current.state = BEGINNING_OF_LINE;
+	}
+      c = getc (current.file);
+    }
+
+  /* At the end of the file we either pop to the previous file or
+     finish up.  */
+  if (c == EOF)
+    {
+      fclose (current.file);
+      free (current.name);
+      if (current.next == NULL)
+	return 0;
+      else
+	{
+	  struct input *next;
+
+	  next = current.next;
+	  current = *next;
+	  free (next);
+	  goto tail_recurse;
+	}
+    }
+
+  /* A comment character always means to drop everything until the
+     next newline.  */
+  if (c == COMMENT_CHAR)
+    {
+      do
+	{
+	  c = getc (current.file);
+	}
+      while (c != '\n');
+      ++current.lineno;
+      current.state = BEGINNING_OF_LINE;
+      goto tail_recurse;
+    }
+
+  /* An '@' introduces an include file.  */
+  if (c == '@')
+    {
+      do
+	{
+	  c = getc (current.file);
+	  if (c == '\n')
+	    ++current.lineno;
+	}
+      while (ISSPACE (c));
+      BUF_INIT ();
+      while (! ISSPACE (c) && c != EOF)
+	{
+	  BUF_ADD (c);
+	  c = getc (current.file);
+	}
+      BUF_FINISH ();
+
+      ungetc (c, current.file);
+
+      nlmlex_file_push (lex_buf);
+      goto tail_recurse;
+    }
+
+  /* A non-space character at the start of a line must be the start of
+     a keyword.  */
+  if (current.state == BEGINNING_OF_LINE)
+    {
+      BUF_INIT ();
+      while (ISALNUM (c) || c == '_')
+	{
+	  BUF_ADD (TOUPPER (c));
+	  c = getc (current.file);
+	}
+      BUF_FINISH ();
+
+      if (c != EOF && ! ISSPACE (c) && c != ',')
+	{
+	  nlmheader_identify ();
+	  fprintf (stderr, _("%s:%d: illegal character in keyword: %c\n"),
+		   current.name, current.lineno, c);
+	}
+      else
+	{
+	  unsigned int i;
+
+	  for (i = 0; i < KEYWORD_COUNT; i++)
+	    {
+	      if (lex_buf[0] == keyword_tokens[i].keyword[0]
+		  && strcmp (lex_buf, keyword_tokens[i].keyword) == 0)
+		{
+		  /* Pushing back the final whitespace avoids worrying
+		     about \n here.  */
+		  ungetc (c, current.file);
+		  current.state = IN_LINE;
+		  return keyword_tokens[i].token;
+		}
+	    }
+
+	  nlmheader_identify ();
+	  fprintf (stderr, _("%s:%d: unrecognized keyword: %s\n"),
+		   current.name, current.lineno, lex_buf);
+	}
+
+      ++parse_errors;
+      /* Treat the rest of this line as a comment.  */
+      ungetc (COMMENT_CHAR, current.file);
+      goto tail_recurse;
+    }
+
+  /* Parentheses just represent themselves.  */
+  if (c == '(' || c == ')')
+    return c;
+
+  /* Handle quoted strings.  */
+  if (c == '"' || c == '\'')
+    {
+      int quote;
+      int start_lineno;
+
+      quote = c;
+      start_lineno = current.lineno;
+
+      c = getc (current.file);
+      BUF_INIT ();
+      while (c != quote && c != EOF)
+	{
+	  BUF_ADD (c);
+	  if (c == '\n')
+	    ++current.lineno;
+	  c = getc (current.file);
+	}
+      BUF_FINISH ();
+
+      if (c == EOF)
+	{
+	  nlmheader_identify ();
+	  fprintf (stderr, _("%s:%d: end of file in quoted string\n"),
+		   current.name, start_lineno);
+	  ++parse_errors;
+	}
+
+      /* FIXME: Possible memory leak.  */
+      yylval.string = xstrdup (lex_buf);
+      return QUOTED_STRING;
+    }
+
+  /* Gather a generic argument.  */
+  BUF_INIT ();
+  while (! ISSPACE (c)
+	 && c != ','
+	 && c != COMMENT_CHAR
+	 && c != '('
+	 && c != ')')
+    {
+      BUF_ADD (c);
+      c = getc (current.file);
+    }
+  BUF_FINISH ();
+
+  ungetc (c, current.file);
+
+  /* FIXME: Possible memory leak.  */
+  yylval.string = xstrdup (lex_buf);
+  return STRING;
+}
+
+/* Get a number from a string.  */
+
+static long
+nlmlex_get_number (const char *s)
+{
+  long ret;
+  char *send;
+
+  ret = strtol (s, &send, 10);
+  if (*send != '\0')
+    nlmheader_warn (_("bad number"), -1);
+  return ret;
+}
+
+/* Prefix the nlmconv warnings with a note as to where they come from.
+   We don't use program_name on every warning, because then some
+   versions of the emacs next-error function can't recognize the line
+   number.  */
+
+static void
+nlmheader_identify (void)
+{
+  static int done;
+
+  if (! done)
+    {
+      fprintf (stderr, _("%s: problems in NLM command language input:\n"),
+	       program_name);
+      done = 1;
+    }
+}
+
+/* Issue a warning.  */
+
+static void
+nlmheader_warn (const char *s, int imax)
+{
+  nlmheader_identify ();
+  fprintf (stderr, "%s:%d: %s", current.name, current.lineno, s);
+  if (imax != -1)
+    fprintf (stderr, " (max %d)", imax);
+  fprintf (stderr, "\n");
+}
+
+/* Report an error.  */
+
+static void
+nlmheader_error (const char *s)
+{
+  nlmheader_warn (s, -1);
+  ++parse_errors;
+}
+
+/* Add a string to a string list.  */
+
+static struct string_list *
+string_list_cons (char *s, struct string_list *l)
+{
+  struct string_list *ret;
+
+  ret = (struct string_list *) xmalloc (sizeof (struct string_list));
+  ret->next = l;
+  ret->string = s;
+  return ret;
+}
+
+/* Append a string list to another string list.  */
+
+static struct string_list *
+string_list_append (struct string_list *l1, struct string_list *l2)
+{
+  register struct string_list **pp;
+
+  for (pp = &l1; *pp != NULL; pp = &(*pp)->next)
+    ;
+  *pp = l2;
+  return l1;
+}
+
+/* Append a string to a string list.  */
+
+static struct string_list *
+string_list_append1 (struct string_list *l, char *s)
+{
+  struct string_list *n;
+  register struct string_list **pp;
+
+  n = (struct string_list *) xmalloc (sizeof (struct string_list));
+  n->next = NULL;
+  n->string = s;
+  for (pp = &l; *pp != NULL; pp = &(*pp)->next)
+    ;
+  *pp = n;
+  return l;
+}
+
+/* Duplicate a string in memory.  */
+
+static char *
+xstrdup (const char *s)
+{
+  unsigned long len;
+  char *ret;
+
+  len = strlen (s);
+  ret = xmalloc (len + 1);
+  strcpy (ret, s);
+  return ret;
+}
+

Added: branches/binutils/package/binutils/nlmheader.h
===================================================================
--- branches/binutils/package/binutils/nlmheader.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/nlmheader.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,125 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     CHECK = 258,
+     CODESTART = 259,
+     COPYRIGHT = 260,
+     CUSTOM = 261,
+     DATE = 262,
+     DEBUG = 263,
+     DESCRIPTION = 264,
+     EXIT = 265,
+     EXPORT = 266,
+     FLAG_ON = 267,
+     FLAG_OFF = 268,
+     FULLMAP = 269,
+     HELP = 270,
+     IMPORT = 271,
+     INPUT = 272,
+     MAP = 273,
+     MESSAGES = 274,
+     MODULE = 275,
+     MULTIPLE = 276,
+     OS_DOMAIN = 277,
+     OUTPUT = 278,
+     PSEUDOPREEMPTION = 279,
+     REENTRANT = 280,
+     SCREENNAME = 281,
+     SHARELIB = 282,
+     STACK = 283,
+     START = 284,
+     SYNCHRONIZE = 285,
+     THREADNAME = 286,
+     TYPE = 287,
+     VERBOSE = 288,
+     VERSIONK = 289,
+     XDCDATA = 290,
+     STRING = 291,
+     QUOTED_STRING = 292
+   };
+#endif
+/* Tokens.  */
+#define CHECK 258
+#define CODESTART 259
+#define COPYRIGHT 260
+#define CUSTOM 261
+#define DATE 262
+#define DEBUG 263
+#define DESCRIPTION 264
+#define EXIT 265
+#define EXPORT 266
+#define FLAG_ON 267
+#define FLAG_OFF 268
+#define FULLMAP 269
+#define HELP 270
+#define IMPORT 271
+#define INPUT 272
+#define MAP 273
+#define MESSAGES 274
+#define MODULE 275
+#define MULTIPLE 276
+#define OS_DOMAIN 277
+#define OUTPUT 278
+#define PSEUDOPREEMPTION 279
+#define REENTRANT 280
+#define SCREENNAME 281
+#define SHARELIB 282
+#define STACK 283
+#define START 284
+#define SYNCHRONIZE 285
+#define THREADNAME 286
+#define TYPE 287
+#define VERBOSE 288
+#define VERSIONK 289
+#define XDCDATA 290
+#define STRING 291
+#define QUOTED_STRING 292
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 113 "nlmheader.y"
+typedef union YYSTYPE {
+  char *string;
+  struct string_list *list;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 117 "nlmheader.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Deleted: branches/binutils/package/binutils/po/.cvsignore
===================================================================
--- branches/binutils/package/binutils/po/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/po/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1 +0,0 @@
-*.gmo

Modified: branches/binutils/package/binutils/po/Make-in
===================================================================
--- branches/binutils/package/binutils/po/Make-in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/po/Make-in	2006-12-31 16:27:59 UTC (rev 19)
@@ -186,7 +186,7 @@
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp

Added: branches/binutils/package/binutils/po/da.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/da.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/es.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/binutils/po/es.po
===================================================================
--- branches/binutils/package/binutils/po/es.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/po/es.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,40 +1,42 @@
-# Mensajes en español para binutils 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para binutils 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: binutils 2.15.96\n"
+"Project-Id-Version: binutils 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2005-03-14 17:11-0600\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-27 11:17-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga at itam.mx>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "Modo de empleo: %s [opcion(es)] [direccion(es)]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr " Convierte direcciones en pares de nombre número/fila.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
 msgstr " Si no se especifican direcciones en la línea de órdenes, se leerán de la entrada estándar\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -43,9 +45,11 @@
 "\n"
 msgstr ""
 " Las opciones son:\n"
+"  @<fichero>              Lee opciones del <fichero>\n"
 "  -b --target=<nombrebfd> Establece el formato del fichero binario\n"
 "  -e --exe=<ejecutable>   Establece el nombre del fichero de entrada\n"
 "                          (por defecto es a.out)\n"
+"  -i --inlines\t\t Desenreda las funciones inline\n"
 "  -s --basenames          Elimina los nombres de directorio\n"
 "  -f --functions          Muestra los nombres de función\n"
 "  -C --demangle[=estilo]  Desenreda los nombres de función\n"
@@ -53,210 +57,217 @@
 "  -v --version            Muestra la versión del programa\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: no se pueden obtener las direcciones del archivo"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "estilo de desenredo `%s' desconocido"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "no existe la entrada %s en el archivo\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr "Modo de empleo: %s [opciones emulación] [-]{dmpqrstx}[abcfilNoPsSuvV] [nombre-miembro] [cuenta] fichero-archivo fichero...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "       %s -M [<guión-mri>]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " órdenes:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            - borra fichero(s) del archivo\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        - mueve fichero(s) en el archivo\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            - muestra fichero(s) encontrados en el archivo\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         - agrega rápidamente fichero(s) al archivo\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  - reemplaza fichero(s) existente(s) o inserta fichero(s) nuevo(s) en el archivo\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            - muestra los contenidos del archivo\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         - extrae fichero(s) del archivo\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " modificadores específicos de la orden:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          - coloca fichero(s) despúes de [nombre-miembro]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          - coloca fichero(s) antes de [nombre-miembro] (igual que [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          - usa la instancia [cuenta] del nombre\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]          - trunca los nombres de fichero insertados\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          - utiliza nombres completos de ruta cuando se buscan coincidencias\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          - conserva las fechas originales\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          - sólo reemplaza ficheros que sean más nuevos que el contenido actual del archivo\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " modificadores genéricos:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          - no avisa si se tiene que crear la biblioteca\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          - crea un índice del archivo (cf. ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          - no construye una tabla de símbolos\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          - detallado\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          - muestra el número de versión\n"
 
-#: ar.c:253
+#: ar.c:245
 #, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<fichero>   - lee opciones del <fichero>\n"
+
+#: ar.c:252
+#, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "Modo de empleo: %s [opciones] archivo\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " Generar un índice para acelerar el acceso a los archivos\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 " Las opciones son:\n"
+"  @<fichero>                   Lee opciones del <fichero>\n"
 "  -h --help                    Muestra este mensaje de ayuda\n"
 "  -V --version                 Muestra la información de versión\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "se especificaron dos opciones de operación diferentes"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "opción ilegal -- %c"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "no se especificó una operación"
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "`u' sólo tiene significado con la opción `r'."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "`N' sólo tiene significado con las opciones `x' y `d'."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "El valor para `N' debe ser positivo."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "error interno -- esta opción no está implementada"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "creando %s"
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "error interno de stat en %s"
 
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -267,37 +278,37 @@
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s no es un archivo válido"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "stat devuelve un valor negativo para %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "No hay un miembro llamado `%s'\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "¡no hay una entrada %s en el archivo %s!"
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: no hay un mapa de archivo para actualizar"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "No hay una entrada %s en el archivo.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "No se puede abrir el fichero %s\n"
@@ -353,95 +364,97 @@
 msgstr "  No hay opciones específicas de la emulación\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr "  opciones de emulación:\n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "no se puede establecer el objetivo BFD por defecto a `%s': %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: Formatos coincidentes:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "Objetivos con soporte:"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: objetivos con soporte:"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "Arquitecturas con soporte:"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: arquitecturas con soporte:"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "encabezado del fichero BFD versión %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: número erróneo: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "'%s': No hay tal fichero"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "Aviso: no se puede encontrar '%s'. razón: %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "Aviso: '%s' no es un fichero ordinario"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "#líneas %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr " Muestra una interpretación legible por humanos de un fichero objeto SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 " Las opciones son:\n"
+"  @<fichero>             Lee opciones del <fichero>\n"
 "  -h --help              Muestra esta información\n"
 "  -v --version           Muestra la versión del programa\n"
 "\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "no se especificó un fichero de entrada"
 
@@ -538,577 +551,587 @@
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: se encontró un tipo ilegal"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "Error interno: Tipo de máquina desconocido: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "No se puede abrir el fichero def: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "Procesando el fichero def: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "Fichero def procesado"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "Error sintáctico en el fichero def %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: Se eliminaron los componentes de la ruta del nombre de la imagen, '%s'."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "NOMBRE: %s base: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "No se puede tener BIBLIOTECA y NOMBRE"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "BIBLIOTECA: %s base %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "espera: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "el subproceso recibió la señal fatal %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s terminó con estado %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "Succionando la información de la sección %s en %s"
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "Excluyendo el símbolo: %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: no hay símbolos"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "%s leído"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "No se puede abrir el fichero objeto: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "Revisando el fichero objeto %s"
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "No se puede producir una dll mcore-elf del fichero archivo: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "Agregando exportaciones al fichero de salida"
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "Exportaciones agregadas al fichero de salida"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "Generando el fichero de exportación: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "No se puede abrir el fichero temporal de ensamblador: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "Se abrió el fichero temporal: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "Fichero de exportación generado"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "falló bfd_open al abrirl el fichero de cabos: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "Creando el ficheor de cabos: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "falló la apertura del inicio del fichero temporal: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "falló la apertura del final del fichero temporal: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "No se puede abrir el fichero .lib: %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "Creando el fichero de biblioteca: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "no se puede borrar %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "Fichero de biblioteca creado"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "Aviso, ignorando las EXPORTaciones duplicadas %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "Error, EXPORTaciones duplicadas con ordinales: %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "Procesando definiciones"
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "Definiciones procesadas"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "Modo de empleo %s <opcion(es)> <fichero(s)-objeto>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <máquina>    Crear una DLL para la <máquina>.  [por defecto: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        <máquina> posible: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <nomsal>  Generar un fichero de exportación.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <nomsal>  Generar un fichero de interfaz.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         Agregar indirecciones dll al fichero de exportación.\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <nombre>     Nombre de la dll de entrada a colocar en la biblioteca de interfaz.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <fichdef>  Nombre del fichero .def para leer.\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <fichdef> Nombre del fichero .def para crear.\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
 msgstr "      --export-all-symbols   Exportar todos los símbolos a un .def\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr "      --no-export-all-symbols  Sólo exportar los símbolos enlistados\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr "      --exclude-symbols <list> No exportar la <list>a\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr "      --no-default-excludes  Limpiar los símbolos excluídos por defecto\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <fichbase> Leer el fichero base generado por el enlazador.\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            No generar la sección idata$4.\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            No generar la sección idata$5.\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr "   -U --add-underscore       Agregar subrayado a los símbolos en la biblioteca de interfaz.\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr "   -k --kill-at              Eliminar @<n> de los nombres exportados.\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr "   -A --add-stdcall-alias    Agregar aliases sin @<n>.\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr "   -p --ext-prefix-alias <prefijo> Agregar aliases con <prefijo>.\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <nombre>          Usar <nombre> para ensamblador.\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr "   -f --as-flags <opciones>  Pasar <opciones> al ensamblador.\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        Crear biblioteca de importación compatible hacia atrás.\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr "   -n --no-delete            Conservar los ficheros temporales (repetir para conservación extra).\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <prefijo> Usar el <prefijo> para construir nombres de ficheros temporales.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
 msgstr "   -v --verbose              Detallado.\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
 msgstr "   -V --version              Muestra la versión del programa.\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
 msgstr "   -h --help                 Muestra esta información.\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
 #, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<fichero>                Lee opciones del <fichero>.\n"
+
+#: dlltool.c:3063
+#, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr "   -M --mcore-elf <nomsal>   Procesa los ficheros objeto mcore-elf hacia <nomsal>.\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <nombre>      Usa <nombre> como el enlazador.\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <opts>  Pasa <opts> al enlazador.\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "Se eliminaron los componentes de la ruta del nombre de dll, '%s'."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "No se puede abrir el fichero-base: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "La máquina '%s' no tiene soporte"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "Fichero intentado: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "Usando el fichero: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "Conservando el fichero base temporal %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "Borrando el fichero base temporal %s"
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "Conservando el fichero exp temporal %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "Borrando el fichero exp temporal %s"
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "Conservando el fichero def temporal %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "Borrando el fichero def temporal %s"
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  Opciones genéricas:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
 #, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<fichero>             Lee opciones del <fichero>\n"
+
+#: dllwrap.c:477
+#, c-format
 msgid "   --quiet, -q            Work quietly\n"
 msgstr "   --quiet, -q            Trabajar silenciosamente\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v         Con detalle\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              Muestra la versión de dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --impllib <nombresal>  Sinónimo para --output-lib\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  Opciones para %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr "   --driver-name <cntrl>  Por defecto es \"gcc\"\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr "   --driver-flags <opts>  Cambia las opciones por defecto de ld\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr "   --dlltool-name <dlltool> Por defecto es \"dlltool\"\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <entrada>      Especifica un punto de entrada alternativo para la DLL\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <base>    Especifica la dirección de la imagen base\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <máquina>     i386-cygwin32 ó i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              Muestra lo que se necesita ejecutar\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin           Crea una DLL Mingw\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  Opciones pasadas a DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <máquina>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <nomsal>  Genera un fichero de exportación.\n"
 
 # ¿No será acaso una biblioteca de salida? cfuga
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <nomsal>  Genera una biblioteca de entrada.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         Agrega indirecciones de dll al fichero de exportación.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <nombre>     Nombre del fichero dll de entrada a colocar en la biblioteca de salida.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <ficherodef>     Nombre del fichero .def de entrada\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <fichdef> Nombre del fichero .def de salida\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     Exporta todos los símbolos a un .def\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr "   --no-export-all-symbols  Sólo exporta los símbolos .drectve\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr "   --exclude-symbols <list> Excluye la <list>a del .def\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr "   --no-default-excludes    Elimina los símbolos excluídos por defecto\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <fichbase> Lee el fichero base generado por el enlazador\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           No genera la sección idata$4\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           No genera la sección idata$5\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     Agrega subrayados a .lib\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr "   -k                     Elimina @<n> de los nombres exportados\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr "   --add-stdcall-alias    Agrega aliases sin @<n>\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <nombre>          Usa <nombre> como ensamblador\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             Conserva los ficheros temporales.\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  El resto se pasa sin modificación al controlador del lenguaje\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "Se debe proveer por lo menos una de las opciones -o ó --dllname"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1116,26 +1139,731 @@
 "no se provee un fichero de definición de exportación.\n"
 "Creando uno, pero tal vez eso no es lo que quiere"
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "nombre DLLTOOL  : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "opciones DLLTOOL: %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "nombre DRIVER   : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "opciones DRIVER : %s\n"
 
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Longitud de datos sin manejar: %d\n"
+
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "¡se encontró un operador extendido de línea mal formado!\n"
+
+#: dwarf.c:244
+#, c-format
+msgid "  Extended opcode %d: "
+msgstr "  Código de operación extendido %d: "
+
+#: dwarf.c:249
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fin de la Secuencia\n"
+"\n"
+
+#: dwarf.c:255
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "establecer la Dirección a 0x%lx\n"
+
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  definir la nueva entrada en la Tabla de Ficheros\n"
+
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  Entr\tDir\tHora\tTam\tNombre\n"
+
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
+
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: longitud %d\n"
+
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<no hay sección .debug_str>"
+
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "desplazamiento DW_FORM_strp demasiado grande: %lx\n"
+
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<desplazamiento demasiado grande>"
+
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valor TAG desconocido: %lx"
+
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valor FORM desconocido: %lx"
+
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " bloque de bytes %lu: "
+
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Operador de ubicación definido por el usuario)"
+
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Operador de ubicación desconocido)"
+
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Error interno: la versión DWARF no es 2 ó 3.\n"
+
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 no tiene soporte cuando sizeof (unsigned long) != 8\n"
+
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (cadena indirecta, desplazamiento 0x%lx): %s"
+
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Form no reconocido: %lu\n"
+
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(no es inlined)"
+
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(inlined)"
+
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(declarado como inline pero ignorado)"
+
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(declarado como inline y es inline)"
+
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (Valor desconocido de atributo inline: %lx)"
+
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [sin DW_AT_frame_base]"
+
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(lista de ubicación)"
+
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valor AT desconocido: %lx"
+
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "¿ No hay unidades de compilación en la sección %s ?"
+
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "No hay suficiente memoria para una matriz de información de depuración de %u entradas"
+
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"La sección %s contiene:\n"
+"\n"
+
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "¡No se puede localizar la sección %s!\n"
+
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  Unidad de Compilación @ desplazamiento 0x%lx:\n"
+
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   Longitud:      %ld\n"
+
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   Versión:       %d\n"
+
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   Desplaz Abrev: %ld\n"
+
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   Tamaño de Puntero: %d\n"
+
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Sólo la información de depuración DWARF versión 2 y 3 tiene soporte actualmente.\n"
+
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "No se puede localizar la entrada %lu en la tabla de abreviaciones\n"
+
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Número de Abrev: %lu (%s)\n"
+
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "la sección %s necesita una sección .debug_info llena\n"
+
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "la sección %s tiene más unidades de compilación que la sección .debug_info\n"
+
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr "asumiendo que el tamaño del puntero es %d, de la última unidad de compilación en .debug_info\n"
+
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Volcado del contenido de depuración de la sección %s:\n"
+"\n"
+
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "La información de línea parece estar corrupta - esta sección es demasiado pequeña\n"
+
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Solamente la información de línea de DWARF versión 2 y 3 tiene soporte actualmente.\n"
+
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  Longitud:                    %ld\n"
+
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  Versión DWARF:               %d\n"
+
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  Longitud del Prólogo:        %d\n"
+
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  Longitud Mínima Instrucción: %d\n"
+
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  Valor inicial de 'is_stmt':  %d\n"
+
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  Base Línea:                  %d\n"
+
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  Rango Lìnea:                 %d\n"
+
+#: dwarf.c:1901
+#, c-format
+msgid "  Opcode Base:                 %d\n"
+msgstr "  Base de Código de Operación: %d\n"
+
+#: dwarf.c:1902
+#, c-format
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (Tamaño del puntero:         %u)%s\n"
+
+#: dwarf.c:1913
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Códigos de operación:\n"
+
+#: dwarf.c:1916
+#, c-format
+msgid "  Opcode %d has %d args\n"
+msgstr "  El código de operación %d tiene %d argumentos\n"
+
+#: dwarf.c:1922
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La Tabla de Directorios está vacía.\n"
+
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La Tabla de Directorios:\n"
+
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
+
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" La Tabla de Nombres de Fichero está vacía.\n"
+
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La Tabla de Nombres de Fichero:\n"
+
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
+
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Declaraciones de Número de Línea:\n"
+
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  código de Operación especial %d: Dirección de avance por %lu a 0x%lx"
+
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " y Línea por %d a %d\n"
+
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "Los operadores de linea extendida necesitan un tamaño de puntero válido, adivinando en 4\n"
+
+#: dwarf.c:2007
+#, c-format
+msgid "  Copy\n"
+msgstr "  Copiar\n"
+
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  Avanzar el PC por %lu para %lx\n"
+
+#: dwarf.c:2023
+#, c-format
+msgid "  Advance Line by %d to %d\n"
+msgstr "  Línea de Avance por %d para %d\n"
+
+#: dwarf.c:2030
+#, c-format
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  Establecer el Nombre de Fichero para la entrada %d en la Tabla de Nombres de Fichero\n"
+
+#: dwarf.c:2038
+#, c-format
+msgid "  Set column to %lu\n"
+msgstr "  Establecer la columna a %lu\n"
+
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  Establecer is_stmt a %d\n"
+
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  Establecer el bloque básico\n"
+
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  Avanzar el PC por la constante %lu a 0x%lx\n"
+
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  Avanzar el PC por la cantidad de tamaño fijo %lu a 0x%lx\n"
+
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  Establecer prologue_end a true\n"
+
+#: dwarf.c:2075
+#, c-format
+msgid "  Set epilogue_begin to true\n"
+msgstr "  Establecer epilogue_begin a true\n"
+
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  Establecer ISA a %lu\n"
+
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  Código de operación desconocido %d con los operandos: "
+
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenido de la sección %s:\n"
+"\n"
+
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Actualmente sólo tienen soporte los nombres públicos DWARF 2 y 3\n"
+
+#: dwarf.c:2158
+#, c-format
+msgid "  Length:                              %ld\n"
+msgstr "  Longitud:                            %ld\n"
+
+#: dwarf.c:2160
+#, c-format
+msgid "  Version:                             %d\n"
+msgstr "  Versión:                             %d\n"
+
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  Desplazamiento en sección .debug_info: %ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  Tamaño de área en sección .debug_info: %ld\n"
+
+#: dwarf.c:2167
+#, c-format
+msgid ""
+"\n"
+"    Offset\tName\n"
+msgstr ""
+"\n"
+"    Desplazamiento\tNombre\n"
+
+#: dwarf.c:2218
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %d\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - numlinea : %d macro : %s\n"
+
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n"
+
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n"
+
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  Número TAG\n"
+
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
+
+#: dwarf.c:2291
+msgid "has children"
+msgstr "tiene hijos"
+
+#: dwarf.c:2291
+msgid "no children"
+msgstr "sin hijos"
+
+#: dwarf.c:2294
+#, c-format
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
+
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La sección %s está vacía.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "¡Las listas de ubicación en la sección .debug_info no están en orden ascendente!\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "¡No hay listas de ubicación en la sección .debug_info!\n"
+
+#: dwarf.c:2379
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Las listas de ubicación en la sección %s empiezan en 0x%lx\n"
+
+#: dwarf.c:2383
+#, c-format
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    Desplaz  Inicio   Fin      Expresión\n"
+
+#: dwarf.c:2414
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_loc.\n"
+
+#: dwarf.c:2417
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_loc.\n"
+
+#: dwarf.c:2424
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "El desplazamiento 0x%lx es más grande que el tamaño de la sección .debug_loc.\n"
+
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "La lista de reubicación que comienza en el desplazamiento 0x%lx no está terminada.\n"
+
+#: dwarf.c:2445 dwarf.c:2784
+#, c-format
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <Fin de la lista>\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (dirección base)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (inicio == final)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (inicio > final)"
+
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Sólo los rangos-a de DWARF 2 y 3 tienen soporte actualmente.\n"
+
+#: dwarf.c:2622
+#, c-format
+msgid "  Length:                   %ld\n"
+msgstr "  Longitud:                 %ld\n"
+
+#: dwarf.c:2623
+#, c-format
+msgid "  Version:                  %d\n"
+msgstr "  Versión:                  %d\n"
+
+#: dwarf.c:2624
+#, c-format
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  Desplaz. en .debug_info:  %lx\n"
+
+#: dwarf.c:2625
+#, c-format
+msgid "  Pointer Size:             %d\n"
+msgstr "  Tamaño del Puntero:       %d\n"
+
+#: dwarf.c:2626
+#, c-format
+msgid "  Segment Size:             %d\n"
+msgstr "  Tamaño del Segmento:      %d\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid ""
+"\n"
+"    Address  Length\n"
+msgstr ""
+"\n"
+"    Longitud de la Dirección\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "¡Las listas de rango en la sección .debug_info no están en orden ascendente!\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "¡No hay listas de rango en la sección .debug_info!\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Las listas de rango en la sección %s inician en 0x%lx\n"
+
+#: dwarf.c:2740
+#, c-format
+msgid "    Offset   Begin    End\n"
+msgstr "    Desplaz  Inicio   Fin\n"
+
+#: dwarf.c:2765
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección %s.\n"
+
+#: dwarf.c:2769
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección %s.\n"
+
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "La sección %s contiene:\n"
+
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "DW_CFA_%d desconocido o sin soporte\n"
+
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Aún no tiene soporte el mostrar el contenido de depuración de la sección %s.\n"
+
+#: dwarf.c:3674
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Error: "
+
+#: dwarf.c:3685
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Aviso: "
+
 #: emul_aix.c:51
 #, c-format
 msgid "  [-g]         - 32 bit small archive\n"
@@ -1392,124 +2120,124 @@
 msgid "IEEE unsupported complex type size %u\n"
 msgstr "tamaño de tipo complejo IEEE %u sin soporte\n"
 
-#: nlmconv.c:267 srconv.c:1810
+#: nlmconv.c:269 srconv.c:1813
 msgid "input and output files must be different"
 msgstr "los ficheros de entrada y salida deben ser diferentes"
 
-#: nlmconv.c:314
+#: nlmconv.c:316
 msgid "input file named both on command line and with INPUT"
 msgstr "fichero de entrada nombrado en la línea de comandos y con INPUT"
 
-#: nlmconv.c:323
+#: nlmconv.c:325
 msgid "no input file"
 msgstr "no hay fichero de entrada"
 
-#: nlmconv.c:353
+#: nlmconv.c:355
 msgid "no name for output file"
 msgstr "no hay nombre para el fichero de salida"
 
-#: nlmconv.c:367
+#: nlmconv.c:369
 msgid "warning: input and output formats are not compatible"
 msgstr "aviso: los formatos de entrada y salida no son compatibles"
 
-#: nlmconv.c:396
+#: nlmconv.c:398
 msgid "make .bss section"
 msgstr "hacer sección .bss"
 
-#: nlmconv.c:405
+#: nlmconv.c:407
 msgid "make .nlmsections section"
 msgstr "hacer sección .nlmsections"
 
-#: nlmconv.c:407
+#: nlmconv.c:409
 msgid "set .nlmsections flags"
 msgstr "establecer opciones .nlmsections"
 
-#: nlmconv.c:435
+#: nlmconv.c:437
 msgid "set .bss vma"
 msgstr "establecer vma .bss"
 
-#: nlmconv.c:442
+#: nlmconv.c:444
 msgid "set .data size"
 msgstr "establecer tamaño de .data"
 
-#: nlmconv.c:622
+#: nlmconv.c:624
 #, c-format
 msgid "warning: symbol %s imported but not in import list"
 msgstr "aviso: se importó el símbolo %s pero no está en la lista de importación"
 
-#: nlmconv.c:642
+#: nlmconv.c:644
 msgid "set start address"
 msgstr "establecer la dirección de inicio"
 
-#: nlmconv.c:691
+#: nlmconv.c:693
 #, c-format
 msgid "warning: START procedure %s not defined"
 msgstr "aviso: el procedimiento START %s no está definido"
 
-#: nlmconv.c:693
+#: nlmconv.c:695
 #, c-format
 msgid "warning: EXIT procedure %s not defined"
 msgstr "aviso: el procedimiento EXIT %s no está definido"
 
-#: nlmconv.c:695
+#: nlmconv.c:697
 #, c-format
 msgid "warning: CHECK procedure %s not defined"
 msgstr "aviso: el procedimiento CHECK %s no está definido"
 
-#: nlmconv.c:716 nlmconv.c:905
+#: nlmconv.c:718 nlmconv.c:907
 msgid "custom section"
 msgstr "sección a la medida"
 
-#: nlmconv.c:737 nlmconv.c:934
+#: nlmconv.c:739 nlmconv.c:936
 msgid "help section"
 msgstr "sección de ayuda"
 
-#: nlmconv.c:759 nlmconv.c:952
+#: nlmconv.c:761 nlmconv.c:954
 msgid "message section"
 msgstr "sección de mensajes"
 
-#: nlmconv.c:775 nlmconv.c:985
+#: nlmconv.c:777 nlmconv.c:987
 msgid "module section"
 msgstr "sección de módulos"
 
-#: nlmconv.c:795 nlmconv.c:1001
+#: nlmconv.c:797 nlmconv.c:1003
 msgid "rpc section"
 msgstr "sección de rpc"
 
 #. There is no place to record this information.
-#: nlmconv.c:831
+#: nlmconv.c:833
 #, c-format
 msgid "%s: warning: shared libraries can not have uninitialized data"
 msgstr "%s: aviso: las bibliotecas compartidas no pueden tener datos sin iniciar"
 
-#: nlmconv.c:852 nlmconv.c:1020
+#: nlmconv.c:854 nlmconv.c:1022
 msgid "shared section"
 msgstr "sección compartida"
 
-#: nlmconv.c:860
+#: nlmconv.c:862
 msgid "warning: No version number given"
 msgstr "aviso: No se dió un número de versión"
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
 msgid "%s: read: %s"
 msgstr "%s: leído: %s"
 
-#: nlmconv.c:922
+#: nlmconv.c:924
 msgid "warning: FULLMAP is not supported; try ld -M"
 msgstr "aviso: FULLMAP no tiene soporte; pruebe ld -M"
 
-#: nlmconv.c:1098
+#: nlmconv.c:1100
 #, c-format
 msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
 msgstr "Modo de empleo: %s [opcion(es)] [fichero-entrada [fichero-salida]]\n"
 
-#: nlmconv.c:1099
+#: nlmconv.c:1101
 #, c-format
 msgid " Convert an object file into a NetWare Loadable Module\n"
 msgstr "Convertir un fichero objeto en un Módulo Cargable de NetWare (NLM)\n"
 
-#: nlmconv.c:1100
+#: nlmconv.c:1102
 #, c-format
 msgid ""
 " The options are:\n"
@@ -1518,6 +2246,7 @@
 "  -T --header-file=<file>       Read <file> for NLM header information\n"
 "  -l --linker=<linker>          Use <linker> for any linking\n"
 "  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
 "  -h --help                     Display this information\n"
 "  -v --version                  Display the program's version\n"
 msgstr ""
@@ -1527,67 +2256,68 @@
 "  -T --header-file=<fichero>     Lee el <fichero> para la información del encabezado NLM\n"
 "  -l --linker=<enlazador>        Usa el <enlazador> para cualquier enlazado\n"
 "  -d --debug                     Muestra en salida estándar la línea de comando del enlazador\n"
+"  @<fichero>                     Lee opciones del <fichero>.\n"
 "  -h --help                      Muestra esta información\n"
 "  -v --version                   Muestra la versión del programa\n"
 
-#: nlmconv.c:1140
+#: nlmconv.c:1143
 #, c-format
 msgid "support not compiled in for %s"
 msgstr "soporte no compilado para %s"
 
-#: nlmconv.c:1177
+#: nlmconv.c:1180
 msgid "make section"
 msgstr "sección make"
 
-#: nlmconv.c:1191
+#: nlmconv.c:1194
 msgid "set section size"
 msgstr "establecer el tamaño de la sección"
 
-#: nlmconv.c:1197
+#: nlmconv.c:1200
 msgid "set section alignment"
 msgstr "establecer la alineación de la sección"
 
-#: nlmconv.c:1201
+#: nlmconv.c:1204
 msgid "set section flags"
 msgstr "establecer las opciones de la sección"
 
-#: nlmconv.c:1212
+#: nlmconv.c:1215
 msgid "set .nlmsections size"
 msgstr "establecer el tamaño de .nlmsections"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
 msgid "set .nlmsection contents"
 msgstr "establecer el contenido de .nlmsection"
 
-#: nlmconv.c:1794
+#: nlmconv.c:1797
 msgid "stub section sizes"
 msgstr "tamaños de la sección de cabos"
 
-#: nlmconv.c:1841
+#: nlmconv.c:1844
 msgid "writing stub"
 msgstr "escribiendo cabo"
 
-#: nlmconv.c:1925
+#: nlmconv.c:1928
 #, c-format
 msgid "unresolved PC relative reloc against %s"
 msgstr "reubicación relativa PC contra %s sin resolver"
 
-#: nlmconv.c:1989
+#: nlmconv.c:1992
 #, c-format
 msgid "overflow when adjusting relocation against %s"
 msgstr "desbordamiento al ajustar la reubicación contra %s"
 
-#: nlmconv.c:2116
+#: nlmconv.c:2119
 #, c-format
 msgid "%s: execution of %s failed: "
 msgstr "%s: falló la ejecución de %s: "
 
-#: nlmconv.c:2131
+#: nlmconv.c:2134
 #, c-format
 msgid "Execution of %s failed"
 msgstr "Falló la ejecución de %s"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
 msgid "Usage: %s [option(s)] [file(s)]\n"
 msgstr "Modo de empleo: %s [opcion(es)] [fichero(s)]\n"
@@ -1631,6 +2361,7 @@
 "      --target=BFDNAME   Specify the target object format as BFDNAME\n"
 "  -u, --undefined-only   Display only undefined symbols\n"
 "  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
 "  -h, --help             Display this information\n"
 "  -V, --version          Display this program's version number\n"
 "\n"
@@ -1673,41 +2404,42 @@
 "                           NOMBREBFD\n"
 "  -u, --undefined-only    Muestra sólo los símbolos indefinidos\n"
 "  -X 32_64                (ignorado)\n"
+"  @FICHERO                Lee opciones del FICHERO\n"
 "  -h, --help              Muestra esta información\n"
 "  -V, --version           Muestra el número de versión de este programa\n"
 "\n"
 
-#: nm.c:262 objdump.c:232
+#: nm.c:263 objdump.c:236
 #, c-format
 msgid "Report bugs to %s.\n"
 msgstr "Reportar bichos a %s.\n"
 
-#: nm.c:294
+#: nm.c:295
 #, c-format
 msgid "%s: invalid radix"
 msgstr "%s: radical inválido"
 
-#: nm.c:318
+#: nm.c:319
 #, c-format
 msgid "%s: invalid output format"
 msgstr "%s: formato de salida inválido"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
 msgid "<processor specific>: %d"
 msgstr "<específico del procesador> %d:"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: nm.c:342 readelf.c:6626 readelf.c:6671
 #, c-format
 msgid "<OS specific>: %d"
 msgstr "<específico del SO>: %d"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: nm.c:344 readelf.c:6628 readelf.c:6674
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<desconocido>: %d"
 
-#: nm.c:380
+#: nm.c:381
 #, c-format
 msgid ""
 "\n"
@@ -1716,7 +2448,7 @@
 "\n"
 "Índice del archivo:\n"
 
-#: nm.c:1225
+#: nm.c:1227
 #, c-format
 msgid ""
 "\n"
@@ -1729,7 +2461,7 @@
 "Símbolos indefinidos de %s:\n"
 "\n"
 
-#: nm.c:1227
+#: nm.c:1229
 #, c-format
 msgid ""
 "\n"
@@ -1742,7 +2474,7 @@
 "Símbolos de %s:\n"
 "\n"
 
-#: nm.c:1229 nm.c:1280
+#: nm.c:1231 nm.c:1282
 #, c-format
 msgid ""
 "Name                  Value   Class        Type         Size     Line  Section\n"
@@ -1751,7 +2483,7 @@
 "Nombre                Valor   Clase        Tipo         Tamaño   Línea Sección\n"
 "\n"
 
-#: nm.c:1232 nm.c:1283
+#: nm.c:1234 nm.c:1285
 #, c-format
 msgid ""
 "Name                  Value           Class        Type         Size             Line  Section\n"
@@ -1760,7 +2492,7 @@
 "Nombre                Valor           Clase        Tipo         Tamaño           Línea Sección\n"
 "\n"
 
-#: nm.c:1276
+#: nm.c:1278
 #, c-format
 msgid ""
 "\n"
@@ -1773,7 +2505,7 @@
 "Símbolos indefinidos de %s[%s]:\n"
 "\n"
 
-#: nm.c:1278
+#: nm.c:1280
 #, c-format
 msgid ""
 "\n"
@@ -1786,39 +2518,39 @@
 "Símbolos de %s[%s]:\n"
 "\n"
 
-#: nm.c:1580
+#: nm.c:1584
 msgid "Only -X 32_64 is supported"
 msgstr "Solamente -X 32_64 tiene soporte"
 
-#: nm.c:1600
+#: nm.c:1604
 msgid "Using the --size-sort and --undefined-only options together"
 msgstr "Al usar juntas las opciones --size-sort y --undefined-only"
 
-#: nm.c:1601
+#: nm.c:1605
 msgid "will produce no output, since undefined symbols have no size."
 msgstr "no se producirá salida, porque los símbolos indefinidos no tienen tamaño."
 
-#: nm.c:1629
+#: nm.c:1633
 #, c-format
 msgid "data size %ld"
 msgstr "tamaño de datos %ld"
 
-#: objcopy.c:396 srconv.c:1721
+#: objcopy.c:401 srconv.c:1721
 #, c-format
 msgid "Usage: %s [option(s)] in-file [out-file]\n"
 msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada [fichero-salida]\n"
 
-#: objcopy.c:397
+#: objcopy.c:402
 #, c-format
 msgid " Copies a binary file, possibly transforming it in the process\n"
 msgstr " Copia un fichero binario, posiblemente transformándolo en el proceso\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: objcopy.c:403 objcopy.c:495
 #, c-format
 msgid " The options are:\n"
 msgstr "  Las opciones son:\n"
 
-#: objcopy.c:399
+#: objcopy.c:404
 #, c-format
 msgid ""
 "  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
@@ -1838,8 +2570,9 @@
 "                                   Do not copy symbol <name> unless needed by\n"
 "                                     relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
 "  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
 "  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
 "  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
 "     --weaken                      Force all global symbols to be marked as weak\n"
@@ -1880,6 +2613,7 @@
 "                                     in <file>\n"
 "     --keep-symbols <file>         -K for all symbols listed in <file>\n"
 "     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
 "     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
 "     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
 "     --alt-machine-code <index>    Use alternate machine code for output\n"
@@ -1893,6 +2627,7 @@
 "                                   Add <prefix> to start of every allocatable\n"
 "                                     section name\n"
 "  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
 "  -V --version                     Display this program's version number\n"
 "  -h --help                        Display this output\n"
 "     --info                        List object formats & architectures supported\n"
@@ -1926,13 +2661,15 @@
 "     --only-keep-debug             Borra todo excepto la información de\n"
 "                                   depuración\n"
 "  -K --keep-symbol <nombre>        Sólo copia el símbolo <nombre>\n"
-"  -L --localize-symbol <nom>       Forza que el símbolo <nom> se marque como\n"
+"  -L --localize-symbol <nom>       Fuerza que el símbolo <nom> se marque como\n"
 "                                   local\n"
+"     --globalize-symbol <nom>      Fuerza que el símbolo <nom> se marque como\n"
+"                                   global\n"
 "  -G --keep-global-symbol <nom>    Vuelve locales todos los símbolos excepto\n"
 "                                   <nom>\n"
-"  -W --weaken-symbol <nom>         Forza que el símbolo <nom> se marque como\n"
+"  -W --weaken-symbol <nom>         Fuerza que el símbolo <nom> se marque como\n"
 "                                   débil\n"
-"     --weaken                      Forza que todos los símbolos se marquen como\n"
+"     --weaken                      Fuerza que todos los símbolos se marquen como\n"
 "                                   débiles\n"
 "  -w --wildcard                    Permite comodines en la comparación de\n"
 "                                   símbolos\n"
@@ -1987,9 +2724,11 @@
 "                                   <fichero>\n"
 "     --localize-symbols <fichero>  -L para todos los símbolos enlistados en el\n"
 "                                   <fichero>\n"
+"     --globalize-symbols <fichero> --globalize-symbol para todos los símbolos\n"
+"                                   en el <fichero>\n"
 "     --keep-global-symbols <fichero>\n"
 "                                   -G para todos los símbolos enlistados en el\n"
-"                                   <fich>ero\n"
+"                                   <fichero>\n"
 "     --weaken-symbols <fichero>    -W para todos los símbolos enlistados en el\n"
 "                                   <fichero>\n"
 "     --alt-machine-code <índice>   Utiliza código máquina alternativo para la\n"
@@ -1999,7 +2738,8 @@
 "                                   contra escritura\n"
 "     --pure                        Marca el fichero de salida como paginado en\n"
 "                                   demanda\n"
-"     --impure                      Marca el fichero de salida como impuro     --prefix-symbols <prefijo>    Agrega <prefijo> al inicio de cada nombre de\n"
+"     --impure                      Marca el fichero de salida como impuro\n"
+"     --prefix-symbols <prefijo>    Agrega <prefijo> al inicio de cada nombre de\n"
 "                                   símbolo\n"
 "     --prefix-sections <prefijo>   Agrega <prefijo> al inicio de cada nombre de\n"
 "                                   sección\n"
@@ -2007,22 +2747,23 @@
 "                                   Agrega <prefijo> al inicio de cada nombre de\n"
 "                                   sección alojable\n"
 "  -v --verbose                     Enlista todos los ficheros objeto modificados\n"
+"  @<fichero>                       Lee opciones del <fichero>\n"
 "  -V --version                     Muestra el número de versión de este programa\n"
 "  -h --help                        Muestra esta salida\n"
 "     --info                        Enlista los formatos objeto y arquitecturas\n"
 "                                   que se soportan\n"
 
-#: objcopy.c:485
+#: objcopy.c:493
 #, c-format
 msgid "Usage: %s <option(s)> in-file(s)\n"
 msgstr "Modo de empleo: %s <opcion(es)> fichero(s)-entrada\n"
 
-#: objcopy.c:486
+#: objcopy.c:494
 #, c-format
 msgid " Removes symbols and sections from files\n"
 msgstr " Remueve símbolos y secciones de los ficheros\n"
 
-#: objcopy.c:488
+#: objcopy.c:496
 #, c-format
 msgid ""
 "  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
@@ -2035,7 +2776,7 @@
 "     --strip-unneeded              Remove all symbols not needed by relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
 "  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
 "  -w --wildcard                    Permit wildcard in symbol comparison\n"
 "  -x --discard-all                 Remove all non-global symbols\n"
 "  -X --discard-locals              Remove any compiler-generated symbols\n"
@@ -2056,7 +2797,7 @@
 "  -R --remove-section=<nombre>     Borra la sección <nombre> de la salida\n"
 "  -s --strip-all                   Borra todos los símbolos y la información\n"
 "                                   de reubicación\n"
-"  -g -S --strip-debug              Borra todos los símbolos y secciones de\n"
+"  -g -S -d --strip-debug           Borra todos los símbolos y secciones de\n"
 "                                   depuración\n"
 "     --strip-unneeded              Borra todos los símbolos innecesarios para\n"
 "                                   las reubicaciones\n"
@@ -2073,250 +2814,262 @@
 "  -V --version                     Muestra el número de versión de este programa\n"
 "  -h --help                        Muestra esta salida\n"
 "     --info                        Muestra los formatos objeto y arquitecturas\n"
-"                                   soportados  -o <fichero>                     Coloca la salida limpia en el <fichero>\n"
+"                                   soportados\n"
+"  -o <fichero>                     Coloca la salida limpia en el <fichero>\n"
 
-#: objcopy.c:560
+#: objcopy.c:568
 #, c-format
 msgid "unrecognized section flag `%s'"
 msgstr "opción de sección `%s' desconocida"
 
-#: objcopy.c:561
+#: objcopy.c:569
 #, c-format
 msgid "supported flags: %s"
 msgstr "opciones con soporte: %s"
 
-#: objcopy.c:638
+#: objcopy.c:646
 #, c-format
 msgid "cannot open '%s': %s"
 msgstr "no se puede abrir '%s': %s"
 
-#: objcopy.c:641 objcopy.c:2629
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
 msgid "%s: fread failed"
 msgstr "%s: fread falló"
 
-#: objcopy.c:714
+#: objcopy.c:722
 #, c-format
 msgid "%s:%d: Ignoring rubbish found on this line"
 msgstr "%s:%d: Se ignora la basura encontrada en esta línea"
 
-#: objcopy.c:976
+#: objcopy.c:996
 #, c-format
 msgid "%s: Multiple redefinition of symbol \"%s\""
 msgstr "%s: Redefiniciones múltiples del símbolo \"%s\""
 
-#: objcopy.c:980
+#: objcopy.c:1000
 #, c-format
 msgid "%s: Symbol \"%s\" is target of more than one redefinition"
 msgstr "%s: El símbolo \"%s\" es objetivo de más de una redefinición"
 
-#: objcopy.c:1008
+#: objcopy.c:1028
 #, c-format
 msgid "couldn't open symbol redefinition file %s (error: %s)"
 msgstr "no se puede abrir el fichero de redefinición de símbolos %s (error: %s)"
 
-#: objcopy.c:1086
+#: objcopy.c:1106
 #, c-format
 msgid "%s:%d: garbage found at end of line"
 msgstr "%s:%d: se encontró basura al final de la línea"
 
-#: objcopy.c:1089
+#: objcopy.c:1109
 #, c-format
 msgid "%s:%d: missing new symbol name"
 msgstr "%s:%d: falta el nombre del símbolo nuevo"
 
-#: objcopy.c:1099
+#: objcopy.c:1119
 #, c-format
 msgid "%s:%d: premature end of file"
 msgstr "%s:%d: fin de fichero prematuro"
 
-#: objcopy.c:1124
+#: objcopy.c:1145
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat devuelve un valor negativo para `%s'"
+
+#: objcopy.c:1157
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copia de `%s' [desconocido] a `%s' [desconocido]\n"
+
+#: objcopy.c:1212
 msgid "Unable to change endianness of input file(s)"
 msgstr "No se puede cambiar la endianez del (los) fichero(s) de entrada"
 
-#: objcopy.c:1133
+#: objcopy.c:1221
 #, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "copiar de %s(%s) a %s(%s)\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copia de `%s' [%s] a `%s' [%s]\n"
 
-#: objcopy.c:1170
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "No se puede reconocer el formato del fichero de entrada %s"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "No se puede reconocer el formato del fichero de entrada `%s'"
 
-#: objcopy.c:1174
+#: objcopy.c:1261
 #, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "Aviso: El fichero de salida no puede representar a la arquitectura %s"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "Aviso: El fichero de salida no puede representar a la arquitectura `%s'"
 
-#: objcopy.c:1211
+#: objcopy.c:1305
 #, c-format
 msgid "can't create section `%s': %s"
 msgstr "no se puede crear la sección `%s' %s"
 
-#: objcopy.c:1277
+#: objcopy.c:1356
 msgid "there are no sections to be copied!"
 msgstr "¡no hay secciones para copiar!"
 
-#: objcopy.c:1323
+#: objcopy.c:1402
 #, c-format
 msgid "Can't fill gap after %s: %s"
 msgstr "No se puede llenar el espacio después de %s: %s"
 
-#: objcopy.c:1348
+#: objcopy.c:1427
 #, c-format
 msgid "Can't add padding to %s: %s"
 msgstr "No se puede agregar relleno a %s: %s"
 
-#: objcopy.c:1514
+#: objcopy.c:1594
 #, c-format
 msgid "%s: error copying private BFD data: %s"
 msgstr "%s: error al copiar los datos privados BFD: %s"
 
-#: objcopy.c:1525
+#: objcopy.c:1605
 msgid "unknown alternate machine code, ignored"
 msgstr "código máquina alternativo desconocido, ignorado"
 
-#: objcopy.c:1555 objcopy.c:1585
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
 msgid "cannot mkdir %s for archive copying (error: %s)"
 msgstr "no se puede crear el directorio %s para copiar el archivo (error: %s)"
 
-#: objcopy.c:1790
+#: objcopy.c:1787
 #, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "error: el fichero de entrada '%s' está vacío"
+
+#: objcopy.c:1889
+#, c-format
 msgid "Multiple renames of section %s"
 msgstr "Renombrado múltiple de la sección %s"
 
-#: objcopy.c:1841
+#: objcopy.c:1940
 msgid "private header data"
 msgstr "datos de encabezado privado"
 
-#: objcopy.c:1849
+#: objcopy.c:1948
 #, c-format
 msgid "%s: error in %s: %s"
 msgstr "%s: error en %s: %s"
 
-#: objcopy.c:1903
+#: objcopy.c:2007
 msgid "making"
 msgstr "haciendo"
 
-#: objcopy.c:1912
+#: objcopy.c:2022
 msgid "size"
 msgstr "tamaño"
 
-#: objcopy.c:1926
+#: objcopy.c:2036
 msgid "vma"
 msgstr "vma"
 
-#: objcopy.c:1951
+#: objcopy.c:2061
 msgid "alignment"
 msgstr "alineación"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "opciones"
-
-#: objcopy.c:1988
+#: objcopy.c:2083
 msgid "private data"
 msgstr "datos privados"
 
-#: objcopy.c:1996
+#: objcopy.c:2091
 #, c-format
 msgid "%s: section `%s': error in %s: %s"
 msgstr "%s: sección `%s': error en %s: %s"
 
-#: objcopy.c:2274
+#: objcopy.c:2363
 #, c-format
 msgid "%s: can't create debugging section: %s"
 msgstr "%s: no se puede crear la sección de depuración: %s"
 
-#: objcopy.c:2288
+#: objcopy.c:2377
 #, c-format
 msgid "%s: can't set debugging section contents: %s"
 msgstr "%s: no se puede establecer el contenido de la sección de depuración: %s"
 
-#: objcopy.c:2297
+#: objcopy.c:2386
 #, c-format
 msgid "%s: don't know how to write debugging information for %s"
 msgstr "%s: se ignora cómo escribir la información de depuración para %s"
 
-#: objcopy.c:2472
+#: objcopy.c:2561
 msgid "byte number must be non-negative"
 msgstr "el número de bytes no debe ser negativo"
 
-#: objcopy.c:2482
+#: objcopy.c:2571
 msgid "interleave must be positive"
 msgstr "el espacio debe ser positivo"
 
-#: objcopy.c:2502 objcopy.c:2510
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
 msgid "%s both copied and removed"
 msgstr "%s copiado y borrado"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
 #, c-format
 msgid "bad format for %s"
 msgstr "formato erróneo para %s"
 
-#: objcopy.c:2624
+#: objcopy.c:2717
 #, c-format
 msgid "cannot open: %s: %s"
 msgstr "no se puede abrir: %s: %s"
 
-#: objcopy.c:2743
+#: objcopy.c:2836
 #, c-format
 msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
 msgstr "Aviso: truncando el relleno de espacio de 0x%s a 0x%x"
 
-#: objcopy.c:2903
+#: objcopy.c:3000
 msgid "alternate machine code index must be positive"
 msgstr "el índice de código máquina alternativo debe ser positivo"
 
-#: objcopy.c:2961
+#: objcopy.c:3058
 msgid "byte number must be less than interleave"
 msgstr "el número de bytes debe ser menor al espacio"
 
-#: objcopy.c:2991
+#: objcopy.c:3088
 #, c-format
 msgid "architecture %s unknown"
 msgstr "arquitectura %s desconocida"
 
-#: objcopy.c:2995
+#: objcopy.c:3092
 msgid "Warning: input target 'binary' required for binary architecture parameter."
 msgstr "Aviso: se requiere el objetivo de entrada 'binary' para el parámeto binario de arquitectura."
 
-#: objcopy.c:2996
+#: objcopy.c:3093
 #, c-format
 msgid " Argument %s ignored"
 msgstr " Se ignora el argumento %s"
 
-#: objcopy.c:3002
+#: objcopy.c:3099
 #, c-format
 msgid "warning: could not locate '%s'.  System error message: %s"
 msgstr "aviso: no se puede encontrar '%s'.  Mensaje de error del sistema: %s"
 
-#: objcopy.c:3042 objcopy.c:3056
+#: objcopy.c:3141 objcopy.c:3155
 #, c-format
 msgid "%s %s%c0x%s never used"
 msgstr "%s nunca se usa %s%c0x%s"
 
-#: objdump.c:176
+#: objdump.c:178
 #, c-format
 msgid "Usage: %s <option(s)> <file(s)>\n"
 msgstr "Modo de empleo: %s <opcion(es)> <fichero(s)>\n"
 
-#: objdump.c:177
+#: objdump.c:179
 #, c-format
 msgid " Display information from object <file(s)>.\n"
 msgstr "Muestra la información de <fichero(s)> objeto.\n"
 
-#: objdump.c:178
+#: objdump.c:180
 #, c-format
 msgid " At least one of the following switches must be given:\n"
 msgstr "Por lo menos se requiere una de los siguientes opciones:\n"
 
-#: objdump.c:179
+#: objdump.c:181
 #, c-format
 msgid ""
 "  -a, --archive-headers    Display archive header information\n"
@@ -2331,10 +3084,12 @@
 "  -g, --debugging          Display debug information in object file\n"
 "  -e, --debugging-tags     Display debug information using ctags style\n"
 "  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
 "  -t, --syms               Display the contents of the symbol table(s)\n"
 "  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
 "  -r, --reloc              Display the relocation entries in the file\n"
 "  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
 "  -v, --version            Display this program's version number\n"
 "  -i, --info               List object formats and architectures supported\n"
 "  -H, --help               Display this information\n"
@@ -2358,18 +3113,20 @@
 "  -e, --debugging-tags     Muestra la información de depuración en estilo ctags\n"
 "  -G, --stabs              Muestra (sin formato) cualquier información de STABS\n"
 "                           en el fichero\n"
+"  -W, --dwarf              Muestra la información DWARF en el fichero\n"
 "  -t, --syms               Muestra el contenido de la(s) tabla(s) de símbolos\n"
 "  -T, --dynamic-syms       Muestra el contenido de la tabla de símbolos\n"
 "                           dinámicos\n"
 "  -r, --reloc              Muestra las entradas de reubicación en el fichero\n"
 "  -R, --dynamic-reloc      Muestra las entradas de reubicación dinámica en el\n"
 "                           fichero\n"
+"  @<fichero>               Lee opciones del <fichero>\n"
 "  -v, --version            Muestra el número de versión de este programa\n"
 "  -i, --info               Enlista los formatos objeto y las arquitecturas\n"
 "                           con soporte\n"
 "  -H, --help               Muestra esta información\n"
 
-#: objdump.c:202
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
@@ -2378,7 +3135,7 @@
 "\n"
 " Los siguientes interruptores son opcionales:\n"
 
-#: objdump.c:203
+#: objdump.c:207
 #, c-format
 msgid ""
 "  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
@@ -2438,66 +3195,75 @@
 "      --special-syms             Incluye símbolos especiales en los volcados de\n"
 "                                  símbolos\n"
 
-#: objdump.c:378
+#: objdump.c:389
 #, c-format
 msgid "Sections:\n"
 msgstr "Secciones:\n"
 
-#: objdump.c:381 objdump.c:385
+#: objdump.c:392 objdump.c:396
 #, c-format
 msgid "Idx Name          Size      VMA       LMA       File off  Algn"
 msgstr "Ind Nombre        Tamaño    VMA       LMA       Desp fich Alin"
 
-#: objdump.c:387
+#: objdump.c:398
 #, c-format
 msgid "Idx Name          Size      VMA               LMA               File off  Algn"
 msgstr "Ind Nombre        Tamaño    VMA               LMA               Desp fich Alin"
 
-#: objdump.c:391
+#: objdump.c:402
 #, c-format
 msgid "  Flags"
 msgstr "  Opciones"
 
-#: objdump.c:393
+#: objdump.c:404
 #, c-format
 msgid "  Pg"
 msgstr "  Pg"
 
-#: objdump.c:436
+#: objdump.c:447
 #, c-format
 msgid "%s: not a dynamic object"
 msgstr "%s: no es un objeto dinámico"
 
-#: objdump.c:1722
+#: objdump.c:1735
 #, c-format
 msgid "Disassembly of section %s:\n"
 msgstr "Desensamblado de la sección %s:\n"
 
-#: objdump.c:1884
+#: objdump.c:1897
 #, c-format
 msgid "Can't use supplied machine %s"
 msgstr "No se puede utilizar la máquina %s proporcionada"
 
-#: objdump.c:1903
+#: objdump.c:1916
 #, c-format
 msgid "Can't disassemble for architecture %s\n"
 msgstr "No se puede desensamblar para la arquitectura %s\n"
 
-#: objdump.c:1973
+#: objdump.c:2006
 #, c-format
 msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"No se puede obtener el ontenido de la sección '%s'.\n"
+
+#: objdump.c:2143
+#, c-format
+msgid ""
 "No %s section present\n"
 "\n"
 msgstr ""
 "No está presente la sección %s\n"
 "\n"
 
-#: objdump.c:1982
+#: objdump.c:2152
 #, c-format
 msgid "Reading %s section of %s failed: %s"
 msgstr "Falló al leer la sección %s de %s: %s"
 
-#: objdump.c:2026
+#: objdump.c:2196
 #, c-format
 msgid ""
 "Contents of %s section:\n"
@@ -2506,17 +3272,17 @@
 "Contenido de la sección %s:\n"
 "\n"
 
-#: objdump.c:2153
+#: objdump.c:2323
 #, c-format
 msgid "architecture: %s, "
 msgstr "arquitectura: %s, "
 
-#: objdump.c:2156
+#: objdump.c:2326
 #, c-format
 msgid "flags 0x%08x:\n"
 msgstr "opciones 0x%08x:\n"
 
-#: objdump.c:2170
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
@@ -2525,27 +3291,27 @@
 "\n"
 "dirección de inicio 0x"
 
-#: objdump.c:2210
+#: objdump.c:2380
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Contenido de la sección %s:\n"
 
-#: objdump.c:2335
+#: objdump.c:2505
 #, c-format
 msgid "no symbols\n"
 msgstr "no hay símbolos\n"
 
-#: objdump.c:2342
+#: objdump.c:2512
 #, c-format
 msgid "no information for symbol number %ld\n"
 msgstr "no hay información para el símbolo número %ld\n"
 
-#: objdump.c:2345
+#: objdump.c:2515
 #, c-format
 msgid "could not determine the type of symbol number %ld\n"
 msgstr "no se puede determinar el tipo del símbolo número %ld\n"
 
-#: objdump.c:2611
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
@@ -2554,21 +3320,21 @@
 "\n"
 "%s:     formato del fichero %s\n"
 
-#: objdump.c:2662
+#: objdump.c:2845
 #, c-format
 msgid "%s: printing debugging information failed"
 msgstr "%s: falló al mostrar la información de depuración"
 
-#: objdump.c:2753
+#: objdump.c:2936
 #, c-format
 msgid "In archive %s:\n"
 msgstr "En el fichero %s:\n"
 
-#: objdump.c:2873
+#: objdump.c:3058
 msgid "unrecognized -E option"
 msgstr "opción -E no reconocida"
 
-#: objdump.c:2884
+#: objdump.c:3069
 #, c-format
 msgid "unrecognized --endian type `%s'"
 msgstr "tipo --endian `%s' no reconocido"
@@ -2608,178 +3374,168 @@
 msgid "Last stabs entries before error:\n"
 msgstr "Últimas entradas stabs antes del error:\n"
 
-#: readelf.c:272
+#: readelf.c:264
 #, c-format
-msgid "%s: Error: "
-msgstr "%s: Error: "
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "No se puede buscar a 0x%lx para %s\n"
 
-#: readelf.c:283
+#: readelf.c:279
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: Aviso: "
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Memoria agotada al asignar 0x%lx bytes para %s\n"
 
-#: readelf.c:298
+#: readelf.c:289
 #, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "No se puede buscar a 0x%x para %s\n"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "No se pueden leer 0x%lx bytes de %s\n"
 
-#: readelf.c:310
-#, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "Memoria agotada al asignar 0x%x bytes para %s\n"
-
-#: readelf.c:318
-#, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "No se pueden leer 0x%x bytes de %s\n"
-
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
-#, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "Longitud de datos sin manejar: %d\n"
-
-#: readelf.c:752
+#: readelf.c:623
 msgid "Don't know about relocations on this machine architecture\n"
 msgstr "No se conocen las reubicaciones en esta arquitectura de máquina\n"
 
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
 msgid "relocs"
 msgstr "reubicaciones"
 
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
 msgid "out of memory parsing relocs"
 msgstr "memoria agotada al decodificar reubicaciones"
 
-#: readelf.c:933
+#: readelf.c:808
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
 msgstr " Desplaz    Info    Tipo                Val. Símbolo Nombre Símbolo + Adend\n"
 
-#: readelf.c:935
+#: readelf.c:810
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
 msgstr " Desplaz    Info    Tipo            Val.Símbolo Nom.Símbolo + Adend\n"
 
-#: readelf.c:940
+#: readelf.c:815
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
 msgstr " Desplaz    Info    Tipo                Val. Símbolo Nombre Símbolo\n"
 
-#: readelf.c:942
+#: readelf.c:817
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
 msgstr " Desplaz    Info    Tipo            Val.Símbolo Nom. Símbolo\n"
 
-#: readelf.c:950
+#: readelf.c:825
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
 msgstr "    Desplaz            Info             Tipo               Valor Símbolo  Nombre Símbolo + Adend\n"
 
-#: readelf.c:952
+#: readelf.c:827
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
 msgstr "  Desplaz         Info           Tipo           Val. Símbolo  Nom. Símbolo + Adend\n"
 
-#: readelf.c:957
+#: readelf.c:832
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
 msgstr "    Desplaz            Info             Tipo               Valor Símbolo  Nombre Símbolo\n"
 
-#: readelf.c:959
+#: readelf.c:834
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
 msgstr "  Desplaz         Info           Tipo           Val. Símbolo  Nom. Símbolo\n"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
 msgid "unrecognized: %-7lx"
 msgstr "no reconocido: %-7lx"
 
-#: readelf.c:1295
+#: readelf.c:1154
 #, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<agregado desconocido: %lx>"
+
+#: readelf.c:1210
+#, c-format
 msgid "<string table index: %3ld>"
 msgstr "<índice de la tabla de cadenas: %3ld>"
 
-#: readelf.c:1297
+#: readelf.c:1212
 #, c-format
 msgid "<corrupt string table index: %3ld>"
 msgstr "<índice de la tabla de cadenas corrupto: %3ld>"
 
-#: readelf.c:1569
+#: readelf.c:1522
 #, c-format
 msgid "Processor Specific: %lx"
 msgstr "Específico del Procesador: %lx"
 
-#: readelf.c:1588
+#: readelf.c:1543
 #, c-format
 msgid "Operating System specific: %lx"
 msgstr "específico del Sistema Operativo: %lx"
 
-#: readelf.c:1592 readelf.c:2370
+#: readelf.c:1547 readelf.c:2349
 #, c-format
 msgid "<unknown>: %lx"
 msgstr "<desconocido>: %lx"
 
-#: readelf.c:1605
+#: readelf.c:1560
 msgid "NONE (None)"
 msgstr "NONE (Ninguno)"
 
-#: readelf.c:1606
+#: readelf.c:1561
 msgid "REL (Relocatable file)"
 msgstr "REL (Fichero reubicable)"
 
-#: readelf.c:1607
+#: readelf.c:1562
 msgid "EXEC (Executable file)"
 msgstr "EXEC (Fichero ejecutable)"
 
-#: readelf.c:1608
+#: readelf.c:1563
 msgid "DYN (Shared object file)"
 msgstr "DYN (Fichero objeto compartido)"
 
-#: readelf.c:1609
+#: readelf.c:1564
 msgid "CORE (Core file)"
 msgstr "CORE (Fichero núcleo)"
 
-#: readelf.c:1613
+#: readelf.c:1568
 #, c-format
 msgid "Processor Specific: (%x)"
 msgstr "Específico del Procesado: (%x)"
 
-#: readelf.c:1615
+#: readelf.c:1570
 #, c-format
 msgid "OS Specific: (%x)"
 msgstr "Específico del SO: (%x)"
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
 msgid "<unknown>: %x"
 msgstr "<desconocido>: %x"
 
-#: readelf.c:1629
+#: readelf.c:1584
 msgid "None"
 msgstr "Ninguno"
 
-#: readelf.c:2229
+#: readelf.c:2186
 msgid "Standalone App"
 msgstr "Aplicación por Sí Sola"
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
 msgid "<unknown: %x>"
 msgstr "<desconocido: %x>"
 
-#: readelf.c:2597
+#: readelf.c:2586
 #, c-format
 msgid "Usage: readelf <option(s)> elf-file(s)\n"
 msgstr "Modo de empleo: readelf <opcion(es)> fichero(s)-elf\n"
 
-#: readelf.c:2598
+#: readelf.c:2587
 #, c-format
 msgid " Display information about the contents of ELF format files\n"
 msgstr " Muestra información sobre el contenido de los ficheros de formato ELF\n"
 
-#: readelf.c:2599
+#: readelf.c:2588
 #, c-format
 msgid ""
 " Options are:\n"
@@ -2790,6 +3546,7 @@
 "  -S --section-headers   Display the sections' header\n"
 "     --sections          An alias for --section-headers\n"
 "  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
 "  -e --headers           Equivalent to: -h -l -S\n"
 "  -s --syms              Display the symbol table\n"
 "      --symbols          An alias for --syms\n"
@@ -2813,6 +3570,7 @@
 "  -S --section-headers   Muestra el encabezado de las secciones\n"
 "     --sections          Un alias para --section-headers\n"
 "  -g --section-groups    Muestra los grupos de sección\n"
+"  -t --section-details   Muestra los detalles de sección\n"
 "  -e --headers           Equivalente a: -h -l -S\n"
 "  -s --syms              Muestra la tabla de símbolos\n"
 "      --symbols          Un alias para --syms\n"
@@ -2831,7 +3589,7 @@
 "                         Muestra el contenido de las secciones de depuración\n"
 "                         DWARF2\n"
 
-#: readelf.c:2622
+#: readelf.c:2612
 #, c-format
 msgid ""
 "  -i --instruction-dump=<number>\n"
@@ -2840,110 +3598,112 @@
 "  -i --instruction-dump=<número>\n"
 "                         Desensambla el contenido de la sección <número>\n"
 
-#: readelf.c:2626
+#: readelf.c:2616
 #, c-format
 msgid ""
 "  -I --histogram         Display histogram of bucket list lengths\n"
 "  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
 "  -H --help              Display this information\n"
 "  -v --version           Display the version number of readelf\n"
 msgstr ""
 "  -I --histogram         Muestra un histograma de longitudes de la lista de\n"
 "                         cubetas\n"
 "  -W --wide              Permite que el ancho de la salida exceda 80 caracteres\n"
+"  @<fichero>             Lee opciones del <fichero>\n"
 "  -H --help              Muestra esta información\n"
 "  -v --version           Muestra el número de versión de readelf\n"
 
-#: readelf.c:2651 readelf.c:12118
+#: readelf.c:2642 readelf.c:9180
 msgid "Out of memory allocating dump request table."
 msgstr "Memoria agotada al asignar la tabla de petición de volcado."
 
-#: readelf.c:2820 readelf.c:2888
+#: readelf.c:2816 readelf.c:2884
 #, c-format
 msgid "Unrecognized debug option '%s'\n"
 msgstr "Opción de depuración '%s' no reconocida\n"
 
-#: readelf.c:2922
+#: readelf.c:2918
 #, c-format
 msgid "Invalid option '-%c'\n"
 msgstr "Opción '-%c' inválida\n"
 
-#: readelf.c:2936
+#: readelf.c:2932
 msgid "Nothing to do.\n"
 msgstr "Nada por hacer.\n"
 
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
 msgid "none"
 msgstr "ninguno"
 
-#: readelf.c:2965
+#: readelf.c:2961
 msgid "2's complement, little endian"
 msgstr "complemento a 2, little endian"
 
-#: readelf.c:2966
+#: readelf.c:2962
 msgid "2's complement, big endian"
 msgstr "complemento a 2, big endian"
 
-#: readelf.c:2984
+#: readelf.c:2980
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "No es un fichero ELF - tiene los bytes mágicos erróneos en el inicio\n"
 
-#: readelf.c:2992
+#: readelf.c:2988
 #, c-format
 msgid "ELF Header:\n"
 msgstr "Encabezado ELF:\n"
 
-#: readelf.c:2993
+#: readelf.c:2989
 #, c-format
 msgid "  Magic:   "
 msgstr "  Mágico:  "
 
-#: readelf.c:2997
+#: readelf.c:2993
 #, c-format
 msgid "  Class:                             %s\n"
 msgstr "  Clase:                             %s\n"
 
-#: readelf.c:2999
+#: readelf.c:2995
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Datos:                             %s\n"
 
-#: readelf.c:3001
+#: readelf.c:2997
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Versión:                           %d %s\n"
 
-#: readelf.c:3008
+#: readelf.c:3004
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: readelf.c:3010
+#: readelf.c:3006
 #, c-format
 msgid "  ABI Version:                       %d\n"
 msgstr "  Versión ABI:                       %d\n"
 
-#: readelf.c:3012
+#: readelf.c:3008
 #, c-format
 msgid "  Type:                              %s\n"
 msgstr "  Tipo:                              %s\n"
 
-#: readelf.c:3014
+#: readelf.c:3010
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Máquina:                           %s\n"
 
-#: readelf.c:3016
+#: readelf.c:3012
 #, c-format
 msgid "  Version:                           0x%lx\n"
 msgstr "  Versión:                           0x%lx\n"
 
-#: readelf.c:3019
+#: readelf.c:3015
 #, c-format
 msgid "  Entry point address:               "
 msgstr "  Dirección del punto de entrada:    "
 
-#: readelf.c:3021
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
@@ -2952,7 +3712,7 @@
 "\n"
 "  Inicio de encabezados de programa: "
 
-#: readelf.c:3023
+#: readelf.c:3019
 #, c-format
 msgid ""
 " (bytes into file)\n"
@@ -2961,58 +3721,57 @@
 "  (bytes en el fichero)\n"
 "  Inicio de encabezados de sección:  "
 
-#: readelf.c:3025
+#: readelf.c:3021
 #, c-format
 msgid " (bytes into file)\n"
 msgstr " (bytes en el fichero)\n"
 
-#: readelf.c:3027
+#: readelf.c:3023
 #, c-format
 msgid "  Flags:                             0x%lx%s\n"
 msgstr "  Opciones:                          0x%lx%s\n"
 
-#: readelf.c:3030
+#: readelf.c:3026
 #, c-format
 msgid "  Size of this header:               %ld (bytes)\n"
 msgstr "  Tamaño de este encabezado:         %ld (bytes)\n"
 
-#: readelf.c:3032
+#: readelf.c:3028
 #, c-format
 msgid "  Size of program headers:           %ld (bytes)\n"
 msgstr "  Tamaño de encabezados de programa: %ld (bytes)\n"
 
-#: readelf.c:3034
+#: readelf.c:3030
 #, c-format
 msgid "  Number of program headers:         %ld\n"
 msgstr "  Número de encabezados de programa: %ld\n"
 
-#: readelf.c:3036
+#: readelf.c:3032
 #, c-format
 msgid "  Size of section headers:           %ld (bytes)\n"
 msgstr "  Tamaño de encabezados de sección:  %ld (bytes)\n"
 
-#: readelf.c:3038
+#: readelf.c:3034
 #, c-format
 msgid "  Number of section headers:         %ld"
 msgstr "  Número de encabezados de sección:  %ld"
 
-#: readelf.c:3043
+#: readelf.c:3039
 #, c-format
 msgid "  Section header string table index: %ld"
 msgstr "  Índice de tabla de cadenas de sección de encabezado: %ld"
 
-#: readelf.c:3074 readelf.c:3107
+#: readelf.c:3070 readelf.c:3103
 msgid "program headers"
 msgstr "encabezados de programa"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
 msgid "Out of memory\n"
 msgstr "Memoria agotada\n"
 
-#: readelf.c:3172
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
@@ -3021,7 +3780,7 @@
 "\n"
 "No hay encabezados de programa en este fichero.\n"
 
-#: readelf.c:3178
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
@@ -3030,12 +3789,12 @@
 "\n"
 "El tipo del fichero elf es %s\n"
 
-#: readelf.c:3179
+#: readelf.c:3175
 #, c-format
 msgid "Entry point "
 msgstr "Punto de entrada "
 
-#: readelf.c:3181
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
@@ -3044,7 +3803,7 @@
 "\n"
 "Hay %d encabezados de programa, empezando en el desplazamiento "
 
-#: readelf.c:3193 readelf.c:3195
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
 "\n"
@@ -3053,47 +3812,47 @@
 "\n"
 "Encabezados de Programa:\n"
 
-#: readelf.c:3199
+#: readelf.c:3195
 #, c-format
 msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
 msgstr "  Tipo           Desplaz  DirVirt    DirFísica  TamFich TamMem  Opt Alin\n"
 
-#: readelf.c:3202
+#: readelf.c:3198
 #, c-format
 msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
 msgstr "  Tipo           Desplaz  DirVirt            DirFísica          TamFich  TamMem   Opt Alin\n"
 
-#: readelf.c:3206
+#: readelf.c:3202
 #, c-format
 msgid "  Type           Offset             VirtAddr           PhysAddr\n"
 msgstr "  Tipo           Desplazamiento     DirVirtual         DirFísica\n"
 
-#: readelf.c:3208
+#: readelf.c:3204
 #, c-format
 msgid "                 FileSiz            MemSiz              Flags  Align\n"
 msgstr "                 TamFichero         TamMemoria          Opts   Alineación\n"
 
-#: readelf.c:3301
+#: readelf.c:3297
 msgid "more than one dynamic segment\n"
 msgstr "más de un segmento dinámico\n"
 
-#: readelf.c:3312
+#: readelf.c:3308
 msgid "no .dynamic section in the dynamic segment"
 msgstr "no hay una sección .dynamic en el segmento dinámico"
 
-#: readelf.c:3321
+#: readelf.c:3317
 msgid "the .dynamic section is not contained within the dynamic segment"
 msgstr "la sección .dynamic no está contenida en el segmento dinámico"
 
-#: readelf.c:3323
+#: readelf.c:3319
 msgid "the .dynamic section is not the first section in the dynamic segment."
 msgstr "la sección .dynamic no es la primera sección en el segmento dinámico."
 
-#: readelf.c:3337
+#: readelf.c:3333
 msgid "Unable to find program interpreter name\n"
 msgstr "No se puede encontrar el nombre del programa intérprete\n"
 
-#: readelf.c:3344
+#: readelf.c:3340
 #, c-format
 msgid ""
 "\n"
@@ -3102,7 +3861,7 @@
 "\n"
 "      [Solicitando el programa intérprete: %s]"
 
-#: readelf.c:3356
+#: readelf.c:3352
 #, c-format
 msgid ""
 "\n"
@@ -3111,34 +3870,34 @@
 "\n"
 " mapeo de Sección a Segmento:\n"
 
-#: readelf.c:3357
+#: readelf.c:3353
 #, c-format
 msgid "  Segment Sections...\n"
 msgstr "  Segmento Secciones...\n"
 
-#: readelf.c:3408
+#: readelf.c:3402
 msgid "Cannot interpret virtual addresses without program headers.\n"
 msgstr "No se pueden interpretar direcciones virtuales sin encabezados de programa.\n"
 
-#: readelf.c:3424
+#: readelf.c:3418
 #, c-format
 msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
 msgstr "La dirección virtual 0x%lx no está ubicada en ningún segmento PT_LOAD.\n"
 
-#: readelf.c:3438 readelf.c:3479
+#: readelf.c:3432 readelf.c:3473
 msgid "section headers"
 msgstr "encabezados de sección"
 
-#: readelf.c:3523 readelf.c:3586
+#: readelf.c:3517 readelf.c:3580
 msgid "symbols"
 msgstr "símbolos"
 
 # ¿Cómo se traduce esto? cfuga
-#: readelf.c:3533 readelf.c:3596
+#: readelf.c:3527 readelf.c:3590
 msgid "symtab shndx"
 msgstr "symtab shndx"
 
-#: readelf.c:3697 readelf.c:3977
+#: readelf.c:3817 readelf.c:4192
 #, c-format
 msgid ""
 "\n"
@@ -3147,33 +3906,38 @@
 "\n"
 "No hay secciones en este fichero.\n"
 
-#: readelf.c:3703
+#: readelf.c:3823
 #, c-format
 msgid "There are %d section headers, starting at offset 0x%lx:\n"
 msgstr "Hay %d encabezados de sección, comenzando en el desplazamiento: 0x%lx:\n"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
 msgid "string table"
 msgstr "tabla de cadenas"
 
-#: readelf.c:3765
+#: readelf.c:3881
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "La sección %d tiene un sh_entsize %lx inválido (se esperaba %lx)\n"
+
+#: readelf.c:3901
 msgid "File contains multiple dynamic symbol tables\n"
 msgstr "El fichero contiene múltiples tablas dinámicas de símbolos\n"
 
-#: readelf.c:3777
+#: readelf.c:3914
 msgid "File contains multiple dynamic string tables\n"
 msgstr "El fichero contiene múltiples tablas dinámicas de cadenas\n"
 
-#: readelf.c:3782
+#: readelf.c:3919
 msgid "dynamic strings"
 msgstr "cadenas dinámicas"
 
-#: readelf.c:3789
+#: readelf.c:3926
 msgid "File contains multiple symtab shndx tables\n"
 msgstr "El fichero contiene múltiples tablas symtab shndx\n"
 
-#: readelf.c:3828
+#: readelf.c:3973
 #, c-format
 msgid ""
 "\n"
@@ -3182,7 +3946,7 @@
 "\n"
 "Encabezados de Sección:\n"
 
-#: readelf.c:3830
+#: readelf.c:3975
 #, c-format
 msgid ""
 "\n"
@@ -3191,28 +3955,58 @@
 "\n"
 "Encabezados de Sección:\n"
 
-#: readelf.c:3834
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] Nombre\n"
+
+#: readelf.c:3982
+#, c-format
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       Tipo            Direc    Desp   Tam    ES   En Inf Al\n"
+
+#: readelf.c:3986
+#, c-format
 msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [Nr] Nombre            Tipo            Direc    Desp   Tam    ES Opt En Inf Al\n"
 
-#: readelf.c:3837
+#: readelf.c:3993
 #, c-format
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       Tipo            Direc            Desp   Tam    ES   En Inf Al\n"
+
+#: readelf.c:3997
+#, c-format
 msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [Nr] Nombre            Tipo            Direc            Desp   Tam    ES Opt En Inf Al\n"
 
-#: readelf.c:3840
+#: readelf.c:4004
 #, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       Tipo             Dirección         Despl             Enl\n"
+
+#: readelf.c:4005
+#, c-format
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       Tamaño            TamEnt           Info              Alin\n"
+
+#: readelf.c:4009
+#, c-format
 msgid "  [Nr] Name              Type             Address           Offset\n"
 msgstr "  [Nr] Nombre            Tipo             Dirección         Despl\n"
 
-#: readelf.c:3841
+#: readelf.c:4010
 #, c-format
 msgid "       Size              EntSize          Flags  Link  Info  Align\n"
 msgstr "       Tamaño            TamEnt           Opts   Enl   Info  Alin\n"
 
-#: readelf.c:3936
+#: readelf.c:4015
 #, c-format
+msgid "       Flags\n"
+msgstr "       Opciones\n"
+
+#: readelf.c:4150
+#, c-format
 msgid ""
 "Key to Flags:\n"
 "  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
@@ -3225,16 +4019,16 @@
 "  O (se requiere procesamiento extra del SO) o (específico del SO)\n"
 "  p (específico del procesador)\n"
 
-#: readelf.c:3954
+#: readelf.c:4168
 #, c-format
 msgid "[<unknown>: 0x%x]"
 msgstr "[<desconocido>: 0x%x]"
 
-#: readelf.c:3984
+#: readelf.c:4199
 msgid "Section headers are not available!\n"
 msgstr "¡Los encabezados de sección no están disponibles!\n"
 
-#: readelf.c:4008
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
@@ -3243,36 +4037,46 @@
 "\n"
 "No hay grupos de sección en este fichero.\n"
 
-#: readelf.c:4042
+#: readelf.c:4259
 #, c-format
 msgid "Bad sh_link in group section `%s'\n"
 msgstr "sh_link erróneo en la sección de grupo `%s'\n"
 
-#: readelf.c:4061
+#: readelf.c:4278
 #, c-format
 msgid "Bad sh_info in group section `%s'\n"
 msgstr "sh_info erróneo en la sección de grupo `%s'\n"
 
-#: readelf.c:4085 readelf.c:6947
+#: readelf.c:4317 readelf.c:7243
 msgid "section data"
 msgstr "datos de sección"
 
-#: readelf.c:4097
+#: readelf.c:4329
 #, c-format
 msgid "   [Index]    Name\n"
 msgstr "   [Índice]   Nombre\n"
 
-#: readelf.c:4114
+#: readelf.c:4343
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "la sección [%5u] ya está en la sección de grupo [%5u]\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "la sección [%5u] en la sección de grupo [%5u] > máximo de sección [%5u]\n"
 
-#: readelf.c:4127
+#: readelf.c:4349
 #, c-format
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "sección inválida [%5u] en la sección de grupo [%5u]\n"
+
+#: readelf.c:4359
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "la sección [%5u] en la sección de grupo [%5u] ya está en la sección de grupo [%5u]\n"
+
+#: readelf.c:4372
+#, c-format
 msgid "section 0 in group section [%5u]\n"
 msgstr "sección 0 en la sección de grupo [%5u]\n"
 
-#: readelf.c:4224
+#: readelf.c:4468
 #, c-format
 msgid ""
 "\n"
@@ -3281,7 +4085,7 @@
 "\n"
 "'%s' la sección de reubicación en el desplazamiento 0x%lx contiene %ld bytes:\n"
 
-#: readelf.c:4236
+#: readelf.c:4480
 #, c-format
 msgid ""
 "\n"
@@ -3290,7 +4094,7 @@
 "\n"
 "No hay reubicaciones dinámicas en este fichero.\n"
 
-#: readelf.c:4260
+#: readelf.c:4504
 #, c-format
 msgid ""
 "\n"
@@ -3299,17 +4103,17 @@
 "\n"
 "La sección de reubicación "
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
 #, c-format
 msgid "'%s'"
 msgstr "'%s'"
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
 msgid " at offset 0x%lx contains %lu entries:\n"
 msgstr " en el desplazamiento 0x%lx contiene %lu entradas:\n"
 
-#: readelf.c:4308
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
@@ -3318,16 +4122,16 @@
 "\n"
 "No hay reubicaciones en este fichero.\n"
 
-#: readelf.c:4482 readelf.c:4862
+#: readelf.c:4742 readelf.c:5124
 msgid "unwind table"
 msgstr "tabla desenredada"
 
-#: readelf.c:4540 readelf.c:4959
+#: readelf.c:4801 readelf.c:5214
 #, c-format
 msgid "Skipping unexpected relocation type %s\n"
 msgstr "Saltando el tipo de reubicación %s inesperado\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
@@ -3336,7 +4140,7 @@
 "\n"
 "No hay secciones de desenredo en este fichero.\n"
 
-#: readelf.c:4661
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
@@ -3345,11 +4149,11 @@
 "\n"
 "No se puede encontrar la sección de información de desenredo para "
 
-#: readelf.c:4673
+#: readelf.c:4935
 msgid "unwind info"
 msgstr "información de desenredo"
 
-#: readelf.c:4675 readelf.c:5024
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
@@ -3358,11 +4162,11 @@
 "\n"
 "Sección de desenredo "
 
-#: readelf.c:5228 readelf.c:5272
+#: readelf.c:5491 readelf.c:5535
 msgid "dynamic section"
 msgstr "sección dinámica"
 
-#: readelf.c:5349
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
@@ -3371,31 +4175,31 @@
 "\n"
 "No hay sección dinámica en este fichero.\n"
 
-#: readelf.c:5387
+#: readelf.c:5650
 msgid "Unable to seek to end of file!"
 msgstr "¡No se puede alcanzar el final del fichero!"
 
-#: readelf.c:5400
+#: readelf.c:5663
 msgid "Unable to determine the number of symbols to load\n"
 msgstr "No se puede determinar el número de símbolos a cargar\n"
 
-#: readelf.c:5435
+#: readelf.c:5698
 msgid "Unable to seek to end of file\n"
 msgstr "No se puede alcanzar el final del fichero\n"
 
-#: readelf.c:5442
+#: readelf.c:5705
 msgid "Unable to determine the length of the dynamic string table\n"
 msgstr "No se puede determinar la longitud de la tabla dinámica de cadenas\n"
 
-#: readelf.c:5447
+#: readelf.c:5710
 msgid "dynamic string table"
 msgstr "tabla de cadena dinámicas"
 
-#: readelf.c:5482
+#: readelf.c:5745
 msgid "symbol information"
 msgstr "información del símbolo"
 
-#: readelf.c:5507
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
@@ -3404,77 +4208,77 @@
 "\n"
 "La sección dinámica en el desplazamiento 0x%lx contiene %u entradas:\n"
 
-#: readelf.c:5510
+#: readelf.c:5773
 #, c-format
 msgid "  Tag        Type                         Name/Value\n"
 msgstr "  Marca      Tipo                         Nombre/Valor\n"
 
-#: readelf.c:5546
+#: readelf.c:5809
 #, c-format
 msgid "Auxiliary library"
 msgstr "Biblioteca auxiliar"
 
-#: readelf.c:5550
+#: readelf.c:5813
 #, c-format
 msgid "Filter library"
 msgstr "Biblioteca de filtro"
 
-#: readelf.c:5554
+#: readelf.c:5817
 #, c-format
 msgid "Configuration file"
 msgstr "Fichero de configuración"
 
-#: readelf.c:5558
+#: readelf.c:5821
 #, c-format
 msgid "Dependency audit library"
 msgstr "Biblioteca de auditoría de dependencias"
 
-#: readelf.c:5562
+#: readelf.c:5825
 #, c-format
 msgid "Audit library"
 msgstr "Biblioteca de auditoría"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
 #, c-format
 msgid "Flags:"
 msgstr "Opciones:"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
 #, c-format
 msgid " None\n"
 msgstr " Ninguna\n"
 
-#: readelf.c:5759
+#: readelf.c:6022
 #, c-format
 msgid "Shared library: [%s]"
 msgstr "Biblioteca compartida: [%s]"
 
-#: readelf.c:5762
+#: readelf.c:6025
 #, c-format
 msgid " program interpreter"
 msgstr " programa intérprete"
 
-#: readelf.c:5766
+#: readelf.c:6029
 #, c-format
 msgid "Library soname: [%s]"
 msgstr "Nombre-so de la biblioteca: [%s]"
 
-#: readelf.c:5770
+#: readelf.c:6033
 #, c-format
 msgid "Library rpath: [%s]"
 msgstr "Rpath de la biblioteca: [%s]"
 
-#: readelf.c:5774
+#: readelf.c:6037
 #, c-format
 msgid "Library runpath: [%s]"
 msgstr "Ruta de ejecución de la biblioteca: [%s]"
 
-#: readelf.c:5837
+#: readelf.c:6100
 #, c-format
 msgid "Not needed object: [%s]\n"
 msgstr "Objeto innecesario: [%s]\n"
 
-#: readelf.c:5951
+#: readelf.c:6214
 #, c-format
 msgid ""
 "\n"
@@ -3483,51 +4287,51 @@
 "\n"
 "La sección de definición de la versión '%s' contiene %ld entradas:\n"
 
-#: readelf.c:5954
+#: readelf.c:6217
 #, c-format
 msgid "  Addr: 0x"
 msgstr "  Dir: 0x"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:6219 readelf.c:6426
 #, c-format
 msgid "  Offset: %#08lx  Link: %lx (%s)\n"
 msgstr "  Despl: %#08lx  Enl: %lx (%s)\n"
 
-#: readelf.c:5961
+#: readelf.c:6228
 msgid "version definition section"
 msgstr "sección de definición de versión"
 
-#: readelf.c:5987
+#: readelf.c:6254
 #, c-format
 msgid "  %#06x: Rev: %d  Flags: %s"
 msgstr "  %#06x: Rev: %d  Opts: %s"
 
-#: readelf.c:5990
+#: readelf.c:6257
 #, c-format
 msgid "  Index: %d  Cnt: %d  "
 msgstr "  Ind: %d  Cnt: %d  "
 
-#: readelf.c:6001
+#: readelf.c:6268
 #, c-format
 msgid "Name: %s\n"
 msgstr "Nombre: %s\n"
 
-#: readelf.c:6003
+#: readelf.c:6270
 #, c-format
 msgid "Name index: %ld\n"
 msgstr "Índice de nombres: %ld\n"
 
-#: readelf.c:6018
+#: readelf.c:6285
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Padre %d: %s\n"
 
-#: readelf.c:6021
+#: readelf.c:6288
 #, c-format
 msgid "  %#06x: Parent %d, name index: %ld\n"
 msgstr "  %#06x: Padre %d, índice de nombres: %ld\n"
 
-#: readelf.c:6040
+#: readelf.c:6307
 #, c-format
 msgid ""
 "\n"
@@ -3536,60 +4340,60 @@
 "\n"
 "La sección de requerimientos de versión '%s' contiene %ld entradas:\n"
 
-#: readelf.c:6043
+#: readelf.c:6310
 #, c-format
 msgid " Addr: 0x"
 msgstr " Dir: 0x"
 
-#: readelf.c:6045
+#: readelf.c:6312
 #, c-format
 msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
 msgstr "  Despl: %#08lx  Enlace a sección: %ld (%s)\n"
 
-#: readelf.c:6050
+#: readelf.c:6321
 msgid "version need section"
 msgstr "sección de versiones necesarias"
 
-#: readelf.c:6072
+#: readelf.c:6343
 #, c-format
 msgid "  %#06x: Version: %d"
 msgstr "  %#06x: Versión: %d"
 
-#: readelf.c:6075
+#: readelf.c:6346
 #, c-format
 msgid "  File: %s"
 msgstr "  Fichero: %s"
 
-#: readelf.c:6077
+#: readelf.c:6348
 #, c-format
 msgid "  File: %lx"
 msgstr "  Fichero: %lx"
 
-#: readelf.c:6079
+#: readelf.c:6350
 #, c-format
 msgid "  Cnt: %d\n"
 msgstr "  Cnt: %d\n"
 
-#: readelf.c:6097
+#: readelf.c:6368
 #, c-format
 msgid "  %#06x:   Name: %s"
 msgstr "  %#06x:   Nombre: %s"
 
-#: readelf.c:6100
+#: readelf.c:6371
 #, c-format
 msgid "  %#06x:   Name index: %lx"
 msgstr "  %#06x:   Índice de nombres: %lx"
 
-#: readelf.c:6103
+#: readelf.c:6374
 #, c-format
 msgid "  Flags: %s  Version: %d\n"
 msgstr "  Opts: %s  Versión: %d\n"
 
-#: readelf.c:6139
+#: readelf.c:6417
 msgid "version string table"
 msgstr "versión de tabla de cadenas"
 
-#: readelf.c:6143
+#: readelf.c:6421
 #, c-format
 msgid ""
 "\n"
@@ -3598,40 +4402,40 @@
 "\n"
 "La sección de símbolos de versión '%s' contiene %d entradas:\n"
 
-#: readelf.c:6146
+#: readelf.c:6424
 #, c-format
 msgid " Addr: "
 msgstr " Dir: "
 
-#: readelf.c:6156
+#: readelf.c:6434
 msgid "version symbol data"
 msgstr "datos de símbolos de versión"
 
-#: readelf.c:6183
+#: readelf.c:6461
 msgid "   0 (*local*)    "
 msgstr "   0 (*local*)    "
 
-#: readelf.c:6187
+#: readelf.c:6465
 msgid "   1 (*global*)   "
 msgstr "   1 (*global*)   "
 
-#: readelf.c:6223 readelf.c:6677
+#: readelf.c:6503 readelf.c:6969
 msgid "version need"
 msgstr "la versión necesita"
 
-#: readelf.c:6233
+#: readelf.c:6513
 msgid "version need aux (2)"
 msgstr "la versión necesita aux (2)"
 
-#: readelf.c:6275 readelf.c:6740
+#: readelf.c:6555 readelf.c:7034
 msgid "version def"
 msgstr "versión definida"
 
-#: readelf.c:6294 readelf.c:6755
+#: readelf.c:6575 readelf.c:7049
 msgid "version def aux"
 msgstr "versión definida auxiliar"
 
-#: readelf.c:6325
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
@@ -3640,23 +4444,23 @@
 "\n"
 "No se encontró información de versión en este fichero.\n"
 
-#: readelf.c:6456
+#: readelf.c:6740
 msgid "Unable to read in dynamic data\n"
 msgstr "No se pueden leer los datos dinámicos\n"
 
-#: readelf.c:6509
+#: readelf.c:6793
 msgid "Unable to seek to start of dynamic information"
 msgstr "No se puede encontrar el inicio de la información dinámica"
 
-#: readelf.c:6515
+#: readelf.c:6799
 msgid "Failed to read in number of buckets\n"
 msgstr "Falló la lectura en el número de cubos\n"
 
-#: readelf.c:6521
+#: readelf.c:6805
 msgid "Failed to read in number of chains\n"
 msgstr "Falló la lectura en el número de cadenas\n"
 
-#: readelf.c:6541
+#: readelf.c:6825
 #, c-format
 msgid ""
 "\n"
@@ -3665,17 +4469,17 @@
 "\n"
 "Tabla de símbolos por imagen:\n"
 
-#: readelf.c:6543
+#: readelf.c:6827
 #, c-format
 msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  Num Cub:    Valor  Tamaño Tipo   Uni  Vis      Nombre Ind\n"
 
-#: readelf.c:6545
+#: readelf.c:6829
 #, c-format
 msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  Num Cub:    Valor          Tamaño Typo   Uni  Vis      Nombre Ind\n"
 
-#: readelf.c:6597
+#: readelf.c:6882
 #, c-format
 msgid ""
 "\n"
@@ -3684,29 +4488,29 @@
 "\n"
 "La tabla de símbolos '%s' contiene %lu entradas:\n"
 
-#: readelf.c:6601
+#: readelf.c:6886
 #, c-format
 msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   Num:    Valor  Tam  Tipo    Unión  Vis      Nombre Ind\n"
 
-#: readelf.c:6603
+#: readelf.c:6888
 #, c-format
 msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   Num:    Valor          Tam  Tipo    Unión  Vis      Nombre Ind\n"
 
-#: readelf.c:6649
+#: readelf.c:6939
 msgid "version data"
 msgstr "datos de versión"
 
-#: readelf.c:6690
+#: readelf.c:6982
 msgid "version need aux (3)"
 msgstr "la versión necesita aux (3)"
 
-#: readelf.c:6715
+#: readelf.c:7009
 msgid "bad dynamic symbol"
 msgstr "símbolo dinámico erróneo"
 
-#: readelf.c:6778
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
@@ -3715,7 +4519,7 @@
 "\n"
 "La información de símbolos dinámicos no está disponible para mostrar los símbolos.\n"
 
-#: readelf.c:6790
+#: readelf.c:7085
 #, c-format
 msgid ""
 "\n"
@@ -3724,16 +4528,16 @@
 "\n"
 "Histograma para la longitud de lista de cubos (total de %lu cubos):\n"
 
-#: readelf.c:6792
+#: readelf.c:7087
 #, c-format
 msgid " Length  Number     %% of total  Coverage\n"
 msgstr " Long    Número     %% del total Cobertura\n"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
 msgid "Out of memory"
 msgstr "Memoria agotada"
 
-#: readelf.c:6862
+#: readelf.c:7157
 #, c-format
 msgid ""
 "\n"
@@ -3742,12 +4546,12 @@
 "\n"
 "El segmento de información dinámica en el desplazamiento 0x%lx contiene %d entradas:\n"
 
-#: readelf.c:6865
+#: readelf.c:7160
 #, c-format
 msgid " Num: Name                           BoundTo     Flags\n"
 msgstr " Num: Nombre                         EnlaceA     Opts\n"
 
-#: readelf.c:6917
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
@@ -3756,7 +4560,7 @@
 "\n"
 "Volcado ensamblador de la sección %s\n"
 
-#: readelf.c:6938
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
@@ -3765,7 +4569,7 @@
 "\n"
 "La sección '%s' no tiene datos para volcar.\n"
 
-#: readelf.c:6943
+#: readelf.c:7238
 #, c-format
 msgid ""
 "\n"
@@ -3774,777 +4578,73 @@
 "\n"
 "Volcado hexadecimal de la sección '%s':\n"
 
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "¡se encontró un operador extendido de línea mal formado!\n"
-
-#: readelf.c:7097
+#: readelf.c:7359
 #, c-format
-msgid "  Extended opcode %d: "
-msgstr "  Código de operación extendido %d: "
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "saltando el desplazamiento de reubicación inválido 0x%lx en la sección%s\n"
 
-#: readelf.c:7102
+#: readelf.c:7376
 #, c-format
-msgid ""
-"End of Sequence\n"
-"\n"
-msgstr ""
-"Fin de la Secuencia\n"
-"\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela.%s\n"
 
-#: readelf.c:7108
+#: readelf.c:7402
 #, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "establecer la Dirección a 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  definir la nueva entrada en la Tabla de Ficheros\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  Entr\tDir\tHora\tTam\tNombre\n"
-
-#: readelf.c:7116
-#, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
-
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
-#, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
-
-#: readelf.c:7124
-#, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-"%s\n"
-"\n"
-
-#: readelf.c:7128
-#, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "UNKNOWN: longitud %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "sección de datos debug_str"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<no hay sección .debug_str>"
-
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<desplazamiento demasiado grande>"
-
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "sección de datos debug_loc"
-
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "sección de datos debug_range"
-
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela%s\n"
-
-#: readelf.c:7321
-#, c-format
 msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
-msgstr "Saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela.%s\n"
+msgstr "saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela.%s\n"
 
-#: readelf.c:7565
+#: readelf.c:7435
 #, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "Valor TAG desconocido: %lx"
+msgid "%s section data"
+msgstr "datos de sección %s"
 
-#: readelf.c:7601
+#: readelf.c:7472
 #, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "Valor FORM desconocido: %lx"
-
-#: readelf.c:7610
-#, c-format
-msgid " %lu byte block: "
-msgstr " bloque de bytes %lu: "
-
-#: readelf.c:7944
-#, c-format
-msgid "(User defined location op)"
-msgstr "(Operador de ubicación definido por el usuario)"
-
-#: readelf.c:7946
-#, c-format
-msgid "(Unknown location op)"
-msgstr "(Operador de ubicación desconocido)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "Error interno: la versión DWARF no es 2 ó 3.\n"
-
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "DW_FORM_data8 no tiene soporte cuando sizeof (unsigned long) != 8\n"
-
-#: readelf.c:8162
-#, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (cadena indirecta, desplazamiento 0x%lx): %s"
-
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "Form no reconocido: %d\n"
-
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(no es inlined)"
-
-#: readelf.c:8259
-#, c-format
-msgid "(inlined)"
-msgstr "(inlined)"
-
-#: readelf.c:8262
-#, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(declarado como inline pero ignorado)"
-
-#: readelf.c:8265
-#, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(declarado como inline y es inline)"
-
-#: readelf.c:8268
-#, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (Valor desconocido de atributo inline: %lx)"
-
-#: readelf.c:8413 readelf.c:9537
-#, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [sin DW_AT_frame_base]"
-
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(lista de ubicación)"
-
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "Valor AT desconocido: %lx"
-
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "¿ No hay unidades de compilación en la sección .debug_info ?"
-
-#: readelf.c:8611
-#, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "No hay suficiente memoria para una matriz de información de depuración de %u entradas"
-
-#: readelf.c:8619 readelf.c:9630
-#, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section '%s' has no debugging data.\n"
 msgstr ""
-"La sección %s contiene:\n"
 "\n"
+"La sección '%s' no tiene datos de depuración.\n"
 
-#: readelf.c:8693
+#: readelf.c:7498
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  Unidad de Compilación @ %lx:\n"
+msgid "Unrecognized debug section: %s\n"
+msgstr "Sección de depuración no reconocida: %s\n"
 
-#: readelf.c:8694
+#: readelf.c:7533
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   Longitud:      %ld\n"
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "¡La sección %d no se volcó porque no existe!\n"
 
-#: readelf.c:8695
-#, c-format
-msgid "   Version:       %d\n"
-msgstr "   Versión:       %d\n"
+#: readelf.c:7791
+msgid "attributes"
+msgstr "atributos"
 
-#: readelf.c:8696
+#: readelf.c:7809
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   Desplaz Abrev: %ld\n"
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERROR: Longitud de sección errónea (%d > %d)\n"
 
-#: readelf.c:8697
+#: readelf.c:7830
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   Tamaño de Puntero: %d\n"
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ERROR: Longitud de subsección errónea (%d > %d)\n"
 
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "Sólo la información de depuración DWARF versión 2 y 3 tiene soporte actualmente.\n"
-
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "¡No se puede localizar la sección .debug_abbrev!\n"
-
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "sección de datos debug_abbrev"
-
-#: readelf.c:8759
+#: readelf.c:7880
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "No se puede localizar la entrada %lu en la tabla de abreviaciones\n"
+msgid "Unknown format '%c'\n"
+msgstr "Formato '%c' desconocido\n"
 
-#: readelf.c:8765
-#, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: Número de Abrev: %lu (%s)\n"
-
-#: readelf.c:8838
-#, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "la sección %s necesita una sección .debug_info llena\n"
-
-#: readelf.c:8845
-#, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "la sección %s tiene más unidades de compilación que la sección .debug_info\n"
-
-#: readelf.c:8847
-#, c-format
-msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
-msgstr "asumiendo que el tamaño del puntero es %d, de la última unidad de compilación en .debug_info\n"
-
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "extrayendo la información de la sección .debug_info"
-
-#: readelf.c:8909
-#, c-format
-msgid ""
-"\n"
-"Dump of debug contents of section %s:\n"
-"\n"
-msgstr ""
-"\n"
-"Volcado del contenido de depuración de la sección %s:\n"
-"\n"
-
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "La información de línea parece estar corrupta - esta sección es demasiado pequeña\n"
-
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "Solamente la información de línea de DWARF versión 2 y 3 tiene soporte actualmente.\n"
-
-#: readelf.c:8984
-#, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  Longitud:                    %ld\n"
-
-#: readelf.c:8985
-#, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  Versión DWARF:               %d\n"
-
-#: readelf.c:8986
-#, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  Longitud del Prólogo:        %d\n"
-
-#: readelf.c:8987
-#, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  Longitud Mínima Instrucción: %d\n"
-
-#: readelf.c:8988
-#, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr "  Valor inicial de 'is_stmt':  %d\n"
-
-#: readelf.c:8989
-#, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  Base Línea:                  %d\n"
-
-#: readelf.c:8990
-#, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  Rango Lìnea:                 %d\n"
-
-#: readelf.c:8991
-#, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  Base de Código de Operación: %d\n"
-
-#: readelf.c:8992
-#, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  (Tamaño del puntero:         %u\n"
-
-#: readelf.c:9001
-#, c-format
-msgid ""
-"\n"
-" Opcodes:\n"
-msgstr ""
-"\n"
-" Códigos de operación:\n"
-
-#: readelf.c:9004
-#, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  El código de operación %d tiene %d argumentos\n"
-
-#: readelf.c:9010
-#, c-format
-msgid ""
-"\n"
-" The Directory Table is empty.\n"
-msgstr ""
-"\n"
-" La Tabla de Directorios está vacía.\n"
-
-#: readelf.c:9013
-#, c-format
-msgid ""
-"\n"
-" The Directory Table:\n"
-msgstr ""
-"\n"
-" La Tabla de Directorios:\n"
-
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
-
-#: readelf.c:9028
-#, c-format
-msgid ""
-"\n"
-" The File Name Table is empty.\n"
-msgstr ""
-"\n"
-" La Tabla de Nombres de Fichero está vacía.\n"
-
-#: readelf.c:9031
-#, c-format
-msgid ""
-"\n"
-" The File Name Table:\n"
-msgstr ""
-"\n"
-" La Tabla de Nombres de Fichero:\n"
-
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
-
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
-
-#. Now display the statements.
-#: readelf.c:9058
-#, c-format
-msgid ""
-"\n"
-" Line Number Statements:\n"
-msgstr ""
-"\n"
-" Declaraciones de Número de Línea:\n"
-
-#: readelf.c:9073
-#, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  código de Operación especial %d: Dirección de avance por %d a 0x%lx"
-
-#: readelf.c:9077
-#, c-format
-msgid " and Line by %d to %d\n"
-msgstr " y Línea por %d a %d\n"
-
-#: readelf.c:9088
-#, c-format
-msgid "  Copy\n"
-msgstr "  Copiar\n"
-
-#: readelf.c:9095
-#, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  Avanzar el PC por %d para %lx\n"
-
-#: readelf.c:9103
-#, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  Línea de Avance por %d para %d\n"
-
-#: readelf.c:9110
-#, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  Establecer el Nombre de Fichero para la entrada %d en la Tabla de Nombres de Fichero\n"
-
-#: readelf.c:9118
-#, c-format
-msgid "  Set column to %d\n"
-msgstr "  Establecer la columna a %d\n"
-
-#: readelf.c:9125
-#, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  Establecer is_stmt a %d\n"
-
-#: readelf.c:9130
-#, c-format
-msgid "  Set basic block\n"
-msgstr "  Establecer el bloque básico\n"
-
-#: readelf.c:9138
-#, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  Avanzar el PC por la constante %d a 0x%lx\n"
-
-#: readelf.c:9146
-#, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  Avanzar el PC por la cantidad de tamaño fijo %d a 0x%lx\n"
-
-#: readelf.c:9151
-#, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  Establecer prologue_end a true\n"
-
-#: readelf.c:9155
-#, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  Establecer epilogue_begin a true\n"
-
-#: readelf.c:9161
-#, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  Establecer ISA a %d\n"
-
-#: readelf.c:9165
-#, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  Código de operación desconocido %d con los operandos: "
-
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
-#, c-format
-msgid ""
-"Contents of the %s section:\n"
-"\n"
-msgstr ""
-"Contenido de la sección %s:\n"
-"\n"
-
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "Actualmente sólo tienen soporte los nombres públicos DWARF 2 y 3\n"
-
-#: readelf.c:9240
-#, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  Longitud:                            %ld\n"
-
-#: readelf.c:9242
-#, c-format
-msgid "  Version:                             %d\n"
-msgstr "  Versión:                             %d\n"
-
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  Desplazamiento en sección .debug_info: %ld\n"
-
-#: readelf.c:9246
-#, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  Tamaño de área en sección .debug_info: %ld\n"
-
-#: readelf.c:9249
-#, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    Desplazamiento\tNombre\n"
-
-#: readelf.c:9300
-#, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %d\n"
-
-#: readelf.c:9306
-#, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file\n"
-
-#: readelf.c:9314
-#, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define - numlinea : %d macro : %s\n"
-
-#: readelf.c:9323
-#, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n"
-
-#: readelf.c:9335
-#, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n"
-
-#: readelf.c:9363
-#, c-format
-msgid "  Number TAG\n"
-msgstr "  Número TAG\n"
-
-#: readelf.c:9369
-#, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
-
-#: readelf.c:9372
-msgid "has children"
-msgstr "tiene hijos"
-
-#: readelf.c:9372
-msgid "no children"
-msgstr "sin hijos"
-
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
-
-#: readelf.c:9410
-#, c-format
-msgid ""
-"\n"
-"The .debug_loc section is empty.\n"
-msgstr ""
-"\n"
-"La sección .debug_loc está vacía.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "¡Las listas de ubicación en la sección .debug_info no están en orden ascendente!\n"
-
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "¡No hay listas de ubicación en la sección .debug_info!\n"
-
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "Las listas de ubicación en la sección .debug_loc empiezan en 0x%lx\n"
-
-#: readelf.c:9464
-#, c-format
-msgid ""
-"Contents of the .debug_loc section:\n"
-"\n"
-msgstr ""
-"Contenido de la sección .debug_loc:\n"
-"\n"
-
-#: readelf.c:9465
-#, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    Desplaz  Inicio   Fin      Expresión\n"
-
-#: readelf.c:9495
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_loc.\n"
-
-#: readelf.c:9498
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_loc.\n"
-
-#: readelf.c:9512 readelf.c:9837
-#, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <Fin de la lista>\n"
-
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (inicio == final)"
-
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (inicio > final)"
-
-#: readelf.c:9566
-#, c-format
-msgid ""
-"\n"
-"The .debug_str section is empty.\n"
-msgstr ""
-"\n"
-"La sección .debug_str está vacía.\n"
-
-#: readelf.c:9570
-#, c-format
-msgid ""
-"Contents of the .debug_str section:\n"
-"\n"
-msgstr ""
-"Contenido de la sección .debug_str:\n"
-"\n"
-
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "Sólo los rangos-a de DWARF 2 y 3 tienen soporte actualmente.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  Longitud:                 %ld\n"
-
-#: readelf.c:9680
-#, c-format
-msgid "  Version:                  %d\n"
-msgstr "  Versión:                  %d\n"
-
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  Desplaz. en .debug_info:  %lx\n"
-
-#: readelf.c:9682
-#, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  Tamaño del Puntero:       %d\n"
-
-#: readelf.c:9683
-#, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  Tamaño del Segmento:      %d\n"
-
-#: readelf.c:9685
-#, c-format
-msgid ""
-"\n"
-"    Address  Length\n"
-msgstr ""
-"\n"
-"    Longitud de la Dirección\n"
-
-#: readelf.c:9741
-#, c-format
-msgid ""
-"\n"
-"The .debug_ranges section is empty.\n"
-msgstr ""
-"\n"
-"La sección .debug_ranges está vacía.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "¡Las listas de rango en la sección .debug_info no están en orden ascendente!\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "¡No hay listas de rango en la sección .debug_info!\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "Las listas de rango en la sección .debug_info inician en 0x%lx\n"
-
-#: readelf.c:9795
-#, c-format
-msgid ""
-"Contents of the .debug_ranges section:\n"
-"\n"
-msgstr ""
-"Contenido de la sección .debug_ranges:\n"
-"\n"
-
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    Desplaz  Inicio   Fin\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
-
-#: readelf.c:9823
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
-
-#: readelf.c:10017
-#, c-format
-msgid "The section %s contains:\n"
-msgstr "La sección %s contiene:\n"
-
-#: readelf.c:10663
-#, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "DW_CFA_%d desconocido o sin soporte\n"
-
-#: readelf.c:10688
-#, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "Aún no tiene soporte el mostrar el contenido de depuración de la sección %s.\n"
-
-#: readelf.c:10732
-#, c-format
-msgid ""
-"\n"
-"Section '%s' has no debugging data.\n"
-msgstr ""
-"\n"
-"La sección '%s' no tiene datos de depuración.\n"
-
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "sección de datos de depuración"
-
-#: readelf.c:10765
-#, c-format
-msgid "Unrecognized debug section: %s\n"
-msgstr "Sección de depuración no reconocida: %s\n"
-
-#: readelf.c:10800
-#, c-format
-msgid "Section %d was not dumped because it does not exist!\n"
-msgstr "¡La sección %d no se volcó porque no existe!\n"
-
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "lista de bibliotecas"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "opciones"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4553,15 +4653,15 @@
 "\n"
 "La sección '%s' contiene %d entradas:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "se encontró una lista de conflictos sin una tabla de símbolos dinámicos"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "tiene conflictos con"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4570,15 +4670,15 @@
 "\n"
 "La sección '.conflict' contiene %lu entradas:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  Num:    Índice      Valor  Nombre"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "tabla de cadenas liblist"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4587,90 +4687,90 @@
 "\n"
 "La sección de lista de bibliotecas '%s' contiene %lu entradas:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (vector auxiliar)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (estructura prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (registros de coma flotante)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (estructura prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (estructura task)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (estructura user_xfpregs)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (estructura pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (registros de coma flotante)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (estructura psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (estructura lwpstatus_t)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (estructura lwpsinfo_t)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (estructura win32_pstatus)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (versión)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (arquitectura)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "Tipo de nota desconocido: (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "estructura procinfo de NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (estructura reg)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPREGS (estructura fpreg)"
 
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "notas"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4679,27 +4779,27 @@
 "\n"
 "Notas en el desplazamiento 0x%08lx con longitud 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  Prop\t\tTamaño datos\tDescripción\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "se encontró una nota corrupta en el desplazamiento %x en las notas de núcleo\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "se encontró una nota corrupta en el desplazamiento %lx en las notas de núcleo\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " tipo: %x, tamañonombre: %08lx, tamañodesc: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " tipo: %lx, tamañonombre: %08lx, tamañodesc: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "No hay segmentos de notas presentes el el fichero core.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4707,12 +4807,12 @@
 "Esta instancia de readelf ha sido construida sin soporte para un\n"
 "tipo de datos de 64 bit y por eso no puede leer ficheros ELF de 64 bit.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: Falló al leer el encabezado del fichero\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4721,68 +4821,68 @@
 "\n"
 "Fichero: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: falló al leer el encabezado del archivo\n"
 
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: falló al saltar la tabla de símbolos del archivo\n"
 
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: falló al leer la tabla de cadenas\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: desplazamiento de tabla de cadenas de archivo %lu inválido\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: nombre de fichero de archivo erróneo\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: falló al buscar el siguiente encabezado de archivo\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "'%s': No hay tal fichero\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "No se puede encontrar '%s'.  Mensaje de error del sistema: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "'%s' no es un fichero ordinario\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "El fichero de entrada '%s' no es legible.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: no se puede establecer la hora: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "no se puede renombrar '%s' razón: %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "no se puede copiar el fichero '%s' razón: %s"
@@ -5164,17 +5264,17 @@
 msgid "can't open `%s' for output: %s"
 msgstr "no se puede abrir `%s' para salida: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr " Muestra los tamaños de las secciones dentro de los ficheros binarios\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
 msgstr "Si no se especifica(n) fichero(s) de salida, se asume a.out\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5182,6 +5282,7 @@
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5194,16 +5295,17 @@
 "  -t        --totals                  Muestra los tamaños totales\n"
 "                                      (sólo Berkeley)\n"
 "            --target=<nombrebfd>      Establece el formato del fichero binario\n"
+"            @<fichero>                Lee opciones del <fichero>\n"
 "  -h        --help                    Muestra esta información\n"
 "  -v        --version                 Muestra la versión del programa\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "argumento inválido para --format: %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "Radical inválido: %s\n"
@@ -5220,6 +5322,7 @@
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5227,10 +5330,11 @@
 "  -q --quick       (Obsoleto - ignorado)\n"
 "  -n --noprescan   No realizar una revisión para convertir comunes en definiciones\n"
 "  -d --debug       Muestra información acerca de lo que se está haciendo\n"
+"  @<fichero>       Lee opciones del <fichero>\n"
 "  -h --help        Muestra esta información\n"
 "  -v --version     Muestra el número de versión del programa\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "no se puede abrir el fichero de salida %s"
@@ -5368,22 +5472,22 @@
 msgid "Unrecognized demangled builtin type\n"
 msgstr "Tipo interno desenredado no reconocido\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "número %s inválido"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "argumento entero %s inválido"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr " Muestra las cadenas imprimibles en [fichero(s)] (por defecto entrada estándar)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5396,6 +5500,7 @@
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5410,15 +5515,16 @@
 "  -T --target=<NOMBREBFD>   Especifica el formato de fichero binario\n"
 "  -e --encoding={s,S,b,l,B,L} Selecciona el tamaño del carácter y la \"endianez\":\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<fichero>                Lee opciones del fichero\n"
 "  -h --help                 Muestra esta información\n"
 "  -v --version              Muestra el número de versión del programa\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "Muestra una interpretación legible por humanos de un fichero objeto SYSROFF\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5429,7 +5535,7 @@
 "  -h --help        Muestra esta información\n"
 "  -v --version     Muestra el número de versión del programa\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "no se puede abrir el fichero de entrada %s"
@@ -5538,15 +5644,17 @@
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 " Las opciones son:\n"
 "  -r                           Se ignora por compatibilidad con rc\n"
+"  @<fichero>                   Lee opciones del <fichero>\n"
 "  -h --help                    Muestra este mensaje de ayuda\n"
 "  -V --version                 Muestra la información de versión\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5558,20 +5666,20 @@
 "entrada.  Sin fichero de entrada es la entrada estándar, por defecto rc.\n"
 "Sin fichero de salida es la salida estándar, por defecto rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "opción -f inválida\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "No hay un nombre de fichero a continuación de la opción -fo.\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "La opción -I es obsoleta para establecer el formato de salida, por favor use -J en su lugar.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "no hay recursos"
 
@@ -5590,8 +5698,73 @@
 msgid "%s: warning: unknown size for field `%s' in struct"
 msgstr "%s: aviso: tamaño desconocido para el campo `%s' en la estructura"
 
+#~ msgid "flags"
+#~ msgstr "opciones"
+
+#~ msgid "debug_str section data"
+#~ msgstr "sección de datos debug_str"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "sección de datos debug_loc"
+
+#~ msgid "debug_range section data"
+#~ msgstr "sección de datos debug_range"
+
+#~ msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+#~ msgstr "%s: saltando el tipo de símbolo %s inesperado en la reubicación en la sección .rela%s\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "sección de datos debug_abbrev"
+
+#~ msgid "extracting information from .debug_info section"
+#~ msgstr "extrayendo la información de la sección .debug_info"
+
 #~ msgid ""
 #~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La sección .debug_loc está vacía.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_loc section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenido de la sección .debug_loc:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenido de la sección .debug_str:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_ranges section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La sección .debug_ranges está vacía.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_ranges section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenido de la sección .debug_ranges:\n"
+#~ "\n"
+
+#~ msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Hay un agujero [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
+
+#~ msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Hay un traslape [0x%lx - 0x%lx] en la sección .debug_ranges.\n"
+
+#~ msgid "debug section data"
+#~ msgstr "sección de datos de depuración"
+
+#~ msgid ""
+#~ "\n"
 #~ "<member %s>\n"
 #~ "\n"
 #~ msgstr ""

Added: branches/binutils/package/binutils/po/fi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/fi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/fr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/fr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/binutils/po/fr.po
===================================================================
--- branches/binutils/package/binutils/po/fr.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/po/fr.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -4,10 +4,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU binutils 2.15.96\n"
+"Project-Id-Version: GNU binutils 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2005-03-22 08:00-0500\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-20 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail at IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc at traduc.org>\n"
 "MIME-Version: 1.0\n"
@@ -15,27 +15,29 @@
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "Usage: %s [options] [adresses]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr "Convertir les adresses en paires numéro de ligne/fichier.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
 msgstr "Si aucune adresse n'est spécifiée sur la ligne de commande, elles seront lues de stdin\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -46,6 +48,7 @@
 "Les options sont:\n"
 "  -b --target=<nombfd>   sélectionner le format du fichier binaire\n"
 "  -e --exe=<executable>  sélectionner le nom du fichier d'entrée (par défaut est a.out)\n"
+"  -i --inlines           dérouler les fonctions enlignes\n"
 "  -s --basenames         élaguer les noms de répertoires\n"
 "  -f --functions         afficher les noms de fonctions\n"
 "  -C --demangle[=style]  décoder les noms de fonction\n"
@@ -53,210 +56,217 @@
 "  -V --version           afficher le nom et la version du logiciel\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Rapporter toutes anomalies à %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: ne peut obtenir l'adresse à partir de l'archive"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "style de d'encodage par mutilation inconnu « %s »"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "pas d'entrée %s dans l'archive\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr "Usage: %s [options d'émulation] [-]{dmpqrstx}[abcfilNoPsSuvV] [nom-du-membre] [compteur] fichier-archive fichier...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "       %s -M [<script-mri]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " commandes:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            - détruire le(s) fichier(s) de l'archive\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        - déplacer le(s) fichier(s) dans l'archive\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            - afficher le nom des fichiers trouvés dans l'archive\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         - ajout rapide des fichiers à l'archive\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  - remplacer les fichiers exitants ou inserer les nouveaux dans l'archive\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            - afficher le contenu de l'archive\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         - extraire les fichiers de l'archive\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " modificateurs spécifiques de commandes:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          - placer le(s) fichier(s) après le [nom-de-membre]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          - placer le(s) fichier(s) avant le [nom-de-membre] (identique à [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          - utiliser le [compteur] du nom\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]          - tronquer les noms des fichiers insérés\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          - utliser des chemins complets lors d'un appariement\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          - préserver les dates d'origine\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          - remplacer seulement les fichiers de l'archive par les plus récents\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " modificateurs génériques:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          - ne pas avertir si la librarie doit être créée\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          - créer un index d'archive (voir ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          - ne pas construire une table de symboles\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          - utiliser le mode verbeux\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          - afficher le numéro de version\n"
 
-#: ar.c:253
+#: ar.c:245
 #, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<fichier_def>        lire les options à partir du <fichier>\n"
+
+#: ar.c:252
+#, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "Usage: %s [options] archive\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " Générer un index pour accélérer les accès aux archives\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "Les options sont:\n"
+"  @<fichier>                 lire les options à partir du <fichier>\n"
 "   -h --help                 afficher l'aide-mémoire\n"
 "   -V --version              afficher le nom et la version du logiciel\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "deux operations différentes spécifiées"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "option illégale -- %c"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "aucune opération spécifiée"
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "« u » n'a de sens qu'avec l'option « r »."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "« N » n'a de  sens qu'avec les options « x » et « d »."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "La valeur de « N » doit être positive."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "erreur interne -- cette option n'est pas implantée"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "création de %s"
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "erreur interne d'évaluation de %s par stat()"
 
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -267,37 +277,37 @@
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s n'est pas une archive valide"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "stat() a retourné une taille négative for %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "Aucun membre ayant le nom « %s »\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "aucune entrée %s dans l'archive %s!"
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: aucune table d'archive à mettre à jour"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "Aucune entrée %s dans l'archive.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "Ne peut ouvrir le fichier %s\n"
@@ -353,95 +363,97 @@
 msgstr "  Pas d'options d'émulation spécifiques\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr "  Options d'émulation: \n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "ne peut initialiser les paramètres par défaut BDF cible vers « %s »: %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: formats concordant:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "Cibles supportés:"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: cibles supportés:"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "Architectures supportées:"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: architectures supportées:"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "Version de l'en-tête du fichier BFD %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: mauvais numéro: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "'%s': pas de fichier comme tel"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "AVERTISSEMENT: ne peut localiser '%s'. Raison: %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "AVERTISSEMENT: '%s' n'est pas un fichier ordinaire"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "# de lignes %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "Usage: %s [options] fichier\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "Aficher dans un format humainement lisible une interprétation du fichier objet SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 "Les options sont:\n"
+"  @<fichier>                 lire les options à partir du <fichier>\n"
 "   -h --help                 afficher l'aide-mémoire\n"
 "   -V --version              afficher le nom et la version du logiciel\n"
 "\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "Aucune fichier spécifié à l'entrée"
 
@@ -538,576 +550,586 @@
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: type illégal rencontré"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "erreur interne: type de machine inconnue: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "Ne peut ouvrir le fichier de définition: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "Traitement du fichier de définition: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "Traitement complété du fichier de définition"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "Erreur de syntaxe dans le fichier de définition %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: composants du chemin ont été éliminé du nom de l'imiage '%s'."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "NOM: %s base: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "Ne peut trouver la LIBRAIRIE et le NOM"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "LIBRAIRIE: %s base %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "en attente: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "sous-processus a reçu le signal fatal %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s a terminé avec le statut %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "Aspirer les informations de la section %s dans %s"
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "Exclusion de symbole: %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: aucun symbole"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "Lecture complétée %s"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "Incapable d'ouvrir le fichier objet: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "Scrutation du fichier objet %s"
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "Ne peutproduire mcore-elf dll à partir du fichier d'archive: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "Ajout des exports au fichier de sortie"
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "Exports ajoutés au fichier de sortie"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "Génération du fichier d'exports: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "Incapable d'ouvrir le fichier assembleur temporaire: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "Fichier temporaire ouvert: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "Fichier d'exports généré"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "échec de bfd_open lors de l'ouverture du fichier stub: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "Création du fichier stub: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "échec d'ouverture du fichier de tête temporaire: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "échec d'ouverture du fichier de queue temporaire: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "Ne peut ouvrir le fichier .lib: %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "Création du fichier de librairie: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "ne peut détruire %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "Fichier de libraire créé"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "AVERTISSEMENT: EXPORT en duplication ignoré %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "ERREUR, EXPORT en duplication avec ordinals: %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "Traitement des définitions"
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "Définitions traitées"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "Usage %s <options> <fichiers-objet>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <machine>    créer comme DLL pour la <machine>.  [défaut: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <nom_de_sortie> générer un fichier d'export.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <nom_de_sortie> générer une librairie d'interface.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         ajouter les dll indirectes au fichier d'exports.\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <nom>        nom du dll à placer dans la libraire d'interface.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <fichier_def>  nom du fichier .def à lire\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <fichier_def> nom du fichier .def à créer.\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
 msgstr "      --export-all-symbols   exporter tous les symboles vers le fichier .def\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr "      --no-export-all-symbols  exporter seulement la liste des symboles\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr "      --exclude-symbols <liste> ne pas exporter la <liste>\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr "      --no-default-excludes  ne pas tenir compte des symboles d'exclusion par défaut\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <fichier_base> lire le fichier de base généré par l'éditeur de liens\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            ne pas générer la section idata$4\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            ne pas générer la section idata$5\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr "   -U --add-underscore       ajouter des soulignés aux symboles dans la librairie d'interface\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr "   -k --kill-at              stopper @<n> à partir des noms exportés\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr "   -A --add-stdcall-alias    ajouter des aliases sans @<n>\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr "   -p --axd-prefix-alias <préfixe>  ajouter des aliases avec <préfixe>.\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <nom>             utiliser le <nom> pour l'assembleur\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr "   -f --as-flags <fanions>   relayer les <fanions> à l'assembleur\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        créer une compatibilité arrière à la librairie d'importation\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr "   -n --no-delete            conserver les fichier temporaires\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <préfixe> utiliser le <préfixe> pour construire les noms de fichiers temporaires.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
 msgstr "   -v --verbose              passer en mode bavard\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
 msgstr "   -V --version              afficher le nom et la version du logiciel\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
 msgstr "   -h --help                 afficher l'aide-mémoire\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
 #, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<fichier>                lire les options à partir du <fichier>\n"
+
+#: dlltool.c:3063
+#, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr "   -M --mcore-elf <nom_sortie>  traiter le fichier objet mcore-elf selon le <nom_de_sortie>\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <nom>         utiliser <nom> comme éditeur de liens\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <fanions> relayer les <fanions> à l'éditeur de liens\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "Composants du chemin ont été éliminés du nom dll '%s'."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "Incapable d'ouvrir le fichier de base: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "Machine « %s » n'est pas supportée"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "Essai avec le fichier: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "Utilisation du fichier: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "Conservation temportaire du fichier de base %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "Destruction du fichier de base temporaire %s"
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "Conservation du fichier temporaire exp %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "Destruction du fichier exp temporaire %s"
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "Conservation du fichier temporaire def %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "Destruction du fichier temporaire def %s"
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  Option génériques:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
 #, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<fichier>             lire les options à partir du <fichier>\n"
+
+#: dllwrap.c:477
+#, c-format
 msgid "   --quiet, -q            Work quietly\n"
-msgstr "   --quiet, -q            travailler en silence\n"
+msgstr "   --quiet, -q            travailler silencieusement\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v          travailler en mode bavard\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              afficher la version du dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --implib <outname>     identique à --output-lib\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  Options pour %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr "   --driver-name <pilote> par défaut « gcc »\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr "   --driver-flags <fanion> écrasesr les fanions par défaut de ld\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr "   --dlltool-name <outil-dll> par défaut « dlltool »\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <entrée>       spécifier une entrée alternative au point d'entrée du DLL\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <base>    spécifier une adresse de l'image de base\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <machine>     i386-cygwin32 ou i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              afficher ce qui est nécessaire pour l'exécution\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin           créer une DLL de type Mingw\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  Options relayées à DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <machine>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <nom-de-sortie> générer un fichier d'exports.\n"
 
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <nom-de-sortie> générer une librairie d'entrée.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         ajouter les dll indirectes au fichier d'exports.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <nom>        nom du dll d'entrée à ajouter dans le fichier lib de sortie.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <fichier_def>        nom du fichier d'entrée .def\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <fichier_def> nom du fichier de sortie .def\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     exporter tous les symboles au fichier .def\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr "   --no-export-all-symbols  exporter seulement les symboles .drectve\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr "   --exclude-symbols <liste> exclure la <liste> de .def\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr "   --no-default-excludes    ignorer les symboles par défaut d'exclusion\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <fichier_base> lire le fichier de base généré par l'éditeur de liens\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           ne pas générer la section idata$4\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           ne pas générer la section idata$5\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     ajouter des soulignés au fichier .lib\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr "   -k                     stopper @<n> à partir des noms exportés\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr "   --add-stdcall-alias    ajouter les aliases sans @<n>\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <nom>             utiliser <nom> comme assembleur\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             conserver les fichiers temporaires.\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  le reste est passé sans modification au pilote du langage\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "Obligation de fournir au moins une des options -o or --dllname"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1115,26 +1137,733 @@
 "aucun fichier d'exportation de définitions fourni.\n"
 "Création du fichier, mais il ne correspondra pas nécessairement à ce que vous désirez."
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "OUTILDLL nom     : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "OUTILDLL options : %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "PILOTE name     : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "PILOTE options  : %s\n"
 
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Taille de données non traitées: %d\n"
+
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée!\n"
+
+#: dwarf.c:244
+#, c-format
+msgid "  Extended opcode %d: "
+msgstr "  Code op étendu  %d: "
+
+#: dwarf.c:249
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fin de séquence\n"
+"\n"
+
+#: dwarf.c:255
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "initialisé l'adresse à 0x%lx\n"
+
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  définir une entrée pour un nouveau fichier de table\n"
+
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  Entrée\tRép.\tDate\tTaille\tNom\n"
+
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
+
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: longueur %d\n"
+
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<aucune section .debug_str>"
+
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "décalage DW_FORM_strp est trop grand: %lx\n"
+
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<décalage trop grand>"
+
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valeur d'étiquette (« TAG ») inconnue: %lx"
+
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valeur FORM inconnue: %lx"
+
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu bloc d'octets: "
+
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Op de localisation défini par l'usager)"
+
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Op de localisation inconnu)"
+
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Erreur interne: DWARF version n'est ni 2 ou 3.\n"
+
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 n'est pas supporté lorsque  sizeof (unsigned long) != 8\n"
+
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (chaîne indirecte, décalage: 0x%lx): %s"
+
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Forme non reconnue: %lu\n"
+
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(pas en ligne)"
+
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(en ligne)"
+
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(déclaré comme en ligne mais ignoré)"
+
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(déclaré comme en-ligne et en-ligné"
+
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (valeur d'attribut en ligne inconnu: %lx)"
+
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [sans DW_AT_frame_base]"
+
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(liste de localisation)"
+
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valeur AT inconnue: %lx"
+
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Pas d'unités de comptabilisation dans la section %s ?"
+
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Pas asses de mémoire pour les infos dans un tableau de mise au point de %u entrées"
+
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"La section %s contient:\n"
+"\n"
+
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Incapable de localiser la section %s!\n"
+
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  Unité de compilation @ décalée de 0x%lx:\n"
+
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   Longueur:      %ld\n"
+
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   Version:       %d\n"
+
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   Décalage agrégé: %ld\n"
+
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   Taille des pointeurs:  %d\n"
+
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Seuls les informations de débug de la version DWARF 2 et 3 sont couramment supportés.\n"
+
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Incapable de localiser l'entrée %lu dans la table d'abréviation\n"
+
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Numéro d'abréviation: %lu (%s)\n"
+
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "%s la section a besoin d'une section .debug_info_section\n"
+
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "%s la section a plus d'unités de comptabilisation que la section .debug_info_section\n"
+
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+"on assume que la taille du pointeur est %d à partir de la dernière unité de comptabilisation dans .debug_info\n"
+"\n"
+
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Vidange du contenu de débug de la section %s:\n"
+"\n"
+
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "La ligne d'information semble corrompue - la section est trop petite\n"
+
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Seule la ligne d'info DWARF de version 2 et 3 est couramment supportée.\n"
+
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  Longueur:                    %ld\n"
+
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  Version DWARF:               %d\n"
+
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  Longueur du prologue:        %d\n"
+
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  Longueur minimale des instructions:  %d\n"
+
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  Valeur initiale de « is_stmt »:  %d\n"
+
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  Ligne de base:               %d\n"
+
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  Ligne d'étendue:             %d\n"
+
+#: dwarf.c:1901
+#, c-format
+msgid "  Opcode Base:                 %d\n"
+msgstr "  Code op Base:                %d\n"
+
+#: dwarf.c:1902
+#, c-format
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (Taille des pointeurs:       %u)%s\n"
+
+#: dwarf.c:1913
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Codes op:\n"
+
+#: dwarf.c:1916
+#, c-format
+msgid "  Opcode %d has %d args\n"
+msgstr "  Code op %d a %d arguments\n"
+
+#: dwarf.c:1922
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La table des répertoires est vide.\n"
+
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La table des répertoire:\n"
+
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
+
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" La talbe des noms de fichiers est vide.\n"
+
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La table des noms de fichiers:\n"
+
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
+
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Numéro de ligne des déclarations:\n"
+
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  Op code spécial %d: devance l'adresse par %lu à 0x%lx"
+
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " et Ligne par %d à %d\n"
+
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "opérateur de ligne étendue a besoin d'une taille valide pour le pointeur, on essaye à 4\n"
+
+#: dwarf.c:2007
+#, c-format
+msgid "  Copy\n"
+msgstr "  Copie\n"
+
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  Avancer le compteur PC de %lu à 0x%lx\n"
+
+#: dwarf.c:2023
+#, c-format
+msgid "  Advance Line by %d to %d\n"
+msgstr "  Avancer la ligne de %d à %d\n"
+
+#: dwarf.c:2030
+#, c-format
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  Initialisé le nom du fichier à l'entrée %d dans la table des noms de fichiers\n"
+
+#: dwarf.c:2038
+#, c-format
+msgid "  Set column to %lu\n"
+msgstr "  Initialiser la colonne à %lu\n"
+
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  Initialisé is_stmt avec %d\n"
+
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  Initialisé le bloc de base\n"
+
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  Avancer le compteur PC par une constante de %lu à 0x%lx\n"
+
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  Avancer le compteur PC par une taille fixe de %lu à 0x%lx\n"
+
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  Initialiser prologue_end à VRAI\n"
+
+#: dwarf.c:2075
+#, c-format
+msgid "  Set epilogue_begin to true\n"
+msgstr "  Initialiser epilogue_begin à VRAI\n"
+
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  Initialiser ISA à %lu\n"
+
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  opcode inconnu %d avec les opérandes:"
+
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenue de la section %s:\n"
+"\n"
+
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Seuls les noms publics DWARF 2 et 3 sont couramment supportés\n"
+
+#: dwarf.c:2158
+#, c-format
+msgid "  Length:                              %ld\n"
+msgstr "  Longueur:                            %ld\n"
+
+#: dwarf.c:2160
+#, c-format
+msgid "  Version:                             %d\n"
+msgstr "  Version:                             %d\n"
+
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  Décalage dans la section .debug_info:%ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  Taille de la zone dans la section .debug_info: %ld\n"
+
+#: dwarf.c:2167
+#, c-format
+msgid ""
+"\n"
+"    Offset\tName\n"
+msgstr ""
+"\n"
+"    Décalage\tNom\n"
+
+#: dwarf.c:2218
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - no de ligne: %d no de fichier: %d\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - no de ligne : %d macro : %s\n"
+
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n"
+
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - constante : %d chaîne : %s\n"
+
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  Numéro d'étiquette\n"
+
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
+
+#: dwarf.c:2291
+msgid "has children"
+msgstr "a des rejetons"
+
+#: dwarf.c:2291
+msgid "no children"
+msgstr "aucun rejeton"
+
+#: dwarf.c:2294
+#, c-format
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
+
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La section %s est vide.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "Liste de localisation dans la ssection .debug_info ne sont pas en ordre ascendant!\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "Pas de liste de localisation dans la section .debug_info!\n"
+
+#: dwarf.c:2379
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Listes de localisation dans la section %s qui débute à 0x%lx\n"
+
+#: dwarf.c:2383
+#, c-format
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    Décalage Début    Fin      Expression\n"
+
+#: dwarf.c:2414
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_loc.\n"
+
+#: dwarf.c:2417
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Il y a un chevauchement [0x%lx - 0x%lx] dans la section .debug_loc.\n"
+
+#: dwarf.c:2424
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Le décalage 0x%lx est plus grand que la taille de la section .debug_loc.\n"
+
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "La liste de localisation débutan à l'adresse 0x%lx n'est pas terminée.\n"
+
+#: dwarf.c:2445 dwarf.c:2784
+#, c-format
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <Fin de liste>\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (adresse de base)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (début == fin)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (début > fin)"
+
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Seuls les aranges DWARF de version 2 et 3 sont couramment supportés.\n"
+
+#: dwarf.c:2622
+#, c-format
+msgid "  Length:                   %ld\n"
+msgstr "  Longueur                  %ld\n"
+
+#: dwarf.c:2623
+#, c-format
+msgid "  Version:                  %d\n"
+msgstr "  Version:                  %d\n"
+
+#: dwarf.c:2624
+#, c-format
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  Décalage dans .debug_info: %lx\n"
+
+#: dwarf.c:2625
+#, c-format
+msgid "  Pointer Size:             %d\n"
+msgstr "  Taille des pointeurs:     %d\n"
+
+#: dwarf.c:2626
+#, c-format
+msgid "  Segment Size:             %d\n"
+msgstr "  Taille des segments:      %d\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid ""
+"\n"
+"    Address  Length\n"
+msgstr ""
+"\n"
+"    Longueur d'adresse\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "Liste des étendues dans la section .debug_info n'est pas en ordre ascendant!\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "Aucune liste d'étendues dans la section .debug_info!\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Listes d'étendues dans la section %s débutent à 0x%lx\n"
+
+#: dwarf.c:2740
+#, c-format
+msgid "    Offset   Begin    End\n"
+msgstr "    Décalage Début    Fin\n"
+
+#: dwarf.c:2765
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section %s.\n"
+
+#: dwarf.c:2769
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Il y a un chevauchement [0x%lx - 0x%lx] dans la section %s.\n"
+
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "La section %s contient:\n"
+
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "DW_CFA_%d non supporté ou inconnu\n"
+
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "L'affichage du contenu de la section de débug %s n'est pas encore supporté.\n"
+
+#: dwarf.c:3674
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: ERREUR: "
+
+#: dwarf.c:3685
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: AVERTISSEMENT: "
+
 #: emul_aix.c:51
 #, c-format
 msgid "  [-g]         - 32 bit small archive\n"
@@ -1391,124 +2120,124 @@
 msgid "IEEE unsupported complex type size %u\n"
 msgstr "taille de nombre complexe IEEE non supportée %u\n"
 
-#: nlmconv.c:267 srconv.c:1810
+#: nlmconv.c:269 srconv.c:1813
 msgid "input and output files must be different"
 msgstr "fichiers d'entrée et de sortie doivent être différents"
 
-#: nlmconv.c:314
+#: nlmconv.c:316
 msgid "input file named both on command line and with INPUT"
 msgstr "fichier d'entrée nommé à la fois sur la ligne de commande et dans la champ INPUT"
 
-#: nlmconv.c:323
+#: nlmconv.c:325
 msgid "no input file"
 msgstr "aucun fichier d'entrée"
 
-#: nlmconv.c:353
+#: nlmconv.c:355
 msgid "no name for output file"
 msgstr "aucun nom pour le fichier de sortie"
 
-#: nlmconv.c:367
+#: nlmconv.c:369
 msgid "warning: input and output formats are not compatible"
 msgstr "AVERTISSEMENT: les formats d'entrée et de sortie sont incompatibles"
 
-#: nlmconv.c:396
+#: nlmconv.c:398
 msgid "make .bss section"
 msgstr "générer la section .bss"
 
-#: nlmconv.c:405
+#: nlmconv.c:407
 msgid "make .nlmsections section"
 msgstr "générer la section .nlmsections"
 
-#: nlmconv.c:407
+#: nlmconv.c:409
 msgid "set .nlmsections flags"
 msgstr "initialiser les fanions .nlmsections"
 
-#: nlmconv.c:435
+#: nlmconv.c:437
 msgid "set .bss vma"
 msgstr "initialiser le vma de la section .bss"
 
-#: nlmconv.c:442
+#: nlmconv.c:444
 msgid "set .data size"
 msgstr "initialiser la taille de la section .data"
 
-#: nlmconv.c:622
+#: nlmconv.c:624
 #, c-format
 msgid "warning: symbol %s imported but not in import list"
 msgstr "AVERTISSEMENT: symbole %s importé mais n'est pas dans la liste d'importation"
 
-#: nlmconv.c:642
+#: nlmconv.c:644
 msgid "set start address"
 msgstr "initialiser l'adresse de départ"
 
-#: nlmconv.c:691
+#: nlmconv.c:693
 #, c-format
 msgid "warning: START procedure %s not defined"
 msgstr "AVERTISSEMENT: procédure START %s n'est pas définie"
 
-#: nlmconv.c:693
+#: nlmconv.c:695
 #, c-format
 msgid "warning: EXIT procedure %s not defined"
 msgstr "AVERTISSEMENT: procédure EXIT %s n'est pas définie"
 
-#: nlmconv.c:695
+#: nlmconv.c:697
 #, c-format
 msgid "warning: CHECK procedure %s not defined"
 msgstr "AVERTISSEMENT: procédure CHECK %s n'est pas définie"
 
-#: nlmconv.c:716 nlmconv.c:905
+#: nlmconv.c:718 nlmconv.c:907
 msgid "custom section"
 msgstr "section « custom »"
 
-#: nlmconv.c:737 nlmconv.c:934
+#: nlmconv.c:739 nlmconv.c:936
 msgid "help section"
 msgstr "section d'aide"
 
-#: nlmconv.c:759 nlmconv.c:952
+#: nlmconv.c:761 nlmconv.c:954
 msgid "message section"
 msgstr "section message"
 
-#: nlmconv.c:775 nlmconv.c:985
+#: nlmconv.c:777 nlmconv.c:987
 msgid "module section"
 msgstr "section module"
 
-#: nlmconv.c:795 nlmconv.c:1001
+#: nlmconv.c:797 nlmconv.c:1003
 msgid "rpc section"
 msgstr "section rpc"
 
 #. There is no place to record this information.
-#: nlmconv.c:831
+#: nlmconv.c:833
 #, c-format
 msgid "%s: warning: shared libraries can not have uninitialized data"
 msgstr "%s: AVERTISSEMENT: les librairies partagées ne peuvent avoir des données non initialisées"
 
-#: nlmconv.c:852 nlmconv.c:1020
+#: nlmconv.c:854 nlmconv.c:1022
 msgid "shared section"
 msgstr "section partagée"
 
-#: nlmconv.c:860
+#: nlmconv.c:862
 msgid "warning: No version number given"
 msgstr "AVERTISSEMENT: aucun numéro de version fourni"
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
 msgid "%s: read: %s"
 msgstr "%s: lu: %s"
 
-#: nlmconv.c:922
+#: nlmconv.c:924
 msgid "warning: FULLMAP is not supported; try ld -M"
 msgstr "AVERTISSEMENT: FULLMAP n'est pas supporté; essayer ld -M"
 
-#: nlmconv.c:1098
+#: nlmconv.c:1100
 #, c-format
 msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
 msgstr "Usage: %s [options] fichier_entrée [fichier_sortie]\n"
 
-#: nlmconv.c:1099
+#: nlmconv.c:1101
 #, c-format
 msgid " Convert an object file into a NetWare Loadable Module\n"
 msgstr "Convertir un fichier objet en un module NetWare Loadable\n"
 
-#: nlmconv.c:1100
+#: nlmconv.c:1102
 #, c-format
 msgid ""
 " The options are:\n"
@@ -1517,6 +2246,7 @@
 "  -T --header-file=<file>       Read <file> for NLM header information\n"
 "  -l --linker=<linker>          Use <linker> for any linking\n"
 "  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
 "  -h --help                     Display this information\n"
 "  -v --version                  Display the program's version\n"
 msgstr ""
@@ -1526,67 +2256,68 @@
 "  -T --header-file=<fichier>    lire les informations NLM du  <fichier>\n"
 "  -l --linker=<lien>            utiliser l'éditeur de <liens> pour toutes éditions\n"
 "  -d --debug                    afficher la ligne de commande sur stderr\n"
+"  @<fichier>                    lire les options à partir du <fichier>\n"
 "   -h --help                    afficher l'aide-mémoire\n"
 "   -V --version                 afficher le nom et la version du logiciel\n"
 
-#: nlmconv.c:1140
+#: nlmconv.c:1143
 #, c-format
 msgid "support not compiled in for %s"
 msgstr "soutien non compilé pour %s"
 
-#: nlmconv.c:1177
+#: nlmconv.c:1180
 msgid "make section"
 msgstr "section make"
 
-#: nlmconv.c:1191
+#: nlmconv.c:1194
 msgid "set section size"
 msgstr "initialisation de la taille de la section"
 
-#: nlmconv.c:1197
+#: nlmconv.c:1200
 msgid "set section alignment"
 msgstr "initialisation de l'alignement de la section"
 
-#: nlmconv.c:1201
+#: nlmconv.c:1204
 msgid "set section flags"
 msgstr "initialisation des fanions de la section"
 
-#: nlmconv.c:1212
+#: nlmconv.c:1215
 msgid "set .nlmsections size"
 msgstr "initialisation de la taille de .nlmsections"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
 msgid "set .nlmsection contents"
 msgstr "initialisation du contenu de .nlmsection"
 
-#: nlmconv.c:1794
+#: nlmconv.c:1797
 msgid "stub section sizes"
 msgstr "taille de la section stub"
 
-#: nlmconv.c:1841
+#: nlmconv.c:1844
 msgid "writing stub"
 msgstr "écriture du stub"
 
-#: nlmconv.c:1925
+#: nlmconv.c:1928
 #, c-format
 msgid "unresolved PC relative reloc against %s"
 msgstr "relocalisation relative sur PC non résolue de %s"
 
-#: nlmconv.c:1989
+#: nlmconv.c:1992
 #, c-format
 msgid "overflow when adjusting relocation against %s"
 msgstr "débordement lors de la relocalisation de %s"
 
-#: nlmconv.c:2116
+#: nlmconv.c:2119
 #, c-format
 msgid "%s: execution of %s failed: "
 msgstr "%s: échec d'exécution de %s :"
 
-#: nlmconv.c:2131
+#: nlmconv.c:2134
 #, c-format
 msgid "Execution of %s failed"
 msgstr "Échec d'exécution de %s"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
 msgid "Usage: %s [option(s)] [file(s)]\n"
 msgstr "Usage: %s [options] fichiers\n"
@@ -1630,6 +2361,7 @@
 "      --target=BFDNAME   Specify the target object format as BFDNAME\n"
 "  -u, --undefined-only   Display only undefined symbols\n"
 "  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
 "  -h, --help             Display this information\n"
 "  -V, --version          Display this program's version number\n"
 "\n"
@@ -1665,41 +2397,42 @@
 "  -u, --undefined-only   afficher seulement les symboles indéfinis\n"
 "  -V, --version          afficher le nom et la version du logiciel\n"
 "  -X 32_64               (ignoré)\n"
+"  @<fichier>             lire les options à partir du <fichier>\n"
 "  -h --help              afficher l'aide-mémoire\n"
 "  -V --version           afficher le nom et la version du logiciel\n"
 "\n"
 
-#: nm.c:262 objdump.c:232
+#: nm.c:263 objdump.c:236
 #, c-format
 msgid "Report bugs to %s.\n"
 msgstr "Rapporter toutes anomalies à %s\n"
 
-#: nm.c:294
+#: nm.c:295
 #, c-format
 msgid "%s: invalid radix"
 msgstr "%s: base numérique invalide"
 
-#: nm.c:318
+#: nm.c:319
 #, c-format
 msgid "%s: invalid output format"
 msgstr "%s: format de sortie invalide"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
 msgid "<processor specific>: %d"
 msgstr "<spécificités du processor>: %d"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: nm.c:342 readelf.c:6626 readelf.c:6671
 #, c-format
 msgid "<OS specific>: %d"
 msgstr "<spécificités du système d'exploitation>: %d"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: nm.c:344 readelf.c:6628 readelf.c:6674
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<inconnu>: %d"
 
-#: nm.c:380
+#: nm.c:381
 #, c-format
 msgid ""
 "\n"
@@ -1708,7 +2441,7 @@
 "\n"
 "Indexe de l'archive:\n"
 
-#: nm.c:1225
+#: nm.c:1227
 #, c-format
 msgid ""
 "\n"
@@ -1721,7 +2454,7 @@
 "Symboles indéfinis dans %s:\n"
 "\n"
 
-#: nm.c:1227
+#: nm.c:1229
 #, c-format
 msgid ""
 "\n"
@@ -1734,7 +2467,7 @@
 "Symboles de %s:\n"
 "\n"
 
-#: nm.c:1229 nm.c:1280
+#: nm.c:1231 nm.c:1282
 #, c-format
 msgid ""
 "Name                  Value   Class        Type         Size     Line  Section\n"
@@ -1743,7 +2476,7 @@
 "Nom                   Valeur  Classe       Type         Taille   Ligne Section\n"
 "\n"
 
-#: nm.c:1232 nm.c:1283
+#: nm.c:1234 nm.c:1285
 #, c-format
 msgid ""
 "Name                  Value           Class        Type         Size             Line  Section\n"
@@ -1752,7 +2485,7 @@
 "Nom                   Valeur          Classe       Type         Taille           Ligne Section\n"
 "\n"
 
-#: nm.c:1276
+#: nm.c:1278
 #, c-format
 msgid ""
 "\n"
@@ -1765,7 +2498,7 @@
 "Symboles indéfinis dans %s[%s]:\n"
 "\n"
 
-#: nm.c:1278
+#: nm.c:1280
 #, c-format
 msgid ""
 "\n"
@@ -1778,39 +2511,39 @@
 "Symboles de %s[%s]:\n"
 "\n"
 
-#: nm.c:1580
+#: nm.c:1584
 msgid "Only -X 32_64 is supported"
 msgstr "Seul -X 32_64 est supporté"
 
-#: nm.c:1600
+#: nm.c:1604
 msgid "Using the --size-sort and --undefined-only options together"
 msgstr "Utiliser ensemble les options --size-sort et --undefined-only"
 
-#: nm.c:1601
+#: nm.c:1605
 msgid "will produce no output, since undefined symbols have no size."
 msgstr "ne produira aucune sortie étant donnée que les symboles n'ont aucune taille."
 
-#: nm.c:1629
+#: nm.c:1633
 #, c-format
 msgid "data size %ld"
 msgstr "taille des donnée %ld"
 
-#: objcopy.c:396 srconv.c:1721
+#: objcopy.c:401 srconv.c:1721
 #, c-format
 msgid "Usage: %s [option(s)] in-file [out-file]\n"
 msgstr "Usage: %s [options] fichier_d_entrée [fichier_de_sortie]\n"
 
-#: objcopy.c:397
+#: objcopy.c:402
 #, c-format
 msgid " Copies a binary file, possibly transforming it in the process\n"
 msgstr "Copier un fichier binaire, possiblement le transformer durant le traitement\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: objcopy.c:403 objcopy.c:495
 #, c-format
 msgid " The options are:\n"
 msgstr " Les options sont:\n"
 
-#: objcopy.c:399
+#: objcopy.c:404
 #, c-format
 msgid ""
 "  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
@@ -1830,8 +2563,9 @@
 "                                   Do not copy symbol <name> unless needed by\n"
 "                                     relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
 "  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
 "  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
 "  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
 "     --weaken                      Force all global symbols to be marked as weak\n"
@@ -1872,6 +2606,7 @@
 "                                     in <file>\n"
 "     --keep-symbols <file>         -K for all symbols listed in <file>\n"
 "     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
 "     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
 "     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
 "     --alt-machine-code <index>    Use alternate machine code for output\n"
@@ -1885,6 +2620,7 @@
 "                                   Add <prefix> to start of every allocatable\n"
 "                                     section name\n"
 "  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
 "  -V --version                     Display this program's version number\n"
 "  -h --help                        Display this output\n"
 "     --info                        List object formats & architectures supported\n"
@@ -1948,20 +2684,21 @@
 "     --weaken-symbols <fichier>    -W pour tous les symboles listés dans le <fichier>\n"
 "     --alt-machine-code <index>    Use alternate machine code for output\n"
 "  -v --verbose                     afficher la liste de tous les objets modifiés\n"
+"  @<fichier>                       lire les options à partir du <fichier>\n"
 "  -V --version                     afficher le nom et la version du logiciel\n"
 "  -h --help                        afficher l'aide-mémoire\n"
 
-#: objcopy.c:485
+#: objcopy.c:493
 #, c-format
 msgid "Usage: %s <option(s)> in-file(s)\n"
 msgstr "Usage: %s <options> fichiers\n"
 
-#: objcopy.c:486
+#: objcopy.c:494
 #, c-format
 msgid " Removes symbols and sections from files\n"
 msgstr "Enlever les symboles et les sections des fichiers\n"
 
-#: objcopy.c:488
+#: objcopy.c:496
 #, c-format
 msgid ""
 "  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
@@ -1974,7 +2711,7 @@
 "     --strip-unneeded              Remove all symbols not needed by relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
 "  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
 "  -w --wildcard                    Permit wildcard in symbol comparison\n"
 "  -x --discard-all                 Remove all non-global symbols\n"
 "  -X --discard-locals              Remove any compiler-generated symbols\n"
@@ -1995,6 +2732,7 @@
 "     --only-keep-debug             retirer tous les symboles sauf les informations de mise au point\n"
 "  -N --strip-symbol <nom>          ne pas copier le symbole <nom>\n"
 "  -K --keep-symbol <nom>           copier seulement le symbole <nom>\n"
+"  -w --wildcard                    permettre tous les symboles dans la comparaison\n"
 "  -x --discard-all                 retirer tous les symboles qui ne sont pas globaux\n"
 "  -X --discard-locals              retirer tous les symboles qui sont générés par le compilateur\n"
 "  -v --verbose                     afficher tous les fichiers objets modifiés\n"
@@ -2003,248 +2741,259 @@
 "     --info                        lister le format des objets et les architectures supportés\n"
 "  -o <fichier>                     placer la sortie élaguée dans le <fichier>\n"
 
-#: objcopy.c:560
+#: objcopy.c:568
 #, c-format
 msgid "unrecognized section flag `%s'"
 msgstr "fanion de section non reconnnu « %s »"
 
-#: objcopy.c:561
+#: objcopy.c:569
 #, c-format
 msgid "supported flags: %s"
 msgstr "fanions supportés: %s"
 
-#: objcopy.c:638
+#: objcopy.c:646
 #, c-format
 msgid "cannot open '%s': %s"
 msgstr "ne peut ouvrir: « %s »: %s"
 
-#: objcopy.c:641 objcopy.c:2629
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
 msgid "%s: fread failed"
 msgstr "%s: fread en échec"
 
-#: objcopy.c:714
+#: objcopy.c:722
 #, c-format
 msgid "%s:%d: Ignoring rubbish found on this line"
 msgstr "%s:%d: rebus ignoré trouvé sur la ligne"
 
-#: objcopy.c:976
+#: objcopy.c:996
 #, c-format
 msgid "%s: Multiple redefinition of symbol \"%s\""
 msgstr "%s: re-définition multiples du symbole « %s »"
 
-#: objcopy.c:980
+#: objcopy.c:1000
 #, c-format
 msgid "%s: Symbol \"%s\" is target of more than one redefinition"
 msgstr "%s: symbole « %s » cible plus d'une re-définition"
 
-#: objcopy.c:1008
+#: objcopy.c:1028
 #, c-format
 msgid "couldn't open symbol redefinition file %s (error: %s)"
 msgstr "ne peut ouvrir le fichier de redéfinition de symboles %s (erreur: %s)"
 
-#: objcopy.c:1086
+#: objcopy.c:1106
 #, c-format
 msgid "%s:%d: garbage found at end of line"
 msgstr "%s:%d: rebus à la fin de la ligne"
 
-#: objcopy.c:1089
+#: objcopy.c:1109
 #, c-format
 msgid "%s:%d: missing new symbol name"
 msgstr "%s:%d: nom du nouveau symbole manquant"
 
-#: objcopy.c:1099
+#: objcopy.c:1119
 #, c-format
 msgid "%s:%d: premature end of file"
 msgstr "%s:%d: fin de fichier prématuré"
 
-#: objcopy.c:1124
+#: objcopy.c:1145
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat() a retourné une taille négative for « %s »"
+
+#: objcopy.c:1157
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copier à partir de « %s » [inconnu] vers « %s » [inconnu]\n"
+
+#: objcopy.c:1212
 msgid "Unable to change endianness of input file(s)"
 msgstr "Incapable de changer de systèmes d'encodage (poids fort- faible) des fichiers d'entrée"
 
-#: objcopy.c:1133
+#: objcopy.c:1221
 #, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "copie de %s(%s) vers %s(%s)\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copier de « %s » [%s] vers « %s » [%s]\n"
 
-#: objcopy.c:1170
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "Incapable de reconnaître le format du fichier d'entrée %s"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Incapable de reconnaître le format du fichier d'entrée « %s »"
 
-#: objcopy.c:1174
+#: objcopy.c:1261
 #, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "AVERTISSEMENT: fichier de sortie ne peut représenter l'architecture %s"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "AVERTISSEMENT: fichier de sortie ne peut représenter l'architecture « %s »"
 
-#: objcopy.c:1211
+#: objcopy.c:1305
 #, c-format
 msgid "can't create section `%s': %s"
 msgstr "Ne peut créer la section « %s »: %s"
 
-#: objcopy.c:1277
+#: objcopy.c:1356
 msgid "there are no sections to be copied!"
 msgstr "Il n'y a pas de section à copier!"
 
-#: objcopy.c:1323
+#: objcopy.c:1402
 #, c-format
 msgid "Can't fill gap after %s: %s"
 msgstr "Ne peut remplir le vide après %s: %s"
 
-#: objcopy.c:1348
+#: objcopy.c:1427
 #, c-format
 msgid "Can't add padding to %s: %s"
 msgstr "Ne peut ajouter de remplissage pour %s: %s"
 
-#: objcopy.c:1514
+#: objcopy.c:1594
 #, c-format
 msgid "%s: error copying private BFD data: %s"
 msgstr "%s: erreur de copie des données privées BFD: %s"
 
-#: objcopy.c:1525
+#: objcopy.c:1605
 msgid "unknown alternate machine code, ignored"
 msgstr "code machine alternatif inconnu, ignoré"
 
-#: objcopy.c:1555 objcopy.c:1585
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
 msgid "cannot mkdir %s for archive copying (error: %s)"
 msgstr "ne peut créer le répertoire mkdir %s pour copie d'archivage (erreur: %s)"
 
-#: objcopy.c:1790
+#: objcopy.c:1787
 #, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "ERREUR: le fichier d'entrée « %s » est vide"
+
+#: objcopy.c:1889
+#, c-format
 msgid "Multiple renames of section %s"
 msgstr "Changement multiples de noms de la section %s"
 
-#: objcopy.c:1841
+#: objcopy.c:1940
 msgid "private header data"
 msgstr "données d'en-tête privée"
 
-#: objcopy.c:1849
+#: objcopy.c:1948
 #, c-format
 msgid "%s: error in %s: %s"
-msgstr "%s: erreur dans %s: %s"
+msgstr "%s: ERREUR dans %s: %s"
 
-#: objcopy.c:1903
+#: objcopy.c:2007
 msgid "making"
 msgstr "génération"
 
-#: objcopy.c:1912
+#: objcopy.c:2022
 msgid "size"
 msgstr "taille"
 
-#: objcopy.c:1926
+#: objcopy.c:2036
 msgid "vma"
 msgstr "vma"
 
-#: objcopy.c:1951
+#: objcopy.c:2061
 msgid "alignment"
 msgstr "alignement"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "fanions"
-
-#: objcopy.c:1988
+#: objcopy.c:2083
 msgid "private data"
 msgstr "données privées"
 
-#: objcopy.c:1996
+#: objcopy.c:2091
 #, c-format
 msgid "%s: section `%s': error in %s: %s"
-msgstr "%s: section « %s »: erreur dans %s: %s"
+msgstr "%s: section « %s »: ERREUR dans %s: %s"
 
-#: objcopy.c:2274
+#: objcopy.c:2363
 #, c-format
 msgid "%s: can't create debugging section: %s"
 msgstr "%s: ne peut créer la section de débug: %s"
 
-#: objcopy.c:2288
+#: objcopy.c:2377
 #, c-format
 msgid "%s: can't set debugging section contents: %s"
 msgstr "%s: ne peut initialiser le contenu de la section de débug: %s"
 
-#: objcopy.c:2297
+#: objcopy.c:2386
 #, c-format
 msgid "%s: don't know how to write debugging information for %s"
 msgstr "%s: ne sait comment écrire les informations de débug de %s"
 
-#: objcopy.c:2472
+#: objcopy.c:2561
 msgid "byte number must be non-negative"
 msgstr "le nombre d'octet ne peut être négatif"
 
-#: objcopy.c:2482
+#: objcopy.c:2571
 msgid "interleave must be positive"
 msgstr "l'intercalage doit être positif"
 
-#: objcopy.c:2502 objcopy.c:2510
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
 msgid "%s both copied and removed"
 msgstr "%s les deux doivent être copiés et enlevés"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
 #, c-format
 msgid "bad format for %s"
 msgstr "mauvais format pour %s"
 
-#: objcopy.c:2624
+#: objcopy.c:2717
 #, c-format
 msgid "cannot open: %s: %s"
 msgstr "ne peut ouvrir: %s: %s"
 
-#: objcopy.c:2743
+#: objcopy.c:2836
 #, c-format
 msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
 msgstr "AVERTISSEMENT: réduction du remplissage de 0x%s à 0x%x"
 
-#: objcopy.c:2903
+#: objcopy.c:3000
 msgid "alternate machine code index must be positive"
 msgstr "le code alternatif d'index du code machine doit être positif"
 
-#: objcopy.c:2961
+#: objcopy.c:3058
 msgid "byte number must be less than interleave"
 msgstr "le nombre d'octets ne peut être plus petit que celui de l'intercalage"
 
-#: objcopy.c:2991
+#: objcopy.c:3088
 #, c-format
 msgid "architecture %s unknown"
 msgstr "architecture %s inconnue"
 
-#: objcopy.c:2995
+#: objcopy.c:3092
 msgid "Warning: input target 'binary' required for binary architecture parameter."
 msgstr "AVERTISSEMENT: la cible d'entrée « binary » requiert un paramètre pour une architecture binaire."
 
-#: objcopy.c:2996
+#: objcopy.c:3093
 #, c-format
 msgid " Argument %s ignored"
 msgstr " Argument %s ignoré"
 
-#: objcopy.c:3002
+#: objcopy.c:3099
 #, c-format
 msgid "warning: could not locate '%s'.  System error message: %s"
 msgstr "AVERTISSEMENT: ne peut localiser '%s'. Message d'erreur système: %s"
 
-#: objcopy.c:3042 objcopy.c:3056
+#: objcopy.c:3141 objcopy.c:3155
 #, c-format
 msgid "%s %s%c0x%s never used"
 msgstr "%s %s%c0x%s jamais utilisé"
 
-#: objdump.c:176
+#: objdump.c:178
 #, c-format
 msgid "Usage: %s <option(s)> <file(s)>\n"
 msgstr "Usage: %s <options> <fichiers>\n"
 
-#: objdump.c:177
+#: objdump.c:179
 #, c-format
 msgid " Display information from object <file(s)>.\n"
 msgstr "Afficher les informations depuis les <fichiers> objet.\n"
 
-#: objdump.c:178
+#: objdump.c:180
 #, c-format
 msgid " At least one of the following switches must be given:\n"
 msgstr "Au moins un des commutateurs suivants doit être fourni:\n"
 
-#: objdump.c:179
+#: objdump.c:181
 #, c-format
 msgid ""
 "  -a, --archive-headers    Display archive header information\n"
@@ -2259,10 +3008,12 @@
 "  -g, --debugging          Display debug information in object file\n"
 "  -e, --debugging-tags     Display debug information using ctags style\n"
 "  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
 "  -t, --syms               Display the contents of the symbol table(s)\n"
 "  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
 "  -r, --reloc              Display the relocation entries in the file\n"
 "  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
 "  -v, --version            Display this program's version number\n"
 "  -i, --info               List object formats and architectures supported\n"
 "  -H, --help               Display this information\n"
@@ -2283,11 +3034,12 @@
 "  -T, --dynamic-syms       afficher le contenu de la table dynamique de symboles\n"
 "  -r, --reloc              afficher les entrées de relocalisation du fichier\n"
 "  -R, --dynamic-reloc      afficher les entrées dynamiques de relocalisation du fichier\n"
+"  @<fichier>               lire les options à partir du <fichier>\n"
 "  -V, --version            afficher le nom et la version du logiciel\n"
 "  -i, --info               afficher les formats objets et les architectures supportées\n"
 "  -H, --help               afficher cette information\n"
 
-#: objdump.c:202
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
@@ -2296,7 +3048,7 @@
 "\n"
 " Les commutateurs suivants sont optionnels:\n"
 
-#: objdump.c:203
+#: objdump.c:207
 #, c-format
 msgid ""
 "  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
@@ -2345,66 +3097,75 @@
 "      --special-syms             inclure les symboles spéciaux dans la vidange de symboles\n"
 "\n"
 
-#: objdump.c:378
+#: objdump.c:389
 #, c-format
 msgid "Sections:\n"
 msgstr "Sections:\n"
 
-#: objdump.c:381 objdump.c:385
+#: objdump.c:392 objdump.c:396
 #, c-format
 msgid "Idx Name          Size      VMA       LMA       File off  Algn"
 msgstr "Idx Nom           Taille    VMA       LMA       Fich off  Algn"
 
-#: objdump.c:387
+#: objdump.c:398
 #, c-format
 msgid "Idx Name          Size      VMA               LMA               File off  Algn"
 msgstr "Idx Nom           Taille    VMA               LMA               Fich off  Algn"
 
-#: objdump.c:391
+#: objdump.c:402
 #, c-format
 msgid "  Flags"
 msgstr "  Fanions"
 
-#: objdump.c:393
+#: objdump.c:404
 #, c-format
 msgid "  Pg"
 msgstr "  Pg"
 
-#: objdump.c:436
+#: objdump.c:447
 #, c-format
 msgid "%s: not a dynamic object"
 msgstr "%s: n'est pas un objet dynamique"
 
-#: objdump.c:1722
+#: objdump.c:1735
 #, c-format
 msgid "Disassembly of section %s:\n"
 msgstr "Déassemblage de la section %s:\n"
 
-#: objdump.c:1884
+#: objdump.c:1897
 #, c-format
 msgid "Can't use supplied machine %s"
 msgstr "Ne peut utiliser la machine %s"
 
-#: objdump.c:1903
+#: objdump.c:1916
 #, c-format
 msgid "Can't disassemble for architecture %s\n"
 msgstr "Ne peut déassembler pour l'architecture %s\n"
 
-#: objdump.c:1973
+#: objdump.c:2006
 #, c-format
 msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Ne peut obtenir le contenu de la section « %s ».\n"
+
+#: objdump.c:2143
+#, c-format
+msgid ""
 "No %s section present\n"
 "\n"
 msgstr ""
 "Aucune section %s présente\n"
 "\n"
 
-#: objdump.c:1982
+#: objdump.c:2152
 #, c-format
 msgid "Reading %s section of %s failed: %s"
 msgstr "Lecture de la section %s de %s a échouée: %s"
 
-#: objdump.c:2026
+#: objdump.c:2196
 #, c-format
 msgid ""
 "Contents of %s section:\n"
@@ -2413,17 +3174,17 @@
 "Contenu de la section %s:\n"
 "\n"
 
-#: objdump.c:2153
+#: objdump.c:2323
 #, c-format
 msgid "architecture: %s, "
 msgstr "architecture: %s, "
 
-#: objdump.c:2156
+#: objdump.c:2326
 #, c-format
 msgid "flags 0x%08x:\n"
 msgstr "fanions 0x%08x:\n"
 
-#: objdump.c:2170
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
@@ -2432,27 +3193,27 @@
 "\n"
 "adresse de départ 0x"
 
-#: objdump.c:2210
+#: objdump.c:2380
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Contenu de la section %s:\n"
 
-#: objdump.c:2335
+#: objdump.c:2505
 #, c-format
 msgid "no symbols\n"
 msgstr "aucun symbole\n"
 
-#: objdump.c:2342
+#: objdump.c:2512
 #, c-format
 msgid "no information for symbol number %ld\n"
 msgstr "pas d'information pour le symbol numéro %ld\n"
 
-#: objdump.c:2345
+#: objdump.c:2515
 #, c-format
 msgid "could not determine the type of symbol number %ld\n"
 msgstr "incapable de déterminer le type du symbole numéro %ld\n"
 
-#: objdump.c:2611
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
@@ -2461,21 +3222,21 @@
 "\n"
 "%s:     format de fichier %s\n"
 
-#: objdump.c:2662
+#: objdump.c:2845
 #, c-format
 msgid "%s: printing debugging information failed"
 msgstr "%s: échec d'affichage des information de débug"
 
-#: objdump.c:2753
+#: objdump.c:2936
 #, c-format
 msgid "In archive %s:\n"
 msgstr "Dans l'archive %s:\n"
 
-#: objdump.c:2873
+#: objdump.c:3058
 msgid "unrecognized -E option"
 msgstr "option -E non reconnue"
 
-#: objdump.c:2884
+#: objdump.c:3069
 #, c-format
 msgid "unrecognized --endian type `%s'"
 msgstr "type non reconnu --endian « %s »"
@@ -2515,178 +3276,168 @@
 msgid "Last stabs entries before error:\n"
 msgstr "Dernière entrées à inclure avant erreur:\n"
 
-#: readelf.c:272
+#: readelf.c:264
 #, c-format
-msgid "%s: Error: "
-msgstr "%s: ERREUR: "
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Incapable de repérer 0x%lx pour %s\n"
 
-#: readelf.c:283
+#: readelf.c:279
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: AVERTISSEMENT: "
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Mémoire épuisée lors de l'allocation de 0x%lx octets pour %s\n"
 
-#: readelf.c:298
+#: readelf.c:289
 #, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "Incapable de repérer 0x%x pour %s\n"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Incapable de lire 0x%lx octets de %s\n"
 
-#: readelf.c:310
-#, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "Mémoire épuisée lors de l'allocation de 0x%x octets pour %s\n"
-
-#: readelf.c:318
-#, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "Incapable de lire 0x%x octets de %s\n"
-
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
-#, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "Taille de données non traitées: %d\n"
-
-#: readelf.c:752
+#: readelf.c:623
 msgid "Don't know about relocations on this machine architecture\n"
 msgstr "Ne connaît pas de méthode pour la relocalisation sur l'architecture de cette machine\n"
 
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
 msgid "relocs"
 msgstr "relocalisations"
 
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
 msgid "out of memory parsing relocs"
 msgstr "Mémoire épuisée lors de l'analyse syntaxique des relocalisations"
 
-#: readelf.c:933
+#: readelf.c:808
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
 msgstr " Décalage   Info    Type                Val.-sym.   Noms-symb.    + Addenda\n"
 
-#: readelf.c:935
+#: readelf.c:810
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
 msgstr " Décalage   Info    Type            Val.-sym   Noms-symb + Addenda\n"
 
-#: readelf.c:940
+#: readelf.c:815
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
 msgstr " Décalage   Info    Type                Val.-sym.   Noms-symboles\n"
 
-#: readelf.c:942
+#: readelf.c:817
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
 msgstr " Décalage   Info    Type            Val.-sym   Noms-symboles\n"
 
-#: readelf.c:950
+#: readelf.c:825
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
 msgstr "    Décalage           Info             Type               Valeurs symbols Noms symboles + Addenda\n"
 
-#: readelf.c:952
+#: readelf.c:827
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
 msgstr "  Décalage        Info           Type           Val.-symboles Noms-symb.+ Addenda\n"
 
-#: readelf.c:957
+#: readelf.c:832
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
 msgstr "    Décalage           Info             Type               Valeurs symbols Noms symbols\n"
 
-#: readelf.c:959
+#: readelf.c:834
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
 msgstr "  Décalage        Info           Type           Val.-symboles Noms-symboles\n"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
 msgid "unrecognized: %-7lx"
 msgstr "non reconnue: %-7lx"
 
-#: readelf.c:1295
+#: readelf.c:1154
 #, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<ajout inconnu: %lx>"
+
+#: readelf.c:1210
+#, c-format
 msgid "<string table index: %3ld>"
 msgstr "<chaîne de la table index: %3ld>"
 
-#: readelf.c:1297
+#: readelf.c:1212
 #, c-format
 msgid "<corrupt string table index: %3ld>"
 msgstr "<chaîne corrompu de la table index: %3ld>"
 
-#: readelf.c:1569
+#: readelf.c:1522
 #, c-format
 msgid "Processor Specific: %lx"
 msgstr "Spécificités du processeur: %lx"
 
-#: readelf.c:1588
+#: readelf.c:1543
 #, c-format
 msgid "Operating System specific: %lx"
 msgstr "Spécificités du systèmes d'exploitation: %lx"
 
-#: readelf.c:1592 readelf.c:2370
+#: readelf.c:1547 readelf.c:2349
 #, c-format
 msgid "<unknown>: %lx"
 msgstr "<inconnu>: %lx"
 
-#: readelf.c:1605
+#: readelf.c:1560
 msgid "NONE (None)"
 msgstr "NONE (Aucun)"
 
-#: readelf.c:1606
+#: readelf.c:1561
 msgid "REL (Relocatable file)"
 msgstr "REL (Fichier de relocalisation)"
 
-#: readelf.c:1607
+#: readelf.c:1562
 msgid "EXEC (Executable file)"
 msgstr "EXEC (fichier exécutable)"
 
-#: readelf.c:1608
+#: readelf.c:1563
 msgid "DYN (Shared object file)"
 msgstr "DYN (fichier objet partagé)"
 
-#: readelf.c:1609
+#: readelf.c:1564
 msgid "CORE (Core file)"
 msgstr "CORE (fichier core)"
 
-#: readelf.c:1613
+#: readelf.c:1568
 #, c-format
 msgid "Processor Specific: (%x)"
 msgstr "Spécificités du processor: (%x)"
 
-#: readelf.c:1615
+#: readelf.c:1570
 #, c-format
 msgid "OS Specific: (%x)"
 msgstr "Spécificités du système d'exploitation: (%x)"
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
 msgid "<unknown>: %x"
 msgstr "<inconnu>: %x"
 
-#: readelf.c:1629
+#: readelf.c:1584
 msgid "None"
 msgstr "Aucun"
 
-#: readelf.c:2229
+#: readelf.c:2186
 msgid "Standalone App"
 msgstr "Tache autonome"
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
 msgid "<unknown: %x>"
 msgstr "<inconnu: %x>"
 
-#: readelf.c:2597
+#: readelf.c:2586
 #, c-format
 msgid "Usage: readelf <option(s)> elf-file(s)\n"
 msgstr "Usage: readelf <options> fichiers-elf\n"
 
-#: readelf.c:2598
+#: readelf.c:2587
 #, c-format
 msgid " Display information about the contents of ELF format files\n"
 msgstr "Afficher les informations à propos du contenu du format des fichiers ELF\n"
 
-#: readelf.c:2599
+#: readelf.c:2588
 #, c-format
 msgid ""
 " Options are:\n"
@@ -2697,6 +3448,7 @@
 "  -S --section-headers   Display the sections' header\n"
 "     --sections          An alias for --section-headers\n"
 "  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
 "  -e --headers           Equivalent to: -h -l -S\n"
 "  -s --syms              Display the symbol table\n"
 "      --symbols          An alias for --syms\n"
@@ -2720,6 +3472,7 @@
 "  -S --section-headers   afficher les en-têtes des sections\n"
 "     --sections          un alias pour --section-headers\n"
 "  -g --section-groups    afficher les groupes de section\n"
+"  -t --section-details   afficher les détails de la section\n"
 "  -e --headers           équivalent à: -h -l -S\n"
 "  -s --syms              afficher la table des symboles\n"
 "      --symbols          un alias pour --syms\n"
@@ -2736,7 +3489,7 @@
 "     --debug-dump[=liGne,=info,=abrév.,=nom-public,=étendue,=macro,=trames,=chaîne,=localisation]\n"
 "                         afficher le contenu des sections débug DWARF2\n"
 
-#: readelf.c:2622
+#: readelf.c:2612
 #, c-format
 msgid ""
 "  -i --instruction-dump=<number>\n"
@@ -2745,109 +3498,111 @@
 "  -i --instruction-dump=<numéro>\n"
 "                         déassembler le contenu de la section <numéro>\n"
 
-#: readelf.c:2626
+#: readelf.c:2616
 #, c-format
 msgid ""
 "  -I --histogram         Display histogram of bucket list lengths\n"
 "  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
 "  -H --help              Display this information\n"
 "  -v --version           Display the version number of readelf\n"
 msgstr ""
 "  -I --histogram         afficher l'histogramme des bacs selon la longueur de la liste\n"
 "  -W --wide              permettre d'afficher plus de 80 caractères\n"
+"  @<fichier>             lire les options à partir du <fichier>\n"
 "  -H --help              afficher l'aide-mémoire\n"
 "  -V --version           afficher le nom et la version du logiciel\n"
 
-#: readelf.c:2651 readelf.c:12118
+#: readelf.c:2642 readelf.c:9180
 msgid "Out of memory allocating dump request table."
 msgstr "Mémoire épuisée allocation d'une table pour requêtes de vidange"
 
-#: readelf.c:2820 readelf.c:2888
+#: readelf.c:2816 readelf.c:2884
 #, c-format
 msgid "Unrecognized debug option '%s'\n"
 msgstr "Option de débug non reconnue « %s »\n"
 
-#: readelf.c:2922
+#: readelf.c:2918
 #, c-format
 msgid "Invalid option '-%c'\n"
 msgstr "Option invalide '-%c»\n"
 
-#: readelf.c:2936
+#: readelf.c:2932
 msgid "Nothing to do.\n"
 msgstr "Rien à faire.\n"
 
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
 msgid "none"
 msgstr "aucun"
 
-#: readelf.c:2965
+#: readelf.c:2961
 msgid "2's complement, little endian"
 msgstr "complément à 2, système à octets de poids faible d'abord (little endian)"
 
-#: readelf.c:2966
+#: readelf.c:2962
 msgid "2's complement, big endian"
 msgstr "complément à 2, système à octets de poids fort d'abord (big endian)"
 
-#: readelf.c:2984
+#: readelf.c:2980
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "N'est pas un fichier ELF - a les mauvais octets magiques au départ\n"
 
-#: readelf.c:2992
+#: readelf.c:2988
 #, c-format
 msgid "ELF Header:\n"
 msgstr "En-tête ELF:\n"
 
-#: readelf.c:2993
+#: readelf.c:2989
 #, c-format
 msgid "  Magic:   "
 msgstr "  Magique:   "
 
-#: readelf.c:2997
+#: readelf.c:2993
 #, c-format
 msgid "  Class:                             %s\n"
 msgstr "  Classe:                            %s\n"
 
-#: readelf.c:2999
+#: readelf.c:2995
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Données:                          %s\n"
 
-#: readelf.c:3001
+#: readelf.c:2997
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Version:                           %d %s\n"
 
-#: readelf.c:3008
+#: readelf.c:3004
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: readelf.c:3010
+#: readelf.c:3006
 #, c-format
 msgid "  ABI Version:                       %d\n"
 msgstr "  Version ABI:                       %d\n"
 
-#: readelf.c:3012
+#: readelf.c:3008
 #, c-format
 msgid "  Type:                              %s\n"
 msgstr "  Type:                              %s\n"
 
-#: readelf.c:3014
+#: readelf.c:3010
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Machine:                           %s\n"
 
-#: readelf.c:3016
+#: readelf.c:3012
 #, c-format
 msgid "  Version:                           0x%lx\n"
 msgstr "  Version:                           0x%lx\n"
 
-#: readelf.c:3019
+#: readelf.c:3015
 #, c-format
 msgid "  Entry point address:               "
 msgstr "  Adresse du point d'entrée:         "
 
-#: readelf.c:3021
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
@@ -2856,7 +3611,7 @@
 "\n"
 "  Début des en-têtes de programme:   "
 
-#: readelf.c:3023
+#: readelf.c:3019
 #, c-format
 msgid ""
 " (bytes into file)\n"
@@ -2865,58 +3620,57 @@
 " (octets dans le fichier)\n"
 "  Début des en-têtes de section:          "
 
-#: readelf.c:3025
+#: readelf.c:3021
 #, c-format
 msgid " (bytes into file)\n"
 msgstr " (octets dans le fichier)\n"
 
-#: readelf.c:3027
+#: readelf.c:3023
 #, c-format
 msgid "  Flags:                             0x%lx%s\n"
 msgstr "  Fanions:                           0x%lx%s\n"
 
-#: readelf.c:3030
+#: readelf.c:3026
 #, c-format
 msgid "  Size of this header:               %ld (bytes)\n"
 msgstr "  Taille de cet en-tête:             %ld (bytes)\n"
 
-#: readelf.c:3032
+#: readelf.c:3028
 #, c-format
 msgid "  Size of program headers:           %ld (bytes)\n"
 msgstr "  Taille de l'en-tête du programme:  %ld (bytes)\n"
 
-#: readelf.c:3034
+#: readelf.c:3030
 #, c-format
 msgid "  Number of program headers:         %ld\n"
 msgstr "  Nombre d'en-tête du programme:     %ld\n"
 
-#: readelf.c:3036
+#: readelf.c:3032
 #, c-format
 msgid "  Size of section headers:           %ld (bytes)\n"
 msgstr "  Taille des en-têtes de section:    %ld (bytes)\n"
 
-#: readelf.c:3038
+#: readelf.c:3034
 #, c-format
 msgid "  Number of section headers:         %ld"
 msgstr "  Nombre d'en-têtes de section:      %ld"
 
-#: readelf.c:3043
+#: readelf.c:3039
 #, c-format
 msgid "  Section header string table index: %ld"
 msgstr "  Table d'indexes des chaînes d'en-tête de section: %ld"
 
-#: readelf.c:3074 readelf.c:3107
+#: readelf.c:3070 readelf.c:3103
 msgid "program headers"
 msgstr "En-tête de programme"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
 msgid "Out of memory\n"
 msgstr "Mémoire épuisée\n"
 
-#: readelf.c:3172
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
@@ -2925,7 +3679,7 @@
 "\n"
 "Il n'y a pas d'en-têtes de programme dans ce fichier.\n"
 
-#: readelf.c:3178
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
@@ -2934,12 +3688,12 @@
 "\n"
 "Type de fichier ELF est %s\n"
 
-#: readelf.c:3179
+#: readelf.c:3175
 #, c-format
 msgid "Entry point "
 msgstr "Point d'entrée "
 
-#: readelf.c:3181
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
@@ -2948,7 +3702,7 @@
 "\n"
 "Il y a %d en-têtes de programme, débutant à l'adresse de décalage"
 
-#: readelf.c:3193 readelf.c:3195
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
 "\n"
@@ -2957,47 +3711,47 @@
 "\n"
 "En-têtes de programme:\n"
 
-#: readelf.c:3199
+#: readelf.c:3195
 #, c-format
 msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
 msgstr "  Type           Décalage Adr. vir.  Adr.phys.  T.Fich. T.Mém.  Fan Alignement\n"
 
-#: readelf.c:3202
+#: readelf.c:3198
 #, c-format
 msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
 msgstr "  Type           Décalage Adr. vir.          Adr.phys.          T.Fich.  T.Mém.   Fan Alignement\n"
 
-#: readelf.c:3206
+#: readelf.c:3202
 #, c-format
 msgid "  Type           Offset             VirtAddr           PhysAddr\n"
 msgstr "  Type           Décalage           Adr.virt           Adr.phys.\n"
 
-#: readelf.c:3208
+#: readelf.c:3204
 #, c-format
 msgid "                 FileSiz            MemSiz              Flags  Align\n"
 msgstr "                 Taille fichier     Taille mémoire      Fanion Alignement\n"
 
-#: readelf.c:3301
+#: readelf.c:3297
 msgid "more than one dynamic segment\n"
 msgstr "plus d'un segment dynamique\n"
 
-#: readelf.c:3312
+#: readelf.c:3308
 msgid "no .dynamic section in the dynamic segment"
 msgstr "pas de section .dynamic dans le segment dynamique"
 
-#: readelf.c:3321
+#: readelf.c:3317
 msgid "the .dynamic section is not contained within the dynamic segment"
 msgstr "la section .dynamic n'est pas contenu à l'intérieur du segment dynamique"
 
-#: readelf.c:3323
+#: readelf.c:3319
 msgid "the .dynamic section is not the first section in the dynamic segment."
 msgstr "la section .dynamic n'est pas la première section dans le segment dynamique."
 
-#: readelf.c:3337
+#: readelf.c:3333
 msgid "Unable to find program interpreter name\n"
 msgstr "Incapable de repérer le nom de l'interpréteur du programme\n"
 
-#: readelf.c:3344
+#: readelf.c:3340
 #, c-format
 msgid ""
 "\n"
@@ -3006,7 +3760,7 @@
 "\n"
 "      [Réquisition de l'interpréteur de programme: %s]"
 
-#: readelf.c:3356
+#: readelf.c:3352
 #, c-format
 msgid ""
 "\n"
@@ -3015,33 +3769,33 @@
 "\n"
 " Section à la projection de segement:\n"
 
-#: readelf.c:3357
+#: readelf.c:3353
 #, c-format
 msgid "  Segment Sections...\n"
 msgstr "  Sections de segment...\n"
 
-#: readelf.c:3408
+#: readelf.c:3402
 msgid "Cannot interpret virtual addresses without program headers.\n"
 msgstr "Ne peut interpréter les adresses virtuelles sans l'en-tête du programme.\n"
 
-#: readelf.c:3424
+#: readelf.c:3418
 #, c-format
 msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
 msgstr "L'adresse virtuelle 0x%lx ne peut être localisé dans chaque segment PT_LOAD.\n"
 
-#: readelf.c:3438 readelf.c:3479
+#: readelf.c:3432 readelf.c:3473
 msgid "section headers"
 msgstr "En-têtes de section"
 
-#: readelf.c:3523 readelf.c:3586
+#: readelf.c:3517 readelf.c:3580
 msgid "symbols"
 msgstr "symboles"
 
-#: readelf.c:3533 readelf.c:3596
+#: readelf.c:3527 readelf.c:3590
 msgid "symtab shndx"
 msgstr "symtab shndx"
 
-#: readelf.c:3697 readelf.c:3977
+#: readelf.c:3817 readelf.c:4192
 #, c-format
 msgid ""
 "\n"
@@ -3050,33 +3804,38 @@
 "\n"
 "Il n'y a pas de section dans ce fichier.\n"
 
-#: readelf.c:3703
+#: readelf.c:3823
 #, c-format
 msgid "There are %d section headers, starting at offset 0x%lx:\n"
 msgstr "Il y a %d en-têtes de section, débutant à l'adresse de décalage 0x%lx:\n"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
 msgid "string table"
 msgstr "table de chaînes"
 
-#: readelf.c:3765
+#: readelf.c:3881
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "La section %d a une sh_entsize %lx invalide (attendait %lx)\n"
+
+#: readelf.c:3901
 msgid "File contains multiple dynamic symbol tables\n"
 msgstr "Le fichier contient plusieurs tables dynamiques de symboles\n"
 
-#: readelf.c:3777
+#: readelf.c:3914
 msgid "File contains multiple dynamic string tables\n"
 msgstr "Le fichier contient plusieurs tables de chaînes dynamiques\n"
 
-#: readelf.c:3782
+#: readelf.c:3919
 msgid "dynamic strings"
 msgstr "chaînes dynamiques"
 
-#: readelf.c:3789
+#: readelf.c:3926
 msgid "File contains multiple symtab shndx tables\n"
 msgstr "Le fichier contient de multiples tables symboliques shndx\n"
 
-#: readelf.c:3828
+#: readelf.c:3973
 #, c-format
 msgid ""
 "\n"
@@ -3085,7 +3844,7 @@
 "\n"
 "En-têtes de section:\n"
 
-#: readelf.c:3830
+#: readelf.c:3975
 #, c-format
 msgid ""
 "\n"
@@ -3094,28 +3853,58 @@
 "\n"
 "En-têtes de section:\n"
 
-#: readelf.c:3834
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] Nom\n"
+
+#: readelf.c:3982
+#, c-format
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       Type            Adr      Décala.Taille ES   LN Inf Al\n"
+
+#: readelf.c:3986
+#, c-format
 msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [Nr] Nom               Type            Adr      Décala.Taille ES Fan LN Inf Al\n"
 
-#: readelf.c:3837
+#: readelf.c:3993
 #, c-format
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       Type            Adresse          Décala.Taille ES   LN Inf Al\n"
+
+#: readelf.c:3997
+#, c-format
 msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [Nr] Nom               Type            Adr              Décala.Taille ES Fan LN Inf Al\n"
 
-#: readelf.c:3840
+#: readelf.c:4004
 #, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       Type              Adresse          Décalage          Lien\n"
+
+#: readelf.c:4005
+#, c-format
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       Taille            TaillEntré       Info              Alignement\n"
+
+#: readelf.c:4009
+#, c-format
 msgid "  [Nr] Name              Type             Address           Offset\n"
 msgstr "  [Nr] Nom               Type             Adresse           Décalage\n"
 
-#: readelf.c:3841
+#: readelf.c:4010
 #, c-format
 msgid "       Size              EntSize          Flags  Link  Info  Align\n"
 msgstr "       Taille            TaillEntré       Fanion Lien  Info  Alignement\n"
 
-#: readelf.c:3936
+#: readelf.c:4015
 #, c-format
+msgid "       Flags\n"
+msgstr "       Fanions\n"
+
+#: readelf.c:4150
+#, c-format
 msgid ""
 "Key to Flags:\n"
 "  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
@@ -3127,16 +3916,16 @@
 "  I (info), L (ordre des liens), G (groupe), x (inconnu)\n"
 "  O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n"
 
-#: readelf.c:3954
+#: readelf.c:4168
 #, c-format
 msgid "[<unknown>: 0x%x]"
 msgstr "<inconnu>: 0x%x]"
 
-#: readelf.c:3984
+#: readelf.c:4199
 msgid "Section headers are not available!\n"
 msgstr "En-têtes de section ne sont pas disponibles!\n"
 
-#: readelf.c:4008
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
@@ -3145,36 +3934,46 @@
 "\n"
 "Il n'y a pas de groupe de section dans ce fichier.\n"
 
-#: readelf.c:4042
+#: readelf.c:4259
 #, c-format
 msgid "Bad sh_link in group section `%s'\n"
 msgstr "sh_link erroné dans la section de groupe `%s'\n"
 
-#: readelf.c:4061
+#: readelf.c:4278
 #, c-format
 msgid "Bad sh_info in group section `%s'\n"
 msgstr "sh_info erroné dans la section de groupe`%s'\n"
 
-#: readelf.c:4085 readelf.c:6947
+#: readelf.c:4317 readelf.c:7243
 msgid "section data"
 msgstr "données de section"
 
-#: readelf.c:4097
+#: readelf.c:4329
 #, c-format
 msgid "   [Index]    Name\n"
 msgstr "   [Index]    Nom\n"
 
-#: readelf.c:4114
+#: readelf.c:4343
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "section [%5u] est déjà dans le groupe section [%5u]\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "section [%5u] est dans le groupe section [%5u] > que le maximum de la section [%5u]\n"
 
-#: readelf.c:4127
+#: readelf.c:4349
 #, c-format
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "section invalide [%5u] est dans le groupe section [%5u]\n"
+
+#: readelf.c:4359
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "section [%5u] est dans le groupe section [%5u] qui est déjà dans le groupe section [%5u]\n"
+
+#: readelf.c:4372
+#, c-format
 msgid "section 0 in group section [%5u]\n"
 msgstr "section 0 dans le groupe section [%5u]\n"
 
-#: readelf.c:4224
+#: readelf.c:4468
 #, c-format
 msgid ""
 "\n"
@@ -3183,7 +3982,7 @@
 "\n"
 "'%s' section de relocalisation à l'adresse de décalage 0x%lx contient %ld octets:\n"
 
-#: readelf.c:4236
+#: readelf.c:4480
 #, c-format
 msgid ""
 "\n"
@@ -3192,7 +3991,7 @@
 "\n"
 "Il n'y a pas d'informations de relocalisation dynamique dans ce fichier.\n"
 
-#: readelf.c:4260
+#: readelf.c:4504
 #, c-format
 msgid ""
 "\n"
@@ -3201,17 +4000,17 @@
 "\n"
 "Section de relocalisation "
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
 #, c-format
 msgid "'%s'"
 msgstr "« %s »"
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
 msgid " at offset 0x%lx contains %lu entries:\n"
 msgstr " à l'adresse de décalage 0x%lx contient %lu entrées:\n"
 
-#: readelf.c:4308
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
@@ -3220,16 +4019,16 @@
 "\n"
 "Il n'y a pas de relocalisation dans ce fichier.\n"
 
-#: readelf.c:4482 readelf.c:4862
+#: readelf.c:4742 readelf.c:5124
 msgid "unwind table"
 msgstr "table unwind"
 
-#: readelf.c:4540 readelf.c:4959
+#: readelf.c:4801 readelf.c:5214
 #, c-format
 msgid "Skipping unexpected relocation type %s\n"
 msgstr "Escamotage du type de relocalisation inattendue %s\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
@@ -3238,7 +4037,7 @@
 "\n"
 "Il n'y a pas de section unwind dans ce fichier.\n"
 
-#: readelf.c:4661
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
@@ -3247,11 +4046,11 @@
 "\n"
 "N'a pu repérer les infos d'une section unwind pour "
 
-#: readelf.c:4673
+#: readelf.c:4935
 msgid "unwind info"
 msgstr "info unwind"
 
-#: readelf.c:4675 readelf.c:5024
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
@@ -3260,11 +4059,11 @@
 "\n"
 "Section unwind"
 
-#: readelf.c:5228 readelf.c:5272
+#: readelf.c:5491 readelf.c:5535
 msgid "dynamic section"
 msgstr "section dynamique"
 
-#: readelf.c:5349
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
@@ -3273,31 +4072,31 @@
 "\n"
 "Il n'y a pas de section dynamique dans ce fichier.\n"
 
-#: readelf.c:5387
+#: readelf.c:5650
 msgid "Unable to seek to end of file!"
 msgstr "Incapable de repérer la fin du fichier!"
 
-#: readelf.c:5400
+#: readelf.c:5663
 msgid "Unable to determine the number of symbols to load\n"
 msgstr "Incapable de déterminer le nombre de symboles à charger\n"
 
-#: readelf.c:5435
+#: readelf.c:5698
 msgid "Unable to seek to end of file\n"
 msgstr "Incapable de repérer la fin du fichier\n"
 
-#: readelf.c:5442
+#: readelf.c:5705
 msgid "Unable to determine the length of the dynamic string table\n"
 msgstr "Incapable de déterminer la longueur de la table de chaînes dynamiques\n"
 
-#: readelf.c:5447
+#: readelf.c:5710
 msgid "dynamic string table"
 msgstr "table dynamique de chaînes"
 
-#: readelf.c:5482
+#: readelf.c:5745
 msgid "symbol information"
 msgstr "information de symbole"
 
-#: readelf.c:5507
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
@@ -3306,77 +4105,77 @@
 "\n"
 "Section dynamique à l'adresse de décalage 0x%lx contient %u entrées:\n"
 
-#: readelf.c:5510
+#: readelf.c:5773
 #, c-format
 msgid "  Tag        Type                         Name/Value\n"
 msgstr "  Étiquettes Type                         Nom/Valeur\n"
 
-#: readelf.c:5546
+#: readelf.c:5809
 #, c-format
 msgid "Auxiliary library"
 msgstr "Librairie auxiliaire"
 
-#: readelf.c:5550
+#: readelf.c:5813
 #, c-format
 msgid "Filter library"
 msgstr "Librairie de filtre"
 
-#: readelf.c:5554
+#: readelf.c:5817
 #, c-format
 msgid "Configuration file"
 msgstr "Fichier de configuration"
 
-#: readelf.c:5558
+#: readelf.c:5821
 #, c-format
 msgid "Dependency audit library"
 msgstr "Librairie d'audit des dépendances"
 
-#: readelf.c:5562
+#: readelf.c:5825
 #, c-format
 msgid "Audit library"
 msgstr "Librairie des audits"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
 #, c-format
 msgid "Flags:"
 msgstr "Fanions:"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
 #, c-format
 msgid " None\n"
 msgstr "Aucun\n"
 
-#: readelf.c:5759
+#: readelf.c:6022
 #, c-format
 msgid "Shared library: [%s]"
 msgstr "Librairie partagées: [%s]"
 
-#: readelf.c:5762
+#: readelf.c:6025
 #, c-format
 msgid " program interpreter"
 msgstr " programme interpréteur"
 
-#: readelf.c:5766
+#: readelf.c:6029
 #, c-format
 msgid "Library soname: [%s]"
 msgstr "Librairie soname: [%s]"
 
-#: readelf.c:5770
+#: readelf.c:6033
 #, c-format
 msgid "Library rpath: [%s]"
 msgstr "Librairie rpath: [%s]"
 
-#: readelf.c:5774
+#: readelf.c:6037
 #, c-format
 msgid "Library runpath: [%s]"
 msgstr "Librairie runpath:[%s]"
 
-#: readelf.c:5837
+#: readelf.c:6100
 #, c-format
 msgid "Not needed object: [%s]\n"
 msgstr "Objet non nécessaire: [%s]\n"
 
-#: readelf.c:5951
+#: readelf.c:6214
 #, c-format
 msgid ""
 "\n"
@@ -3385,51 +4184,51 @@
 "\n"
 "Section des définitions de version « %s » contient %ld entrées:\n"
 
-#: readelf.c:5954
+#: readelf.c:6217
 #, c-format
 msgid "  Addr: 0x"
 msgstr "  Adr: 0x"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:6219 readelf.c:6426
 #, c-format
 msgid "  Offset: %#08lx  Link: %lx (%s)\n"
 msgstr "  Décalage: %#08lx  Lien: %lx (%s)\n"
 
-#: readelf.c:5961
+#: readelf.c:6228
 msgid "version definition section"
 msgstr "section de définition de version"
 
-#: readelf.c:5987
+#: readelf.c:6254
 #, c-format
 msgid "  %#06x: Rev: %d  Flags: %s"
 msgstr "  %#06x: Rev: %d  Fanions: %s"
 
-#: readelf.c:5990
+#: readelf.c:6257
 #, c-format
 msgid "  Index: %d  Cnt: %d  "
 msgstr "  Index: %d  Compteur: %d  "
 
-#: readelf.c:6001
+#: readelf.c:6268
 #, c-format
 msgid "Name: %s\n"
 msgstr "Nom: %s\n"
 
-#: readelf.c:6003
+#: readelf.c:6270
 #, c-format
 msgid "Name index: %ld\n"
 msgstr "Nom de l'index: %ld\n"
 
-#: readelf.c:6018
+#: readelf.c:6285
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Parent %d: %s\n"
 
-#: readelf.c:6021
+#: readelf.c:6288
 #, c-format
 msgid "  %#06x: Parent %d, name index: %ld\n"
 msgstr "  %#06x: Parent %d, name index: %ld\n"
 
-#: readelf.c:6040
+#: readelf.c:6307
 #, c-format
 msgid ""
 "\n"
@@ -3438,60 +4237,60 @@
 "\n"
 "Version nécessitant la section « %s » contenant %ld entrées:\n"
 
-#: readelf.c:6043
+#: readelf.c:6310
 #, c-format
 msgid " Addr: 0x"
 msgstr " Adr: 0x"
 
-#: readelf.c:6045
+#: readelf.c:6312
 #, c-format
 msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
 msgstr "  Décalage: %#08lx  Lien vers la section: %ld (%s)\n"
 
-#: readelf.c:6050
+#: readelf.c:6321
 msgid "version need section"
 msgstr "version nécessite une section"
 
-#: readelf.c:6072
+#: readelf.c:6343
 #, c-format
 msgid "  %#06x: Version: %d"
 msgstr "  %#06x: Version: %d"
 
-#: readelf.c:6075
+#: readelf.c:6346
 #, c-format
 msgid "  File: %s"
 msgstr "  Fichier: %s"
 
-#: readelf.c:6077
+#: readelf.c:6348
 #, c-format
 msgid "  File: %lx"
 msgstr "  Fichier: %lx"
 
-#: readelf.c:6079
+#: readelf.c:6350
 #, c-format
 msgid "  Cnt: %d\n"
 msgstr "  Compteur: %d\n"
 
-#: readelf.c:6097
+#: readelf.c:6368
 #, c-format
 msgid "  %#06x:   Name: %s"
 msgstr "  %#06x:   Nom: %s"
 
-#: readelf.c:6100
+#: readelf.c:6371
 #, c-format
 msgid "  %#06x:   Name index: %lx"
 msgstr "  %#06x:   Nom de l'index: %lx"
 
-#: readelf.c:6103
+#: readelf.c:6374
 #, c-format
 msgid "  Flags: %s  Version: %d\n"
 msgstr "  Fanions: %s  Version: %d\n"
 
-#: readelf.c:6139
+#: readelf.c:6417
 msgid "version string table"
 msgstr "table chaîne de version"
 
-#: readelf.c:6143
+#: readelf.c:6421
 #, c-format
 msgid ""
 "\n"
@@ -3500,40 +4299,40 @@
 "\n"
 "La version de section « %s » des symboles contient %d entrée:\n"
 
-#: readelf.c:6146
+#: readelf.c:6424
 #, c-format
 msgid " Addr: "
 msgstr " Adr: "
 
-#: readelf.c:6156
+#: readelf.c:6434
 msgid "version symbol data"
 msgstr "données de symbole de version"
 
-#: readelf.c:6183
+#: readelf.c:6461
 msgid "   0 (*local*)    "
 msgstr "   0 (*local*)    "
 
-#: readelf.c:6187
+#: readelf.c:6465
 msgid "   1 (*global*)   "
 msgstr "   1 (*global*)   "
 
-#: readelf.c:6223 readelf.c:6677
+#: readelf.c:6503 readelf.c:6969
 msgid "version need"
 msgstr "version nécessaire"
 
-#: readelf.c:6233
+#: readelf.c:6513
 msgid "version need aux (2)"
 msgstr "version nécessite aux (2)"
 
-#: readelf.c:6275 readelf.c:6740
+#: readelf.c:6555 readelf.c:7034
 msgid "version def"
 msgstr "définition de version"
 
-#: readelf.c:6294 readelf.c:6755
+#: readelf.c:6575 readelf.c:7049
 msgid "version def aux"
 msgstr "définition de version aux"
 
-#: readelf.c:6325
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
@@ -3542,23 +4341,23 @@
 "\n"
 "Aucune information de version repérée dans ce fichier.\n"
 
-#: readelf.c:6456
+#: readelf.c:6740
 msgid "Unable to read in dynamic data\n"
 msgstr "Incapable de lire les données dynamiques\n"
 
-#: readelf.c:6509
+#: readelf.c:6793
 msgid "Unable to seek to start of dynamic information"
 msgstr "Incapable de repérer le début des informations dynamiques"
 
-#: readelf.c:6515
+#: readelf.c:6799
 msgid "Failed to read in number of buckets\n"
 msgstr "Échec de lecture parmi tous les baquets\n"
 
-#: readelf.c:6521
+#: readelf.c:6805
 msgid "Failed to read in number of chains\n"
 msgstr "Échec de lecture du nombre de chaînes\n"
 
-#: readelf.c:6541
+#: readelf.c:6825
 #, c-format
 msgid ""
 "\n"
@@ -3567,17 +4366,17 @@
 "\n"
 "Table de symbole de l'image:\n"
 
-#: readelf.c:6543
+#: readelf.c:6827
 #, c-format
 msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  Nb  Buc:    Valeur Taille Type   Lien Vis      Ndx Nom\n"
 
-#: readelf.c:6545
+#: readelf.c:6829
 #, c-format
 msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  Nb  Buc:    Valeur         Taille Type   Lien Vis      Ndx Nom\n"
 
-#: readelf.c:6597
+#: readelf.c:6882
 #, c-format
 msgid ""
 "\n"
@@ -3586,29 +4385,29 @@
 "\n"
 "Table de symboles « %s » contient %lu entrées:\n"
 
-#: readelf.c:6601
+#: readelf.c:6886
 #, c-format
 msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   Num:    Valeur Tail Type    Lien   Vis      Ndx Nom\n"
 
-#: readelf.c:6603
+#: readelf.c:6888
 #, c-format
 msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   Num:    Valeur         Tail Type    Lien   Vis      Ndx Nom\n"
 
-#: readelf.c:6649
+#: readelf.c:6939
 msgid "version data"
 msgstr "données de version"
 
-#: readelf.c:6690
+#: readelf.c:6982
 msgid "version need aux (3)"
 msgstr "version nécessite aux (3)"
 
-#: readelf.c:6715
+#: readelf.c:7009
 msgid "bad dynamic symbol"
 msgstr "mauvais symbole dynamique"
 
-#: readelf.c:6778
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
@@ -3617,7 +4416,7 @@
 "\n"
 "L'information dynamique des symboles n'est pas disponible pour l'affichage des symboles.\n"
 
-#: readelf.c:6790
+#: readelf.c:7085
 #, c-format
 msgid ""
 "\n"
@@ -3626,16 +4425,16 @@
 "\n"
 "Histogramme de la longueur de la liste des baquets (total de %lu baquets):\n"
 
-#: readelf.c:6792
+#: readelf.c:7087
 #, c-format
 msgid " Length  Number     %% of total  Coverage\n"
 msgstr " Long.   Nombre     %% de couverture totale\n"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
 msgid "Out of memory"
 msgstr "Mémoire épuisée"
 
-#: readelf.c:6862
+#: readelf.c:7157
 #, c-format
 msgid ""
 "\n"
@@ -3644,12 +4443,12 @@
 "\n"
 "Segment d'informations dynamiques à l'adresse de décalage 0x%lx contient %d entrées:\n"
 
-#: readelf.c:6865
+#: readelf.c:7160
 #, c-format
 msgid " Num: Name                           BoundTo     Flags\n"
 msgstr " Num: Nom                            Lier à      Fanions\n"
 
-#: readelf.c:6917
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
@@ -3658,7 +4457,7 @@
 "\n"
 "Vidange de la section assembleur %s\n"
 
-#: readelf.c:6938
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
@@ -3667,7 +4466,7 @@
 "\n"
 "La section « %s » n'a pas de données à être videngé.\n"
 
-#: readelf.c:6943
+#: readelf.c:7238
 #, c-format
 msgid ""
 "\n"
@@ -3676,779 +4475,73 @@
 "\n"
 "Vidange hexadécimale de la section « %s »:\n"
 
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée!\n"
-
-#: readelf.c:7097
+#: readelf.c:7359
 #, c-format
-msgid "  Extended opcode %d: "
-msgstr "  Code op étendu  %d: "
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "escamotage invalide de relocalisation du décalage 0x%lx dans la section %s\n"
 
-#: readelf.c:7102
+#: readelf.c:7376
 #, c-format
-msgid ""
-"End of Sequence\n"
-"\n"
-msgstr ""
-"Fin de séquence\n"
-"\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "escamotage inattendu du type de symbole %s dans la section de relocalisation .rela%s\n"
 
-#: readelf.c:7108
+#: readelf.c:7402
 #, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "initialisé l'adresse à 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  définir une entrée pour un nouveau fichier de table\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  Entrée\tRép.\tDate\tTaille\tNom\n"
-
-#: readelf.c:7116
-#, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
-
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
-#, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
-
-#: readelf.c:7124
-#, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-"%s\n"
-"\n"
-
-#: readelf.c:7128
-#, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "UNKNOWN: longueur %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "données de la section debug_str"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<aucune section .debug_str>"
-
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<décalage trop grand>"
-
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "données de la section debug_loc"
-
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "données de la section debug_range de mise au point"
-
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: escamotage inattendu du type de symbole %s dans la section relocalisation .rela%s\n"
-
-#: readelf.c:7321
-#, c-format
 msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
 msgstr "escamotage inattendu du type de symbole %s dans la section de relocalisation .rela%s\n"
 
-#: readelf.c:7565
+#: readelf.c:7435
 #, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "Valeur d'étiquette (« TAG ») inconnue: %lx"
+msgid "%s section data"
+msgstr "données de section %s"
 
-#: readelf.c:7601
+#: readelf.c:7472
 #, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "Valeur FORM inconnue: %lx"
-
-#: readelf.c:7610
-#, c-format
-msgid " %lu byte block: "
-msgstr " %lu bloc d'octets: "
-
-#: readelf.c:7944
-#, c-format
-msgid "(User defined location op)"
-msgstr "(Op de localisation défini par l'usager)"
-
-#: readelf.c:7946
-#, c-format
-msgid "(Unknown location op)"
-msgstr "(Op de localisation inconnu)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "Erreur interne: DWARF version n'est ni 2 ou 3.\n"
-
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "DW_FORM_data8 n'est pas supporté lorsque  sizeof (unsigned long) != 8\n"
-
-#: readelf.c:8162
-#, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (chaîne indirecte, décalage: 0x%lx): %s"
-
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "Forme non reconnue: %d\n"
-
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(pas en ligne)"
-
-#: readelf.c:8259
-#, c-format
-msgid "(inlined)"
-msgstr "(en ligne)"
-
-#: readelf.c:8262
-#, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(déclaré comme en ligne mais ignoré)"
-
-#: readelf.c:8265
-#, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(déclaré comme en-ligne et en-ligné"
-
-#: readelf.c:8268
-#, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (valeur d'attribut en ligne inconnu: %lx)"
-
-#: readelf.c:8413 readelf.c:9537
-#, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [sans DW_AT_frame_base]"
-
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(liste de localisation)"
-
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "Valeur AT inconnue: %lx"
-
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "Pas d'unités de comptabilisation dans la section .debug_info ?"
-
-#: readelf.c:8611
-#, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "Pas asses de mémoire pour les infos dans un tableau de mise au point de %u entrées"
-
-#: readelf.c:8619 readelf.c:9630
-#, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section '%s' has no debugging data.\n"
 msgstr ""
-"La section %s contient:\n"
 "\n"
+"La section « %s » n'a aucune donnée de débug.\n"
 
-#: readelf.c:8693
+#: readelf.c:7498
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  Unité de compilation @ %lx:\n"
+msgid "Unrecognized debug section: %s\n"
+msgstr "Section de débug non reconnue: %s\n"
 
-#: readelf.c:8694
+#: readelf.c:7533
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   Longueur:      %ld\n"
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "La section %d n'a pas été vidangée parce qu'inexistante!\n"
 
-#: readelf.c:8695
-#, c-format
-msgid "   Version:       %d\n"
-msgstr "   Version:       %d\n"
+#: readelf.c:7791
+msgid "attributes"
+msgstr "attributs"
 
-#: readelf.c:8696
+#: readelf.c:7809
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   Décalage agrégé: %ld\n"
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERREUR: longueur erronée de section (%d > %d)\n"
 
-#: readelf.c:8697
+#: readelf.c:7830
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   Taille des pointeurs:  %d\n"
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "EREUR: longueur erronée de la sous-section (%d > %d)\n"
 
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "Seuls les informations de débug de la version DWARF 2 et 3 sont couramment supportés.\n"
-
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "Incapable de localiser la section .debug_abbrev!\n"
-
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "données de la section debug_abbrev"
-
-#: readelf.c:8759
+#: readelf.c:7880
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "Incapable de localiser l'entrée %lu dans la table d'abréviation\n"
+msgid "Unknown format '%c'\n"
+msgstr "Format inconnu « %c »\n"
 
-#: readelf.c:8765
-#, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: Numéro d'abréviation: %lu (%s)\n"
-
-#: readelf.c:8838
-#, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "%s la section a besoin d'une section .debug_info_section\n"
-
-#: readelf.c:8845
-#, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "%s la section a plus d'unités de comptabilisation que la section .debug_info_section\n"
-
-#: readelf.c:8847
-#, c-format
-msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
-msgstr ""
-"on assume que la taille du pointeur est %d à partir de la dernière unité de comptabilisation dans .debug_info\n"
-"\n"
-
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "extraction d'information à partir de la section .debug_info"
-
-#: readelf.c:8909
-#, c-format
-msgid ""
-"\n"
-"Dump of debug contents of section %s:\n"
-"\n"
-msgstr ""
-"\n"
-"Vidange du contenu de débug de la section %s:\n"
-"\n"
-
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "La ligne d'information semble corrompue - la section est trop petite\n"
-
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "Seule la ligne d'info DWARF de version 2 et 3 est couramment supportée.\n"
-
-#: readelf.c:8984
-#, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  Longueur:                    %ld\n"
-
-#: readelf.c:8985
-#, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  Version DWARF:               %d\n"
-
-#: readelf.c:8986
-#, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  Longueur du prologue:        %d\n"
-
-#: readelf.c:8987
-#, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  Longueur minimale des instructions:  %d\n"
-
-#: readelf.c:8988
-#, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr "  Valeur initiale de « is_stmt »:  %d\n"
-
-#: readelf.c:8989
-#, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  Ligne de base:               %d\n"
-
-#: readelf.c:8990
-#, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  Ligne d'étendue:             %d\n"
-
-#: readelf.c:8991
-#, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  Code op Base:                %d\n"
-
-#: readelf.c:8992
-#, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  Taille des pointeurs:        %u)\n"
-
-#: readelf.c:9001
-#, c-format
-msgid ""
-"\n"
-" Opcodes:\n"
-msgstr ""
-"\n"
-" Codes op:\n"
-
-#: readelf.c:9004
-#, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  Code op %d a %d arguments\n"
-
-#: readelf.c:9010
-#, c-format
-msgid ""
-"\n"
-" The Directory Table is empty.\n"
-msgstr ""
-"\n"
-" La table des répertoires est vide.\n"
-
-#: readelf.c:9013
-#, c-format
-msgid ""
-"\n"
-" The Directory Table:\n"
-msgstr ""
-"\n"
-" La table des répertoire:\n"
-
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
-
-#: readelf.c:9028
-#, c-format
-msgid ""
-"\n"
-" The File Name Table is empty.\n"
-msgstr ""
-"\n"
-" La talbe des noms de fichiers est vide.\n"
-
-#: readelf.c:9031
-#, c-format
-msgid ""
-"\n"
-" The File Name Table:\n"
-msgstr ""
-"\n"
-" La table des noms de fichiers:\n"
-
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
-
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
-
-#. Now display the statements.
-#: readelf.c:9058
-#, c-format
-msgid ""
-"\n"
-" Line Number Statements:\n"
-msgstr ""
-"\n"
-" Numéro de ligne des déclarations:\n"
-
-#: readelf.c:9073
-#, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  Code op spécial %d: avancé l'Adresse par %d à 0x%lx"
-
-#: readelf.c:9077
-#, c-format
-msgid " and Line by %d to %d\n"
-msgstr " et Ligne par %d à %d\n"
-
-#: readelf.c:9088
-#, c-format
-msgid "  Copy\n"
-msgstr "  Copie\n"
-
-#: readelf.c:9095
-#, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  Avancer le compteur PC de %d à %lx\n"
-
-#: readelf.c:9103
-#, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  Avancer la ligne de %d à %d\n"
-
-#: readelf.c:9110
-#, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  Initialisé le nom du fichier à l'entrée %d dans la table des noms de fichiers\n"
-
-#: readelf.c:9118
-#, c-format
-msgid "  Set column to %d\n"
-msgstr "  Initialisé la colonne à %d\n"
-
-#: readelf.c:9125
-#, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  Initialisé is_stmt avec %d\n"
-
-#: readelf.c:9130
-#, c-format
-msgid "  Set basic block\n"
-msgstr "  Initialisé le bloc de base\n"
-
-#: readelf.c:9138
-#, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  Avancer le compteur PC par constante de %d à 0x%lx\n"
-
-#: readelf.c:9146
-#, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  Avancer le compteur PC par une taille fixe de %d à 0x%lx\n"
-
-#: readelf.c:9151
-#, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  Initialiser prologue_end à VRAI\n"
-
-#: readelf.c:9155
-#, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  Initialiser epilogue_begin à VRAI\n"
-
-#: readelf.c:9161
-#, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  Initialiser ISA à %d\n"
-
-#: readelf.c:9165
-#, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  opcode inconnu %d avec les opérandes:"
-
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
-#, c-format
-msgid ""
-"Contents of the %s section:\n"
-"\n"
-msgstr ""
-"Contenue de la section %s:\n"
-"\n"
-
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "Seuls les noms publics DWARF 2 et 3 sont couramment supportés\n"
-
-#: readelf.c:9240
-#, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  Longueur:                            %ld\n"
-
-#: readelf.c:9242
-#, c-format
-msgid "  Version:                             %d\n"
-msgstr "  Version:                             %d\n"
-
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  Décalage dans la section .debug_info:%ld\n"
-
-#: readelf.c:9246
-#, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  Taille de la zone dans la section .debug_info: %ld\n"
-
-#: readelf.c:9249
-#, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    Décalage\tNom\n"
-
-#: readelf.c:9300
-#, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file - no de ligne: %d no de fichier: %d\n"
-
-#: readelf.c:9306
-#, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file\n"
-
-#: readelf.c:9314
-#, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define - no de ligne : %d macro : %s\n"
-
-#: readelf.c:9323
-#, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n"
-
-#: readelf.c:9335
-#, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext - constante : %d chaîne : %s\n"
-
-#: readelf.c:9363
-#, c-format
-msgid "  Number TAG\n"
-msgstr "  Numéro d'étiquette\n"
-
-#: readelf.c:9369
-#, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
-
-#: readelf.c:9372
-msgid "has children"
-msgstr "a des rejetons"
-
-#: readelf.c:9372
-msgid "no children"
-msgstr "aucun rejeton"
-
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
-
-#: readelf.c:9410
-#, c-format
-msgid ""
-"\n"
-"The .debug_loc section is empty.\n"
-msgstr ""
-"\n"
-"La section .debug_loc est vide.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "Liste de localisation dans la ssection .debug_info ne sont pas en ordre ascendant!\n"
-
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "Pas de liste de localisation dans la section .debug_info!\n"
-
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "Liste de localisation dans la section .debug_loc qui débute à 0x%lx\n"
-
-#: readelf.c:9464
-#, c-format
-msgid ""
-"Contents of the .debug_loc section:\n"
-"\n"
-msgstr ""
-"Contenu de la section .debug_loc:\n"
-"\n"
-
-#: readelf.c:9465
-#, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    Décalage Début    Fin      Expression\n"
-
-#: readelf.c:9495
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_loc.\n"
-
-#: readelf.c:9498
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Il y a un chevauchement [0x%lx - 0x%lx] dans la section .debug_loc.\n"
-
-#: readelf.c:9512 readelf.c:9837
-#, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <Fin de liste>\n"
-
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (début == fin)"
-
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (début > fin)"
-
-#: readelf.c:9566
-#, c-format
-msgid ""
-"\n"
-"The .debug_str section is empty.\n"
-msgstr ""
-"\n"
-"La section .debug_str est vide.\n"
-
-#: readelf.c:9570
-#, c-format
-msgid ""
-"Contents of the .debug_str section:\n"
-"\n"
-msgstr ""
-"Contenu de la section .debug_str:\n"
-"\n"
-
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "Seuls les aranges DWARF de version 2 et 3 sont couramment supportés.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  Longueur                  %ld\n"
-
-#: readelf.c:9680
-#, c-format
-msgid "  Version:                  %d\n"
-msgstr "  Version:                  %d\n"
-
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  Décalage dans .debug_info: %lx\n"
-
-#: readelf.c:9682
-#, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  Taille des pointeurs:     %d\n"
-
-#: readelf.c:9683
-#, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  Taille des segments:      %d\n"
-
-#: readelf.c:9685
-#, c-format
-msgid ""
-"\n"
-"    Address  Length\n"
-msgstr ""
-"\n"
-"    Longueur d'adresse\n"
-
-#: readelf.c:9741
-#, c-format
-msgid ""
-"\n"
-"The .debug_ranges section is empty.\n"
-msgstr ""
-"\n"
-"La section .debug_ranges est vide.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "Liste des étendues dans la section .debug_info n'est pas en ordre ascendant!\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "Aucune liste d'étendues dans la section .debug_info!\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "Listes d'étendues dans la section .debug_ranges débutent à 0x%lx\n"
-
-#: readelf.c:9795
-#, c-format
-msgid ""
-"Contents of the .debug_ranges section:\n"
-"\n"
-msgstr ""
-"Contenu de la section .debug_ranges:\n"
-"\n"
-
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    Décalage Début    Fin\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
-
-#: readelf.c:9823
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
-
-#: readelf.c:10017
-#, c-format
-msgid "The section %s contains:\n"
-msgstr "La section %s contient:\n"
-
-#: readelf.c:10663
-#, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "DW_CFA_%d non supporté ou inconnu\n"
-
-#: readelf.c:10688
-#, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "L'affichage du contenu de la section de débug %s n'est pas encore supporté.\n"
-
-#: readelf.c:10732
-#, c-format
-msgid ""
-"\n"
-"Section '%s' has no debugging data.\n"
-msgstr ""
-"\n"
-"La section « %s » n'a aucune donnée de débug.\n"
-
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "données de la section debug"
-
-#: readelf.c:10765
-#, c-format
-msgid "Unrecognized debug section: %s\n"
-msgstr "Section de débug non reconnue: %s\n"
-
-#: readelf.c:10800
-#, c-format
-msgid "Section %d was not dumped because it does not exist!\n"
-msgstr "La section %d n'a pas été vidangée parce qu'inexistante!\n"
-
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "liblist"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "options"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4457,15 +4550,15 @@
 "\n"
 "Section « %s » contient %d entrées:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "conflit de liste repéré sans symbole de table dynamique"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "conflit"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4474,15 +4567,15 @@
 "\n"
 "La section « .conflict » contient %lu entrées:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  Nombre: Index       Valeur Nom"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "table de chaînes liblist"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4491,90 +4584,90 @@
 "\n"
 "Liste de libraire de la section « %s » contenant %lu entrées:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (vecteur auxiliaire)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (structure prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (régistres en virgule flottante)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (structure prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (structure de taches)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (structure user_xfpregs)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (structure pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (registres en virgule flottante)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (structure psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (structure lwpstatus_t)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (structure lwpsinfo_t)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (structure win32_pstatus)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (version)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (architecture)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "Type de note inconnu: (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "structure proinfo NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (structure reg)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPPREGS (structure fpreg)"
 
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "notes"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4583,27 +4676,27 @@
 "\n"
 "Notes au décalage 0x%08lx de longueur 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  Propriétaire\t\tTaille de données\tDescription\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "note corrompue repérée au décalage %x dans les notes du core\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "note corrompue repérée au décalage %lx dans les notes du core\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " type: %x, taille de noms: %08lx, taille de descriptions: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " type: %lx, taille des noms: %08lx, taille de descriptions: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "Aucun note de segment présent dans le fichier core.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4611,12 +4704,12 @@
 "Cette instance de readelf a été contstruite sans soutien pour des\n"
 "types de données de 64 bits et ne peut donc lire des fichiers de 64 bits ELF.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: échec de lecture de l'en-tête du fichier\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4625,68 +4718,68 @@
 "\n"
 "Fichier: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: échec de lecture de l'en-tête de l'archive\n"
 
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: échec d'escamotage de la table de symboles dans l'archive\n"
 
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: échec de lecture de la table de chaînes\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: chaîne de décalage %lu dans la table est invalide dans l'archive\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: nom erroné du fichier d'archive\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: échec de repérage de la prochaine en-tête d'archive\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "'%s': pas de fichier comme tel\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "Ne peut retrouver '%s'. Message d'erreur système: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "'%s' n'est pas un fichier ordinaire\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "Fichier d'entrée %s n'est pas lisible.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: ne peut initialisé l'heure: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "incapable de renommer '%s' pour la raison suivante: %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "incapable de copier le fichier '%s' pour la raisoin suivante: %s"
@@ -5068,17 +5161,17 @@
 msgid "can't open `%s' for output: %s"
 msgstr "ne peut ouvrir « %s » pour la sortie: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr "Afficher les tailles des sections à l'intérieur des fichiers binaires\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
 msgstr "Aucune fichier spécifié à l'entrée a.out est assumé\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5086,6 +5179,7 @@
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5095,16 +5189,17 @@
 "  -o|-d|-h  --radix={8|10|16}         afficher les nombres en octal, décimal ou hexadécimal\n"
 "  -t        --totals                  afficher les tailles totales (Berkeley seulement)\n"
 "            --target=<nombfd>         sélectionner le format de fichier binaire\n"
+"           @<fichier>                 lire les options à partir du <fichier>\n"
 "  -h        --help                    afficher l'aide-mémoire\n"
 "  -V        --version                 afficher le nom et la version du logiciel\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "argument invalide pour --format: %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "Base numérique invalide: %s\n"
@@ -5121,6 +5216,7 @@
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5128,10 +5224,11 @@
 "  -q --quick       (obsolète - ignoré)\n"
 "  -n --noprescan   ne pas faire de scrutation pour convertir les commun en defs\n"
 "  -d --debug       afficher de l'information à propos de ce qui a été fait\n"
+"  @<fichier>       lire les options à partir du <fichier>\n"
 "  -h --help        afficher l'aide-mémoire\n"
 "  -V --version     afficher le nom et la version du logiciel\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "incapable d'ouvrir le fichier de sortie %s"
@@ -5269,22 +5366,22 @@
 msgid "Unrecognized demangled builtin type\n"
 msgstr "type de construit de démutilation non reconnu\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "nombre invalide %s"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "argument en valeur entière invalide %s"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr "Afficher les chaîne imprimables des [fichier] (stdin par défaut)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5297,6 +5394,7 @@
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5311,15 +5409,16 @@
 "  -e --encoding={s,S,b,l,B,L} sélectionner la taille des caractères et le\n"
 "                              système de poids fort ou faible:\n"
 "                              s = 8-bits, {b,l} = 16-bits, {B,L} = 32-bits\n"
+"  @<fichier>                  lire les options à partir du <fichier>\n"
 "  -h --help                   afficher l'aide-mémoire\n"
 "  -v --version                afficher le nom et la version du logiciel\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "Afficher dans un format humainement lisible l'interprétation du fichier objet SYSROFF\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5330,7 +5429,7 @@
 "  -h --help        afficher l'aide-mémoire\n"
 "  -v --version     afficher le nom et la version du logiciel\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "ne peut ouvrir le fichier d'entrée %s"
@@ -5442,15 +5541,17 @@
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "Les options sont:\n"
 "   -r                        ignoré pour la compatibilité avec rc\n"
+"  @<fichier>                 lire les options à partir du <fichier>\n"
 "   -h --help                 afficher l'aide-mémoire\n"
 "   -V --version              afficher le nom et la version du logiciel\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5462,20 +5563,20 @@
 "L'entrée par défaut se fait à partir de stdin, par défaut pour rc.\n"
 "La sortie par défaut est stdout, par défaut pour rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "option invalide -f\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "Pas de nom de fichier après l'option -fo.\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "L'option -I est dépréciée pour fixer le format d'entrée, svp utiliser -J à la place.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "aucune ressource"
 
@@ -5494,8 +5595,73 @@
 msgid "%s: warning: unknown size for field `%s' in struct"
 msgstr "%s: AVERTISSEMENT: taille inconnue pour le champ « %s » dans le struct"
 
+#~ msgid "flags"
+#~ msgstr "fanions"
+
+#~ msgid "debug_str section data"
+#~ msgstr "données de la section debug_str"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "données de la section debug_loc"
+
+#~ msgid "debug_range section data"
+#~ msgstr "données de la section debug_range de mise au point"
+
+#~ msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+#~ msgstr "%s: escamotage inattendu du type de symbole %s dans la section relocalisation .rela%s\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "données de la section debug_abbrev"
+
+#~ msgid "extracting information from .debug_info section"
+#~ msgstr "extraction d'information à partir de la section .debug_info"
+
 #~ msgid ""
 #~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La section .debug_loc est vide.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_loc section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenu de la section .debug_loc:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenu de la section .debug_str:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_ranges section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La section .debug_ranges est vide.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_ranges section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Contenu de la section .debug_ranges:\n"
+#~ "\n"
+
+#~ msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
+
+#~ msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Il y a un trou [0x%lx - 0x%lx] dans la section .debug_ranges.\n"
+
+#~ msgid "debug section data"
+#~ msgstr "données de la section debug"
+
+#~ msgid ""
+#~ "\n"
 #~ "<member %s>\n"
 #~ "\n"
 #~ msgstr ""

Added: branches/binutils/package/binutils/po/ja.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/ja.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/ro.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/ro.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/ru.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/ru.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/binutils/po/ru.po
===================================================================
--- branches/binutils/package/binutils/po/ru.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/po/ru.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,43 +1,45 @@
-# Translation of binutils-2.15.96.po to Russian
-# Translation of binutils-2.14rel030712.ru.po to Russian
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Translation of binutils-2.16.93.po to Russian
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
-# Pavel Maryanov <acid_jack at ukr.net>, 2003, 2005.
 #
+# Pavel Maryanov <acid_jack at ukr.net>, 2003, 2005, 2006.
 msgid ""
 msgstr ""
-"Project-Id-Version: binutils-2.15.96\n"
+"Project-Id-Version: binutils-2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2005-03-10 13:34+0200\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-22 14:32+0300\n"
 "Last-Translator: Pavel Maryanov <acid_jack at ukr.net>\n"
 "Language-Team: Russian <ru at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=KOI8-R\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÁÄÒÅÓ(Á)]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr "ëÏÎ×ÅÒÔÉÒÕÅÔ ÁÄÒÅÓÁ × ÐÁÒÙ ÎÏÍÅÒ_ÓÔÒÏËÉ/ÉÍÑ_ÆÁÊÌÁ.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
 msgstr " åÓÌÉ ÁÄÒÅÓÁ ÎÅ ÕËÁÚÁÎÙ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, ÏÎÉ ÂÕÄÕÔ ÐÒÏÞÉÔÁÎÙ ÉÚ stdin\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -46,6 +48,7 @@
 "\n"
 msgstr ""
 " ïÐÃÉÉ:\n"
+"  @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -b --target=<bfd-ÉÍÑ>  õÓÔÁÎÏ×ÉÔØ ÆÏÒÍÁÔ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
 "  -e --exe=<exe'ÛÎÉË>    õÓÔÁÎÏ×ÉÔØ ÉÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ a.out)\n"
 "  -s --basenames         ÷ÙÄÅÌÉÔØ ÉÍÅÎÁ ËÁÔÁÌÏÇÏ×\n"
@@ -55,212 +58,219 @@
 "  -v --version           ðÏËÁÚÁÔØ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
-msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
+msgstr "ïÔÞ£ÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÁÄÒÅÓÁ ÉÚ ÁÒÈÉ×Á"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÔÉÌØ ÄÅËÏÄÉÒÏ×ÁÎÉÑ `%s'"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "× ÁÒÈÉ×Å ÎÅÔ ÐÕÎËÔÁ %s\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr ""
 "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ] [-]{dmpqrstx}[abcfilNoPsSuvV] [ÉÍÑ_ÞÌÅÎÁ]\n"
 "                  [ÓÞÅÔ] ÆÁÊÌ_ÁÒÈÉ×Á ÆÁÊÌ...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "               %s -M [<mri-ÓËÒÉÐÔ]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " ËÏÍÁÎÄÙ:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            - ÕÄÁÌÅÎÉÅ ÆÁÊÌÏ× ÉÚ ÁÒÈÉ×Á\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        - ÐÅÒÅÍÅÝÅÎÉÅ ÆÁÊÌÏ× × ÁÒÈÉ×\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            - ×Ù×ÏÄ ÆÁÊÌÏ×, ÎÁÊÄÅÎÎÙÈ × ÁÒÈÉ×Å\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         - ÂÙÓÔÒÏÅ ÄÏÂÁ×ÌÅÎÉÅ ÆÁÊÌÏ× × ÁÒÈÉ×\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  - ÚÁÍÅÎÁ ÓÕÝÅÓÔ×ÕÀÝÉÈ ÉÌÉ ×ÓÔÁ×ËÁ ÎÏ×ÙÈ ÆÁÊÌÏ× × ÁÒÈÉ×\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            - ÏÔÏÂÒÁÖÅÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÁÒÈÉ×Á\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         - ÉÚ×ÌÅÞÅÎÉÅ ÆÁÊÌÏ× ÉÚ ÁÒÈÉ×Á\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " ÏÓÏÂÙÅ ÍÏÄÉÆÉËÁÔÏÒÙ ÄÌÑ ËÏÍÁÎÄ:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          - ÒÁÚÍÅÝÅÎÉÅ ÆÁÊÌÏ× ÐÏÓÌÅ [ÉÍÅÎÉ_ÞÌÅÎÁ]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          - ÒÁÚÍÅÝÅÎÉÅ ÆÁÊÌÏ× ÄÏ [ÉÍÅÎÉ_ÞÌÅÎÁ] (ÔÏ ÖÅ, ÞÔÏ É [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          - ÉÓÐÏÌØÚÏ×ÁÎÉÅ [ÓÞÅÔÁ], ËÁË ×ÁÒÉÁÎÔÁ ÉÍÅÎÉ\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]          - ÏÂÒÅÚÁÎÉÅ ÉÍÅÎ ×ÓÔÁ×ÌÅÎÎÙÈ ÆÁÊÌÏ×\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          - ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏÌÎÙÈ ÐÕÔÅ×ÙÈ ÉÍÅÎ ÐÒÉ ÓÏÐÏÓÔÁ×ÌÅÎÉÉ\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          - ÓÏÈÒÁÎÅÎÉÅ ÉÓÈÏÄÎÙÈ ÄÁÔ\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          - ÚÁÍÅÎÁ ÔÏÌØËÏ ÆÁÊÌÏ× ÂÏÌÅÅ ÎÏ×ÙÈ, ÞÅÍ ÔÅËÕÝÅÅ ÓÏÄÅÒÖÉÍÏÅ ÁÒÈÉ×Á\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " ÏÂÙÞÎÙÅ ÍÏÄÉÆÉËÁÔÏÒÙ:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          - ÎÅ ÐÒÅÄÕÐÒÅÖÄÁÔØ, ÅÓÌÉ ÄÏÌÖÎÁ ÂÙÔØ ÓÏÚÄÁÎÁ ÂÉÂÌÉÏÔÅËÁ\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          - ÓÏÚÄÁÎÉÅ ÉÎÄÅËÓÁ ÁÒÈÉ×Á (cf. ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          - ÎÅ ÓÏÚÄÁ×ÁÔØ ÔÁÂÌÉÃÕ ÓÉÍ×ÏÌÏ×\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          - ÐÏÄÒÏÂÎÙÊ ÒÅÖÉÍ\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          - ×Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ\n"
 
-#: ar.c:253
+#: ar.c:245
 #, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<file>      - ÞÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+
+#: ar.c:252
+#, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] ÁÒÈÉ×\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " óÏÚÄÁÅÔ ÉÎÄÅËÓ ÄÌÑ Õ×ÅÌÉÞÅÎÉÑ ÓËÏÒÏÓÔÉ ÄÏÓÔÕÐÁ Ë ÁÒÈÉ×ÁÍ\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 " ïÐÃÉÉ:\n"
+"  @<ÆÁÊÌ>                      þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                    ÷Ù×ÏÄ ÓÐÒÁ×ÏÞÎÏÇÏ ÓÏÏÂÝÅÎÉÑ\n"
 "  -V --version                 ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "ÕËÁÚÁÎÙ ÏÐÃÉÉ ÄÌÑ Ä×ÕÈ ÒÁÚÌÉÞÎÙÈ ÏÐÅÒÁÃÉÊ"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -- %c"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "ÏÐÅÒÁÃÉÑ ÎÅ ÕËÁÚÁÎÁ"
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "`u' ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ ÔÏÌØËÏ Ó ÏÐÃÉÅÊ `r'."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "`u' ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ ÔÏÌØËÏ Ó ÏÐÃÉÑÍÉ `x' É `d'."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "úÎÁÞÅÎÉÅ ÄÌÑ `N' ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ -- ÜÔÁ ÏÐÃÉÑ ÎÅ ×ÙÐÏÌÎÅÎÁ"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "ÓÏÚÄÁÅÔÓÑ %s"
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ stat ÎÁ %s"
 
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -271,37 +281,37 @@
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ÁÒÈÉ×ÏÍ"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "stat ×ÏÚ×ÒÁÔÉÌ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÁÚÍÅÒ ÄÌÑ %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "îÅÔ ÞÌÅÎÁ Ó ÉÍÅÎÅÍ `%s'\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å %s!"
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: ÎÅÔ ËÁÒÔÙ ÁÒÈÉ×Á ÄÌÑ ÏÂÎÏ×ÌÅÎÉÑ"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "ÐÕÎËÔÁ %s ÎÅÔ × ÁÒÈÉ×Å.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ %s\n"
@@ -357,95 +367,97 @@
 msgstr "  îÅÔ ÏÐÃÉÊ, ÓÐÅÃÉÆÉÞÎÙÈ ÄÌÑ ÜÍÕÌÑÃÉÉ\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr " ÏÐÃÉÉ ÜÍÕÌÑÃÉÉ: \n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÃÅÌØ BFD ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÁ `%s': %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: æÏÒÍÁÔÙ ÓÏ×ÐÁÄÅÎÉÑ:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÃÅÌÉ:"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÁÒÈÉÔÅËÔÕÒÙ:"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "æÁÊÌ ÚÁÇÏÌÏ×ËÁ BFD ×ÅÒÓÉÑ %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: ÐÌÏÈÏÅ ÞÉÓÌÏ: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "'%s': îÅÔ ÔÁËÏÇÏ ÆÁÊÌÁ"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. ðÒÉÞÉÎÁ: %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: '%s' ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "#ÓÔÒÏËÉ %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr " ÷Ù×ÏÄÉÔ ÕÄÏÂÏÞÉÔÁÅÍÕÀ ÄÌÑ ÞÅÌÏ×ÅËÁ ÉÎÔÅÒÐÒÅÔÁÃÉÀ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 " ïÐÃÉÉ:\n"
+"  @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help              ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version           ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "ÎÅ ÕËÁÚÁÎ ×ÈÏÄÎÏÊ ÆÁÊÌ"
 
@@ -542,576 +554,586 @@
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: ×ÓÔÒÅÞÅÎ ÎÅ×ÅÒÎÙÊ ÔÉÐ"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÍÁÛÉÎÙ: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ def: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "ïÂÒÁÂÁÔÙ×ÁÅÔÓÑ ÆÁÊÌ def: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "ïÂÒÁÂÏÔÁÎ ÆÁÊÌ def"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "ïÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ × ÆÁÊÌÅ def %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: ëÏÍÐÏÎÅÎÔÙ ÐÕÔÉ, ÉÚ×ÌÅÞÅÎÎÙÅ ÉÚ ÉÍÅÎÉ ÉÚÏÂÒÁÖÅÎÉÑ, '%s'."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "NAME: %s base: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÍÅÔØ LIBRARY É NAME"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "LIBRARY: %s base: %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "ÏÖÉÄÁÎÉÅ: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "ÐÏÄÐÒÏÃÅÓÓ ÐÏÌÕÞÉÌ ÆÁÔÁÌØÎÙÊ ÓÉÇÎÁÌ %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s ÚÁ×ÅÒÛÅÎ ÓÏ ÓÔÁÔÕÓÏÍ %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "÷ÓÁÓÙ×ÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÒÁÚÄÅÌÁ %s × %s"
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "óÉÍ×ÏÌ ÉÓËÌÀÞÅÎÉÑ: %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: ÎÅÔ ÓÉÍ×ÏÌÏ×"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "þÔÅÎÉÅ ×ÙÐÏÌÎÅÎÏ %s"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÏÂßÅËÔÎÙÊ ÆÁÊÌ: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "óËÁÎÉÒÕÅÔÓÑ ÏÂßÅËÔÎÙÊ ÆÁÊÌ %s"
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÆÏÒÍÉÒÏ×ÁÔØ mcore-elf dll ÉÚ ÆÁÊÌÁ ÁÒÈÉ×Á: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÑÀÔÓÑ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "üËÓÐÏÒÔÎÙÅ ÄÁÎÎÙÅ ÄÏÂÁ×ÌÅÎÙ × ×ÙÈÏÄÎÏÊ ÆÁÊÌ"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "çÅÎÅÒÉÒÕÅÔÓÑ ÆÁÊÌ ÜËÓÐÏÒÔÁ: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ ÁÓÓÅÍÂÌÅÒÁ: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "ïÔËÒÙÔÙÊ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "óÇÅÎÅÒÉÒÏ×ÁÎ ÆÁÊÌ ÜËÓÐÏÒÔÁ"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "bfd_open ÎÅ ÓÍÏÇ ÏÔËÒÙÔØ ÆÁÊÌ stub: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ stub: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ÇÏÌÏ×ÎÏÇÏ ÆÁÊÌÁ: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "ÓÂÏÊ ÐÒÉ ÏÔËÒÙÔÉÉ ×ÒÅÍÅÎÎÏÇÏ ËÏÎÅÞÎÏÇÏ ÆÁÊÌÁ: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ .lib: %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "óÏÚÄÁÅÔÓÑ ÆÁÊÌ ÂÉÂÌÉÏÔÅËÉ: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "óÏÚÄÁÎ lib-ÆÁÊÌ"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÐÒÏÐÕÓËÁÅÔÓÑ ÐÏ×ÔÏÒÑÀÝÉÊÓÑ EXPORT %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "ïÛÉÂËÁ, EXPORT ÐÏ×ÔÏÒÑÅÔÓÑ Ó ÐÏÒÑÄËÏ×ÙÍÉ ÞÉÓÌÉÔÅÌØÎÙÍÉ: %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "ïÂÒÁÂÁÔÙ×ÁÀÔÓÑ ÏÐÉÓÁÎÉÑ"
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "ïÐÉÓÁÎÉÑ ÏÂÒÁÂÏÔÁÎÙ"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ %s <ÏÐÃÉÉ> <ÏÂßÅËÔÎÙÅ_ÆÁÊÌÙ>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <ÍÁÛÉÎÁ>     óÏÚÄÁÎÉÅ ËÁË DLL ÄÌÑ <ÍÁÛÉÎÙ>.  [ÐÏ ÕÍÏÌÞÁÎÉÀ: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        ×ÏÚÍÏÖÎÏ <ÍÁÛÉÎÁ>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÎÔÅÒÆÅÊÓÁ.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <ÉÍÑ>        éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ÂÉÂÌÉÏÔÅËÕ ÉÎÔÅÒÆÅÊÓÁ.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <def-ÆÁÊÌ> éÍÑ ÆÁÊÌÁ .def ÄÌÑ ÓÞÉÔÙ×ÁÎÉÑ.\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <def-ÆÁÊÌ> éÍÑ ÓÏÚÄÁ×ÁÅÍÏÇÏ ÆÁÊÌÁ .def.\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
 msgstr "      --export-all-symbols   üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr "      --no-export-all-symbols  üËÓÐÏÒÔ ÔÏÌØËÏ ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr "      --exclude-symbols <ÓÐÉÓÏË> îÅ ÜËÓÐÏÒÔÉÒÏ×ÁÔØ <ÓÐÉÓÏË>\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr "      --no-default-excludes  ïÞÉÓÔËÁ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <base-ÆÁÊÌ> þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr "   -U --add-underscore       äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ Ë ÓÉÍ×ÏÌÁÍ × ÂÉÂÌÉÏÔÅËÅ ÉÎÔÅÒÆÅÊÓÁ.\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr "   -k --kill-at              õÄÁÌÅÎÉÅ @<n> ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr "   -A --add-stdcall-alias    äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @<n>.\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr "   -p --ext-prefix-alias <ÐÒÅÆÉËÓ> äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× Ó <ÐÒÅÆÉËÓÏÍ>.\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <ÉÍÑ>             éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ.\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr "   -f --as-flags <ÆÌÁÇÉ>     ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> × ÁÓÓÅÍÂÌÅÒ.\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        óÏÚÄÁÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÉÍÐÏÒÔÁ Ó ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔØÀ.\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr "   -n --no-delete            ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ (ÐÏ×ÔÏÒ ÄÌÑ ÄÏÐ. ÚÁÝÉÔÙ).\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <ÐÒÅÆÉËÓ> éÓÐÏÌØÚÏ×ÁÎÉÅ <ÐÒÅÆÉËÓÁ> ÄÌÑ ÓÏÚÄÁÎÉÑ ÉÍÅÎ ×ÒÅÍÅÎÎÙÈ ÆÁÊÌÏ×.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
 msgstr "   -v --verbose              ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ.\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
 msgstr "   -V --version              ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ.\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
 msgstr "   -h --help                 ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
 #, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<ÆÁÊÌ>                   þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>.\n"
+
+#: dlltool.c:3063
+#, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr "   -M --mcore-elf <×ÙÈ_ÉÍÑ>  ïÂÒÁÂÏÔËÁ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ mcore-elf × <×ÙÈ_ÉÍÑ>.\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <ÉÍÑ>         éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> × ËÁÞÅÓÔ×Å ËÏÍÐÏÎÏ×ÝÉËÁ.\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <ÆÌÁÇÉ> ðÅÒÅÄÁÞÁ <ÆÌÁÇÏ×> ËÏÍÐÏÎÏ×ÝÉËÕ.\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "ëÏÍÐÏÎÅÎÔÙ ÐÕÔÉ, ÉÚ×ÌÅÞÅÎÎÙÅ ÉÚ ÉÍÅÎÉ dll, '%s'."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ base-ÆÁÊÌ: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "íÁÛÉÎÁ '%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "ïÐÒÏÂÏ×ÁÎÎÙÊ ÆÁÊÌ: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "éÓÐÏÌØÚÕÅÔÓÑ ÆÁÊÌ: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ base-ÆÁÊÌ %s"
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ exp-ÆÁÊÌ %s"
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "ïÓÔÁ×ÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ def-ÆÁÊÌ %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "õÄÁÌÑÅÔÓÑ ×ÒÅÍÅÎÎÙÊ def-ÆÁÊÌ %s"
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  ïÂÝÉÅ ÏÐÃÉÉ:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
 #, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
+
+#: dllwrap.c:477
+#, c-format
 msgid "   --quiet, -q            Work quietly\n"
 msgstr "   --quiet, -q            íÏÌÞÁÌÉ×ÙÊ ÒÅÖÉÍ\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v          ðÏÄÒÏÂÎÙÊ ÒÅÖÉÍ\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              ÷Ù×ÏÄ ×ÅÒÓÉÉ dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --implib <×ÙÈ_ÉÍÑ>     óÉÎÏÎÉÍ ÄÌÑ --output-lib\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  ïÐÃÉÉ ÄÌÑ %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr "   --driver-name <ÄÒÁÊ×ÅÒ> úÎÁÞÅÎÉÑ ÄÌÑ \"gcc\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr "   --driver-flags <ÆÌÁÇÉ> ðÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÆÌÁÇÏ× ld ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr "   --dlltool-name <dlltool> úÎÁÞÅÎÉÑ ÄÌÑ \"dlltool\" ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <ÐÕÎËÔ>        õËÁÚÁÎÉÅ ÁÌØÔÅÒÎÁÔÉ×ÎÏÊ ÔÏÞËÉ ×ÈÏÄÁ DLL\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <base>    õËÁÚÁÎÉÅ ÂÁÚÏ×ÏÇÏ ÁÄÒÅÓÁ ÏÂÒÁÚÁ\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <ÍÁÛÉÎÁ>      i386-cygwin32 ÉÌÉ i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              ðÏËÁÚÁÔØ, ÞÔÏ ÄÏÌÖÎÏ ÂÙÔØ ÚÁÐÕÝÅÎÏ\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin           óÏÚÄÁÎÉÅ Mingw DLL\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  ïÐÃÉÉ, ÐÅÒÅÄÁ×ÁÅÍÙÅ × DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <ÍÁÛÉÎÁ>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ÆÁÊÌÁ ÜËÓÐÏÒÔÁ.\n"
 
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <×ÙÈ_ÉÍÑ> óÏÚÄÁÎÉÅ ×ÈÏÄÎÏÊ ÂÉÂÌÉÏÔÅËÉ.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         äÏÂÁ×ÌÅÎÉÅ ÎÅÐÒÑÍÙÈ dll × ÆÁÊÌ ÜËÓÐÏÒÔÁ.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <ÉÍÑ>        éÍÑ ×ÈÏÄÎÏÊ dll ÄÌÑ ÐÏÍÅÝÅÎÉÑ × ×ÙÈÏÄÎÕÀ ÂÉÂÌÉÏÔÅËÕ.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <def-ÆÁÊÌ>       éÍÑ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <def-ÆÁÊÌ> éÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ .def\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     üËÓÐÏÒÔ ×ÓÅÈ ÓÉÍ×ÏÌÏ× × .def\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr "   --no-export-all-symbols  üËÓÐÏÒÔ ÔÏÌØËÏ ÓÉÍ×ÏÌÏ× .drectve\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr "   --exclude-symbols <ÓÐÉÓÏË> éÓËÌÀÞÉÔØ <ÓÐÉÓÏË> ÉÚ .def\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr "   --no-default-excludes    õÄÁÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÉÓËÌÀÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <base-ÆÁÊÌ> þÔÅÎÉÅ ÓÏÚÄÁÎÎÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÏÍ base-ÆÁÊÌÁ.\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$4.\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           îÅ ÓÏÚÄÁ×ÁÔØ ÒÁÚÄÅÌ idata$5.\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     äÏÂÁ×ÌÅÎÉÅ ÓÉÍ×ÏÌÏ× ÐÏÄÞÅÒËÉ×ÁÎÉÑ × .lib\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr "   -k                     õÄÁÌÅÎÉÅ @<n> ÉÚ ÜËÓÐÏÒÔÉÒÏ×ÁÎÎÙÈ ÉÍÅÎ.\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr "   --add-stdcall-alias    äÏÂÁ×ÌÅÎÉÅ ÁÌÉÁÓÏ× ÂÅÚ @<n>\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <ÉÍÑ>             éÓÐÏÌØÚÏ×ÁÎÉÅ <ÉÍÅÎÉ> ÄÌÑ ÁÓÓÅÍÂÌÅÒÁ\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             ïÓÔÁ×ÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ.\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  ïÓÔÁÌØÎÏÅ ÂÅÚ ÉÚÍÅÎÅÎÉÊ ÐÅÒÅÄÁÎÏ ÑÚÙËÏ×ÏÍÕ ÄÒÁÊ×ÅÒÕ\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "îÅÏÂÈÏÄÉÍÏ ÐÒÅÄÏÓÔÁ×ÉÔØ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÎÕ ÉÚ ÏÐÃÉÊ -o ÉÌÉ --dllname"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1119,26 +1141,733 @@
 "ÎÅ ÐÒÅÄÏÓÔÁ×ÌÅÎ ÆÁÊÌ ÏÐÉÓÁÎÉÑ ÜËÓÐÏÒÔÁ.\n"
 "ïÎ ÓÏÚÄÁÅÔÓÑ, ÎÏ ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÎÅ ÔÏ, ÞÔÏ ×ÁÍ ÎÕÖÎÏ"
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "DLLTOOL ÉÍÑ     : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "DLLTOOL ÏÐÃÉÉ   : %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "DRIVER ÉÍÑ      : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "DRIVER ÏÐÃÉÉ    : %s\n"
 
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "äÌÉÎÁ ÎÅÏÂÒÁÂÁÔÙ×ÁÅÍÙÈ ÄÁÎÎÙÈ: %d\n"
+
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "×ÓÔÒÅÞÅÎ ÎÅ×ÅÒÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÒÁÓÛÉÒÅÎÎÙÊ line-up!\n"
+
+#: dwarf.c:244
+#, c-format
+msgid "  Extended opcode %d: "
+msgstr "  òÁÓÛÉÒÅÎÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: "
+
+#: dwarf.c:249
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"ëÏÎÅà ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n"
+"\n"
+
+#: dwarf.c:255
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÁÄÒÅÓÁ × 0x%lx\n"
+
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ÐÕÎËÔÁ ôÁÂÌÉÃÙ ÆÁÊÌÏ×\n"
+
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  ðÕÎËÔ\tëÁÔÁÌÏÇ\t÷ÒÅÍÑ\tòÁÚÍÅÒ\téÍÑ\n"
+
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
+
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "îåéú÷åóôîùê: ÄÌÉÎÁ %d\n"
+
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<ÎÅÔ ÒÁÚÄÅÌÁ .debug_str>"
+
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "óÍÅÝÅÎÉÅ DW_FORM_strp ÓÌÉÛËÏÍ ÂÏÌØÛÏÅ: %lx\n"
+
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ>"
+
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ TAG: %lx"
+
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ FORM: %lx"
+
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu-ÂÁÊÔÏ×ÙÊ ÂÌÏË: "
+
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(ïÐÒÅÄÅÌÅÎÎÏÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
+
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(îÅÉÚ×ÅÓÔÎÏÅ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
+
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÏÍÅÒ ×ÅÒÓÉÉ DWARF ÎÅ 2 ÉÌÉ 3.\n"
+
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, ËÏÇÄÁ sizeof (ÄÌÉÎÎÏÅ ÃÅÌÏÅ ÞÉÓÌÏ ÂÅÚ ÚÎÁËÁ) != 8\n"
+
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (ËÏÓ×ÅÎÎÁÑ ÓÔÒÏËÁ, ÓÍÅÝÅÎÉÅ: 0x%lx): %s"
+
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÆÏÒÍÁ: %lu\n"
+
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(ÎÅ ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
+
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
+
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÎÏ ÐÒÏÐÕÝÅÎ)"
+
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÔÁË É ÅÓÔØ)"
+
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ ×ÎÕÔÒÉÓÔÒÏÞÎÏÇÏ ÁÔÒÉÂÕÔÁ: %lx)"
+
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [ÂÅÚ DW_AT_frame_base]"
+
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(ÓÐÉÓÏË ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ)"
+
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ AT: %lx "
+
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "÷ ÒÁÚÄÅÌÅ %s ÎÅÔ ÜÌÅÍÅÎÔÏ× comp?"
+
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÍÁÓÓÉ×Á Ó ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÉÚ %u ÜÌÅÍÅÎÔÏ×"
+
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
+"\n"
+
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÒÁÚÄÅÌÁ %s!\n"
+
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  åÄÉÎÉÃÁ ËÏÍÐÉÌÑÃÉÉ @ ÓÍÅÝÅÎÉÅ 0x%lx:\n"
+
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   äÌÉÎÁ:         %ld\n"
+
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   ÷ÅÒÓÉÑ:        %d\n"
+
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   óÍÅÝ. ÁÂÂÒÅ×:  %ld\n"
+
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   òÁÚÍ. ÕËÁÚÁÔ:  %d\n"
+
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
+
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÐÕÎËÔÁ %lu × ÔÁÂÌÉÃÅ ÁÂÂÒÅ×ÉÁÃÉÉ\n"
+
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: îÏÍÅÒ ÁÂÂÒÅ×: %lu (%s)\n"
+
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "òÁÚÄÅÌÕ %s ÎÅÏÂÈÏÄÉÍ ÚÁÐÏÌÎÅÎÎÙÊ ÒÁÚÄÅÌ .debug_info\n"
+
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ ÂÏÌØÛÅ ÜÌÅÍÅÎÔÏ× comp, ÞÅÍ ÒÁÚÄÅÌ .debug_info\n"
+
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+"ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ, ÞÔÏ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ - %d, ÏÔ ÐÏÓÌÅÄÎÅÇÏ ÜÌÅÍÅÎÔÁ comp × .debug_info\n"
+"\n"
+
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"äÁÍÐ ÄÌÑ ÏÔÌÁÄËÉ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ %s:\n"
+"\n"
+
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "ðÏÈÏÖÅ, ÞÔÏ ÓÔÒÏËÁ ÉÎÆÏ ÐÏ×ÒÅÖÄÅÎÁ - ÒÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ\n"
+
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÓÔÒÏËÉ ÉÎÆÏ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
+
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  äÌÉÎÁ:                       %ld\n"
+
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  DWARF ×ÅÒÓÉÑ:                %d\n"
+
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  äÌÉÎÁ ÐÒÏÌÏÇÁ:               %d\n"
+
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  íÉÎÉÍ. ÄÌÉÎÁ ÉÎÓÔÒÕËÃÉÉ:     %d\n"
+
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  îÁÞ. ÚÎÁÞÅÎÉÅ 'is_stmt':     %d\n"
+
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  ïÓÎÏ×ÁÎÉÅ ÓÔÒÏËÉ:            %d\n"
+
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  äÉÁÐÁÚÏÎ ÓÔÒÏËÉ:             %d\n"
+
+#: dwarf.c:1901
+#, c-format
+msgid "  Opcode Base:                 %d\n"
+msgstr "  ïÓÎÏ×ÁÎÉÅ ËÏÄÁ ÏÐÅÒÁÃÉÉ:     %d\n"
+
+#: dwarf.c:1902
+#, c-format
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (òÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ:           %u)%s\n"
+
+#: dwarf.c:1913
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" ëÏÄÙ ÏÐÅÒÁÃÉÊ:\n"
+
+#: dwarf.c:1916
+#, c-format
+msgid "  Opcode %d has %d args\n"
+msgstr "  ëÏÄ ÏÐÅÒÁÃÉÉ %d ÓÏÄÅÒÖÉÔ %d ÁÒÇÕÍÅÎÔÏ×\n"
+
+#: dwarf.c:1922
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ× ÐÕÓÔÁ.\n"
+
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ×:\n"
+
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
+
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ× ÐÕÓÔÁ.\n"
+
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ×:\n"
+
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
+
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" ïÐÅÒÁÔÏÒÙ ÎÏÍÅÒÁ ÓÔÒÏËÉ:\n"
+
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  óÐÅÃÉÁÌØÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: ÐÒÏÄ×ÉÖÅÎÉÅ ÁÄÒÅÓÁ ÎÁ %lu × 0x%lx"
+
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " É ÓÔÒÏËÉ ÎÁ %d × %d\n"
+
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "äÌÑ ÒÁÓÛÉÒÅÎÎÙÈ ËÏÄÏ× ÏÐÅÒÁÃÉÊ ÎÕÖÅÎ ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ; ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ 4\n"
+
+#: dwarf.c:2007
+#, c-format
+msgid "  Copy\n"
+msgstr "  ëÏÐÉÑ\n"
+
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞ£ÔÞÉËÁ ËÏÍÁÎÄ ÎÁ %lu × 0x%lx\n"
+
+#: dwarf.c:2023
+#, c-format
+msgid "  Advance Line by %d to %d\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÔÒÏËÉ ÎÁ %d × %d\n"
+
+#: dwarf.c:2030
+#, c-format
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ÉÍÅÎÉ ÆÁÊÌÁ × ÐÕÎËÔ %d × ÔÁÂÌÉÃÅ ÉÍÅÎ ÆÁÊÌÏ×\n"
+
+#: dwarf.c:2038
+#, c-format
+msgid "  Set column to %lu\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ÓÔÏÌÂÃÁ × %lu\n"
+
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  õÓÔÁÎÏ×ËÁ is_stmt × %d\n"
+
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ÂÁÚÏ×ÏÇÏ ÂÌÏËÁ\n"
+
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞ£ÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ÐÏÓÔÏÑÎÎÕÀ %lu × 0x%lx\n"
+
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞ£ÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ×ÅÌÉÞÉÎÕ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ %lu × 0x%lx\n"
+
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  õÓÔÁÎÏ×ËÁ prologue_end × `ÉÓÔÉÎÁ'\n"
+
+#: dwarf.c:2075
+#, c-format
+msgid "  Set epilogue_begin to true\n"
+msgstr "  õÓÔÁÎÏ×ËÁ epilogue_begin × `ÉÓÔÉÎÁ'\n"
+
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  õÓÔÁÎÏ×ËÁ ISA × %lu\n"
+
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d Ó ÏÐÅÒÁÎÄÁÍÉ: "
+
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
+"\n"
+
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ pubname ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3\n"
+
+#: dwarf.c:2158
+#, c-format
+msgid "  Length:                              %ld\n"
+msgstr "  äÌÉÎÁ:                               %ld\n"
+
+#: dwarf.c:2160
+#, c-format
+msgid "  Version:                             %d\n"
+msgstr "  ÷ÅÒÓÉÑ:                              %d\n"
+
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  óÍÅÝÅÎÉÅ × ÒÁÚÄÅÌ .debug_info:       %ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  òÁÚÍ. ÏÂÌÁÓÔÉ × ÒÁÚÄÅÌÅ .debug_info: %ld\n"
+
+#: dwarf.c:2167
+#, c-format
+msgid ""
+"\n"
+"    Offset\tName\n"
+msgstr ""
+"\n"
+"    óÍÅÝÅÎÉÅ\téÍÑ\n"
+
+#: dwarf.c:2218
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - ÎÏÍÅÒ_ÓÔÒÏËÉ: %d ÎÏÍÅÒ_ÆÁÊÌÁ: %d\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
+
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
+
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - ËÏÎÓÔÁÎÔÁ : %d ÓÔÒÏËÁ : %s\n"
+
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  þÉÓÌÏ TAG\n"
+
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
+
+#: dwarf.c:2291
+msgid "has children"
+msgstr "ÉÍÅÅÔ ÐÏÔÏÍËÏ×"
+
+#: dwarf.c:2291
+msgid "no children"
+msgstr "ÎÅÔ ÐÏÔÏÍËÏ×"
+
+#: dwarf.c:2294
+#, c-format
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
+
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"òÁÚÄÅÌ %s ÐÕÓÔ.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ!\n"
+
+#: dwarf.c:2379
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ %s ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
+
+#: dwarf.c:2383
+#, c-format
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅà    òÁÓÛÉÒÅÎÉÅ\n"
+
+#: dwarf.c:2414
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÙÒÁ [0x%lx - 0x%lx].\n"
+
+#: dwarf.c:2417
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx].\n"
+
+#: dwarf.c:2424
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "óÍÅÝÅÎÉÅ 0x%lx ÂÏÌØÛÅ, ÞÅÍ ÒÁÚÍÅÒ ÒÁÚÄÅÌÁ .debug_loc.\n"
+
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "óÐÉÓÏË ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx, ÎÅ ÚÁ×ÅÒÛ£Î.\n"
+
+#: dwarf.c:2445 dwarf.c:2784
+#, c-format
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <ëÏÎÅà ÓÐÉÓËÁ>\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (ÂÁÚÏ×ÙÊ ÁÄÒÅÓ)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (ÎÁÞÁÌÏ == ËÏÎÅÃ)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (ÎÁÞÁÌÏ > ËÏÎÅÃ)"
+
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ aganges ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
+
+#: dwarf.c:2622
+#, c-format
+msgid "  Length:                   %ld\n"
+msgstr "  äÌÉÎÁ:                    %ld\n"
+
+#: dwarf.c:2623
+#, c-format
+msgid "  Version:                  %d\n"
+msgstr "  ÷ÅÒÓÉÑ:                   %d\n"
+
+#: dwarf.c:2624
+#, c-format
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  óÍÅÝÅÎÉÅ × .debug_info:   %lx\n"
+
+#: dwarf.c:2625
+#, c-format
+msgid "  Pointer Size:             %d\n"
+msgstr "  òÁÚÍ. ÕËÁÚÁÔ:             %d\n"
+
+#: dwarf.c:2626
+#, c-format
+msgid "  Segment Size:             %d\n"
+msgstr "  òÁÚÍ. ÓÅÇÍ.:              %d\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid ""
+"\n"
+"    Address  Length\n"
+msgstr ""
+"\n"
+"    áÄÒÅÓ    äÌÉÎÁ\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÄÉÁÐÁÚÏÎÏ×!\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ %s ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
+
+#: dwarf.c:2740
+#, c-format
+msgid "    Offset   Begin    End\n"
+msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅÃ\n"
+
+#: dwarf.c:2765
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "äÙÒÁ [0x%lx - 0x%lx] × ÒÁÚÄÅÌÅ %s.\n"
+
+#: dwarf.c:2769
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "ðÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx] × ÒÁÚÄÅÌÅ %s.\n"
+
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
+
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÉÌÉ ÎÅÉÚ×ÅÓÔÎÙÊ DW_CFA_%d\n"
+
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ %s ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.\n"
+
+#: dwarf.c:3674
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: ïÛÉÂËÁ: "
+
+#: dwarf.c:3685
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+
 #: emul_aix.c:51
 #, c-format
 msgid "  [-g]         - 32 bit small archive\n"
@@ -1395,124 +2124,124 @@
 msgid "IEEE unsupported complex type size %u\n"
 msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÒÁÚÍÅÒ ËÏÍÐÌÅËÓÎÏÇÏ ÔÉÐÁ IEEE%u\n"
 
-#: nlmconv.c:267 srconv.c:1810
+#: nlmconv.c:269 srconv.c:1813
 msgid "input and output files must be different"
 msgstr "×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÚÌÉÞÎÙÍÉ"
 
-#: nlmconv.c:314
+#: nlmconv.c:316
 msgid "input file named both on command line and with INPUT"
 msgstr "×ÈÏÄÎÏÊ ÆÁÊÌ ÎÁÚ×ÁÎ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ É × INPUT"
 
-#: nlmconv.c:323
+#: nlmconv.c:325
 msgid "no input file"
 msgstr "ÎÅÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
 
-#: nlmconv.c:353
+#: nlmconv.c:355
 msgid "no name for output file"
 msgstr "ÎÅÔ ÉÍÅÎÉ ÄÌÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ"
 
-#: nlmconv.c:367
+#: nlmconv.c:369
 msgid "warning: input and output formats are not compatible"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÈÏÄÎÏÊ É ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔÙ ÎÅ ÓÏ×ÍÅÓÔÉÍÙ"
 
-#: nlmconv.c:396
+#: nlmconv.c:398
 msgid "make .bss section"
 msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .bss"
 
-#: nlmconv.c:405
+#: nlmconv.c:407
 msgid "make .nlmsections section"
 msgstr "ÓÏÚÄÁÎÉÅ ÒÁÚÄÅÌÁ .nlmsections"
 
-#: nlmconv.c:407
+#: nlmconv.c:409
 msgid "set .nlmsections flags"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× .nlmsections"
 
-#: nlmconv.c:435
+#: nlmconv.c:437
 msgid "set .bss vma"
 msgstr "ÕÓÔÁÎÏ×ËÁ .bss vma"
 
-#: nlmconv.c:442
+#: nlmconv.c:444
 msgid "set .data size"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .data"
 
-#: nlmconv.c:622
+#: nlmconv.c:624
 #, c-format
 msgid "warning: symbol %s imported but not in import list"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÉÍ×ÏÌ %s ÉÍÐÏÒÔÉÒÏ×ÁÎ, ÎÏ ÅÇÏ ÎÅÔ × ÓÐÉÓËÅ ÉÍÐÏÒÔÁ"
 
-#: nlmconv.c:642
+#: nlmconv.c:644
 msgid "set start address"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÎÁÞÁÌØÎÏÇÏ ÁÄÒÅÓÁ"
 
-#: nlmconv.c:691
+#: nlmconv.c:693
 #, c-format
 msgid "warning: START procedure %s not defined"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: START-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
 
-#: nlmconv.c:693
+#: nlmconv.c:695
 #, c-format
 msgid "warning: EXIT procedure %s not defined"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: EXIT-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
 
-#: nlmconv.c:695
+#: nlmconv.c:697
 #, c-format
 msgid "warning: CHECK procedure %s not defined"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: CHECK-ÐÒÏÃÅÄÕÒÁ %s ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
 
-#: nlmconv.c:716 nlmconv.c:905
+#: nlmconv.c:718 nlmconv.c:907
 msgid "custom section"
 msgstr "ÒÁÚÄÅÌ custom"
 
-#: nlmconv.c:737 nlmconv.c:934
+#: nlmconv.c:739 nlmconv.c:936
 msgid "help section"
 msgstr "ÒÁÚÄÅÌ help"
 
-#: nlmconv.c:759 nlmconv.c:952
+#: nlmconv.c:761 nlmconv.c:954
 msgid "message section"
 msgstr "ÒÁÚÄÅÌ message"
 
-#: nlmconv.c:775 nlmconv.c:985
+#: nlmconv.c:777 nlmconv.c:987
 msgid "module section"
 msgstr "ÒÁÚÄÅÌ module"
 
-#: nlmconv.c:795 nlmconv.c:1001
+#: nlmconv.c:797 nlmconv.c:1003
 msgid "rpc section"
 msgstr "ÒÁÚÄÅÌ rpc"
 
 #. There is no place to record this information.
-#: nlmconv.c:831
+#: nlmconv.c:833
 #, c-format
 msgid "%s: warning: shared libraries can not have uninitialized data"
 msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÅ ÂÉÂÌÉÏÔÅËÉ ÎÅ ÍÏÇÕÔ ÉÍÅÔØ ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ÄÁÎÎÙÅ"
 
-#: nlmconv.c:852 nlmconv.c:1020
+#: nlmconv.c:854 nlmconv.c:1022
 msgid "shared section"
 msgstr "ÒÁÚÄÅÌ shared"
 
-#: nlmconv.c:860
+#: nlmconv.c:862
 msgid "warning: No version number given"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅ ÕËÁÚÁÎ ÎÏÍÅÒ ×ÅÒÓÉÉ"
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
 msgid "%s: read: %s"
 msgstr "%s: ÞÔÅÎÉÅ: %s"
 
-#: nlmconv.c:922
+#: nlmconv.c:924
 msgid "warning: FULLMAP is not supported; try ld -M"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: FULLMAP ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ; ÐÏÐÒÏÂÕÊÔÅ ld -M"
 
-#: nlmconv.c:1098
+#: nlmconv.c:1100
 #, c-format
 msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [in-ÆÁÊÌ [out-ÆÁÊÌ]]\n"
 
-#: nlmconv.c:1099
+#: nlmconv.c:1101
 #, c-format
 msgid " Convert an object file into a NetWare Loadable Module\n"
 msgstr " ëÏÎ×ÅÒÔÉÒÕÅÔ ÏÂßÅËÔÎÙÊ ÆÁÊÌ × ÚÁÇÒÕÖÁÅÍÙÊ ÍÏÄÕÌØ ÓÉÓÔÅÍÙ NetWare\n"
 
-#: nlmconv.c:1100
+#: nlmconv.c:1102
 #, c-format
 msgid ""
 " The options are:\n"
@@ -1521,6 +2250,7 @@
 "  -T --header-file=<file>       Read <file> for NLM header information\n"
 "  -l --linker=<linker>          Use <linker> for any linking\n"
 "  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
 "  -h --help                     Display this information\n"
 "  -v --version                  Display the program's version\n"
 msgstr ""
@@ -1530,67 +2260,68 @@
 "  -T --header-file=<ÆÁÊÌ>       þÔÅÎÉÅ <ÆÁÊÌÁ> Ó ÉÎÆÏÒÍÁÃÉÅÊ ÚÁÇÏÌÏ×ËÁ NLM\n"
 "  -l --linker=<ËÏÍÐÏÎÏ×ÝÉË>     éÓÐÏÌØÚÏ×ÁÎÉÅ <ËÏÍÐÏÎÏ×ÝÉËÁ> ÄÌÑ ÌÀÂÏÇÏ Ó×ÑÚÙ×ÁÎÉÑ\n"
 "  -d --debug                    ÷Ù×ÏÄ ÎÁ stderr ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ËÏÍÐÏÎÏ×ÝÉËÁ\n"
+"  @<ÆÁÊÌ>                       þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                     ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version                  ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: nlmconv.c:1140
+#: nlmconv.c:1143
 #, c-format
 msgid "support not compiled in for %s"
 msgstr "ÏÔËÏÍÐÉÌÉÒÏ×ÁÎ ÂÅÚ ÐÏÄÄÅÒÖËÉ %s"
 
-#: nlmconv.c:1177
+#: nlmconv.c:1180
 msgid "make section"
 msgstr "ÒÁÚÄÅÌ make"
 
-#: nlmconv.c:1191
+#: nlmconv.c:1194
 msgid "set section size"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ ÒÁÚÄÅÌÁ"
 
-#: nlmconv.c:1197
+#: nlmconv.c:1200
 msgid "set section alignment"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÏÒÉÅÎÔÁÃÉÉ ÒÁÚÄÅÌÁ"
 
-#: nlmconv.c:1201
+#: nlmconv.c:1204
 msgid "set section flags"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× ÒÁÚÄÅÌÁ"
 
-#: nlmconv.c:1212
+#: nlmconv.c:1215
 msgid "set .nlmsections size"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÒÁÚÍÅÒÁ .nlmsections"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
 msgid "set .nlmsection contents"
 msgstr "ÕÓÔÁÎÏ×ËÁ ÓÏÄÅÒÖÉÍÏÇÏ .nlmsections"
 
-#: nlmconv.c:1794
+#: nlmconv.c:1797
 msgid "stub section sizes"
 msgstr "ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÁ ÚÁÇÌÕÛËÉ"
 
-#: nlmconv.c:1841
+#: nlmconv.c:1844
 msgid "writing stub"
 msgstr "ÚÁÐÉÓÙ×ÁÅÔÓÑ ÚÁÇÌÕÛËÁ"
 
-#: nlmconv.c:1925
+#: nlmconv.c:1928
 #, c-format
 msgid "unresolved PC relative reloc against %s"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÏÅ ÏÔÎÏÓÉÔÅÌØÎÏÅ ÐÅÒÅÍÅÝÅÎÉÅ ÐÏ ÓÞÅÔÞÉËÕ ËÏÍÁÎÄ × %s"
 
-#: nlmconv.c:1989
+#: nlmconv.c:1992
 #, c-format
 msgid "overflow when adjusting relocation against %s"
 msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÐÒÉ ÒÅÇÕÌÉÒÏ×ËÅ ÐÅÒÅÍÅÝÅÎÉÑ × %s"
 
-#: nlmconv.c:2116
+#: nlmconv.c:2119
 #, c-format
 msgid "%s: execution of %s failed: "
 msgstr "%s: ×ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: "
 
-#: nlmconv.c:2131
+#: nlmconv.c:2134
 #, c-format
 msgid "Execution of %s failed"
 msgstr "÷ÙÐÏÌÎÅÎÉÅ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
 msgid "Usage: %s [option(s)] [file(s)]\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] [ÆÁÊÌ(Ù)]\n"
@@ -1634,6 +2365,7 @@
 "      --target=BFDNAME   Specify the target object format as BFDNAME\n"
 "  -u, --undefined-only   Display only undefined symbols\n"
 "  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
 "  -h, --help             Display this information\n"
 "  -V, --version          Display this program's version number\n"
 "\n"
@@ -1652,7 +2384,9 @@
 "      --defined-only     ÷Ù×ÏÄ ÔÏÌØËÏ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
 "  -e                     (ÐÒÏÐÕÝÅÎÁ)\n"
 "  -f, --format=æïòíáô    éÓÐÏÌØÚÏ×ÁÎÉÅ æïòíáô × ËÁÞÅÓÔ×Å ×ÙÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ.\n"
-"                         æïòíáô ÍÏÖÅÔ ÂÙÔØ `bsd', `sysv' ÉÌÉ `posix'.                            -g, --extern-only      ÷Ù×ÏÄ ÔÏÌØËÏ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n"
+"                         æïòíáô ÍÏÖÅÔ ÂÙÔØ `bsd', `sysv' ÉÌÉ `posix'.\n"
+"                         ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ `bsd'.\n"
+"  -g, --extern-only      ÷Ù×ÏÄ ÔÏÌØËÏ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n"
 "  -l, --line-numbers     éÓÐÏÌØÚÏ×ÁÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÄÌÑ ÎÁÈÏÖÄÅÎÉÑ\n"
 "                         ÉÍÅÎÉ ÆÁÊÌÁ É ÎÏÍÅÒÁ ÓÔÒÏËÉ ÄÌÑ ËÁÖÄÏÇÏ ÓÉÍ×ÏÌÁ\n"
 "  -n, --numeric-sort     óÏÒÔÉÒÏ×ËÁ ÓÉÍ×ÏÌÏ× ÐÏ ÁÄÒÅÓÕ\n"
@@ -1669,41 +2403,42 @@
 "      --target=BFD-éíñ   õËÁÚÁÎÉÅ ÃÅÌÅ×ÏÇÏ ÆÏÒÍÁÔÁ ÏÂßÅËÔÁ ËÁË BFD-éíñ\n"
 "  -u, --undefined-only   ÷Ù×ÏÄ ÔÏÌØËÏ ÎÅ ÏÐÒÅÄÅÌÅÎÎÙÈ ÓÉÍ×ÏÌÏ×\n"
 "  -X 32_64               (ÐÒÏÐÕÝÅÎÁ)\n"
+"  @æáêì                  þÉÔÁÔØ ÏÐÃÉÉ ÉÚ æáêìá\n"
 "  -h, --help             ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -V, --version          ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: nm.c:262 objdump.c:232
+#: nm.c:263 objdump.c:236
 #, c-format
 msgid "Report bugs to %s.\n"
-msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
+msgstr "ïÔÞ£ÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ × %s\n"
 
-#: nm.c:294
+#: nm.c:295
 #, c-format
 msgid "%s: invalid radix"
 msgstr "%s: ÎÅ×ÅÒÎÙÊ radix"
 
-#: nm.c:318
+#: nm.c:319
 #, c-format
 msgid "%s: invalid output format"
 msgstr "%s: ÎÅ×ÅÒÎÙÊ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
 msgid "<processor specific>: %d"
 msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ>: %d"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: nm.c:342 readelf.c:6626 readelf.c:6671
 #, c-format
 msgid "<OS specific>: %d"
 msgstr "<ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó>: %d"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: nm.c:344 readelf.c:6628 readelf.c:6674
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %d"
 
-#: nm.c:380
+#: nm.c:381
 #, c-format
 msgid ""
 "\n"
@@ -1712,7 +2447,7 @@
 "\n"
 "éÎÄÅËÓ ÁÒÈÉ×Á:\n"
 
-#: nm.c:1225
+#: nm.c:1227
 #, c-format
 msgid ""
 "\n"
@@ -1725,7 +2460,7 @@
 "îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s:\n"
 "\n"
 
-#: nm.c:1227
+#: nm.c:1229
 #, c-format
 msgid ""
 "\n"
@@ -1738,7 +2473,7 @@
 "óÉÍ×ÏÌÙ ÉÚ %s:\n"
 "\n"
 
-#: nm.c:1229 nm.c:1280
+#: nm.c:1231 nm.c:1282
 #, c-format
 msgid ""
 "Name                  Value   Class        Type         Size     Line  Section\n"
@@ -1747,7 +2482,7 @@
 "éÍÑ                   úÎÁÞ.   ëÌÁÓÓ        ôÉÐ        òÁÚÍÅÒ   óÔÒÏËÁ  òÁÚÄÅÌ\n"
 "\n"
 
-#: nm.c:1232 nm.c:1283
+#: nm.c:1234 nm.c:1285
 #, c-format
 msgid ""
 "Name                  Value           Class        Type         Size             Line  Section\n"
@@ -1756,7 +2491,7 @@
 "éÍÑ                   úÎÁÞ.           ëÌÁÓÓ        ôÉÐ        òÁÚÍÅÒ           óÔÒÏËÁ  òÁÚÄÅÌ\n"
 "\n"
 
-#: nm.c:1276
+#: nm.c:1278
 #, c-format
 msgid ""
 "\n"
@@ -1769,7 +2504,7 @@
 "îÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÉÚ %s[%s]:\n"
 "\n"
 
-#: nm.c:1278
+#: nm.c:1280
 #, c-format
 msgid ""
 "\n"
@@ -1782,39 +2517,39 @@
 "óÉÍ×ÏÌÙ ÉÚ %s[%s]:\n"
 "\n"
 
-#: nm.c:1580
+#: nm.c:1584
 msgid "Only -X 32_64 is supported"
 msgstr "ðÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÔÏÌØËÏ -X 32_64"
 
-#: nm.c:1600
+#: nm.c:1604
 msgid "Using the --size-sort and --undefined-only options together"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÍÅÓÔÅ ÏÐÃÉÊ --size-sort É --undefined-only"
 
-#: nm.c:1601
+#: nm.c:1605
 msgid "will produce no output, since undefined symbols have no size."
 msgstr "ÎÅ ÄÁÓÔ ×ÙÈÏÄÎÙÈ ÄÁÎÎÙÈ, Ô.Ë. ÎÅÏÐÒÅÄÅÌÅÎÎÙÅ ÓÉÍ×ÏÌÙ ÎÅ ÉÍÅÀÔ ÒÁÚÍÅÒÁ."
 
-#: nm.c:1629
+#: nm.c:1633
 #, c-format
 msgid "data size %ld"
 msgstr "ÒÁÚÍÅÒ ÄÁÎÎÙÈ %ld"
 
-#: objcopy.c:396 srconv.c:1721
+#: objcopy.c:401 srconv.c:1721
 #, c-format
 msgid "Usage: %s [option(s)] in-file [out-file]\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ÏÐÃÉÉ] in-ÆÁÊÌ [out-ÆÁÊÌ]\n"
 
-#: objcopy.c:397
+#: objcopy.c:402
 #, c-format
 msgid " Copies a binary file, possibly transforming it in the process\n"
 msgstr " ëÏÐÉÒÕÅÔ Ä×ÏÉÞÎÙÊ ÆÁÊÌ, ×ÏÚÍÏÖÎÏ, ÐÒÅÏÂÒÁÚÏ×Ù×ÁÑ ÅÇÏ × ÐÒÏÃÅÓÓÅ\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: objcopy.c:403 objcopy.c:495
 #, c-format
 msgid " The options are:\n"
 msgstr " ïÐÃÉÉ:\n"
 
-#: objcopy.c:399
+#: objcopy.c:404
 #, c-format
 msgid ""
 "  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
@@ -1834,8 +2569,9 @@
 "                                   Do not copy symbol <name> unless needed by\n"
 "                                     relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
 "  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
 "  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
 "  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
 "     --weaken                      Force all global symbols to be marked as weak\n"
@@ -1876,6 +2612,7 @@
 "                                     in <file>\n"
 "     --keep-symbols <file>         -K for all symbols listed in <file>\n"
 "     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
 "     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
 "     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
 "     --alt-machine-code <index>    Use alternate machine code for output\n"
@@ -1889,6 +2626,7 @@
 "                                   Add <prefix> to start of every allocatable\n"
 "                                     section name\n"
 "  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
 "  -V --version                     Display this program's version number\n"
 "  -h --help                        Display this output\n"
 "     --info                        List object formats & architectures supported\n"
@@ -1965,21 +2703,22 @@
 "                                   äÏÂÁ×ÉÔØ <ÐÒÅÆÉËÓ> × ÎÁÞÁÌÏ ÉÍÅÎÉ ËÁÖÄÏÇÏ\n"
 "                                     ÎÁÚÎÁÞÁÅÍÏÇÏ ÒÁÚÄÅÌÁ\n"
 "  -v --verbose                     ðÅÒÅÞÉÓÌÉÔØ ×ÓÅ ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÅ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ\n"
+"  @<ÆÁÊÌ>                          þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -V --version                     ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
 "  -h --help                        ÷Ù×ÅÓÔÉ ÜÔÕ ÓÐÒÁ×ËÕ\n"
 "     --info                        ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n"
 
-#: objcopy.c:485
+#: objcopy.c:493
 #, c-format
 msgid "Usage: %s <option(s)> in-file(s)\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> in-ÆÁÊÌ(Ù)\n"
 
-#: objcopy.c:486
+#: objcopy.c:494
 #, c-format
 msgid " Removes symbols and sections from files\n"
 msgstr " õÄÁÌÑÅÔ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ ÉÚ ÆÁÊÌÏ×\n"
 
-#: objcopy.c:488
+#: objcopy.c:496
 #, c-format
 msgid ""
 "  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
@@ -1992,7 +2731,7 @@
 "     --strip-unneeded              Remove all symbols not needed by relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
 "  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
 "  -w --wildcard                    Permit wildcard in symbol comparison\n"
 "  -x --discard-all                 Remove all non-global symbols\n"
 "  -X --discard-locals              Remove any compiler-generated symbols\n"
@@ -2010,6 +2749,7 @@
 "  -s --strip-all                   õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ É ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ\n"
 "  -g -S -d --strip-debug           õÄÁÌÉÔØ ×ÓÅ ÏÔÌÁÄÏÞÎÙÅ ÓÉÍ×ÏÌÙ É ÒÁÚÄÅÌÙ\n"
 "     --strip-unneeded              õÄÁÌÉÔØ ×ÓÅ ÓÉÍ×ÏÌÙ, ÎÅ ÎÕÖÎÙÅ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÊ\n"
+"     --only-keep-debug             õÄÁÌÉÔØ ×Ó£, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -N --strip-symbol=<ÉÍÑ>          îÅ ËÏÐÉÒÏ×ÁÔØ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
 "  -K --keep-symbol=<ÉÍÑ>           ëÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÉÍ×ÏÌ <ÉÍÑ>\n"
 "  -w --wildcard                    òÁÚÒÅÛÉÔØ ÍÁÓËÕ ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÓÉÍ×ÏÌÏ×\n"
@@ -2021,248 +2761,259 @@
 "     --info                        ðÅÒÅÞÉÓÌÉÔØ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÏÒÍÁÔÙ ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒÙ\n"
 "  -o <ÆÁÊÌ>                        ðÏÍÅÓÔÉÔØ ÏÂÒÁÂÏÔÁÎÎÙÅ ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ × <ÆÁÊÌ>\n"
 
-#: objcopy.c:560
+#: objcopy.c:568
 #, c-format
 msgid "unrecognized section flag `%s'"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÆÌÁÇ ÒÁÚÄÅÌÁ `%s'"
 
-#: objcopy.c:561
+#: objcopy.c:569
 #, c-format
 msgid "supported flags: %s"
 msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÆÌÁÇÉ: %s"
 
-#: objcopy.c:638
+#: objcopy.c:646
 #, c-format
 msgid "cannot open '%s': %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ '%s': %s"
 
-#: objcopy.c:641 objcopy.c:2629
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
 msgid "%s: fread failed"
 msgstr "%s: fread ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ"
 
-#: objcopy.c:714
+#: objcopy.c:722
 #, c-format
 msgid "%s:%d: Ignoring rubbish found on this line"
 msgstr "%s:%d: ðÒÏÐÕÓËÁÅÔÓÑ ÍÕÓÏÒ, ÎÁÊÄÅÎÎÙÊ × ÜÔÏÊ ÓÔÒÏËÅ "
 
-#: objcopy.c:976
+#: objcopy.c:996
 #, c-format
 msgid "%s: Multiple redefinition of symbol \"%s\""
 msgstr "%s: íÎÏÇÏËÒÁÔÎÏÅ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ \"%s\""
 
-#: objcopy.c:980
+#: objcopy.c:1000
 #, c-format
 msgid "%s: Symbol \"%s\" is target of more than one redefinition"
 msgstr "%s: óÉÍ×ÏÌ \"%s\" Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ ÂÏÌÅÅ, ÞÅÍ ÏÄÎÏÇÏ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ"
 
-#: objcopy.c:1008
+#: objcopy.c:1028
 #, c-format
 msgid "couldn't open symbol redefinition file %s (error: %s)"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÓÉÍ×ÏÌÁ %s (ÏÛÉÂËÁ: %s)"
 
-#: objcopy.c:1086
+#: objcopy.c:1106
 #, c-format
 msgid "%s:%d: garbage found at end of line"
 msgstr "%s:%d: × ËÏÎÃÅ ÓÔÒÏËÉ ÎÁÊÄÅÎ ÍÕÓÏÒ"
 
-#: objcopy.c:1089
+#: objcopy.c:1109
 #, c-format
 msgid "%s:%d: missing new symbol name"
 msgstr "%s:%d: ÏÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÎÏ×ÏÇÏ ÓÉÍ×ÏÌÁ"
 
-#: objcopy.c:1099
+#: objcopy.c:1119
 #, c-format
 msgid "%s:%d: premature end of file"
 msgstr "%s:%d: ÐÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ"
 
-#: objcopy.c:1124
+#: objcopy.c:1145
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat ×ÏÚ×ÒÁÔÉÌ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÁÚÍÅÒ ÄÌÑ `%s'"
+
+#: objcopy.c:1157
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ `%s' [ÎÅÉÚ×.] × `%s' [ÎÅÉÚ×.]\n"
+
+#: objcopy.c:1212
 msgid "Unable to change endianness of input file(s)"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ endianness ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
 
-#: objcopy.c:1133
+#: objcopy.c:1221
 #, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ %s(%s) × %s(%s)\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "ËÏÐÉÒÏ×ÁÎÉÅ ÉÚ `%s' [%s] × `%s' [%s]\n"
 
-#: objcopy.c:1170
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÆÏÒÍÁÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ %s"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÆÏÒÍÁÔ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ `%s'"
 
-#: objcopy.c:1174
+#: objcopy.c:1261
 #, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÷ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÐÒÅÄÏÓÔÁ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ %s"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÷ÙÈÏÄÎÏÊ ÆÁÊÌ ÎÅ ÍÏÖÅÔ ÐÒÅÄÏÓÔÁ×ÉÔØ ÁÒÈÉÔÅËÔÕÒÕ `%s'"
 
-#: objcopy.c:1211
+#: objcopy.c:1305
 #, c-format
 msgid "can't create section `%s': %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ `%s': %s"
 
-#: objcopy.c:1277
+#: objcopy.c:1356
 msgid "there are no sections to be copied!"
 msgstr "ÎÅÔ ÒÁÚÄÅÌÏ× ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ!"
 
-#: objcopy.c:1323
+#: objcopy.c:1402
 #, c-format
 msgid "Can't fill gap after %s: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÏÌÎÉÔØ ÐÒÏÍÅÖÕÔÏË ÐÏÓÌÅ %s: %s"
 
-#: objcopy.c:1348
+#: objcopy.c:1427
 #, c-format
 msgid "Can't add padding to %s: %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÚÁÐÏÌÎÅÎÉÅ × %s: %s"
 
-#: objcopy.c:1514
+#: objcopy.c:1594
 #, c-format
 msgid "%s: error copying private BFD data: %s"
 msgstr "%s: ÏÛÉÂËÁ ËÏÐÉÒÏ×ÁÎÉÑ ÞÁÓÔÎÙÈ ÄÁÎÎÙÈ BFD: %s"
 
-#: objcopy.c:1525
+#: objcopy.c:1605
 msgid "unknown alternate machine code, ignored"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ËÏÄ ÍÁÛÉÎÙ, ÐÒÏÐÕÝÅÎ"
 
-#: objcopy.c:1555 objcopy.c:1585
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
 msgid "cannot mkdir %s for archive copying (error: %s)"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ mkdir %s ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÁÒÈÉ×Á (ÏÛÉÂËÁ: %s)"
 
-#: objcopy.c:1790
+#: objcopy.c:1787
 #, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "ÏÛÉÂËÁ: ×ÈÏÄÎÏÊ ÆÁÊÌ '%s' ÐÕÓÔ"
+
+#: objcopy.c:1889
+#, c-format
 msgid "Multiple renames of section %s"
 msgstr "íÎÏÇÏËÒÁÔÎÙÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÒÁÚÄÅÌÁ %s"
 
-#: objcopy.c:1841
+#: objcopy.c:1940
 msgid "private header data"
 msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ ÚÁÇÏÌÏ×ËÁ"
 
-#: objcopy.c:1849
+#: objcopy.c:1948
 #, c-format
 msgid "%s: error in %s: %s"
 msgstr "%s: ÏÛÉÂËÁ × %s: %s"
 
-#: objcopy.c:1903
+#: objcopy.c:2007
 msgid "making"
 msgstr "ÓÏÚÄÁÅÔÓÑ"
 
-#: objcopy.c:1912
+#: objcopy.c:2022
 msgid "size"
 msgstr "ÒÁÚÍÅÒ"
 
-#: objcopy.c:1926
+#: objcopy.c:2036
 msgid "vma"
 msgstr "vma"
 
-#: objcopy.c:1951
+#: objcopy.c:2061
 msgid "alignment"
 msgstr "ÏÒÉÅÎÔÁÃÉÑ"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "ÆÌÁÇÉ"
-
-#: objcopy.c:1988
+#: objcopy.c:2083
 msgid "private data"
 msgstr "ÞÁÓÔÎÙÅ ÄÁÎÎÙÅ"
 
-#: objcopy.c:1996
+#: objcopy.c:2091
 #, c-format
 msgid "%s: section `%s': error in %s: %s"
 msgstr "%s: ÒÁÚÄÅÌ `%s': ÏÛÉÂËÁ × %s: %s"
 
-#: objcopy.c:2274
+#: objcopy.c:2363
 #, c-format
 msgid "%s: can't create debugging section: %s"
 msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÔÌÁÄÏÞÎÙÊ ÒÁÚÄÅÌ: %s"
 
-#: objcopy.c:2288
+#: objcopy.c:2377
 #, c-format
 msgid "%s: can't set debugging section contents: %s"
 msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÏÔÌÁÄÏÞÎÏÇÏ ÒÁÚÄÅÌÁ: %s"
 
-#: objcopy.c:2297
+#: objcopy.c:2386
 #, c-format
 msgid "%s: don't know how to write debugging information for %s"
 msgstr "%s: ÎÅ ÉÚ×ÅÓÔÎÏ, ËÁË ÚÁÐÉÓÁÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ %s"
 
-#: objcopy.c:2472
+#: objcopy.c:2561
 msgid "byte number must be non-negative"
 msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅÎ ÂÙÔØ ÎÅÏÔÒÉÃÁÔÅÌØÎÙÍ"
 
-#: objcopy.c:2482
+#: objcopy.c:2571
 msgid "interleave must be positive"
 msgstr "ÞÅÒÅÄÏ×ÁÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ"
 
-#: objcopy.c:2502 objcopy.c:2510
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
 msgid "%s both copied and removed"
 msgstr "ÏÂÁ %s ÓËÏÐÉÒÏ×ÁÎÙ É ÕÄÁÌÅÎÙ"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
 #, c-format
 msgid "bad format for %s"
 msgstr "ÐÌÏÈÏÊ ÆÏÒÍÁÔ ÄÌÑ %s"
 
-#: objcopy.c:2624
+#: objcopy.c:2717
 #, c-format
 msgid "cannot open: %s: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ: %s: %s"
 
-#: objcopy.c:2743
+#: objcopy.c:2836
 #, c-format
 msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
 msgstr "ðÒÅÄÕÐÒÅÖÅÄÎÉÅ: ÏÂÒÅÚÁÅÔÓÑ ÚÁÐÏÌÎÅÎÉÅ ÐÒÏÍÅÖÕÔËÁ ÏÔ 0x%s ÄÏ 0x%x"
 
-#: objcopy.c:2903
+#: objcopy.c:3000
 msgid "alternate machine code index must be positive"
 msgstr "ÉÎÄÅËÓ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ËÏÄÁ ÍÁÛÉÎÙ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÌÏÖÉÔÅÌØÎÙÍ"
 
-#: objcopy.c:2961
+#: objcopy.c:3058
 msgid "byte number must be less than interleave"
 msgstr "ÎÏÍÅÒ ÂÁÊÔÁ ÄÏÌÖÅÎ ÂÙÔØ ÍÅÎØÛÅ ÞÅÒÅÄÏ×ÁÎÉÑ"
 
-#: objcopy.c:2991
+#: objcopy.c:3088
 #, c-format
 msgid "architecture %s unknown"
 msgstr "ÁÒÈÉÔÅËÔÕÒÁ %s ÎÅ ÉÚ×ÅÓÔÎÁ"
 
-#: objcopy.c:2995
+#: objcopy.c:3092
 msgid "Warning: input target 'binary' required for binary architecture parameter."
 msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: 'Ä×ÏÉÞÎÙÊ' ÃÅÌÅ×ÏÊ ×ÈÏÄÎÏÊ ÆÁÊÌ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÁÒÁÍÅÔÒÁ Ä×ÏÉÞÎÏÊ ÁÒÈÉÔÅËÔÕÒÙ."
 
-#: objcopy.c:2996
+#: objcopy.c:3093
 #, c-format
 msgid " Argument %s ignored"
 msgstr " áÒÇÕÍÅÎÔ %s ÐÒÏÐÕÝÅÎ"
 
-#: objcopy.c:3002
+#: objcopy.c:3099
 #, c-format
 msgid "warning: could not locate '%s'.  System error message: %s"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. óÉÓÔÅÍÎÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ: %s"
 
-#: objcopy.c:3042 objcopy.c:3056
+#: objcopy.c:3141 objcopy.c:3155
 #, c-format
 msgid "%s %s%c0x%s never used"
 msgstr "%s %s%c0x%s ÎÉËÏÇÄÁ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ"
 
-#: objdump.c:176
+#: objdump.c:178
 #, c-format
 msgid "Usage: %s <option(s)> <file(s)>\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s <ÏÐÃÉÉ> <ÆÁÊÌ(Ù)>\n"
 
-#: objdump.c:177
+#: objdump.c:179
 #, c-format
 msgid " Display information from object <file(s)>.\n"
 msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÏÂßÅËÔÁ <ÆÁÊÌ(Ù)>.\n"
 
-#: objdump.c:178
+#: objdump.c:180
 #, c-format
 msgid " At least one of the following switches must be given:\n"
 msgstr " äÏÌÖÅÎ ÂÙÔØ ÕËÁÚÁÎ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ ËÌÀÞÅÊ:\n"
 
-#: objdump.c:179
+#: objdump.c:181
 #, c-format
 msgid ""
 "  -a, --archive-headers    Display archive header information\n"
@@ -2277,10 +3028,12 @@
 "  -g, --debugging          Display debug information in object file\n"
 "  -e, --debugging-tags     Display debug information using ctags style\n"
 "  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
 "  -t, --syms               Display the contents of the symbol table(s)\n"
 "  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
 "  -r, --reloc              Display the relocation entries in the file\n"
 "  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
 "  -v, --version            Display this program's version number\n"
 "  -i, --info               List object formats and architectures supported\n"
 "  -H, --help               Display this information\n"
@@ -2301,11 +3054,12 @@
 "  -T, --dynamic-syms       ÷Ù×ÅÓÔÉ ÓÏÄÅÒÖÉÍÏÅ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
 "  -r, --reloc              ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n"
 "  -R, --dynamic-reloc      ÷Ù×ÅÓÔÉ ÐÕÎËÔÙ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÐÅÒÅÍÅÝÅÎÉÑ × ÆÁÊÌÅ\n"
+"  @<ÆÁÊÌ>                  þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -v, --version            ÷Ù×ÅÓÔÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ\n"
 "  -i, --info               ÷Ù×ÅÓÔÉ ÓÐÉÓÏË ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÆÏÒÍÁÔÏ× ÏÂßÅËÔÏ× É ÁÒÈÉÔÅËÔÕÒ\n"
 "  -H, --help               ÷Ù×ÅÓÔÉ ÜÔÕ ÉÎÆÏÒÍÁÃÉÀ\n"
 
-#: objdump.c:202
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
@@ -2314,7 +3068,7 @@
 "\n"
 " óÌÅÄÕÀÝÉÅ ËÌÀÞÉ Ñ×ÌÑÀÔÓÑ ÏÐÃÉÏÎÁÌØÎÙÍÉ:\n"
 
-#: objdump.c:203
+#: objdump.c:207
 #, c-format
 msgid ""
 "  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
@@ -2363,66 +3117,75 @@
 "      --special-syms             ÷ËÌÀÞÉÔØ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ × ÄÁÍÐÙ ÓÉÍ×ÏÌÏ×\n"
 "\n"
 
-#: objdump.c:378
+#: objdump.c:389
 #, c-format
 msgid "Sections:\n"
 msgstr "òÁÚÄÅÌÙ:\n"
 
-#: objdump.c:381 objdump.c:385
+#: objdump.c:392 objdump.c:396
 #, c-format
 msgid "Idx Name          Size      VMA       LMA       File off  Algn"
 msgstr "éÎÄ éÍÑ           òÁÚÍÅÒ    VMA       LMA       æÁÊÌ      ÷ÙÒÁ×"
 
-#: objdump.c:387
+#: objdump.c:398
 #, c-format
 msgid "Idx Name          Size      VMA               LMA               File off  Algn"
 msgstr "éÎÄ éÍÑ           òÁÚÍÅÒ    VMA               LMA               æÁÊÌ      ÷ÙÒÁ×"
 
-#: objdump.c:391
+#: objdump.c:402
 #, c-format
 msgid "  Flags"
 msgstr "  æÌÁÇÉ"
 
-#: objdump.c:393
+#: objdump.c:404
 #, c-format
 msgid "  Pg"
 msgstr "  óÔÒ"
 
-#: objdump.c:436
+#: objdump.c:447
 #, c-format
 msgid "%s: not a dynamic object"
 msgstr "%s: ÎÅ ÄÉÎÁÍÉÞÅÓËÉÊ ÏÂßÅËÔ"
 
-#: objdump.c:1722
+#: objdump.c:1735
 #, c-format
 msgid "Disassembly of section %s:\n"
 msgstr "äÉÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÒÁÚÄÅÌÁ %s:\n"
 
-#: objdump.c:1884
+#: objdump.c:1897
 #, c-format
 msgid "Can't use supplied machine %s"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÅÄÓÔÁ×ÌÅÎÎÕÀ ÍÁÛÉÎÕ %s"
 
-#: objdump.c:1903
+#: objdump.c:1916
 #, c-format
 msgid "Can't disassemble for architecture %s\n"
 msgstr "äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÎÅ×ÏÚÍÏÖÎÏ ÄÌÑ ÁÒÈÉÔÅËÔÕÒÙ %s\n"
 
-#: objdump.c:1973
+#: objdump.c:2006
 #, c-format
 msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ '%s'.\n"
+
+#: objdump.c:2143
+#, c-format
+msgid ""
 "No %s section present\n"
 "\n"
 msgstr ""
 "òÁÚÄÅÌ %s ÏÔÓÕÔÓÔ×ÕÅÔ\n"
 "\n"
 
-#: objdump.c:1982
+#: objdump.c:2152
 #, c-format
 msgid "Reading %s section of %s failed: %s"
 msgstr "þÔÅÎÉÅ %s ÒÁÚÄÅÌÁ %s ÚÁ×ÅÒÛÉÌÏÓØ ÎÅÕÄÁÞÅÊ: %s"
 
-#: objdump.c:2026
+#: objdump.c:2196
 #, c-format
 msgid ""
 "Contents of %s section:\n"
@@ -2431,17 +3194,17 @@
 "óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
 "\n"
 
-#: objdump.c:2153
+#: objdump.c:2323
 #, c-format
 msgid "architecture: %s, "
 msgstr "ÁÒÈÉÔÅËÔÕÒÁ: %s, "
 
-#: objdump.c:2156
+#: objdump.c:2326
 #, c-format
 msgid "flags 0x%08x:\n"
 msgstr "ÆÌÁÇÉ 0x%08x:\n"
 
-#: objdump.c:2170
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
@@ -2450,27 +3213,27 @@
 "\n"
 "ÎÁÞÁÌØÎÙÊ ÁÄÒÅÓ 0x"
 
-#: objdump.c:2210
+#: objdump.c:2380
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
 
-#: objdump.c:2335
+#: objdump.c:2505
 #, c-format
 msgid "no symbols\n"
 msgstr "ÎÅÔ ÓÉÍ×ÏÌÏ×\n"
 
-#: objdump.c:2342
+#: objdump.c:2512
 #, c-format
 msgid "no information for symbol number %ld\n"
 msgstr "ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÓÉÍ×ÏÌÅ ÎÏÍÅÒ %ld\n"
 
-#: objdump.c:2345
+#: objdump.c:2515
 #, c-format
 msgid "could not determine the type of symbol number %ld\n"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÉÐ ÓÉÍ×ÏÌÁ ÎÏÍÅÒ %ld\n"
 
-#: objdump.c:2611
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
@@ -2479,21 +3242,21 @@
 "\n"
 "%s:     ÆÏÒÍÁÔ ÆÁÊÌÁ %s\n"
 
-#: objdump.c:2662
+#: objdump.c:2845
 #, c-format
 msgid "%s: printing debugging information failed"
 msgstr "%s: ×Ù×ÏÄ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÄÁÞÅÊ"
 
-#: objdump.c:2753
+#: objdump.c:2936
 #, c-format
 msgid "In archive %s:\n"
 msgstr "÷ ÁÒÈÉ×Å %s:\n"
 
-#: objdump.c:2873
+#: objdump.c:3058
 msgid "unrecognized -E option"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ -E"
 
-#: objdump.c:2884
+#: objdump.c:3069
 #, c-format
 msgid "unrecognized --endian type `%s'"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ --endian ÔÉÐ `%s'"
@@ -2533,178 +3296,168 @@
 msgid "Last stabs entries before error:\n"
 msgstr "ðÏÓÌÅÄÎÉÅ ÐÕÎËÔÙ stabs ÐÅÒÅÄ ÏÛÉÂËÏÊ:\n"
 
-#: readelf.c:272
+#: readelf.c:264
 #, c-format
-msgid "%s: Error: "
-msgstr "%s: ïÛÉÂËÁ: "
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ 0x%lx ÄÌÑ %s\n"
 
-#: readelf.c:283
+#: readelf.c:279
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÓÐÒÅÄÅÌÅÎÉÉ 0x%lx ÂÁÊÔ ÄÌÑ %s\n"
 
-#: readelf.c:298
+#: readelf.c:289
 #, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ 0x%x ÄÌÑ %s\n"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ 0x%lx ÂÁÊÔ ÉÚ %s\n"
 
-#: readelf.c:310
-#, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÓÐÒÅÄÅÌÅÎÉÉ 0x%x ÂÁÊÔ ÄÌÑ %s\n"
-
-#: readelf.c:318
-#, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÚÕÞÉÔØ ÐÏÓÒÅÄÓÔ×ÏÍ ÞÔÅÎÉÑ 0x%x ÂÁÊÔ %s\n"
-
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
-#, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "äÌÉÎÁ ÎÅÏÂÒÁÂÁÔÙ×ÁÅÍÙÈ ÄÁÎÎÙÈ: %d\n"
-
-#: readelf.c:752
+#: readelf.c:623
 msgid "Don't know about relocations on this machine architecture\n"
 msgstr "îÅÉÚ×ÅÓÔÎÏ Ï ÐÅÒÅÍÅÝÅÎÉÑÈ ÄÌÑ ÜÔÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÍÁÛÉÎÙ\n"
 
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
 msgid "relocs"
 msgstr "ÐÅÒÅÍÅÝÅÎÉÑ"
 
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
 msgid "out of memory parsing relocs"
 msgstr "ÎÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÂÏÒÅ ÐÅÒÅÍÅÝÅÎÉÊ"
 
-#: readelf.c:933
+#: readelf.c:808
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
 msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉÐ                 úÎÁÞ.ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ + Addend\n"
 
-#: readelf.c:935
+#: readelf.c:810
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
 msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉÐ             úÎÁÞ.ÓÉÍ×  éÍÑ ÓÉÍ×. + Addend\n"
 
-#: readelf.c:940
+#: readelf.c:815
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
 msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉÐ                 úÎÁÞ.ÓÉÍ×   éÍÑ ÓÉÍ×ÏÌÁ\n"
 
-#: readelf.c:942
+#: readelf.c:817
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
 msgstr " óÍÅÝÅÎÉÅ   éÎÆÏ    ôÉÐ             úÎÁÞ.ÓÉÍ×  éÍÑ ÓÉÍ×.\n"
 
-#: readelf.c:950
+#: readelf.c:825
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
 msgstr "    óÍÅÝÅÎÉÅ           éÎÆÏ             ôÉÐ                úÎÁÞÅÎÉÅ ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ + Addend\n"
 
-#: readelf.c:952
+#: readelf.c:827
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
 msgstr "  óÍÅÝÅÎÉÅ        éÎÆÏ           ôÉÐ            úÎÁÞ.ÓÉÍ×.    éÍÑ ÓÉÍ×. + Addend\n"
 
-#: readelf.c:957
+#: readelf.c:832
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
 msgstr "    óÍÅÝÅÎÉÅ           éÎÆÏ             ôÉÐ                úÎÁÞÅÎÉÅ ÓÉÍ×.  éÍÑ ÓÉÍ×ÏÌÁ\n"
 
-#: readelf.c:959
+#: readelf.c:834
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
 msgstr "  óÍÅÝÅÎÉÅ        éÎÆÏ           ôÉÐ            úÎÁÞ.ÓÉÍ×.    éÍÑ ÓÉÍ×.\n"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
 msgid "unrecognized: %-7lx"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ: %-7lx"
 
-#: readelf.c:1295
+#: readelf.c:1154
 #, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ addend: %lx>"
+
+#: readelf.c:1210
+#, c-format
 msgid "<string table index: %3ld>"
 msgstr "<ÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË: %3ld>"
 
-#: readelf.c:1297
+#: readelf.c:1212
 #, c-format
 msgid "<corrupt string table index: %3ld>"
 msgstr "<ÐÏ×ÒÅÖÄÅÎ ÉÎÄÅËÓ ÔÁÂÌÉÃÙ ÓÔÒÏË: %3ld>"
 
-#: readelf.c:1569
+#: readelf.c:1522
 #, c-format
 msgid "Processor Specific: %lx"
 msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: %lx"
 
-#: readelf.c:1588
+#: readelf.c:1543
 #, c-format
 msgid "Operating System specific: %lx"
 msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ: %lx"
 
-#: readelf.c:1592 readelf.c:2370
+#: readelf.c:1547 readelf.c:2349
 #, c-format
 msgid "<unknown>: %lx"
 msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %lx"
 
-#: readelf.c:1605
+#: readelf.c:1560
 msgid "NONE (None)"
 msgstr "îåô (îÅÔ)"
 
-#: readelf.c:1606
+#: readelf.c:1561
 msgid "REL (Relocatable file)"
 msgstr "REL (ðÅÒÅÍÅÝÁÅÍÙÊ ÆÁÊÌ)"
 
-#: readelf.c:1607
+#: readelf.c:1562
 msgid "EXEC (Executable file)"
 msgstr "EXEC (éÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ)"
 
-#: readelf.c:1608
+#: readelf.c:1563
 msgid "DYN (Shared object file)"
 msgstr "DYN (óÏ×Í. ÉÓÐ. ÏÂßÅËÔÎÙÊ ÆÁÊÌ)"
 
-#: readelf.c:1609
+#: readelf.c:1564
 msgid "CORE (Core file)"
 msgstr "CORE (ïÓÎÏ×ÎÏÊ ÆÁÊÌ)"
 
-#: readelf.c:1613
+#: readelf.c:1568
 #, c-format
 msgid "Processor Specific: (%x)"
 msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ: (%x)"
 
-#: readelf.c:1615
+#: readelf.c:1570
 #, c-format
 msgid "OS Specific: (%x)"
 msgstr "óÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó: (%x)"
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
 msgid "<unknown>: %x"
 msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ>: %x"
 
-#: readelf.c:1629
+#: readelf.c:1584
 msgid "None"
 msgstr "îÅÔ"
 
-#: readelf.c:2229
+#: readelf.c:2186
 msgid "Standalone App"
 msgstr "éÚÏÌÉÒÏ×ÁÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ"
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
 msgid "<unknown: %x>"
 msgstr "<ÎÅÉÚ×ÅÓÔÎÙÊ: %x>"
 
-#: readelf.c:2597
+#: readelf.c:2586
 #, c-format
 msgid "Usage: readelf <option(s)> elf-file(s)\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: readelf <ÏÐÃÉÉ> elf-ÆÁÊÌ(Ù)\n"
 
-#: readelf.c:2598
+#: readelf.c:2587
 #, c-format
 msgid " Display information about the contents of ELF format files\n"
 msgstr " ïÔÏÂÒÁÖÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÄÅÒÖÉÍÏÍ ÆÁÊÌÏ× × ÆÏÒÍÁÔÅ ELF\n"
 
-#: readelf.c:2599
+#: readelf.c:2588
 #, c-format
 msgid ""
 " Options are:\n"
@@ -2715,6 +3468,7 @@
 "  -S --section-headers   Display the sections' header\n"
 "     --sections          An alias for --section-headers\n"
 "  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
 "  -e --headers           Equivalent to: -h -l -S\n"
 "  -s --syms              Display the symbol table\n"
 "      --symbols          An alias for --syms\n"
@@ -2737,6 +3491,8 @@
 "     --segments          áÌÉÁÓ ÄÌÑ --program-headers\n"
 "  -S --section-headers   ÷Ù×ÏÄ ÚÁÇÏÌÏ×ËÁ ÒÁÚÄÅÌÏ×\n"
 "     --sections          áÌÉÁÓ ÄÌÑ --section-headers\n"
+"  -g --section-groups    ÷Ù×ÏÄ ÇÒÕÐÐ ÒÁÚÄÅÌÏ×\n"
+"  -t --section-details   ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÁÚÄÅÌÅ\n"
 "  -e --headers           üË×É×ÁÌÅÎÔÎÁ: -h -l -S\n"
 "  -s --syms              ÷Ù×ÏÄ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ×\n"
 "     --symbols           áÌÉÁÓ ÄÌÑ --syms\n"
@@ -2752,7 +3508,7 @@
 "  --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc,=Ranges]\n"
 "                         ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÌÁÄÏÞÎÙÈ ÒÁÚÄÅÌÏ× DWARF2\n"
 
-#: readelf.c:2622
+#: readelf.c:2612
 #, c-format
 msgid ""
 "  -i --instruction-dump=<number>\n"
@@ -2761,109 +3517,111 @@
 "  -i --instruction-dump=<ÎÏÍÅÒ>\n"
 "                         äÉÚÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ <ÎÏÍÅÒ>\n"
 
-#: readelf.c:2626
+#: readelf.c:2616
 #, c-format
 msgid ""
 "  -I --histogram         Display histogram of bucket list lengths\n"
 "  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
 "  -H --help              Display this information\n"
 "  -v --version           Display the version number of readelf\n"
 msgstr ""
 "  -I --histogram         ÷Ù×ÏÄ ÇÉÓÔÏÇÒÁÍÍÙ ÄÌÉÎ ÓÐÉÓËÁ ÕÞÁÓÔËÁ ÐÁÍÑÔÉ\n"
 "  -W --wide              òÁÚÒÅÛÅÎÉÅ ÛÉÒÉÎÙ ×Ù×ÏÄÁ ÂÏÌÅÅ 80 ÓÉÍ×ÏÌÏ×\n"
+"  @<ÆÁÊÌ>                þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -H --help              ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version           ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ readelf\n"
 
-#: readelf.c:2651 readelf.c:12118
+#: readelf.c:2642 readelf.c:9180
 msgid "Out of memory allocating dump request table."
 msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ ÐÒÉ ÒÁÚÍÅÝÅÎÉÉ ÄÁÍÐÁ ÔÁÂÌÉÃÙ ÚÁÐÒÏÓÁ."
 
-#: readelf.c:2820 readelf.c:2888
+#: readelf.c:2816 readelf.c:2884
 #, c-format
 msgid "Unrecognized debug option '%s'\n"
 msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÔÌÁÄÏÞÎÁÑ ÏÐÃÉÑ '%s'\n"
 
-#: readelf.c:2922
+#: readelf.c:2918
 #, c-format
 msgid "Invalid option '-%c'\n"
 msgstr "îÅ×ÅÒÎÁÑ ÏÐÃÉÑ '-%c'\n"
 
-#: readelf.c:2936
+#: readelf.c:2932
 msgid "Nothing to do.\n"
 msgstr "îÅÞÅÇÏ ×ÙÐÏÌÎÑÔØ.\n"
 
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
 msgid "none"
 msgstr "ÎÅÔ"
 
-#: readelf.c:2965
+#: readelf.c:2961
 msgid "2's complement, little endian"
 msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, little endian"
 
-#: readelf.c:2966
+#: readelf.c:2962
 msgid "2's complement, big endian"
 msgstr "ÄÏÐÏÌÎÅÎÉÅ ÄÏ 2, big endian"
 
-#: readelf.c:2984
+#: readelf.c:2980
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "îÅ ELF-ÆÁÊÌ - ÏÎ ÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÅ magic-ÂÁÊÔÙ × ÎÁÞÁÌÅ\n"
 
-#: readelf.c:2992
+#: readelf.c:2988
 #, c-format
 msgid "ELF Header:\n"
 msgstr "úÁÇÏÌÏ×ÏË ELF:\n"
 
-#: readelf.c:2993
+#: readelf.c:2989
 #, c-format
 msgid "  Magic:   "
 msgstr "  Magic:   "
 
-#: readelf.c:2997
+#: readelf.c:2993
 #, c-format
 msgid "  Class:                             %s\n"
 msgstr "  ëÌÁÓÓ:                             %s\n"
 
-#: readelf.c:2999
+#: readelf.c:2995
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  äÁÎÎÙÅ:                            %s\n"
 
-#: readelf.c:3001
+#: readelf.c:2997
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  ÷ÅÒÓÉÑ:                            %d %s\n"
 
-#: readelf.c:3008
+#: readelf.c:3004
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: readelf.c:3010
+#: readelf.c:3006
 #, c-format
 msgid "  ABI Version:                       %d\n"
 msgstr "  ÷ÅÒÓÉÑ ABI:                        %d\n"
 
-#: readelf.c:3012
+#: readelf.c:3008
 #, c-format
 msgid "  Type:                              %s\n"
 msgstr "  ôÉÐ:                               %s\n"
 
-#: readelf.c:3014
+#: readelf.c:3010
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  íÁÛÉÎÁ:                            %s\n"
 
-#: readelf.c:3016
+#: readelf.c:3012
 #, c-format
 msgid "  Version:                           0x%lx\n"
 msgstr "  ÷ÅÒÓÉÑ:                            0x%lx\n"
 
-#: readelf.c:3019
+#: readelf.c:3015
 #, c-format
 msgid "  Entry point address:               "
 msgstr "  áÄÒÅÓ ÔÏÞËÉ ×ÈÏÄÁ:                 "
 
-#: readelf.c:3021
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
@@ -2872,7 +3630,7 @@
 "\n"
 "  îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       "
 
-#: readelf.c:3023
+#: readelf.c:3019
 #, c-format
 msgid ""
 " (bytes into file)\n"
@@ -2881,58 +3639,57 @@
 " (ÂÁÊÔ × ÆÁÊÌÅ)\n"
 "  îÁÞÁÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       "
 
-#: readelf.c:3025
+#: readelf.c:3021
 #, c-format
 msgid " (bytes into file)\n"
 msgstr " (ÂÁÊÔ × ÆÁÊÌÅ)\n"
 
-#: readelf.c:3027
+#: readelf.c:3023
 #, c-format
 msgid "  Flags:                             0x%lx%s\n"
 msgstr "  æÌÁÇÉ:                             0x%lx%s\n"
 
-#: readelf.c:3030
+#: readelf.c:3026
 #, c-format
 msgid "  Size of this header:               %ld (bytes)\n"
 msgstr "  òÁÚÍÅÒ ÜÔÏÇÏ ÚÁÇÏÌÏ×ËÁ:            %ld (ÂÁÊÔ)\n"
 
-#: readelf.c:3032
+#: readelf.c:3028
 #, c-format
 msgid "  Size of program headers:           %ld (bytes)\n"
 msgstr "  òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:       %ld (ÂÁÊÔ)\n"
 
-#: readelf.c:3034
+#: readelf.c:3030
 #, c-format
 msgid "  Number of program headers:         %ld\n"
 msgstr "  þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ:        %ld\n"
 
-#: readelf.c:3036
+#: readelf.c:3032
 #, c-format
 msgid "  Size of section headers:           %ld (bytes)\n"
 msgstr "  òÁÚÍÅÒ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ:         %ld (ÂÁÊÔ)\n"
 
-#: readelf.c:3038
+#: readelf.c:3034
 #, c-format
 msgid "  Number of section headers:         %ld"
 msgstr "  þÉÓÌÏ ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ:          %ld"
 
-#: readelf.c:3043
+#: readelf.c:3039
 #, c-format
 msgid "  Section header string table index: %ld"
 msgstr "  éÎÄÅËÓ ÔÁÂÌ. ÓÔÒÏË ÚÁÇÏÌ. ÒÁÚÄÅÌÁ: %ld"
 
-#: readelf.c:3074 readelf.c:3107
+#: readelf.c:3070 readelf.c:3103
 msgid "program headers"
 msgstr "ÚÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
 msgid "Out of memory\n"
 msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ\n"
 
-#: readelf.c:3172
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
@@ -2941,7 +3698,7 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n"
 
-#: readelf.c:3178
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
@@ -2950,12 +3707,12 @@
 "\n"
 "ôÉÐ elf-ÆÁÊÌÁ - %s\n"
 
-#: readelf.c:3179
+#: readelf.c:3175
 #, c-format
 msgid "Entry point "
 msgstr "ôÏÞËÁ ×ÈÏÄÁ "
 
-#: readelf.c:3181
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
@@ -2964,7 +3721,7 @@
 "\n"
 "éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ "
 
-#: readelf.c:3193 readelf.c:3195
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
 "\n"
@@ -2973,47 +3730,47 @@
 "\n"
 "úÁÇÏÌÏ×ËÉ ÐÒÏÇÒÁÍÍÙ:\n"
 
-#: readelf.c:3199
+#: readelf.c:3195
 #, c-format
 msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
 msgstr "  ôÉÐ            óÍÅÝ.    ÷ÉÒÔ.ÁÄÒ   æÉÚ.ÁÄÒ    òÚÍ.ÆÊÌ òÚÍ.ÐÍ  æÌÇ ÷ÙÒÁ×Î\n"
 
-#: readelf.c:3202
+#: readelf.c:3198
 #, c-format
 msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
 msgstr "  ôÉÐ            óÍÅÝ.    ÷ÉÒÔ.ÁÄÒ           æÉÚ.ÁÄÒ            òÚÍ.ÆÊÌ  òÚÍ.ÐÍ   æÌÇ ÷ÙÒÁ×Î\n"
 
-#: readelf.c:3206
+#: readelf.c:3202
 #, c-format
 msgid "  Type           Offset             VirtAddr           PhysAddr\n"
 msgstr "  ôÉÐ            óÍÅÝ.              ÷ÉÒÔ.ÁÄÒ           æÉÚ.ÁÄÒ\n"
 
-#: readelf.c:3208
+#: readelf.c:3204
 #, c-format
 msgid "                 FileSiz            MemSiz              Flags  Align\n"
 msgstr "                 òÚÍ.ÆÊÌ            òÚÍ.ÐÍ              æÌÁÇÉ  ÷ÙÒÁ×Î\n"
 
-#: readelf.c:3301
+#: readelf.c:3297
 msgid "more than one dynamic segment\n"
 msgstr "ÂÏÌÅÅ ÏÄÎÏÇÏ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ\n"
 
-#: readelf.c:3312
+#: readelf.c:3308
 msgid "no .dynamic section in the dynamic segment"
 msgstr "× ÄÉÎÁÍÉÞÅÓËÏÍ ÓÅÇÍÅÎÔÅ ÎÅÔ ÒÁÚÄÅÌÁ .dynamic"
 
-#: readelf.c:3321
+#: readelf.c:3317
 msgid "the .dynamic section is not contained within the dynamic segment"
 msgstr "× ÄÉÎÁÍÉÞÅÓËÏÍ ÓÅÇÍÅÎÔÅ ÎÅ ÓÏÄÅÒÖÉÔÓÑ ÒÁÚÄÅÌ .dynamic"
 
-#: readelf.c:3323
+#: readelf.c:3319
 msgid "the .dynamic section is not the first section in the dynamic segment."
 msgstr "ÒÁÚÄÅÌ .dynamic ÎÅ Ñ×ÌÑÅÔÓÑ ÐÅÒ×ÙÍ ÒÁÚÄÅÌÏÍ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÅÇÍÅÎÔÁ"
 
-#: readelf.c:3337
+#: readelf.c:3333
 msgid "Unable to find program interpreter name\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÉÍÑ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: readelf.c:3344
+#: readelf.c:3340
 #, c-format
 msgid ""
 "\n"
@@ -3022,7 +3779,7 @@
 "\n"
 "      [úÁÐÒÁÛÉ×ÁÅÍÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ: %s]"
 
-#: readelf.c:3356
+#: readelf.c:3352
 #, c-format
 msgid ""
 "\n"
@@ -3031,33 +3788,33 @@
 "\n"
 " óÏÏÔ×ÅÔÓÔ×ÉÅ ÒÁÚÄÅÌ-ÓÅÇÍÅÎÔ:\n"
 
-#: readelf.c:3357
+#: readelf.c:3353
 #, c-format
 msgid "  Segment Sections...\n"
 msgstr "  óÅÇÍÅÎÔ òÁÚÄÅÌÙ...\n"
 
-#: readelf.c:3408
+#: readelf.c:3402
 msgid "Cannot interpret virtual addresses without program headers.\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ×ÉÒÔÕÁÌØÎÙÅ ÁÄÒÅÓÁ ÂÅÚ ÚÁÇÏÌÏ×ËÏ× ÐÒÏÇÒÁÍÍÙ.\n"
 
-#: readelf.c:3424
+#: readelf.c:3418
 #, c-format
 msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
 msgstr "÷ÉÒÔÕÁÌØÎÙÊ ÁÄÒÅÓ 0x%lx ÎÅ ÒÁÚÍÅÝÅÎ × ËÁËÏÍ-ÌÉÂÏ ÓÅÇÍÅÎÔÅ PT_LOAD.\n"
 
-#: readelf.c:3438 readelf.c:3479
+#: readelf.c:3432 readelf.c:3473
 msgid "section headers"
 msgstr "ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×"
 
-#: readelf.c:3523 readelf.c:3586
+#: readelf.c:3517 readelf.c:3580
 msgid "symbols"
 msgstr "ÓÉÍ×ÏÌÙ"
 
-#: readelf.c:3533 readelf.c:3596
+#: readelf.c:3527 readelf.c:3590
 msgid "symtab shndx"
 msgstr "symtab shndx"
 
-#: readelf.c:3697 readelf.c:3977
+#: readelf.c:3817 readelf.c:4192
 #, c-format
 msgid ""
 "\n"
@@ -3066,33 +3823,38 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚÄÅÌÏ×.\n"
 
-#: readelf.c:3703
+#: readelf.c:3823
 #, c-format
 msgid "There are %d section headers, starting at offset 0x%lx:\n"
 msgstr "éÍÅÅÔÓÑ %d ÚÁÇÏÌÏ×ËÏ× ÒÁÚÄÅÌÁ, ÎÁÞÉÎÁÑ ÓÏ ÓÍÅÝÅÎÉÑ 0x%lx:\n"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
 msgid "string table"
 msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË"
 
-#: readelf.c:3765
+#: readelf.c:3881
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "òÁÚÄÅÌ %d ÓÏÄÅÒÖÉÔ ÎÅ×ÅÒÎÙÊ sh_entsize %lx (ÏÖÉÄÁÌÏÓØ %lx)\n"
+
+#: readelf.c:3901
 msgid "File contains multiple dynamic symbol tables\n"
 msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
 
-#: readelf.c:3777
+#: readelf.c:3914
 msgid "File contains multiple dynamic string tables\n"
 msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n"
 
-#: readelf.c:3782
+#: readelf.c:3919
 msgid "dynamic strings"
 msgstr "ÄÉÎÁÍÉÞÅÓËÉÅ ÓÔÒÏËÉ"
 
-#: readelf.c:3789
+#: readelf.c:3926
 msgid "File contains multiple symtab shndx tables\n"
 msgstr "æÁÊÌ ÓÏÄÅÒÖÉÔ ÎÅÓËÏÌØËÏ ÔÁÂÌÉà symtab shndx\n"
 
-#: readelf.c:3828
+#: readelf.c:3973
 #, c-format
 msgid ""
 "\n"
@@ -3101,7 +3863,7 @@
 "\n"
 "úÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÏ×:\n"
 
-#: readelf.c:3830
+#: readelf.c:3975
 #, c-format
 msgid ""
 "\n"
@@ -3110,28 +3872,58 @@
 "\n"
 "úÁÇÏÌÏ×ÏË ÒÁÚÄÅÌÁ:\n"
 
-#: readelf.c:3834
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] éÍÑ\n"
+
+#: readelf.c:3982
+#, c-format
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       ôÉÐ             áÄÒÅÓ    óÍÅÝ   òÁÚÍ   ES   óÓ éÎÆ Al\n"
+
+#: readelf.c:3986
+#, c-format
 msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [îÍ] éÍÑ               ôÉÐ             áÄÒÅÓ    óÍÅÝ   òÁÚÍ   ES æÌÇ óÓ éÎÆ Al\n"
 
-#: readelf.c:3837
+#: readelf.c:3993
 #, c-format
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       ôÉÐ             áÄÒÅÓ            óÍÅÝ   òÁÚÍ   ES   óÓ éÎÆ Al\n"
+
+#: readelf.c:3997
+#, c-format
 msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [îÍ] éÍÑ               ôÉÐ             áÄÒÅÓ            óÍÅÝ   òÁÚÍ   ES æÌÇ ìË éÎÆ Al\n"
 
-#: readelf.c:3840
+#: readelf.c:4004
 #, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       ôÉÐ               áÄÒÅÓ            óÍÅÝÅÎÉÅ          óÓÙÌËÁ\n"
+
+#: readelf.c:4005
+#, c-format
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       òÁÚÍÅÒ            òÁÚÍ.Ent         éÎÆÏ              ÷ÙÒÁ×Î\n"
+
+#: readelf.c:4009
+#, c-format
 msgid "  [Nr] Name              Type             Address           Offset\n"
 msgstr "  [îÍ] éÍÑ               ôÉÐ              áÄÒÅÓ             óÍÅÝÅÎÉÅ\n"
 
-#: readelf.c:3841
+#: readelf.c:4010
 #, c-format
 msgid "       Size              EntSize          Flags  Link  Info  Align\n"
 msgstr "       òÁÚÍÅÒ            òÁÚÍ.Ent         æÌÁÇÉ  óÓÙÌË éÎÆÏ  ÷ÙÒÁ×Î\n"
 
-#: readelf.c:3936
+#: readelf.c:4015
 #, c-format
+msgid "       Flags\n"
+msgstr "       æÌÁÇÉ\n"
+
+#: readelf.c:4150
+#, c-format
 msgid ""
 "Key to Flags:\n"
 "  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
@@ -3143,16 +3935,16 @@
 "  I (ÉÎÆÏ), L (ÐÏÒÑÄÏË ÓÓÙÌÏË), G (ÇÒÕÐÐÁ), x (ÎÅÉÚ×.)\n"
 "  O (ÔÒÅÂ. ÄÏÐ. ÏÂÒÁÂÏÔËÁ ïó) o (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ïó), p (ÓÐÅÃÉÆÉÞÎÙÊ ÄÌÑ ÐÒÏÃÅÓÓÏÒÁ)\n"
 
-#: readelf.c:3954
+#: readelf.c:4168
 #, c-format
 msgid "[<unknown>: 0x%x]"
 msgstr "[<ÎÅÉÚ×ÅÓÔÎÙÊ>: 0x%x]"
 
-#: readelf.c:3984
+#: readelf.c:4199
 msgid "Section headers are not available!\n"
 msgstr "îÅÄÏÓÔÕÐÎÙ ÚÁÇÏÌÏ×ËÉ ÒÁÚÄÅÌÁ!\n"
 
-#: readelf.c:4008
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
@@ -3161,36 +3953,46 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÇÒÕÐÐ ÒÁÚÄÅÌÏ×.\n"
 
-#: readelf.c:4042
+#: readelf.c:4259
 #, c-format
 msgid "Bad sh_link in group section `%s'\n"
 msgstr "îÅ×ÅÒÎÙÊ sh_link × ÒÁÚÄÅÌÅ ÇÒÕÐÐ `%s'\n"
 
-#: readelf.c:4061
+#: readelf.c:4278
 #, c-format
 msgid "Bad sh_info in group section `%s'\n"
 msgstr "îÅ×ÅÒÎÙÊ sh_info × ÒÁÚÄÅÌÅ ÇÒÕÐÐ `%s'\n"
 
-#: readelf.c:4085 readelf.c:6947
+#: readelf.c:4317 readelf.c:7243
 msgid "section data"
 msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ"
 
-#: readelf.c:4097
+#: readelf.c:4329
 #, c-format
 msgid "   [Index]    Name\n"
 msgstr "   [éÎÄÅËÓ]   éÍÑ\n"
 
-#: readelf.c:4114
+#: readelf.c:4343
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "ÒÁÚÄÅÌ [%5u] ÕÖÅ ÎÁÈÏÄÉÔÓÑ × ÒÁÚÄÅÌÅ ÇÒÕÐÐ [%5u]\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "ÒÁÚÄÅÌ [%5u] ÕÖÅ ÎÁÈÏÄÉÔÓÑ × ÒÁÚÄÅÌÅ ÇÒÕÐÐ [%5u] > ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÄÅÌ [%5u]\n"
 
-#: readelf.c:4127
+#: readelf.c:4349
 #, c-format
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÁÚÄÅÌ [%5u] × ÒÁÚÄÅÌÅ ÇÒÕÐÐ [%5u]\n"
+
+#: readelf.c:4359
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "ÒÁÚÄÅÌ [%5u] ÉÚ ÒÁÚÄÅÌÁ ÇÒÕÐÐ [%5u] ÕÖÅ ÎÁÈÏÄÉÔÓÑ × ÒÁÚÄÅÌÅ ÇÒÕÐÐ [%5u]\n"
+
+#: readelf.c:4372
+#, c-format
 msgid "section 0 in group section [%5u]\n"
 msgstr "ÒÁÚÄÅÌ 0 × ÒÁÚÄÅÌÅ ÇÒÕÐÐ [%5u]\n"
 
-#: readelf.c:4224
+#: readelf.c:4468
 #, c-format
 msgid ""
 "\n"
@@ -3199,7 +4001,7 @@
 "\n"
 "'%s' ÒÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %ld ÂÁÊÔ:\n"
 
-#: readelf.c:4236
+#: readelf.c:4480
 #, c-format
 msgid ""
 "\n"
@@ -3208,7 +4010,7 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÉÈ ÐÅÒÅÍÅÝÅÎÉÊ .\n"
 
-#: readelf.c:4260
+#: readelf.c:4504
 #, c-format
 msgid ""
 "\n"
@@ -3217,17 +4019,17 @@
 "\n"
 "òÁÚÄÅÌ ÐÅÒÅÍÅÝÅÎÉÑ "
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
 #, c-format
 msgid "'%s'"
 msgstr "'%s'"
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
 msgid " at offset 0x%lx contains %lu entries:\n"
 msgstr " ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:4308
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
@@ -3236,16 +4038,16 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÐÅÒÅÍÅÝÅÎÉÊ.\n"
 
-#: readelf.c:4482 readelf.c:4862
+#: readelf.c:4742 readelf.c:5124
 msgid "unwind table"
 msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÔÁÂÌÉÃÁ"
 
-#: readelf.c:4540 readelf.c:4959
+#: readelf.c:4801 readelf.c:5214
 #, c-format
 msgid "Skipping unexpected relocation type %s\n"
 msgstr "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÐÅÒÅÍÅÝÅÎÉÑ %s\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
@@ -3254,7 +4056,7 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÒÁÚ×ÅÒÎÕÔÙÈ ÒÁÚÄÅÌÏ×.\n"
 
-#: readelf.c:4661
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
@@ -3263,11 +4065,11 @@
 "\n"
 "îÅ×ÏÚÍÏÖÎÏ ÂÙÌÏ ÎÁÊÔÉ ÒÁÚÄÅÌ Ó ÒÁÚ×ÅÒÎÕÔÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÄÌÑ"
 
-#: readelf.c:4673
+#: readelf.c:4935
 msgid "unwind info"
 msgstr "ÒÁÚ×ÅÒÎÕÔÁÑ ÉÎÆÏÒÍÁÃÉÑ"
 
-#: readelf.c:4675 readelf.c:5024
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
@@ -3276,11 +4078,11 @@
 "\n"
 "òÁÚ×ÅÒÎÕÔÙÊ ÒÁÚÄÅÌ "
 
-#: readelf.c:5228 readelf.c:5272
+#: readelf.c:5491 readelf.c:5535
 msgid "dynamic section"
 msgstr "ÄÉÎÁÍÉÞÅÓËÉÊ ÒÁÚÄÅÌ"
 
-#: readelf.c:5349
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
@@ -3289,31 +4091,31 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅÔ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÒÁÚÄÅÌÁ.\n"
 
-#: readelf.c:5387
+#: readelf.c:5650
 msgid "Unable to seek to end of file!"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ!"
 
-#: readelf.c:5400
+#: readelf.c:5663
 msgid "Unable to determine the number of symbols to load\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÞÉÓÌÏ ÚÁÇÒÕÖÁÅÍÙÈ ÓÉÍ×ÏÌÏ×\n"
 
-#: readelf.c:5435
+#: readelf.c:5698
 msgid "Unable to seek to end of file\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÄÏ ËÏÎÃÁ ÆÁÊÌÁ\n"
 
-#: readelf.c:5442
+#: readelf.c:5705
 msgid "Unable to determine the length of the dynamic string table\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÄÌÉÎÕ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË\n"
 
-#: readelf.c:5447
+#: readelf.c:5710
 msgid "dynamic string table"
 msgstr "ÔÁÂÌÉÃÁ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÔÒÏË"
 
-#: readelf.c:5482
+#: readelf.c:5745
 msgid "symbol information"
 msgstr "ÉÎÆÏÒÍÁÃÉÑ Ï ÓÉÍ×ÏÌÅ"
 
-#: readelf.c:5507
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
@@ -3322,77 +4124,77 @@
 "\n"
 "äÉÎÁÍÉÞÅÓËÉÊ ÒÁÚÄÅÌ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %u ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:5510
+#: readelf.c:5773
 #, c-format
 msgid "  Tag        Type                         Name/Value\n"
 msgstr "  ôÅÇ        ôÉÐ                          éÍÑ/úÎÁÞ\n"
 
-#: readelf.c:5546
+#: readelf.c:5809
 #, c-format
 msgid "Auxiliary library"
 msgstr "÷ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÂÉÂÌÉÏÔÅËÁ"
 
-#: readelf.c:5550
+#: readelf.c:5813
 #, c-format
 msgid "Filter library"
 msgstr "âÉÂÌÉÏÔÅËÁ ÆÉÌØÔÒÏ×"
 
-#: readelf.c:5554
+#: readelf.c:5817
 #, c-format
 msgid "Configuration file"
 msgstr "æÁÊÌ ÎÁÓÔÒÏÊËÉ"
 
-#: readelf.c:5558
+#: readelf.c:5821
 #, c-format
 msgid "Dependency audit library"
 msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ ÚÁ×ÉÓÉÍÏÓÔÅÊ"
 
-#: readelf.c:5562
+#: readelf.c:5825
 #, c-format
 msgid "Audit library"
 msgstr "âÉÂÌÉÏÔÅËÁ ÁÕÄÉÔÁ"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
 #, c-format
 msgid "Flags:"
 msgstr "æÌÁÇÉ:"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
 #, c-format
 msgid " None\n"
 msgstr " îÅÔ\n"
 
-#: readelf.c:5759
+#: readelf.c:6022
 #, c-format
 msgid "Shared library: [%s]"
 msgstr "óÏ×Í. ÉÓÐ. ÂÉÂÌÉÏÔÅËÁ: [%s]"
 
-#: readelf.c:5762
+#: readelf.c:6025
 #, c-format
 msgid " program interpreter"
 msgstr " ÉÎÔÅÒÐÒÅÔÁÔÏÒ ÐÒÏÇÒÁÍÍÙ"
 
-#: readelf.c:5766
+#: readelf.c:6029
 #, c-format
 msgid "Library soname: [%s]"
 msgstr "âÉÂÌÉÏÔÅËÁ soname: [%s]"
 
-#: readelf.c:5770
+#: readelf.c:6033
 #, c-format
 msgid "Library rpath: [%s]"
 msgstr "âÉÂÌÉÏÔÅËÁ rpath: [%s]"
 
-#: readelf.c:5774
+#: readelf.c:6037
 #, c-format
 msgid "Library runpath: [%s]"
 msgstr "âÉÂÌÉÏÔÅËÁ runpath: [%s]"
 
-#: readelf.c:5837
+#: readelf.c:6100
 #, c-format
 msgid "Not needed object: [%s]\n"
 msgstr "îÅÎÕÖÎÙÊ ÏÂßÅËÔ: [%s]\n"
 
-#: readelf.c:5951
+#: readelf.c:6214
 #, c-format
 msgid ""
 "\n"
@@ -3401,51 +4203,51 @@
 "\n"
 "òÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:5954
+#: readelf.c:6217
 #, c-format
 msgid "  Addr: 0x"
 msgstr "  áÄÒÅÓ: 0x"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:6219 readelf.c:6426
 #, c-format
 msgid "  Offset: %#08lx  Link: %lx (%s)\n"
 msgstr "  óÍÅÝÅÎÉÅ: %#08lx  óÓÙÌËÁ: %lx (%s)\n"
 
-#: readelf.c:5961
+#: readelf.c:6228
 msgid "version definition section"
 msgstr "ÒÁÚÄÅÌ ÏÐÉÓÁÎÉÑ ×ÅÒÓÉÉ"
 
-#: readelf.c:5987
+#: readelf.c:6254
 #, c-format
 msgid "  %#06x: Rev: %d  Flags: %s"
 msgstr "  %#06x: òÅ×ÉÚÉÑ: %d  æÌÁÇÉ: %s"
 
-#: readelf.c:5990
+#: readelf.c:6257
 #, c-format
 msgid "  Index: %d  Cnt: %d  "
 msgstr "  éÎÄÅËÓ: %d  óÞÅÔÞÉË: %d  "
 
-#: readelf.c:6001
+#: readelf.c:6268
 #, c-format
 msgid "Name: %s\n"
 msgstr "éÍÑ: %s\n"
 
-#: readelf.c:6003
+#: readelf.c:6270
 #, c-format
 msgid "Name index: %ld\n"
 msgstr "éÎÄÅËÓ ÉÍÅÎÉ: %ld\n"
 
-#: readelf.c:6018
+#: readelf.c:6285
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: òÏÄÉÔÅÌØ %d: %s\n"
 
-#: readelf.c:6021
+#: readelf.c:6288
 #, c-format
 msgid "  %#06x: Parent %d, name index: %ld\n"
 msgstr "  %#06x: òÏÄÉÔÅÌØ %d, ÉÎÄÅËÓ ÉÍÅÎÉ: %ld\n"
 
-#: readelf.c:6040
+#: readelf.c:6307
 #, c-format
 msgid ""
 "\n"
@@ -3454,60 +4256,60 @@
 "\n"
 "òÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %ld ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:6043
+#: readelf.c:6310
 #, c-format
 msgid " Addr: 0x"
 msgstr " áÄÒÅÓ: 0x"
 
-#: readelf.c:6045
+#: readelf.c:6312
 #, c-format
 msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
 msgstr "  óÍÅÝÅÎÉÅ: %#08lx  óÓÙÌËÁ ÎÁ ÒÁÚÄÅÌ: %ld (%s)\n"
 
-#: readelf.c:6050
+#: readelf.c:6321
 msgid "version need section"
 msgstr "ÒÁÚÄÅÌ ÚÁ×ÉÓÉÍÏÓÔÅÊ ×ÅÒÓÉÉ"
 
-#: readelf.c:6072
+#: readelf.c:6343
 #, c-format
 msgid "  %#06x: Version: %d"
 msgstr "  %#06x: ÷ÅÒÓÉÑ: %d"
 
-#: readelf.c:6075
+#: readelf.c:6346
 #, c-format
 msgid "  File: %s"
 msgstr "  æÁÊÌ: %s"
 
-#: readelf.c:6077
+#: readelf.c:6348
 #, c-format
 msgid "  File: %lx"
 msgstr "  æÁÊÌ: %lx"
 
-#: readelf.c:6079
+#: readelf.c:6350
 #, c-format
 msgid "  Cnt: %d\n"
 msgstr "  óÞÅÔÞÉË: %d\n"
 
-#: readelf.c:6097
+#: readelf.c:6368
 #, c-format
 msgid "  %#06x:   Name: %s"
 msgstr "  %#06x:   éÍÑ: %s"
 
-#: readelf.c:6100
+#: readelf.c:6371
 #, c-format
 msgid "  %#06x:   Name index: %lx"
 msgstr "  %#06x:   éÎÄÅËÓ ÉÍÅÎÉ: %lx"
 
-#: readelf.c:6103
+#: readelf.c:6374
 #, c-format
 msgid "  Flags: %s  Version: %d\n"
 msgstr "  æÌÁÇÉ: %s  ÷ÅÒÓÉÑ: %d\n"
 
-#: readelf.c:6139
+#: readelf.c:6417
 msgid "version string table"
 msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË ×ÅÒÓÉÉ"
 
-#: readelf.c:6143
+#: readelf.c:6421
 #, c-format
 msgid ""
 "\n"
@@ -3516,40 +4318,40 @@
 "\n"
 "òÁÚÄÅÌ ÓÉÍ×ÏÌÏ× ×ÅÒÓÉÉ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:6146
+#: readelf.c:6424
 #, c-format
 msgid " Addr: "
 msgstr " áÄÒÅÓ: "
 
-#: readelf.c:6156
+#: readelf.c:6434
 msgid "version symbol data"
 msgstr "ÄÁÎÎÙÅ ÓÉÍ×ÏÌÁ ×ÅÒÓÉÉ"
 
-#: readelf.c:6183
+#: readelf.c:6461
 msgid "   0 (*local*)    "
 msgstr "   0 (*ÌÏËÁÌØÎÙÊ*)    "
 
-#: readelf.c:6187
+#: readelf.c:6465
 msgid "   1 (*global*)   "
 msgstr "   1 (*ÇÌÏÂÁÌØÎÙÊ*)   "
 
-#: readelf.c:6223 readelf.c:6677
+#: readelf.c:6503 readelf.c:6969
 msgid "version need"
 msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ"
 
-#: readelf.c:6233
+#: readelf.c:6513
 msgid "version need aux (2)"
 msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (2)"
 
-#: readelf.c:6275 readelf.c:6740
+#: readelf.c:6555 readelf.c:7034
 msgid "version def"
 msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ"
 
-#: readelf.c:6294 readelf.c:6755
+#: readelf.c:6575 readelf.c:7049
 msgid "version def aux"
 msgstr "ÏÐÉÓÁÎÉÅ ×ÅÒÓÉÉ aux"
 
-#: readelf.c:6325
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
@@ -3558,23 +4360,23 @@
 "\n"
 "÷ ÜÔÏÍ ÆÁÊÌÅ ÎÅ ÎÁÊÄÅÎÁ ÉÎÆÏÒÍÁÃÉÑ Ï ×ÅÒÓÉÉ.\n"
 
-#: readelf.c:6456
+#: readelf.c:6740
 msgid "Unable to read in dynamic data\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÄÉÎÁÍÉÞÅÓËÉÅ ÄÁÎÎÙÅ\n"
 
-#: readelf.c:6509
+#: readelf.c:6793
 msgid "Unable to seek to start of dynamic information"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÏÔ ÎÁÞÁÌÁ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ"
 
-#: readelf.c:6515
+#: readelf.c:6799
 msgid "Failed to read in number of buckets\n"
 msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ\n"
 
-#: readelf.c:6521
+#: readelf.c:6805
 msgid "Failed to read in number of chains\n"
 msgstr "óÂÏÊ ÐÒÉ ÓÞÉÔÙ×ÁÎÉÉ ÞÉÓÌÁ ÃÅÐÏÞÅË\n"
 
-#: readelf.c:6541
+#: readelf.c:6825
 #, c-format
 msgid ""
 "\n"
@@ -3583,17 +4385,17 @@
 "\n"
 "ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× ÄÌÑ ÉÚÏÂÒÁÖÅÎÉÑ:\n"
 
-#: readelf.c:6543
+#: readelf.c:6827
 #, c-format
 msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  ïÂÌÁÓÔÉ:    úÎÁÞ   òÁÚÍÅÒ ôÉÐ    ó×ÑÚ  Vis     éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:6545
+#: readelf.c:6829
 #, c-format
 msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  ïÂÌÁÓÔÉ:    úÎÁÞ           òÁÚÍÅÒ ôÉÐ    ó×ÑÚ Vis     éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:6597
+#: readelf.c:6882
 #, c-format
 msgid ""
 "\n"
@@ -3602,29 +4404,29 @@
 "\n"
 "ôÁÂÌÉÃÁ ÓÉÍ×ÏÌÏ× '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:6601
+#: readelf.c:6886
 #, c-format
 msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   þÉÓ:    úÎÁÞ   òÁÚÍ ôÉÐ     ó×ÑÚ   Vis      éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:6603
+#: readelf.c:6888
 #, c-format
 msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   þÉÓ:    úÎÁÞ           òÁÚÍ ôÉÐ     ó×ÑÚ   Vis      éÎÄÅËÓ ÉÍÅÎÉ\n"
 
-#: readelf.c:6649
+#: readelf.c:6939
 msgid "version data"
 msgstr "ÄÁÎÎÙÅ ×ÅÒÓÉÉ"
 
-#: readelf.c:6690
+#: readelf.c:6982
 msgid "version need aux (3)"
 msgstr "ÚÁ×ÉÓÉÍÏÓÔØ ×ÅÒÓÉÉ aux (3)"
 
-#: readelf.c:6715
+#: readelf.c:7009
 msgid "bad dynamic symbol"
 msgstr "ÎÅ×ÅÒÎÙÊ ÄÉÎÁÍÉÞÅÓËÉÊ ÓÉÍ×ÏÌ"
 
-#: readelf.c:6778
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
@@ -3633,7 +4435,7 @@
 "\n"
 "éÎÆÏÒÍÁÃÉÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÓÉÍ×ÏÌÁ ÎÅ ÄÏÓÔÕÐÎÁ ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÓÉÍ×ÏÌÏ×.\n"
 
-#: readelf.c:6790
+#: readelf.c:7085
 #, c-format
 msgid ""
 "\n"
@@ -3642,16 +4444,16 @@
 "\n"
 "çÉÓÔÏÇÒÁÍÍÁ ÄÌÑ ÄÌÉÎÙ ÓÐÉÓËÁ ÏÂÌÁÓÔÅÊ ÐÁÍÑÔÉ (×ÓÅÇÏ %lu ÏÂÌÁÓÔÅÊ):\n"
 
-#: readelf.c:6792
+#: readelf.c:7087
 #, c-format
 msgid " Length  Number     %% of total  Coverage\n"
 msgstr " äÌÉÎÁ þÉÓÌÏ        %% ÏÔ ×ÓÅÇÏ  ïÈ×ÁÔ\n"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
 msgid "Out of memory"
 msgstr "îÅÈ×ÁÔËÁ ÐÁÍÑÔÉ"
 
-#: readelf.c:6862
+#: readelf.c:7157
 #, c-format
 msgid ""
 "\n"
@@ -3660,12 +4462,12 @@
 "\n"
 "óÅÇÍÅÎÔ ÄÉÎÁÍÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%lx ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:6865
+#: readelf.c:7160
 #, c-format
 msgid " Num: Name                           BoundTo     Flags\n"
 msgstr " þÉÓ: éÍÑ                            çÒÁÎÉÃÁ     æÌÁÇÉ\n"
 
-#: readelf.c:6917
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
@@ -3674,7 +4476,7 @@
 "\n"
 "óÂÏÒÏÞÎÙÊ ÄÁÍÐ ÒÁÚÄÅÌÁ %s\n"
 
-#: readelf.c:6938
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
@@ -3683,7 +4485,7 @@
 "\n"
 "òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÄÁÎÎÙÈ ÄÌÑ ÄÁÍÐÁ.\n"
 
-#: readelf.c:6943
+#: readelf.c:7238
 #, c-format
 msgid ""
 "\n"
@@ -3692,779 +4494,73 @@
 "\n"
 "Hex-ÄÁÍÐ ÒÁÚÄÅÌÁ '%s':\n"
 
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "×ÓÔÒÅÞÅÎ ÎÅ×ÅÒÎÏ ÓÆÏÒÍÉÒÏ×ÁÎÎÙÊ ÒÁÓÛÉÒÅÎÎÙÊ line-up!\n"
-
-#: readelf.c:7097
+#: readelf.c:7359
 #, c-format
-msgid "  Extended opcode %d: "
-msgstr "  òÁÓÛÉÒÅÎÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: "
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ ÐÅÒÅÍÅÝÅÎÉÑ 0x%lx × ÒÁÚÄÅÌÅ %s\n"
 
-#: readelf.c:7102
+#: readelf.c:7376
 #, c-format
-msgid ""
-"End of Sequence\n"
-"\n"
-msgstr ""
-"ëÏÎÅà ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n"
-"\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela%s\n"
 
-#: readelf.c:7108
+#: readelf.c:7402
 #, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "ÕÓÔÁÎÏ×ËÁ ÁÄÒÅÓÁ × 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ÐÕÎËÔÁ ôÁÂÌÉÃÙ ÆÁÊÌÏ×\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  ðÕÎËÔ\tëÁÔÁÌÏÇ\t÷ÒÅÍÑ\tòÁÚÍÅÒ\téÍÑ\n"
-
-#: readelf.c:7116
-#, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
-
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
-#, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
-
-#: readelf.c:7124
-#, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-"%s\n"
-"\n"
-
-#: readelf.c:7128
-#, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "îåéú÷åóôîùê: ÄÌÉÎÁ %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_str"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<ÎÅÔ ÒÁÚÄÅÌÁ .debug_str>"
-
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ>"
-
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_loc"
-
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_range"
-
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela%s\n"
-
-#: readelf.c:7321
-#, c-format
 msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
-msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela%s\n"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ ÎÅÏÖÉÄÁÎÎÙÊ ÔÉÐ ÓÉÍ×ÏÌÁ %s × ÐÅÒÅÍÅÝÅÎÉÉ × ÒÁÚÄÅÌÅ .rela.%s\n"
 
-#: readelf.c:7565
+#: readelf.c:7435
 #, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ TAG: %lx"
+msgid "%s section data"
+msgstr "ÄÁÎÎÙÅ ÒÁÚÄÅÌÁ %s"
 
-#: readelf.c:7601
+#: readelf.c:7472
 #, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ FORM: %lx"
-
-#: readelf.c:7610
-#, c-format
-msgid " %lu byte block: "
-msgstr " %lu-ÂÁÊÔÏ×ÙÊ ÂÌÏË: "
-
-#: readelf.c:7944
-#, c-format
-msgid "(User defined location op)"
-msgstr "(ïÐÒÅÄÅÌÅÎÎÏÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
-
-#: readelf.c:7946
-#, c-format
-msgid "(Unknown location op)"
-msgstr "(îÅÉÚ×ÅÓÔÎÏÅ ÒÁÚÍÅÝÅÎÉÅ ÏÐÅÒÁÃÉÉ)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "÷ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÏÍÅÒ ×ÅÒÓÉÉ DWARF ÎÅ 2 ÉÌÉ 3.\n"
-
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "DW_FORM_data8 ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, ËÏÇÄÁ sizeof (ÄÌÉÎÎÏÅ ÃÅÌÏÅ ÞÉÓÌÏ ÂÅÚ ÚÎÁËÁ) != 8\n"
-
-#: readelf.c:8162
-#, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (ËÏÓ×ÅÎÎÁÑ ÓÔÒÏËÁ, ÓÍÅÝÅÎÉÅ: 0x%lx): %s"
-
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÆÏÒÍÁ: %d\n"
-
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(ÎÅ ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
-
-#: readelf.c:8259
-#, c-format
-msgid "(inlined)"
-msgstr "(×ÎÕÔÒÉÓÔÒÏÞÎÙÊ)"
-
-#: readelf.c:8262
-#, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÎÏ ÐÒÏÐÕÝÅÎ)"
-
-#: readelf.c:8265
-#, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(ÏÂßÑ×ÌÅÎ ËÁË ×ÎÕÔÒÉÓÔÒÏÞÎÙÊ, ÔÁË É ÅÓÔØ)"
-
-#: readelf.c:8268
-#, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ ×ÎÕÔÒÉÓÔÒÏÞÎÏÇÏ ÁÔÒÉÂÕÔÁ: %lx)"
-
-#: readelf.c:8413 readelf.c:9537
-#, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [ÂÅÚ DW_AT_frame_base]"
-
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(ÓÐÉÓÏË ÍÅÓÔÏÐÏÌÏÖÅÎÉÑ)"
-
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÚÎÁÞÅÎÉÅ AT: %lx "
-
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÜÌÅÍÅÎÔÏ× comp?"
-
-#: readelf.c:8611
-#, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ ÄÌÑ ÍÁÓÓÉ×Á Ó ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÉÚ %u ÜÌÅÍÅÎÔÏ×"
-
-#: readelf.c:8619 readelf.c:9630
-#, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section '%s' has no debugging data.\n"
 msgstr ""
-"òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
 "\n"
+"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÏÔÌÁÄÏÞÎÙÈ ÄÁÎÎÙÈ.\n"
 
-#: readelf.c:8693
+#: readelf.c:7498
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  åÄÉÎÉÃÁ ËÏÍÐÉÌÑÃÉÉ @ %lx:\n"
+msgid "Unrecognized debug section: %s\n"
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÒÁÚÄÅÌ ÏÔÌÁÄËÉ: %s\n"
 
-#: readelf.c:8694
+#: readelf.c:7533
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   äÌÉÎÁ:         %ld\n"
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "äÌÑ ÒÁÚÄÅÌÁ %d ÄÁÍÐ ÎÅ ÂÙÌ ×ÙÐÏÌÎÅÎ, ÐÏÔÏÍÕ ÞÔÏ ÏÎ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ!\n"
 
-#: readelf.c:8695
-#, c-format
-msgid "   Version:       %d\n"
-msgstr "   ÷ÅÒÓÉÑ:        %d\n"
+#: readelf.c:7791
+msgid "attributes"
+msgstr "ÁÔÒÉÂÕÔÙ"
 
-#: readelf.c:8696
+#: readelf.c:7809
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   óÍÅÝ. ÁÂÂÒÅ×:  %ld\n"
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ïûéâëá: îÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÒÁÚÄÅÌÁ (%d > %d)\n"
 
-#: readelf.c:8697
+#: readelf.c:7830
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   òÁÚÍ. ÕËÁÚÁÔ:  %d\n"
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ïûéâëá: îÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÐÏÄÒÁÚÄÅÌÁ (%d > %d)\n"
 
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
-
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÒÁÚÄÅÌÁ .debug_abbrev!\n"
-
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ debug_abbrev"
-
-#: readelf.c:8759
+#: readelf.c:7880
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÝÅÎÉÅ ÐÕÎËÔÁ %lu × ÔÁÂÌÉÃÅ ÁÂÂÒÅ×ÉÁÃÉÉ\n"
+msgid "Unknown format '%c'\n"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÆÏÒÍÁÔ '%c'\n"
 
-#: readelf.c:8765
-#, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: îÏÍÅÒ ÁÂÂÒÅ×: %lu (%s)\n"
-
-#: readelf.c:8838
-#, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "òÁÚÄÅÌÕ %s ÎÅÏÂÈÏÄÉÍ ÚÁÐÏÌÎÅÎÎÙÊ ÒÁÚÄÅÌ .debug_info\n"
-
-#: readelf.c:8845
-#, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ ÂÏÌØÛÅ ÜÌÅÍÅÎÔÏ× comp, ÞÅÍ ÒÁÚÄÅÌ .debug_info\n"
-
-#: readelf.c:8847
-#, c-format
-msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
-msgstr ""
-"ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ, ÞÔÏ ÒÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ - %d, ÏÔ ÐÏÓÌÅÄÎÅÇÏ ÜÌÅÍÅÎÔÁ comp × .debug_info\n"
-"\n"
-
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "ÉÚ×ÌÅËÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÒÁÚÄÅÌÁ .debug_info"
-
-#: readelf.c:8909
-#, c-format
-msgid ""
-"\n"
-"Dump of debug contents of section %s:\n"
-"\n"
-msgstr ""
-"\n"
-"äÁÍÐ ÄÌÑ ÏÔÌÁÄËÉ ÓÏÄÅÒÖÉÍÏÇÏ ÒÁÚÄÅÌÁ %s:\n"
-"\n"
-
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "ðÏÈÏÖÅ, ÞÔÏ ÓÔÒÏËÁ ÉÎÆÏ ÐÏ×ÒÅÖÄÅÎÁ - ÒÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ\n"
-
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÓÔÒÏËÉ ÉÎÆÏ ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
-
-#: readelf.c:8984
-#, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  äÌÉÎÁ:                       %ld\n"
-
-#: readelf.c:8985
-#, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  DWARF ×ÅÒÓÉÑ:                %d\n"
-
-#: readelf.c:8986
-#, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  äÌÉÎÁ ÐÒÏÌÏÇÁ:               %d\n"
-
-#: readelf.c:8987
-#, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  íÉÎÉÍ. ÄÌÉÎÁ ÉÎÓÔÒÕËÃÉÉ:     %d\n"
-
-#: readelf.c:8988
-#, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr "  îÁÞ. ÚÎÁÞÅÎÉÅ 'is_stmt':     %d\n"
-
-#: readelf.c:8989
-#, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  ïÓÎÏ×ÁÎÉÅ ÓÔÒÏËÉ:            %d\n"
-
-#: readelf.c:8990
-#, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  äÉÁÐÁÚÏÎ ÓÔÒÏËÉ:             %d\n"
-
-#: readelf.c:8991
-#, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  ïÓÎÏ×ÁÎÉÅ ËÏÄÁ ÏÐÅÒÁÃÉÉ:     %d\n"
-
-#: readelf.c:8992
-#, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  (òÁÚÍÅÒ ÕËÁÚÁÔÅÌÑ:           %u)\n"
-
-#: readelf.c:9001
-#, c-format
-msgid ""
-"\n"
-" Opcodes:\n"
-msgstr ""
-"\n"
-" ëÏÄÙ ÏÐÅÒÁÃÉÊ:\n"
-
-#: readelf.c:9004
-#, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  ëÏÄ ÏÐÅÒÁÃÉÉ %d ÓÏÄÅÒÖÉÔ %d ÁÒÇÕÍÅÎÔÏ×\n"
-
-#: readelf.c:9010
-#, c-format
-msgid ""
-"\n"
-" The Directory Table is empty.\n"
-msgstr ""
-"\n"
-" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ× ÐÕÓÔÁ.\n"
-
-#: readelf.c:9013
-#, c-format
-msgid ""
-"\n"
-" The Directory Table:\n"
-msgstr ""
-"\n"
-" ôÁÂÌÉÃÁ ËÁÔÁÌÏÇÏ×:\n"
-
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
-
-#: readelf.c:9028
-#, c-format
-msgid ""
-"\n"
-" The File Name Table is empty.\n"
-msgstr ""
-"\n"
-" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ× ÐÕÓÔÁ.\n"
-
-#: readelf.c:9031
-#, c-format
-msgid ""
-"\n"
-" The File Name Table:\n"
-msgstr ""
-"\n"
-" ôÁÂÌÉÃÁ ÉÍÅÎ ÆÁÊÌÏ×:\n"
-
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
-
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
-
-#. Now display the statements.
-#: readelf.c:9058
-#, c-format
-msgid ""
-"\n"
-" Line Number Statements:\n"
-msgstr ""
-"\n"
-" ïÐÅÒÁÔÏÒÙ ÎÏÍÅÒÁ ÓÔÒÏËÉ:\n"
-
-#: readelf.c:9073
-#, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  óÐÅÃÉÁÌØÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d: ÐÒÏÄ×ÉÖÅÎÉÅ ÁÄÒÅÓÁ ÎÁ %d × 0x%lx"
-
-#: readelf.c:9077
-#, c-format
-msgid " and Line by %d to %d\n"
-msgstr " É ÓÔÒÏËÉ ÎÁ %d × %d\n"
-
-#: readelf.c:9088
-#, c-format
-msgid "  Copy\n"
-msgstr "  ëÏÐÉÑ\n"
-
-#: readelf.c:9095
-#, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ %d × %lx\n"
-
-#: readelf.c:9103
-#, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÔÒÏËÉ ÎÁ %d × %d\n"
-
-#: readelf.c:9110
-#, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ÉÍÅÎÉ ÆÁÊÌÁ × ÐÕÎËÔ %d × ÔÁÂÌÉÃÅ ÉÍÅÎ ÆÁÊÌÏ×\n"
-
-#: readelf.c:9118
-#, c-format
-msgid "  Set column to %d\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ÓÔÏÌÂÃÁ × %d\n"
-
-#: readelf.c:9125
-#, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  õÓÔÁÎÏ×ËÁ is_stmt × %d\n"
-
-#: readelf.c:9130
-#, c-format
-msgid "  Set basic block\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ÂÁÚÏ×ÏÇÏ ÂÌÏËÁ\n"
-
-#: readelf.c:9138
-#, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ÐÏÓÔÏÑÎÎÕÀ %d × 0x%lx\n"
-
-#: readelf.c:9146
-#, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  ðÒÏÄ×ÉÖÅÎÉÅ ÓÞÅÔÞÉËÁ ËÏÍÁÎÄ ÎÁ ×ÅÌÉÞÉÎÕ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ %d × 0x%lx\n"
-
-#: readelf.c:9151
-#, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  õÓÔÁÎÏ×ËÁ prologue_end × `ÉÓÔÉÎÁ'\n"
-
-#: readelf.c:9155
-#, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  õÓÔÁÎÏ×ËÁ epilogue_begin × `ÉÓÔÉÎÁ'\n"
-
-#: readelf.c:9161
-#, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  õÓÔÁÎÏ×ËÁ ISA × %d\n"
-
-#: readelf.c:9165
-#, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÐÅÒÁÃÉÉ %d Ó ÏÐÅÒÁÎÄÁÍÉ: "
-
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
-#, c-format
-msgid ""
-"Contents of the %s section:\n"
-"\n"
-msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ %s:\n"
-"\n"
-
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ pubname ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3\n"
-
-#: readelf.c:9240
-#, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  äÌÉÎÁ:                               %ld\n"
-
-#: readelf.c:9242
-#, c-format
-msgid "  Version:                             %d\n"
-msgstr "  ÷ÅÒÓÉÑ:                              %d\n"
-
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  óÍÅÝÅÎÉÅ × ÒÁÚÄÅÌ .debug_info:       %ld\n"
-
-#: readelf.c:9246
-#, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  òÁÚÍ. ÏÂÌÁÓÔÉ × ÒÁÚÄÅÌÅ .debug_info: %ld\n"
-
-#: readelf.c:9249
-#, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    óÍÅÝÅÎÉÅ\téÍÑ\n"
-
-#: readelf.c:9300
-#, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file - ÎÏÍÅÒ_ÓÔÒÏËÉ: %d ÎÏÍÅÒ_ÆÁÊÌÁ: %d\n"
-
-#: readelf.c:9306
-#, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file\n"
-
-#: readelf.c:9314
-#, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
-
-#: readelf.c:9323
-#, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef - ÎÏÍÅÒ_ÓÔÒÏËÉ : %d ÍÁËÒÏ : %s\n"
-
-#: readelf.c:9335
-#, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext - ËÏÎÓÔÁÎÔÁ : %d ÓÔÒÏËÁ : %s\n"
-
-#: readelf.c:9363
-#, c-format
-msgid "  Number TAG\n"
-msgstr "  þÉÓÌÏ TAG\n"
-
-#: readelf.c:9369
-#, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
-
-#: readelf.c:9372
-msgid "has children"
-msgstr "ÉÍÅÅÔ ÐÏÔÏÍËÏ×"
-
-#: readelf.c:9372
-msgid "no children"
-msgstr "ÎÅÔ ÐÏÔÏÍËÏ×"
-
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
-
-#: readelf.c:9410
-#, c-format
-msgid ""
-"\n"
-"The .debug_loc section is empty.\n"
-msgstr ""
-"\n"
-"òÁÚÄÅÌ .debug_loc ÐÕÓÔ.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
-
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ!\n"
-
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "óÐÉÓËÉ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ × ÒÁÚÄÅÌÅ .debug_loc ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
-
-#: readelf.c:9464
-#, c-format
-msgid ""
-"Contents of the .debug_loc section:\n"
-"\n"
-msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_loc:\n"
-"\n"
-
-#: readelf.c:9465
-#, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅà    òÁÓÛÉÒÅÎÉÅ\n"
-
-#: readelf.c:9495
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÙÒÁ [0x%lx - 0x%lx].\n"
-
-#: readelf.c:9498
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_loc ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx].\n"
-
-#: readelf.c:9512 readelf.c:9837
-#, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <ëÏÎÅà ÓÐÉÓËÁ>\n"
-
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (ÎÁÞÁÌÏ == ËÏÎÅÃ)"
-
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (ÎÁÞÁÌÏ > ËÏÎÅÃ)"
-
-#: readelf.c:9566
-#, c-format
-msgid ""
-"\n"
-"The .debug_str section is empty.\n"
-msgstr ""
-"\n"
-"òÁÚÄÅÌ .debug_str ÐÕÓÔ.\n"
-
-#: readelf.c:9570
-#, c-format
-msgid ""
-"Contents of the .debug_str section:\n"
-"\n"
-msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_str:\n"
-"\n"
-
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "óÅÊÞÁÓ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ aganges ÔÏÌØËÏ ÄÌÑ DWARF ×ÅÒÓÉÉ 2 É 3.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  äÌÉÎÁ:                    %ld\n"
-
-#: readelf.c:9680
-#, c-format
-msgid "  Version:                  %d\n"
-msgstr "  ÷ÅÒÓÉÑ:                   %d\n"
-
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  óÍÅÝÅÎÉÅ × .debug_info:   %lx\n"
-
-#: readelf.c:9682
-#, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  òÁÚÍ. ÕËÁÚÁÔ:             %d\n"
-
-#: readelf.c:9683
-#, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  òÁÚÍ. ÓÅÇÍ.:              %d\n"
-
-#: readelf.c:9685
-#, c-format
-msgid ""
-"\n"
-"    Address  Length\n"
-msgstr ""
-"\n"
-"    áÄÒÅÓ    äÌÉÎÁ\n"
-
-#: readelf.c:9741
-#, c-format
-msgid ""
-"\n"
-"The .debug_ranges section is empty.\n"
-msgstr ""
-"\n"
-"òÁÚÄÅÌ .debug_ranges ÐÕÓÔ.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ .debug_info ÎÅ ÕÐÏÒÑÄÏÞÅÎÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ!\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_info ÎÅÔ ÓÐÉÓËÏ× ÄÉÁÐÁÚÏÎÏ×!\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "óÐÉÓËÉ ÄÉÁÐÁÚÏÎÏ× × ÒÁÚÄÅÌÅ .debug_loc ÎÁÞÉÎÁÀÔÓÑ Ó 0x%lx\n"
-
-#: readelf.c:9795
-#, c-format
-msgid ""
-"Contents of the .debug_ranges section:\n"
-"\n"
-msgstr ""
-"óÏÄÅÒÖÉÍÏÅ ÒÁÚÄÅÌÁ .debug_ranges:\n"
-"\n"
-
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    óÍÅÝ.    îÁÞÁÌÏ   ëÏÎÅÃ\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_ranges ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÙÒÁ [0x%lx - 0x%lx].\n"
-
-#: readelf.c:9823
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "÷ ÒÁÚÄÅÌÅ .debug_ranges ÐÒÉÓÕÔÓÔ×ÕÅÔ ÐÅÒÅËÒÙÔÉÅ [0x%lx - 0x%lx].\n"
-
-#: readelf.c:10017
-#, c-format
-msgid "The section %s contains:\n"
-msgstr "òÁÚÄÅÌ %s ÓÏÄÅÒÖÉÔ:\n"
-
-#: readelf.c:10663
-#, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÉÌÉ ÎÅÉÚ×ÅÓÔÎÙÊ DW_CFA_%d\n"
-
-#: readelf.c:10688
-#, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÒÁÚÄÅÌÁ %s ÅÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ.\n"
-
-#: readelf.c:10732
-#, c-format
-msgid ""
-"\n"
-"Section '%s' has no debugging data.\n"
-msgstr ""
-"\n"
-"òÁÚÄÅÌ '%s' ÎÅ ÓÏÄÅÒÖÉÔ ÏÔÌÁÄÏÞÎÙÈ ÄÁÎÎÙÈ.\n"
-
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "äÁÎÎÙÅ ÒÁÚÄÅÌÁ ÏÔÌÁÄËÉ"
-
-#: readelf.c:10765
-#, c-format
-msgid "Unrecognized debug section: %s\n"
-msgstr "îÅÒÁÓÐÏÚÎÁÎÎÙÊ ÒÁÚÄÅÌ ÏÔÌÁÄËÉ: %s\n"
-
-#: readelf.c:10800
-#, c-format
-msgid "Section %d was not dumped because it does not exist!\n"
-msgstr "äÌÑ ÒÁÚÄÅÌÁ %d ÄÁÍÐ ÎÅ ÂÙÌ ×ÙÐÏÌÎÅÎ, ÐÏÔÏÍÕ ÞÔÏ ÏÎ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ!\n"
-
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "liblist"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "ÏÐÃÉÉ"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4473,15 +4569,15 @@
 "\n"
 "òÁÚÄÅÌ '%s' ÓÏÄÅÒÖÉÔ %d ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "ÓÐÉÓÏË ËÏÎÆÌÉËÔÏ× ÎÁÊÄÅÎ ÂÅÚ ÔÁÂÌÉÃÙ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "ËÏÎÆÌÉËÔ"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4490,15 +4586,15 @@
 "\n"
 "òÁÚÄÅÌ '.conflict' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  îÏÍ:    éÎÄÅËÓ      úÎÁÞ.  éÍÑ"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "ÔÁÂÌÉÃÁ ÓÔÒÏË liblist"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4507,90 +4603,90 @@
 "\n"
 "òÁÚÄÅÌ ÓÐÉÓËÁ ÂÉÂÌÉÏÔÅË '%s' ÓÏÄÅÒÖÉÔ %lu ÐÕÎËÔÏ×:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (×ÓÐÏÍÏÇÁÔÅÌØÎÙÊ ×ÅËÔÏÒ)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (ÓÔÒÕËÔÕÒÁ prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (ÓÔÒÕËÔÕÒÁ prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (ÓÔÒÕËÔÕÒÁ task)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (ÓÔÒÕËÔÕÒÁ user_xfpregs)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (ÓÔÒÕËÔÕÒÁ pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (ÒÅÇÉÓÔÒÙ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (ÓÔÒÕËÔÕÒÁ psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (ÓÔÒÕËÔÕÒÁ lwpstatus_t)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (ÓÔÒÕËÔÕÒÁ lwpsinfo_t)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (ÓÔÒÕËÔÕÒÁ win32_pstatus)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (×ÅÒÓÉÑ)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (ÁÒÈÉÔÅËÔÕÒÁ)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ËÏÍÍÅÎÔÁÒÉÑ: (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "óÔÒÕËÔÕÒÁ procinfo NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (ÓÔÒÕËÔÕÒÁ reg)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPREGS (ÓÔÒÕËÔÕÒÁ fpreg)"
 
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "ËÏÍÍÅÎÔÁÒÉÉ"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4599,27 +4695,27 @@
 "\n"
 "ëÏÍÍÅÎÔÁÒÉÉ ÓÏ ÓÍÅÝÅÎÉÅÍ 0x%08lx ÄÌÉÎÏÊ 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  ÷ÌÁÄÅÌÅÃ\t\tòÁÚÍÅÒ ÄÁÎÎÙÈ\tïÐÉÓÁÎÉÅ\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "ÎÁÊÄÅÎ ÐÏ×ÒÅÖÄÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ ÓÏ ÓÍÅÝÅÎÉÅÍ %x × ÈÒÁÎÉÌÉÝÅ ËÏÍÍÅÎÔÁÒÉÅ×\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "ÎÁÊÄÅÎ ÐÏ×ÒÅÖÄ£ÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ ÓÏ ÓÍÅÝÅÎÉÅÍ %lx × ÈÒÁÎÉÌÉÝÅ ËÏÍÍÅÎÔÁÒÉÅ×\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " ÔÉÐ: %x, ÒÁÚÍ_ÉÍÅÎÉ: %08lx, ÒÁÚÍ_ÏÐÉÓ: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " ÔÉÐ: %lx, ÒÁÚÍ_ÉÍÅÎÉ: %08lx, ÒÁÚÍ_ÏÐÉÓ: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "÷ ÆÁÊÌÅ ÓÏÄÅÒÖÉÍÏÇÏ ÏÔÓÕÔÓÔ×ÕÀÔ ÓÅÇÍÅÎÔÙ ËÏÍÍÅÎÔÁÒÉÅ×.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4627,12 +4723,12 @@
 "üÔÁ ËÏÐÉÑ readelf ÂÙÌÁ ÓÏÂÒÁÎÁ ÂÅÚ ÐÏÄÄÅÒÖËÉ 64-ÂÉÔÎÏÇÏ ÔÉÐÁ\n"
 "ÄÁÎÎÙÈ, É ÐÏÜÔÏÍÕ ÏÎÁ ÎÅ ÍÏÖÅÔ ÞÉÔÁÔØ 64-ÂÉÔÎÙÅ ÆÁÊÌÙ ELF.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: óÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÚÁÇÏÌÏ×ËÁ ÆÁÊÌÁ\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4641,68 +4737,68 @@
 "\n"
 "æÁÊÌ: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n"
 
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÐÒÏÐÕÓËÅ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ× ÁÒÈÉ×Á\n"
 
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÞÔÅÎÉÉ ÔÁÂÌÉÃÙ ÓÔÒÏË\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ ÔÁÂÌÉÃÙ ÓÔÒÏË ÁÒÈÉ×Á %lu\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: ÎÅ×ÅÒÎÏÅ ÉÍÑ ÆÁÊÌÁ ÁÒÈÉ×Á\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: ÓÂÏÊ ÐÒÉ ÐÒÏÉÓËÅ ÓÌÅÄÕÀÝÅÇÏ ÚÁÇÏÌÏ×ËÁ ÁÒÈÉ×Á\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "'%s': îÅÔ ÔÁËÏÇÏ ÆÁÊÌÁ\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ '%s'. óÉÓÔÅÍÎÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "÷ÈÏÄÎÏÊ ÆÁÊÌ '%s' Ñ×ÌÑÅÔÓÑ ÎÅÞÉÔÁÅÍÙÍ.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ '%s' ÐÒÉÞÉÎÁ: %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÆÁÊÌ '%s' ÐÒÉÞÉÎÁ: %s"
@@ -5084,17 +5180,17 @@
 msgid "can't open `%s' for output: %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ `%s' ÄÌÑ ×Ù×ÏÄÁ ÄÁÎÎÙÈ: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr " ïÔÏÂÒÁÖÁÅÔ ÒÁÚÍÅÒÙ ÒÁÚÄÅÌÏ× ×ÎÕÔÒÉ Ä×ÏÉÞÎÙÈ ÆÁÊÌÏ×\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
 msgstr " åÓÌÉ ×ÈÏÄÎÙÅ ÆÁÊÌÙ ÎÅ ÕËÁÚÁÎÙ, ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÆÁÊÌ a.out\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5102,6 +5198,7 @@
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5112,16 +5209,17 @@
 "                                      ÉÌÉ ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÍ ÆÏÒÍÁÔÅ\n"
 "  -t        --totals                  ÷Ù×ÏÄ ÓÕÍÍÁÒÎÙÈ ÒÁÚÍÅÒÏ× (ÔÏÌØËÏ Berkeley)\n"
 "            --target=<bfd-ÉÍÑ>        õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
+"            @<ÆÁÊÌ>                   þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h        --help                    ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v        --version                 ÷Ù×ÏÄ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ --format: %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "îÅ×ÅÒÎÙÊ radix: %s\n"
@@ -5138,6 +5236,7 @@
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5145,10 +5244,11 @@
 "  -q --quick       (ÕÓÔÁÒÅÌÁ - ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
 "  -n --noprescan   îÅ ×ÙÐÏÌÎÑÔØ ÓËÁÎÉÒÏ×ÁÎÉÅ ÄÌÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ commons × defs\n"
 "  -d --debug       ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÏÍ, ÞÔÏ ×ÙÐÏÌÎÑÅÔÓÑ\n"
+"  @<ÆÁÊÌ>          þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help        ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version     ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ %s"
@@ -5286,22 +5386,22 @@
 msgid "Unrecognized demangled builtin type\n"
 msgstr "îÅÏÖÉÄÁÎÎÙÊ ÄÅËÏÄÉÒÏ×ÁÎÎÙÊ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ %s"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "ÎÅ×ÅÒÎÙÊ ÃÅÌÏÞÉÓÌÅÎÎÙÊ ÁÒÇÕÍÅÎÔ %s"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr " ÷Ù×ÏÄÉÔ ÐÒÉÇÏÄÎÙÅ ÄÌÑ ÐÅÞÁÔÉ ÓÔÒÏËÉ × [ÆÁÊÌ(ÁÈ)] (ÐÏ ÕÍÏÌÞÁÎÉÀ stdin)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5314,6 +5414,7 @@
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5327,15 +5428,16 @@
 "  -T --target=<BFD-éíñ>     õËÁÚÁÎÉÅ ÆÏÒÍÁÔÁ Ä×ÏÉÞÎÏÇÏ ÆÁÊÌÁ\n"
 "  -e --encoding={s,S,b,l,B,L} ÷ÙÂÏÒ ÒÁÚÍÅÒÁ ÓÉÍ×ÏÌÁ É endianness:\n"
 "                            s = 7-ÂÉÔ, S = 8-ÂÉÔ, {b,l} = 16-ÂÉÔ, {B,L} = 32-ÂÉÔ\n"
+"  @<ÆÁÊÌ>                   þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                 ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version              ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "÷Ù×ÏÄ ÕÄÏÂÏÞÉÔÁÅÍÏÊ ÄÌÑ ÞÅÌÏ×ÅËÁ ÉÎÔÅÒÐÒÅÔÁÃÉÉ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ SYSROFF\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5346,7 +5448,7 @@
 "  -h --help        ÷Ù×ÏÄ ÜÔÏÊ ÉÎÆÏÒÍÁÃÉÉ\n"
 "  -v --version     ÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÙ\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÈÏÄÎÏÊ ÆÁÊÌ %s"
@@ -5456,14 +5558,16 @@
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "  -r                           ðÒÏÐÕÝÅÎÁ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó rc\n"
+"  @<ÆÁÊÌ>                      þÉÔÁÔØ ÏÐÃÉÉ ÉÚ <ÆÁÊÌÁ>\n"
 "  -h --help                    ÷Ù×ÏÄ ÜÔÏÇÏ ÓÐÒÁ×ÏÞÎÏÇÏ ÓÏÏÂÝÅÎÉÑ\n"
 "  -V --version                 ÷Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5475,20 +5579,20 @@
 "âÅÚ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÉÓÐÏÌØÚÕÅÔ stdin, ÐÏ ÕÍÏÌÞÁÎÉÀ rc. âÅÚ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ\n"
 "ÉÓÐÏÌØÚÕÅÔÓÑ stdout, ÐÏ ÕÍÏÌÞÁÎÉÀ rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -f\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "îÅÔ ÉÍÅÎÉ ÆÁÊÌÁ ÐÏÓÌÅ ÏÐÃÉÉ -fo.\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "ïÐÃÉÑ -I ËÒÁÊÎÅ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ×ÈÏÄÎÏÇÏ ÆÏÒÍÁÔÁ, ÐÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ -J.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "ÎÅÔ ÒÅÓÕÒÓÏ×"
 

Added: branches/binutils/package/binutils/po/rw.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/rw.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/sv.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/sv.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/tr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/tr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/vi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/vi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/binutils/po/vi.po
===================================================================
--- branches/binutils/package/binutils/po/vi.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/po/vi.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -4,10 +4,10 @@
 # 
 msgid ""
 msgstr ""
-"Project-Id-Version: binutils-2.15.96\n"
+"Project-Id-Version: binutils-2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:03+1030\n"
-"PO-Revision-Date: 2006-01-23 23:18+1030\n"
+"POT-Creation-Date: 2005-10-25 09:14+0930\n"
+"PO-Revision-Date: 2006-05-23 17:58+0930\n"
 "Last-Translator: Clytie Siddall <clytie at riverland.net.au>\n"
 "Language-Team: Vietnamese <gnomevi-list at lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -16,27 +16,29 @@
 "Plural-Forms: nplurals=1; plural=0\n"
 "X-Generator: LocFactoryEditor 1.6b31\n"
 
-#: addr2line.c:73
+#: addr2line.c:76
 #, c-format
 msgid "Usage: %s [option(s)] [addr(s)]\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] [địa_chỉ...)]\n"
 
-#: addr2line.c:74
+#: addr2line.c:77
 #, c-format
 msgid " Convert addresses into line number/file name pairs.\n"
 msgstr " Chuyển đổi địa chỉ sang cặp số thứ tự dòng/tên tập tin.\n"
 
-#: addr2line.c:75
+#: addr2line.c:78
 #, c-format
 msgid " If no addresses are specified on the command line, they will be read from stdin\n"
-msgstr "Nếu chưa ghi rõ địa chỉ trên dòng lệnh, sẽ đọc chúng từ thiết bị nhập chuẩn\n"
+msgstr " Nếu chưa ghi rõ địa chỉ trên dòng lệnh, sẽ đọc chúng từ thiết bị nhập chuẩn\n"
 
-#: addr2line.c:76
+#: addr2line.c:79
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -b --target=<bfdname>  Set the binary file format\n"
 "  -e --exe=<executable>  Set the input file name (default is a.out)\n"
+"  -i --inlines\t\t Unwind inlined functions\n"
 "  -s --basenames         Strip directory names\n"
 "  -f --functions         Show function names\n"
 "  -C --demangle[=style]  Demangle function names\n"
@@ -45,9 +47,11 @@
 "\n"
 msgstr ""
 " Tùy chọn:\n"
-"  -b --target=<khuôn_dạng>  \tLập khuôn dạng tập tin nhị phân (_đích_)\n"
+"  @<tập_tin>\t\t\tđọc các tùy chọn từ tập tin đó\n"
+"    -b --target=<khuôn_dạng>  \tLập khuôn dạng tập tin nhị phân (_đích_)\n"
 "  -e --exe=<chương_trình>  \tLập tên tập tin nhập (mặc định là <a.out>)\n"
 "\t\t\t\t\t\t\t\t(_chương trình chạy được_)\n"
+"  -i --inlines\t\t\tTháo ra các hàm trực tiếp\n"
 "  -s --basenames\t\tTước các tên thư mục (_các tên cơ bản_)\n"
 "  -f --functions         \tHiện tên _các chức năng_\n"
 "  -C --demangle[=kiểu_dáng]  \t_Tháo gỡ_ tên chức năng\n"
@@ -55,211 +59,218 @@
 "  -v --version           \tHiện _phiên bản_ của chương trình\n"
 "\n"
 
-#: addr2line.c:88 ar.c:263 coffdump.c:467 nlmconv.c:1110 objcopy.c:478
-#: objcopy.c:512 readelf.c:2631 size.c:99 srconv.c:1731 strings.c:667
-#: sysdump.c:655 windres.c:672
+#: addr2line.c:93 ar.c:263 coffdump.c:466 nlmconv.c:1113 objcopy.c:486
+#: objcopy.c:520 readelf.c:2622 size.c:102 srconv.c:1732 strings.c:725
+#: sysdump.c:648 windres.c:673
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Hãy trình báo lỗi nào cho %s\n"
 
-#: addr2line.c:241
+#: addr2line.c:253
 #, c-format
 msgid "%s: can not get addresses from archive"
 msgstr "%s: không thể lấy địa chỉ từ kho"
 
-#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#: addr2line.c:325 nm.c:1523 objdump.c:3033
 #, c-format
 msgid "unknown demangling style `%s'"
 msgstr "không biết kiểu dáng tháo gõ « %s »"
 
-#: ar.c:205
+#: ar.c:203
 #, c-format
 msgid "no entry %s in archive\n"
 msgstr "không có mục nhập %s trong kho\n"
 
-#: ar.c:221
+#: ar.c:219
 #, c-format
 msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
 msgstr "Cách sử dụng: %s [tùy chọn mô phỏng] [-]{dmpqrstx}[abcfilNoPsSuvV] [tên thành viên] [số đếm] tập_tin_kho tập_tin...\n"
 
-#: ar.c:224
+#: ar.c:222
 #, c-format
 msgid "       %s -M [<mri-script]\n"
 msgstr "       %s -M [<tập_lệnh-mri]\n"
 
-#: ar.c:225
+#: ar.c:223
 #, c-format
 msgid " commands:\n"
 msgstr " lệnh:\n"
 
-#: ar.c:226
+#: ar.c:224
 #, c-format
 msgid "  d            - delete file(s) from the archive\n"
 msgstr "  d            • _xóa bỏ_ tập tin ra kho\n"
 
-#: ar.c:227
+#: ar.c:225
 #, c-format
 msgid "  m[ab]        - move file(s) in the archive\n"
 msgstr "  m[ab]        • _di chuyển_ tập tin trong kho\n"
 
-#: ar.c:228
+#: ar.c:226
 #, c-format
 msgid "  p            - print file(s) found in the archive\n"
 msgstr "  p            • _in_ tập tin được tìm trong kho\n"
 
-#: ar.c:229
+#: ar.c:227
 #, c-format
 msgid "  q[f]         - quick append file(s) to the archive\n"
 msgstr "  q[f]         • phụ thêm _nhanh_ tập tin vào kho\n"
 
-#: ar.c:230
+#: ar.c:228
 #, c-format
 msgid "  r[ab][f][u]  - replace existing or insert new file(s) into the archive\n"
 msgstr "  r[ab][f][u]  • _thay thế_ tập tin đã có, hoặc chèn tập tin mới vào kho\n"
 
-#: ar.c:231
+#: ar.c:229
 #, c-format
 msgid "  t            - display contents of archive\n"
 msgstr "  t            • hiển thị nội dung kho\n"
 
-#: ar.c:232
+#: ar.c:230
 #, c-format
 msgid "  x[o]         - extract file(s) from the archive\n"
 msgstr "  x[o]         • trích tập tin ra kho\n"
 
-#: ar.c:233
+#: ar.c:231
 #, c-format
 msgid " command specific modifiers:\n"
 msgstr " bộ sửa đổi đặc trưng cho lệnh:\n"
 
-#: ar.c:234
+#: ar.c:232
 #, c-format
 msgid "  [a]          - put file(s) after [member-name]\n"
 msgstr "  [a]          • để tập tin _sau_ [tên thành viên]\n"
 
-#: ar.c:235
+#: ar.c:233
 #, c-format
 msgid "  [b]          - put file(s) before [member-name] (same as [i])\n"
 msgstr "  [b]          • để tập tin _trước_ [tên thành viên] (bằng [i])\n"
 
-#: ar.c:236
+#: ar.c:234
 #, c-format
 msgid "  [N]          - use instance [count] of name\n"
 msgstr "  [N]          • dùng lần [số đếm] gặp _tên_\n"
 
-#: ar.c:237
+#: ar.c:235
 #, c-format
 msgid "  [f]          - truncate inserted file names\n"
 msgstr "  [f]         • cắt bớt tên _tập tin_ đã chèn\n"
 
-#: ar.c:238
+#: ar.c:236
 #, c-format
 msgid "  [P]          - use full path names when matching\n"
 msgstr "  [P]          • dùng tên _đường dẫn_ đầy đủ khi khớp\n"
 
-#: ar.c:239
+#: ar.c:237
 #, c-format
 msgid "  [o]          - preserve original dates\n"
 msgstr "  [o]          • bảo tồn các ngày _gốc_\n"
 
-#: ar.c:240
+#: ar.c:238
 #, c-format
 msgid "  [u]          - only replace files that are newer than current archive contents\n"
 msgstr "  [u]          • thay thế chỉ những tập tin mới hơn nội dung kho hiện thời\n"
 
-#: ar.c:241
+#: ar.c:239
 #, c-format
 msgid " generic modifiers:\n"
 msgstr " bộ sửa đổi chung:\n"
 
-#: ar.c:242
+#: ar.c:240
 #, c-format
 msgid "  [c]          - do not warn if the library had to be created\n"
 msgstr "  [c]          • đừng cảnh báo nếu thư viên phải được _tạo_\n"
 
-#: ar.c:243
+#: ar.c:241
 #, c-format
 msgid "  [s]          - create an archive index (cf. ranlib)\n"
 msgstr "  [s]          • tạo chỉ mục kho (như ranlib)\n"
 
-#: ar.c:244
+#: ar.c:242
 #, c-format
 msgid "  [S]          - do not build a symbol table\n"
 msgstr "  [S]          • đừng xây dụng bảng _ký hiệu_\n"
 
-#: ar.c:245
+#: ar.c:243
 #, c-format
 msgid "  [v]          - be verbose\n"
 msgstr "  [v]          • _xuất chi tiết_\n"
 
-#: ar.c:246
+#: ar.c:244
 #, c-format
 msgid "  [V]          - display the version number\n"
 msgstr "  [V]          • hiển thị số thứ tự _phiên bản_\n"
 
-#: ar.c:253
+#: ar.c:245
 #, c-format
+msgid "  @<file>      - read options from <file>\n"
+msgstr "  @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+
+#: ar.c:252
+#, c-format
 msgid "Usage: %s [options] archive\n"
 msgstr "Cách sử dụng: %s [tùy_chọn] kho\n"
 
-#: ar.c:254
+#: ar.c:253
 #, c-format
 msgid " Generate an index to speed access to archives\n"
 msgstr " Tạo ra chỉ mục để tăng tốc độ truy cập kho\n"
 
-#: ar.c:255
+#: ar.c:254
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "Tùy chọn:\n"
-"  -h, --help                  \thiển thị _trợ giúp_ này\n"
+"  @<tập_tin>\t\t\tđọc các tùy chọn từ tập tin đó\n"
+"    -h, --help                 \thiển thị _trợ giúp_ này\n"
 "  -V, --version            \txuất thông tin _phiên bản_\n"
 
-#: ar.c:483
+#: ar.c:485
 msgid "two different operation options specified"
 msgstr "hai tùy chọn thao tác khác đã xác định"
 
-#: ar.c:558
+#: ar.c:560
 #, c-format
 msgid "illegal option -- %c"
 msgstr "không cho phép tùy chọn « -- %c »"
 
-#: ar.c:604
+#: ar.c:606
 msgid "no operation specified"
 msgstr "chưa ghi rõ tùy chọn."
 
-#: ar.c:607
+#: ar.c:609
 msgid "`u' is only meaningful with the `r' option."
 msgstr "« u » có nghĩa chỉ cùng với tùy chọn « r »."
 
-#: ar.c:615
+#: ar.c:617
 msgid "`N' is only meaningful with the `x' and `d' options."
 msgstr "« N » có nghĩa chỉ cùng với tùy chọn « x » và « d »."
 
-#: ar.c:618
+#: ar.c:620
 msgid "Value for `N' must be positive."
 msgstr "Giá trị cho « N » phải là số dương."
 
-#: ar.c:668
+#: ar.c:670
 #, c-format
 msgid "internal error -- this option not implemented"
 msgstr "lỗi nội bộ: chưa thực hiện tùy chọn này"
 
-#: ar.c:737
+#: ar.c:739
 #, c-format
 msgid "creating %s"
 msgstr "đang tạo %s..."
 
-#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#: ar.c:788 ar.c:838 ar.c:1156 objcopy.c:1683
 #, c-format
 msgid "internal stat error on %s"
 msgstr "lỗi stat nôi bộ trên %s"
 
 # Variable: do not translate/ biến: đừng dịch
-#: ar.c:790
+#: ar.c:792
 #, c-format
 msgid ""
 "\n"
@@ -270,37 +281,37 @@
 "<%s>\n"
 "\n"
 
-#: ar.c:806 ar.c:873
+#: ar.c:808 ar.c:875
 #, c-format
 msgid "%s is not a valid archive"
 msgstr "%s không phải là một kho hợp lệ"
 
-#: ar.c:841
+#: ar.c:843
 #, c-format
 msgid "stat returns negative size for %s"
 msgstr "việc stat (lấy các thông tin) trả gởi kích cỡ âm cho %s"
 
-#: ar.c:1059
+#: ar.c:1061
 #, c-format
 msgid "No member named `%s'\n"
 msgstr "Không có thành viên tên « %s »\n"
 
-#: ar.c:1109
+#: ar.c:1111
 #, c-format
 msgid "no entry %s in archive %s!"
 msgstr "không có mục nhập %s trong kho %s."
 
-#: ar.c:1246
+#: ar.c:1248
 #, c-format
 msgid "%s: no archive map to update"
 msgstr "%s: không có ánh xạ kho cần cập nhật"
 
-#: arsup.c:83
+#: arsup.c:87
 #, c-format
 msgid "No entry %s in archive.\n"
 msgstr "Không có mục nhập %s trong kho.\n"
 
-#: arsup.c:109
+#: arsup.c:112
 #, c-format
 msgid "Can't open file %s\n"
 msgstr "Không thể mở tập tin %s\n"
@@ -356,94 +367,96 @@
 msgstr "  Không có tùy chọn đặc trưng cho mô phỏng\n"
 
 #. Macros for common output.
-#: binemul.h:42
+#: binemul.h:40
 #, c-format
 msgid " emulation options: \n"
 msgstr " tùy chọn mô phỏng:\n"
 
-#: bucomm.c:109
+#: bucomm.c:110
 #, c-format
 msgid "can't set BFD default target to `%s': %s"
 msgstr "không thể lập đích mặc định BFD thành « %s »: %s"
 
-#: bucomm.c:120
+#: bucomm.c:121
 #, c-format
 msgid "%s: Matching formats:"
 msgstr "%s: khuôn dạng khớp:"
 
-#: bucomm.c:135
+#: bucomm.c:136
 #, c-format
 msgid "Supported targets:"
 msgstr "Đích hỗ trợ :"
 
-#: bucomm.c:137
+#: bucomm.c:138
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: đích hỗ trợ :"
 
-#: bucomm.c:153
+#: bucomm.c:154
 #, c-format
 msgid "Supported architectures:"
 msgstr "Kiến trúc hỗ trợ :"
 
-#: bucomm.c:155
+#: bucomm.c:156
 #, c-format
 msgid "%s: supported architectures:"
 msgstr "%s: kiến trúc hỗ trợ :"
 
-#: bucomm.c:348
+#: bucomm.c:349
 #, c-format
 msgid "BFD header file version %s\n"
 msgstr "Phiên bản tập tin đầu BFD %s\n"
 
-#: bucomm.c:449
+#: bucomm.c:450
 #, c-format
 msgid "%s: bad number: %s"
 msgstr "%s: số sai: %s"
 
-#: bucomm.c:466 strings.c:386
+#: bucomm.c:467 strings.c:438
 #, c-format
 msgid "'%s': No such file"
 msgstr "« %s »: không có tập tin như vậy"
 
-#: bucomm.c:468 strings.c:388
+#: bucomm.c:469 strings.c:440
 #, c-format
 msgid "Warning: could not locate '%s'.  reason: %s"
 msgstr "Cảnh báo : không thể định vị « %s ». Lý do : %s"
 
-#: bucomm.c:472
+#: bucomm.c:473
 #, c-format
 msgid "Warning: '%s' is not an ordinary file"
 msgstr "Cảnh báo : « %s » không phải là một tập tin chuẩn"
 
-#: coffdump.c:105
+#: coffdump.c:103
 #, c-format
 msgid "#lines %d "
 msgstr "#dòng %d "
 
-#: coffdump.c:459 sysdump.c:648
+#: coffdump.c:457 sysdump.c:641
 #, c-format
 msgid "Usage: %s [option(s)] in-file\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] tập_tin_nhập\n"
 
-#: coffdump.c:460
+#: coffdump.c:458
 #, c-format
 msgid " Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "In ra lời thông dịch cho phép người đọc của tập tin đối tượng SYSROFF\n"
 
-#: coffdump.c:461
+#: coffdump.c:459
 #, c-format
 msgid ""
 " The options are:\n"
+"  @<file>                Read options from <file>\n"
 "  -h --help              Display this information\n"
 "  -v --version           Display the program's version\n"
 "\n"
 msgstr ""
 "Tùy chọn:\n"
-" -h, --help            hiển thị _trợ giúp_ này\n"
+"  @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+"   -h, --help            hiển thị _trợ giúp_ này\n"
 " -v --version         hiển thị _phiên bản_ của chương trình\n"
 
-#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+#: coffdump.c:528 srconv.c:1822 sysdump.c:705
 msgid "no input file specified"
 msgstr "chưa ghi rõ tập tin nhập"
 
@@ -540,545 +553,555 @@
 msgid "debug_write_type: illegal type encountered"
 msgstr "debug_write_type: (gỡ lỗi ghi kiểu) gặp kiểu không được phép"
 
-#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#: dlltool.c:765 dlltool.c:789 dlltool.c:818
 #, c-format
 msgid "Internal error: Unknown machine type: %d"
 msgstr "Lỗi nội bộ : không biết kiểu máy: %d"
 
-#: dlltool.c:862
+#: dlltool.c:854
 #, c-format
 msgid "Can't open def file: %s"
 msgstr "Không thể mở tập tin định nghĩa: %s"
 
-#: dlltool.c:867
+#: dlltool.c:859
 #, c-format
 msgid "Processing def file: %s"
 msgstr "Đang xử lý tập tin định nghĩa: %s"
 
-#: dlltool.c:871
+#: dlltool.c:863
 msgid "Processed def file"
 msgstr "Đã xử lý tập tin định nghĩa"
 
-#: dlltool.c:895
+#: dlltool.c:887
 #, c-format
 msgid "Syntax error in def file %s:%d"
 msgstr "Gặp lỗi cú pháp trong tập tin định nghĩa %s:%d"
 
-#: dlltool.c:930
+#: dlltool.c:922
 #, c-format
 msgid "%s: Path components stripped from image name, '%s'."
 msgstr "%s: các thành phần đường dẫn bị tước ra tên ảnh, « %s »."
 
-#: dlltool.c:939
+#: dlltool.c:931
 #, c-format
 msgid "NAME: %s base: %x"
 msgstr "TÊN: %s cơ bản: %x"
 
-#: dlltool.c:942 dlltool.c:958
+#: dlltool.c:934 dlltool.c:950
 msgid "Can't have LIBRARY and NAME"
 msgstr "Không cho phép dùng cả THƯ VIÊN lẫn TÊN đều"
 
-#: dlltool.c:955
+#: dlltool.c:947
 #, c-format
 msgid "LIBRARY: %s base: %x"
 msgstr "THƯ VIÊN: %s cơ bản: %x"
 
-#: dlltool.c:1191 resrc.c:269
+#: dlltool.c:1183 resrc.c:269
 #, c-format
 msgid "wait: %s"
 msgstr "đợi: %s"
 
-#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#: dlltool.c:1188 dllwrap.c:413 resrc.c:274
 #, c-format
 msgid "subprocess got fatal signal %d"
 msgstr "tiến trình con đã nhận tín hiệu nghiệm trọng %d"
 
-#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#: dlltool.c:1194 dllwrap.c:420 resrc.c:281
 #, c-format
 msgid "%s exited with status %d"
 msgstr "%s đã thoát với trạng thái %d"
 
-#: dlltool.c:1233
+#: dlltool.c:1225
 #, c-format
 msgid "Sucking in info from %s section in %s"
 msgstr "Đang kéo vào thông tin từ phần %s trong %s..."
 
-#: dlltool.c:1358
+#: dlltool.c:1350
 #, c-format
 msgid "Excluding symbol: %s"
 msgstr "Đang loại trừ ký hiệu : %s"
 
-#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#: dlltool.c:1439 dlltool.c:1450 nm.c:1000 nm.c:1011
 #, c-format
 msgid "%s: no symbols"
 msgstr "%s: không có ký hiệu"
 
 #. FIXME: we ought to read in and block out the base relocations.
-#: dlltool.c:1484
+#: dlltool.c:1476
 #, c-format
 msgid "Done reading %s"
 msgstr "Đã đọc xong %s"
 
-#: dlltool.c:1494
+#: dlltool.c:1486
 #, c-format
 msgid "Unable to open object file: %s"
 msgstr "Không thể mở tập tin đối tượng: %s"
 
-#: dlltool.c:1497
+#: dlltool.c:1489
 #, c-format
 msgid "Scanning object file %s"
 msgstr "Đang quét tập tin đối tượng %s..."
 
-#: dlltool.c:1512
+#: dlltool.c:1504
 #, c-format
 msgid "Cannot produce mcore-elf dll from archive file: %s"
 msgstr "Không thể cung cấp « mcore-elf dll » từ tập tin kho: %s"
 
-#: dlltool.c:1598
+#: dlltool.c:1590
 msgid "Adding exports to output file"
 msgstr "Đang thêm các việc xuất vào nhóm kết xuất..."
 
-#: dlltool.c:1646
+#: dlltool.c:1638
 msgid "Added exports to output file"
 msgstr "Đã thêm các việc xuất vào nhóm kết xuất"
 
-#: dlltool.c:1767
+#: dlltool.c:1759
 #, c-format
 msgid "Generating export file: %s"
 msgstr "Đang tạo ra tập tin xuất: %s"
 
-#: dlltool.c:1772
+#: dlltool.c:1764
 #, c-format
 msgid "Unable to open temporary assembler file: %s"
 msgstr "Không thể mở tập tin dịch mã số tạm thời: %s"
 
-#: dlltool.c:1775
+#: dlltool.c:1767
 #, c-format
 msgid "Opened temporary file: %s"
 msgstr "Đã mở tập tin tạm thời: %s"
 
-#: dlltool.c:1997
+#: dlltool.c:1989
 msgid "Generated exports file"
 msgstr "Đã tạo ra tập tin xuất"
 
-#: dlltool.c:2203
+#: dlltool.c:2195
 #, c-format
 msgid "bfd_open failed open stub file: %s"
 msgstr "bfd_open không mở được tập tin stub: %s"
 
-#: dlltool.c:2206
+#: dlltool.c:2198
 #, c-format
 msgid "Creating stub file: %s"
 msgstr "Đang tạo tập tin stub: %s"
 
-#: dlltool.c:2588
+#: dlltool.c:2580
 #, c-format
 msgid "failed to open temporary head file: %s"
 msgstr "lỗi mở tập tin đầu tạm: %s"
 
-#: dlltool.c:2647
+#: dlltool.c:2639
 #, c-format
 msgid "failed to open temporary tail file: %s"
 msgstr "lỗi mở tập tin đuôi tạm: %s"
 
-#: dlltool.c:2714
+#: dlltool.c:2706
 #, c-format
 msgid "Can't open .lib file: %s"
 msgstr "Không thể mở tập tin « .lib » (thư viên): %s"
 
-#: dlltool.c:2717
+#: dlltool.c:2709
 #, c-format
 msgid "Creating library file: %s"
 msgstr "Đang tạo tập tin thư viên: %s"
 
-#: dlltool.c:2800 dlltool.c:2806
+#: dlltool.c:2792 dlltool.c:2798
 #, c-format
 msgid "cannot delete %s: %s"
 msgstr "không thể xóa bỏ %s: %s"
 
-#: dlltool.c:2811
+#: dlltool.c:2803
 msgid "Created lib file"
 msgstr "Đã tạo  tập tin thư viên"
 
-#: dlltool.c:2904
+#: dlltool.c:2882
 #, c-format
 msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
 msgstr "Cảnh báo, đang bỏ qua XUẤT trùng %s %d,%d"
 
-#: dlltool.c:2910
+#: dlltool.c:2888
 #, c-format
 msgid "Error, duplicate EXPORT with oridinals: %s"
 msgstr "Lỗi: XUẤT trùng với điều thứ tự : %s"
 
-#: dlltool.c:3026
+#: dlltool.c:2993
 msgid "Processing definitions"
 msgstr "Đang xử lý các lời định nghĩa..."
 
-#: dlltool.c:3058
+#: dlltool.c:3025
 msgid "Processed definitions"
 msgstr "Đã xử lý các lời định nghĩa"
 
 #. xgetext:c-format
-#: dlltool.c:3065 dllwrap.c:479
+#: dlltool.c:3032 dllwrap.c:474
 #, c-format
 msgid "Usage %s <option(s)> <object-file(s)>\n"
 msgstr "Cách sử dụng %s <tùy_chọn...> <tập_tin_đối_tượng...>\n"
 
 #. xgetext:c-format
-#: dlltool.c:3067
+#: dlltool.c:3034
 #, c-format
 msgid "   -m --machine <machine>    Create as DLL for <machine>.  [default: %s]\n"
 msgstr "   -m --machine <máy>    Tạo dạng DLL cho <máy>.  [mặc định: %s]\n"
 
-#: dlltool.c:3068
+#: dlltool.c:3035
 #, c-format
 msgid "        possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 msgstr "        <máy> có thể: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
 
-#: dlltool.c:3069
+#: dlltool.c:3036
 #, c-format
 msgid "   -e --output-exp <outname> Generate an export file.\n"
 msgstr "   -e --output-exp <tên_tập_tin> \tTạo ra tập tin _xuất_.\n"
 
-#: dlltool.c:3070
+#: dlltool.c:3037
 #, c-format
 msgid "   -l --output-lib <outname> Generate an interface library.\n"
 msgstr "   -l --output-lib <tên_tập_tin> \tTạo _ra thư viên_ giao diện.\n"
 
-#: dlltool.c:3071
+#: dlltool.c:3038
 #, c-format
 msgid "   -a --add-indirect         Add dll indirects to export file.\n"
 msgstr "   -a --add-indirect         _Thêm lời gián tiếp_dạng dll vào tập tin xuất\n"
 
-#: dlltool.c:3072
+#: dlltool.c:3039
 #, c-format
 msgid "   -D --dllname <name>       Name of input dll to put into interface lib.\n"
 msgstr "   -D --dllname <tên>       _Tên dll_ nhập cần để vào thư viên giao diện.\n"
 
-#: dlltool.c:3073
+#: dlltool.c:3040
 #, c-format
 msgid "   -d --input-def <deffile>  Name of .def file to be read in.\n"
 msgstr "   -d --input-def <tên_tập_tin>  \tTên tập tin _định nghĩa_ cần đọc _vào_.\n"
 
-#: dlltool.c:3074
+#: dlltool.c:3041
 #, c-format
 msgid "   -z --output-def <deffile> Name of .def file to be created.\n"
 msgstr "   -z --output-def <tên_tập_tin> Tên tập tin _định nghĩa_ cần tạo (_ra_).\n"
 
-#: dlltool.c:3075
+#: dlltool.c:3042
 #, c-format
 msgid "      --export-all-symbols   Export all symbols to .def\n"
-msgstr "  --export-all-symbols    Tự động _xuất mọi ký hiệu_ vào tập tin định nghĩa\n"
+msgstr "        --export-all-symbols    Tự động _xuất mọi ký hiệu_ vào tập tin định nghĩa\n"
 
-#: dlltool.c:3076
+#: dlltool.c:3043
 #, c-format
 msgid "      --no-export-all-symbols  Only export listed symbols\n"
 msgstr ""
 "      --no-export-all-symbols  \tXuất chỉ những ký hiệu đã liệt kê\n"
 "\t\t\t\t\t\t\t\t(_không xuất mọi ký hiệu_)\n"
 
-#: dlltool.c:3077
+#: dlltool.c:3044
 #, c-format
 msgid "      --exclude-symbols <list> Don't export <list>\n"
 msgstr ""
 "      --exclude-symbols <danh_sách>           Đừng xuất danh sách này\n"
 "\t\t\t\t\t\t\t\t(_loại trừ ký hiệu_)\n"
 
-#: dlltool.c:3078
+#: dlltool.c:3045
 #, c-format
 msgid "      --no-default-excludes  Clear default exclude symbols\n"
 msgstr ""
 "      --no-default-excludes      Xóa các ký hiệu cần loại trừ theo mặc định\n"
 "\t\t\t\t\t\t\t\t(không loại trừ mặc định)\n"
 
-#: dlltool.c:3079
+#: dlltool.c:3046
 #, c-format
 msgid "   -b --base-file <basefile> Read linker generated base file.\n"
 msgstr "   -b --base-file <tên_tập_tin>    Đọc _tập tin cơ bản_ do bộ liên kết tạo ra.\n"
 
-#: dlltool.c:3080
+#: dlltool.c:3047
 #, c-format
 msgid "   -x --no-idata4            Don't generate idata$4 section.\n"
 msgstr "   -x --no-idata4            Đừng tạo ra phần « idata$4 ».\n"
 
-#: dlltool.c:3081
+#: dlltool.c:3048
 #, c-format
 msgid "   -c --no-idata5            Don't generate idata$5 section.\n"
 msgstr "   -c --no-idata5            Đừng tạo ra phần « idata$5 ».\n"
 
-#: dlltool.c:3082
+#: dlltool.c:3049
 #, c-format
 msgid "   -U --add-underscore       Add underscores to symbols in interface library.\n"
 msgstr ""
 "   -U --add-underscore     \t_Thêm dấu gạch dưới_ vào\n"
 "\t\t\t\t\t\tcác ký hiệu trong thư viên giao diện.\n"
 
-#: dlltool.c:3083
+#: dlltool.c:3050
 #, c-format
 msgid "   -k --kill-at              Kill @<n> from exported names.\n"
 msgstr ""
 "   -k --kill-at              Xóa bỏ « @<n> » ra các tên đã xuất.\n"
 "\t\t\t\t\t\t(_buộc kết thúc tại_)\n"
 
-#: dlltool.c:3084
+#: dlltool.c:3051
 #, c-format
 msgid "   -A --add-stdcall-alias    Add aliases without @<n>.\n"
 msgstr ""
 "   -A --add-stdcall-alias    \tThêm biệt hiệu không có « @<n> ».\n"
 "\t\t\t\t\t\t(_thêm biệt hiệu gọi chuẩn_)\n"
 
-#: dlltool.c:3085
+#: dlltool.c:3052
 #, c-format
 msgid "   -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
 msgstr ""
 "   -p --ext-prefix-alias <tiền_tố> \tThêm các biệt hiệu có tiền tố này.\n"
 "\t\t\t\t\t\t(_biệt hiệu tiền tố thêm_)\n"
 
-#: dlltool.c:3086
+#: dlltool.c:3053
 #, c-format
 msgid "   -S --as <name>            Use <name> for assembler.\n"
 msgstr "   -S --as <tên>            \tDùng tên này cho chương trình dịch mã số.\n"
 
-#: dlltool.c:3087
+#: dlltool.c:3054
 #, c-format
 msgid "   -f --as-flags <flags>     Pass <flags> to the assembler.\n"
 msgstr ""
 "   -f --as-flags <các_cờ>     Gởi các cờ này qua cho chương trình dịch mã số.\n"
 "\t\t\t\t\t\t\t(_dạng cờ_)\n"
 
-#: dlltool.c:3088
+#: dlltool.c:3055
 #, c-format
 msgid "   -C --compat-implib        Create backward compatible import library.\n"
 msgstr "   -C --compat-implib        \tTạo _thư viên nhập tương thích_ ngược.\n"
 
-#: dlltool.c:3089
+#: dlltool.c:3056
 #, c-format
 msgid "   -n --no-delete            Keep temp files (repeat for extra preservation).\n"
 msgstr ""
 "   -n --no-delete \t\tGiữ lại các tập tin tạm thời (lặp lại để bảo tồn thêm)\n"
 "\t\t\t\t\t\t(_không xóa bỏ_)\n"
 
-#: dlltool.c:3090
+#: dlltool.c:3057
 #, c-format
 msgid "   -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
 msgstr "   -t --temp-prefix <tiền_tố>\tDùng _tiền tố_ này để tạo tên tập tin _tạm_.\n"
 
-#: dlltool.c:3091
+#: dlltool.c:3058
 #, c-format
 msgid "   -v --verbose              Be verbose.\n"
-msgstr "  -v --verbose               Xuất _chi tiết_.\n"
+msgstr "   -v --verbose               Xuất _chi tiết_.\n"
 
-#: dlltool.c:3092
+#: dlltool.c:3059
 #, c-format
 msgid "   -V --version              Display the program version.\n"
-msgstr "  -V --version       \tHiển thị phiên bản chương trình.\n"
+msgstr "   -V --version       \tHiển thị phiên bản chương trình.\n"
 
-#: dlltool.c:3093
+#: dlltool.c:3060
 #, c-format
 msgid "   -h --help                 Display this information.\n"
-msgstr "  -h --help         \tHiển thị _trợ giúp_ này.\n"
+msgstr "   -h --help         \tHiển thị _trợ giúp_ này.\n"
 
-#: dlltool.c:3095
+#: dlltool.c:3061
 #, c-format
+msgid "   @<file>                   Read options from <file>.\n"
+msgstr "   @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+
+#: dlltool.c:3063
+#, c-format
 msgid "   -M --mcore-elf <outname>  Process mcore-elf object files into <outname>.\n"
 msgstr ""
 "   -M --mcore-elf <tên_tập_tin>\n"
 "\t\tXử lý các tập tin đối tượng kiểu « mcore-elf » vào tập tin tên này.\n"
 
-#: dlltool.c:3096
+#: dlltool.c:3064
 #, c-format
 msgid "   -L --linker <name>        Use <name> as the linker.\n"
 msgstr "   -L --linker <tên>   \t\tDùng tên này là _bộ liên kết_.\n"
 
-#: dlltool.c:3097
+#: dlltool.c:3065
 #, c-format
 msgid "   -F --linker-flags <flags> Pass <flags> to the linker.\n"
 msgstr "   -F --linker-flags <các_cờ> \tGởi _các cờ_ này qua cho _bộ liên kết_.\n"
 
-#: dlltool.c:3211
+#: dlltool.c:3181
 #, c-format
 msgid "Path components stripped from dllname, '%s'."
 msgstr "Các thành phần đường dẫn bị tước ra tên dll, « %s »."
 
-#: dlltool.c:3256
+#: dlltool.c:3226
 #, c-format
 msgid "Unable to open base-file: %s"
 msgstr "Không thể mở tập tin cơ sở: %s"
 
-#: dlltool.c:3288
+#: dlltool.c:3258
 #, c-format
 msgid "Machine '%s' not supported"
 msgstr "Không hỗ trợ máy « %s »"
 
-#: dlltool.c:3392 dllwrap.c:209
+#: dlltool.c:3362 dllwrap.c:204
 #, c-format
 msgid "Tried file: %s"
 msgstr "Đã thử tập tin: %s"
 
-#: dlltool.c:3399 dllwrap.c:216
+#: dlltool.c:3369 dllwrap.c:211
 #, c-format
 msgid "Using file: %s"
 msgstr "Đang dùng tập tin: %s"
 
-#: dllwrap.c:299
+#: dllwrap.c:294
 #, c-format
 msgid "Keeping temporary base file %s"
 msgstr "Đang giữ tập tin cơ bản tạm thời %s"
 
-#: dllwrap.c:301
+#: dllwrap.c:296
 #, c-format
 msgid "Deleting temporary base file %s"
 msgstr "Đang xóa bỏ tập tin cơ bản tạm thời %s..."
 
-#: dllwrap.c:315
+#: dllwrap.c:310
 #, c-format
 msgid "Keeping temporary exp file %s"
 msgstr "Đang giữ tập tin xuất tạm thời %s"
 
-#: dllwrap.c:317
+#: dllwrap.c:312
 #, c-format
 msgid "Deleting temporary exp file %s"
 msgstr "Đang xóa bỏ tập tin xuất tạm thời %s..."
 
-#: dllwrap.c:330
+#: dllwrap.c:325
 #, c-format
 msgid "Keeping temporary def file %s"
 msgstr "Đang giữ tập tin định nghĩa tạm thời %s"
 
-#: dllwrap.c:332
+#: dllwrap.c:327
 #, c-format
 msgid "Deleting temporary def file %s"
 msgstr "Đang xóa bỏ tập tin định nghĩa tạm thời %s..."
 
-#: dllwrap.c:480
+#: dllwrap.c:475
 #, c-format
 msgid "  Generic options:\n"
 msgstr "  Tùy chọn chung:\n"
 
-#: dllwrap.c:481
+#: dllwrap.c:476
 #, c-format
+msgid "   @<file>                Read options from <file>\n"
+msgstr "   @<tập_tin>\t\tđọc các tùy chọn từ tập tin đó\n"
+
+#: dllwrap.c:477
+#, c-format
 msgid "   --quiet, -q            Work quietly\n"
 msgstr "   --quiet, -q            Không xuất chi tiết (_im_)\n"
 
-#: dllwrap.c:482
+#: dllwrap.c:478
 #, c-format
 msgid "   --verbose, -v          Verbose\n"
 msgstr "   --verbose, -v          Xuất _chi tiết_\n"
 
-#: dllwrap.c:483
+#: dllwrap.c:479
 #, c-format
 msgid "   --version              Print dllwrap version\n"
 msgstr "   --version              In ra phiên bản dllwrap\n"
 
-#: dllwrap.c:484
+#: dllwrap.c:480
 #, c-format
 msgid "   --implib <outname>     Synonym for --output-lib\n"
 msgstr "   --implib <tên_tập_tin>     Bằng « --output-lib »\n"
 
-#: dllwrap.c:485
+#: dllwrap.c:481
 #, c-format
 msgid "  Options for %s:\n"
 msgstr "  Tùy chọn cho %s:\n"
 
-#: dllwrap.c:486
+#: dllwrap.c:482
 #, c-format
 msgid "   --driver-name <driver> Defaults to \"gcc\"\n"
 msgstr ""
 "   --driver-name <trình_điều_khiển> \t        Mặc định là « gcc »\n"
 "\t\t\t\t\t\t\t\t(_tên trình điều khiển_)\n"
 
-#: dllwrap.c:487
+#: dllwrap.c:483
 #, c-format
 msgid "   --driver-flags <flags> Override default ld flags\n"
 msgstr ""
 "   --driver-flags <các_cờ> \t\tCó quyền cao hơn các cờ ld mặc định\n"
 "\t\t\t\t\t\t\t\t(_các cờ trình điều khiển_)\n"
 
-#: dllwrap.c:488
+#: dllwrap.c:484
 #, c-format
 msgid "   --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
 msgstr ""
 "   --dlltool-name <dlltool> \t\tMặc định là « dlltool »\n"
 "\t\t\t\t\t\t\t\t(_tên công cụ dlltool_)\n"
 
-#: dllwrap.c:489
+#: dllwrap.c:485
 #, c-format
 msgid "   --entry <entry>        Specify alternate DLL entry point\n"
 msgstr "   --entry <điểm_vào>        \t\tGhi rõ điểm _vào_ DLL xen kẽ\n"
 
-#: dllwrap.c:490
+#: dllwrap.c:486
 #, c-format
 msgid "   --image-base <base>    Specify image base address\n"
 msgstr "   --image-base <cơ_bản>    \tGhi rõ địa chỉ _cơ bản ảnh_\n"
 
-#: dllwrap.c:491
+#: dllwrap.c:487
 #, c-format
 msgid "   --target <machine>     i386-cygwin32 or i386-mingw32\n"
 msgstr "   --target <máy>     i386-cygwin32 hay i386-mingw32\n"
 
-#: dllwrap.c:492
+#: dllwrap.c:488
 #, c-format
 msgid "   --dry-run              Show what needs to be run\n"
 msgstr "   --dry-run              \tHiển thị các điều cần chạy (_chạy thực hành_)\n"
 
-#: dllwrap.c:493
+#: dllwrap.c:489
 #, c-format
 msgid "   --mno-cygwin           Create Mingw DLL\n"
 msgstr "   --mno-cygwin       \tTạo DLL dạng Mingw\n"
 
-#: dllwrap.c:494
+#: dllwrap.c:490
 #, c-format
 msgid "  Options passed to DLLTOOL:\n"
 msgstr "  Các tùy chọn được gởi qua cho DLLTOOL:\n"
 
-#: dllwrap.c:495
+#: dllwrap.c:491
 #, c-format
 msgid "   --machine <machine>\n"
 msgstr "   --machine <máy>\n"
 
-#: dllwrap.c:496
+#: dllwrap.c:492
 #, c-format
 msgid "   --output-exp <outname> Generate export file.\n"
 msgstr "   --output-exp <tên_tập_tin> \t\tTạo ra tập tin _xuất_.\n"
 
-#: dllwrap.c:497
+#: dllwrap.c:493
 #, c-format
 msgid "   --output-lib <outname> Generate input library.\n"
 msgstr "   --output-lib <tên_tập_tin> \t\tTạo _ra thư viên_ nhập.\n"
 
-#: dllwrap.c:498
+#: dllwrap.c:494
 #, c-format
 msgid "   --add-indirect         Add dll indirects to export file.\n"
 msgstr "   --add-indirect         \t\t_Thêm_ các lời _gián tiếp_ vào tập tin xuất.\n"
 
-#: dllwrap.c:499
+#: dllwrap.c:495
 #, c-format
 msgid "   --dllname <name>       Name of input dll to put into output lib.\n"
 msgstr "   --dllname <tên>       \t\t_Tên dll_ nhập cần để vào thư viên xuất.\n"
 
-#: dllwrap.c:500
+#: dllwrap.c:496
 #, c-format
 msgid "   --def <deffile>        Name input .def file\n"
 msgstr "   --def <tên_tập_tin>        \tTên tập tin _định nghĩa_ nhập\n"
 
-#: dllwrap.c:501
+#: dllwrap.c:497
 #, c-format
 msgid "   --output-def <deffile> Name output .def file\n"
 msgstr "   --output-def <tên_tập_tin>\tTên _tập tin định nghĩa xuất_\n"
 
-#: dllwrap.c:502
+#: dllwrap.c:498
 #, c-format
 msgid "   --export-all-symbols     Export all symbols to .def\n"
 msgstr "   --export-all-symbols     _Xuất mọi ký hiệu_ vào tập tin định nghĩa\n"
 
-#: dllwrap.c:503
+#: dllwrap.c:499
 #, c-format
 msgid "   --no-export-all-symbols  Only export .drectve symbols\n"
 msgstr ""
 "   --no-export-all-symbols  \tXuất chỉ ký hiệu kiểu « .drectve ».\n"
 "\t\t\t\t\t\t\t\t(_không xuất mọi ký hiệu_)\n"
 
-#: dllwrap.c:504
+#: dllwrap.c:500
 #, c-format
 msgid "   --exclude-symbols <list> Exclude <list> from .def\n"
 msgstr ""
@@ -1086,67 +1109,67 @@
 "\t\t\t\t\tLoại trừ danh sách này ra tập tin định nghĩa.\n"
 "\t\t\t\t\t\t\t\t(_loại trừ các ký hiệu_)\n"
 
-#: dllwrap.c:505
+#: dllwrap.c:501
 #, c-format
 msgid "   --no-default-excludes    Zap default exclude symbols\n"
 msgstr ""
 "   --no-default-excludes    \t\tSửa mọi ký hiệu loại trừ mặc định.\n"
 "\t\t\t\t\t\t\t\t(_không loại trừ mặc định_)\n"
 
-#: dllwrap.c:506
+#: dllwrap.c:502
 #, c-format
 msgid "   --base-file <basefile> Read linker generated base file\n"
 msgstr "   --base-file <tên_tập_tin>     Đọc _tập tin cơ bản_ do bộ liên kết tạo ra.\n"
 
-#: dllwrap.c:507
+#: dllwrap.c:503
 #, c-format
 msgid "   --no-idata4           Don't generate idata$4 section\n"
 msgstr "   --no-idata4           Đừng tạo ra phần « idata$4 ».\n"
 
-#: dllwrap.c:508
+#: dllwrap.c:504
 #, c-format
 msgid "   --no-idata5           Don't generate idata$5 section\n"
 msgstr "   --no-idata5           Đừng tạo ra phần « idata$5 ».\n"
 
-#: dllwrap.c:509
+#: dllwrap.c:505
 #, c-format
 msgid "   -U                     Add underscores to .lib\n"
 msgstr "   -U                     Thêm dấu gạch _dưới_ vào thư viên\n"
 
-#: dllwrap.c:510
+#: dllwrap.c:506
 #, c-format
 msgid "   -k                     Kill @<n> from exported names\n"
 msgstr ""
 "   -k                     Xóa bỏ « @<n> » ra các tên đã xuất\n"
 "\t\t\t\t\t(_buộc kết thúc_)\n"
 
-#: dllwrap.c:511
+#: dllwrap.c:507
 #, c-format
 msgid "   --add-stdcall-alias    Add aliases without @<n>\n"
 msgstr ""
 "   --add-stdcall-alias    \tThêm biệt hiệu không có « @<n> ».\n"
 "\t\t\t\t\t\t\t(_thêm biệt hiệu gọi chuẩn_)\n"
 
-#: dllwrap.c:512
+#: dllwrap.c:508
 #, c-format
 msgid "   --as <name>            Use <name> for assembler\n"
 msgstr "   --as <tên>           Dùng tên này cho chương trình dịch mã số (_dạng_)\n"
 
-#: dllwrap.c:513
+#: dllwrap.c:509
 #, c-format
 msgid "   --nodelete             Keep temp files.\n"
 msgstr "   --nodelete             Giữ các tập tin tạm (_không xóa bỏ_)\n"
 
-#: dllwrap.c:514
+#: dllwrap.c:510
 #, c-format
 msgid "  Rest are passed unmodified to the language driver\n"
 msgstr "  Các điều còn lại được gởi dạng chưa được sửa đổi qua cho trình điều khiển ngôn ngữ\n"
 
-#: dllwrap.c:784
+#: dllwrap.c:782
 msgid "Must provide at least one of -o or --dllname options"
 msgstr "Phải cung cấp ít nhất một của hai tùy chọn « -o » hay « -dllname »"
 
-#: dllwrap.c:813
+#: dllwrap.c:811
 msgid ""
 "no export definition file provided.\n"
 "Creating one, but that may not be what you want"
@@ -1154,26 +1177,740 @@
 "chưa cung cấp tập tin định nghĩa xuất.\n"
 "Đang tạo một điều, mà có lẽ không phải là điều bạn muốn"
 
-#: dllwrap.c:972
+#: dllwrap.c:970
 #, c-format
 msgid "DLLTOOL name    : %s\n"
 msgstr "Tên công cụ DLLTOOL    : %s\n"
 
-#: dllwrap.c:973
+#: dllwrap.c:971
 #, c-format
 msgid "DLLTOOL options : %s\n"
 msgstr "Tùy chọn DLLTOOL: %s\n"
 
-#: dllwrap.c:974
+#: dllwrap.c:972
 #, c-format
 msgid "DRIVER name     : %s\n"
 msgstr "Tên TRÌNH ĐIỀU KHIỀN     : %s\n"
 
-#: dllwrap.c:975
+#: dllwrap.c:973
 #, c-format
 msgid "DRIVER options  : %s\n"
 msgstr "Tùy chọn TRÌNH ĐIỀU KHIỂN  : %s\n"
 
+#: dwarf.c:93 dwarf.c:137 readelf.c:322 readelf.c:515
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Độ dài dữ liệu không được quản lý: %d\n"
+
+#: dwarf.c:237
+msgid "badly formed extended line op encountered!\n"
+msgstr "gặp thao tác dòng đã mở rộng dạng sai.\n"
+
+#: dwarf.c:244
+#, c-format
+msgid "  Extended opcode %d: "
+msgstr "  Opcode (mã thao tác) đã mở rộng %d: "
+
+#: dwarf.c:249
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Kết thúc dãy\n"
+"\n"
+
+#: dwarf.c:255
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "đặt Địa chỉ là 0x%lx\n"
+
+#: dwarf.c:260
+#, c-format
+msgid "  define new File Table entry\n"
+msgstr "  định nghĩa mục nhập Bảng Tập tin mới\n"
+
+#: dwarf.c:261 dwarf.c:1944
+#, c-format
+msgid "  Entry\tDir\tTime\tSize\tName\n"
+msgstr "  Mục\tTMục\tGiờ\tCỡ\tTên\n"
+
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:263
+#, c-format
+msgid "   %d\t"
+msgstr "   %d\t"
+
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:266 dwarf.c:268 dwarf.c:270 dwarf.c:1956 dwarf.c:1958 dwarf.c:1960
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+# Variable: do not translate/ biến: đừng dịch
+#: dwarf.c:271
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: dwarf.c:275
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "KHÔNG RÕ: độ dài %d\n"
+
+#: dwarf.c:288
+msgid "<no .debug_str section>"
+msgstr "<no .debug_str section>"
+
+#: dwarf.c:294
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "DW_FORM_strp hiệu số quá lớn: %lx\n"
+
+#: dwarf.c:295
+msgid "<offset is too big>"
+msgstr "<offset is too big>"
+
+#: dwarf.c:528
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Giá trị TAG (thẻ) không rõ : %lx"
+
+#: dwarf.c:564
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Giá trị FORM (dạng) không rõ : %lx"
+
+#: dwarf.c:573
+#, c-format
+msgid " %lu byte block: "
+msgstr " Khối %lu byte: "
+
+#: dwarf.c:907
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Thao tác định vị do người dùng định nghĩa)"
+
+#: dwarf.c:909
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Thao tác định vị không rõ)"
+
+#: dwarf.c:955
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Lỗi nội bộ: phiên bản DWARF không phải là 2 hay 3.\n"
+
+#: dwarf.c:1053
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "Không hỗ trợ « DW_FORM_data8 » khi « sizeof (unsigned long) != 8 » [kích cỡ của (dài không ký)]\n"
+
+#: dwarf.c:1102
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (chuỗi gián tiếp, hiệu số: 0x%lx): %s"
+
+#: dwarf.c:1111
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Không nhận diện dạng: %lu\n"
+
+#: dwarf.c:1196
+#, c-format
+msgid "(not inlined)"
+msgstr "(không đặt trực tiếp)"
+
+#: dwarf.c:1199
+#, c-format
+msgid "(inlined)"
+msgstr "(đặt trực tiếp)"
+
+#: dwarf.c:1202
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(khai báo là trực tiếp mà bị bỏ qua)"
+
+#: dwarf.c:1205
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(khai báo là trực tiếp và đặt trực tiếp)"
+
+#: dwarf.c:1208
+#, c-format
+msgid "  (Unknown inline attribute value: %lx)"
+msgstr "  (Không biết giá trị thuộc tính trực tiếp: %lx)"
+
+#: dwarf.c:1354 dwarf.c:2484
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [không có DW_AT_frame_base (cơ bản khung)]"
+
+#: dwarf.c:1357
+#, c-format
+msgid "(location list)"
+msgstr "(danh sách địa điểm)"
+
+#: dwarf.c:1475
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Không biết giá trị AT: %lx"
+
+#: dwarf.c:1544
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Không có đơn vị biên dịch trong phần %s ?"
+
+#: dwarf.c:1553
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Không đủ bộ nhớ cho mảng thông tin gỡ lỗi có mục nhập %u"
+
+#: dwarf.c:1561 dwarf.c:2573
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"Phần %s chứa:\n"
+"\n"
+
+#: dwarf.c:1569
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Không thể định vị phần %s !\n"
+
+#: dwarf.c:1635
+#, c-format
+msgid "  Compilation Unit @ offset 0x%lx:\n"
+msgstr "  Đơn vị biên dịch @ hiệu số 0x%lx:\n"
+
+#: dwarf.c:1636
+#, c-format
+msgid "   Length:        %ld\n"
+msgstr "   Dài:        %ld\n"
+
+#: dwarf.c:1637
+#, c-format
+msgid "   Version:       %d\n"
+msgstr "   Phiên bản:       %d\n"
+
+#: dwarf.c:1638
+#, c-format
+msgid "   Abbrev Offset: %ld\n"
+msgstr "   Hiệu số tắt: %ld\n"
+
+#: dwarf.c:1639
+#, c-format
+msgid "   Pointer Size:  %d\n"
+msgstr "   Cỡ con trỏ :  %d\n"
+
+#: dwarf.c:1644
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Hỗ trợ chỉ thông tin gỡ lỗi phiên bản DWARF 2 và 3 thôi.\n"
+
+#: dwarf.c:1685
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Không thể định vị mục nhâp %lu trong bảng viết tắt\n"
+
+#: dwarf.c:1691
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Số viết tắt: %lu (%s)\n"
+
+#: dwarf.c:1785
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "Phần %s cần phần « .debug_info » (thông tin gỡ lỗi) có dữ liệu\n"
+
+#: dwarf.c:1792
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "Phần %s có nhiều đơn vị biên dịch hơn phần « .debug_info » (thông tin gỡ lỗi)\n"
+
+#: dwarf.c:1794
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+"giả sử kích cỡ con trỏ là %d, từ đơn vị biên dịch cuối cùng trong « .debug_info » (thông tin gỡ lỗi)\n"
+"\n"
+
+#: dwarf.c:1819
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Việc đổ nội dung gỡ lỗi của phần %s:\n"
+
+#: dwarf.c:1858
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Hình như dòng bị hỏng — phần quá nhỏ\n"
+
+#: dwarf.c:1867
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Hỗ trợ hiện thời chỉ thông tin dòng DWARF phiên bản 2 và 3.\n"
+
+#: dwarf.c:1894
+#, c-format
+msgid "  Length:                      %ld\n"
+msgstr "  Dài:                      %ld\n"
+
+#: dwarf.c:1895
+#, c-format
+msgid "  DWARF Version:               %d\n"
+msgstr "  Phiên bản DWARF:               %d\n"
+
+#: dwarf.c:1896
+#, c-format
+msgid "  Prologue Length:             %d\n"
+msgstr "  Dài đoạn mở đầu :             %d\n"
+
+#: dwarf.c:1897
+#, c-format
+msgid "  Minimum Instruction Length:  %d\n"
+msgstr "  Dài câu lệnh tối thiểu :  %d\n"
+
+#: dwarf.c:1898
+#, c-format
+msgid "  Initial value of 'is_stmt':  %d\n"
+msgstr "  Giá trị đầu của « is_stmt »:  %d\n"
+
+#: dwarf.c:1899
+#, c-format
+msgid "  Line Base:                   %d\n"
+msgstr "  Cơ bản dòng:                   %d\n"
+
+#: dwarf.c:1900
+#, c-format
+msgid "  Line Range:                  %d\n"
+msgstr "  Phạm vị dòng:                  %d\n"
+
+#: dwarf.c:1901
+#, c-format
+msgid "  Opcode Base:                 %d\n"
+msgstr "  Cơ bản mã thao tác:                 %d\n"
+
+#: dwarf.c:1902
+#, c-format
+msgid "  (Pointer size:               %u)%s\n"
+msgstr "  (Cỡ con trỏ :\t\t\t%u)%s\n"
+
+#: dwarf.c:1913
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Mã thao tác:\n"
+
+#: dwarf.c:1916
+#, c-format
+msgid "  Opcode %d has %d args\n"
+msgstr "  Mã thao tác %d có %d đối số\n"
+
+#: dwarf.c:1922
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+"  Bảng Thư mục rỗng\n"
+
+#: dwarf.c:1925
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+"  Bảng Thư mục:\n"
+
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:1929
+#, c-format
+msgid "  %s\n"
+msgstr "  %s\n"
+
+#: dwarf.c:1940
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Bảng Tên Tập tin rỗng:\n"
+
+#: dwarf.c:1943
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+"  Bảng Tên Tập tin:\n"
+
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:1951
+#, c-format
+msgid "  %d\t"
+msgstr "  %d\t"
+
+# Variable: do not translate/ biến: đừng dịch
+#: dwarf.c:1962
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:1970
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Câu Số thứ tự Dòng:\n"
+
+#: dwarf.c:1986
+#, c-format
+msgid "  Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr "  Mã thao tác đặc biệt %d: nâng cao Địa chỉ bước %lu tới 0x%lx"
+
+#: dwarf.c:1990
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " và Dòng bước %d tới %d\n"
+
+#: dwarf.c:1998
+msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+msgstr "Thao tác kéo dài đường cần thiết kích cỡ con trỏ hợp lệ, đang đoán nó là 4\n"
+
+#: dwarf.c:2007
+#, c-format
+msgid "  Copy\n"
+msgstr "  Chép\n"
+
+#: dwarf.c:2015
+#, c-format
+msgid "  Advance PC by %lu to 0x%lx\n"
+msgstr "  Nâng cao PC bước %lu tới %lx\n"
+
+#: dwarf.c:2023
+#, c-format
+msgid "  Advance Line by %d to %d\n"
+msgstr "  Nâng cao dòng bước %d tới %d\n"
+
+#: dwarf.c:2030
+#, c-format
+msgid "  Set File Name to entry %d in the File Name Table\n"
+msgstr "  Lập Tên Tập tin là mục nhập %d trong Bảng Tên Tập tin\n"
+
+#: dwarf.c:2038
+#, c-format
+msgid "  Set column to %lu\n"
+msgstr "  Lập cột thành %lu\n"
+
+#: dwarf.c:2045
+#, c-format
+msgid "  Set is_stmt to %d\n"
+msgstr "  Lập « is_stmt » (là câu) là %d\n"
+
+#: dwarf.c:2050
+#, c-format
+msgid "  Set basic block\n"
+msgstr "  Lập khối cơ bản\n"
+
+#: dwarf.c:2058
+#, c-format
+msgid "  Advance PC by constant %lu to 0x%lx\n"
+msgstr "  Nâng cao PC bước hằng số %lu tới 0x%lx\n"
+
+#: dwarf.c:2066
+#, c-format
+msgid "  Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr "  Nâng cao PC bước kích cỡ cố định %lu tới 0x%lx\n"
+
+#: dwarf.c:2071
+#, c-format
+msgid "  Set prologue_end to true\n"
+msgstr "  Lập « prologue_end » (kết thúc đoạn mở đầu) là true (đúng)\n"
+
+#: dwarf.c:2075
+#, c-format
+msgid "  Set epilogue_begin to true\n"
+msgstr "  Lập « epilogue_begin » (đầu phần kết) là true (đúng)\n"
+
+#: dwarf.c:2081
+#, c-format
+msgid "  Set ISA to %lu\n"
+msgstr "  Lập ISA thành %lu\n"
+
+#: dwarf.c:2085
+#, c-format
+msgid "  Unknown opcode %d with operands: "
+msgstr "  Gặp opcode (mã thao tác) không rõ %d với tác tử : "
+
+#: dwarf.c:2111 dwarf.c:2197 dwarf.c:2271 dwarf.c:2382 dwarf.c:2514
+#: dwarf.c:2739
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Nội dung của phần %s:\n"
+"\n"
+
+#: dwarf.c:2151
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Hỗ trợ hiện thời chỉ pubnames (tên công) DWARF phiên bản 2 và 3 thôi\n"
+
+#: dwarf.c:2158
+#, c-format
+msgid "  Length:                              %ld\n"
+msgstr "  Length:                              %ld\n"
+
+#: dwarf.c:2160
+#, c-format
+msgid "  Version:                             %d\n"
+msgstr "  Version:                             %d\n"
+
+#: dwarf.c:2162
+#, c-format
+msgid "  Offset into .debug_info section:     %ld\n"
+msgstr "  Hiệu số vào phầnO« ffset into .» (thông tin gỡ lỗi)nfo section:     %ld\n"
+
+#: dwarf.c:2164
+#, c-format
+msgid "  Size of area in .debug_info section: %ld\n"
+msgstr "  Kích cỡ của vùng trong phần « .debug_info » (thông tin gỡ lỗi): %ld\n"
+
+#: dwarf.c:2167
+#, c-format
+msgid ""
+"\n"
+"    Offset\tName\n"
+msgstr ""
+"\n"
+"    Hiệu\tTên\n"
+
+#: dwarf.c:2218
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file (bắt đầu tập tin) — số_dòng: %d số_tập_tin: %d\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file (kết thúc tập tin)\n"
+
+#: dwarf.c:2232
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define (định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
+
+#: dwarf.c:2241
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef (chưa định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
+
+#: dwarf.c:2253
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext (phần mở rộng nhà bán) — hằng số : %d chuối : %s\n"
+
+#: dwarf.c:2282
+#, c-format
+msgid "  Number TAG\n"
+msgstr "  Số THẺ\n"
+
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:2288
+#, c-format
+msgid "   %ld      %s    [%s]\n"
+msgstr "   %ld      %s    [%s]\n"
+
+#: dwarf.c:2291
+msgid "has children"
+msgstr "có điều con"
+
+#: dwarf.c:2291
+msgid "no children"
+msgstr "không có con"
+
+# Variable: don't translate / Biến: đừng dịch
+#: dwarf.c:2294
+#, c-format
+msgid "    %-18s %s\n"
+msgstr "    %-18s %s\n"
+
+#: dwarf.c:2327 dwarf.c:2510 dwarf.c:2684
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Phần %s là rỗng.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2372
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "• Các danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
+
+#: dwarf.c:2375
+msgid "No location lists in .debug_info section!\n"
+msgstr "• Không có danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
+
+#: dwarf.c:2379
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Danh sách địa điểm trong phần %s bắt đầu tại 0x%lx\n"
+
+#: dwarf.c:2383
+#, c-format
+msgid "    Offset   Begin    End      Expression\n"
+msgstr "    HIệu   Đầu    Cuối      Biểu thức\n"
+
+#: dwarf.c:2414
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
+
+#: dwarf.c:2417
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Có một nơi chồng lấp [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
+
+#: dwarf.c:2424
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Có hiệu số 0x%lx lớn hơn kích cỡ của phần « .debug_loc » (địa điểm gỡ lỗi).\n"
+
+#: dwarf.c:2433 dwarf.c:2460 dwarf.c:2470
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "Danh sách địa điểm mà bắt đầu tại hiệu số 0x%lx chưa được kết thúc.\n"
+
+#: dwarf.c:2445 dwarf.c:2784
+#, c-format
+msgid "    %8.8lx <End of list>\n"
+msgstr "    %8.8lx <Kết thúc danh sách>\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "    %8.8lx %8.8lx %8.8lx (base address)\n"
+msgstr "    %8.8lx %8.8lx %8.8lx (địa chỉ cơ bản)\n"
+
+#: dwarf.c:2487 dwarf.c:2801
+msgid " (start == end)"
+msgstr " (start == end)"
+
+#: dwarf.c:2489 dwarf.c:2803
+msgid " (start > end)"
+msgstr " (start > end)"
+
+#: dwarf.c:2618
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Hỗ trợ hiện thời chỉ arange (phạm vị a) DWARF phiên bản 2 và 3 thôi.\n"
+
+#: dwarf.c:2622
+#, c-format
+msgid "  Length:                   %ld\n"
+msgstr "  Dài:                   %ld\n"
+
+#: dwarf.c:2623
+#, c-format
+msgid "  Version:                  %d\n"
+msgstr "  Phiên bản:                  %d\n"
+
+#: dwarf.c:2624
+#, c-format
+msgid "  Offset into .debug_info:  %lx\n"
+msgstr "  Hiệu số vào « .debug_info » (thông tin gỡ lỗi):  %lx\n"
+
+#: dwarf.c:2625
+#, c-format
+msgid "  Pointer Size:             %d\n"
+msgstr "  Kích cỡ con trỏ :             %d\n"
+
+#: dwarf.c:2626
+#, c-format
+msgid "  Segment Size:             %d\n"
+msgstr "  Kích cỡ phân đoạn:             %d\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid ""
+"\n"
+"    Address  Length\n"
+msgstr ""
+"\n"
+"    Độ dài địa chỉ\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:2729
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "• Các danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
+
+#: dwarf.c:2732
+msgid "No range lists in .debug_info section!\n"
+msgstr "• Không có danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Danh sách phạm vị trong phần %s bắt đầu tại 0x%lx\n"
+
+#: dwarf.c:2740
+#, c-format
+msgid "    Offset   Begin    End\n"
+msgstr "    HIệu   Đầu    Cuối\n"
+
+#: dwarf.c:2765
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần %s.\n"
+
+#: dwarf.c:2769
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Có một nơi chồng lấp [0x%lx - 0x%lx] trong phần %s.\n"
+
+#: dwarf.c:2964
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "Phần %s chứa:\n"
+
+#: dwarf.c:3608
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "« DW_CFA_%d » không được hỗ trợ, hay không rõ\n"
+
+#: dwarf.c:3632
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Chưa hỗ trợ khả năng hiển thị nội dung phần %s.\n"
+
+#: dwarf.c:3674
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Lá»—i: "
+
+#: dwarf.c:3685
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Cảnh báo : "
+
 #: emul_aix.c:51
 #, c-format
 msgid "  [-g]         - 32 bit small archive\n"
@@ -1430,124 +2167,124 @@
 msgid "IEEE unsupported complex type size %u\n"
 msgstr "Kích cỡ kiểu phức tạp không được hỗ trợ IEEE %u\n"
 
-#: nlmconv.c:267 srconv.c:1810
+#: nlmconv.c:269 srconv.c:1813
 msgid "input and output files must be different"
 msgstr "tập tin nhập và xuất phải là khác nhau"
 
-#: nlmconv.c:314
+#: nlmconv.c:316
 msgid "input file named both on command line and with INPUT"
 msgstr "tên tập tin được lập cả trên dòng lệnh lẫn bằng INPUT đều"
 
-#: nlmconv.c:323
+#: nlmconv.c:325
 msgid "no input file"
 msgstr "không có tập tin nhập nào"
 
-#: nlmconv.c:353
+#: nlmconv.c:355
 msgid "no name for output file"
 msgstr "không có tên cho tập tin nhập"
 
-#: nlmconv.c:367
+#: nlmconv.c:369
 msgid "warning: input and output formats are not compatible"
 msgstr "cảnh báo : khuôn dạng nhập và xuất không tương thích với nhau"
 
-#: nlmconv.c:396
+#: nlmconv.c:398
 msgid "make .bss section"
 msgstr "tạo phần « .bss »"
 
-#: nlmconv.c:405
+#: nlmconv.c:407
 msgid "make .nlmsections section"
 msgstr "tạo phần « .nlmsections »"
 
-#: nlmconv.c:407
+#: nlmconv.c:409
 msgid "set .nlmsections flags"
 msgstr "đặt các cờ « .nlmsections »"
 
-#: nlmconv.c:435
+#: nlmconv.c:437
 msgid "set .bss vma"
 msgstr "đặt vma .bss"
 
-#: nlmconv.c:442
+#: nlmconv.c:444
 msgid "set .data size"
 msgstr "đặt kích cỡ dữ liệu .data"
 
-#: nlmconv.c:622
+#: nlmconv.c:624
 #, c-format
 msgid "warning: symbol %s imported but not in import list"
 msgstr "cảnh báo : ký hiệu %s được nhập mà không phải trong danh sách nhập"
 
-#: nlmconv.c:642
+#: nlmconv.c:644
 msgid "set start address"
 msgstr "đặt địa chỉ bắt đầu"
 
-#: nlmconv.c:691
+#: nlmconv.c:693
 #, c-format
 msgid "warning: START procedure %s not defined"
 msgstr "cảnh báo : thủ tục START (bắt đầu) %s chưa được định nghĩa"
 
-#: nlmconv.c:693
+#: nlmconv.c:695
 #, c-format
 msgid "warning: EXIT procedure %s not defined"
 msgstr "cảnh báo : thủ tục EXIT (thoát) %s chưa được định nghĩa"
 
-#: nlmconv.c:695
+#: nlmconv.c:697
 #, c-format
 msgid "warning: CHECK procedure %s not defined"
 msgstr "cảnh báo : thủ tục CHECK (kiểm tra) %s chưa được định nghĩa"
 
-#: nlmconv.c:716 nlmconv.c:905
+#: nlmconv.c:718 nlmconv.c:907
 msgid "custom section"
 msgstr "phần tự chọn"
 
-#: nlmconv.c:737 nlmconv.c:934
+#: nlmconv.c:739 nlmconv.c:936
 msgid "help section"
 msgstr "phần trợ giúp"
 
-#: nlmconv.c:759 nlmconv.c:952
+#: nlmconv.c:761 nlmconv.c:954
 msgid "message section"
 msgstr "phần thông điệp"
 
-#: nlmconv.c:775 nlmconv.c:985
+#: nlmconv.c:777 nlmconv.c:987
 msgid "module section"
 msgstr "phần mô-đun"
 
-#: nlmconv.c:795 nlmconv.c:1001
+#: nlmconv.c:797 nlmconv.c:1003
 msgid "rpc section"
 msgstr "phần rpc"
 
 #. There is no place to record this information.
-#: nlmconv.c:831
+#: nlmconv.c:833
 #, c-format
 msgid "%s: warning: shared libraries can not have uninitialized data"
 msgstr "%s: cảnh báo : thư viên dùng chung không thể chứa dữ liệu chưa được sở khởi"
 
-#: nlmconv.c:852 nlmconv.c:1020
+#: nlmconv.c:854 nlmconv.c:1022
 msgid "shared section"
 msgstr "phần dùng chung"
 
-#: nlmconv.c:860
+#: nlmconv.c:862
 msgid "warning: No version number given"
 msgstr "cảnh báo : chưa đưa ra số thứ tự phiên bản"
 
-#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
 #, c-format
 msgid "%s: read: %s"
 msgstr "%s: đọc: %s"
 
-#: nlmconv.c:922
+#: nlmconv.c:924
 msgid "warning: FULLMAP is not supported; try ld -M"
 msgstr "cảnh báo : chưa hỗ trợ FULLMAP; hãy thử « ld -M »"
 
-#: nlmconv.c:1098
+#: nlmconv.c:1100
 #, c-format
 msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] [tập_tin_nhập [tập_tin_xuất]]\n"
 
-#: nlmconv.c:1099
+#: nlmconv.c:1101
 #, c-format
 msgid " Convert an object file into a NetWare Loadable Module\n"
 msgstr " Chuyển đổi tập tin đối tượng sang Mô-đun Tải được NetWare (NetWare Loadable Module)\n"
 
-#: nlmconv.c:1100
+#: nlmconv.c:1102
 #, c-format
 msgid ""
 " The options are:\n"
@@ -1556,80 +2293,82 @@
 "  -T --header-file=<file>       Read <file> for NLM header information\n"
 "  -l --linker=<linker>          Use <linker> for any linking\n"
 "  -d --debug                    Display on stderr the linker command line\n"
+"  @<file>                       Read options from <file>.\n"
 "  -h --help                     Display this information\n"
 "  -v --version                  Display the program's version\n"
 msgstr ""
 " Tùy chọn:\n"
-"  -I --input-target=<tên_bfd>   \t\tLập dạng thức tập tin nhị phân nhập\n"
+"  -I --input-target=<tên_bfd>\t    Lập dạng thức tập tin nhị phân nhập\n"
 "\t\t\t\t\t\t\t\t    (_đích nhập_)\n"
-"  -O --output-target=<tên_bfd>  \tLập dạng thức tập tin nhị phân xuất\n"
+"  -O --output-target=<tên_bfd>\t    Lập dạng thức tập tin nhị phân xuất\n"
 "\t\t\t\t\t\t\t\t    (_đích xuất_)\n"
 "  -T --header-file=<tập_tin>\n"
 "\t\tĐọc tập tin này để  tìm thông tin phần đầu NLM (_tập tin phần đầu_)\n"
-"  -l --linker=<bộ_liên_kết>          \tDùng _bộ liên kết_ này khi liên kết\n"
+"  -l --linker=<bộ_liên_kết>        \t    Dùng _bộ liên kết_ này khi liên kết\n"
 "  -d --debug\n"
 "\tHiển thị trên thiết bị lỗi chuẩn dòng lệnh của bộ liên kết (_gỡ lỗi_)\n"
-"  -h --help                     \t\t\tHiển thị _trợ giúp_ này\n"
-"  -v --version                  \t\t\tHiển thị _phiên bản_ chương trình\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
+"  -h --help                    \t\t    Hiển thị _trợ giúp_ này\n"
+"  -v --version                 \t\t    Hiển thị _phiên bản_ chương trình\n"
 
-#: nlmconv.c:1140
+#: nlmconv.c:1143
 #, c-format
 msgid "support not compiled in for %s"
 msgstr "chưa biên dịch cách hỗ trợ %s"
 
-#: nlmconv.c:1177
+#: nlmconv.c:1180
 msgid "make section"
 msgstr "tạo phần"
 
-#: nlmconv.c:1191
+#: nlmconv.c:1194
 msgid "set section size"
 msgstr "lập kích cỡ phần"
 
-#: nlmconv.c:1197
+#: nlmconv.c:1200
 msgid "set section alignment"
 msgstr "lập canh lề phần"
 
-#: nlmconv.c:1201
+#: nlmconv.c:1204
 msgid "set section flags"
 msgstr "lập các cờ phân"
 
-#: nlmconv.c:1212
+#: nlmconv.c:1215
 msgid "set .nlmsections size"
 msgstr "lập kích cỡ « .nlmsections »"
 
-#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
 msgid "set .nlmsection contents"
 msgstr "lập nội dung « .nlmsections »"
 
-#: nlmconv.c:1794
+#: nlmconv.c:1797
 msgid "stub section sizes"
 msgstr "kích cỡ phần stub"
 
-#: nlmconv.c:1841
+#: nlmconv.c:1844
 msgid "writing stub"
 msgstr "Ä‘ang ghi stub..."
 
-#: nlmconv.c:1925
+#: nlmconv.c:1928
 #, c-format
 msgid "unresolved PC relative reloc against %s"
 msgstr "có việc định vị lại liên quan đến PC chưa tháo gỡ đối với %s"
 
-#: nlmconv.c:1989
+#: nlmconv.c:1992
 #, c-format
 msgid "overflow when adjusting relocation against %s"
 msgstr "trán khi điều chỉnh việc định vị lại đối với %s"
 
-#: nlmconv.c:2116
+#: nlmconv.c:2119
 #, c-format
 msgid "%s: execution of %s failed: "
-msgstr "%s: việc thực hiện %s bị lỗi:"
+msgstr "%s: việc thực hiện %s bị lỗi: "
 
-#: nlmconv.c:2131
+#: nlmconv.c:2134
 #, c-format
 msgid "Execution of %s failed"
 msgstr "Việc thực hiện %s bị lỗi"
 
-#: nm.c:224 size.c:80 strings.c:651
+#: nm.c:224 size.c:82 strings.c:708
 #, c-format
 msgid "Usage: %s [option(s)] [file(s)]\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] [tập_tin...]\n"
@@ -1673,6 +2412,7 @@
 "      --target=BFDNAME   Specify the target object format as BFDNAME\n"
 "  -u, --undefined-only   Display only undefined symbols\n"
 "  -X 32_64               (ignored)\n"
+"  @FILE                  Read options from FILE\n"
 "  -h, --help             Display this information\n"
 "  -V, --version          Display this program's version number\n"
 "\n"
@@ -1708,41 +2448,42 @@
 "      --target=TÊN_BFD   \tGhi rõ dạng thức đối tượng _đích_ là tên BFD này\n"
 "  -u, --undefined-only   \tHiển thị _chỉ_ ký hiệu _chưa được định nghĩa_\n"
 "  -X 32_64               \t\t(bị bỏ qua)\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
 "  -h, --help             \t\tHiển thị _trợ giúp_ này\n"
 "  -V, --version          \t\tHiển thị số thứ tự _phiên bản_ của chương trình này\n"
 "\n"
 
-#: nm.c:262 objdump.c:232
+#: nm.c:263 objdump.c:236
 #, c-format
 msgid "Report bugs to %s.\n"
 msgstr "Hãy trình báo lỗi nào cho %s\n"
 
-#: nm.c:294
+#: nm.c:295
 #, c-format
 msgid "%s: invalid radix"
 msgstr "%s: cơ sở không hợp lệ"
 
-#: nm.c:318
+#: nm.c:319
 #, c-format
 msgid "%s: invalid output format"
 msgstr "%s: dạng thức xuất không hợp lệ"
 
-#: nm.c:339 readelf.c:6342 readelf.c:6378
+#: nm.c:340 readelf.c:6623 readelf.c:6659
 #, c-format
 msgid "<processor specific>: %d"
 msgstr "<đặc trưng cho bộ xử lý>: %d"
 
-#: nm.c:341 readelf.c:6345 readelf.c:6390
+#: nm.c:342 readelf.c:6626 readelf.c:6671
 #, c-format
 msgid "<OS specific>: %d"
 msgstr "<đặc trưng cho hệ điều hành>: %d"
 
-#: nm.c:343 readelf.c:6347 readelf.c:6393
+#: nm.c:344 readelf.c:6628 readelf.c:6674
 #, c-format
 msgid "<unknown>: %d"
 msgstr "<không biết>: %d"
 
-#: nm.c:380
+#: nm.c:381
 #, c-format
 msgid ""
 "\n"
@@ -1751,7 +2492,7 @@
 "\n"
 "Chỉ mục kho:\n"
 
-#: nm.c:1225
+#: nm.c:1227
 #, c-format
 msgid ""
 "\n"
@@ -1764,7 +2505,7 @@
 "Ký hiệu chưa được định nghĩa từ %s:\n"
 "\n"
 
-#: nm.c:1227
+#: nm.c:1229
 #, c-format
 msgid ""
 "\n"
@@ -1777,7 +2518,7 @@
 "Ký hiệu từ %s:\n"
 "\n"
 
-#: nm.c:1229 nm.c:1280
+#: nm.c:1231 nm.c:1282
 #, c-format
 msgid ""
 "Name                  Value   Class        Type         Size     Line  Section\n"
@@ -1786,7 +2527,7 @@
 "Tên                  Giá trị   Hạng        Kiểu         Cỡ     Dòng  Phần\n"
 "\n"
 
-#: nm.c:1232 nm.c:1283
+#: nm.c:1234 nm.c:1285
 #, c-format
 msgid ""
 "Name                  Value           Class        Type         Size             Line  Section\n"
@@ -1795,7 +2536,7 @@
 "Name                  Value           Class        Type         Size             Line  Section\n"
 "\n"
 
-#: nm.c:1276
+#: nm.c:1278
 #, c-format
 msgid ""
 "\n"
@@ -1808,7 +2549,7 @@
 "Ký hiệu chưa được định nghĩa từUndefined symbols from %s[%s]:\n"
 "\n"
 
-#: nm.c:1278
+#: nm.c:1280
 #, c-format
 msgid ""
 "\n"
@@ -1821,39 +2562,39 @@
 "Ký hiệu từ %s[%s]:\n"
 "\n"
 
-#: nm.c:1580
+#: nm.c:1584
 msgid "Only -X 32_64 is supported"
 msgstr "Chỉ hỗ trợ « -X 32_64 »"
 
-#: nm.c:1600
+#: nm.c:1604
 msgid "Using the --size-sort and --undefined-only options together"
 msgstr "Dùng tùy chọn cả « --size-sort » lẫn « --undefined-only » đều"
 
-#: nm.c:1601
+#: nm.c:1605
 msgid "will produce no output, since undefined symbols have no size."
 msgstr "sẽ không xuất gì, vì ký hiệu chưa được định nghĩa không có kích cỡ nào."
 
-#: nm.c:1629
+#: nm.c:1633
 #, c-format
 msgid "data size %ld"
 msgstr "cỡ dữ liệu %ld"
 
-#: objcopy.c:396 srconv.c:1721
+#: objcopy.c:401 srconv.c:1721
 #, c-format
 msgid "Usage: %s [option(s)] in-file [out-file]\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] tập_tin_nhập [tập_tin_xuất]\n"
 
-#: objcopy.c:397
+#: objcopy.c:402
 #, c-format
 msgid " Copies a binary file, possibly transforming it in the process\n"
 msgstr " Sao chép tập tin nhị phân, cũng có thể chuyển đổi nó\n"
 
-#: objcopy.c:398 objcopy.c:487
+#: objcopy.c:403 objcopy.c:495
 #, c-format
 msgid " The options are:\n"
 msgstr " Tùy chọn:\n"
 
-#: objcopy.c:399
+#: objcopy.c:404
 #, c-format
 msgid ""
 "  -I --input-target <bfdname>      Assume input file is in format <bfdname>\n"
@@ -1873,8 +2614,9 @@
 "                                   Do not copy symbol <name> unless needed by\n"
 "                                     relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
-"  -K --keep-symbol <name>          Only copy symbol <name>\n"
+"  -K --keep-symbol <name>          Do not strip symbol <name>\n"
 "  -L --localize-symbol <name>      Force symbol <name> to be marked as a local\n"
+"     --globalize-symbol <name>     Force symbol <name> to be marked as a global\n"
 "  -G --keep-global-symbol <name>   Localize all symbols except <name>\n"
 "  -W --weaken-symbol <name>        Force symbol <name> to be marked as a weak\n"
 "     --weaken                      Force all global symbols to be marked as weak\n"
@@ -1915,6 +2657,7 @@
 "                                     in <file>\n"
 "     --keep-symbols <file>         -K for all symbols listed in <file>\n"
 "     --localize-symbols <file>     -L for all symbols listed in <file>\n"
+"     --globalize-symbols <file>    --globalize-symbol for all in <file>\n"
 "     --keep-global-symbols <file>  -G for all symbols listed in <file>\n"
 "     --weaken-symbols <file>       -W for all symbols listed in <file>\n"
 "     --alt-machine-code <index>    Use alternate machine code for output\n"
@@ -1928,6 +2671,7 @@
 "                                   Add <prefix> to start of every allocatable\n"
 "                                     section name\n"
 "  -v --verbose                     List all object files modified\n"
+"  @<file>                          Read options from <file>\n"
 "  -V --version                     Display this program's version number\n"
 "  -h --help                        Display this output\n"
 "     --info                        List object formats & architectures supported\n"
@@ -2047,22 +2791,23 @@
 "\t\t\t\t\t\t\t\t(_tiền tố các phần có thể cấp phát_)\n"
 "  -v --verbose                     \t\tLiệt kê mọi tập tin đối tượng đã được sửa đổi\n"
 "\t\t\t\t\t\t\t\t    (_chi tiết_)\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
 "  -V --version                    Hiển thị số thứ tự _phiên bản_ của chương trình này\n"
 "  -h --help                        \t\t\tHiển thị _trợ giúp_ này\n"
 "     --info                        \t\tLiệt kê các dạng thức và kiến trúc được hỗ trợ\n"
 "\t\t\t\t\t\t\t\t    (_thông tin_)\n"
 
-#: objcopy.c:485
+#: objcopy.c:493
 #, c-format
 msgid "Usage: %s <option(s)> in-file(s)\n"
 msgstr "Cách sử dụng: %s <tùy_chọn> tập_tin_nhập...\n"
 
-#: objcopy.c:486
+#: objcopy.c:494
 #, c-format
 msgid " Removes symbols and sections from files\n"
 msgstr " Gỡ bỏ ký hiệu và phần ra tập tin\n"
 
-#: objcopy.c:488
+#: objcopy.c:496
 #, c-format
 msgid ""
 "  -I --input-target=<bfdname>      Assume input file is in format <bfdname>\n"
@@ -2075,7 +2820,7 @@
 "     --strip-unneeded              Remove all symbols not needed by relocations\n"
 "     --only-keep-debug             Strip everything but the debug information\n"
 "  -N --strip-symbol=<name>         Do not copy symbol <name>\n"
-"  -K --keep-symbol=<name>          Only copy symbol <name>\n"
+"  -K --keep-symbol=<name>          Do not strip symbol <name>\n"
 "  -w --wildcard                    Permit wildcard in symbol comparison\n"
 "  -x --discard-all                 Remove all non-global symbols\n"
 "  -X --discard-locals              Remove any compiler-generated symbols\n"
@@ -2118,249 +2863,261 @@
 "  -h --help                        \t\tHiển thị _trợ giúp_ này\n"
 "     --info                     Liệt kê các dạng thức đối tượng và kiến trúc được hỗ trợ\n"
 "\t\t(thông tin)  -o <tập_tin>                        \tĐể kết _xuất_ đã tướng vào <tập_tin>\n"
+"  @<file>    \t\t\t\t\t   Để dữ liệu xuất đã gỡ bỏ vào tập tin đó\n"
 
-#: objcopy.c:560
+#: objcopy.c:568
 #, c-format
 msgid "unrecognized section flag `%s'"
 msgstr "không nhận ra cờ phần « %s »"
 
-#: objcopy.c:561
+#: objcopy.c:569
 #, c-format
 msgid "supported flags: %s"
 msgstr "các cờ đã hỗ trợ : %s"
 
-#: objcopy.c:638
+#: objcopy.c:646
 #, c-format
 msgid "cannot open '%s': %s"
 msgstr "không thể mở « %s »: %s"
 
-#: objcopy.c:641 objcopy.c:2629
+#: objcopy.c:649 objcopy.c:2722
 #, c-format
 msgid "%s: fread failed"
 msgstr "%s: việc fread (đọc f) bị lỗi"
 
-#: objcopy.c:714
+#: objcopy.c:722
 #, c-format
 msgid "%s:%d: Ignoring rubbish found on this line"
 msgstr "%s:%d: Đang bỏ qua rác được gặp trên dòng này"
 
-#: objcopy.c:976
+#: objcopy.c:996
 #, c-format
 msgid "%s: Multiple redefinition of symbol \"%s\""
 msgstr "%s: Ký hiệu « %s » đã được định nghĩa lại nhiều lần"
 
-#: objcopy.c:980
+#: objcopy.c:1000
 #, c-format
 msgid "%s: Symbol \"%s\" is target of more than one redefinition"
 msgstr "%s: Ký hiệu « %s » là đích của nhiều lời định nghĩa lại"
 
-#: objcopy.c:1008
+#: objcopy.c:1028
 #, c-format
 msgid "couldn't open symbol redefinition file %s (error: %s)"
 msgstr "không thể mở tập tin định nghĩa lại ký hiệu %s (lỗi: %s)"
 
-#: objcopy.c:1086
+#: objcopy.c:1106
 #, c-format
 msgid "%s:%d: garbage found at end of line"
 msgstr "%s:%d: gặp rác tại kết thúc dòng"
 
-#: objcopy.c:1089
+#: objcopy.c:1109
 #, c-format
 msgid "%s:%d: missing new symbol name"
 msgstr "%s:%d: thiếu tên ký hiệu mới"
 
-#: objcopy.c:1099
+#: objcopy.c:1119
 #, c-format
 msgid "%s:%d: premature end of file"
 msgstr "%s:%d: gặp kết thúc tập tin quá sớm"
 
-#: objcopy.c:1124
+#: objcopy.c:1145
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "việc stat (lấy các thông tin) trả gởi kích cỡ âm cho « %s »"
+
+#: objcopy.c:1157
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "chép từ « %s » [không rõ] sang « %s » [không rõ]\n"
+
+#: objcopy.c:1212
 msgid "Unable to change endianness of input file(s)"
 msgstr "Không thể thay đổi tính trạng cuối (endian) của (các) tập tin nhập"
 
-#: objcopy.c:1133
+#: objcopy.c:1221
 #, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr "chép từ %s(%s) đến %s(%s)\n"
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "chép từ « %s » [%s] sang « %s » [%s]\n"
 
-#: objcopy.c:1170
+#: objcopy.c:1258 objcopy.c:1715
 #, c-format
-msgid "Unable to recognise the format of the input file %s"
-msgstr "Không thể nhận diện dạng thức của tập tin nhập %s"
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Không thể nhận diện dạng thức của tập tin nhập « %s »"
 
-#: objcopy.c:1174
+#: objcopy.c:1261
 #, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr "Cảnh báo : Tập tin xuất không thể tiêu biểu kiến trúc %s"
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "Cảnh báo : tập tin xuất không thể tiêu biểu kiến trúc « %s »"
 
-#: objcopy.c:1211
+#: objcopy.c:1305
 #, c-format
 msgid "can't create section `%s': %s"
 msgstr "không thể tạo phần « %s »: %s"
 
-#: objcopy.c:1277
+#: objcopy.c:1356
 msgid "there are no sections to be copied!"
 msgstr "• Không có phần cần sao chép. •"
 
-#: objcopy.c:1323
+#: objcopy.c:1402
 #, c-format
 msgid "Can't fill gap after %s: %s"
 msgstr "Không thể điền vào khe sau : %s: %s"
 
-#: objcopy.c:1348
+#: objcopy.c:1427
 #, c-format
 msgid "Can't add padding to %s: %s"
 msgstr "Không thể thêm đệm vào %s: %s"
 
-#: objcopy.c:1514
+#: objcopy.c:1594
 #, c-format
 msgid "%s: error copying private BFD data: %s"
 msgstr "%s: gặp lỗi khi sao chép dữ liệu BFD riêng : %s"
 
-#: objcopy.c:1525
+#: objcopy.c:1605
 msgid "unknown alternate machine code, ignored"
 msgstr "không biết mã máy xen kẽ nên bỏ qua nó"
 
-#: objcopy.c:1555 objcopy.c:1585
+#: objcopy.c:1635 objcopy.c:1665
 #, c-format
 msgid "cannot mkdir %s for archive copying (error: %s)"
 msgstr "không thể mkdir (tạo thư mục) %s để sao chép kho (lỗi: %s)"
 
-#: objcopy.c:1790
+#: objcopy.c:1787
 #, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "lỗi : tập tin nhập « %s » là rỗng"
+
+#: objcopy.c:1889
+#, c-format
 msgid "Multiple renames of section %s"
 msgstr "Đã thay đổi tên phần %s nhiều lần"
 
-#: objcopy.c:1841
+#: objcopy.c:1940
 msgid "private header data"
 msgstr "dữ liệu dòng đầu riêng"
 
-#: objcopy.c:1849
+#: objcopy.c:1948
 #, c-format
 msgid "%s: error in %s: %s"
 msgstr "%s: lá»—i trong %s: %s"
 
-#: objcopy.c:1903
+#: objcopy.c:2007
 msgid "making"
 msgstr "làm"
 
-#: objcopy.c:1912
+#: objcopy.c:2022
 msgid "size"
 msgstr "cỡ"
 
-#: objcopy.c:1926
+#: objcopy.c:2036
 msgid "vma"
 msgstr "vma"
 
-#: objcopy.c:1951
+#: objcopy.c:2061
 msgid "alignment"
 msgstr "canh lề"
 
-#: objcopy.c:1966
-msgid "flags"
-msgstr "cờ"
-
-#: objcopy.c:1988
+#: objcopy.c:2083
 msgid "private data"
 msgstr "dữ liệu riêng"
 
-#: objcopy.c:1996
+#: objcopy.c:2091
 #, c-format
 msgid "%s: section `%s': error in %s: %s"
 msgstr "%s: phần « %s »: lỗi trong %s: %s"
 
-#: objcopy.c:2274
+#: objcopy.c:2363
 #, c-format
 msgid "%s: can't create debugging section: %s"
 msgstr "%s: không thể tạo phần gỡ lỗi: %s"
 
-#: objcopy.c:2288
+#: objcopy.c:2377
 #, c-format
 msgid "%s: can't set debugging section contents: %s"
 msgstr "%s: không thể đặt nội dung phần gỡ lỗi: %s"
 
-#: objcopy.c:2297
+#: objcopy.c:2386
 #, c-format
 msgid "%s: don't know how to write debugging information for %s"
 msgstr "%s: không biết cách ghi thông tin gỡ lỗi cho %s"
 
-#: objcopy.c:2472
+#: objcopy.c:2561
 msgid "byte number must be non-negative"
 msgstr "số byte phải là không âm"
 
-#: objcopy.c:2482
+#: objcopy.c:2571
 msgid "interleave must be positive"
 msgstr "chen vào phải là dương"
 
-#: objcopy.c:2502 objcopy.c:2510
+#: objcopy.c:2591 objcopy.c:2599
 #, c-format
 msgid "%s both copied and removed"
 msgstr "%s cả được sao chép lẫn bị gỡ bỏ đều"
 
-#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
-#: objcopy.c:2833 objcopy.c:2853
+#: objcopy.c:2696 objcopy.c:2767 objcopy.c:2867 objcopy.c:2898 objcopy.c:2922
+#: objcopy.c:2926 objcopy.c:2946
 #, c-format
 msgid "bad format for %s"
 msgstr "dạng thức sai cho %s"
 
-#: objcopy.c:2624
+#: objcopy.c:2717
 #, c-format
 msgid "cannot open: %s: %s"
 msgstr "không thể mở : %s: %s"
 
-#: objcopy.c:2743
+#: objcopy.c:2836
 #, c-format
 msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
 msgstr "Cảnh báo : đang cắt xén điền-khe từ 0x%s thành 0x%x"
 
-#: objcopy.c:2903
+#: objcopy.c:3000
 msgid "alternate machine code index must be positive"
 msgstr "chỉ mục mã máy xen kẽ phải là dương"
 
-#: objcopy.c:2961
+#: objcopy.c:3058
 msgid "byte number must be less than interleave"
 msgstr "số byte phải là ít hơn chen vào"
 
-#: objcopy.c:2991
+#: objcopy.c:3088
 #, c-format
 msgid "architecture %s unknown"
 msgstr "không biết kiến trúc %s"
 
-#: objcopy.c:2995
+#: objcopy.c:3092
 msgid "Warning: input target 'binary' required for binary architecture parameter."
 msgstr "Cảnh báo : đích nhập « binary » (nhị phân) cần thiết cho tham số kiến trúc nhị phân."
 
-#: objcopy.c:2996
+#: objcopy.c:3093
 #, c-format
 msgid " Argument %s ignored"
 msgstr " Đối số %s bị bỏ qua"
 
-#: objcopy.c:3002
+#: objcopy.c:3099
 #, c-format
 msgid "warning: could not locate '%s'.  System error message: %s"
 msgstr "cảnh báo : không thể định vị « %s ». Thông điệp lỗi hệ thống: %s"
 
-#: objcopy.c:3042 objcopy.c:3056
+#: objcopy.c:3141 objcopy.c:3155
 #, c-format
 msgid "%s %s%c0x%s never used"
 msgstr "%s %s%c0x%s chưa bao giờ dùng"
 
-#: objdump.c:176
+#: objdump.c:178
 #, c-format
 msgid "Usage: %s <option(s)> <file(s)>\n"
 msgstr "Cách sử dụng: %s <tùy_chọn...> <tập_tin...>\n"
 
-#: objdump.c:177
+#: objdump.c:179
 #, c-format
 msgid " Display information from object <file(s)>.\n"
 msgstr " Hiển thị thông tin từ <tập_tin...> đối tượng.\n"
 
-#: objdump.c:178
+#: objdump.c:180
 #, c-format
 msgid " At least one of the following switches must be given:\n"
 msgstr " Phải đưa ra ít nhất một của những cái chuyển theo sau :\n"
 
-#: objdump.c:179
+#: objdump.c:181
 #, c-format
 msgid ""
 "  -a, --archive-headers    Display archive header information\n"
@@ -2375,10 +3132,12 @@
 "  -g, --debugging          Display debug information in object file\n"
 "  -e, --debugging-tags     Display debug information using ctags style\n"
 "  -G, --stabs              Display (in raw form) any STABS info in the file\n"
+"  -W, --dwarf              Display DWARF info in the file\n"
 "  -t, --syms               Display the contents of the symbol table(s)\n"
 "  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n"
 "  -r, --reloc              Display the relocation entries in the file\n"
 "  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n"
+"  @<file>                  Read options from <file>\n"
 "  -v, --version            Display this program's version number\n"
 "  -i, --info               List object formats and architectures supported\n"
 "  -H, --help               Display this information\n"
@@ -2410,12 +3169,13 @@
 "  -R, --dynamic-reloc\n"
 "\t\t\t\t      Hiển thị các mục nhập định vị lại động trong tập tin\n"
 "\t\t(định vị lại động [viết tắt])\n"
+"  @<file>    \t\t\t\t\t    Đọc các tùy chọn từ tập tin đó\n"
 "  -v, --version            Hiển thị số thự tự _phiên bản_ của chương trình này\n"
 "  -i, --info           Liệt kê các dạng thức đối tượng và kiến trúc được hỗ trợ\n"
 "\t\t(thông tin [viết tắt])\n"
 "  -H, --help              \tHiển thị _trợ giúp_ này\n"
 
-#: objdump.c:202
+#: objdump.c:206
 #, c-format
 msgid ""
 "\n"
@@ -2424,7 +3184,7 @@
 "\n"
 " Những cái chuyển theo đây là tùy chọn:\n"
 
-#: objdump.c:203
+#: objdump.c:207
 #, c-format
 msgid ""
 "  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n"
@@ -2494,66 +3254,75 @@
 "\t\t(điều chỉnh vma)      --special-syms          Gồm _các ký hiệu đặc biệt_ trong việc đổ ký hiệu\n"
 "\n"
 
-#: objdump.c:378
+#: objdump.c:389
 #, c-format
 msgid "Sections:\n"
 msgstr "Phần:\n"
 
-#: objdump.c:381 objdump.c:385
+#: objdump.c:392 objdump.c:396
 #, c-format
 msgid "Idx Name          Size      VMA       LMA       File off  Algn"
 msgstr "Idx Name          Size      VMA       LMA       File off  Algn"
 
-#: objdump.c:387
+#: objdump.c:398
 #, c-format
 msgid "Idx Name          Size      VMA               LMA               File off  Algn"
 msgstr "Idx Name          Size      VMA               LMA               File off  Algn"
 
-#: objdump.c:391
+#: objdump.c:402
 #, c-format
 msgid "  Flags"
 msgstr "  Cờ"
 
-#: objdump.c:393
+#: objdump.c:404
 #, c-format
 msgid "  Pg"
 msgstr "  Tr"
 
-#: objdump.c:436
+#: objdump.c:447
 #, c-format
 msgid "%s: not a dynamic object"
 msgstr "%s không phải là môt đối tượng động"
 
-#: objdump.c:1722
+#: objdump.c:1735
 #, c-format
 msgid "Disassembly of section %s:\n"
 msgstr "Việc rã phần %s:\n"
 
-#: objdump.c:1884
+#: objdump.c:1897
 #, c-format
 msgid "Can't use supplied machine %s"
 msgstr "Không thể sử dụng máy đã cung cấp %s"
 
-#: objdump.c:1903
+#: objdump.c:1916
 #, c-format
 msgid "Can't disassemble for architecture %s\n"
 msgstr "Không thể rã cho kiến trúc %s\n"
 
-#: objdump.c:1973
+#: objdump.c:2006
 #, c-format
 msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Không thể lấy nội dung cho phần « %s ».\n"
+
+#: objdump.c:2143
+#, c-format
+msgid ""
 "No %s section present\n"
 "\n"
 msgstr ""
 "Không có phần %s ở\n"
 "\n"
 
-#: objdump.c:1982
+#: objdump.c:2152
 #, c-format
 msgid "Reading %s section of %s failed: %s"
 msgstr "Việc đọc phần %s của %s bị lỗi: %s"
 
-#: objdump.c:2026
+#: objdump.c:2196
 #, c-format
 msgid ""
 "Contents of %s section:\n"
@@ -2562,17 +3331,17 @@
 "Nội dung phần %s\n"
 "\n"
 
-#: objdump.c:2153
+#: objdump.c:2323
 #, c-format
 msgid "architecture: %s, "
 msgstr "kiến trúc: %s, "
 
-#: objdump.c:2156
+#: objdump.c:2326
 #, c-format
 msgid "flags 0x%08x:\n"
 msgstr "cờ 0x%08x:\n"
 
-#: objdump.c:2170
+#: objdump.c:2340
 #, c-format
 msgid ""
 "\n"
@@ -2581,27 +3350,27 @@
 "\n"
 "địa chỉ đầu 0x"
 
-#: objdump.c:2210
+#: objdump.c:2380
 #, c-format
 msgid "Contents of section %s:\n"
 msgstr "Nội dung phần %s:\n"
 
-#: objdump.c:2335
+#: objdump.c:2505
 #, c-format
 msgid "no symbols\n"
 msgstr "không có ký hiệu\n"
 
-#: objdump.c:2342
+#: objdump.c:2512
 #, c-format
 msgid "no information for symbol number %ld\n"
 msgstr "không có thông tin cho ký hiệu số %ld\n"
 
-#: objdump.c:2345
+#: objdump.c:2515
 #, c-format
 msgid "could not determine the type of symbol number %ld\n"
 msgstr "không thể quyết định kiểu ký hiệu số %ld\n"
 
-#: objdump.c:2611
+#: objdump.c:2788
 #, c-format
 msgid ""
 "\n"
@@ -2610,21 +3379,21 @@
 "\n"
 "%s:    dạng thức tập tin %s\n"
 
-#: objdump.c:2662
+#: objdump.c:2845
 #, c-format
 msgid "%s: printing debugging information failed"
 msgstr "%s: việc in ra thông tin gỡ lỗi bị lỗi"
 
-#: objdump.c:2753
+#: objdump.c:2936
 #, c-format
 msgid "In archive %s:\n"
 msgstr "Trong kho %s\n"
 
-#: objdump.c:2873
+#: objdump.c:3058
 msgid "unrecognized -E option"
 msgstr "không nhận ra tùy chọn « -E »"
 
-#: objdump.c:2884
+#: objdump.c:3069
 #, c-format
 msgid "unrecognized --endian type `%s'"
 msgstr "không nhận ra kiểu tính trạng cuối (endian) « %s »"
@@ -2664,178 +3433,168 @@
 msgid "Last stabs entries before error:\n"
 msgstr "Những mục nhập stabs cuối cùng trước lỗi:\n"
 
-#: readelf.c:272
+#: readelf.c:264
 #, c-format
-msgid "%s: Error: "
-msgstr "%s: Lá»—i: "
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Không thể nhảy tới 0x%lx tìm %s\n"
 
-#: readelf.c:283
+#: readelf.c:279
 #, c-format
-msgid "%s: Warning: "
-msgstr "%s: Cảnh báo : "
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Hết bộ nhớ khi cấp phát 0x%lx byte cho %s\n"
 
-#: readelf.c:298
+#: readelf.c:289
 #, c-format
-msgid "Unable to seek to 0x%x for %s\n"
-msgstr "Không thể nhảy tới 0x%x tìm %s\n"
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Không thể đọc nhập 0x%lx byte của %s\n"
 
-#: readelf.c:310
-#, c-format
-msgid "Out of memory allocating 0x%x bytes for %s\n"
-msgstr "Hết bộ nhớ khi cấp phát 0x%x byte cho %s\n"
-
-#: readelf.c:318
-#, c-format
-msgid "Unable to read in 0x%x bytes of %s\n"
-msgstr "Không thể đọc trong 0x%x byte của %s\n"
-
-#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
-#, c-format
-msgid "Unhandled data length: %d\n"
-msgstr "Độ dài dữ liệu không được quản lý: %d\n"
-
-#: readelf.c:752
+#: readelf.c:623
 msgid "Don't know about relocations on this machine architecture\n"
 msgstr "Không biết về việc định vị lại trên kiến trúc máy này\n"
 
-#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
+#: readelf.c:643 readelf.c:671 readelf.c:715 readelf.c:743
 msgid "relocs"
 msgstr "đ.v. lại"
 
-#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+#: readelf.c:654 readelf.c:682 readelf.c:726 readelf.c:754
 msgid "out of memory parsing relocs"
 msgstr "hết bộ nhớ khi phân tách việc định vị lại"
 
-#: readelf.c:933
+#: readelf.c:808
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name + Addend\n"
 msgstr " Hiệu     Tin    Kiểu            Giá trị ký hiệu  Tên ký hiệu + gì thêm\n"
 
-#: readelf.c:935
+#: readelf.c:810
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"
 msgstr " HIệu     Tin    Kiểu    Giá trị ký hiệu Tên ký hiệu + gì thêm\n"
 
-#: readelf.c:940
+#: readelf.c:815
 #, c-format
 msgid " Offset     Info    Type                Sym. Value  Symbol's Name\n"
 msgstr " HIệu     Tin    Kiểu            Giá trị ký hiệu Tên ký hiệu\n"
 
-#: readelf.c:942
+#: readelf.c:817
 #, c-format
 msgid " Offset     Info    Type            Sym.Value  Sym. Name\n"
 msgstr " Hiệu     Tin    Kiểu    Giá trị ký hiệu Tên ký hiệu\n"
 
-#: readelf.c:950
+#: readelf.c:825
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
 msgstr "    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend\n"
 
-#: readelf.c:952
+#: readelf.c:827
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"
 msgstr "  Hiệu        Tin         Kiểu     Giá trị ký hiệu  Tên ký hiệu + gì thêm\n"
 
-#: readelf.c:957
+#: readelf.c:832
 #, c-format
 msgid "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
 msgstr "    Offset             Info             Type               Symbol's Value  Symbol's Name\n"
 
-#: readelf.c:959
+#: readelf.c:834
 #, c-format
 msgid "  Offset          Info           Type           Sym. Value    Sym. Name\n"
 msgstr "  HIệu        Tin         Kiểu      Giá trị ký hiệu  Tên ký hiệu\n"
 
-#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
-#: readelf.c:1337
+#: readelf.c:1127 readelf.c:1129 readelf.c:1238 readelf.c:1240 readelf.c:1249
+#: readelf.c:1251
 #, c-format
 msgid "unrecognized: %-7lx"
 msgstr "không nhận ra: %-7lx"
 
-#: readelf.c:1295
+#: readelf.c:1154
 #, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<số thêm vào không rõ : %lx>"
+
+#: readelf.c:1210
+#, c-format
 msgid "<string table index: %3ld>"
 msgstr "<chỉ mục bảng chuỗi: %3ld>"
 
-#: readelf.c:1297
+#: readelf.c:1212
 #, c-format
 msgid "<corrupt string table index: %3ld>"
 msgstr "<chỉ mục bảng chuỗi bị hỏng: %3ld>"
 
-#: readelf.c:1569
+#: readelf.c:1522
 #, c-format
 msgid "Processor Specific: %lx"
 msgstr "Đặc trưng cho bộ xử lý: %lx"
 
-#: readelf.c:1588
+#: readelf.c:1543
 #, c-format
 msgid "Operating System specific: %lx"
 msgstr "Đặc trưng cho Hệ điều hành: %lx"
 
-#: readelf.c:1592 readelf.c:2370
+#: readelf.c:1547 readelf.c:2349
 #, c-format
 msgid "<unknown>: %lx"
 msgstr "<không rõ>: %lx"
 
-#: readelf.c:1605
+#: readelf.c:1560
 msgid "NONE (None)"
 msgstr "KHÔNG CÓ (Không có)"
 
-#: readelf.c:1606
+#: readelf.c:1561
 msgid "REL (Relocatable file)"
 msgstr "REL (Tập tin có thể _định vị lại_)"
 
-#: readelf.c:1607
+#: readelf.c:1562
 msgid "EXEC (Executable file)"
 msgstr "EXEC (Executable file)"
 
-#: readelf.c:1608
+#: readelf.c:1563
 msgid "DYN (Shared object file)"
 msgstr "DYN (Shared object file)"
 
-#: readelf.c:1609
+#: readelf.c:1564
 msgid "CORE (Core file)"
 msgstr "CORE (Core file)"
 
-#: readelf.c:1613
+#: readelf.c:1568
 #, c-format
 msgid "Processor Specific: (%x)"
 msgstr "Đặc trưng cho bộ xử lý: (%x)"
 
-#: readelf.c:1615
+#: readelf.c:1570
 #, c-format
 msgid "OS Specific: (%x)"
 msgstr "Đặc trưng cho HĐH: (%x)"
 
-#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#: readelf.c:1572 readelf.c:1681 readelf.c:2541
 #, c-format
 msgid "<unknown>: %x"
 msgstr "<không rõ>: %x"
 
-#: readelf.c:1629
+#: readelf.c:1584
 msgid "None"
 msgstr "Không có"
 
-#: readelf.c:2229
+#: readelf.c:2186
 msgid "Standalone App"
 msgstr "Ứng dụng Độc lập"
 
-#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#: readelf.c:2189 readelf.c:2948 readelf.c:2964
 #, c-format
 msgid "<unknown: %x>"
 msgstr "<không rõ : %x>"
 
-#: readelf.c:2597
+#: readelf.c:2586
 #, c-format
 msgid "Usage: readelf <option(s)> elf-file(s)\n"
 msgstr "Cách sử dụng: readelf <tùy_chọn...> tập_tin_elf...\n"
 
-#: readelf.c:2598
+#: readelf.c:2587
 #, c-format
 msgid " Display information about the contents of ELF format files\n"
 msgstr " Hiển thị thông tin về nội dung tập tin dạng thức ELF\n"
 
-#: readelf.c:2599
+#: readelf.c:2588
 #, c-format
 msgid ""
 " Options are:\n"
@@ -2846,6 +3605,7 @@
 "  -S --section-headers   Display the sections' header\n"
 "     --sections          An alias for --section-headers\n"
 "  -g --section-groups    Display the section groups\n"
+"  -t --section-details   Display the section details\n"
 "  -e --headers           Equivalent to: -h -l -S\n"
 "  -s --syms              Display the symbol table\n"
 "      --symbols          An alias for --syms\n"
@@ -2873,6 +3633,7 @@
 "     --sections          \t\t\tBiệt hiệu cho « --section-headers »\n"
 "\t(các phần)\n"
 "  -g --section-groups    \t\t\t     Hiển thị _các nhóm phần_\n"
+"  -t --section-details\t\t\tHiển thị _chi tiết về phần_\n"
 "  -e --headers           \t\t\t\tBằng: -h -l -S\n"
 "\t(các dòng đầu)\n"
 "  -s --syms              \t\t\tHiển thị bảng _ký hiệu_\n"
@@ -2902,7 +3663,7 @@
 "\tRanges\t\tCác phạm vị]\n"
 "       Hiển thị nội dung các phần gỡ lỗi kiểu DWARF2\n"
 
-#: readelf.c:2622
+#: readelf.c:2612
 #, c-format
 msgid ""
 "  -i --instruction-dump=<number>\n"
@@ -2911,110 +3672,112 @@
 "  -i --instruction-dump=<số>\t\tTháo ra nội dung phần <số>\n"
 "\t(đổ câu lệnh)\n"
 
-#: readelf.c:2626
+#: readelf.c:2616
 #, c-format
 msgid ""
 "  -I --histogram         Display histogram of bucket list lengths\n"
 "  -W --wide              Allow output width to exceed 80 characters\n"
+"  @<file>                Read options from <file>\n"
 "  -H --help              Display this information\n"
 "  -v --version           Display the version number of readelf\n"
 msgstr ""
 "  -I --histogram\n"
 "\tHiển thị _biểu đồ tần xuất_ của các độ dài danh sách xô\n"
 "  -W --wide              Cho phép độ _rộng_ kết xuất vượt qua 80 ký tự\n"
+"  @<file>        \t\tĐọc các tùy chọn từ tập tin đó\n"
 "  -H --help             \tHiển thị _trợ giúp_ này\n"
 "  -v --version           \tHiển thị số thứ tự _phiên bản_ của readelf\n"
 
-#: readelf.c:2651 readelf.c:12118
+#: readelf.c:2642 readelf.c:9180
 msgid "Out of memory allocating dump request table."
 msgstr "Hết bộ nhớ khi cấp phát bảng yêu cầu đổ."
 
-#: readelf.c:2820 readelf.c:2888
+#: readelf.c:2816 readelf.c:2884
 #, c-format
 msgid "Unrecognized debug option '%s'\n"
 msgstr "Không nhận diện tùy chọn gỡ lỗi « %s »\n"
 
-#: readelf.c:2922
+#: readelf.c:2918
 #, c-format
 msgid "Invalid option '-%c'\n"
 msgstr "Tùy chọn không hợp lệ « -%c »\n"
 
-#: readelf.c:2936
+#: readelf.c:2932
 msgid "Nothing to do.\n"
 msgstr "Không có gì cần làm.\n"
 
-#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+#: readelf.c:2944 readelf.c:2960 readelf.c:6169
 msgid "none"
 msgstr "không có"
 
-#: readelf.c:2965
+#: readelf.c:2961
 msgid "2's complement, little endian"
 msgstr "phần bù của 2, tính trạng cuối nhỏ"
 
-#: readelf.c:2966
+#: readelf.c:2962
 msgid "2's complement, big endian"
 msgstr "phần bù của 2, tính trạng cuối lớn"
 
-#: readelf.c:2984
+#: readelf.c:2980
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "Không phải là tập tin ELF — có những byte ma thuật không đúng tại đầu nó.\n"
 
-#: readelf.c:2992
+#: readelf.c:2988
 #, c-format
 msgid "ELF Header:\n"
 msgstr "Dòng đầu ELF:\n"
 
-#: readelf.c:2993
+#: readelf.c:2989
 #, c-format
 msgid "  Magic:   "
 msgstr "  Ma thuật:   "
 
-#: readelf.c:2997
+#: readelf.c:2993
 #, c-format
 msgid "  Class:                             %s\n"
 msgstr "  Class:                             %s\n"
 
-#: readelf.c:2999
+#: readelf.c:2995
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Data:                              %s\n"
 
-#: readelf.c:3001
+#: readelf.c:2997
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Version:                           %d %s\n"
 
-#: readelf.c:3008
+#: readelf.c:3004
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: readelf.c:3010
+#: readelf.c:3006
 #, c-format
 msgid "  ABI Version:                       %d\n"
 msgstr "  Phiên bản ABI:                       %d\n"
 
-#: readelf.c:3012
+#: readelf.c:3008
 #, c-format
 msgid "  Type:                              %s\n"
 msgstr "  Type:                              %s\n"
 
-#: readelf.c:3014
+#: readelf.c:3010
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Machine:                           %s\n"
 
-#: readelf.c:3016
+#: readelf.c:3012
 #, c-format
 msgid "  Version:                           0x%lx\n"
 msgstr "  Version:                           0x%lx\n"
 
-#: readelf.c:3019
+#: readelf.c:3015
 #, c-format
 msgid "  Entry point address:               "
 msgstr "  Địa chỉ điểm vào :               "
 
-#: readelf.c:3021
+#: readelf.c:3017
 #, c-format
 msgid ""
 "\n"
@@ -3023,7 +3786,7 @@
 "\n"
 "  Điểm đầu các dòng đầu chương trình:          "
 
-#: readelf.c:3023
+#: readelf.c:3019
 #, c-format
 msgid ""
 " (bytes into file)\n"
@@ -3032,58 +3795,57 @@
 " (byte vào tập tin)\n"
 "  Đầu các dòng đầu phần:          "
 
-#: readelf.c:3025
+#: readelf.c:3021
 #, c-format
 msgid " (bytes into file)\n"
 msgstr " (byte vào tập tin)\n"
 
-#: readelf.c:3027
+#: readelf.c:3023
 #, c-format
 msgid "  Flags:                             0x%lx%s\n"
 msgstr "  Flags:                             0x%lx%s\n"
 
-#: readelf.c:3030
+#: readelf.c:3026
 #, c-format
 msgid "  Size of this header:               %ld (bytes)\n"
 msgstr "  Cỡ phần này:               %ld (byte)\n"
 
-#: readelf.c:3032
+#: readelf.c:3028
 #, c-format
 msgid "  Size of program headers:           %ld (bytes)\n"
 msgstr "  Cỡ các dòng đầu chương trình:           %ld (byte)\n"
 
-#: readelf.c:3034
+#: readelf.c:3030
 #, c-format
 msgid "  Number of program headers:         %ld\n"
 msgstr "  Số dòng đầu chương trình:         %ld\n"
 
-#: readelf.c:3036
+#: readelf.c:3032
 #, c-format
 msgid "  Size of section headers:           %ld (bytes)\n"
 msgstr "  Cỡ các dòng đầu phần:           %ld (byte)\n"
 
-#: readelf.c:3038
+#: readelf.c:3034
 #, c-format
 msgid "  Number of section headers:         %ld"
 msgstr "  Số dòng đầu phần:         %ld"
 
-#: readelf.c:3043
+#: readelf.c:3039
 #, c-format
 msgid "  Section header string table index: %ld"
 msgstr "  Chỉ mục bảng chuỗi dòng đầu phần: %ld"
 
-#: readelf.c:3074 readelf.c:3107
+#: readelf.c:3070 readelf.c:3103
 msgid "program headers"
 msgstr "các dòng đầu chương trình"
 
-#: readelf.c:3145 readelf.c:3446 readelf.c:3487 readelf.c:3546 readelf.c:3609
-#: readelf.c:3993 readelf.c:4017 readelf.c:5247 readelf.c:5291 readelf.c:5489
-#: readelf.c:6450 readelf.c:6464 readelf.c:11493 readelf.c:11912
-#: readelf.c:11979
+#: readelf.c:3141 readelf.c:3440 readelf.c:3481 readelf.c:3540 readelf.c:3603
+#: readelf.c:4208 readelf.c:4232 readelf.c:5510 readelf.c:5554 readelf.c:5752
+#: readelf.c:6734 readelf.c:6748 readelf.c:8564 readelf.c:8972 readelf.c:9039
 msgid "Out of memory\n"
 msgstr "Hết bộ nhớ\n"
 
-#: readelf.c:3172
+#: readelf.c:3168
 #, c-format
 msgid ""
 "\n"
@@ -3092,7 +3854,7 @@
 "\n"
 "Không có dòng đầu chương trình nào trong tập tin này.\n"
 
-#: readelf.c:3178
+#: readelf.c:3174
 #, c-format
 msgid ""
 "\n"
@@ -3101,12 +3863,12 @@
 "\n"
 "Kiểu tập tin Elf là %s\n"
 
-#: readelf.c:3179
+#: readelf.c:3175
 #, c-format
 msgid "Entry point "
-msgstr "Điểm vào"
+msgstr "Điểm vào "
 
-#: readelf.c:3181
+#: readelf.c:3177
 #, c-format
 msgid ""
 "\n"
@@ -3115,7 +3877,7 @@
 "\n"
 "Có %d dòng đầu chương trình, bắt đầu tại hiệu số"
 
-#: readelf.c:3193 readelf.c:3195
+#: readelf.c:3189 readelf.c:3191
 #, c-format
 msgid ""
 "\n"
@@ -3124,47 +3886,47 @@
 "\n"
 "Dòng đầu chương trình:\n"
 
-#: readelf.c:3199
+#: readelf.c:3195
 #, c-format
 msgid "  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align\n"
 msgstr "  Kiểu         HIệu   ĐChỉẢo   ĐChỉVật   CỡTập CỡNhớ  Cờ Cạnh lề\n"
 
-#: readelf.c:3202
+#: readelf.c:3198
 #, c-format
 msgid "  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align\n"
 msgstr "  Kiểu         HIệu   Địa Chỉ Ảo   Địa Chỉ Vật lý   CỡTập CỡNhớ  Cờ Cạnh lề\n"
 
-#: readelf.c:3206
+#: readelf.c:3202
 #, c-format
 msgid "  Type           Offset             VirtAddr           PhysAddr\n"
-msgstr "   Kiểu         HIệu         Địa Chỉ Ảo     Địa Chỉ Vật lý\n"
+msgstr "  Kiểu         HIệu         Địa Chỉ Ảo     Địa Chỉ Vật lý\n"
 
-#: readelf.c:3208
+#: readelf.c:3204
 #, c-format
 msgid "                 FileSiz            MemSiz              Flags  Align\n"
 msgstr "                 FileSiz            MemSiz              Flags  Align\n"
 
-#: readelf.c:3301
+#: readelf.c:3297
 msgid "more than one dynamic segment\n"
 msgstr "hơn một phân đoạn động\n"
 
-#: readelf.c:3312
+#: readelf.c:3308
 msgid "no .dynamic section in the dynamic segment"
 msgstr "không có phân đoạn « .dynamic » (động) trong phân đoạn động"
 
-#: readelf.c:3321
+#: readelf.c:3317
 msgid "the .dynamic section is not contained within the dynamic segment"
 msgstr "phần « .dynamic » (động) không có được chứa ở trong phân đoạn động"
 
-#: readelf.c:3323
+#: readelf.c:3319
 msgid "the .dynamic section is not the first section in the dynamic segment."
 msgstr "phần « .dynamic » (động) không phải là phần thứ nhất trong phân đoạn động."
 
-#: readelf.c:3337
+#: readelf.c:3333
 msgid "Unable to find program interpreter name\n"
 msgstr "Không tìm thấy tên bộ giải dịch chương trình\n"
 
-#: readelf.c:3344
+#: readelf.c:3340
 #, c-format
 msgid ""
 "\n"
@@ -3173,7 +3935,7 @@
 "\n"
 "      [Đang yêu cầu bộ giải dịch chương trình: %s]"
 
-#: readelf.c:3356
+#: readelf.c:3352
 #, c-format
 msgid ""
 "\n"
@@ -3182,33 +3944,33 @@
 "\n"
 " Ánh xạ Phần đến Phân đoạn:\n"
 
-#: readelf.c:3357
+#: readelf.c:3353
 #, c-format
 msgid "  Segment Sections...\n"
 msgstr "  Các phần phân đoạn...\n"
 
-#: readelf.c:3408
+#: readelf.c:3402
 msgid "Cannot interpret virtual addresses without program headers.\n"
 msgstr "Không thể giải dịch địa chỉ ảo khi không có dòng đầu chương trình.\n"
 
-#: readelf.c:3424
+#: readelf.c:3418
 #, c-format
 msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
 msgstr "Địa chỉ ảo 0x%lx không được định vị trong phân đoạn kiểu « PT_LOAD » nào.\n"
 
-#: readelf.c:3438 readelf.c:3479
+#: readelf.c:3432 readelf.c:3473
 msgid "section headers"
 msgstr "dòng đầu phần"
 
-#: readelf.c:3523 readelf.c:3586
+#: readelf.c:3517 readelf.c:3580
 msgid "symbols"
 msgstr "ký hiệu"
 
-#: readelf.c:3533 readelf.c:3596
+#: readelf.c:3527 readelf.c:3590
 msgid "symtab shndx"
 msgstr "symtab shndx"
 
-#: readelf.c:3697 readelf.c:3977
+#: readelf.c:3817 readelf.c:4192
 #, c-format
 msgid ""
 "\n"
@@ -3217,35 +3979,40 @@
 "\n"
 "Không có phần nào trong tập tin này.\n"
 
-#: readelf.c:3703
+#: readelf.c:3823
 #, c-format
 msgid "There are %d section headers, starting at offset 0x%lx:\n"
 msgstr "Có %d dòng đầu phần, bắt đầu tại hiệu số 0x%lx:\n"
 
-#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
-#: readelf.c:6618
+#: readelf.c:3842 readelf.c:4309 readelf.c:4544 readelf.c:4852 readelf.c:5267
+#: readelf.c:6906
 msgid "string table"
 msgstr "bảng chuỗi"
 
-#: readelf.c:3765
+#: readelf.c:3881
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Phần %d có kích cỡ sh_entsize không hợp lệ %lx (ngờ %lx)\n"
+
+#: readelf.c:3901
 msgid "File contains multiple dynamic symbol tables\n"
 msgstr "Tập tin chứa nhiều bảng ký hiệu động\n"
 
 # Type: text
 # Description
-#: readelf.c:3777
+#: readelf.c:3914
 msgid "File contains multiple dynamic string tables\n"
 msgstr "Tập tin chứa nhiều bảng chuỗi động\n"
 
-#: readelf.c:3782
+#: readelf.c:3919
 msgid "dynamic strings"
 msgstr "chuá»—i Ä‘á»™ng"
 
-#: readelf.c:3789
+#: readelf.c:3926
 msgid "File contains multiple symtab shndx tables\n"
 msgstr "Tập tin chứa nhiều bảng symtab shndx\n"
 
-#: readelf.c:3828
+#: readelf.c:3973
 #, c-format
 msgid ""
 "\n"
@@ -3254,7 +4021,7 @@
 "\n"
 "Dòng đầu phần:\n"
 
-#: readelf.c:3830
+#: readelf.c:3975
 #, c-format
 msgid ""
 "\n"
@@ -3263,28 +4030,58 @@
 "\n"
 "Dòng đầu phần:\n"
 
-#: readelf.c:3834
+#: readelf.c:3981 readelf.c:3992 readelf.c:4003
 #, c-format
+msgid "  [Nr] Name\n"
+msgstr "  [Nr] Tên\n"
+
+#: readelf.c:3982
+#, c-format
+msgid "       Type            Addr     Off    Size   ES   Lk Inf Al\n"
+msgstr "       Kiểu            ĐChỉ     Hiệu    Cỡ   ES   Lk Tin Cl\n"
+
+#: readelf.c:3986
+#, c-format
 msgid "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al\n"
 
-#: readelf.c:3837
+#: readelf.c:3993
 #, c-format
+msgid "       Type            Address          Off    Size   ES   Lk Inf Al\n"
+msgstr "       Kiểu            Địa chỉ          Hiệu    Cỡ   ES   Lk Tin Cl\n"
+
+#: readelf.c:3997
+#, c-format
 msgid "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
 msgstr "  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al\n"
 
-#: readelf.c:3840
+#: readelf.c:4004
 #, c-format
+msgid "       Type              Address          Offset            Link\n"
+msgstr "       Kiểu              Địa chỉ          Hiệu số            Liên kết\n"
+
+#: readelf.c:4005
+#, c-format
+msgid "       Size              EntSize          Info              Align\n"
+msgstr "       Cỡ              CỡEnt          TTin              Canh lề\n"
+
+#: readelf.c:4009
+#, c-format
 msgid "  [Nr] Name              Type             Address           Offset\n"
 msgstr "  [Nr] Name              Type             Address           Offset\n"
 
-#: readelf.c:3841
+#: readelf.c:4010
 #, c-format
 msgid "       Size              EntSize          Flags  Link  Info  Align\n"
 msgstr "       Size              EntSize          Flags  Link  Info  Align\n"
 
-#: readelf.c:3936
+#: readelf.c:4015
 #, c-format
+msgid "       Flags\n"
+msgstr "       Cờ\n"
+
+#: readelf.c:4150
+#, c-format
 msgid ""
 "Key to Flags:\n"
 "  W (write), A (alloc), X (execute), M (merge), S (strings)\n"
@@ -3303,16 +4100,16 @@
 "\to \tđặc trưng cho hệ điều hành\n"
 "\ts\tđặc trưng cho bộ xử lý\n"
 
-#: readelf.c:3954
+#: readelf.c:4168
 #, c-format
 msgid "[<unknown>: 0x%x]"
 msgstr "[<không rõ>: 0x%x]"
 
-#: readelf.c:3984
+#: readelf.c:4199
 msgid "Section headers are not available!\n"
 msgstr "Dòng đầu phần không sẵn sàng.\n"
 
-#: readelf.c:4008
+#: readelf.c:4223
 #, c-format
 msgid ""
 "\n"
@@ -3321,36 +4118,46 @@
 "\n"
 "Không có nhóm phần nào trong tập tin này.\n"
 
-#: readelf.c:4042
+#: readelf.c:4259
 #, c-format
 msgid "Bad sh_link in group section `%s'\n"
 msgstr "Có liên kết « sh_link » sai trong phần nhóm « %s »\n"
 
-#: readelf.c:4061
+#: readelf.c:4278
 #, c-format
 msgid "Bad sh_info in group section `%s'\n"
 msgstr "Có thông tin « sh_info » sai trong phần nhóm « %s »\n"
 
-#: readelf.c:4085 readelf.c:6947
+#: readelf.c:4317 readelf.c:7243
 msgid "section data"
 msgstr "dữ liệu phần"
 
-#: readelf.c:4097
+#: readelf.c:4329
 #, c-format
 msgid "   [Index]    Name\n"
 msgstr "   [Chỉ mục]    Tên\n"
 
-#: readelf.c:4114
+#: readelf.c:4343
 #, c-format
-msgid "section [%5u] already in group section [%5u]\n"
-msgstr "phần [%5u] đã có trong phần nhóm [%5u]\n"
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "phần [%5u] trong phần nhóm [%5u]>phần tối đa [%5u]\n"
 
-#: readelf.c:4127
+#: readelf.c:4349
 #, c-format
+msgid "invalid section [%5u] in group section [%5u]\n"
+msgstr "phần không hợp lệ [%5u] trong phần nhóm [%5u]\n"
+
+#: readelf.c:4359
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "phần [%5u] trong phần nhóm [%5u] đã có trong phần nhóm [%5u]\n"
+
+#: readelf.c:4372
+#, c-format
 msgid "section 0 in group section [%5u]\n"
 msgstr "phần 0 trong phần nhóm [%5u]\n"
 
-#: readelf.c:4224
+#: readelf.c:4468
 #, c-format
 msgid ""
 "\n"
@@ -3359,7 +4166,7 @@
 "\n"
 "phần định vị lại « %s » tại hiệu số 0x%lx chứa %ld byte:\n"
 
-#: readelf.c:4236
+#: readelf.c:4480
 #, c-format
 msgid ""
 "\n"
@@ -3368,7 +4175,7 @@
 "\n"
 "Không có việc định vị lại động nào trong tập tin này.\n"
 
-#: readelf.c:4260
+#: readelf.c:4504
 #, c-format
 msgid ""
 "\n"
@@ -3377,17 +4184,17 @@
 "\n"
 "Phần định vị lại"
 
-#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#: readelf.c:4509 readelf.c:4928 readelf.c:4942 readelf.c:5282
 #, c-format
 msgid "'%s'"
 msgstr "« %s »"
 
-#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#: readelf.c:4511 readelf.c:4944 readelf.c:5284
 #, c-format
 msgid " at offset 0x%lx contains %lu entries:\n"
 msgstr " tại hiệu số 0x%lx chứa %lu mục nhập:\n"
 
-#: readelf.c:4308
+#: readelf.c:4563
 #, c-format
 msgid ""
 "\n"
@@ -3396,16 +4203,16 @@
 "\n"
 "Không có việc định vị lại nào trong tập tin này.\n"
 
-#: readelf.c:4482 readelf.c:4862
+#: readelf.c:4742 readelf.c:5124
 msgid "unwind table"
 msgstr "tri ra bảng"
 
-#: readelf.c:4540 readelf.c:4959
+#: readelf.c:4801 readelf.c:5214
 #, c-format
 msgid "Skipping unexpected relocation type %s\n"
 msgstr "Đang nhảy kiểu định vị lại bất ngờ %s\n"
 
-#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#: readelf.c:4860 readelf.c:5275 readelf.c:5326
 #, c-format
 msgid ""
 "\n"
@@ -3414,7 +4221,7 @@
 "\n"
 "Không có phần tri ra nào trong tập tin này.\n"
 
-#: readelf.c:4661
+#: readelf.c:4923
 #, c-format
 msgid ""
 "\n"
@@ -3423,11 +4230,11 @@
 "\n"
 "Không thể tìm thấy phần thông tin tri ra cho "
 
-#: readelf.c:4673
+#: readelf.c:4935
 msgid "unwind info"
 msgstr "thông tin tri ra"
 
-#: readelf.c:4675 readelf.c:5024
+#: readelf.c:4937 readelf.c:5281
 #, c-format
 msgid ""
 "\n"
@@ -3436,11 +4243,11 @@
 "\n"
 "Phần tri ra "
 
-#: readelf.c:5228 readelf.c:5272
+#: readelf.c:5491 readelf.c:5535
 msgid "dynamic section"
 msgstr "phần động"
 
-#: readelf.c:5349
+#: readelf.c:5612
 #, c-format
 msgid ""
 "\n"
@@ -3449,31 +4256,31 @@
 "\n"
 "Không có phần động nào trong tập tin này.\n"
 
-#: readelf.c:5387
+#: readelf.c:5650
 msgid "Unable to seek to end of file!"
 msgstr "• Không thể tìm tới kết thúc tập tin. •"
 
-#: readelf.c:5400
+#: readelf.c:5663
 msgid "Unable to determine the number of symbols to load\n"
 msgstr "Không thể quyết định số ký hiệu cần tải\n"
 
-#: readelf.c:5435
+#: readelf.c:5698
 msgid "Unable to seek to end of file\n"
 msgstr "Không thể tìm tới kết thúc tập tin\n"
 
-#: readelf.c:5442
+#: readelf.c:5705
 msgid "Unable to determine the length of the dynamic string table\n"
 msgstr "Không thể quyết định độ dài của bảng chuỗi động\n"
 
-#: readelf.c:5447
+#: readelf.c:5710
 msgid "dynamic string table"
 msgstr "bảng chuỗi động"
 
-#: readelf.c:5482
+#: readelf.c:5745
 msgid "symbol information"
 msgstr "thông tin ký hiệu"
 
-#: readelf.c:5507
+#: readelf.c:5770
 #, c-format
 msgid ""
 "\n"
@@ -3482,77 +4289,77 @@
 "\n"
 "Phần động tại hiệu số 0x%lx chứa %u mục nhập:\n"
 
-#: readelf.c:5510
+#: readelf.c:5773
 #, c-format
 msgid "  Tag        Type                         Name/Value\n"
 msgstr "  Thẻ        Kiểu                     Tên/Giá trị\n"
 
-#: readelf.c:5546
+#: readelf.c:5809
 #, c-format
 msgid "Auxiliary library"
 msgstr "Thư viên phụ"
 
-#: readelf.c:5550
+#: readelf.c:5813
 #, c-format
 msgid "Filter library"
 msgstr "Thư viên lọc"
 
-#: readelf.c:5554
+#: readelf.c:5817
 #, c-format
 msgid "Configuration file"
 msgstr "Tập tin cấu hình"
 
-#: readelf.c:5558
+#: readelf.c:5821
 #, c-format
 msgid "Dependency audit library"
 msgstr "Thư viên kiểm tra cách phụ thuộc"
 
-#: readelf.c:5562
+#: readelf.c:5825
 #, c-format
 msgid "Audit library"
 msgstr "Thư viên kiểm tra"
 
-#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#: readelf.c:5843 readelf.c:5871 readelf.c:5899
 #, c-format
 msgid "Flags:"
 msgstr "Cờ :"
 
-#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#: readelf.c:5846 readelf.c:5874 readelf.c:5901
 #, c-format
 msgid " None\n"
 msgstr " Không có\n"
 
-#: readelf.c:5759
+#: readelf.c:6022
 #, c-format
 msgid "Shared library: [%s]"
 msgstr "Thư viện dùng chung: [%s]"
 
-#: readelf.c:5762
+#: readelf.c:6025
 #, c-format
 msgid " program interpreter"
 msgstr " bộ giải dịch chương trình"
 
-#: readelf.c:5766
+#: readelf.c:6029
 #, c-format
 msgid "Library soname: [%s]"
 msgstr "soname (tên so) thư viên: [%s]"
 
-#: readelf.c:5770
+#: readelf.c:6033
 #, c-format
 msgid "Library rpath: [%s]"
 msgstr "rpath (đường dẫn r) thư viên: [%s]"
 
-#: readelf.c:5774
+#: readelf.c:6037
 #, c-format
 msgid "Library runpath: [%s]"
 msgstr "runpath (đường dẫn chạy) thư viên: [%s]"
 
-#: readelf.c:5837
+#: readelf.c:6100
 #, c-format
 msgid "Not needed object: [%s]\n"
 msgstr "Đối tượng không cần thiết: [%s]\n"
 
-#: readelf.c:5951
+#: readelf.c:6214
 #, c-format
 msgid ""
 "\n"
@@ -3561,51 +4368,51 @@
 "\n"
 "Phần định nghĩa phiên bản « %s » chứa %ld mục nhập:\n"
 
-#: readelf.c:5954
+#: readelf.c:6217
 #, c-format
 msgid "  Addr: 0x"
 msgstr "  ĐChỉ: 0x"
 
-#: readelf.c:5956 readelf.c:6148
+#: readelf.c:6219 readelf.c:6426
 #, c-format
 msgid "  Offset: %#08lx  Link: %lx (%s)\n"
 msgstr "  HIệu: %#08lx  LKết: %lx (%s)\n"
 
-#: readelf.c:5961
+#: readelf.c:6228
 msgid "version definition section"
 msgstr "phần định nghĩa phiên bản"
 
-#: readelf.c:5987
+#: readelf.c:6254
 #, c-format
 msgid "  %#06x: Rev: %d  Flags: %s"
 msgstr "  %#06x: Bản: %d  Cờ: %s"
 
-#: readelf.c:5990
+#: readelf.c:6257
 #, c-format
 msgid "  Index: %d  Cnt: %d  "
 msgstr "  Chỉ mục: %d  Đếm: %d  "
 
-#: readelf.c:6001
+#: readelf.c:6268
 #, c-format
 msgid "Name: %s\n"
 msgstr "Tên: %s\n"
 
-#: readelf.c:6003
+#: readelf.c:6270
 #, c-format
 msgid "Name index: %ld\n"
 msgstr "Chỉ mục tên: %ld\n"
 
-#: readelf.c:6018
+#: readelf.c:6285
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Mẹ %d: %s\n"
 
-#: readelf.c:6021
+#: readelf.c:6288
 #, c-format
 msgid "  %#06x: Parent %d, name index: %ld\n"
 msgstr "  %#06x: Mẹ %d, chỉ mục tên: %ld\n"
 
-#: readelf.c:6040
+#: readelf.c:6307
 #, c-format
 msgid ""
 "\n"
@@ -3614,60 +4421,60 @@
 "\n"
 "Phần cần thiết phiên bản « %s » chứa %ld mục nhập:\n"
 
-#: readelf.c:6043
+#: readelf.c:6310
 #, c-format
 msgid " Addr: 0x"
 msgstr " ĐChỉ: 0x"
 
-#: readelf.c:6045
+#: readelf.c:6312
 #, c-format
 msgid "  Offset: %#08lx  Link to section: %ld (%s)\n"
 msgstr "  HIệu: %#08lx  Liên kết đến phần: %ld (%s)\n"
 
-#: readelf.c:6050
+#: readelf.c:6321
 msgid "version need section"
 msgstr "phần cần phiên bản"
 
-#: readelf.c:6072
+#: readelf.c:6343
 #, c-format
 msgid "  %#06x: Version: %d"
 msgstr "  %#06x: PhBản: %d"
 
-#: readelf.c:6075
+#: readelf.c:6346
 #, c-format
 msgid "  File: %s"
 msgstr "  Tập tin: %s"
 
-#: readelf.c:6077
+#: readelf.c:6348
 #, c-format
 msgid "  File: %lx"
 msgstr "  Tập tin: %lx"
 
-#: readelf.c:6079
+#: readelf.c:6350
 #, c-format
 msgid "  Cnt: %d\n"
 msgstr "  Đếm: %d\n"
 
-#: readelf.c:6097
+#: readelf.c:6368
 #, c-format
 msgid "  %#06x:   Name: %s"
 msgstr "  %#06x:   Tên: %s"
 
-#: readelf.c:6100
+#: readelf.c:6371
 #, c-format
 msgid "  %#06x:   Name index: %lx"
 msgstr "  %#06x:   Chỉ mục tên: %lx"
 
-#: readelf.c:6103
+#: readelf.c:6374
 #, c-format
 msgid "  Flags: %s  Version: %d\n"
 msgstr "  Cờ: %s  Phiên bản: %d\n"
 
-#: readelf.c:6139
+#: readelf.c:6417
 msgid "version string table"
 msgstr "bảng chuỗi phiên bản"
 
-#: readelf.c:6143
+#: readelf.c:6421
 #, c-format
 msgid ""
 "\n"
@@ -3676,40 +4483,40 @@
 "\n"
 "Phần ký hiệu phiên bản « %s » chứa %d mục nhập:\n"
 
-#: readelf.c:6146
+#: readelf.c:6424
 #, c-format
 msgid " Addr: "
 msgstr " ĐChỉ: "
 
-#: readelf.c:6156
+#: readelf.c:6434
 msgid "version symbol data"
 msgstr "dữ liệu ký hiệu phiên bản"
 
-#: readelf.c:6183
+#: readelf.c:6461
 msgid "   0 (*local*)    "
 msgstr "   0 (*local*)    "
 
-#: readelf.c:6187
+#: readelf.c:6465
 msgid "   1 (*global*)   "
 msgstr "   1 (*toàn cụcglobal*)   "
 
-#: readelf.c:6223 readelf.c:6677
+#: readelf.c:6503 readelf.c:6969
 msgid "version need"
 msgstr "phiên bản cần"
 
-#: readelf.c:6233
+#: readelf.c:6513
 msgid "version need aux (2)"
 msgstr "phiên bản cần phụ (2)"
 
-#: readelf.c:6275 readelf.c:6740
+#: readelf.c:6555 readelf.c:7034
 msgid "version def"
 msgstr "phbản đ.nghĩa"
 
-#: readelf.c:6294 readelf.c:6755
+#: readelf.c:6575 readelf.c:7049
 msgid "version def aux"
 msgstr "phbản đ.nghĩa phụ"
 
-#: readelf.c:6325
+#: readelf.c:6606
 #, c-format
 msgid ""
 "\n"
@@ -3718,23 +4525,23 @@
 "\n"
 "Không tìm thấy thông tin phiên bản trong tập tin này.\n"
 
-#: readelf.c:6456
+#: readelf.c:6740
 msgid "Unable to read in dynamic data\n"
 msgstr "Không thể đọc vào dữ liệu động\n"
 
-#: readelf.c:6509
+#: readelf.c:6793
 msgid "Unable to seek to start of dynamic information"
 msgstr "Không thể tìm tới đầu thông tin động"
 
-#: readelf.c:6515
+#: readelf.c:6799
 msgid "Failed to read in number of buckets\n"
 msgstr "Việc đọc vào số xô bị lỗi\n"
 
-#: readelf.c:6521
+#: readelf.c:6805
 msgid "Failed to read in number of chains\n"
 msgstr "Việc đọc vào số dây bị lỗi\n"
 
-#: readelf.c:6541
+#: readelf.c:6825
 #, c-format
 msgid ""
 "\n"
@@ -3743,17 +4550,17 @@
 "\n"
 "Bảng ký hiệu cho ảnh:\n"
 
-#: readelf.c:6543
+#: readelf.c:6827
 #, c-format
 msgid "  Num Buc:    Value  Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  Số xô :    Giá trị  Cỡ   Kiểu   Trộn Hiện      Ndx Tên\n"
 
-#: readelf.c:6545
+#: readelf.c:6829
 #, c-format
 msgid "  Num Buc:    Value          Size   Type   Bind Vis      Ndx Name\n"
 msgstr "  Số xô :    Giá trị         Cỡ   Kiểu   Trộn Hiện     Ndx Tên\n"
 
-#: readelf.c:6597
+#: readelf.c:6882
 #, c-format
 msgid ""
 "\n"
@@ -3762,29 +4569,29 @@
 "\n"
 "Bảng ký hiệu « %s » chứa %lu mục nhập:\n"
 
-#: readelf.c:6601
+#: readelf.c:6886
 #, c-format
 msgid "   Num:    Value  Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   Số :    Giá trị  Cỡ Kiểu    Trộn   Hiện    Ndx Tên\n"
 
-#: readelf.c:6603
+#: readelf.c:6888
 #, c-format
 msgid "   Num:    Value          Size Type    Bind   Vis      Ndx Name\n"
 msgstr "   Số :    Giá trị        Cỡ Kiểu    Trộn   Hiện    Ndx Tên\n"
 
-#: readelf.c:6649
+#: readelf.c:6939
 msgid "version data"
 msgstr "dữ liệu phiên bản"
 
-#: readelf.c:6690
+#: readelf.c:6982
 msgid "version need aux (3)"
 msgstr "phiên bản cần phụ (3)"
 
-#: readelf.c:6715
+#: readelf.c:7009
 msgid "bad dynamic symbol"
 msgstr "ký hiệu động sai"
 
-#: readelf.c:6778
+#: readelf.c:7073
 #, c-format
 msgid ""
 "\n"
@@ -3793,7 +4600,7 @@
 "\n"
 "Không có thông tin ký hiệu động để hiển thị ký hiệu.\n"
 
-#: readelf.c:6790
+#: readelf.c:7085
 #, c-format
 msgid ""
 "\n"
@@ -3802,16 +4609,16 @@
 "\n"
 "Biểu đồ tần xuất cho độ dài danh sách xô (tổng số %lu xô):\n"
 
-#: readelf.c:6792
+#: readelf.c:7087
 #, c-format
 msgid " Length  Number     %% of total  Coverage\n"
 msgstr " Dài       Số           %% tổng phạm vị\n"
 
-#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+#: readelf.c:7092 readelf.c:7108 readelf.c:8031 readelf.c:8223
 msgid "Out of memory"
 msgstr "Hết bộ nhớ"
 
-#: readelf.c:6862
+#: readelf.c:7157
 #, c-format
 msgid ""
 "\n"
@@ -3820,12 +4627,12 @@
 "\n"
 "Phân đoạn thông tin động tại hiệu số 0x%lx chứa %d mục nhập:\n"
 
-#: readelf.c:6865
+#: readelf.c:7160
 #, c-format
 msgid " Num: Name                           BoundTo     Flags\n"
 msgstr " Số : Tên                           ĐóngVới     Cờ\n"
 
-#: readelf.c:6917
+#: readelf.c:7212
 #, c-format
 msgid ""
 "\n"
@@ -3834,7 +4641,7 @@
 "\n"
 "Việc đổ thanh ghi của phần %s\n"
 
-#: readelf.c:6938
+#: readelf.c:7233
 #, c-format
 msgid ""
 "\n"
@@ -3843,7 +4650,7 @@
 "\n"
 "Phần « %s » không có dữ liệu cần đổ.\n"
 
-#: readelf.c:6943
+#: readelf.c:7238
 #, c-format
 msgid ""
 "\n"
@@ -3852,786 +4659,73 @@
 "\n"
 "Việc đổ thập lục của phần « %s »:\n"
 
-#: readelf.c:7090
-msgid "badly formed extended line op encountered!\n"
-msgstr "gặp thao tác dòng đã mở rộng dạng sai.\n"
-
-#: readelf.c:7097
+#: readelf.c:7359
 #, c-format
-msgid "  Extended opcode %d: "
-msgstr "  Opcode (mã thao tác) đã mở rộng %d: "
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "đang bỏ qua hiệu số định vị lại không hợp lệ 0x%lx trong phần %s\n"
 
-#: readelf.c:7102
+#: readelf.c:7376
 #, c-format
-msgid ""
-"End of Sequence\n"
-"\n"
-msgstr ""
-"Kết thúc dãy\n"
-"\n"
+msgid "skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "đang bỏ qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
 
-#: readelf.c:7108
+#: readelf.c:7402
 #, c-format
-msgid "set Address to 0x%lx\n"
-msgstr "đặt Địa chỉ là 0x%lx\n"
-
-#: readelf.c:7113
-#, c-format
-msgid "  define new File Table entry\n"
-msgstr "  định nghĩa mục nhập Bảng Tập tin mới\n"
-
-#: readelf.c:7114 readelf.c:9032
-#, c-format
-msgid "  Entry\tDir\tTime\tSize\tName\n"
-msgstr "  Mục\tTMục\tGiờ\tCỡ\tTên\n"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:7116
-#, c-format
-msgid "   %d\t"
-msgstr "   %d\t"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:7119 readelf.c:7121 readelf.c:7123 readelf.c:9044 readelf.c:9046
-#: readelf.c:9048
-#, c-format
-msgid "%lu\t"
-msgstr "%lu\t"
-
-# Variable: do not translate/ biến: đừng dịch
-#: readelf.c:7124
-#, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-"%s\n"
-"\n"
-
-#: readelf.c:7128
-#, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr "KHÔNG RÕ: độ dài %d\n"
-
-#: readelf.c:7155
-msgid "debug_str section data"
-msgstr "debug_str section data"
-
-#: readelf.c:7173
-msgid "<no .debug_str section>"
-msgstr "<no .debug_str section>"
-
-#: readelf.c:7176
-msgid "<offset is too big>"
-msgstr "<offset is too big>"
-
-#: readelf.c:7201
-msgid "debug_loc section data"
-msgstr "dữ liệu phần « debug_loc » (định vị gỡ lỗi)"
-
-#: readelf.c:7235
-msgid "debug_range section data"
-msgstr "dữ liệu phần « debug_range » (phạm vị gỡ lỗi)"
-
-#: readelf.c:7307
-#, c-format
-msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
-msgstr "%s: đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
-
-#: readelf.c:7321
-#, c-format
 msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
 msgstr "đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
 
-#: readelf.c:7565
+#: readelf.c:7435
 #, c-format
-msgid "Unknown TAG value: %lx"
-msgstr "Giá trị TAG (thẻ) không rõ : %lx"
+msgid "%s section data"
+msgstr "dữ liệu phần %s"
 
-#: readelf.c:7601
+#: readelf.c:7472
 #, c-format
-msgid "Unknown FORM value: %lx"
-msgstr "Giá trị FORM (dạng) không rõ : %lx"
-
-#: readelf.c:7610
-#, c-format
-msgid " %lu byte block: "
-msgstr " Khối %lu byte: "
-
-#: readelf.c:7944
-#, c-format
-msgid "(User defined location op)"
-msgstr "(Thao tác định vị do người dùng định nghĩa)"
-
-#: readelf.c:7946
-#, c-format
-msgid "(Unknown location op)"
-msgstr "(Thao tác định vị không rõ)"
-
-#: readelf.c:8015
-msgid "Internal error: DWARF version is not 2 or 3.\n"
-msgstr "Lỗi nội bộ: phiên bản DWARF không phải là 2 hay 3.\n"
-
-#: readelf.c:8113
-msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
-msgstr "Không hỗ trợ « DW_FORM_data8 » khi « sizeof (unsigned long) != 8 » [kích cỡ của (dài không ký)]\n"
-
-#: readelf.c:8162
-#, c-format
-msgid " (indirect string, offset: 0x%lx): %s"
-msgstr " (chuỗi gián tiếp, hiệu số: 0x%lx): %s"
-
-#: readelf.c:8171
-#, c-format
-msgid "Unrecognized form: %d\n"
-msgstr "Không nhận diện dạng: %d\n"
-
-#: readelf.c:8256
-#, c-format
-msgid "(not inlined)"
-msgstr "(không đặt trực tiếp)"
-
-#: readelf.c:8259
-#, c-format
-msgid "(inlined)"
-msgstr "(đặt trực tiếp)"
-
-#: readelf.c:8262
-#, c-format
-msgid "(declared as inline but ignored)"
-msgstr "(khai báo là trực tiếp mà bị bỏ qua)"
-
-#: readelf.c:8265
-#, c-format
-msgid "(declared as inline and inlined)"
-msgstr "(khai báo là trực tiếp và đặt trực tiếp)"
-
-#: readelf.c:8268
-#, c-format
-msgid "  (Unknown inline attribute value: %lx)"
-msgstr "  (Không biết giá trị thuộc tính trực tiếp: %lx)"
-
-#: readelf.c:8413 readelf.c:9537
-#, c-format
-msgid " [without DW_AT_frame_base]"
-msgstr " [không có DW_AT_frame_base (cơ bản khung)]"
-
-#: readelf.c:8416
-#, c-format
-msgid "(location list)"
-msgstr "(danh sách địa điểm)"
-
-#: readelf.c:8534
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr "Không biết giá trị AT: %lx"
-
-#: readelf.c:8602
-msgid "No comp units in .debug_info section ?"
-msgstr "Không có đơn vị biên dịch trong phần « .debug_info » (thông tin gỡ lỗi) ?"
-
-#: readelf.c:8611
-#, c-format
-msgid "Not enough memory for a debug info array of %u entries"
-msgstr "Không đủ bộ nhớ cho mảng thông tin gỡ lỗi có mục nhập %u"
-
-#: readelf.c:8619 readelf.c:9630
-#, c-format
 msgid ""
-"The section %s contains:\n"
 "\n"
+"Section '%s' has no debugging data.\n"
 msgstr ""
-"Phần %s chứa:\n"
 "\n"
+"Phần « %s » không có dữ liệu gỡ lỗi nào.\n"
 
-#: readelf.c:8693
+#: readelf.c:7498
 #, c-format
-msgid "  Compilation Unit @ %lx:\n"
-msgstr "  Đơn vị biên dịch @ %lx:\n"
+msgid "Unrecognized debug section: %s\n"
+msgstr "Không nhận diện phần gỡ lỗi: %s\n"
 
-#: readelf.c:8694
+#: readelf.c:7533
 #, c-format
-msgid "   Length:        %ld\n"
-msgstr "   Dài:        %ld\n"
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "• Phần %d không được đổ vì nó không tồn tại. •\n"
 
-#: readelf.c:8695
-#, c-format
-msgid "   Version:       %d\n"
-msgstr "   Phiên bản:       %d\n"
+#: readelf.c:7791
+msgid "attributes"
+msgstr "thuộc tính"
 
-#: readelf.c:8696
+#: readelf.c:7809
 #, c-format
-msgid "   Abbrev Offset: %ld\n"
-msgstr "   Hiệu số tắt: %ld\n"
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "LỖI : độ dài phần sai (%d > %d)\n"
 
-#: readelf.c:8697
+#: readelf.c:7830
 #, c-format
-msgid "   Pointer Size:  %d\n"
-msgstr "   Cỡ con trỏ :  %d\n"
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "LỖI : độ dài phần phụ sai (%d > %d)\n"
 
-#: readelf.c:8702
-msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
-msgstr "Hỗ trợ chỉ thông tin gỡ lỗi phiên bản DWARF 2 và 3 thôi.\n"
-
-#: readelf.c:8717
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr "Không thể định vị phần « .debug_abbrev » (gỡ lỗi viết tắt)\n"
-
-#: readelf.c:8722
-msgid "debug_abbrev section data"
-msgstr "dữ liệu phần « .debug_abbrev » (gỡ lỗi viết tắt)"
-
-#: readelf.c:8759
+#: readelf.c:7880
 #, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr "Không thể định vị mục nhâp %lu trong bảng viết tắt\n"
+msgid "Unknown format '%c'\n"
+msgstr "Không biết dạng thức %c\n"
 
-#: readelf.c:8765
-#, c-format
-msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
-msgstr " <%d><%lx>: Số viết tắt: %lu (%s)\n"
-
-#: readelf.c:8838
-#, c-format
-msgid "%s section needs a populated .debug_info section\n"
-msgstr "Phần %s cần phần « .debug_info » (thông tin gỡ lỗi) có dữ liệu\n"
-
-#: readelf.c:8845
-#, c-format
-msgid "%s section has more comp units than .debug_info section\n"
-msgstr "Phần %s có nhiều đơn vị biên dịch hơn phần « .debug_info » (thông tin gỡ lỗi)\n"
-
-#: readelf.c:8847
-#, c-format
-msgid ""
-"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
-"\n"
-msgstr ""
-"giả sử kích cỡ con trỏ là %d, từ đơn vị biên dịch cuối cùng trong « .debug_info » (thông tin gỡ lỗi)\n"
-"\n"
-
-#: readelf.c:8891
-msgid "extracting information from .debug_info section"
-msgstr "đang trích thông tin ra phần « .debug_info » (thông tin gỡ lỗi)"
-
-#: readelf.c:8909
-#, c-format
-msgid ""
-"\n"
-"Dump of debug contents of section %s:\n"
-"\n"
-msgstr ""
-"\n"
-"Việc đổ nội dung gỡ lỗi của phần %s:\n"
-
-#: readelf.c:8948
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr "Hình như dòng bị hỏng — phần quá nhỏ\n"
-
-#: readelf.c:8957
-msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
-msgstr "Hỗ trợ hiện thời chỉ thông tin dòng DWARF phiên bản 2 và 3.\n"
-
-#: readelf.c:8984
-#, c-format
-msgid "  Length:                      %ld\n"
-msgstr "  Dài:                      %ld\n"
-
-#: readelf.c:8985
-#, c-format
-msgid "  DWARF Version:               %d\n"
-msgstr "  Phiên bản DWARF:               %d\n"
-
-#: readelf.c:8986
-#, c-format
-msgid "  Prologue Length:             %d\n"
-msgstr "  Dài đoạn mở đầu :             %d\n"
-
-#: readelf.c:8987
-#, c-format
-msgid "  Minimum Instruction Length:  %d\n"
-msgstr "  Dài câu lệnh tối thiểu :  %d\n"
-
-#: readelf.c:8988
-#, c-format
-msgid "  Initial value of 'is_stmt':  %d\n"
-msgstr " Giá trị đầu của « is_stmt »:  %d\n"
-
-#: readelf.c:8989
-#, c-format
-msgid "  Line Base:                   %d\n"
-msgstr "  Cơ bản dòng:                   %d\n"
-
-#: readelf.c:8990
-#, c-format
-msgid "  Line Range:                  %d\n"
-msgstr "  Phạm vị dòng:                  %d\n"
-
-#: readelf.c:8991
-#, c-format
-msgid "  Opcode Base:                 %d\n"
-msgstr "  Cơ bản mã thao tác:                 %d\n"
-
-#: readelf.c:8992
-#, c-format
-msgid "  (Pointer size:               %u)\n"
-msgstr "  (cỡ con trỏ :               %u)\n"
-
-#: readelf.c:9001
-#, c-format
-msgid ""
-"\n"
-" Opcodes:\n"
-msgstr ""
-"\n"
-" Mã thao tác:\n"
-
-#: readelf.c:9004
-#, c-format
-msgid "  Opcode %d has %d args\n"
-msgstr "  Mã thao tác %d có %d đối số\n"
-
-#: readelf.c:9010
-#, c-format
-msgid ""
-"\n"
-" The Directory Table is empty.\n"
-msgstr ""
-"\n"
-"  Bảng Thư mục rỗng\n"
-
-#: readelf.c:9013
-#, c-format
-msgid ""
-"\n"
-" The Directory Table:\n"
-msgstr ""
-"\n"
-"  Bảng Thư mục:\n"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9017
-#, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
-
-#: readelf.c:9028
-#, c-format
-msgid ""
-"\n"
-" The File Name Table is empty.\n"
-msgstr ""
-"\n"
-" Bảng Tên Tập tin rỗng:\n"
-
-#: readelf.c:9031
-#, c-format
-msgid ""
-"\n"
-" The File Name Table:\n"
-msgstr ""
-"\n"
-"  Bảng Tên Tập tin:\n"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9039
-#, c-format
-msgid "  %d\t"
-msgstr "  %d\t"
-
-# Variable: do not translate/ biến: đừng dịch
-#: readelf.c:9050
-#, c-format
-msgid "%s\n"
-msgstr "%s\n"
-
-#. Now display the statements.
-#: readelf.c:9058
-#, c-format
-msgid ""
-"\n"
-" Line Number Statements:\n"
-msgstr ""
-"\n"
-" Câu Số thứ tự Dòng:\n"
-
-#: readelf.c:9073
-#, c-format
-msgid "  Special opcode %d: advance Address by %d to 0x%lx"
-msgstr "  Mã thao tác đặc biệt %d: nâng cao Địa chỉ bước %d tới 0x%lx"
-
-#: readelf.c:9077
-#, c-format
-msgid " and Line by %d to %d\n"
-msgstr " và Dòng bước %d tới %d\n"
-
-#: readelf.c:9088
-#, c-format
-msgid "  Copy\n"
-msgstr "  Chép\n"
-
-#: readelf.c:9095
-#, c-format
-msgid "  Advance PC by %d to %lx\n"
-msgstr "  Nâng cao PC bước %d tới %lx\n"
-
-#: readelf.c:9103
-#, c-format
-msgid "  Advance Line by %d to %d\n"
-msgstr "  Nâng cao dòng bước %d tới %d\n"
-
-#: readelf.c:9110
-#, c-format
-msgid "  Set File Name to entry %d in the File Name Table\n"
-msgstr "  Lập Tên Tập tin là mục nhập %d trong Bảng Tên Tập tin\n"
-
-#: readelf.c:9118
-#, c-format
-msgid "  Set column to %d\n"
-msgstr "  Lập cột là %d\n"
-
-#: readelf.c:9125
-#, c-format
-msgid "  Set is_stmt to %d\n"
-msgstr "  Lập « is_stmt » (là câu) là %d\n"
-
-#: readelf.c:9130
-#, c-format
-msgid "  Set basic block\n"
-msgstr "  Lập khối cơ bản\n"
-
-#: readelf.c:9138
-#, c-format
-msgid "  Advance PC by constant %d to 0x%lx\n"
-msgstr "  Nâng cao PC bước hằng số %d tới 0x%lx\n"
-
-#: readelf.c:9146
-#, c-format
-msgid "  Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr "  Nâng cao PC bước kích cỡ cố định %d tới 0x%lx\n"
-
-#: readelf.c:9151
-#, c-format
-msgid "  Set prologue_end to true\n"
-msgstr "  Lập « prologue_end » (kết thúc đoạn mở đầu) là true (đúng)\n"
-
-#: readelf.c:9155
-#, c-format
-msgid "  Set epilogue_begin to true\n"
-msgstr "  Lập « epilogue_begin » (đầu phần kết) là true (đúng)\n"
-
-#: readelf.c:9161
-#, c-format
-msgid "  Set ISA to %d\n"
-msgstr "  Lập ISA là %d\n"
-
-#: readelf.c:9165
-#, c-format
-msgid "  Unknown opcode %d with operands: "
-msgstr "  Gặp opcode (mã thao tác) không rõ %d với tác tử : "
-
-#: readelf.c:9193 readelf.c:9279 readelf.c:9354
-#, c-format
-msgid ""
-"Contents of the %s section:\n"
-"\n"
-msgstr ""
-"Nội dung của phần %s:\n"
-"\n"
-
-#: readelf.c:9233
-msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
-msgstr "Hỗ trợ hiện thời chỉ pubnames (tên công) DWARF phiên bản 2 và 3 thôi\n"
-
-#: readelf.c:9240
-#, c-format
-msgid "  Length:                              %ld\n"
-msgstr "  Length:                              %ld\n"
-
-#: readelf.c:9242
-#, c-format
-msgid "  Version:                             %d\n"
-msgstr "  Version:                             %d\n"
-
-#: readelf.c:9244
-#, c-format
-msgid "  Offset into .debug_info section:     %ld\n"
-msgstr "  Hiệu số vào phầnO« ffset into .» (thông tin gỡ lỗi)nfo section:     %ld\n"
-
-#: readelf.c:9246
-#, c-format
-msgid "  Size of area in .debug_info section: %ld\n"
-msgstr "  Kích cỡ của vùng trong phần « .debug_info » (thông tin gỡ lỗi): %ld\n"
-
-#: readelf.c:9249
-#, c-format
-msgid ""
-"\n"
-"    Offset\tName\n"
-msgstr ""
-"\n"
-"    Hiệu\tTên\n"
-
-#: readelf.c:9300
-#, c-format
-msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
-msgstr " DW_MACINFO_start_file (bắt đầu tập tin) — số_dòng: %d số_tập_tin: %d\n"
-
-#: readelf.c:9306
-#, c-format
-msgid " DW_MACINFO_end_file\n"
-msgstr " DW_MACINFO_end_file (kết thúc tập tin)\n"
-
-#: readelf.c:9314
-#, c-format
-msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_define (định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
-
-#: readelf.c:9323
-#, c-format
-msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
-msgstr " DW_MACINFO_undef (chưa định nghĩa) — số_dòng : %d bộ_lệnh : %s\n"
-
-#: readelf.c:9335
-#, c-format
-msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
-msgstr " DW_MACINFO_vendor_ext (phần mở rộng nhà bán) — hằng số : %d chuối : %s\n"
-
-#: readelf.c:9363
-#, c-format
-msgid "  Number TAG\n"
-msgstr "  Số THẺ\n"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9369
-#, c-format
-msgid "   %ld      %s    [%s]\n"
-msgstr "   %ld      %s    [%s]\n"
-
-#: readelf.c:9372
-msgid "has children"
-msgstr "có điều con"
-
-#: readelf.c:9372
-msgid "no children"
-msgstr "không có con"
-
-# Variable: don't translate / Biến: đừng dịch
-#: readelf.c:9375
-#, c-format
-msgid "    %-18s %s\n"
-msgstr "    %-18s %s\n"
-
-#: readelf.c:9410
-#, c-format
-msgid ""
-"\n"
-"The .debug_loc section is empty.\n"
-msgstr ""
-"\n"
-"Phần « .debug_loc » (gỡ lỗi định vị) rỗng:\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9455
-msgid "Location lists in .debug_info section aren't in ascending order!\n"
-msgstr "• Các danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
-
-#: readelf.c:9458
-msgid "No location lists in .debug_info section!\n"
-msgstr "• Không có danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
-
-#: readelf.c:9461
-#, c-format
-msgid "Location lists in .debug_loc section start at 0x%lx\n"
-msgstr "Danh sách địa điểm trong phần « .debug_info » (thông tin gỡ lỗi) bắt đầu tại 0x%lx\n"
-
-#: readelf.c:9464
-#, c-format
-msgid ""
-"Contents of the .debug_loc section:\n"
-"\n"
-msgstr ""
-"Nội dung của phần « .debug_info » (thông tin gỡ lỗi):\n"
-"\n"
-
-#: readelf.c:9465
-#, c-format
-msgid "    Offset   Begin    End      Expression\n"
-msgstr "    HIệu   Đầu    Cuối      Biểu thức\n"
-
-#: readelf.c:9495
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
-
-#: readelf.c:9498
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
-msgstr "Có một nơi chồng lấp [0x%lx - 0x%lx] trong phần « .debug_info » (thông tin gỡ lỗi).\n"
-
-#: readelf.c:9512 readelf.c:9837
-#, c-format
-msgid "    %8.8lx <End of list>\n"
-msgstr "    %8.8lx <Kết thúc danh sách>\n"
-
-#: readelf.c:9540 readelf.c:9854
-msgid " (start == end)"
-msgstr " (start == end)"
-
-#: readelf.c:9542 readelf.c:9856
-msgid " (start > end)"
-msgstr " (start > end)"
-
-#: readelf.c:9566
-#, c-format
-msgid ""
-"\n"
-"The .debug_str section is empty.\n"
-msgstr ""
-"\n"
-"Phần « .debug_str » (chuỗi gỡ lỗi) rỗng.\n"
-
-#: readelf.c:9570
-#, c-format
-msgid ""
-"Contents of the .debug_str section:\n"
-"\n"
-msgstr ""
-"Nội dung của phần « .debug_str » (chuỗi gỡ lỗi):\n"
-"\n"
-
-#: readelf.c:9675
-msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
-msgstr "Hỗ trợ hiện thời chỉ arange (phạm vị a) DWARF phiên bản 2 và 3 thôi.\n"
-
-#: readelf.c:9679
-#, c-format
-msgid "  Length:                   %ld\n"
-msgstr "  Dài:                   %ld\n"
-
-#: readelf.c:9680
-#, c-format
-msgid "  Version:                  %d\n"
-msgstr "  Phiên bản:                  %d\n"
-
-#: readelf.c:9681
-#, c-format
-msgid "  Offset into .debug_info:  %lx\n"
-msgstr "  Hiệu số vào « .debug_info » (thông tin gỡ lỗi):  %lx\n"
-
-#: readelf.c:9682
-#, c-format
-msgid "  Pointer Size:             %d\n"
-msgstr "  Kích cỡ con trỏ :             %d\n"
-
-#: readelf.c:9683
-#, c-format
-msgid "  Segment Size:             %d\n"
-msgstr "  Kích cỡ phân đoạn:             %d\n"
-
-#: readelf.c:9685
-#, c-format
-msgid ""
-"\n"
-"    Address  Length\n"
-msgstr ""
-"\n"
-"    Độ dài địa chỉ\n"
-
-#: readelf.c:9741
-#, c-format
-msgid ""
-"\n"
-"The .debug_ranges section is empty.\n"
-msgstr ""
-"\n"
-"Phần « .debug_ranges » (các phạm vị gỡ lỗi) rỗng.\n"
-
-#. FIXME: Should we handle this case?
-#: readelf.c:9786
-msgid "Range lists in .debug_info section aren't in ascending order!\n"
-msgstr "• Các danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi) không phải theo thứ tự dần. •\n"
-
-#: readelf.c:9789
-msgid "No range lists in .debug_info section!\n"
-msgstr "• Không có danh sách phạm vị trong phần « .debug_info » (thông tin gỡ lỗi). •\n"
-
-#: readelf.c:9792
-#, c-format
-msgid "Range lists in .debug_ranges section start at 0x%lx\n"
-msgstr "Danh sách phạm vị trong phần « .debug_ranges » (các phạm vị gỡ lỗi) bắt đầu tại 0x%lx\n"
-
-#: readelf.c:9795
-#, c-format
-msgid ""
-"Contents of the .debug_ranges section:\n"
-"\n"
-msgstr ""
-"Nội dung của phần « .debug_ranges » (các phạm vị gỡ lỗi):\n"
-"\n"
-
-#: readelf.c:9796
-#, c-format
-msgid "    Offset   Begin    End\n"
-msgstr "    HIệu   Đầu    Cuối\n"
-
-#: readelf.c:9820
-#, c-format
-msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
-
-#: readelf.c:9823
-#, c-format
-msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
-msgstr "Có một chồng lấp [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
-
-#: readelf.c:10017
-#, c-format
-msgid "The section %s contains:\n"
-msgstr "Phần %s chứa:\n"
-
-#: readelf.c:10663
-#, c-format
-msgid "unsupported or unknown DW_CFA_%d\n"
-msgstr "« DW_CFA_%d » không được hỗ trợ, hay không rõ\n"
-
-#: readelf.c:10688
-#, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr "Chưa hỗ trợ khả năng hiển thị nội dung phần %s.\n"
-
-#: readelf.c:10732
-#, c-format
-msgid ""
-"\n"
-"Section '%s' has no debugging data.\n"
-msgstr ""
-"\n"
-"Phần « %s » không có dữ liệu gỡ lỗi nào.\n"
-
-#: readelf.c:10746
-msgid "debug section data"
-msgstr "dữ liệu phần gỡ lỗi"
-
-#: readelf.c:10765
-#, c-format
-msgid "Unrecognized debug section: %s\n"
-msgstr "Không nhận diện phần gỡ lỗi: %s\n"
-
-#: readelf.c:10800
-#, c-format
-msgid "Section %d was not dumped because it does not exist!\n"
-msgstr "• Phần %d không được đổ vì nó không tồn tại. •\n"
-
-#: readelf.c:10872 readelf.c:11236
+#: readelf.c:7936 readelf.c:8304
 msgid "liblist"
 msgstr "danh sách thư viên"
 
-#: readelf.c:10961
+#: readelf.c:8025
 msgid "options"
 msgstr "tùy chọn"
 
-#: readelf.c:10991
+#: readelf.c:8055
 #, c-format
 msgid ""
 "\n"
@@ -4640,15 +4734,15 @@
 "\n"
 "Phần « %s » chứa %d mục nhập:\n"
 
-#: readelf.c:11152
+#: readelf.c:8216
 msgid "conflict list found without a dynamic symbol table"
 msgstr "tìm danh sách xung đột không có bảng ký hiệu động"
 
-#: readelf.c:11168 readelf.c:11182
+#: readelf.c:8232 readelf.c:8246
 msgid "conflict"
 msgstr "xung Ä‘á»™t"
 
-#: readelf.c:11192
+#: readelf.c:8256
 #, c-format
 msgid ""
 "\n"
@@ -4657,15 +4751,15 @@
 "\n"
 "Phần « .conflict » (xung đột) chứa %lu mục nhập:\n"
 
-#: readelf.c:11194
+#: readelf.c:8258
 msgid "  Num:    Index       Value  Name"
 msgstr "  Số :    CMục     Giá trị    Tên"
 
-#: readelf.c:11243
+#: readelf.c:8311
 msgid "liblist string table"
 msgstr "bảng chuỗi danh sách thư viên"
 
-#: readelf.c:11252
+#: readelf.c:8321
 #, c-format
 msgid ""
 "\n"
@@ -4674,91 +4768,91 @@
 "\n"
 "Phần danh sách thư viên « %s » chứa %lu mục nhập:\n"
 
-#: readelf.c:11303
+#: readelf.c:8374
 msgid "NT_AUXV (auxiliary vector)"
 msgstr "NT_AUXV (véc-tơ phụ)"
 
-#: readelf.c:11305
+#: readelf.c:8376
 msgid "NT_PRSTATUS (prstatus structure)"
 msgstr "NT_PRSTATUS (cấu trúc trạng thái prstatus)"
 
-#: readelf.c:11307
+#: readelf.c:8378
 msgid "NT_FPREGSET (floating point registers)"
 msgstr "NT_FPREGSET (thanh ghi điểm phù động)"
 
-#: readelf.c:11309
+#: readelf.c:8380
 msgid "NT_PRPSINFO (prpsinfo structure)"
 msgstr "NT_PRPSINFO (cấu trúc thông tin prpsinfo)"
 
-#: readelf.c:11311
+#: readelf.c:8382
 msgid "NT_TASKSTRUCT (task structure)"
 msgstr "NT_TASKSTRUCT (cấu trúc tác vụ)"
 
-#: readelf.c:11313
+#: readelf.c:8384
 msgid "NT_PRXFPREG (user_xfpregs structure)"
 msgstr "NT_PRXFPREG (cấu trúc « user_xfpregs »)"
 
-#: readelf.c:11315
+#: readelf.c:8386
 msgid "NT_PSTATUS (pstatus structure)"
 msgstr "NT_PSTATUS (cấu trúc trạng thái pstatus)"
 
-#: readelf.c:11317
+#: readelf.c:8388
 msgid "NT_FPREGS (floating point registers)"
 msgstr "NT_FPREGS (thanh ghi điểm phù động)"
 
-#: readelf.c:11319
+#: readelf.c:8390
 msgid "NT_PSINFO (psinfo structure)"
 msgstr "NT_PSINFO (cấu trúc thông tin psinfo)"
 
-#: readelf.c:11321
+#: readelf.c:8392
 msgid "NT_LWPSTATUS (lwpstatus_t structure)"
 msgstr "NT_LWPSTATUS (cấu trúc trạng thái « lwpstatus_t »)"
 
-#: readelf.c:11323
+#: readelf.c:8394
 msgid "NT_LWPSINFO (lwpsinfo_t structure)"
 msgstr "NT_LWPSINFO (cấu trúc thông tin « lwpsinfo_t »)"
 
-#: readelf.c:11325
+#: readelf.c:8396
 msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
 msgstr "NT_WIN32PSTATUS (cấu trúc trạng thái « win32_pstatus »)"
 
-#: readelf.c:11333
+#: readelf.c:8404
 msgid "NT_VERSION (version)"
 msgstr "NT_VERSION (phiên bản)"
 
-#: readelf.c:11335
+#: readelf.c:8406
 msgid "NT_ARCH (architecture)"
 msgstr "NT_ARCH (architecture)"
 
-#: readelf.c:11340 readelf.c:11362
+#: readelf.c:8411 readelf.c:8433
 #, c-format
 msgid "Unknown note type: (0x%08x)"
 msgstr "Không biết kiểu ghi chú : (0x%08x)"
 
 #. NetBSD core "procinfo" structure.
-#: readelf.c:11352
+#: readelf.c:8423
 msgid "NetBSD procinfo structure"
 msgstr "Cấu trúc thông tin tiến trình procinfo NetBSD"
 
-#: readelf.c:11379 readelf.c:11393
+#: readelf.c:8450 readelf.c:8464
 msgid "PT_GETREGS (reg structure)"
 msgstr "PT_GETREGS (cấu trúc thanh ghi)"
 
-#: readelf.c:11381 readelf.c:11395
+#: readelf.c:8452 readelf.c:8466
 msgid "PT_GETFPREGS (fpreg structure)"
 msgstr "PT_GETFPREGS (cấu trúc thanh ghi « fpreg »)"
 
 # Name: don't translate / Tên: đừng dịch
-#: readelf.c:11401
+#: readelf.c:8472
 #, c-format
 msgid "PT_FIRSTMACH+%d"
 msgstr "PT_FIRSTMACH+%d"
 
-#: readelf.c:11447
+#: readelf.c:8518
 msgid "notes"
 msgstr "ghi chú"
 
-#: readelf.c:11453
+#: readelf.c:8524
 #, c-format
 msgid ""
 "\n"
@@ -4767,27 +4861,27 @@
 "\n"
 "Gặp ghi chú tại hiệu số 0x%08lx có độ dài 0x%08lx:\n"
 
-#: readelf.c:11455
+#: readelf.c:8526
 #, c-format
 msgid "  Owner\t\tData size\tDescription\n"
 msgstr "  Chủ\t\tCỡ dữ liệu\tMô tả\n"
 
-#: readelf.c:11474
+#: readelf.c:8545
 #, c-format
-msgid "corrupt note found at offset %x into core notes\n"
-msgstr "tìm ghi chú bị hỏng tại hiệu số %x vào ghi chú lõi\n"
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "tìm ghi chú bị hỏng tại hiệu số %lx vào ghi chú lõi\n"
 
-#: readelf.c:11476
+#: readelf.c:8547
 #, c-format
-msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
-msgstr " kiểu: %x, cỡ_tên: %08lx, cỡ_mô_tả: %08lx\n"
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " kiểu: %lx, cỡ_tên: %08lx, cỡ_mô_tả: %08lx\n"
 
-#: readelf.c:11574
+#: readelf.c:8645
 #, c-format
 msgid "No note segments present in the core file.\n"
 msgstr "Không có phân đoạn ghi chú trong tập tin lõi.\n"
 
-#: readelf.c:11653
+#: readelf.c:8726
 msgid ""
 "This instance of readelf has been built without support for a\n"
 "64 bit data type and so it cannot read 64 bit ELF files.\n"
@@ -4796,12 +4890,12 @@
 "không có hỗ trợ kiểu dữ liệu 64-bit\n"
 "nên không thể đọc tập tin ELF kiểu 64-bit.\n"
 
-#: readelf.c:11700 readelf.c:12059
+#: readelf.c:8775 readelf.c:9119
 #, c-format
 msgid "%s: Failed to read file header\n"
 msgstr "%s: việc đọc dòng đầu tập tin bị lỗi\n"
 
-#: readelf.c:11713
+#: readelf.c:8788
 #, c-format
 msgid ""
 "\n"
@@ -4810,72 +4904,72 @@
 "\n"
 "Tập tin: %s\n"
 
-#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#: readelf.c:8936 readelf.c:8957 readelf.c:8994 readelf.c:9074
 #, c-format
 msgid "%s: failed to read archive header\n"
 msgstr "%s: việc đọc dòng đầu kho bị lỗi\n"
 
 # Type: error
 # Description
-#: readelf.c:11887
+#: readelf.c:8947
 #, c-format
 msgid "%s: failed to skip archive symbol table\n"
 msgstr "%s: việc nhảy qua bảng ký hiệu kho bị lỗi\n"
 
 # Type: error
 # Description
-#: readelf.c:11919
+#: readelf.c:8979
 #, c-format
 msgid "%s: failed to read string table\n"
 msgstr "%s: việc đọc bảng chuỗi bị lỗi\n"
 
-#: readelf.c:11955
+#: readelf.c:9015
 #, c-format
 msgid "%s: invalid archive string table offset %lu\n"
 msgstr "%s: hiệu số bảng chuỗi kho không hợp lệ %lu\n"
 
-#: readelf.c:11971
+#: readelf.c:9031
 #, c-format
 msgid "%s: bad archive file name\n"
 msgstr "%s: tên tập tin kho sai\n"
 
-#: readelf.c:12003
+#: readelf.c:9063
 #, c-format
 msgid "%s: failed to seek to next archive header\n"
 msgstr "%s: việc tìm tới dòng đầu kho kế tiếp bị lỗi\n"
 
-#: readelf.c:12037
+#: readelf.c:9097
 #, c-format
 msgid "'%s': No such file\n"
 msgstr "« %s »: không có tập tin như vậy\n"
 
-#: readelf.c:12039
+#: readelf.c:9099
 #, c-format
 msgid "Could not locate '%s'.  System error message: %s\n"
 msgstr "Không thể định vị « %s ». Thông điệp lỗi hệ thống: %s\n"
 
-#: readelf.c:12046
+#: readelf.c:9106
 #, c-format
 msgid "'%s' is not an ordinary file\n"
 msgstr "« %s » không phải là tập tin chuẩn\n"
 
-#: readelf.c:12053
+#: readelf.c:9113
 #, c-format
 msgid "Input file '%s' is not readable.\n"
 msgstr "Tập tin nhập « %s » không có khả năng đọc.\n"
 
-#: rename.c:127
+#: rename.c:129
 #, c-format
 msgid "%s: cannot set time: %s"
 msgstr "%s: không thể lập thời gian: %s"
 
 #. We have to clean up here.
-#: rename.c:162 rename.c:200
+#: rename.c:164 rename.c:202
 #, c-format
 msgid "unable to rename '%s' reason: %s"
 msgstr "không thể đổi tên %s vì lý do : %s"
 
-#: rename.c:208
+#: rename.c:210
 #, c-format
 msgid "unable to copy file '%s' reason: %s"
 msgstr "không thể sao chép tập tin « %s » vì lý do : %s"
@@ -5108,7 +5202,7 @@
 
 #: rescoff.c:227
 msgid "directory entry name"
-msgstr "tên mục nhập thư mục "
+msgstr "tên mục nhập thư mục"
 
 #: rescoff.c:247
 msgid "named subdirectory"
@@ -5259,17 +5353,17 @@
 msgid "can't open `%s' for output: %s"
 msgstr "không thể mở « %s » để xuất: %s"
 
-#: size.c:81
+#: size.c:83
 #, c-format
 msgid " Displays the sizes of sections inside binary files\n"
 msgstr " Hiển thị kích cỡ của các phần ở trong tập tin nhị phân\n"
 
-#: size.c:82
+#: size.c:84
 #, c-format
 msgid " If no input file(s) are specified, a.out is assumed\n"
-msgstr "Nếu chưa ghi rõ tập tin nhập, giả sử <a.out>\n"
+msgstr " Nếu chưa ghi rõ tập tin nhập, giả sử <a.out>\n"
 
-#: size.c:83
+#: size.c:85
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5277,6 +5371,7 @@
 "  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex\n"
 "  -t        --totals                  Display the total sizes (Berkeley only)\n"
 "            --target=<bfdname>        Set the binary file format\n"
+"            @<file>                   Read options from <file>\n"
 "  -h        --help                    Display this information\n"
 "  -v        --version                 Display the program's version\n"
 "\n"
@@ -5291,16 +5386,17 @@
 "  -t        --totals          Hiển thị các kích cỡ _tổng cổng_ (chỉ Berkeley)\n"
 "            --target=<tên_bfd>        \tLập dạng thức tập tin nhị phân\n"
 "\t\t\t(đích)\n"
+"            @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h        --help                Hiển thị _trợ giúp_ này\n"
 "  -v        --version            Hiển thị _phiên bản_ của chương trình này\n"
 "\n"
 
-#: size.c:153
+#: size.c:158
 #, c-format
 msgid "invalid argument to --format: %s"
 msgstr "đối sô không hợp lệ tới « --format » (dạng thức): %s"
 
-#: size.c:180
+#: size.c:185
 #, c-format
 msgid "Invalid radix: %s\n"
 msgstr "Cơ sở không hợp lệ: %s\n"
@@ -5317,6 +5413,7 @@
 "  -q --quick       (Obsolete - ignored)\n"
 "  -n --noprescan   Do not perform a scan to convert commons into defs\n"
 "  -d --debug       Display information about what is being done\n"
+"  @<file>          Read options from <file>\n"
 "  -h --help        Display this information\n"
 "  -v --version     Print the program's version number\n"
 msgstr ""
@@ -5328,10 +5425,11 @@
 "\t\t(không quét trước)\n"
 "  -d --debug       \t\t\tHiển thị thông tin về hành động hiện thời\n"
 "\t\t(gỡ lỗi)\n"
+"   @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h --help        \t\t\tHiển thị _trợ giúp_ này\n"
 "  -v --version     \t\tIn ra số thứ tự _phiên bản_ của chương trình\n"
 
-#: srconv.c:1866
+#: srconv.c:1869
 #, c-format
 msgid "unable to open output file %s"
 msgstr "không thể mở tập tin kết xuất %s"
@@ -5469,22 +5567,22 @@
 msgid "Unrecognized demangled builtin type\n"
 msgstr "Không nhận diện kiểu builtin (điều có sẵn) đã tháo gỡ\n"
 
-#: strings.c:206
+#: strings.c:218
 #, c-format
 msgid "invalid number %s"
 msgstr "số không hợp lệ %s"
 
-#: strings.c:643
+#: strings.c:700
 #, c-format
 msgid "invalid integer argument %s"
 msgstr "đối số số nguyên không hợp lệ %s"
 
-#: strings.c:652
+#: strings.c:709
 #, c-format
 msgid " Display printable strings in [file(s)] (stdin by default)\n"
 msgstr " Hiển thị các chuỗi có khả năng in trong [tập tin...] (mặc định là thiết bị nhập chuẩn)\n"
 
-#: strings.c:653
+#: strings.c:710
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5497,6 +5595,7 @@
 "  -T --target=<BFDNAME>     Specify the binary file format\n"
 "  -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n"
 "                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"  @<file>                   Read options from <file>\n"
 "  -h --help                 Display this information\n"
 "  -v --version              Print the program's version number\n"
 msgstr ""
@@ -5516,15 +5615,16 @@
 "  -e --encoding={s,S,b,l,B,L}\n"
 "\t\tChọn kích cỡ ký tự và tính trạng cuối (endian):\n"
 "            \ts = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+"    @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h --help                 \t\tHiển thị _trợ giúp_ này\n"
 "  -v --version              \t\tIn ra số thứ tự _phiên bản_ của chương trình\n"
 
-#: sysdump.c:649
+#: sysdump.c:642
 #, c-format
 msgid "Print a human readable interpretation of a SYSROFF object file\n"
 msgstr "In ra lời giải dịch tập tin đối tượng SYSROFF cho người đọc\n"
 
-#: sysdump.c:650
+#: sysdump.c:643
 #, c-format
 msgid ""
 " The options are:\n"
@@ -5535,7 +5635,7 @@
 "  -h --help                 \t\tHiển thị _trợ giúp_ này\n"
 "  -v --version              \t\tIn ra số thứ tự _phiên bản_ của chương trình\n"
 
-#: sysdump.c:715
+#: sysdump.c:710
 #, c-format
 msgid "cannot open input file %s"
 msgstr "không thể mở tập tin nhập %s"
@@ -5651,14 +5751,16 @@
 #, c-format
 msgid ""
 "  -r                           Ignored for compatibility with rc\n"
+"  @<file>                      Read options from <file>\n"
 "  -h --help                    Print this help message\n"
 "  -V --version                 Print version information\n"
 msgstr ""
 "  -r\t\t\t\t\t \t \t\t     Bị bỏ qua để tương thích với rc (tài nguyên)\n"
+"   @<file>                   Đọc các tùy chọn từ tập tin đó\n"
 "  -h, --help                  \t\t\t\t             rctrợ giúp_ này\n"
 "  -V, --version            \t\t\t\t           In ra thông tin _phiên bản_\n"
 
-#: windres.c:664
+#: windres.c:665
 #, c-format
 msgid ""
 "FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
@@ -5671,20 +5773,20 @@
 "thiết bị nhập chuẩn, mặc định là rc. Không có tập tin xuất thì\n"
 "thiết bị xuất chuẩn, mặc định là rc.\n"
 
-#: windres.c:800
+#: windres.c:803
 msgid "invalid option -f\n"
 msgstr "tùy chọn không hợp lệ « -f »\n"
 
-#: windres.c:805
+#: windres.c:808
 msgid "No filename following the -fo option.\n"
 msgstr "Không có tên tập tin đi sau tùy chọn « -fo ».\n"
 
-#: windres.c:863
+#: windres.c:866
 #, c-format
 msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
 msgstr "Tùy chọn « -l » bị phản đối để lập dạng thức nhập, hãy dùng « -J » thay thế.\n"
 
-#: windres.c:981
+#: windres.c:984
 msgid "no resources"
 msgstr "không có tài nguyên nào"
 
@@ -5702,3 +5804,68 @@
 #, c-format
 msgid "%s: warning: unknown size for field `%s' in struct"
 msgstr "%s: cảnh báo : không biết kích cỡ cho trường « %s » trong cấu trúc"
+
+#~ msgid "flags"
+#~ msgstr "cờ"
+
+#~ msgid "debug_str section data"
+#~ msgstr "debug_str section data"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "dữ liệu phần « debug_loc » (định vị gỡ lỗi)"
+
+#~ msgid "debug_range section data"
+#~ msgstr "dữ liệu phần « debug_range » (phạm vị gỡ lỗi)"
+
+#~ msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+#~ msgstr "%s: đang nhảy qua kiểu ký hiệu bất ngờ %s trong việc định vị lại trong phần .rela%s\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "dữ liệu phần « .debug_abbrev » (gỡ lỗi viết tắt)"
+
+#~ msgid "extracting information from .debug_info section"
+#~ msgstr "đang trích thông tin ra phần « .debug_info » (thông tin gỡ lỗi)"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Phần « .debug_loc » (gỡ lỗi định vị) rỗng:\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_loc section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nội dung của phần « .debug_info » (thông tin gỡ lỗi):\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nội dung của phần « .debug_str » (chuỗi gỡ lỗi):\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_ranges section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Phần « .debug_ranges » (các phạm vị gỡ lỗi) rỗng.\n"
+
+#~ msgid ""
+#~ "Contents of the .debug_ranges section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nội dung của phần « .debug_ranges » (các phạm vị gỡ lỗi):\n"
+#~ "\n"
+
+#~ msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Có một lỗ [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
+
+#~ msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+#~ msgstr "Có một chồng lấp [0x%lx - 0x%lx] trong phần « .debug_ranges » (các phạm vị gỡ lỗi).\n"
+
+#~ msgid "debug section data"
+#~ msgstr "dữ liệu phần gỡ lỗi"

Added: branches/binutils/package/binutils/po/zh_CN.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/zh_CN.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/po/zh_TW.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/binutils/po/zh_TW.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/binutils/rclex.c
===================================================================
--- branches/binutils/package/binutils/rclex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/rclex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2615 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/binutils/Attic/rclex.c,v 1.1.16.1 2006/04/16 18:36:40 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 86
+#define YY_END_OF_BUFFER 87
+static yyconst short int yy_accept[470] =
+    {   0,
+        0,    0,   87,   85,   84,   83,   85,   78,   80,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,    2,    4,   84,
+        0,   81,   78,   80,   79,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   81,    0,   82,   11,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+
+       82,   82,   82,   82,   82,    3,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   76,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   41,   82,   82,
+       82,   53,   42,   82,   82,   82,   82,   82,   82,   82,
+       46,   82,   82,   82,   82,   82,   82,   71,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+
+       82,   82,   82,    7,   82,   82,   82,   38,    1,   82,
+       82,   82,   82,   82,   18,   82,   82,   25,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   70,
+       82,   82,   39,   40,   82,   82,   82,   82,   82,   30,
+       82,   82,   82,   82,   82,   82,   50,   82,   82,   82,
+       82,   82,   34,   82,   82,    9,   82,   82,   19,   82,
+       68,   82,   82,   82,   82,   82,   82,   12,    0,   82,
+       82,   82,   82,   82,   82,   82,   13,   82,   14,   82,
+       82,   82,   82,   65,   82,   82,   82,   52,   82,   72,
+       82,   82,   82,   82,   82,   82,   47,   82,   82,   82,
+
+       82,   82,   82,   82,   82,   82,   58,   82,   82,   36,
+       82,   82,   82,   82,   82,   82,   82,   82,    0,   82,
+        0,   77,   17,   82,   82,   51,   82,   10,   82,   82,
+       82,   82,   16,   82,   82,   82,   82,   82,   82,   82,
+       29,   82,   82,   82,   82,   82,   82,   82,   73,   82,
+       31,   82,   82,   82,   82,   82,   82,   45,    6,   82,
+       82,   82,   82,   77,   82,   23,   24,   82,   15,   82,
+       27,   82,   82,   66,   82,   28,   54,   43,   82,   82,
+       82,   48,   82,   69,    8,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+
+       64,   82,   82,   82,   82,   56,   82,   82,   82,   82,
+       35,   49,   82,   82,   82,   82,   20,   82,   82,   82,
+       82,   82,   82,   82,   82,   74,   82,   82,   82,   32,
+       82,   82,   37,   82,   82,   82,   82,   82,   82,   75,
+       82,   67,   61,   82,   82,   82,   33,   59,   60,    5,
+       21,   82,   82,   82,   82,   55,   57,   82,   82,   82,
+       26,   63,   82,   82,   82,   62,   22,   44,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    5,    6,    1,    1,    1,    1,    1,
+        1,    1,    1,    7,    1,    1,    1,    8,    8,    8,
+        9,    8,    8,    8,    8,    8,    8,    1,    1,    1,
+        1,    1,    1,    1,   10,   11,   12,   13,   14,   15,
+       16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
+       19,   26,   27,   28,   29,   30,   19,   31,   32,   19,
+        1,    1,    1,    1,    1,    1,   33,   33,   33,   33,
+
+       33,   33,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   33,
+       19,   19,   34,    1,   35,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[36] =
+    {   0,
+        1,    2,    3,    2,    1,    4,    2,    5,    5,    5,
+        5,    5,    5,    5,    5,    1,    1,    1,    1,    1,
+        5,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    5,    1,    1
+    } ;
+
+static yyconst short int yy_base[476] =
+    {   0,
+        0,    0,  517,  518,   34,  518,  511,    0,  494,   25,
+       26,   45,   25,   28,   24,  488,  499,   49,    0,   40,
+       43,  488,   51,   66,   67,  484,   35,  518,  518,   81,
+      505,   84,    0,  488,  518,    0,  496,  479,  494,  477,
+       75,  476,  479,  477,   46,  491,   70,  486,  473,  483,
+       55,  479,  483,  468,   69,  471,   86,   84,  469,  479,
+      466,  480,  466,  461,  477,  472,   75,  455,   81,  459,
+       87,   77,  470,  469,  467,  454,  454,  460,   96,  463,
+      455,  449,  448,  110,  468,  458,    0,  453,  446,  451,
+      450,  445,  454,  437,  438,  451,  435,  450,  432,  428,
+
+      431,  432,  435,  443,  426,    0,  425,  438,  437,  422,
+      417,  419,  429,  421,  422,  426,  414,  430,  425,  412,
+      426,  407,  408,  409,  421,  411,    0,  404,  411,  418,
+      416,  412,  410,  417,  395,  401,  414,  408,  394,  403,
+      399,  393,  389,  390,  388,  394,  396,  105,  385,  389,
+      401,  390,  391,  398,  387,  379,  381,  378,  375,  378,
+      372,  376,  389,  370,  365,  105,  383,    0,  381,  369,
+      365,    0,    0,  364,  365,  362,  360,  377,  363,  358,
+      105,  375,  374,  353,  357,  357,  351,    0,  368,  354,
+      349,  348,  354,  348,  345,  358,  348,  356,  358,  354,
+
+      349,  346,  351,    0,  337,  346,  352,    0,    0,  336,
+      122,  336,  347,  107,    0,  347,  333,    0,  330,  328,
+      338,  327,  338,  330,  329,  322,  319,  315,  332,    0,
+      332,  333,    0,    0,  329,  324,  331,  316,  316,    0,
+      116,  307,  309,  320,  324,  320,    0,  323,  320,  110,
+      320,  320,    0,  308,  318,    0,  318,  310,    0,  296,
+        0,  300,  309,  296,  293,  306,  306,    0,  135,  139,
+      295,  289,  292,  302,  290,  292,    0,  295,  297,  297,
+      278,  294,  297,    0,  295,  280,  278,    0,  279,    0,
+      272,  285,  269,  287,  272,  283,    0,  282,  281,  273,
+
+      267,  279,  263,  259,  261,  259,    0,  276,  258,    0,
+      257,  256,  260,  250,  271,  270,  267,  260,  272,  145,
+      271,  151,    0,  261,  243,    0,  242,    0,  261,  240,
+      260,  241,    0,  252,  239,  252,  238,  233,  249,  248,
+        0,  251,  249,  249,  236,  229,  242,  227,    0,  224,
+        0,  225,  224,  241,  226,  239,  220,  229,    0,  218,
+      217,  224,  219,  237,  215,    0,    0,  211,    0,  228,
+        0,  211,  205,    0,  218,    0,    0,    0,  214,  208,
+      213,    0,  222,    0,    0,  217,  206,  201,  202,  201,
+      215,  201,  201,  199,  208,  210,  209,  201,  190,  196,
+
+      194,  190,  190,  192,  198,    0,  200,  184,  186,  184,
+        0,    0,  186,  183,  190,  178,    0,  179,  173,  174,
+      172,  185,  188,  183,  173,    0,  185,  173,  166,    0,
+      169,  177,    0,  166,  162,  157,  159,  158,  161,    0,
+      157,    0,    0,  162,  167,  158,    0,    0,    0,    0,
+        0,  143,  152,  143,  141,    0,    0,  130,  124,  124,
+        0,    0,  107,   85,   80,    0,    0,    0,  518,  158,
+      163,   65,  168,  173,  178
+    } ;
+
+static yyconst short int yy_def[476] =
+    {   0,
+      469,    1,  469,  469,  469,  469,  470,  471,  472,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  469,  469,  469,
+      470,  469,  471,  472,  469,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  469,  470,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  469,  474,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  475,  474,
+      475,  474,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  475,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
+      473,  473,  473,  473,  473,  473,  473,  473,    0,  469,
+      469,  469,  469,  469,  469
+    } ;
+
+static yyconst short int yy_nxt[554] =
+    {   0,
+        4,    5,    6,    5,    7,    8,    4,    9,    9,   10,
+       11,   12,   13,   14,   15,   16,   17,   18,   19,   19,
+       20,   21,   22,   19,   23,   24,   25,   19,   26,   27,
+       19,   19,   19,   28,   29,   30,   37,   30,   50,   41,
+       52,   55,   51,   42,   81,   38,   43,   56,   82,   63,
+       53,   39,   83,   40,   44,   95,   67,   64,   54,   96,
+       59,   45,   60,   65,  103,   46,   68,   66,   47,   34,
+       61,   62,   48,   49,   70,   73,   71,   74,   76,   72,
+       77,  104,   30,   78,   30,   84,   84,   90,   85,  108,
+       91,   98,   99,   75,   79,  111,  113,  123,  126,  109,
+
+      129,  124,  131,  132,  114,  139,  468,  467,  127,  112,
+      130,   84,   84,  205,   85,  241,  206,  273,  242,  225,
+      274,  140,  243,  269,  269,  295,  270,  141,  226,  466,
+      207,  227,  228,  304,  229,  465,  269,  269,  305,  319,
+      321,  296,  321,  322,   36,  321,  321,  464,  321,  322,
+       36,  321,  321,  463,  321,  322,   36,  321,   31,   31,
+      462,   31,   31,   33,   33,  461,   33,   33,   36,  460,
+      459,   36,   36,  320,  320,  458,  320,  320,  321,  321,
+      457,  456,  321,  455,  454,  453,  452,  451,  450,  449,
+      448,  447,  446,  445,  444,  443,  442,  441,  440,  439,
+
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+      428,  427,  426,  425,  424,  423,  422,  421,  420,  419,
+      418,  417,  416,  415,  414,  413,  412,  411,  410,  409,
+      408,  407,  406,  405,  404,  403,  402,  401,  400,  399,
+      398,  364,  397,  396,  395,  394,  393,  392,  391,  390,
+      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
+      379,  378,  377,  376,  375,  374,  373,  372,  371,  370,
+      369,  368,  367,  366,  365,  364,  364,  363,  362,  361,
+      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+
+      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
+      330,  329,  328,  327,  326,  325,  324,  323,  318,  317,
+      316,  315,  314,  313,  312,  311,  310,  309,  308,  307,
+      306,  303,  302,  301,  300,  299,  298,  297,  294,  293,
+      292,  291,  290,  289,  288,  287,  286,  285,  284,  283,
+      282,  281,  280,  279,  278,  277,  276,  275,  272,  271,
+      268,  267,  266,  265,  264,  263,  262,  261,  260,  259,
+      258,  257,  256,  255,  254,  253,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  240,  239,  238,  237,  236,
+      235,  234,  233,  232,  231,  230,  224,  223,  222,  221,
+
+      220,  219,  218,  217,  216,  215,  214,  213,  212,  211,
+      210,  209,  208,  204,  203,  202,  201,  200,  199,  198,
+      197,  196,  195,  194,  193,  192,  191,  190,  189,  188,
+      187,  186,  185,  184,  183,  182,  181,  180,  179,  178,
+      177,  176,  175,  174,  173,  172,  171,  170,  169,  168,
+      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
+      157,  156,  155,  154,  153,  152,  151,  150,  149,  148,
+      147,  146,   32,  145,  144,  143,  142,  138,  137,  136,
+      135,  134,  133,  128,  125,  122,  121,  120,  119,  118,
+      117,  116,  115,  110,  107,  106,  105,  102,  101,  100,
+
+       97,   94,   93,   92,   89,   88,   87,   86,   35,   32,
+       80,   69,   58,   57,   35,   32,  469,    3,  469,  469,
+      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
+      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
+      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
+      469,  469,  469
+    } ;
+
+static yyconst short int yy_chk[554] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    5,   10,    5,   13,   11,
+       14,   15,   13,   11,   27,   10,   11,   15,   27,   20,
+       14,   10,   27,   10,   12,   45,   21,   20,   14,   45,
+       18,   12,   18,   20,   51,   12,   21,   20,   12,  472,
+       18,   18,   12,   12,   23,   24,   23,   24,   25,   23,
+       25,   51,   30,   25,   30,   32,   32,   41,   32,   55,
+       41,   47,   47,   24,   25,   57,   58,   67,   69,   55,
+
+       71,   67,   72,   72,   58,   79,  465,  464,   69,   57,
+       71,   84,   84,  148,   84,  181,  148,  214,  181,  166,
+      214,   79,  181,  211,  211,  241,  211,   79,  166,  463,
+      148,  166,  166,  250,  166,  460,  269,  269,  250,  269,
+      270,  241,  270,  270,  270,  270,  320,  459,  320,  320,
+      320,  320,  322,  458,  322,  322,  322,  322,  470,  470,
+      455,  470,  470,  471,  471,  454,  471,  471,  473,  453,
+      452,  473,  473,  474,  474,  446,  474,  474,  475,  475,
+      445,  444,  475,  441,  439,  438,  437,  436,  435,  434,
+      432,  431,  429,  428,  427,  425,  424,  423,  422,  421,
+
+      420,  419,  418,  416,  415,  414,  413,  410,  409,  408,
+      407,  405,  404,  403,  402,  401,  400,  399,  398,  397,
+      396,  395,  394,  393,  392,  391,  390,  389,  388,  387,
+      386,  383,  381,  380,  379,  375,  373,  372,  370,  368,
+      365,  364,  363,  362,  361,  360,  358,  357,  356,  355,
+      354,  353,  352,  350,  348,  347,  346,  345,  344,  343,
+      342,  340,  339,  338,  337,  336,  335,  334,  332,  331,
+      330,  329,  327,  325,  324,  321,  319,  318,  317,  316,
+      315,  314,  313,  312,  311,  309,  308,  306,  305,  304,
+      303,  302,  301,  300,  299,  298,  296,  295,  294,  293,
+
+      292,  291,  289,  287,  286,  285,  283,  282,  281,  280,
+      279,  278,  276,  275,  274,  273,  272,  271,  267,  266,
+      265,  264,  263,  262,  260,  258,  257,  255,  254,  252,
+      251,  249,  248,  246,  245,  244,  243,  242,  239,  238,
+      237,  236,  235,  232,  231,  229,  228,  227,  226,  225,
+      224,  223,  222,  221,  220,  219,  217,  216,  213,  212,
+      210,  207,  206,  205,  203,  202,  201,  200,  199,  198,
+      197,  196,  195,  194,  193,  192,  191,  190,  189,  187,
+      186,  185,  184,  183,  182,  180,  179,  178,  177,  176,
+      175,  174,  171,  170,  169,  167,  165,  164,  163,  162,
+
+      161,  160,  159,  158,  157,  156,  155,  154,  153,  152,
+      151,  150,  149,  147,  146,  145,  144,  143,  142,  141,
+      140,  139,  138,  137,  136,  135,  134,  133,  132,  131,
+      130,  129,  128,  126,  125,  124,  123,  122,  121,  120,
+      119,  118,  117,  116,  115,  114,  113,  112,  111,  110,
+      109,  108,  107,  105,  104,  103,  102,  101,  100,   99,
+       98,   97,   96,   95,   94,   93,   92,   91,   90,   89,
+       88,   86,   85,   83,   82,   81,   80,   78,   77,   76,
+       75,   74,   73,   70,   68,   66,   65,   64,   63,   62,
+       61,   60,   59,   56,   54,   53,   52,   50,   49,   48,
+
+       46,   44,   43,   42,   40,   39,   38,   37,   34,   31,
+       26,   22,   17,   16,    9,    7,    3,  469,  469,  469,
+      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
+      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
+      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
+      469,  469,  469
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "rclex.l"
+#define INITIAL 0
+#line 2 "rclex.l"
+/* Copyright 1997, 1998, 1999, 2001, 2002, 2003, 2005
+   Free Software Foundation, Inc.
+   Written by Ian Lance Taylor, Cygnus Support.
+
+   This file is part of GNU Binutils.
+
+   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 2 of the License, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* This is a lex input file which generates a lexer used by the
+   Windows rc file parser.  It basically just recognized a bunch of
+   keywords.  */
+
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "windres.h"
+#include "rcparse.h"
+
+#include <assert.h>
+
+#define YY_NO_UNPUT
+
+/* Whether we are in rcdata mode, in which we returns the lengths of
+   strings.  */
+
+static int rcdata_mode;
+
+/* Whether we are supressing lines from cpp (including windows.h or
+   headers from your C sources may bring in externs and typedefs).
+   When active, we return IGNORED_TOKEN, which lets us ignore these
+   outside of resource constructs.  Thus, it isn't required to protect
+   all the non-preprocessor lines in your header files with #ifdef
+   RC_INVOKED.  It also means your RC file can't include other RC
+   files if they're named "*.h".  Sorry.  Name them *.rch or whatever.  */
+
+static int suppress_cpp_data;
+
+#define MAYBE_RETURN(x) return suppress_cpp_data ? IGNORED_TOKEN : (x)
+
+/* The first filename we detect in the cpp output.  We use this to
+   tell included files from the original file.  */
+
+static char *initial_fn;
+
+/* List of allocated strings.  */
+
+struct alloc_string
+{
+  struct alloc_string *next;
+  char *s;
+};
+
+static struct alloc_string *strings;
+
+/* Local functions.  */
+
+static void cpp_line (const char *);
+static char *handle_quotes (const char *, unsigned long *);
+static char *get_string (int);
+
+#line 716 "rclex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 78 "rclex.l"
+
+
+#line 881 "rclex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 470 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 518 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 80 "rclex.l"
+{ MAYBE_RETURN (BEG); }
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 81 "rclex.l"
+{ MAYBE_RETURN (BEG); }
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 82 "rclex.l"
+{ MAYBE_RETURN (END); }
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 83 "rclex.l"
+{ MAYBE_RETURN (END); }
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 84 "rclex.l"
+{ MAYBE_RETURN (ACCELERATORS); }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 85 "rclex.l"
+{ MAYBE_RETURN (VIRTKEY); }
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 86 "rclex.l"
+{ MAYBE_RETURN (ASCII); }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 87 "rclex.l"
+{ MAYBE_RETURN (NOINVERT); }
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 88 "rclex.l"
+{ MAYBE_RETURN (SHIFT); }
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 89 "rclex.l"
+{ MAYBE_RETURN (CONTROL); }
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 90 "rclex.l"
+{ MAYBE_RETURN (ALT); }
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 91 "rclex.l"
+{ MAYBE_RETURN (BITMAP); }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 92 "rclex.l"
+{ MAYBE_RETURN (CURSOR); }
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 93 "rclex.l"
+{ MAYBE_RETURN (DIALOG); }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 94 "rclex.l"
+{ MAYBE_RETURN (DIALOGEX); }
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 95 "rclex.l"
+{ MAYBE_RETURN (EXSTYLE); }
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 96 "rclex.l"
+{ MAYBE_RETURN (CAPTION); }
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 97 "rclex.l"
+{ MAYBE_RETURN (CLASS); }
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 98 "rclex.l"
+{ MAYBE_RETURN (STYLE); }
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 99 "rclex.l"
+{ MAYBE_RETURN (AUTO3STATE); }
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 100 "rclex.l"
+{ MAYBE_RETURN (AUTOCHECKBOX); }
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 101 "rclex.l"
+{ MAYBE_RETURN (AUTORADIOBUTTON); }
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 102 "rclex.l"
+{ MAYBE_RETURN (CHECKBOX); }
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 103 "rclex.l"
+{ MAYBE_RETURN (COMBOBOX); }
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 104 "rclex.l"
+{ MAYBE_RETURN (CTEXT); }
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 105 "rclex.l"
+{ MAYBE_RETURN (DEFPUSHBUTTON); }
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 106 "rclex.l"
+{ MAYBE_RETURN (EDITTEXT); }
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 107 "rclex.l"
+{ MAYBE_RETURN (GROUPBOX); }
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 108 "rclex.l"
+{ MAYBE_RETURN (LISTBOX); }
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 109 "rclex.l"
+{ MAYBE_RETURN (LTEXT); }
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 110 "rclex.l"
+{ MAYBE_RETURN (PUSHBOX); }
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 111 "rclex.l"
+{ MAYBE_RETURN (PUSHBUTTON); }
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 112 "rclex.l"
+{ MAYBE_RETURN (RADIOBUTTON); }
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 113 "rclex.l"
+{ MAYBE_RETURN (RTEXT); }
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 114 "rclex.l"
+{ MAYBE_RETURN (SCROLLBAR); }
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 115 "rclex.l"
+{ MAYBE_RETURN (STATE3); }
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 116 "rclex.l"
+{ MAYBE_RETURN (USERBUTTON); }
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 117 "rclex.l"
+{ MAYBE_RETURN (BEDIT); }
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 118 "rclex.l"
+{ MAYBE_RETURN (HEDIT); }
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 119 "rclex.l"
+{ MAYBE_RETURN (IEDIT); }
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 120 "rclex.l"
+{ MAYBE_RETURN (FONT); }
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 121 "rclex.l"
+{ MAYBE_RETURN (ICON); }
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 122 "rclex.l"
+{ MAYBE_RETURN (LANGUAGE); }
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 123 "rclex.l"
+{ MAYBE_RETURN (CHARACTERISTICS); }
+	YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 124 "rclex.l"
+{ MAYBE_RETURN (VERSIONK); }
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 125 "rclex.l"
+{ MAYBE_RETURN (MENU); }
+	YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 126 "rclex.l"
+{ MAYBE_RETURN (MENUEX); }
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 127 "rclex.l"
+{ MAYBE_RETURN (MENUITEM); }
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 128 "rclex.l"
+{ MAYBE_RETURN (SEPARATOR); }
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 129 "rclex.l"
+{ MAYBE_RETURN (POPUP); }
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 130 "rclex.l"
+{ MAYBE_RETURN (CHECKED); }
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 131 "rclex.l"
+{ MAYBE_RETURN (GRAYED); }
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 132 "rclex.l"
+{ MAYBE_RETURN (HELP); }
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 133 "rclex.l"
+{ MAYBE_RETURN (INACTIVE); }
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 134 "rclex.l"
+{ MAYBE_RETURN (MENUBARBREAK); }
+	YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 135 "rclex.l"
+{ MAYBE_RETURN (MENUBREAK); }
+	YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 136 "rclex.l"
+{ MAYBE_RETURN (MESSAGETABLE); }
+	YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 137 "rclex.l"
+{ MAYBE_RETURN (RCDATA); }
+	YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 138 "rclex.l"
+{ MAYBE_RETURN (STRINGTABLE); }
+	YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 139 "rclex.l"
+{ MAYBE_RETURN (VERSIONINFO); }
+	YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 140 "rclex.l"
+{ MAYBE_RETURN (FILEVERSION); }
+	YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 141 "rclex.l"
+{ MAYBE_RETURN (PRODUCTVERSION); }
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 142 "rclex.l"
+{ MAYBE_RETURN (FILEFLAGSMASK); }
+	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 143 "rclex.l"
+{ MAYBE_RETURN (FILEFLAGS); }
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 144 "rclex.l"
+{ MAYBE_RETURN (FILEOS); }
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 145 "rclex.l"
+{ MAYBE_RETURN (FILETYPE); }
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 146 "rclex.l"
+{ MAYBE_RETURN (FILESUBTYPE); }
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 147 "rclex.l"
+{ MAYBE_RETURN (VALUE); }
+	YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 148 "rclex.l"
+{ MAYBE_RETURN (MOVEABLE); }
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 149 "rclex.l"
+{ MAYBE_RETURN (FIXED); }
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 150 "rclex.l"
+{ MAYBE_RETURN (PURE); }
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 151 "rclex.l"
+{ MAYBE_RETURN (IMPURE); }
+	YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 152 "rclex.l"
+{ MAYBE_RETURN (PRELOAD); }
+	YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 153 "rclex.l"
+{ MAYBE_RETURN (LOADONCALL); }
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 154 "rclex.l"
+{ MAYBE_RETURN (DISCARDABLE); }
+	YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 155 "rclex.l"
+{ MAYBE_RETURN (NOT); }
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 157 "rclex.l"
+{
+			  char *s, *send;
+
+			  /* This is a hack to let us parse version
+                             information easily.  */
+
+			  s = strchr (yytext, '"');
+			  ++s;
+			  send = strchr (s, '"');
+			  if (strncmp (s, "StringFileInfo",
+				       sizeof "StringFileInfo" - 1) == 0
+			      && s + sizeof "StringFileInfo" - 1 == send)
+			    MAYBE_RETURN (BLOCKSTRINGFILEINFO);
+			  else if (strncmp (s, "VarFileInfo",
+					    sizeof "VarFileInfo" - 1) == 0
+				   && s + sizeof "VarFileInfo" - 1 == send)
+			    MAYBE_RETURN (BLOCKVARFILEINFO);
+			  else
+			    {
+			      char *r;
+
+			      r = get_string (send - s + 1);
+			      strncpy (r, s, send - s);
+			      r[send - s] = '\0';
+			      yylval.s = r;
+			      MAYBE_RETURN (BLOCK);
+			    }
+			}
+	YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 186 "rclex.l"
+{
+			  cpp_line (yytext);
+			}
+	YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 190 "rclex.l"
+{
+			  yylval.i.val = strtoul (yytext, 0, 0);
+			  yylval.i.dword = 1;
+			  MAYBE_RETURN (NUMBER);
+			}
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 196 "rclex.l"
+{
+			  yylval.i.val = strtoul (yytext, 0, 0);
+			  yylval.i.dword = 0;
+			  MAYBE_RETURN (NUMBER);
+			}
+	YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 202 "rclex.l"
+{
+			  char *s;
+			  unsigned long length;
+
+			  s = handle_quotes (yytext, &length);
+			  if (! rcdata_mode)
+			    {
+			      yylval.s = s;
+			      MAYBE_RETURN (QUOTEDSTRING);
+			    }
+			  else
+			    {
+			      yylval.ss.length = length;
+			      yylval.ss.s = s;
+			      MAYBE_RETURN (SIZEDSTRING);
+			    }
+			}
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 220 "rclex.l"
+{
+			  char *s;
+
+			  /* I rejected comma in a string in order to
+			     handle VIRTKEY, CONTROL in an accelerator
+			     resource.  This means that an unquoted
+			     file name can not contain a comma.  I
+			     don't know what rc permits.  */
+
+			  s = get_string (strlen (yytext) + 1);
+			  strcpy (s, yytext);
+			  yylval.s = s;
+			  MAYBE_RETURN (STRING);
+			}
+	YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 235 "rclex.l"
+{ ++rc_lineno; }
+	YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 236 "rclex.l"
+{ /* ignore whitespace */ }
+	YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 237 "rclex.l"
+{ MAYBE_RETURN (*yytext); }
+	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 239 "rclex.l"
+ECHO;
+	YY_BREAK
+#line 1460 "rclex.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 470 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 470 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 469);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 239 "rclex.l"
+
+#ifndef yywrap
+/* This is needed for some versions of lex.  */
+int yywrap (void)
+{
+  return 1;
+}
+#endif
+
+/* Handle a C preprocessor line.  */
+
+static void
+cpp_line (const char *s)
+{
+  int line;
+  char *send, *fn;
+
+  ++s;
+  while (ISSPACE (*s))
+    ++s;
+  
+  line = strtol (s, &send, 0);
+  if (*send != '\0' && ! ISSPACE (*send))
+    return;
+
+  /* Subtract 1 because we are about to count the newline.  */
+  rc_lineno = line - 1;
+
+  s = send;
+  while (ISSPACE (*s))
+    ++s;
+
+  if (*s != '"')
+    return;
+
+  ++s;
+  send = strchr (s, '"');
+  if (send == NULL)
+    return;
+
+  fn = (char *) xmalloc (send - s + 1);
+  strncpy (fn, s, send - s);
+  fn[send - s] = '\0';
+
+  free (rc_filename);
+  rc_filename = fn;
+
+  if (!initial_fn)
+    {
+      initial_fn = xmalloc (strlen (fn) + 1);
+      strcpy (initial_fn, fn);
+    }
+
+  /* Allow the initial file, regardless of name.  Suppress all other
+     files if they end in ".h" (this allows included "*.rc").  */
+  if (strcmp (initial_fn, fn) == 0
+      || strcmp (fn + strlen (fn) - 2, ".h") != 0)
+    suppress_cpp_data = 0;
+  else
+    suppress_cpp_data = 1;
+}
+
+/* Handle a quoted string.  The quotes are stripped.  A pair of quotes
+   in a string are turned into a single quote.  Adjacent strings are
+   merged separated by whitespace are merged, as in C.  */
+
+static char *
+handle_quotes (const char *input, unsigned long *len)
+{
+  char *ret, *s;
+  const char *t;
+  int ch;
+  int num_xdigits;
+
+  ret = get_string (strlen (input) + 1);
+
+  s = ret;
+  t = input;
+  if (*t == '"')
+    ++t;
+  while (*t != '\0')
+    {
+      if (*t == '\\')
+	{
+	  ++t;
+	  switch (*t)
+	    {
+	    case '\0':
+	      rcparse_warning ("backslash at end of string");
+	      break;
+
+	    case '\"':
+	      rcparse_warning ("use \"\" to put \" in a string");
+	      break;
+
+	    case 'a':
+	      *s++ = ESCAPE_B; /* Strange, but true...  */
+	      ++t;
+	      break;
+
+	    case 'b':
+	      *s++ = ESCAPE_B;
+	      ++t;
+	      break;
+
+	    case 'f':
+	      *s++ = ESCAPE_F;
+	      ++t;
+	      break;
+
+	    case 'n':
+	      *s++ = ESCAPE_N;
+	      ++t;
+	      break;
+
+	    case 'r':
+	      *s++ = ESCAPE_R;
+	      ++t;
+	      break;
+
+	    case 't':
+	      *s++ = ESCAPE_T;
+	      ++t;
+	      break;
+
+	    case 'v':
+	      *s++ = ESCAPE_V;
+	      ++t;
+	      break;
+
+	    case '\\':
+	      *s++ = *t++;
+	      break;
+
+	    case '0': case '1': case '2': case '3':
+	    case '4': case '5': case '6': case '7':
+	      ch = *t - '0';
+	      ++t;
+	      if (*t >= '0' && *t <= '7')
+		{
+		  ch = (ch << 3) | (*t - '0');
+		  ++t;
+		  if (*t >= '0' && *t <= '7')
+		    {
+		      ch = (ch << 3) | (*t - '0');
+		      ++t;
+		    }
+		}
+	      *s++ = ch;
+	      break;
+
+	    case 'x':
+	      ++t;
+	      ch = 0;
+	      /* We only handle single byte chars here.  Make sure
+		 we finish an escape sequence like "/xB0ABC" after
+		 the first two digits.  */
+              num_xdigits = 2;
+ 	      while (num_xdigits--)
+		{
+		  if (*t >= '0' && *t <= '9')
+		    ch = (ch << 4) | (*t - '0');
+		  else if (*t >= 'a' && *t <= 'f')
+		    ch = (ch << 4) | (*t - 'a' + 10);
+		  else if (*t >= 'A' && *t <= 'F')
+		    ch = (ch << 4) | (*t - 'A' + 10);
+		  else
+		    break;
+		  ++t;
+		}
+	      *s++ = ch;
+	      break;
+
+	    default:
+	      rcparse_warning ("unrecognized escape sequence");
+	      *s++ = '\\';
+	      *s++ = *t++;
+	      break;
+	    }
+	}
+      else if (*t != '"')
+	*s++ = *t++;
+      else if (t[1] == '\0')
+	break;
+      else if (t[1] == '"')
+	{
+	  *s++ = '"';
+	  t += 2;
+	}
+      else
+	{
+	  ++t;
+	  assert (ISSPACE (*t));
+	  while (ISSPACE (*t))
+	    {
+	      if ((*t) == '\n')
+		++rc_lineno;
+	      ++t;
+	    }
+	  if (*t == '\0')
+	    break;
+	  assert (*t == '"');
+	  ++t;
+	}
+    }
+
+  *s = '\0';
+
+  *len = s - ret;
+
+  return ret;
+}
+
+/* Allocate a string of a given length.  */
+
+static char *
+get_string (int len)
+{
+  struct alloc_string *as;
+
+  as = (struct alloc_string *) xmalloc (sizeof *as);
+  as->s = xmalloc (len);
+
+  as->next = strings;
+  strings = as;
+
+  return as->s;
+}
+
+/* Discard all the strings we have allocated.  The parser calls this
+   when it no longer needs them.  */
+
+void
+rcparse_discard_strings (void)
+{
+  struct alloc_string *as;
+
+  as = strings;
+  while (as != NULL)
+    {
+      struct alloc_string *n;
+
+      free (as->s);
+      n = as->next;
+      free (as);
+      as = n;
+    }
+
+  strings = NULL;
+}
+
+/* Enter rcdata mode.  */
+
+void
+rcparse_rcdata (void)
+{
+  rcdata_mode = 1;
+}
+
+/* Go back to normal mode from rcdata mode.  */
+
+void
+rcparse_normal (void)
+{
+  rcdata_mode = 0;
+}

Added: branches/binutils/package/binutils/rcparse.c
===================================================================
--- branches/binutils/package/binutils/rcparse.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/rcparse.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4144 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     BEG = 258,
+     END = 259,
+     ACCELERATORS = 260,
+     VIRTKEY = 261,
+     ASCII = 262,
+     NOINVERT = 263,
+     SHIFT = 264,
+     CONTROL = 265,
+     ALT = 266,
+     BITMAP = 267,
+     CURSOR = 268,
+     DIALOG = 269,
+     DIALOGEX = 270,
+     EXSTYLE = 271,
+     CAPTION = 272,
+     CLASS = 273,
+     STYLE = 274,
+     AUTO3STATE = 275,
+     AUTOCHECKBOX = 276,
+     AUTORADIOBUTTON = 277,
+     CHECKBOX = 278,
+     COMBOBOX = 279,
+     CTEXT = 280,
+     DEFPUSHBUTTON = 281,
+     EDITTEXT = 282,
+     GROUPBOX = 283,
+     LISTBOX = 284,
+     LTEXT = 285,
+     PUSHBOX = 286,
+     PUSHBUTTON = 287,
+     RADIOBUTTON = 288,
+     RTEXT = 289,
+     SCROLLBAR = 290,
+     STATE3 = 291,
+     USERBUTTON = 292,
+     BEDIT = 293,
+     HEDIT = 294,
+     IEDIT = 295,
+     FONT = 296,
+     ICON = 297,
+     LANGUAGE = 298,
+     CHARACTERISTICS = 299,
+     VERSIONK = 300,
+     MENU = 301,
+     MENUEX = 302,
+     MENUITEM = 303,
+     SEPARATOR = 304,
+     POPUP = 305,
+     CHECKED = 306,
+     GRAYED = 307,
+     HELP = 308,
+     INACTIVE = 309,
+     MENUBARBREAK = 310,
+     MENUBREAK = 311,
+     MESSAGETABLE = 312,
+     RCDATA = 313,
+     STRINGTABLE = 314,
+     VERSIONINFO = 315,
+     FILEVERSION = 316,
+     PRODUCTVERSION = 317,
+     FILEFLAGSMASK = 318,
+     FILEFLAGS = 319,
+     FILEOS = 320,
+     FILETYPE = 321,
+     FILESUBTYPE = 322,
+     BLOCKSTRINGFILEINFO = 323,
+     BLOCKVARFILEINFO = 324,
+     VALUE = 325,
+     BLOCK = 326,
+     MOVEABLE = 327,
+     FIXED = 328,
+     PURE = 329,
+     IMPURE = 330,
+     PRELOAD = 331,
+     LOADONCALL = 332,
+     DISCARDABLE = 333,
+     NOT = 334,
+     QUOTEDSTRING = 335,
+     STRING = 336,
+     NUMBER = 337,
+     SIZEDSTRING = 338,
+     IGNORED_TOKEN = 339,
+     NEG = 340
+   };
+#endif
+/* Tokens.  */
+#define BEG 258
+#define END 259
+#define ACCELERATORS 260
+#define VIRTKEY 261
+#define ASCII 262
+#define NOINVERT 263
+#define SHIFT 264
+#define CONTROL 265
+#define ALT 266
+#define BITMAP 267
+#define CURSOR 268
+#define DIALOG 269
+#define DIALOGEX 270
+#define EXSTYLE 271
+#define CAPTION 272
+#define CLASS 273
+#define STYLE 274
+#define AUTO3STATE 275
+#define AUTOCHECKBOX 276
+#define AUTORADIOBUTTON 277
+#define CHECKBOX 278
+#define COMBOBOX 279
+#define CTEXT 280
+#define DEFPUSHBUTTON 281
+#define EDITTEXT 282
+#define GROUPBOX 283
+#define LISTBOX 284
+#define LTEXT 285
+#define PUSHBOX 286
+#define PUSHBUTTON 287
+#define RADIOBUTTON 288
+#define RTEXT 289
+#define SCROLLBAR 290
+#define STATE3 291
+#define USERBUTTON 292
+#define BEDIT 293
+#define HEDIT 294
+#define IEDIT 295
+#define FONT 296
+#define ICON 297
+#define LANGUAGE 298
+#define CHARACTERISTICS 299
+#define VERSIONK 300
+#define MENU 301
+#define MENUEX 302
+#define MENUITEM 303
+#define SEPARATOR 304
+#define POPUP 305
+#define CHECKED 306
+#define GRAYED 307
+#define HELP 308
+#define INACTIVE 309
+#define MENUBARBREAK 310
+#define MENUBREAK 311
+#define MESSAGETABLE 312
+#define RCDATA 313
+#define STRINGTABLE 314
+#define VERSIONINFO 315
+#define FILEVERSION 316
+#define PRODUCTVERSION 317
+#define FILEFLAGSMASK 318
+#define FILEFLAGS 319
+#define FILEOS 320
+#define FILETYPE 321
+#define FILESUBTYPE 322
+#define BLOCKSTRINGFILEINFO 323
+#define BLOCKVARFILEINFO 324
+#define VALUE 325
+#define BLOCK 326
+#define MOVEABLE 327
+#define FIXED 328
+#define PURE 329
+#define IMPURE 330
+#define PRELOAD 331
+#define LOADONCALL 332
+#define DISCARDABLE 333
+#define NOT 334
+#define QUOTEDSTRING 335
+#define STRING 336
+#define NUMBER 337
+#define SIZEDSTRING 338
+#define IGNORED_TOKEN 339
+#define NEG 340
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 1 "rcparse.y"
+ /* rcparse.y -- parser for Windows rc files
+   Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
+   Free Software Foundation, Inc.
+   Written by Ian Lance Taylor, Cygnus Support.
+
+   This file is part of GNU Binutils.
+
+   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 2 of the License, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/* This is a parser for Windows rc files.  It is based on the parser
+   by Gunther Ebert <gunther.ebert at ixos-leipzig.de>.  */
+
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "windres.h"
+#include "safe-ctype.h"
+
+/* The current language.  */
+
+static unsigned short language;
+
+/* The resource information during a sub statement.  */
+
+static struct res_res_info sub_res_info;
+
+/* Dialog information.  This is built by the nonterminals styles and
+   controls.  */
+
+static struct dialog dialog;
+
+/* This is used when building a style.  It is modified by the
+   nonterminal styleexpr.  */
+
+static unsigned long style;
+
+/* These are used when building a control.  They are set before using
+   control_params.  */
+
+static unsigned long base_style;
+static unsigned long default_style;
+static unsigned long class;
+static struct res_id res_text_field;
+static unichar null_unichar;
+
+/* This is used for COMBOBOX, LISTBOX and EDITTEXT which
+   do not allow resource 'text' field in control definition. */
+static const struct res_id res_null_text = { 1, {{0, &null_unichar}}};
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 66 "rcparse.y"
+typedef union YYSTYPE {
+  struct accelerator acc;
+  struct accelerator *pacc;
+  struct dialog_control *dialog_control;
+  struct menuitem *menuitem;
+  struct
+  {
+    struct rcdata_item *first;
+    struct rcdata_item *last;
+  } rcdata;
+  struct rcdata_item *rcdata_item;
+  struct stringtable_data *stringtable;
+  struct fixed_versioninfo *fixver;
+  struct ver_info *verinfo;
+  struct ver_stringinfo *verstring;
+  struct ver_varinfo *vervar;
+  struct res_id id;
+  struct res_res_info res_info;
+  struct
+  {
+    unsigned short on;
+    unsigned short off;
+  } memflags;
+  struct
+  {
+    unsigned long val;
+    /* Nonzero if this number was explicitly specified as long.  */
+    int dword;
+  } i;
+  unsigned long il;
+  unsigned short is;
+  const char *s;
+  struct
+  {
+    unsigned long length;
+    const char *s;
+  } ss;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 358 "rcparse.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 370 "rcparse.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  2
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   792
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  99
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  91
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  247
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  500
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   340
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    92,    87,     2,
+      97,    98,    90,    88,    95,    89,     2,    91,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,    96,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    86,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    85,     2,    93,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      94
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     4,     7,    10,    13,    16,    19,    22,
+      25,    28,    31,    34,    37,    40,    43,    46,    49,    56,
+      57,    60,    63,    68,    70,    72,    74,    78,    81,    83,
+      85,    87,    89,    91,    93,    98,   103,   104,   118,   119,
+     133,   134,   149,   150,   154,   155,   159,   163,   167,   171,
+     175,   181,   188,   196,   205,   209,   213,   218,   222,   223,
+     226,   227,   232,   233,   238,   239,   244,   245,   250,   251,
+     256,   257,   261,   273,   286,   299,   313,   314,   319,   320,
+     325,   326,   330,   331,   336,   337,   342,   349,   358,   369,
+     381,   382,   387,   388,   392,   393,   398,   399,   404,   405,
+     410,   411,   416,   417,   422,   423,   427,   428,   433,   434,
+     450,   457,   466,   476,   477,   480,   482,   485,   486,   490,
+     491,   495,   496,   500,   501,   505,   510,   515,   519,   526,
+     527,   530,   535,   538,   545,   546,   550,   553,   555,   557,
+     559,   561,   563,   565,   572,   573,   576,   579,   583,   589,
+     592,   598,   605,   613,   623,   628,   635,   640,   641,   644,
+     645,   647,   649,   651,   655,   659,   660,   667,   668,   672,
+     677,   684,   689,   696,   697,   704,   711,   715,   719,   723,
+     727,   731,   732,   741,   749,   750,   756,   757,   761,   763,
+     765,   767,   770,   773,   776,   778,   779,   782,   786,   791,
+     795,   796,   799,   800,   803,   805,   807,   809,   811,   813,
+     815,   817,   819,   821,   823,   826,   830,   835,   837,   841,
+     842,   844,   847,   849,   851,   855,   858,   861,   865,   869,
+     873,   877,   881,   885,   889,   893,   896,   898,   900,   904,
+     907,   911,   915,   919,   923,   927,   931,   935
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+     100,     0,    -1,    -1,   100,   101,    -1,   100,   107,    -1,
+     100,   108,    -1,   100,   109,    -1,   100,   147,    -1,   100,
+     148,    -1,   100,   149,    -1,   100,   150,    -1,   100,   155,
+      -1,   100,   158,    -1,   100,   159,    -1,   100,   164,    -1,
+     100,   167,    -1,   100,   168,    -1,   100,    84,    -1,   173,
+       5,   176,     3,   102,     4,    -1,    -1,   102,   103,    -1,
+     104,   187,    -1,   104,   187,    95,   105,    -1,    80,    -1,
+     188,    -1,   106,    -1,   105,    95,   106,    -1,   105,   106,
+      -1,     6,    -1,     7,    -1,     8,    -1,     9,    -1,    10,
+      -1,    11,    -1,   173,    12,   178,   180,    -1,   173,    13,
+     177,   180,    -1,    -1,   173,    14,   178,   113,   188,   184,
+     184,   184,   110,   114,     3,   115,     4,    -1,    -1,   173,
+      15,   178,   113,   188,   184,   184,   184,   111,   114,     3,
+     115,     4,    -1,    -1,   173,    15,   178,   113,   188,   184,
+     184,   184,   184,   112,   114,     3,   115,     4,    -1,    -1,
+      16,    96,   185,    -1,    -1,   114,    17,    80,    -1,   114,
+      18,   173,    -1,   114,    19,   181,    -1,   114,    16,   185,
+      -1,   114,    18,    80,    -1,   114,    41,   185,    95,    80,
+      -1,   114,    41,   185,    95,    80,   184,    -1,   114,    41,
+     185,    95,    80,   184,   184,    -1,   114,    41,   185,    95,
+      80,   184,   184,   184,    -1,   114,    46,   173,    -1,   114,
+      44,   185,    -1,   114,    43,   185,   184,    -1,   114,    45,
+     185,    -1,    -1,   115,   116,    -1,    -1,    20,   139,   117,
+     138,    -1,    -1,    21,   139,   118,   138,    -1,    -1,    22,
+     139,   119,   138,    -1,    -1,    38,   139,   120,   138,    -1,
+      -1,    23,   139,   121,   138,    -1,    -1,    24,   122,   138,
+      -1,    10,   139,   185,   184,   141,   184,   184,   184,   184,
+     183,   140,    -1,    10,   139,   185,   184,   141,   184,   184,
+     184,   184,   184,   184,   140,    -1,    10,   139,   185,    95,
+      80,   141,   184,   184,   184,   184,   183,   140,    -1,    10,
+     139,   185,    95,    80,   141,   184,   184,   184,   184,   184,
+     184,   140,    -1,    -1,    25,   139,   123,   138,    -1,    -1,
+      26,   139,   124,   138,    -1,    -1,    27,   125,   138,    -1,
+      -1,    28,   139,   126,   138,    -1,    -1,    39,   139,   127,
+     138,    -1,    42,   175,   185,   184,   184,   140,    -1,    42,
+     175,   185,   184,   184,   184,   184,   140,    -1,    42,   175,
+     185,   184,   184,   184,   184,   143,   183,   140,    -1,    42,
+     175,   185,   184,   184,   184,   184,   143,   184,   184,   140,
+      -1,    -1,    40,   139,   128,   138,    -1,    -1,    29,   129,
+     138,    -1,    -1,    30,   139,   130,   138,    -1,    -1,    31,
+     139,   131,   138,    -1,    -1,    32,   139,   132,   138,    -1,
+      -1,    33,   139,   133,   138,    -1,    -1,    34,   139,   134,
+     138,    -1,    -1,    35,   135,   138,    -1,    -1,    36,   139,
+     136,   138,    -1,    -1,    37,   175,   185,    95,   185,    95,
+     185,    95,   185,    95,   185,    95,   137,   181,   183,    -1,
+     185,   184,   184,   184,   184,   140,    -1,   185,   184,   184,
+     184,   184,   145,   183,   140,    -1,   185,   184,   184,   184,
+     184,   145,   184,   184,   140,    -1,    -1,   188,    95,    -1,
+      80,    -1,    80,    95,    -1,    -1,     3,   160,     4,    -1,
+      -1,    95,   142,   181,    -1,    -1,    95,   144,   181,    -1,
+      -1,    95,   146,   181,    -1,   173,    41,   177,   180,    -1,
+     173,    42,   177,   180,    -1,    43,   185,   184,    -1,   173,
+      46,   176,     3,   151,     4,    -1,    -1,   151,   152,    -1,
+      48,    80,   184,   153,    -1,    48,    49,    -1,    50,    80,
+     153,     3,   151,     4,    -1,    -1,   153,    95,   154,    -1,
+     153,   154,    -1,    51,    -1,    52,    -1,    53,    -1,    54,
+      -1,    55,    -1,    56,    -1,   173,    47,   176,     3,   156,
+       4,    -1,    -1,   156,   157,    -1,    48,    80,    -1,    48,
+      80,   184,    -1,    48,    80,   184,   184,   183,    -1,    48,
+      49,    -1,    50,    80,     3,   156,     4,    -1,    50,    80,
+     184,     3,   156,     4,    -1,    50,    80,   184,   184,     3,
+     156,     4,    -1,    50,    80,   184,   184,   184,   183,     3,
+     156,     4,    -1,   173,    57,   178,   180,    -1,   173,    58,
+     176,     3,   160,     4,    -1,   173,    58,   176,   180,    -1,
+      -1,   161,   162,    -1,    -1,   163,    -1,    83,    -1,   186,
+      -1,   163,    95,    83,    -1,   163,    95,   186,    -1,    -1,
+      59,   176,     3,   165,   166,     4,    -1,    -1,   166,   185,
+      80,    -1,   166,   185,    95,    80,    -1,   173,   173,   176,
+       3,   160,     4,    -1,   173,   173,   176,   180,    -1,   173,
+      60,   169,     3,   170,     4,    -1,    -1,   169,    61,   185,
+     184,   184,   184,    -1,   169,    62,   185,   184,   184,   184,
+      -1,   169,    63,   185,    -1,   169,    64,   185,    -1,   169,
+      65,   185,    -1,   169,    66,   185,    -1,   169,    67,   185,
+      -1,    -1,   170,    68,     3,    71,     3,   171,     4,     4,
+      -1,   170,    69,     3,    70,    80,   172,     4,    -1,    -1,
+     171,    70,    80,    95,    80,    -1,    -1,   172,   184,   184,
+      -1,   188,    -1,    81,    -1,    80,    -1,    80,    95,    -1,
+      81,    95,    -1,   188,    95,    -1,   174,    -1,    -1,   176,
+     179,    -1,   176,    44,   185,    -1,   176,    43,   185,   184,
+      -1,   176,    45,   185,    -1,    -1,   177,   179,    -1,    -1,
+     178,   179,    -1,    72,    -1,    73,    -1,    74,    -1,    75,
+      -1,    76,    -1,    77,    -1,    78,    -1,    80,    -1,    81,
+      -1,   182,    -1,    79,   182,    -1,   181,    85,   182,    -1,
+     181,    85,    79,   182,    -1,    82,    -1,    97,   185,    98,
+      -1,    -1,   184,    -1,    95,   185,    -1,   186,    -1,    82,
+      -1,    97,   186,    98,    -1,    93,   186,    -1,    89,   186,
+      -1,   186,    90,   186,    -1,   186,    91,   186,    -1,   186,
+      92,   186,    -1,   186,    88,   186,    -1,   186,    89,   186,
+      -1,   186,    87,   186,    -1,   186,    86,   186,    -1,   186,
+      85,   186,    -1,    95,   188,    -1,   189,    -1,    82,    -1,
+      97,   186,    98,    -1,    93,   186,    -1,   189,    90,   186,
+      -1,   189,    91,   186,    -1,   189,    92,   186,    -1,   189,
+      88,   186,    -1,   189,    89,   186,    -1,   189,    87,   186,
+      -1,   189,    86,   186,    -1,   189,    85,   186,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   161,   161,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   183,   194,
+     197,   218,   223,   235,   256,   266,   270,   275,   282,   286,
+     291,   295,   299,   303,   312,   324,   338,   336,   363,   361,
+     390,   388,   420,   423,   429,   431,   437,   441,   446,   450,
+     454,   467,   482,   497,   512,   516,   520,   524,   530,   532,
+     544,   543,   555,   554,   566,   565,   577,   576,   591,   590,
+     602,   601,   614,   625,   634,   647,   659,   658,   670,   669,
+     681,   680,   692,   691,   703,   702,   716,   721,   727,   733,
+     740,   739,   754,   753,   765,   764,   776,   775,   786,   785,
+     797,   796,   808,   807,   819,   818,   830,   829,   842,   840,
+     858,   869,   880,   893,   896,   901,   905,   913,   916,   926,
+     925,   932,   931,   938,   937,   945,   957,   970,   979,   990,
+     993,  1010,  1014,  1018,  1026,  1029,  1033,  1040,  1044,  1048,
+    1052,  1056,  1060,  1069,  1080,  1083,  1100,  1104,  1108,  1112,
+    1116,  1120,  1124,  1128,  1138,  1150,  1157,  1170,  1170,  1182,
+    1186,  1193,  1201,  1209,  1218,  1233,  1232,  1237,  1239,  1246,
+    1259,  1266,  1278,  1289,  1294,  1300,  1306,  1311,  1316,  1321,
+    1326,  1341,  1344,  1348,  1356,  1359,  1367,  1370,  1379,  1384,
+    1400,  1404,  1408,  1416,  1421,  1439,  1445,  1451,  1456,  1461,
+    1472,  1477,  1489,  1494,  1506,  1511,  1516,  1521,  1526,  1531,
+    1536,  1546,  1550,  1567,  1571,  1575,  1579,  1586,  1590,  1600,
+    1603,  1612,  1621,  1630,  1634,  1638,  1643,  1648,  1653,  1658,
+    1663,  1668,  1673,  1678,  1683,  1694,  1703,  1714,  1718,  1722,
+    1727,  1732,  1737,  1742,  1747,  1752,  1757,  1762
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "BEG", "END", "ACCELERATORS", "VIRTKEY",
+  "ASCII", "NOINVERT", "SHIFT", "CONTROL", "ALT", "BITMAP", "CURSOR",
+  "DIALOG", "DIALOGEX", "EXSTYLE", "CAPTION", "CLASS", "STYLE",
+  "AUTO3STATE", "AUTOCHECKBOX", "AUTORADIOBUTTON", "CHECKBOX", "COMBOBOX",
+  "CTEXT", "DEFPUSHBUTTON", "EDITTEXT", "GROUPBOX", "LISTBOX", "LTEXT",
+  "PUSHBOX", "PUSHBUTTON", "RADIOBUTTON", "RTEXT", "SCROLLBAR", "STATE3",
+  "USERBUTTON", "BEDIT", "HEDIT", "IEDIT", "FONT", "ICON", "LANGUAGE",
+  "CHARACTERISTICS", "VERSIONK", "MENU", "MENUEX", "MENUITEM", "SEPARATOR",
+  "POPUP", "CHECKED", "GRAYED", "HELP", "INACTIVE", "MENUBARBREAK",
+  "MENUBREAK", "MESSAGETABLE", "RCDATA", "STRINGTABLE", "VERSIONINFO",
+  "FILEVERSION", "PRODUCTVERSION", "FILEFLAGSMASK", "FILEFLAGS", "FILEOS",
+  "FILETYPE", "FILESUBTYPE", "BLOCKSTRINGFILEINFO", "BLOCKVARFILEINFO",
+  "VALUE", "BLOCK", "MOVEABLE", "FIXED", "PURE", "IMPURE", "PRELOAD",
+  "LOADONCALL", "DISCARDABLE", "NOT", "QUOTEDSTRING", "STRING", "NUMBER",
+  "SIZEDSTRING", "IGNORED_TOKEN", "'|'", "'^'", "'&'", "'+'", "'-'", "'*'",
+  "'/'", "'%'", "'~'", "NEG", "','", "'='", "'('", "')'", "$accept",
+  "input", "accelerator", "acc_entries", "acc_entry", "acc_event",
+  "acc_options", "acc_option", "bitmap", "cursor", "dialog", "@1", "@2",
+  "@3", "exstyle", "styles", "controls", "control", "@4", "@5", "@6", "@7",
+  "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15", "@16", "@17",
+  "@18", "@19", "@20", "@21", "@22", "@23", "@24", "control_params",
+  "optresidc", "opt_control_data", "control_styleexpr", "@25",
+  "icon_styleexpr", "@26", "control_params_styleexpr", "@27", "font",
+  "icon", "language", "menu", "menuitems", "menuitem", "menuitem_flags",
+  "menuitem_flag", "menuex", "menuexitems", "menuexitem", "messagetable",
+  "rcdata", "optrcdata_data", "@28", "optrcdata_data_int", "rcdata_data",
+  "stringtable", "@29", "string_data", "user", "versioninfo",
+  "fixedverinfo", "verblocks", "vervals", "vertrans", "id", "resname",
+  "resref", "suboptions", "memflags_move_discard", "memflags_move",
+  "memflag", "file_name", "styleexpr", "parennumber", "optcnumexpr",
+  "cnumexpr", "numexpr", "sizednumexpr", "cposnumexpr", "posnumexpr",
+  "sizedposnumexpr", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   124,    94,    38,    43,    45,
+      42,    47,    37,   126,   340,    44,    61,    40,    41
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    99,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   101,   102,
+     102,   103,   103,   104,   104,   105,   105,   105,   106,   106,
+     106,   106,   106,   106,   107,   108,   110,   109,   111,   109,
+     112,   109,   113,   113,   114,   114,   114,   114,   114,   114,
+     114,   114,   114,   114,   114,   114,   114,   114,   115,   115,
+     117,   116,   118,   116,   119,   116,   120,   116,   121,   116,
+     122,   116,   116,   116,   116,   116,   123,   116,   124,   116,
+     125,   116,   126,   116,   127,   116,   116,   116,   116,   116,
+     128,   116,   129,   116,   130,   116,   131,   116,   132,   116,
+     133,   116,   134,   116,   135,   116,   136,   116,   137,   116,
+     138,   138,   138,   139,   139,   139,   139,   140,   140,   142,
+     141,   144,   143,   146,   145,   147,   148,   149,   150,   151,
+     151,   152,   152,   152,   153,   153,   153,   154,   154,   154,
+     154,   154,   154,   155,   156,   156,   157,   157,   157,   157,
+     157,   157,   157,   157,   158,   159,   159,   161,   160,   162,
+     162,   163,   163,   163,   163,   165,   164,   166,   166,   166,
+     167,   167,   168,   169,   169,   169,   169,   169,   169,   169,
+     169,   170,   170,   170,   171,   171,   172,   172,   173,   173,
+     174,   174,   174,   175,   175,   176,   176,   176,   176,   176,
+     177,   177,   178,   178,   179,   179,   179,   179,   179,   179,
+     179,   180,   180,   181,   181,   181,   181,   182,   182,   183,
+     183,   184,   185,   186,   186,   186,   186,   186,   186,   186,
+     186,   186,   186,   186,   186,   187,   188,   189,   189,   189,
+     189,   189,   189,   189,   189,   189,   189,   189
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     6,     0,
+       2,     2,     4,     1,     1,     1,     3,     2,     1,     1,
+       1,     1,     1,     1,     4,     4,     0,    13,     0,    13,
+       0,    14,     0,     3,     0,     3,     3,     3,     3,     3,
+       5,     6,     7,     8,     3,     3,     4,     3,     0,     2,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     3,    11,    12,    12,    13,     0,     4,     0,     4,
+       0,     3,     0,     4,     0,     4,     6,     8,    10,    11,
+       0,     4,     0,     3,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     3,     0,     4,     0,    15,
+       6,     8,     9,     0,     2,     1,     2,     0,     3,     0,
+       3,     0,     3,     0,     3,     4,     4,     3,     6,     0,
+       2,     4,     2,     6,     0,     3,     2,     1,     1,     1,
+       1,     1,     1,     6,     0,     2,     2,     3,     5,     2,
+       5,     6,     7,     9,     4,     6,     4,     0,     2,     0,
+       1,     1,     1,     3,     3,     0,     6,     0,     3,     4,
+       6,     4,     6,     0,     6,     6,     3,     3,     3,     3,
+       3,     0,     8,     7,     0,     5,     0,     3,     1,     1,
+       1,     2,     2,     2,     1,     0,     2,     3,     4,     3,
+       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     3,     4,     1,     3,     0,
+       1,     2,     1,     1,     3,     2,     2,     3,     3,     3,
+       3,     3,     3,     3,     3,     2,     1,     1,     3,     2,
+       3,     3,     3,     3,     3,     3,     3,     3
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       2,     0,     1,     0,   195,   189,   237,    17,     0,     0,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,     0,   188,   236,   223,     0,     0,
+       0,     0,   222,     0,   239,     0,   195,   202,   200,   202,
+     202,   200,   200,   195,   195,   202,   195,   173,   195,     0,
+       0,     0,     0,     0,     0,     0,     0,   226,   225,     0,
+       0,   127,     0,     0,     0,     0,     0,     0,     0,     0,
+     165,     0,     0,     0,   204,   205,   206,   207,   208,   209,
+     210,   196,   238,     0,     0,     0,    42,    42,     0,     0,
+       0,     0,     0,     0,     0,     0,   247,   246,   245,   243,
+     244,   240,   241,   242,   224,   221,   234,   233,   232,   230,
+     231,   227,   228,   229,   167,     0,   197,   199,    19,   211,
+     212,   203,    34,   201,    35,     0,     0,     0,   125,   126,
+     129,   144,   154,   157,   156,   181,     0,     0,     0,     0,
+       0,     0,     0,   157,   171,     0,   198,     0,     0,     0,
+       0,     0,     0,     0,   159,     0,     0,     0,   176,   177,
+     178,   179,   180,     0,   166,     0,    18,    23,    20,     0,
+      24,    43,     0,     0,   128,     0,     0,   130,   143,     0,
+       0,   145,   155,   161,   158,   160,   162,   172,     0,     0,
+       0,     0,   170,   168,     0,     0,    21,     0,     0,   132,
+       0,   134,   149,   146,     0,     0,     0,     0,     0,     0,
+     169,   235,     0,    36,    38,   134,     0,   147,   144,     0,
+     163,   164,     0,     0,   174,   175,    28,    29,    30,    31,
+      32,    33,    22,    25,    44,    44,    40,   131,   129,   137,
+     138,   139,   140,   141,   142,     0,   136,   219,     0,   144,
+       0,   184,   186,     0,    27,     0,     0,    44,     0,   135,
+     148,   220,   150,     0,   144,   219,     0,     0,    26,    58,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    58,
+       0,   133,   151,     0,     0,     0,     0,   183,     0,     0,
+      48,    45,    49,    46,     0,   217,     0,    47,   213,     0,
+       0,    55,    57,    54,     0,    58,   152,   144,   182,     0,
+     187,    37,   113,   113,   113,   113,   113,    70,   113,   113,
+      80,   113,    92,   113,   113,   113,   113,   113,   104,   113,
+       0,   113,   113,   113,     0,    59,   214,     0,     0,     0,
+      56,    39,     0,     0,     0,   115,     0,     0,    60,    62,
+      64,    68,     0,    76,    78,     0,    82,     0,    94,    96,
+      98,   100,   102,     0,   106,   190,     0,   194,     0,     0,
+      66,    84,    90,     0,   218,     0,   215,    50,    41,   153,
+     185,   116,     0,   114,     0,     0,     0,     0,    71,     0,
+       0,     0,    81,     0,    93,     0,     0,     0,     0,     0,
+     105,     0,   191,   192,     0,   193,     0,     0,     0,     0,
+     216,    51,     0,     0,    61,    63,    65,    69,     0,    77,
+      79,    83,    95,    97,    99,   101,   103,   107,     0,    67,
+      85,    91,     0,    52,     0,   119,     0,     0,     0,   117,
+      53,     0,     0,     0,     0,     0,   157,    86,     0,     0,
+     120,     0,   117,     0,     0,   117,     0,     0,   123,   110,
+     219,     0,   118,   121,    87,   219,     0,   219,     0,   117,
+     220,     0,     0,   117,   220,   219,   117,   220,   124,   111,
+     117,     0,   122,    88,   117,   117,   220,    72,   117,   112,
+       0,    89,    74,   117,    73,   108,    75,     0,   219,   109
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,     1,    10,   147,   168,   169,   232,   233,    11,    12,
+      13,   234,   235,   257,   126,   255,   289,   335,   384,   385,
+     386,   406,   387,   352,   390,   391,   355,   393,   407,   408,
+     357,   395,   396,   397,   398,   399,   363,   401,   497,   388,
+     346,   447,   436,   442,   465,   472,   460,   468,    14,    15,
+      16,    17,   151,   177,   216,   246,    18,   152,   181,    19,
+      20,   153,   154,   184,   185,    21,   114,   145,    22,    23,
+      94,   155,   266,   267,    24,   367,   368,    33,    85,    84,
+      81,   122,   297,   298,   260,   261,   389,    32,   196,   347,
+      26
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -426
+static const short int yypact[] =
+{
+    -426,    12,  -426,   287,  -426,  -426,  -426,  -426,   287,   287,
+    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
+    -426,  -426,  -426,  -426,   106,  -426,   585,  -426,   287,   287,
+     287,   -80,   675,    83,  -426,   637,  -426,  -426,  -426,  -426,
+    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,   287,
+     287,   287,   287,   287,   287,   287,   287,  -426,  -426,   651,
+     287,  -426,   287,   287,   287,   287,   287,   287,   287,   287,
+    -426,   287,   287,   287,  -426,  -426,  -426,  -426,  -426,  -426,
+    -426,  -426,  -426,   286,   678,   678,   188,   188,   678,   678,
+     323,   375,   678,   210,   128,   274,   682,   688,   302,    89,
+      89,  -426,  -426,  -426,  -426,  -426,   682,   688,   302,    89,
+      89,  -426,  -426,  -426,  -426,   -80,  -426,  -426,  -426,  -426,
+    -426,  -426,  -426,  -426,  -426,   -70,   142,   142,  -426,  -426,
+    -426,  -426,  -426,  -426,  -426,  -426,   287,   287,   287,   287,
+     287,   287,   287,  -426,  -426,     2,  -426,     5,   287,   -80,
+     -80,    33,    40,    47,   373,    38,   -80,   -80,  -426,  -426,
+    -426,  -426,  -426,    49,  -426,    17,  -426,  -426,  -426,   -41,
+    -426,  -426,   -80,   -80,  -426,   -44,   -24,  -426,  -426,   -35,
+      36,  -426,  -426,  -426,  -426,   -13,   675,  -426,   129,   138,
+     -80,   -80,  -426,  -426,    69,   142,    73,   -80,   -80,  -426,
+     -80,  -426,  -426,   -80,     8,   454,   111,    97,   -80,   -80,
+    -426,  -426,   775,  -426,   -80,  -426,   119,   -80,  -426,    13,
+    -426,   675,   183,   116,  -426,  -426,  -426,  -426,  -426,  -426,
+    -426,  -426,    22,  -426,  -426,  -426,  -426,   245,  -426,  -426,
+    -426,  -426,  -426,  -426,  -426,   736,  -426,   -80,    96,  -426,
+      15,  -426,  -426,   775,  -426,   370,   512,  -426,   158,  -426,
+    -426,  -426,  -426,   172,  -426,   -80,    34,     6,  -426,  -426,
+     287,   125,   227,    72,   287,   287,   287,   287,   260,  -426,
+     523,  -426,  -426,   179,   207,   229,   131,  -426,   -80,   584,
+    -426,  -426,  -426,  -426,    43,  -426,   287,   159,  -426,   151,
+     -80,  -426,  -426,  -426,   621,  -426,  -426,  -426,  -426,   153,
+    -426,  -426,   141,   141,   141,   141,   141,  -426,   141,   141,
+    -426,   141,  -426,   141,   141,   141,   141,   141,  -426,   141,
+     230,   141,   141,   141,   230,  -426,  -426,   160,   133,   169,
+    -426,  -426,   658,   193,   189,   164,   287,   173,  -426,  -426,
+    -426,  -426,   287,  -426,  -426,   287,  -426,   287,  -426,  -426,
+    -426,  -426,  -426,   287,  -426,   175,   181,  -426,   287,   184,
+    -426,  -426,  -426,   287,  -426,    43,  -426,   -80,  -426,  -426,
+    -426,  -426,   185,  -426,   287,   287,   287,   287,  -426,   -80,
+     287,   287,  -426,   287,  -426,   287,   287,   287,   287,   287,
+    -426,   287,  -426,  -426,   197,  -426,   287,   287,   287,   -80,
+    -426,   -80,   341,   199,  -426,  -426,  -426,  -426,   -80,  -426,
+    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,   287,  -426,
+    -426,  -426,   -80,   -80,   199,  -426,   -80,   -80,   208,    18,
+    -426,   -80,    72,   -80,   -80,   287,  -426,  -426,   -80,   -80,
+     159,   -80,    19,   211,   298,    20,   -80,   -80,  -426,  -426,
+     -80,   287,  -426,  -426,  -426,   -80,   -80,   -80,    72,   310,
+     -80,   219,    72,   310,   -80,   -80,   310,   -80,   159,  -426,
+     310,   287,   159,  -426,   310,   310,   -80,  -426,   310,  -426,
+     220,  -426,  -426,   310,  -426,  -426,  -426,    72,   -37,  -426
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -207,  -426,  -426,
+    -426,  -426,  -426,  -426,   218,  -222,  -255,  -426,  -426,  -426,
+    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
+    -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,   126,
+     388,   107,  -113,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
+    -426,  -426,    84,  -426,   110,    87,  -426,  -215,  -426,  -426,
+    -426,  -142,  -426,  -426,  -426,  -426,  -426,  -426,  -426,  -426,
+    -426,  -426,  -426,  -426,   -22,  -426,     0,   397,    82,   212,
+     548,   486,  -425,  -286,  -258,    28,    -3,    11,  -426,     3,
+    -426
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -1
+static const unsigned short int yytable[] =
+{
+      31,   163,    48,   248,    25,   199,   164,   284,   336,   166,
+     287,   218,     2,   256,   202,    60,   249,   450,   264,    34,
+      35,   446,   446,   446,   304,   254,   148,    25,   226,   227,
+     228,   229,   230,   231,   263,   280,   200,   174,   285,    57,
+      58,    59,   187,   478,   178,   203,   268,   482,   338,   283,
+     342,   182,   376,   192,   195,     3,   201,   105,    60,    61,
+      96,    97,    98,    99,   100,   101,   102,   103,   115,   116,
+     117,     4,   498,   106,   107,   108,   109,   110,   111,   112,
+     113,   175,   205,   176,    27,   167,    70,     6,   179,   410,
+     180,    28,   343,     5,     6,    29,     7,   193,     8,    30,
+     262,    60,     9,    60,   286,     8,   188,   189,    60,     9,
+      60,    36,   194,    60,   458,   463,   204,   253,    37,    38,
+      39,    40,   238,    88,    89,   295,    71,    72,    73,   149,
+     150,   135,   206,   156,   157,   158,   159,   160,   161,   162,
+     296,   207,   165,   146,   179,   171,   180,    41,    42,   210,
+     170,   294,    43,    44,   295,    74,    75,    76,    77,    78,
+      79,    80,   281,    45,    46,   186,    47,   223,   212,   296,
+     239,   240,   241,   242,   243,   244,   282,   172,   173,    67,
+      68,    69,   222,   306,   190,   191,   251,     5,     6,   136,
+     137,   138,   139,   140,   141,   142,   252,   379,   211,     8,
+     197,   198,   469,     9,   125,   291,   175,   473,   176,   476,
+     307,   309,   375,   133,   245,   295,   221,   485,   208,   209,
+     179,   345,   180,     6,     6,   213,   214,   179,   215,   180,
+     296,   217,   219,   308,     8,     8,   224,   225,     9,     9,
+     499,   179,   236,   180,   338,   247,   339,   250,   344,   377,
+     293,    86,    87,    71,    72,    73,   303,    92,   374,   381,
+      74,    75,    76,    77,    78,    79,    80,   290,   383,   380,
+     402,   299,   300,   301,   302,    25,   403,   143,   265,   405,
+     412,    25,    74,    75,    76,    77,    78,    79,    80,   118,
+     119,   120,   428,   337,   435,   288,   239,   240,   241,   242,
+     243,   244,   462,   445,   454,   127,   461,   292,     5,     6,
+     365,   366,     6,   446,   481,   495,   310,    71,    72,    73,
+       8,   441,   258,     8,     9,   237,   130,     9,   340,    71,
+      72,    73,   259,   369,   373,     0,     0,   369,     0,     0,
+     245,     5,     6,   382,     0,     0,    74,    75,    76,    77,
+      78,    79,    80,     8,   119,   120,     0,     9,    74,    75,
+      76,    77,    78,    79,    80,   404,    71,    72,    73,    27,
+     409,     0,     0,   269,     0,     0,    28,     0,   131,     0,
+      29,     0,     0,     0,    30,     0,   270,   271,   272,   273,
+      65,    66,    67,    68,    69,    74,    75,    76,    77,    78,
+      79,    80,     0,     0,     0,   411,     0,     0,     0,   105,
+     413,   274,     0,   275,   276,   277,   278,   418,    71,    72,
+      73,   434,     0,    27,     0,   438,     0,     0,     0,     0,
+      28,     0,     0,    83,    29,     0,     0,   432,    30,   433,
+      90,    91,   453,    93,     0,    95,   437,    74,    75,    76,
+      77,    78,    79,    80,     0,    27,   183,     0,   471,     0,
+     439,   440,    28,     0,   443,   444,    29,   448,     0,   449,
+      30,   451,   452,     0,     0,     0,   455,   456,   490,   457,
+       0,   392,     0,   394,   466,   467,     0,     0,   470,   400,
+       0,     0,     0,   474,   475,   477,     0,     0,   480,     0,
+       0,     0,   484,   486,     0,   488,     0,     0,     0,     0,
+     414,   415,   416,   417,   493,   279,   419,   420,     0,   421,
+       0,   422,   423,   424,   425,   426,   305,   427,   270,   271,
+     272,   273,   429,   430,   431,     0,    27,   220,     0,   270,
+     271,   272,   273,    28,     0,     0,     0,    29,     0,     0,
+       0,    30,     0,   274,     0,   275,   276,   277,   278,   459,
+       0,     0,   464,     0,   274,     0,   275,   276,   277,   278,
+       0,   124,     0,     0,   128,   129,   479,     0,   132,   134,
+     483,   144,     0,   487,     0,     0,     0,   489,   311,     0,
+       0,   491,   492,     0,   312,   494,     0,     0,     0,     0,
+     496,     0,     0,     0,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   341,   334,     0,     0,     0,
+       0,   312,   121,   123,   121,   121,   123,   123,     0,     0,
+     121,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     332,   333,   378,   334,     0,     0,     0,     0,   312,     0,
+      49,    50,    51,    52,    53,    54,    55,    56,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,     0,
+     334,   348,   349,   350,   351,     0,   353,   354,     0,   356,
+       0,   358,   359,   360,   361,   362,     0,   364,     0,   370,
+     371,   372,    62,    63,    64,    65,    66,    67,    68,    69,
+       0,     0,     0,     0,     0,    82,    62,    63,    64,    65,
+      66,    67,    68,    69,     0,     0,     0,     0,     0,   104,
+      74,    75,    76,    77,    78,    79,    80,     0,   119,   120,
+      62,    63,    64,    65,    66,    67,    68,    69,    63,    64,
+      65,    66,    67,    68,    69,    64,    65,    66,    67,    68,
+      69,   226,   227,   228,   229,   230,   231,   239,   240,   241,
+     242,   243,   244
+};
+
+static const short int yycheck[] =
+{
+       3,   143,    24,   218,     1,    49,     4,   265,   294,     4,
+       4,     3,     0,   235,    49,    95,     3,   442,     3,     8,
+       9,     3,     3,     3,   279,   232,    96,    24,     6,     7,
+       8,     9,    10,    11,   249,   257,    80,     4,     4,    28,
+      29,    30,     4,   468,     4,    80,   253,   472,    85,   264,
+     305,     4,   338,     4,    95,    43,    80,    60,    95,    31,
+      49,    50,    51,    52,    53,    54,    55,    56,    71,    72,
+      73,    59,   497,    62,    63,    64,    65,    66,    67,    68,
+      69,    48,    95,    50,    82,    80,     3,    82,    48,   375,
+      50,    89,   307,    81,    82,    93,    84,    80,    93,    97,
+       4,    95,    97,    95,    70,    93,    68,    69,    95,    97,
+      95,     5,    95,    95,    95,    95,    80,    95,    12,    13,
+      14,    15,     3,    41,    42,    82,    43,    44,    45,   126,
+     127,     3,     3,   136,   137,   138,   139,   140,   141,   142,
+      97,     3,   145,   115,    48,   148,    50,    41,    42,    80,
+     147,    79,    46,    47,    82,    72,    73,    74,    75,    76,
+      77,    78,     4,    57,    58,   154,    60,    70,    95,    97,
+      51,    52,    53,    54,    55,    56,     4,   149,   150,    90,
+      91,    92,    71,     4,   156,   157,     3,    81,    82,    61,
+      62,    63,    64,    65,    66,    67,    80,     4,   195,    93,
+     172,   173,   460,    97,    16,    80,    48,   465,    50,   467,
+       3,    80,    79,     3,    95,    82,   205,   475,   190,   191,
+      48,    80,    50,    82,    82,   197,   198,    48,   200,    50,
+      97,   203,   204,     4,    93,    93,   208,   209,    97,    97,
+     498,    48,   214,    50,    85,   217,    95,   219,    95,    80,
+     272,    39,    40,    43,    44,    45,   278,    45,    98,    95,
+      72,    73,    74,    75,    76,    77,    78,   270,    95,    80,
+      95,   274,   275,   276,   277,   272,    95,     3,   250,    95,
+      95,   278,    72,    73,    74,    75,    76,    77,    78,     3,
+      80,    81,    95,   296,    95,   267,    51,    52,    53,    54,
+      55,    56,     4,    95,   446,    87,    95,    80,    81,    82,
+      80,    81,    82,     3,    95,    95,   288,    43,    44,    45,
+      93,   434,   238,    93,    97,   215,     3,    97,   300,    43,
+      44,    45,   245,   330,   334,    -1,    -1,   334,    -1,    -1,
+      95,    81,    82,   346,    -1,    -1,    72,    73,    74,    75,
+      76,    77,    78,    93,    80,    81,    -1,    97,    72,    73,
+      74,    75,    76,    77,    78,   368,    43,    44,    45,    82,
+     373,    -1,    -1,     3,    -1,    -1,    89,    -1,     3,    -1,
+      93,    -1,    -1,    -1,    97,    -1,    16,    17,    18,    19,
+      88,    89,    90,    91,    92,    72,    73,    74,    75,    76,
+      77,    78,    -1,    -1,    -1,   377,    -1,    -1,    -1,   412,
+     382,    41,    -1,    43,    44,    45,    46,   389,    43,    44,
+      45,    80,    -1,    82,    -1,   428,    -1,    -1,    -1,    -1,
+      89,    -1,    -1,    36,    93,    -1,    -1,   409,    97,   411,
+      43,    44,   445,    46,    -1,    48,   418,    72,    73,    74,
+      75,    76,    77,    78,    -1,    82,    83,    -1,   461,    -1,
+     432,   433,    89,    -1,   436,   437,    93,   439,    -1,   441,
+      97,   443,   444,    -1,    -1,    -1,   448,   449,   481,   451,
+      -1,   355,    -1,   357,   456,   457,    -1,    -1,   460,   363,
+      -1,    -1,    -1,   465,   466,   467,    -1,    -1,   470,    -1,
+      -1,    -1,   474,   475,    -1,   477,    -1,    -1,    -1,    -1,
+     384,   385,   386,   387,   486,     3,   390,   391,    -1,   393,
+      -1,   395,   396,   397,   398,   399,     3,   401,    16,    17,
+      18,    19,   406,   407,   408,    -1,    82,    83,    -1,    16,
+      17,    18,    19,    89,    -1,    -1,    -1,    93,    -1,    -1,
+      -1,    97,    -1,    41,    -1,    43,    44,    45,    46,   452,
+      -1,    -1,   455,    -1,    41,    -1,    43,    44,    45,    46,
+      -1,    85,    -1,    -1,    88,    89,   469,    -1,    92,    93,
+     473,    95,    -1,   476,    -1,    -1,    -1,   480,     4,    -1,
+      -1,   484,   485,    -1,    10,   488,    -1,    -1,    -1,    -1,
+     493,    -1,    -1,    -1,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,     4,    42,    -1,    -1,    -1,
+      -1,    10,    84,    85,    86,    87,    88,    89,    -1,    -1,
+      92,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,     4,    42,    -1,    -1,    -1,    -1,    10,    -1,
+      85,    86,    87,    88,    89,    90,    91,    92,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    -1,
+      42,   313,   314,   315,   316,    -1,   318,   319,    -1,   321,
+      -1,   323,   324,   325,   326,   327,    -1,   329,    -1,   331,
+     332,   333,    85,    86,    87,    88,    89,    90,    91,    92,
+      -1,    -1,    -1,    -1,    -1,    98,    85,    86,    87,    88,
+      89,    90,    91,    92,    -1,    -1,    -1,    -1,    -1,    98,
+      72,    73,    74,    75,    76,    77,    78,    -1,    80,    81,
+      85,    86,    87,    88,    89,    90,    91,    92,    86,    87,
+      88,    89,    90,    91,    92,    87,    88,    89,    90,    91,
+      92,     6,     7,     8,     9,    10,    11,    51,    52,    53,
+      54,    55,    56
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,   100,     0,    43,    59,    81,    82,    84,    93,    97,
+     101,   107,   108,   109,   147,   148,   149,   150,   155,   158,
+     159,   164,   167,   168,   173,   188,   189,    82,    89,    93,
+      97,   185,   186,   176,   186,   186,     5,    12,    13,    14,
+      15,    41,    42,    46,    47,    57,    58,    60,   173,    85,
+      86,    87,    88,    89,    90,    91,    92,   186,   186,   186,
+      95,   184,    85,    86,    87,    88,    89,    90,    91,    92,
+       3,    43,    44,    45,    72,    73,    74,    75,    76,    77,
+      78,   179,    98,   176,   178,   177,   178,   178,   177,   177,
+     176,   176,   178,   176,   169,   176,   186,   186,   186,   186,
+     186,   186,   186,   186,    98,   185,   186,   186,   186,   186,
+     186,   186,   186,   186,   165,   185,   185,   185,     3,    80,
+      81,   179,   180,   179,   180,    16,   113,   113,   180,   180,
+       3,     3,   180,     3,   180,     3,    61,    62,    63,    64,
+      65,    66,    67,     3,   180,   166,   184,   102,    96,   188,
+     188,   151,   156,   160,   161,   170,   185,   185,   185,   185,
+     185,   185,   185,   160,     4,   185,     4,    80,   103,   104,
+     188,   185,   184,   184,     4,    48,    50,   152,     4,    48,
+      50,   157,     4,    83,   162,   163,   186,     4,    68,    69,
+     184,   184,     4,    80,    95,    95,   187,   184,   184,    49,
+      80,    80,    49,    80,    80,    95,     3,     3,   184,   184,
+      80,   188,    95,   184,   184,   184,   153,   184,     3,   184,
+      83,   186,    71,    70,   184,   184,     6,     7,     8,     9,
+      10,    11,   105,   106,   110,   111,   184,   153,     3,    51,
+      52,    53,    54,    55,    56,    95,   154,   184,   156,     3,
+     184,     3,    80,    95,   106,   114,   114,   112,   151,   154,
+     183,   184,     4,   156,     3,   184,   171,   172,   106,     3,
+      16,    17,    18,    19,    41,    43,    44,    45,    46,     3,
+     114,     4,     4,   156,   183,     4,    70,     4,   184,   115,
+     185,    80,    80,   173,    79,    82,    97,   181,   182,   185,
+     185,   185,   185,   173,   115,     3,     4,     3,     4,    80,
+     184,     4,    10,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    42,   116,   182,   185,    85,    95,
+     184,     4,   115,   156,    95,    80,   139,   188,   139,   139,
+     139,   139,   122,   139,   139,   125,   139,   129,   139,   139,
+     139,   139,   139,   135,   139,    80,    81,   174,   175,   188,
+     139,   139,   139,   175,    98,    79,   182,    80,     4,     4,
+      80,    95,   185,    95,   117,   118,   119,   121,   138,   185,
+     123,   124,   138,   126,   138,   130,   131,   132,   133,   134,
+     138,   136,    95,    95,   185,    95,   120,   127,   128,   185,
+     182,   184,    95,   184,   138,   138,   138,   138,   184,   138,
+     138,   138,   138,   138,   138,   138,   138,   138,    95,   138,
+     138,   138,   184,   184,    80,    95,   141,   184,   185,   184,
+     184,   141,   142,   184,   184,    95,     3,   140,   184,   184,
+     181,   184,   184,   185,   160,   184,   184,   184,    95,   140,
+     145,    95,     4,    95,   140,   143,   184,   184,   146,   183,
+     184,   185,   144,   183,   184,   184,   183,   184,   181,   140,
+     184,    95,   181,   140,   184,   183,   184,   140,   184,   140,
+     185,   140,   140,   184,   140,    95,   140,   137,   181,   183
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 18:
+#line 184 "rcparse.y"
+    {
+	    define_accelerator ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].pacc));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 19:
+#line 194 "rcparse.y"
+    {
+	    (yyval.pacc) = NULL;
+	  }
+    break;
+
+  case 20:
+#line 198 "rcparse.y"
+    {
+	    struct accelerator *a;
+
+	    a = (struct accelerator *) res_alloc (sizeof *a);
+	    *a = (yyvsp[0].acc);
+	    if ((yyvsp[-1].pacc) == NULL)
+	      (yyval.pacc) = a;
+	    else
+	      {
+		struct accelerator **pp;
+
+		for (pp = &(yyvsp[-1].pacc)->next; *pp != NULL; pp = &(*pp)->next)
+		  ;
+		*pp = a;
+		(yyval.pacc) = (yyvsp[-1].pacc);
+	      }
+	  }
+    break;
+
+  case 21:
+#line 219 "rcparse.y"
+    {
+	    (yyval.acc) = (yyvsp[-1].acc);
+	    (yyval.acc).id = (yyvsp[0].il);
+	  }
+    break;
+
+  case 22:
+#line 224 "rcparse.y"
+    {
+	    (yyval.acc) = (yyvsp[-3].acc);
+	    (yyval.acc).id = (yyvsp[-2].il);
+	    (yyval.acc).flags |= (yyvsp[0].is);
+	    if (((yyval.acc).flags & ACC_VIRTKEY) == 0
+		&& ((yyval.acc).flags & (ACC_SHIFT | ACC_CONTROL)) != 0)
+	      rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
+	  }
+    break;
+
+  case 23:
+#line 236 "rcparse.y"
+    {
+	    const char *s = (yyvsp[0].s);
+	    char ch;
+
+	    (yyval.acc).next = NULL;
+	    (yyval.acc).id = 0;
+	    ch = *s;
+	    if (ch != '^')
+	      (yyval.acc).flags = 0;
+	    else
+	      {
+		(yyval.acc).flags = ACC_CONTROL | ACC_VIRTKEY;
+		++s;
+		ch = *s;
+		ch = TOUPPER (ch);
+	      }
+	    (yyval.acc).key = ch;
+	    if (s[1] != '\0')
+	      rcparse_warning (_("accelerator should only be one character"));
+	  }
+    break;
+
+  case 24:
+#line 257 "rcparse.y"
+    {
+	    (yyval.acc).next = NULL;
+	    (yyval.acc).flags = 0;
+	    (yyval.acc).id = 0;
+	    (yyval.acc).key = (yyvsp[0].il);
+	  }
+    break;
+
+  case 25:
+#line 267 "rcparse.y"
+    {
+	    (yyval.is) = (yyvsp[0].is);
+	  }
+    break;
+
+  case 26:
+#line 271 "rcparse.y"
+    {
+	    (yyval.is) = (yyvsp[-2].is) | (yyvsp[0].is);
+	  }
+    break;
+
+  case 27:
+#line 276 "rcparse.y"
+    {
+	    (yyval.is) = (yyvsp[-1].is) | (yyvsp[0].is);
+	  }
+    break;
+
+  case 28:
+#line 283 "rcparse.y"
+    {
+	    (yyval.is) = ACC_VIRTKEY;
+	  }
+    break;
+
+  case 29:
+#line 287 "rcparse.y"
+    {
+	    /* This is just the absence of VIRTKEY.  */
+	    (yyval.is) = 0;
+	  }
+    break;
+
+  case 30:
+#line 292 "rcparse.y"
+    {
+	    (yyval.is) = ACC_NOINVERT;
+	  }
+    break;
+
+  case 31:
+#line 296 "rcparse.y"
+    {
+	    (yyval.is) = ACC_SHIFT;
+	  }
+    break;
+
+  case 32:
+#line 300 "rcparse.y"
+    {
+	    (yyval.is) = ACC_CONTROL;
+	  }
+    break;
+
+  case 33:
+#line 304 "rcparse.y"
+    {
+	    (yyval.is) = ACC_ALT;
+	  }
+    break;
+
+  case 34:
+#line 313 "rcparse.y"
+    {
+	    define_bitmap ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 35:
+#line 325 "rcparse.y"
+    {
+	    define_cursor ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 36:
+#line 338 "rcparse.y"
+    {
+	      memset (&dialog, 0, sizeof dialog);
+	      dialog.x = (yyvsp[-3].il);
+	      dialog.y = (yyvsp[-2].il);
+	      dialog.width = (yyvsp[-1].il);
+	      dialog.height = (yyvsp[0].il);
+	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+	      dialog.exstyle = (yyvsp[-4].il);
+	      dialog.menu.named = 1;
+	      dialog.class.named = 1;
+	      dialog.font = NULL;
+	      dialog.ex = NULL;
+	      dialog.controls = NULL;
+	      sub_res_info = (yyvsp[-5].res_info);
+	      style = 0;
+	    }
+    break;
+
+  case 37:
+#line 355 "rcparse.y"
+    {
+	    define_dialog ((yyvsp[-12].id), &sub_res_info, &dialog);
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 38:
+#line 363 "rcparse.y"
+    {
+	      memset (&dialog, 0, sizeof dialog);
+	      dialog.x = (yyvsp[-3].il);
+	      dialog.y = (yyvsp[-2].il);
+	      dialog.width = (yyvsp[-1].il);
+	      dialog.height = (yyvsp[0].il);
+	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+	      dialog.exstyle = (yyvsp[-4].il);
+	      dialog.menu.named = 1;
+	      dialog.class.named = 1;
+	      dialog.font = NULL;
+	      dialog.ex = ((struct dialog_ex *)
+			   res_alloc (sizeof (struct dialog_ex)));
+	      memset (dialog.ex, 0, sizeof (struct dialog_ex));
+	      dialog.controls = NULL;
+	      sub_res_info = (yyvsp[-5].res_info);
+	      style = 0;
+	    }
+    break;
+
+  case 39:
+#line 382 "rcparse.y"
+    {
+	    define_dialog ((yyvsp[-12].id), &sub_res_info, &dialog);
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 40:
+#line 390 "rcparse.y"
+    {
+	      memset (&dialog, 0, sizeof dialog);
+	      dialog.x = (yyvsp[-4].il);
+	      dialog.y = (yyvsp[-3].il);
+	      dialog.width = (yyvsp[-2].il);
+	      dialog.height = (yyvsp[-1].il);
+	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+	      dialog.exstyle = (yyvsp[-5].il);
+	      dialog.menu.named = 1;
+	      dialog.class.named = 1;
+	      dialog.font = NULL;
+	      dialog.ex = ((struct dialog_ex *)
+			   res_alloc (sizeof (struct dialog_ex)));
+	      memset (dialog.ex, 0, sizeof (struct dialog_ex));
+	      dialog.ex->help = (yyvsp[0].il);
+	      dialog.controls = NULL;
+	      sub_res_info = (yyvsp[-6].res_info);
+	      style = 0;
+	    }
+    break;
+
+  case 41:
+#line 410 "rcparse.y"
+    {
+	    define_dialog ((yyvsp[-13].id), &sub_res_info, &dialog);
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 42:
+#line 420 "rcparse.y"
+    {
+	    (yyval.il) = 0;
+	  }
+    break;
+
+  case 43:
+#line 424 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].il);
+	  }
+    break;
+
+  case 45:
+#line 432 "rcparse.y"
+    {
+	    dialog.style |= WS_CAPTION;
+	    style |= WS_CAPTION;
+	    unicode_from_ascii ((int *) NULL, &dialog.caption, (yyvsp[0].s));
+	  }
+    break;
+
+  case 46:
+#line 438 "rcparse.y"
+    {
+	    dialog.class = (yyvsp[0].id);
+	  }
+    break;
+
+  case 47:
+#line 443 "rcparse.y"
+    {
+	    dialog.style = style;
+	  }
+    break;
+
+  case 48:
+#line 447 "rcparse.y"
+    {
+	    dialog.exstyle = (yyvsp[0].il);
+	  }
+    break;
+
+  case 49:
+#line 451 "rcparse.y"
+    {
+	    res_string_to_id (& dialog.class, (yyvsp[0].s));
+	  }
+    break;
+
+  case 50:
+#line 455 "rcparse.y"
+    {
+	    dialog.style |= DS_SETFONT;
+	    style |= DS_SETFONT;
+	    dialog.pointsize = (yyvsp[-2].il);
+	    unicode_from_ascii ((int *) NULL, &dialog.font, (yyvsp[0].s));
+	    if (dialog.ex != NULL)
+	      {
+		dialog.ex->weight = 0;
+		dialog.ex->italic = 0;
+		dialog.ex->charset = 1;
+	      }
+	  }
+    break;
+
+  case 51:
+#line 468 "rcparse.y"
+    {
+	    dialog.style |= DS_SETFONT;
+	    style |= DS_SETFONT;
+	    dialog.pointsize = (yyvsp[-3].il);
+	    unicode_from_ascii ((int *) NULL, &dialog.font, (yyvsp[-1].s));
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("extended FONT requires DIALOGEX"));
+	    else
+	      {
+		dialog.ex->weight = (yyvsp[0].il);
+		dialog.ex->italic = 0;
+		dialog.ex->charset = 1;
+	      }
+	  }
+    break;
+
+  case 52:
+#line 483 "rcparse.y"
+    {
+	    dialog.style |= DS_SETFONT;
+	    style |= DS_SETFONT;
+	    dialog.pointsize = (yyvsp[-4].il);
+	    unicode_from_ascii ((int *) NULL, &dialog.font, (yyvsp[-2].s));
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("extended FONT requires DIALOGEX"));
+	    else
+	      {
+		dialog.ex->weight = (yyvsp[-1].il);
+		dialog.ex->italic = (yyvsp[0].il);
+		dialog.ex->charset = 1;
+	      }
+	  }
+    break;
+
+  case 53:
+#line 498 "rcparse.y"
+    {
+	    dialog.style |= DS_SETFONT;
+	    style |= DS_SETFONT;
+	    dialog.pointsize = (yyvsp[-5].il);
+	    unicode_from_ascii ((int *) NULL, &dialog.font, (yyvsp[-3].s));
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("extended FONT requires DIALOGEX"));
+	    else
+	      {
+		dialog.ex->weight = (yyvsp[-2].il);
+		dialog.ex->italic = (yyvsp[-1].il);
+		dialog.ex->charset = (yyvsp[0].il);
+	      }
+	  }
+    break;
+
+  case 54:
+#line 513 "rcparse.y"
+    {
+	    dialog.menu = (yyvsp[0].id);
+	  }
+    break;
+
+  case 55:
+#line 517 "rcparse.y"
+    {
+	    sub_res_info.characteristics = (yyvsp[0].il);
+	  }
+    break;
+
+  case 56:
+#line 521 "rcparse.y"
+    {
+	    sub_res_info.language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT);
+	  }
+    break;
+
+  case 57:
+#line 525 "rcparse.y"
+    {
+	    sub_res_info.version = (yyvsp[0].il);
+	  }
+    break;
+
+  case 59:
+#line 533 "rcparse.y"
+    {
+	    struct dialog_control **pp;
+
+	    for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
+	      ;
+	    *pp = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 60:
+#line 544 "rcparse.y"
+    {
+	      default_style = BS_AUTO3STATE | WS_TABSTOP;
+	      base_style = BS_AUTO3STATE;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 61:
+#line 551 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 62:
+#line 555 "rcparse.y"
+    {
+	      default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
+	      base_style = BS_AUTOCHECKBOX;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 63:
+#line 562 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 64:
+#line 566 "rcparse.y"
+    {
+	      default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
+	      base_style = BS_AUTORADIOBUTTON;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 65:
+#line 573 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 66:
+#line 577 "rcparse.y"
+    {
+	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      class = CTL_EDIT;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 67:
+#line 584 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("BEDIT requires DIALOGEX"));
+	    res_string_to_id (&(yyval.dialog_control)->class, "BEDIT");
+	  }
+    break;
+
+  case 68:
+#line 591 "rcparse.y"
+    {
+	      default_style = BS_CHECKBOX | WS_TABSTOP;
+	      base_style = BS_CHECKBOX | WS_TABSTOP;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 69:
+#line 598 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 70:
+#line 602 "rcparse.y"
+    {
+	      /* This is as per MSDN documentation.  With some (???)
+		 versions of MS rc.exe their is no default style.  */
+	      default_style = CBS_SIMPLE | WS_TABSTOP;
+	      base_style = 0;
+	      class = CTL_COMBOBOX;
+	      res_text_field = res_null_text;	
+	    }
+    break;
+
+  case 71:
+#line 611 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 72:
+#line 616 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control ((yyvsp[-9].id), (yyvsp[-8].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-7].il), style, (yyvsp[-1].il));
+	    if ((yyvsp[0].rcdata_item) != NULL)
+	      {
+		if (dialog.ex == NULL)
+		  rcparse_warning (_("control data requires DIALOGEX"));
+		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	      }
+	  }
+    break;
+
+  case 73:
+#line 627 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control ((yyvsp[-10].id), (yyvsp[-9].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-8].il), style, (yyvsp[-2].il));
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("help ID requires DIALOGEX"));
+	    (yyval.dialog_control)->help = (yyvsp[-1].il);
+	    (yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	  }
+    break;
+
+  case 74:
+#line 636 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control ((yyvsp[-10].id), (yyvsp[-9].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-2].il), 0, style, (yyvsp[-1].il));
+	    if ((yyvsp[0].rcdata_item) != NULL)
+	      {
+		if (dialog.ex == NULL)
+		  rcparse_warning ("control data requires DIALOGEX");
+		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	      }
+	    (yyval.dialog_control)->class.named = 1;
+  	    unicode_from_ascii (&(yyval.dialog_control)->class.u.n.length, &(yyval.dialog_control)->class.u.n.name, (yyvsp[-7].s));
+	  }
+    break;
+
+  case 75:
+#line 649 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control ((yyvsp[-11].id), (yyvsp[-10].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), 0, style, (yyvsp[-2].il));
+	    if (dialog.ex == NULL)
+	      rcparse_warning ("help ID requires DIALOGEX");
+	    (yyval.dialog_control)->help = (yyvsp[-1].il);
+	    (yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	    (yyval.dialog_control)->class.named = 1;
+  	    unicode_from_ascii (&(yyval.dialog_control)->class.u.n.length, &(yyval.dialog_control)->class.u.n.name, (yyvsp[-8].s));
+	  }
+    break;
+
+  case 76:
+#line 659 "rcparse.y"
+    {
+	      default_style = SS_CENTER | WS_GROUP;
+	      base_style = SS_CENTER;
+	      class = CTL_STATIC;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 77:
+#line 666 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 78:
+#line 670 "rcparse.y"
+    {
+	      default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
+	      base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 79:
+#line 677 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 80:
+#line 681 "rcparse.y"
+    {
+	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      class = CTL_EDIT;
+	      res_text_field = res_null_text;	
+	    }
+    break;
+
+  case 81:
+#line 688 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 82:
+#line 692 "rcparse.y"
+    {
+	      default_style = BS_GROUPBOX;
+	      base_style = BS_GROUPBOX;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 83:
+#line 699 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 84:
+#line 703 "rcparse.y"
+    {
+	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      class = CTL_EDIT;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 85:
+#line 710 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("IEDIT requires DIALOGEX"));
+	    res_string_to_id (&(yyval.dialog_control)->class, "HEDIT");
+	  }
+    break;
+
+  case 86:
+#line 717 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_icon_control ((yyvsp[-4].id), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-1].il), 0, 0, 0, (yyvsp[0].rcdata_item),
+				      dialog.ex);
+          }
+    break;
+
+  case 87:
+#line 723 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_icon_control ((yyvsp[-6].id), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), 0, 0, 0, (yyvsp[0].rcdata_item),
+				      dialog.ex);
+          }
+    break;
+
+  case 88:
+#line 729 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_icon_control ((yyvsp[-8].id), (yyvsp[-7].il), (yyvsp[-6].il), (yyvsp[-5].il), style, (yyvsp[-1].il), 0, (yyvsp[0].rcdata_item),
+				      dialog.ex);
+          }
+    break;
+
+  case 89:
+#line 735 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_icon_control ((yyvsp[-9].id), (yyvsp[-8].il), (yyvsp[-7].il), (yyvsp[-6].il), style, (yyvsp[-2].il), (yyvsp[-1].il), (yyvsp[0].rcdata_item),
+				      dialog.ex);
+          }
+    break;
+
+  case 90:
+#line 740 "rcparse.y"
+    {
+	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+	      class = CTL_EDIT;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 91:
+#line 747 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("IEDIT requires DIALOGEX"));
+	    res_string_to_id (&(yyval.dialog_control)->class, "IEDIT");
+	  }
+    break;
+
+  case 92:
+#line 754 "rcparse.y"
+    {
+	      default_style = LBS_NOTIFY | WS_BORDER;
+	      base_style = LBS_NOTIFY | WS_BORDER;
+	      class = CTL_LISTBOX;
+	      res_text_field = res_null_text;	
+	    }
+    break;
+
+  case 93:
+#line 761 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 94:
+#line 765 "rcparse.y"
+    {
+	      default_style = SS_LEFT | WS_GROUP;
+	      base_style = SS_LEFT;
+	      class = CTL_STATIC;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 95:
+#line 772 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 96:
+#line 776 "rcparse.y"
+    {
+	      default_style = BS_PUSHBOX | WS_TABSTOP;
+	      base_style = BS_PUSHBOX;
+	      class = CTL_BUTTON;
+	    }
+    break;
+
+  case 97:
+#line 782 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 98:
+#line 786 "rcparse.y"
+    {
+	      default_style = BS_PUSHBUTTON | WS_TABSTOP;
+	      base_style = BS_PUSHBUTTON | WS_TABSTOP;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 99:
+#line 793 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 100:
+#line 797 "rcparse.y"
+    {
+	      default_style = BS_RADIOBUTTON | WS_TABSTOP;
+	      base_style = BS_RADIOBUTTON;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 101:
+#line 804 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 102:
+#line 808 "rcparse.y"
+    {
+	      default_style = SS_RIGHT | WS_GROUP;
+	      base_style = SS_RIGHT;
+	      class = CTL_STATIC;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 103:
+#line 815 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 104:
+#line 819 "rcparse.y"
+    {
+	      default_style = SBS_HORZ;
+	      base_style = 0;
+	      class = CTL_SCROLLBAR;
+	      res_text_field = res_null_text;	
+	    }
+    break;
+
+  case 105:
+#line 826 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 106:
+#line 830 "rcparse.y"
+    {
+	      default_style = BS_3STATE | WS_TABSTOP;
+	      base_style = BS_3STATE;
+	      class = CTL_BUTTON;
+	      res_text_field = (yyvsp[0].id);	
+	    }
+    break;
+
+  case 107:
+#line 837 "rcparse.y"
+    {
+	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
+	  }
+    break;
+
+  case 108:
+#line 842 "rcparse.y"
+    { style = WS_CHILD | WS_VISIBLE; }
+    break;
+
+  case 109:
+#line 844 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control ((yyvsp[-13].id), (yyvsp[-12].il), (yyvsp[-10].il), (yyvsp[-8].il), (yyvsp[-6].il), (yyvsp[-4].il), CTL_BUTTON,
+				 style, (yyvsp[0].il));
+	  }
+    break;
+
+  case 110:
+#line 859 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-1].il), class,
+				 default_style | WS_CHILD | WS_VISIBLE, 0);
+	    if ((yyvsp[0].rcdata_item) != NULL)
+	      {
+		if (dialog.ex == NULL)
+		  rcparse_warning (_("control data requires DIALOGEX"));
+		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	      }
+	  }
+    break;
+
+  case 111:
+#line 871 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-7].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), class, style, (yyvsp[-1].il));
+	    if ((yyvsp[0].rcdata_item) != NULL)
+	      {
+		if (dialog.ex == NULL)
+		  rcparse_warning (_("control data requires DIALOGEX"));
+		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	      }
+	  }
+    break;
+
+  case 112:
+#line 882 "rcparse.y"
+    {
+	    (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-8].il), (yyvsp[-7].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), class, style, (yyvsp[-2].il));
+	    if (dialog.ex == NULL)
+	      rcparse_warning (_("help ID requires DIALOGEX"));
+	    (yyval.dialog_control)->help = (yyvsp[-1].il);
+	    (yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
+	  }
+    break;
+
+  case 113:
+#line 893 "rcparse.y"
+    {
+	    res_string_to_id (&(yyval.id), "");
+	  }
+    break;
+
+  case 114:
+#line 897 "rcparse.y"
+    {
+	    (yyval.id).named = 0;
+	    (yyval.id).u.id = (yyvsp[-1].il);
+	  }
+    break;
+
+  case 115:
+#line 902 "rcparse.y"
+    {
+	    res_string_to_id (&(yyval.id), (yyvsp[0].s));
+	  }
+    break;
+
+  case 116:
+#line 906 "rcparse.y"
+    {
+	    res_string_to_id (&(yyval.id), (yyvsp[-1].s));
+	  }
+    break;
+
+  case 117:
+#line 913 "rcparse.y"
+    {
+	    (yyval.rcdata_item) = NULL;
+	  }
+    break;
+
+  case 118:
+#line 917 "rcparse.y"
+    {
+	    (yyval.rcdata_item) = (yyvsp[-1].rcdata).first;
+	  }
+    break;
+
+  case 119:
+#line 926 "rcparse.y"
+    { style = WS_CHILD | WS_VISIBLE; }
+    break;
+
+  case 121:
+#line 932 "rcparse.y"
+    { style = SS_ICON | WS_CHILD | WS_VISIBLE; }
+    break;
+
+  case 123:
+#line 938 "rcparse.y"
+    { style = base_style | WS_CHILD | WS_VISIBLE; }
+    break;
+
+  case 125:
+#line 946 "rcparse.y"
+    {
+	    define_font ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 126:
+#line 958 "rcparse.y"
+    {
+	    define_icon ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 127:
+#line 971 "rcparse.y"
+    {
+	    language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT);
+	  }
+    break;
+
+  case 128:
+#line 980 "rcparse.y"
+    {
+	    define_menu ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].menuitem));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 129:
+#line 990 "rcparse.y"
+    {
+	    (yyval.menuitem) = NULL;
+	  }
+    break;
+
+  case 130:
+#line 994 "rcparse.y"
+    {
+	    if ((yyvsp[-1].menuitem) == NULL)
+	      (yyval.menuitem) = (yyvsp[0].menuitem);
+	    else
+	      {
+		struct menuitem **pp;
+
+		for (pp = &(yyvsp[-1].menuitem)->next; *pp != NULL; pp = &(*pp)->next)
+		  ;
+		*pp = (yyvsp[0].menuitem);
+		(yyval.menuitem) = (yyvsp[-1].menuitem);
+	      }
+	  }
+    break;
+
+  case 131:
+#line 1011 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-2].s), (yyvsp[-1].il), (yyvsp[0].is), 0, 0, NULL);
+	  }
+    break;
+
+  case 132:
+#line 1015 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL);
+	  }
+    break;
+
+  case 133:
+#line 1019 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-4].s), 0, (yyvsp[-3].is), 0, 0, (yyvsp[-1].menuitem));
+	  }
+    break;
+
+  case 134:
+#line 1026 "rcparse.y"
+    {
+	    (yyval.is) = 0;
+	  }
+    break;
+
+  case 135:
+#line 1030 "rcparse.y"
+    {
+	    (yyval.is) = (yyvsp[-2].is) | (yyvsp[0].is);
+	  }
+    break;
+
+  case 136:
+#line 1034 "rcparse.y"
+    {
+	    (yyval.is) = (yyvsp[-1].is) | (yyvsp[0].is);
+	  }
+    break;
+
+  case 137:
+#line 1041 "rcparse.y"
+    {
+	    (yyval.is) = MENUITEM_CHECKED;
+	  }
+    break;
+
+  case 138:
+#line 1045 "rcparse.y"
+    {
+	    (yyval.is) = MENUITEM_GRAYED;
+	  }
+    break;
+
+  case 139:
+#line 1049 "rcparse.y"
+    {
+	    (yyval.is) = MENUITEM_HELP;
+	  }
+    break;
+
+  case 140:
+#line 1053 "rcparse.y"
+    {
+	    (yyval.is) = MENUITEM_INACTIVE;
+	  }
+    break;
+
+  case 141:
+#line 1057 "rcparse.y"
+    {
+	    (yyval.is) = MENUITEM_MENUBARBREAK;
+	  }
+    break;
+
+  case 142:
+#line 1061 "rcparse.y"
+    {
+	    (yyval.is) = MENUITEM_MENUBREAK;
+	  }
+    break;
+
+  case 143:
+#line 1070 "rcparse.y"
+    {
+	    define_menu ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].menuitem));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 144:
+#line 1080 "rcparse.y"
+    {
+	    (yyval.menuitem) = NULL;
+	  }
+    break;
+
+  case 145:
+#line 1084 "rcparse.y"
+    {
+	    if ((yyvsp[-1].menuitem) == NULL)
+	      (yyval.menuitem) = (yyvsp[0].menuitem);
+	    else
+	      {
+		struct menuitem **pp;
+
+		for (pp = &(yyvsp[-1].menuitem)->next; *pp != NULL; pp = &(*pp)->next)
+		  ;
+		*pp = (yyvsp[0].menuitem);
+		(yyval.menuitem) = (yyvsp[-1].menuitem);
+	      }
+	  }
+    break;
+
+  case 146:
+#line 1101 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[0].s), 0, 0, 0, 0, NULL);
+	  }
+    break;
+
+  case 147:
+#line 1105 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-1].s), (yyvsp[0].il), 0, 0, 0, NULL);
+	  }
+    break;
+
+  case 148:
+#line 1109 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-3].s), (yyvsp[-2].il), (yyvsp[-1].il), (yyvsp[0].il), 0, NULL);
+	  }
+    break;
+
+  case 149:
+#line 1113 "rcparse.y"
+    {
+ 	    (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL);
+ 	  }
+    break;
+
+  case 150:
+#line 1117 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-3].s), 0, 0, 0, 0, (yyvsp[-1].menuitem));
+	  }
+    break;
+
+  case 151:
+#line 1121 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-4].s), (yyvsp[-3].il), 0, 0, 0, (yyvsp[-1].menuitem));
+	  }
+    break;
+
+  case 152:
+#line 1125 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-5].s), (yyvsp[-4].il), (yyvsp[-3].il), 0, 0, (yyvsp[-1].menuitem));
+	  }
+    break;
+
+  case 153:
+#line 1130 "rcparse.y"
+    {
+	    (yyval.menuitem) = define_menuitem ((yyvsp[-7].s), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-1].menuitem));
+	  }
+    break;
+
+  case 154:
+#line 1139 "rcparse.y"
+    {
+	    define_messagetable ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 155:
+#line 1151 "rcparse.y"
+    {
+	    define_rcdata ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].rcdata).first);
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 156:
+#line 1158 "rcparse.y"
+    {
+	    define_rcdata_file ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 157:
+#line 1170 "rcparse.y"
+    {
+	    rcparse_rcdata ();
+	  }
+    break;
+
+  case 158:
+#line 1174 "rcparse.y"
+    {
+	    rcparse_normal ();
+	    (yyval.rcdata) = (yyvsp[0].rcdata);
+	  }
+    break;
+
+  case 159:
+#line 1182 "rcparse.y"
+    {
+	    (yyval.rcdata).first = NULL;
+	    (yyval.rcdata).last = NULL;
+	  }
+    break;
+
+  case 160:
+#line 1187 "rcparse.y"
+    {
+	    (yyval.rcdata) = (yyvsp[0].rcdata);
+	  }
+    break;
+
+  case 161:
+#line 1194 "rcparse.y"
+    {
+	    struct rcdata_item *ri;
+
+	    ri = define_rcdata_string ((yyvsp[0].ss).s, (yyvsp[0].ss).length);
+	    (yyval.rcdata).first = ri;
+	    (yyval.rcdata).last = ri;
+	  }
+    break;
+
+  case 162:
+#line 1202 "rcparse.y"
+    {
+	    struct rcdata_item *ri;
+
+	    ri = define_rcdata_number ((yyvsp[0].i).val, (yyvsp[0].i).dword);
+	    (yyval.rcdata).first = ri;
+	    (yyval.rcdata).last = ri;
+	  }
+    break;
+
+  case 163:
+#line 1210 "rcparse.y"
+    {
+	    struct rcdata_item *ri;
+
+	    ri = define_rcdata_string ((yyvsp[0].ss).s, (yyvsp[0].ss).length);
+	    (yyval.rcdata).first = (yyvsp[-2].rcdata).first;
+	    (yyvsp[-2].rcdata).last->next = ri;
+	    (yyval.rcdata).last = ri;
+	  }
+    break;
+
+  case 164:
+#line 1219 "rcparse.y"
+    {
+	    struct rcdata_item *ri;
+
+	    ri = define_rcdata_number ((yyvsp[0].i).val, (yyvsp[0].i).dword);
+	    (yyval.rcdata).first = (yyvsp[-2].rcdata).first;
+	    (yyvsp[-2].rcdata).last->next = ri;
+	    (yyval.rcdata).last = ri;
+	  }
+    break;
+
+  case 165:
+#line 1233 "rcparse.y"
+    { sub_res_info = (yyvsp[-1].res_info); }
+    break;
+
+  case 168:
+#line 1240 "rcparse.y"
+    {
+	    define_stringtable (&sub_res_info, (yyvsp[-1].il), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 169:
+#line 1247 "rcparse.y"
+    {
+	    define_stringtable (&sub_res_info, (yyvsp[-2].il), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 170:
+#line 1260 "rcparse.y"
+    {
+	    define_user_data ((yyvsp[-5].id), (yyvsp[-4].id), &(yyvsp[-3].res_info), (yyvsp[-1].rcdata).first);
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 171:
+#line 1267 "rcparse.y"
+    {
+	    define_user_file ((yyvsp[-3].id), (yyvsp[-2].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 172:
+#line 1279 "rcparse.y"
+    {
+	    define_versioninfo ((yyvsp[-5].id), language, (yyvsp[-3].fixver), (yyvsp[-1].verinfo));
+	    if (yychar != YYEMPTY)
+	      YYERROR;
+	    rcparse_discard_strings ();
+	  }
+    break;
+
+  case 173:
+#line 1289 "rcparse.y"
+    {
+	    (yyval.fixver) = ((struct fixed_versioninfo *)
+		  res_alloc (sizeof (struct fixed_versioninfo)));
+	    memset ((yyval.fixver), 0, sizeof (struct fixed_versioninfo));
+	  }
+    break;
+
+  case 174:
+#line 1295 "rcparse.y"
+    {
+	    (yyvsp[-5].fixver)->file_version_ms = ((yyvsp[-3].il) << 16) | (yyvsp[-2].il);
+	    (yyvsp[-5].fixver)->file_version_ls = ((yyvsp[-1].il) << 16) | (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-5].fixver);
+	  }
+    break;
+
+  case 175:
+#line 1301 "rcparse.y"
+    {
+	    (yyvsp[-5].fixver)->product_version_ms = ((yyvsp[-3].il) << 16) | (yyvsp[-2].il);
+	    (yyvsp[-5].fixver)->product_version_ls = ((yyvsp[-1].il) << 16) | (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-5].fixver);
+	  }
+    break;
+
+  case 176:
+#line 1307 "rcparse.y"
+    {
+	    (yyvsp[-2].fixver)->file_flags_mask = (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-2].fixver);
+	  }
+    break;
+
+  case 177:
+#line 1312 "rcparse.y"
+    {
+	    (yyvsp[-2].fixver)->file_flags = (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-2].fixver);
+	  }
+    break;
+
+  case 178:
+#line 1317 "rcparse.y"
+    {
+	    (yyvsp[-2].fixver)->file_os = (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-2].fixver);
+	  }
+    break;
+
+  case 179:
+#line 1322 "rcparse.y"
+    {
+	    (yyvsp[-2].fixver)->file_type = (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-2].fixver);
+	  }
+    break;
+
+  case 180:
+#line 1327 "rcparse.y"
+    {
+	    (yyvsp[-2].fixver)->file_subtype = (yyvsp[0].il);
+	    (yyval.fixver) = (yyvsp[-2].fixver);
+	  }
+    break;
+
+  case 181:
+#line 1341 "rcparse.y"
+    {
+	    (yyval.verinfo) = NULL;
+	  }
+    break;
+
+  case 182:
+#line 1345 "rcparse.y"
+    {
+	    (yyval.verinfo) = append_ver_stringfileinfo ((yyvsp[-7].verinfo), (yyvsp[-4].s), (yyvsp[-2].verstring));
+	  }
+    break;
+
+  case 183:
+#line 1349 "rcparse.y"
+    {
+	    (yyval.verinfo) = append_ver_varfileinfo ((yyvsp[-6].verinfo), (yyvsp[-2].s), (yyvsp[-1].vervar));
+	  }
+    break;
+
+  case 184:
+#line 1356 "rcparse.y"
+    {
+	    (yyval.verstring) = NULL;
+	  }
+    break;
+
+  case 185:
+#line 1360 "rcparse.y"
+    {
+	    (yyval.verstring) = append_verval ((yyvsp[-4].verstring), (yyvsp[-2].s), (yyvsp[0].s));
+	  }
+    break;
+
+  case 186:
+#line 1367 "rcparse.y"
+    {
+	    (yyval.vervar) = NULL;
+	  }
+    break;
+
+  case 187:
+#line 1371 "rcparse.y"
+    {
+	    (yyval.vervar) = append_vertrans ((yyvsp[-2].vervar), (yyvsp[-1].il), (yyvsp[0].il));
+	  }
+    break;
+
+  case 188:
+#line 1380 "rcparse.y"
+    {
+	    (yyval.id).named = 0;
+	    (yyval.id).u.id = (yyvsp[0].il);
+	  }
+    break;
+
+  case 189:
+#line 1385 "rcparse.y"
+    {
+	    char *copy, *s;
+
+	    /* It seems that resource ID's are forced to upper case.  */
+	    copy = xstrdup ((yyvsp[0].s));
+	    for (s = copy; *s != '\0'; s++)
+	      *s = TOUPPER (*s);
+	    res_string_to_id (&(yyval.id), copy);
+	    free (copy);
+	  }
+    break;
+
+  case 190:
+#line 1401 "rcparse.y"
+    {
+	    (yyval.s) = (yyvsp[0].s);
+	  }
+    break;
+
+  case 191:
+#line 1405 "rcparse.y"
+    {
+	    (yyval.s) = (yyvsp[-1].s);
+	  }
+    break;
+
+  case 192:
+#line 1409 "rcparse.y"
+    {
+	    (yyval.s) = (yyvsp[-1].s);
+	  }
+    break;
+
+  case 193:
+#line 1417 "rcparse.y"
+    {
+	    (yyval.id).named = 0;
+	    (yyval.id).u.id = (yyvsp[-1].il);
+	  }
+    break;
+
+  case 194:
+#line 1422 "rcparse.y"
+    {
+	    char *copy, *s;
+
+	    /* It seems that resource ID's are forced to upper case.  */
+	    copy = xstrdup ((yyvsp[0].s));
+	    for (s = copy; *s != '\0'; s++)
+	      *s = TOUPPER (*s);
+	    res_string_to_id (&(yyval.id), copy);
+	    free (copy);
+	  }
+    break;
+
+  case 195:
+#line 1439 "rcparse.y"
+    {
+	    memset (&(yyval.res_info), 0, sizeof (struct res_res_info));
+	    (yyval.res_info).language = language;
+	    /* FIXME: Is this the right default?  */
+	    (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
+	  }
+    break;
+
+  case 196:
+#line 1446 "rcparse.y"
+    {
+	    (yyval.res_info) = (yyvsp[-1].res_info);
+	    (yyval.res_info).memflags |= (yyvsp[0].memflags).on;
+	    (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off;
+	  }
+    break;
+
+  case 197:
+#line 1452 "rcparse.y"
+    {
+	    (yyval.res_info) = (yyvsp[-2].res_info);
+	    (yyval.res_info).characteristics = (yyvsp[0].il);
+	  }
+    break;
+
+  case 198:
+#line 1457 "rcparse.y"
+    {
+	    (yyval.res_info) = (yyvsp[-3].res_info);
+	    (yyval.res_info).language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT);
+	  }
+    break;
+
+  case 199:
+#line 1462 "rcparse.y"
+    {
+	    (yyval.res_info) = (yyvsp[-2].res_info);
+	    (yyval.res_info).version = (yyvsp[0].il);
+	  }
+    break;
+
+  case 200:
+#line 1472 "rcparse.y"
+    {
+	    memset (&(yyval.res_info), 0, sizeof (struct res_res_info));
+	    (yyval.res_info).language = language;
+	    (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
+	  }
+    break;
+
+  case 201:
+#line 1478 "rcparse.y"
+    {
+	    (yyval.res_info) = (yyvsp[-1].res_info);
+	    (yyval.res_info).memflags |= (yyvsp[0].memflags).on;
+	    (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off;
+	  }
+    break;
+
+  case 202:
+#line 1489 "rcparse.y"
+    {
+	    memset (&(yyval.res_info), 0, sizeof (struct res_res_info));
+	    (yyval.res_info).language = language;
+	    (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
+	  }
+    break;
+
+  case 203:
+#line 1495 "rcparse.y"
+    {
+	    (yyval.res_info) = (yyvsp[-1].res_info);
+	    (yyval.res_info).memflags |= (yyvsp[0].memflags).on;
+	    (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off;
+	  }
+    break;
+
+  case 204:
+#line 1507 "rcparse.y"
+    {
+	    (yyval.memflags).on = MEMFLAG_MOVEABLE;
+	    (yyval.memflags).off = 0;
+	  }
+    break;
+
+  case 205:
+#line 1512 "rcparse.y"
+    {
+	    (yyval.memflags).on = 0;
+	    (yyval.memflags).off = MEMFLAG_MOVEABLE;
+	  }
+    break;
+
+  case 206:
+#line 1517 "rcparse.y"
+    {
+	    (yyval.memflags).on = MEMFLAG_PURE;
+	    (yyval.memflags).off = 0;
+	  }
+    break;
+
+  case 207:
+#line 1522 "rcparse.y"
+    {
+	    (yyval.memflags).on = 0;
+	    (yyval.memflags).off = MEMFLAG_PURE;
+	  }
+    break;
+
+  case 208:
+#line 1527 "rcparse.y"
+    {
+	    (yyval.memflags).on = MEMFLAG_PRELOAD;
+	    (yyval.memflags).off = 0;
+	  }
+    break;
+
+  case 209:
+#line 1532 "rcparse.y"
+    {
+	    (yyval.memflags).on = 0;
+	    (yyval.memflags).off = MEMFLAG_PRELOAD;
+	  }
+    break;
+
+  case 210:
+#line 1537 "rcparse.y"
+    {
+	    (yyval.memflags).on = MEMFLAG_DISCARDABLE;
+	    (yyval.memflags).off = 0;
+	  }
+    break;
+
+  case 211:
+#line 1547 "rcparse.y"
+    {
+	    (yyval.s) = (yyvsp[0].s);
+	  }
+    break;
+
+  case 212:
+#line 1551 "rcparse.y"
+    {
+	    (yyval.s) = (yyvsp[0].s);
+	  }
+    break;
+
+  case 213:
+#line 1568 "rcparse.y"
+    {
+	    style |= (yyvsp[0].il);
+	  }
+    break;
+
+  case 214:
+#line 1572 "rcparse.y"
+    {
+	    style &=~ (yyvsp[0].il);
+	  }
+    break;
+
+  case 215:
+#line 1576 "rcparse.y"
+    {
+	    style |= (yyvsp[0].il);
+	  }
+    break;
+
+  case 216:
+#line 1580 "rcparse.y"
+    {
+	    style &=~ (yyvsp[0].il);
+	  }
+    break;
+
+  case 217:
+#line 1587 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].i).val;
+	  }
+    break;
+
+  case 218:
+#line 1591 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[-1].il);
+	  }
+    break;
+
+  case 219:
+#line 1600 "rcparse.y"
+    {
+	    (yyval.il) = 0;
+	  }
+    break;
+
+  case 220:
+#line 1604 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].il);
+	  }
+    break;
+
+  case 221:
+#line 1613 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].il);
+	  }
+    break;
+
+  case 222:
+#line 1622 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].i).val;
+	  }
+    break;
+
+  case 223:
+#line 1631 "rcparse.y"
+    {
+	    (yyval.i) = (yyvsp[0].i);
+	  }
+    break;
+
+  case 224:
+#line 1635 "rcparse.y"
+    {
+	    (yyval.i) = (yyvsp[-1].i);
+	  }
+    break;
+
+  case 225:
+#line 1639 "rcparse.y"
+    {
+	    (yyval.i).val = ~ (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 226:
+#line 1644 "rcparse.y"
+    {
+	    (yyval.i).val = - (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 227:
+#line 1649 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val * (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 228:
+#line 1654 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val / (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 229:
+#line 1659 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val % (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 230:
+#line 1664 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val + (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 231:
+#line 1669 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val - (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 232:
+#line 1674 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val & (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 233:
+#line 1679 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val ^ (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 234:
+#line 1684 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val | (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 235:
+#line 1695 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].il);
+	  }
+    break;
+
+  case 236:
+#line 1704 "rcparse.y"
+    {
+	    (yyval.il) = (yyvsp[0].i).val;
+	  }
+    break;
+
+  case 237:
+#line 1715 "rcparse.y"
+    {
+	    (yyval.i) = (yyvsp[0].i);
+	  }
+    break;
+
+  case 238:
+#line 1719 "rcparse.y"
+    {
+	    (yyval.i) = (yyvsp[-1].i);
+	  }
+    break;
+
+  case 239:
+#line 1723 "rcparse.y"
+    {
+	    (yyval.i).val = ~ (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 240:
+#line 1728 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val * (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 241:
+#line 1733 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val / (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 242:
+#line 1738 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val % (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 243:
+#line 1743 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val + (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 244:
+#line 1748 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val - (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 245:
+#line 1753 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val & (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 246:
+#line 1758 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val ^ (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+  case 247:
+#line 1763 "rcparse.y"
+    {
+	    (yyval.i).val = (yyvsp[-2].i).val | (yyvsp[0].i).val;
+	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
+	  }
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 3867 "rcparse.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 1769 "rcparse.y"
+
+
+/* Set the language from the command line.  */
+
+void
+rcparse_set_language (int lang)
+{
+  language = lang;
+}
+

Added: branches/binutils/package/binutils/rcparse.h
===================================================================
--- branches/binutils/package/binutils/rcparse.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/rcparse.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,255 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     BEG = 258,
+     END = 259,
+     ACCELERATORS = 260,
+     VIRTKEY = 261,
+     ASCII = 262,
+     NOINVERT = 263,
+     SHIFT = 264,
+     CONTROL = 265,
+     ALT = 266,
+     BITMAP = 267,
+     CURSOR = 268,
+     DIALOG = 269,
+     DIALOGEX = 270,
+     EXSTYLE = 271,
+     CAPTION = 272,
+     CLASS = 273,
+     STYLE = 274,
+     AUTO3STATE = 275,
+     AUTOCHECKBOX = 276,
+     AUTORADIOBUTTON = 277,
+     CHECKBOX = 278,
+     COMBOBOX = 279,
+     CTEXT = 280,
+     DEFPUSHBUTTON = 281,
+     EDITTEXT = 282,
+     GROUPBOX = 283,
+     LISTBOX = 284,
+     LTEXT = 285,
+     PUSHBOX = 286,
+     PUSHBUTTON = 287,
+     RADIOBUTTON = 288,
+     RTEXT = 289,
+     SCROLLBAR = 290,
+     STATE3 = 291,
+     USERBUTTON = 292,
+     BEDIT = 293,
+     HEDIT = 294,
+     IEDIT = 295,
+     FONT = 296,
+     ICON = 297,
+     LANGUAGE = 298,
+     CHARACTERISTICS = 299,
+     VERSIONK = 300,
+     MENU = 301,
+     MENUEX = 302,
+     MENUITEM = 303,
+     SEPARATOR = 304,
+     POPUP = 305,
+     CHECKED = 306,
+     GRAYED = 307,
+     HELP = 308,
+     INACTIVE = 309,
+     MENUBARBREAK = 310,
+     MENUBREAK = 311,
+     MESSAGETABLE = 312,
+     RCDATA = 313,
+     STRINGTABLE = 314,
+     VERSIONINFO = 315,
+     FILEVERSION = 316,
+     PRODUCTVERSION = 317,
+     FILEFLAGSMASK = 318,
+     FILEFLAGS = 319,
+     FILEOS = 320,
+     FILETYPE = 321,
+     FILESUBTYPE = 322,
+     BLOCKSTRINGFILEINFO = 323,
+     BLOCKVARFILEINFO = 324,
+     VALUE = 325,
+     BLOCK = 326,
+     MOVEABLE = 327,
+     FIXED = 328,
+     PURE = 329,
+     IMPURE = 330,
+     PRELOAD = 331,
+     LOADONCALL = 332,
+     DISCARDABLE = 333,
+     NOT = 334,
+     QUOTEDSTRING = 335,
+     STRING = 336,
+     NUMBER = 337,
+     SIZEDSTRING = 338,
+     IGNORED_TOKEN = 339,
+     NEG = 340
+   };
+#endif
+/* Tokens.  */
+#define BEG 258
+#define END 259
+#define ACCELERATORS 260
+#define VIRTKEY 261
+#define ASCII 262
+#define NOINVERT 263
+#define SHIFT 264
+#define CONTROL 265
+#define ALT 266
+#define BITMAP 267
+#define CURSOR 268
+#define DIALOG 269
+#define DIALOGEX 270
+#define EXSTYLE 271
+#define CAPTION 272
+#define CLASS 273
+#define STYLE 274
+#define AUTO3STATE 275
+#define AUTOCHECKBOX 276
+#define AUTORADIOBUTTON 277
+#define CHECKBOX 278
+#define COMBOBOX 279
+#define CTEXT 280
+#define DEFPUSHBUTTON 281
+#define EDITTEXT 282
+#define GROUPBOX 283
+#define LISTBOX 284
+#define LTEXT 285
+#define PUSHBOX 286
+#define PUSHBUTTON 287
+#define RADIOBUTTON 288
+#define RTEXT 289
+#define SCROLLBAR 290
+#define STATE3 291
+#define USERBUTTON 292
+#define BEDIT 293
+#define HEDIT 294
+#define IEDIT 295
+#define FONT 296
+#define ICON 297
+#define LANGUAGE 298
+#define CHARACTERISTICS 299
+#define VERSIONK 300
+#define MENU 301
+#define MENUEX 302
+#define MENUITEM 303
+#define SEPARATOR 304
+#define POPUP 305
+#define CHECKED 306
+#define GRAYED 307
+#define HELP 308
+#define INACTIVE 309
+#define MENUBARBREAK 310
+#define MENUBREAK 311
+#define MESSAGETABLE 312
+#define RCDATA 313
+#define STRINGTABLE 314
+#define VERSIONINFO 315
+#define FILEVERSION 316
+#define PRODUCTVERSION 317
+#define FILEFLAGSMASK 318
+#define FILEFLAGS 319
+#define FILEOS 320
+#define FILETYPE 321
+#define FILESUBTYPE 322
+#define BLOCKSTRINGFILEINFO 323
+#define BLOCKVARFILEINFO 324
+#define VALUE 325
+#define BLOCK 326
+#define MOVEABLE 327
+#define FIXED 328
+#define PURE 329
+#define IMPURE 330
+#define PRELOAD 331
+#define LOADONCALL 332
+#define DISCARDABLE 333
+#define NOT 334
+#define QUOTEDSTRING 335
+#define STRING 336
+#define NUMBER 337
+#define SIZEDSTRING 338
+#define IGNORED_TOKEN 339
+#define NEG 340
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 66 "rcparse.y"
+typedef union YYSTYPE {
+  struct accelerator acc;
+  struct accelerator *pacc;
+  struct dialog_control *dialog_control;
+  struct menuitem *menuitem;
+  struct
+  {
+    struct rcdata_item *first;
+    struct rcdata_item *last;
+  } rcdata;
+  struct rcdata_item *rcdata_item;
+  struct stringtable_data *stringtable;
+  struct fixed_versioninfo *fixver;
+  struct ver_info *verinfo;
+  struct ver_stringinfo *verstring;
+  struct ver_varinfo *vervar;
+  struct res_id id;
+  struct res_res_info res_info;
+  struct
+  {
+    unsigned short on;
+    unsigned short off;
+  } memflags;
+  struct
+  {
+    unsigned long val;
+    /* Nonzero if this number was explicitly specified as long.  */
+    int dword;
+  } i;
+  unsigned long il;
+  unsigned short is;
+  const char *s;
+  struct
+  {
+    unsigned long length;
+    const char *s;
+  } ss;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 247 "rcparse.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Added: branches/binutils/package/binutils/sysinfo.c
===================================================================
--- branches/binutils/package/binutils/sysinfo.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/sysinfo.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1804 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     COND = 258,
+     REPEAT = 259,
+     TYPE = 260,
+     NAME = 261,
+     NUMBER = 262,
+     UNIT = 263
+   };
+#endif
+/* Tokens.  */
+#define COND 258
+#define REPEAT 259
+#define TYPE 260
+#define NAME 261
+#define NUMBER 262
+#define UNIT 263
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 20 "sysinfo.y"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static char writecode;
+static char *it;
+static int code;
+static char * repeat;
+static char *oldrepeat;
+static char *name;
+static int rdepth;
+static char *names[] = {" ","[n]","[n][m]"};
+static char *pnames[]= {"","*","**"};
+
+static int yyerror (char *s);
+extern int yylex (void);
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 39 "sysinfo.y"
+typedef union YYSTYPE {
+ int i;
+ char *s;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 124 "sysinfo.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 136 "sysinfo.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  3
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   38
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  11
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  19
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  27
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  55
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   263
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       5,     6,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       7,     8,     9,    10
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned char yyprhs[] =
+{
+       0,     0,     3,     4,     7,    10,    11,    12,    19,    22,
+      25,    28,    29,    30,    37,    38,    45,    46,    57,    59,
+      60,    64,    67,    71,    72,    73,    77,    78
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      12,     0,    -1,    -1,    13,    14,    -1,    15,    14,    -1,
+      -1,    -1,     5,     8,     9,    16,    17,     6,    -1,    22,
+      17,    -1,    20,    17,    -1,    18,    17,    -1,    -1,    -1,
+       5,     4,     8,    19,    17,     6,    -1,    -1,     5,     3,
+       8,    21,    17,     6,    -1,    -1,     5,    25,     5,    24,
+      26,     6,    27,    23,    28,     6,    -1,     7,    -1,    -1,
+       5,     8,     6,    -1,     9,    10,    -1,     5,     8,     6,
+      -1,    -1,    -1,     5,    29,     6,    -1,    -1,    29,     5,
+       8,     8,     6,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,    53,    53,    53,    91,    92,    97,    96,   174,   175,
+     176,   177,   181,   180,   228,   227,   255,   254,   362,   363,
+     367,   372,   378,   379,   382,   383,   385,   387
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "COND", "REPEAT", "'('", "')'", "TYPE",
+  "NAME", "NUMBER", "UNIT", "$accept", "top", "@1", "it_list", "it", "@2",
+  "it_field_list", "repeat_it_field", "@3", "cond_it_field", "@4",
+  "it_field", "@5", "attr_type", "attr_desc", "attr_size", "attr_id",
+  "enums", "enum_list", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,    40,    41,   260,   261,   262,
+     263
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    11,    13,    12,    14,    14,    16,    15,    17,    17,
+      17,    17,    19,    18,    21,    20,    23,    22,    24,    24,
+      25,    26,    27,    27,    28,    28,    29,    29
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     0,     2,     2,     0,     0,     6,     2,     2,
+       2,     0,     0,     6,     0,     6,     0,    10,     1,     0,
+       3,     2,     3,     0,     0,     3,     0,     5
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       2,     0,     5,     1,     0,     3,     5,     0,     4,     6,
+      11,     0,     0,    11,    11,    11,     0,     0,     0,     0,
+       7,    10,     9,     8,    14,    12,     0,    19,    11,    11,
+      20,    18,     0,     0,     0,     0,     0,    15,    13,    21,
+      23,     0,    16,     0,    24,    22,    26,     0,     0,    17,
+       0,    25,     0,     0,    27
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,     1,     2,     5,     6,    10,    12,    13,    29,    14,
+      28,    15,    44,    32,    19,    36,    42,    47,    48
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -14
+static const yysigned_char yypact[] =
+{
+     -14,     8,     4,   -14,     2,   -14,     4,     3,   -14,   -14,
+       6,     0,     7,     6,     6,     6,     9,    10,    11,    15,
+     -14,   -14,   -14,   -14,   -14,   -14,    16,    14,     6,     6,
+     -14,   -14,     5,    17,    18,    19,    20,   -14,   -14,   -14,
+      22,    23,   -14,    24,    27,   -14,   -14,    28,     1,   -14,
+      25,   -14,    29,    30,   -14
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yysigned_char yypgoto[] =
+{
+     -14,   -14,   -14,    32,   -14,   -14,   -13,   -14,   -14,   -14,
+     -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -1
+static const unsigned char yytable[] =
+{
+      21,    22,    23,    16,    17,    18,    50,    51,     3,     4,
+       7,    11,     9,    20,    35,    33,    34,    24,    25,    26,
+      27,    31,    30,    37,    38,     0,    40,    41,     0,    39,
+      45,    43,    46,    52,    49,     0,    54,    53,     8
+};
+
+static const yysigned_char yycheck[] =
+{
+      13,    14,    15,     3,     4,     5,     5,     6,     0,     5,
+       8,     5,     9,     6,     9,    28,    29,     8,     8,     8,
+       5,     7,     6,     6,     6,    -1,     6,     5,    -1,    10,
+       6,     8,     5,     8,     6,    -1,     6,     8,     6
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,    12,    13,     0,     5,    14,    15,     8,    14,     9,
+      16,     5,    17,    18,    20,    22,     3,     4,     5,    25,
+       6,    17,    17,    17,     8,     8,     8,     5,    21,    19,
+       6,     7,    24,    17,    17,     9,    26,     6,     6,    10,
+       6,     5,    27,     8,    23,     6,     5,    28,    29,     6,
+       5,     6,     8,     8,     6
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 2:
+#line 53 "sysinfo.y"
+    {
+  switch (writecode)
+    {
+    case 'i':
+      printf("#ifdef SYSROFF_SWAP_IN\n");
+      break; 
+    case 'p':
+      printf("#ifdef SYSROFF_p\n");
+      break; 
+    case 'd':
+      break;
+    case 'g':
+      printf("#ifdef SYSROFF_SWAP_OUT\n");
+      break;
+    case 'c':
+      printf("#ifdef SYSROFF_PRINT\n");
+      printf("#include <stdio.h>\n");
+      printf("#include <stdlib.h>\n");
+      printf("#include <ansidecl.h>\n");
+      break;
+    }
+ }
+    break;
+
+  case 3:
+#line 75 "sysinfo.y"
+    {
+  switch (writecode) {
+  case 'i':
+  case 'p':
+  case 'g':
+  case 'c':
+    printf("#endif\n");
+    break; 
+  case 'd':
+    break;
+  }
+}
+    break;
+
+  case 6:
+#line 97 "sysinfo.y"
+    {
+	it = (yyvsp[-1].s); code = (yyvsp[0].i);
+	switch (writecode) 
+	  {
+	  case 'd':
+	    printf("\n\n\n#define IT_%s_CODE 0x%x\n", it,code);
+	    printf("struct IT_%s;\n", it);
+	    printf("extern void sysroff_swap_%s_in PARAMS ((struct IT_%s *));\n",
+		   (yyvsp[-1].s), it);
+	    printf("extern void sysroff_swap_%s_out PARAMS ((FILE *, struct IT_%s *));\n",
+		   (yyvsp[-1].s), it);
+	    printf("extern void sysroff_print_%s_out PARAMS ((struct IT_%s *));\n",
+		   (yyvsp[-1].s), it);
+	    printf("struct IT_%s { \n", it);
+	    break;
+	  case 'i':
+	    printf("void sysroff_swap_%s_in(ptr)\n",(yyvsp[-1].s));
+	    printf("struct IT_%s *ptr;\n", it);
+	    printf("{\n");
+	    printf("unsigned char raw[255];\n");
+	    printf("\tint idx = 0 ;\n");
+	    printf("\tint size;\n");
+	    printf("memset(raw,0,255);\n");	
+	    printf("memset(ptr,0,sizeof(*ptr));\n");
+	    printf("size = fillup(raw);\n");
+	    break;
+	  case 'g':
+	    printf("void sysroff_swap_%s_out(file,ptr)\n",(yyvsp[-1].s));
+	    printf("FILE * file;\n");
+	    printf("struct IT_%s *ptr;\n", it);
+	    printf("{\n");
+	    printf("\tunsigned char raw[255];\n");
+	    printf("\tint idx = 16 ;\n");
+	    printf("\tmemset (raw, 0, 255);\n");
+	    printf("\tcode = IT_%s_CODE;\n", it);
+	    break;
+	  case 'o':
+	    printf("void sysroff_swap_%s_out(abfd,ptr)\n",(yyvsp[-1].s));
+	    printf("bfd * abfd;\n");
+	    printf("struct IT_%s *ptr;\n",it);
+	    printf("{\n");
+	    printf("int idx = 0 ;\n");
+	    break;
+	  case 'c':
+	    printf("void sysroff_print_%s_out(ptr)\n",(yyvsp[-1].s));
+	    printf("struct IT_%s *ptr;\n", it);
+	    printf("{\n");
+	    printf("itheader(\"%s\", IT_%s_CODE);\n",(yyvsp[-1].s),(yyvsp[-1].s));
+	    break;
+
+	  case 't':
+	    break;
+	  }
+
+      }
+    break;
+
+  case 7:
+#line 154 "sysinfo.y"
+    {
+  switch (writecode) {
+  case 'd': 
+    printf("};\n");
+    break;
+  case 'g':
+    printf("\tchecksum(file,raw, idx, IT_%s_CODE);\n", it);
+    
+  case 'i':
+
+  case 'o':
+  case 'c':
+    printf("}\n");
+  }
+}
+    break;
+
+  case 12:
+#line 181 "sysinfo.y"
+    {
+	  rdepth++;
+	  switch (writecode) 
+	    {
+	    case 'c':
+	      if (rdepth==1)
+	      printf("\tprintf(\"repeat %%d\\n\", %s);\n",(yyvsp[0].s));
+	      if (rdepth==2)
+	      printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",(yyvsp[0].s));
+	    case 'i':
+	    case 'g':
+	    case 'o':
+
+	      if (rdepth==1) 
+		{
+	      printf("\t{ int n; for (n = 0; n < %s; n++) {\n",    (yyvsp[0].s));
+	    }
+	      if (rdepth == 2) {
+	      printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n",    (yyvsp[0].s));
+	    }		
+
+	      break;
+	    }
+
+	  oldrepeat = repeat;
+         repeat = (yyvsp[0].s);
+	}
+    break;
+
+  case 13:
+#line 211 "sysinfo.y"
+    {
+	  repeat = oldrepeat;
+	  oldrepeat =0;
+	  rdepth--;
+	  switch (writecode)
+	    {
+	    case 'i':
+	    case 'g':
+	    case 'o':
+	    case 'c':
+	  printf("\t}}\n");
+	}
+	}
+    break;
+
+  case 14:
+#line 228 "sysinfo.y"
+    {
+	  switch (writecode) 
+	    {
+	    case 'i':
+	    case 'g':
+	    case 'o':
+	    case 'c':
+	      printf("\tif (%s) {\n", (yyvsp[0].s));
+	      break;
+	    }
+	}
+    break;
+
+  case 15:
+#line 241 "sysinfo.y"
+    {
+	  switch (writecode)
+	    {
+	    case 'i':
+	    case 'g':
+	    case 'o':
+	    case 'c':
+	  printf("\t}\n");
+	}
+	}
+    break;
+
+  case 16:
+#line 255 "sysinfo.y"
+    {name = (yyvsp[0].s); }
+    break;
+
+  case 17:
+#line 257 "sysinfo.y"
+    {
+	  char *desc = (yyvsp[-8].s);
+	  char *type = (yyvsp[-6].s);
+	  int size = (yyvsp[-5].i);
+	  char *id = (yyvsp[-3].s);
+char *p = names[rdepth];
+char *ptr = pnames[rdepth];
+	  switch (writecode) 
+	    {
+	    case 'g':
+	      if (size % 8) 
+		{
+		  
+		  printf("\twriteBITS(ptr->%s%s,raw,&idx,%d);\n",
+			 id,
+			 names[rdepth], size);
+
+		}
+	      else {
+		printf("\twrite%s(ptr->%s%s,raw,&idx,%d,file);\n",
+		       type,
+		       id,
+		       names[rdepth],size/8);
+		}
+	      break;	      
+	    case 'i':
+	      {
+
+		if (rdepth >= 1)
+
+		  {
+		    printf("if (!ptr->%s) ptr->%s = (%s*)xcalloc(%s, sizeof(ptr->%s[0]));\n", 
+			   id, 
+			   id,
+			   type,
+			   repeat,
+			   id);
+		  }
+
+		if (rdepth == 2)
+		  {
+		    printf("if (!ptr->%s[n]) ptr->%s[n] = (%s**)xcalloc(%s[n], sizeof(ptr->%s[n][0]));\n", 
+			   id, 
+			   id,
+			   type,
+			   repeat,
+			   id);
+		  }
+
+	      }
+
+	      if (size % 8) 
+		{
+		  printf("\tptr->%s%s = getBITS(raw,&idx, %d,size);\n",
+			 id,
+			 names[rdepth], 
+			 size);
+		}
+	      else {
+		printf("\tptr->%s%s = get%s(raw,&idx, %d,size);\n",
+		       id,
+		       names[rdepth],
+		       type,
+		       size/8);
+		}
+	      break;
+	    case 'o':
+	      printf("\tput%s(raw,%d,%d,&idx,ptr->%s%s);\n", type,size/8,size%8,id,names[rdepth]);
+	      break;
+	    case 'd':
+	      if (repeat) 
+		printf("\t/* repeat %s */\n", repeat);
+
+		  if (type[0] == 'I') {
+		  printf("\tint %s%s; \t/* %s */\n",ptr,id, desc);
+		}
+		  else if (type[0] =='C') {
+		  printf("\tchar %s*%s;\t /* %s */\n",ptr,id, desc);
+		}
+	      else {
+		printf("\tbarray %s%s;\t /* %s */\n",ptr,id, desc);
+	      }
+		  break;
+		case 'c':
+	      printf("tabout();\n");
+		  printf("\tprintf(\"/*%-30s*/ ptr->%s = \");\n", desc, id);
+
+		  if (type[0] == 'I')
+		  printf("\tprintf(\"%%d\\n\",ptr->%s%s);\n", id,p);
+		  else   if (type[0] == 'C')
+		  printf("\tprintf(\"%%s\\n\",ptr->%s%s);\n", id,p);
+
+		  else   if (type[0] == 'B') 
+		    {
+		  printf("\tpbarray(&ptr->%s%s);\n", id,p);
+		}
+	      else abort();
+		  break;
+		}
+	}
+    break;
+
+  case 18:
+#line 362 "sysinfo.y"
+    { (yyval.s) = (yyvsp[0].s); }
+    break;
+
+  case 19:
+#line 363 "sysinfo.y"
+    { (yyval.s) = "INT";}
+    break;
+
+  case 20:
+#line 368 "sysinfo.y"
+    { (yyval.s) = (yyvsp[-1].s); }
+    break;
+
+  case 21:
+#line 373 "sysinfo.y"
+    { (yyval.i) = (yyvsp[-1].i) * (yyvsp[0].i); }
+    break;
+
+  case 22:
+#line 378 "sysinfo.y"
+    { (yyval.s) = (yyvsp[-1].s); }
+    break;
+
+  case 23:
+#line 379 "sysinfo.y"
+    { (yyval.s) = "dummy";}
+    break;
+
+  case 27:
+#line 387 "sysinfo.y"
+    { 
+	  switch (writecode) 
+	    {
+	    case 'd':
+	      printf("#define %s %s\n", (yyvsp[-2].s),(yyvsp[-1].s));
+	      break;
+	    case 'c':
+		printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],(yyvsp[-1].s),(yyvsp[-2].s));
+	    }
+	}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1503 "sysinfo.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 402 "sysinfo.y"
+
+/* four modes
+
+   -d write structure definitions for sysroff in host format
+   -i write functions to swap into sysroff format in
+   -o write functions to swap into sysroff format out
+   -c write code to print info in human form */
+
+int yydebug;
+
+int 
+main (int ac, char **av)
+{
+  yydebug=0;
+  if (ac > 1)
+    writecode = av[1][1];
+if (writecode == 'd')
+  {
+    printf("typedef struct { unsigned char *data; int len; } barray; \n");
+    printf("typedef  int INT;\n");
+    printf("typedef  char * CHARS;\n");
+
+  }
+  yyparse();
+return 0;
+}
+
+static int
+yyerror (char *s)
+{
+  fprintf(stderr, "%s\n" , s);
+  return 0;
+}
+

Added: branches/binutils/package/binutils/sysinfo.h
===================================================================
--- branches/binutils/package/binutils/sysinfo.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/sysinfo.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,67 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     COND = 258,
+     REPEAT = 259,
+     TYPE = 260,
+     NAME = 261,
+     NUMBER = 262,
+     UNIT = 263
+   };
+#endif
+/* Tokens.  */
+#define COND 258
+#define REPEAT 259
+#define TYPE 260
+#define NAME 261
+#define NUMBER 262
+#define UNIT 263
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 39 "sysinfo.y"
+typedef union YYSTYPE {
+ int i;
+ char *s;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 59 "sysinfo.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Added: branches/binutils/package/binutils/syslex.c
===================================================================
--- branches/binutils/package/binutils/syslex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/binutils/syslex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1729 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/binutils/Attic/syslex.c,v 1.1.16.1 2006/04/16 18:36:41 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 25
+#define YY_END_OF_BUFFER 26
+static yyconst short int yy_accept[81] =
+    {   0,
+        0,    0,   26,   25,    7,    8,    5,   25,    1,    2,
+       11,   11,    6,    3,    4,   25,   25,   25,   25,   25,
+       25,   25,    0,    9,   11,    0,    6,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   10,    0,    0,
+       13,    0,    0,    0,    0,   16,    0,    0,    0,    0,
+        0,   12,   15,    0,   23,    0,    0,    0,    0,    0,
+        0,   14,   18,    0,    0,    0,    0,    0,   17,    0,
+       24,    0,    0,    0,   20,   22,    0,   21,   19,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    4,    1,    5,    1,    1,    1,    1,    1,    6,
+        7,    1,    1,    1,    1,    1,    1,    8,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    1,   10,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       11,    1,   12,    1,    1,    1,   13,   14,   15,   16,
+
+       17,   18,   19,   20,   21,    1,    1,   22,    1,   23,
+       24,   25,    1,   26,   27,   28,   29,   30,    1,   31,
+       32,   33,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[34] =
+    {   0,
+        1,    1,    2,    1,    1,    1,    1,    3,    3,    1,
+        1,    1,    3,    3,    3,    3,    3,    3,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1
+    } ;
+
+static yyconst short int yy_base[84] =
+    {   0,
+        0,    0,  100,  101,  101,  101,  101,   94,  101,  101,
+       26,   28,    0,  101,  101,   82,   26,   18,   74,   79,
+       78,   81,   88,  101,   32,    0,    0,   76,   65,   62,
+       61,   75,   20,   59,   61,   66,   58,    0,   57,   56,
+       54,   63,   53,   62,   54,  101,   59,   48,   53,   46,
+       59,  101,   44,   43,  101,   41,   55,   46,   53,   44,
+       31,  101,  101,   39,   27,   21,   39,   19,  101,   35,
+      101,   33,   26,   29,  101,  101,   28,  101,  101,  101,
+       58,   61,   41
+    } ;
+
+static yyconst short int yy_def[84] =
+    {   0,
+       80,    1,   80,   80,   80,   80,   80,   81,   80,   80,
+       80,   80,   82,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   81,   80,   80,   83,   82,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   83,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,    0,
+       80,   80,   80
+    } ;
+
+static yyconst short int yy_nxt[135] =
+    {   0,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,   15,   16,   17,   18,    4,    4,    4,    4,    4,
+       19,    4,    4,    4,    4,   20,   21,    4,    4,   22,
+        4,    4,    4,   25,   25,   25,   25,   32,   29,   25,
+       25,   33,   44,   38,   79,   78,   30,   77,   45,   76,
+       75,   74,   73,   72,   71,   70,   26,   31,   23,   23,
+       23,   27,   69,   27,   68,   67,   66,   65,   64,   63,
+       62,   61,   60,   59,   58,   57,   56,   55,   54,   53,
+       52,   51,   50,   49,   48,   47,   46,   43,   42,   41,
+       40,   39,   24,   37,   36,   35,   34,   28,   24,   80,
+
+        3,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80
+    } ;
+
+static yyconst short int yy_chk[135] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,   11,   11,   12,   12,   18,   17,   25,
+       25,   18,   33,   83,   77,   74,   17,   73,   33,   72,
+       70,   68,   67,   66,   65,   64,   11,   17,   81,   81,
+       81,   82,   61,   82,   60,   59,   58,   57,   56,   54,
+       53,   51,   50,   49,   48,   47,   45,   44,   43,   42,
+       41,   40,   39,   37,   36,   35,   34,   32,   31,   30,
+       29,   28,   23,   22,   21,   20,   19,   16,    8,    3,
+
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "syslex.l"
+#define INITIAL 0
+#line 2 "syslex.l"
+/* Copyright 2001, 2003, 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Binutils.
+
+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 2, 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 GLD; see the file COPYING.  If not, write to the Free
+Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+02110-1301, USA.  */
+
+#include "config.h"
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#include "sysinfo.h"
+
+#define YY_NO_UNPUT
+
+#ifndef yywrap
+static int yywrap (void) { return 1; }
+#endif
+
+extern int yylex (void);
+#line 457 "syslex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 39 "syslex.l"
+
+#line 621 "syslex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 81 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 101 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 40 "syslex.l"
+{ return '(';}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 41 "syslex.l"
+{ return ')';}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 42 "syslex.l"
+{ return '[';}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 43 "syslex.l"
+{ return ']';}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 44 "syslex.l"
+{ ; }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 45 "syslex.l"
+{ ; } 
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 46 "syslex.l"
+{ ; }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 47 "syslex.l"
+{ ; }
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 48 "syslex.l"
+{
+	yylval.s = malloc (yyleng - 1);
+	memcpy (yylval.s, yytext + 1, yyleng - 2);
+	yylval.s[yyleng - 2] = '\0';
+        return NAME;
+	}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 55 "syslex.l"
+{
+        yylval.i = strtol(yytext,0,16);
+	return  NUMBER;
+	}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 60 "syslex.l"
+{
+        yylval.i = atoi(yytext);
+	return  NUMBER;
+	}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 66 "syslex.l"
+{ yylval.i =1 ;return UNIT;}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 67 "syslex.l"
+{ yylval.i = 1; return UNIT;}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 68 "syslex.l"
+{ yylval.i= 8; return UNIT;}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 69 "syslex.l"
+{ yylval.i = 8; return UNIT;}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 71 "syslex.l"
+{ yylval.s = "INT"; return TYPE;}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 72 "syslex.l"
+{ yylval.s = "BARRAY"; return TYPE;}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 73 "syslex.l"
+{ yylval.s = "CHARS"; return TYPE;}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 74 "syslex.l"
+{ yylval.i = 0; return NUMBER;}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 75 "syslex.l"
+{ yylval.i = -4; return NUMBER;}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 76 "syslex.l"
+{ yylval.i = -2; return NUMBER; }
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 77 "syslex.l"
+{ yylval.i = -1; return NUMBER; }
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 78 "syslex.l"
+{ return COND;}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 79 "syslex.l"
+{ return REPEAT;}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 80 "syslex.l"
+ECHO;
+	YY_BREAK
+#line 840 "syslex.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 81 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 81 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 80);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 80 "syslex.l"

Deleted: branches/binutils/package/compile
===================================================================
--- branches/binutils/package/compile	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/compile	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,142 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
-
-scriptversion=2005-05-14.22
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey at cygnus.com>.
-#
-# 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 2, 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; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-esac
-
-ofile=
-cfile=
-eat=
-
-for arg
-do
-  if test -n "$eat"; then
-    eat=
-  else
-    case $1 in
-      -o)
-	# configure might choose to run compile as `compile cc -o foo foo.c'.
-	# So we strip `-o arg' only if arg is an object.
-	eat=1
-	case $2 in
-	  *.o | *.obj)
-	    ofile=$2
-	    ;;
-	  *)
-	    set x "$@" -o "$2"
-	    shift
-	    ;;
-	esac
-	;;
-      *.c)
-	cfile=$1
-	set x "$@" "$1"
-	shift
-	;;
-      *)
-	set x "$@" "$1"
-	shift
-	;;
-    esac
-  fi
-  shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
-  # pattern rule where we don't need one.  That is ok -- this is a
-  # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
-  # ok.
-  exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use `[/.-]' here to ensure that we don't use the same name
-# that we are using for the .o file.  Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
-while true; do
-  if mkdir "$lockdir" >/dev/null 2>&1; then
-    break
-  fi
-  sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
-  mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

Modified: branches/binutils/package/configure.in
===================================================================
--- branches/binutils/package/configure.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/configure.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -130,7 +130,7 @@
 # know that we are building the simulator.
 # binutils, gas and ld appear in that order because it makes sense to run
 # "make check" in that particular order.
-host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
+host_tools="byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
 
 # libgcj represents the runtime libraries only used by gcj.
 libgcj="target-libffi \

Modified: branches/binutils/package/debian/binutils-hppa64.shlibs
===================================================================
--- branches/binutils/package/debian/binutils-hppa64.shlibs	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/binutils-hppa64.shlibs	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,2 +1,2 @@
-libbfd 2.16.91 binutils-hppa64
-libopcodes 2.16.91 binutils-hppa64
+libbfd 2.17 binutils-hppa64
+libopcodes 2.17 binutils-hppa64

Modified: branches/binutils/package/debian/binutils-multiarch.shlibs
===================================================================
--- branches/binutils/package/debian/binutils-multiarch.shlibs	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/binutils-multiarch.shlibs	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,2 +1,2 @@
-libbfd-2.16.91 multiarch binutils-multiarch
-libopcodes-2.16.91 multiarch binutils-multiarch
+libbfd-2.17 multiarch binutils-multiarch
+libopcodes-2.17 multiarch binutils-multiarch

Modified: branches/binutils/package/debian/binutils.shlibs
===================================================================
--- branches/binutils/package/debian/binutils.shlibs	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/binutils.shlibs	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,2 +1,2 @@
-libbfd 2.16.91 binutils
-libopcodes 2.16.91 binutils
+libbfd 2.17 binutils
+libopcodes 2.17 binutils

Modified: branches/binutils/package/debian/changelog
===================================================================
--- branches/binutils/package/debian/changelog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/changelog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,41 @@
+binutils (2.17-3) unstable; urgency=low
+
+  * debian/rules (configure-multi-stamp): drop i486-kfreebsd-gnu again as
+    it breaks objdump for i386 on amd64.  Closes: #380539
+
+ -- James Troup <james at nocrew.org>  Tue,  3 Oct 2006 00:53:17 +0100
+
+binutils (2.17-2) unstable; urgency=low
+
+  * The "Laisse le Wookie gagner" release.
+
+  * 127_x86_64_i386_biarch.dpatch: new patch from Aurelien Jarno
+    <aurelien at aurel32.net> to add (/usr)/lib32 to the search paths on
+    amd64.  Closes: #369052
+
+  * debian/rules (configure-multi-stamp): add i486-kfreebsd-gnu at request
+    of Aurelien Jarno.  Closes: #315306
+
+ -- James Troup <james at nocrew.org>  Wed, 26 Jul 2006 20:33:13 +0100
+
+binutils (2.17-1) unstable; urgency=low
+
+  * New upstream release.
+   * 120_mips_xgot_multigot_workaround.dpatch: removed - superseded by a
+     proper fix upstream.  Closes: #274738
+   * debian/binutils.shlibs, debian/binutils-multiarch.shlibs,
+     debian/binutils-hppa64.shlibs: updated SONAME to 2.17.
+
+ -- James Troup <james at nocrew.org>  Mon, 26 Jun 2006 13:17:36 +0100
+
+binutils (2.16.1cvs20060507-1) unstable; urgency=low
+
+  * New upstream CVS snapshot of 'binutils-2_17-branch'.
+
+  * debian/control (Standards-Version): bump to 3.7.2.0.
+
+ -- James Troup <james at nocrew.org>  Sun,  7 May 2006 19:57:08 +0100
+
 binutils (2.16.1cvs20060413-1) unstable; urgency=low
 
   * New upstream CVS snapshot.
@@ -2267,3 +2305,6 @@
 Added a simple extended description (Bug#3574).
 
 Don't call ldconfig from postrm script (Bug#4246).
+    
+   LocalWords:  Aurelien Jarno
+  

Modified: branches/binutils/package/debian/control
===================================================================
--- branches/binutils/package/debian/control	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/control	2006-12-31 16:27:59 UTC (rev 19)
@@ -3,7 +3,7 @@
 Priority: standard
 Maintainer: James Troup <james at nocrew.org>
 Uploaders: Matthias Klose <doko at debian.org>
-Standards-Version: 3.6.2.1
+Standards-Version: 3.7.2.0
 Build-Depends: dpkg-dev (>= 1.13.9), autoconf (>= 2.13), bison, flex, gettext, texinfo, binutils (>= 2.9.5.0.12), gcc (>= 2.95.2-1), dejagnu (>= 1.4.2-1.1), expect-tcl8.3 (>= 5.32.2-1), dpatch, file
 
 Package: binutils

Modified: branches/binutils/package/debian/patches/00list
===================================================================
--- branches/binutils/package/debian/patches/00list	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/patches/00list	2006-12-31 16:27:59 UTC (rev 19)
@@ -4,5 +4,5 @@
 003_gprof_see_also_monitor
 006_better_file_error
 012_check_ldrunpath_length
-120_mips_xgot_multigot_workaround
 121_i386_x86_64_biarch
+127_x86_64_i386_biarch

Deleted: branches/binutils/package/debian/patches/118_arm_pass_all.dpatch
===================================================================
--- branches/binutils/package/debian/patches/118_arm_pass_all.dpatch	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/patches/118_arm_pass_all.dpatch	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,135 +0,0 @@
-#! /bin/sh -e
-## 118_arm_pass_all.dpatch
-##
-## DP: Description: fix broken libtool pass_all handling for arm and other arches
-## DP: Author: James Troup <james at nocrew.org>
-## DP: Upstream status: Not submitted
-## DP: Date: 2004-09-09
-
-if [ $# -lt 1 ]; then
-    echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
-    -patch) patch -p1 ${patch_opts} < $0;;
-    -unpatch) patch -R -p1 ${patch_opts} < $0;;
-    *)
-        echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-        exit 1;;
-esac
-
-exit 0
-
- at DPATCH@
-diff -urNad binutils-2.16/bfd/configure /tmp/dpep.uWtDw8/binutils-2.16/bfd/configure
---- binutils-2.16/bfd/configure	2005-05-06 19:01:17.471585202 +0200
-+++ /tmp/dpep.uWtDw8/binutils-2.16/bfd/configure	2005-05-06 19:33:02.830018225 +0200
-@@ -3573,13 +3573,7 @@
- 
- # This must be Linux ELF.
- linux-gnu*)
--  case $host_cpu in
--  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
--    lt_cv_deplibs_check_method=pass_all ;;
--  *)
--    # glibc up to 2.1.1 does not perform some relocations on ARM
--    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
--  esac
-+  lt_cv_deplibs_check_method=pass_all
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-diff -urNad binutils-2.16/binutils/configure /tmp/dpep.uWtDw8/binutils-2.16/binutils/configure
---- binutils-2.16/binutils/configure	2005-03-22 16:31:04.000000000 +0100
-+++ /tmp/dpep.uWtDw8/binutils-2.16/binutils/configure	2005-05-06 19:33:02.832017625 +0200
-@@ -1565,13 +1565,7 @@
- 
- # This must be Linux ELF.
- linux-gnu*)
--  case $host_cpu in
--  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
--    lt_cv_deplibs_check_method=pass_all ;;
--  *)
--    # glibc up to 2.1.1 does not perform some relocations on ARM
--    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
--  esac
-+  lt_cv_deplibs_check_method=pass_all
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-diff -urNad binutils-2.16/gas/configure /tmp/dpep.uWtDw8/binutils-2.16/gas/configure
---- binutils-2.16/gas/configure	2005-03-01 01:43:51.000000000 +0100
-+++ /tmp/dpep.uWtDw8/binutils-2.16/gas/configure	2005-05-06 19:33:02.836016424 +0200
-@@ -3410,13 +3410,7 @@
- 
- # This must be Linux ELF.
- linux-gnu*)
--  case $host_cpu in
--  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
--    lt_cv_deplibs_check_method=pass_all ;;
--  *)
--    # glibc up to 2.1.1 does not perform some relocations on ARM
--    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
--  esac
-+  lt_cv_deplibs_check_method=pass_all
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-diff -urNad binutils-2.16/gprof/configure /tmp/dpep.uWtDw8/binutils-2.16/gprof/configure
---- binutils-2.16/gprof/configure	2005-01-31 21:32:41.000000000 +0100
-+++ /tmp/dpep.uWtDw8/binutils-2.16/gprof/configure	2005-05-06 19:33:02.840015222 +0200
-@@ -3408,13 +3408,7 @@
- 
- # This must be Linux ELF.
- linux-gnu*)
--  case $host_cpu in
--  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
--    lt_cv_deplibs_check_method=pass_all ;;
--  *)
--    # glibc up to 2.1.1 does not perform some relocations on ARM
--    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
--  esac
-+  lt_cv_deplibs_check_method=pass_all
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-diff -urNad binutils-2.16/ld/configure /tmp/dpep.uWtDw8/binutils-2.16/ld/configure
---- binutils-2.16/ld/configure	2005-02-21 12:49:47.000000000 +0100
-+++ /tmp/dpep.uWtDw8/binutils-2.16/ld/configure	2005-05-06 19:33:02.841014922 +0200
-@@ -1569,13 +1569,7 @@
- 
- # This must be Linux ELF.
- linux-gnu*)
--  case $host_cpu in
--  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
--    lt_cv_deplibs_check_method=pass_all ;;
--  *)
--    # glibc up to 2.1.1 does not perform some relocations on ARM
--    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
--  esac
-+  lt_cv_deplibs_check_method=pass_all
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-diff -urNad binutils-2.16/opcodes/configure /tmp/dpep.uWtDw8/binutils-2.16/opcodes/configure
---- binutils-2.16/opcodes/configure	2005-01-31 21:30:37.000000000 +0100
-+++ /tmp/dpep.uWtDw8/binutils-2.16/opcodes/configure	2005-05-06 19:33:02.845013721 +0200
-@@ -3577,13 +3577,7 @@
- 
- # This must be Linux ELF.
- linux-gnu*)
--  case $host_cpu in
--  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
--    lt_cv_deplibs_check_method=pass_all ;;
--  *)
--    # glibc up to 2.1.1 does not perform some relocations on ARM
--    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
--  esac
-+  lt_cv_deplibs_check_method=pass_all
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 

Deleted: branches/binutils/package/debian/patches/120_mips_xgot_multigot_workaround.dpatch
===================================================================
--- branches/binutils/package/debian/patches/120_mips_xgot_multigot_workaround.dpatch	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/patches/120_mips_xgot_multigot_workaround.dpatch	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,41 +0,0 @@
-#! /bin/sh -e
-## 120_mips_xgot_multigot_workaround.dpatch
-##
-## DP: Description: Make multigot/xgot handling mutually exclusive.
-## DP: Author: Thiemo Seufer <seufer at csv.ica.uni-stuttgart.de>
-## DP: Upstream status: Not submitted
-## DP: Date: 2004-09-17
-
-if [ $# -lt 1 ]; then
-    echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
-    -patch) patch -p1 ${patch_opts} < $0;;
-    -unpatch) patch -R -p1 ${patch_opts} < $0;;
-    *)
-        echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-        exit 1;;
-esac
-
-exit 0
-
- at DPATCH@
-diff -urNad --exclude=CVS --exclude=.svn ./bfd/elfxx-mips.c /tmp/dpep-work.6E2Wwi/binutils-2.16.1cvs20060413/bfd/elfxx-mips.c
---- ./bfd/elfxx-mips.c	2006-04-14 00:58:48.000000000 +0100
-+++ /tmp/dpep-work.6E2Wwi/binutils-2.16.1cvs20060413/bfd/elfxx-mips.c	2006-04-14 00:59:49.000000000 +0100
-@@ -7176,7 +7176,9 @@
-      dynamic loader.  */
-   if (!htab->is_vxworks && s->size > MIPS_ELF_GOT_MAX_SIZE (info))
-     {
--      if (! mips_elf_multi_got (output_bfd, info, g, s, local_gotno))
-+      if (! mips_elf_multi_got (output_bfd, info, g, s, local_gotno)
-+	  && g->global_gotno <= (MIPS_ELF_GOT_MAX_SIZE (info)
-+				 / MIPS_ELF_GOT_SIZE (output_bfd)))
- 	return FALSE;
-     }
-   else

Deleted: branches/binutils/package/debian/patches/125_fix_tc_arm_cast.dpatch
===================================================================
--- branches/binutils/package/debian/patches/125_fix_tc_arm_cast.dpatch	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/patches/125_fix_tc_arm_cast.dpatch	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,42 +0,0 @@
-#! /bin/sh -e
-## 125_fix_tc_arm_cast.dpatch
-##
-## DP: Description: Fix broken cast that causes build failures on arm. (#336175)
-## DP: Author: Lennert Buytenhek
-## DP: Upstream status: Not yet submitted
-## DP: Date: 2005-10-25
-
-if [ $# -lt 1 ]; then
-    echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
-    -patch) patch -p1 ${patch_opts} < $0;;
-    -unpatch) patch -R -p1 ${patch_opts} < $0;;
-    *)
-        echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-        exit 1;;
-esac
-
-exit 0
-
- at DPATCH@
-diff -urNad --exclude=CVS --exclude=.svn ./gas/config/tc-arm.c /tmp/dpep-work.YwfW8K/binutils-2.16.1cvs20051109/gas/config/tc-arm.c
---- ./gas/config/tc-arm.c	2005-11-09 23:21:04.000000000 +0000
-+++ /tmp/dpep-work.YwfW8K/binutils-2.16.1cvs20051109/gas/config/tc-arm.c	2005-11-10 00:45:23.000000000 +0000
-@@ -11708,8 +11708,9 @@
- 	  if (value & 3)
- 	    as_bad_where (fixP->fx_file, fixP->fx_line,
- 			  _("invalid offset, target not word aligned (0x%08lX)"),
--			  (((unsigned int) fixP->fx_frag->fr_address
--			    + (unsigned int) fixP->fx_where) & ~3) + value);
-+			  (((unsigned long) fixP->fx_frag->fr_address
-+			    + (unsigned long) fixP->fx_where) & ~3)
-+			    + (unsigned long) value);
- 
- 	  if (value & ~0x3fc)
- 	    as_bad_where (fixP->fx_file, fixP->fx_line,

Added: branches/binutils/package/debian/patches/127_x86_64_i386_biarch.dpatch
===================================================================
--- branches/binutils/package/debian/patches/127_x86_64_i386_biarch.dpatch	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/patches/127_x86_64_i386_biarch.dpatch	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,42 @@
+#!/bin/sh -e
+## 127_x86_64_i386_biarch.dpatch
+##
+## DP: Description: Add (/usr)/lib32 to the search paths on x86_64.
+## DP: Author: Aurelien Jarno <aurel32.debian.org>
+## DP: Upstream status: Debian specific
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+                exit 1;;
+esac
+
+exit 0
+
+ at DPATCH@
+--- binutils/ld/emulparams/elf_i386.sh
++++ binutils/ld/emulparams/elf_i386.sh
+@@ -12,3 +12,13 @@
+ GENERATE_PIE_SCRIPT=yes
+ NO_SMALL_DATA=yes
+ SEPARATE_GOTPLT=12
++
++# Linux modify the default library search path to first include
++# a 32-bit specific directory.
++case "$target" in
++  x86_64*-linux* | i[3-7]86*-linux*)
++    case "$EMULATION_NAME" in
++      *i386*) LIBPATH_SUFFIX=32 ;;
++    esac
++    ;;
++esac

Modified: branches/binutils/package/debian/rules
===================================================================
--- branches/binutils/package/debian/rules	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/debian/rules	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,5 @@
 #!/usr/bin/make -f
-# debian/rules file - for binutils (2.16.1cvs20050902)
+# debian/rules file - for binutils (2.17)
 # Based on sample debian/rules file - for GNU Hello (1.3).
 # Copyright 1994,1995 by Ian Jackson.
 # Copyright 1998-2006 James Troup
@@ -138,7 +138,7 @@
 	mkdir builddir-multi
 	cd builddir-multi \
 	    && env CC="$(CC)" ../configure $(CONFARGS) \
-		--enable-targets=alpha-linux-gnu,arm-linux-gnu,hppa-linux-gnu,i486-gnu,i486-linux-gnu,ia64-linux-gnu,m68k-linux-gnu,m68k-rtems,mips-linux-gnu,mipsel-linux-gnu,mips64-linux-gnu,mips64el-linux-gnu,powerpc-linux-gnu,powerpc64-linux-gnu,s390-linux-gnu,s390x-linux-gnu,sh-linux-gnu,sparc-linux-gnu,sparc64-linux-gnu,x86_64-linux,m32r-linux-gnu
+		--enable-targets=alpha-linux-gnu,arm-linux-gnu,hppa-linux-gnu,i486-linux-gnu,ia64-linux-gnu,m68k-linux-gnu,m68k-rtems,mips-linux-gnu,mipsel-linux-gnu,mips64-linux-gnu,mips64el-linux-gnu,powerpc-linux-gnu,powerpc64-linux-gnu,s390-linux-gnu,s390x-linux-gnu,sh-linux-gnu,sparc-linux-gnu,sparc64-linux-gnu,x86_64-linux,m32r-linux-gnu
 	$(MAKE) -C builddir-multi configure-host
 	touch configure-multi-stamp
 

Deleted: branches/binutils/package/depcomp
===================================================================
--- branches/binutils/package/depcomp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/depcomp	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,553 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2005-05-16.16
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-# 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 2, 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; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
-    # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> $depfile
-    echo >> $depfile
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> $depfile
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
-  tmpdepfile="$stripped.u"
-  if test "$libtool" = yes; then
-    "$@" -Wc,-M
-  else
-    "$@" -M
-  fi
-  stat=$?
-
-  if test -f "$tmpdepfile"; then :
-  else
-    stripped=`echo "$stripped" | sed 's,^.*/,,'`
-    tmpdepfile="$stripped.u"
-  fi
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-
-  if test -f "$tmpdepfile"; then
-    outname="$stripped.o"
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
-    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-ia64hp)
-  # The "hp" stanza above does not work with HP's ia64 compilers,
-  # which have integrated preprocessors.  The correct option to use
-  # with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  tmpdepfile=`echo "$object" | sed -e 's/\.o$/.d/'`
-  "$@" +Maked
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile"
-     exit $stat
-  fi
-  rm -f "$depfile"
-
-  # The object file name is correct already.
-  cat "$tmpdepfile" > "$depfile"
-  # Add `dependent.h:' lines.
-  sed -ne '2,${; s/^ //; s/ \\*$//; s/$/:/; p; }' "$tmpdepfile" >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mecanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no
-  for arg in "$@"; do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix="`echo $object | sed 's/^.*\././'`"
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o,
-  # because we must use -o when running libtool.
-  "$@" || exit $?
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

Deleted: branches/binutils/package/djunpack.bat
===================================================================
--- branches/binutils/package/djunpack.bat	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/djunpack.bat	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,52 +0,0 @@
- at echo off
-Rem
-Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line
-Rem format, or else stock DOS/Windows shells will refuse to run it.
-Rem
-Rem This batch file unpacks the GDB distribution while simultaneously
-Rem renaming some of the files whose names are invalid on DOS or conflict
-Rem with other file names after truncation to DOS 8+3 namespace.
-Rem
-Rem Invoke like this:
-Rem
-Rem     djunpack gdb-XYZ.tar
-Rem
-Rem where XYZ is the version number.  If the argument includes leading
-Rem directories, it MUST use backslashes, not forward slashes.
-Rem
-Rem The following 2 lines need to be changed with each new GDB release, to
-Rem be identical to the name of the top-level directory where the GDB
-Rem distribution unpacks itself.
-set GDBVER=gdb-5.0
-if "%GDBVER%"=="gdb-5.0" GoTo EnvOk
-Rem If their environment space is too small, re-exec with a larger one
-command.com /e:4096 /c %0 %1
-GoTo End
-:EnvOk
-if not exist %1 GoTo NoArchive
-djtar -x -p -o %GDBVER%/gdb/config/djgpp/fnchange.lst %1 > fnchange.tmp
-Rem The following uses a feature of COPY whereby it does not copy
-Rem empty files.  We need that because the previous line will create
-Rem an empty fnchange.tmp even if the command failed for some reason.
-copy fnchange.tmp junk.tmp > nul
-if not exist junk.tmp GoTo NoDjTar
-del junk.tmp
-sed -e 's, at V@,%GDBVER%,g' < fnchange.tmp > fnchange.lst
-Rem See the comment above about the reason for using COPY.
-copy fnchange.lst junk.tmp > nul
-if not exist junk.tmp GoTo NoSed
-del junk.tmp
-djtar -x -n fnchange.lst %1
-GoTo End
-:NoSed
-echo FAIL: Sed is not available.
-GoTo End
-:NoDjTar
-echo FAIL: DJTAR is not available or no fnchange.lst file in %1.
-GoTo End
-:NoArchive
-echo FAIL: the file %1 does not seem to exist.
-echo Remember that %1 cannot use forward slashes, only backslashes.
-GoTo End
-:End
-set GDBVER=

Deleted: branches/binutils/package/etc/ChangeLog
===================================================================
--- branches/binutils/package/etc/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/etc/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,589 +0,0 @@
-2006-04-06  Carlos O'Donell  <carlos at codesourcery.com>
-
-	* Makefile.in: Add install-html target. Add htmldir,
-	docdir and datarootdir.
-	* configure.texi: Document install-html target.
-	* configure.in: AC_SUBST datarootdir, docdir, htmldir.
-	* configure: Regenerate.
-
-2006-02-27  Carlos O'Donell  <carlos at codesourcery.com>
-
-	* Makefile.in: TEXI2HTML uses makeinfo. Define 
-	HTMLFILES. Add html targets.
-	* configure.texi: Use ifnottex. Add alternative 
-	image format specifier as jpg.
-	* standards.texi: Use ifnottex.
-
-2005-10-21  Mark Mitchell  <mark at codesourcery.com>
-
-	* texi2pod.pl: Substitue for @value even when part of @include. 
-
-2005-10-21  Bob Wilson  <bob.wilson at acm.org>
-
-	* texi2pod.pl: Import latest version from GCC.
-
-2005-05-19  Zack Weinberg  <zack at codesourcery.com>
-
-	* Makefile.in: Have 'all' depend on 'info'.
-
-2003-05-16  Kelley Cook  <kelleycook at wideopenwest.com>
-
-	* configure.texi: Use "i[3-7]86" in example.
-
-2003-01-02  H.J. Lu <hjl at gnu.org>
-
-	* Makefile.in (DESTDIR): New.
-	(install-info): Use it.
-
-2002-06-11  Nick Clifton  <nickc at cambridge.redhat.com>
-
-	Import the following patches from the FSF GCC sources:
-	2002-03-25  Zack Weinberg  <zack at codesourcery.com>
-
-	* texi2pod.pl: Handle @end ftable and @end vtable.
-
-	2001-12-12  Matthias Klose  <doko at debian.org>
-
-	* texi2pod.pl: Merge changes from binutils' texi2pod.pl. Allows
-	generation of more than one man page from one source.
-	Add '-' to set of valid chars for an identifier.
-	Let -D option accept flags of the form <flag>=<value>.
-	Use \s+ for whitespace detection in '@c man' lines.
-	Handle @set and @clear independent of $output.
-	Substitute all @value{}'s in a line.
-
-	2001-11-14  Joseph S. Myers  <jsm28 at cam.ac.uk>
-
-	* texi2pod.pl: Handle @ifnottex, @iftex and @display.  Handle @var
-	in verbatim blocks specially.  Handle @unnumbered, @unnumberedsec
-	and @center.  Allow [a-z] after @enumerate.  Handle 0 and numbers
-	greater than 9 in enumerations.
-
-	2001-07-03  Joseph S. Myers  <jsm28 at cam.ac.uk>
-
-	* texi2pod.pl: Handle @r inside @item.
-
-2002-02-27  Andrew Cagney  <ac131313 at redhat.com>
-
-	* fdl.texi: New file.
-
-2002-02-24  Andrew Cagney  <ac131313 at redhat.com>
-
-	* standards.texi: Import February 14, 2002 version.
-	* make-stds.texi: Import 2001 version.
-
-2002-01-26  Hans-Peter Nilsson  <hp at bitrange.com>
-
-	* Makefile.in (install): Depend on install-info.
-
-2001-03-25  Stephane Carrez  <Stephane.Carrez at worldnet.fr>
-
-	* texi2pod.pl: New file (from gcc/contrib).
-
-1999-04-01  Jim Blandy  <jimb at zwingli.cygnus.com>
-
-	* add-log.el, add-log.vi: New files.
-
-1999-01-20  Angela Marie Thomas (angela at cygnus.com)
-
-	* comp-tools-verify: Remove some checks that are no longer valid.
-
-1998-12-03  Nick Clifton  <nickc at cygnus.com>
-
-	* targetdoc/fr30.texi: New document.
-
-1998-10-01  Angela Marie Thomas (angela at cygnus.com)
-
-	* comp-tools-fix, cross-tools-fix: Replace /usr/include
-	with ${FIXINCDIR}.
-
-1998-08-11  Doug Evans  <devans at canuck.cygnus.com>
-
-	* make-rel-sym-tree (version): Update calculation.
-
-1998-06-12  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.texi: Various additions.
-	* Makefile.in (TEXI2HTML, DVIPS): New variables.
-	(standards.ps): New target.
-	(configure.dvi): Copy .tin files in as well.
-	(configure.ps, configure.html): New targets.
-	(clean): Remove configdev.jpg and configbuild.jpg.
-	* configdev.fig: New file.
-	* configdev.ein: New file (EPS version of configdev.fig).
-	* configdev.jin: New file (JPEG version of configdev.fig).
-	* configbuild.fig: New file.
-	* configbuild.ein: New file (EPS version of configbuild.fig).
-	* configbuild.jin: New file (JPEG version of configbuild.fig).
-
-1998-06-10  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.texi: New file.
-	* configdev.tin: New file.
-	* configbuild.tin: New file.
-	* Makefile.in (MAKEINFO): Use makeinfo from texinfo directory if
-	it exists.
-	(TEXI2DVI): Likewise for texi2dvi.
-	(INFOFILES): Add configure.info.
-	(DVIFILES): Add configure.dvi.
-	(info): Only build info files if the source files exist.
-	(install-info): Only install info files if they exist.
-	(dvi): Only build DVI files if the sources files exist.
-	(configure.info): New target.
-	(configure.dvi): New target.
-	(clean): Remove configdev and configbuild derived files.
-
-	Remove obsolete documentation.
-	* intro.texi: Remove.
-	* install.texi: Remove.
-	* config-names.texi: Remove.
-	* screen1.eps: Remove.
-	* screen1.obj: Remove.
-	* screen2.eps: Remove.
-	* screen2.obj: Remove.
-	* Makefile.in: Remove references to the above.
-
-Thu May 21 14:34:51 1998  Nick Clifton  <nickc at cygnus.com>
-
-	* targetdoc/arm-interwork.texi: Add note about ignoring linker
-	warning message when using --support-old-code.
-
-Mon May 18 14:27:37 1998  Angela Marie Thomas (angela at cygnus.com)
-
-	* Install.in, comp-tools-fix, comp-tools-verify, cross-tools-fix:
-	Use $GCCvn rather than substitute everywhere.
-
-Thu May 14 14:43:10 1998  Nick Clifton  <nickc at cygnus.com>
-
-	* targetdoc/arm-interwork.texi: Document dlltool support of
-	interworking.
-
-Thu May  7 16:49:38 1998  Jason Molenda  (crash at bugshack.cygnus.com)
-
-	* Install.in: Remove references to TCL_LIBRARY, TK_LIBRARY,
-	and GDBTK_FILENAME.
-
-Wed Apr  1 17:11:44 1998  Nick Clifton  <nickc at cygnus.com>
-
-	* targetdoc/arm-interwork.texi: Document ARM/thumb interworking.
-
-Tue Mar 31 15:28:20 1998  Ian Lance Taylor  <ian at cygnus.com>
-
-	* standards.texi, make-stds.texi: Update to current FSF versions.
-	* Makefile.in (standards.info): Depend upon make-std.texi.
-
-Tue Mar 24 16:13:26 1998  Stu Grossman  <grossman at bhuna.cygnus.co.uk>
-
-	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues
-	for NT native builds.
-
-Mon Mar  9 16:41:04 1998  Doug Evans  <devans at canuck.cygnus.com>
-
-	* make-rel-sym-tree (binprogs): Add objcopy.
-
-Tue Feb 24 18:11:58 1998  Doug Evans  <devans at canuck.cygnus.com>
-
-	* make-rel-sym-tree: as.new -> as-new, ld.new -> ld-new
-	nm.new -> nm-new.  Make symlinks to crt*.o.
-
-Fri Nov 21 12:54:58 1997  Manfred Hollstein <manfred at s-direktnet.de>
-
-	* Makefile.in: Add --no-split argument to avoid creating files
-	with names longer than 14 characters.
-
-Thu Sep 25 13:13:11 1997  Jason Molenda  (crash at pern.cygnus.com)
-
-	* intro.texi: Add closing ifset.
-
-Mon Sep  1 10:31:32 1997  Angela Marie Thomas (angela at cygnus.com)
-
-	* Install.in: Move setting HOST and TARGET to the beginning
-	of the file for editing convenience.
-
-Mon Sep  1 10:28:37 1997  Angela Marie Thomas (angela at cygnus.com)
-
-	* Install.in.: More friendly options/messages when extracting
-	from a file instead of a tape device.
-
-Tue Jun 17 15:50:23 1997  Angela Marie Thomas (angela at cygnus.com)
-
-	* Install.in: Add /usr/bsd to PATH for Irix (home of compress)
-
-Thu Jun 12 13:47:00 1997  Angela Marie Thomas (angela at cygnus.com)
-
-	* Install.in (show_exec_prefix_msg): fix quoting
-
-Wed Jun  4 15:31:43 1997  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* rebuilding.texi: Removed.
-
-Sat May 24 18:02:20 1997  Angela Marie Thomas (angela at cygnus.com)
-
-	* cross-tools-fix:  Remove host check since it doesn't matter
-	for this case.
-	* Install.in (guess_system): clean up more unused hosts.
-	* Install.in, cross-tools-fix, comp-tools-fix, comp-tools-verify:
-	Hack for host check to not warn the user for certain cases.
-
-Fri May 23 23:46:10 1997  Angela Marie Thomas (angela at cygnus.com)
-
-	* subst-strings: Remove a lot of unused code
-	* Install.in: Remove reference to TAPEdflt, use variables instead of
-	string substitution when able.
-
-Fri Apr 11 17:25:52 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* configure.in: Change file named in AC_INIT to Makefile.in.
-	* configure: Rebuild.
-
-Fri Apr 11 18:12:42 1997  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* Install.in (guess_system): Back out change to INSTALLHOST to
-	call all IRIX systems "mips-sgi-irix4"
-
-	* Makefile.in: Remove references to configure.texi and cfg-paper.texi.
-
-Thu Apr 10 23:26:45 1997  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* srctree.texi, emacs-relnotes.texi, cfg-paper.texi: Remove.
-	* Install.in: Remove Ultrix-specific hacks.
-	Update Cygnus phone numbers.
-	(guess_system): Remove some old systems (Ultrix, OSF1 v1 & 2,
-	m68k-HPUX, m68k SunOS, etc.)
-	(show_gnu_root_msg): Remove.
-	Removed all the remove option code.
-
-Thu Apr 10 23:23:33 1997  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* configure.man, configure.texi: Remote.
-
-Mon Apr  7 18:15:00 1997  Brendan Kehoe <brendan at cygnus.com>
-
-	* Fix the version string for OSF1 4.0 to recognize either
-	V4.* or X4.*
-
-Mon Apr  7 15:34:47 1997  Ian Lance Taylor  <ian at cygnus.com>
-
-	* standards.texi, make-stds.texi: Update to current FSF versions.
-
-Tue Nov 19 15:36:14 1996  Doug Evans  <dje at canuck.cygnus.com>
-
-	* make-rel-sym-tree: New file.
-
-Wed Oct 23 00:34:07 1996  Angela Marie Thomas (angela at cygnus.com)
-
-	* Lots of patches from progressive...
- 	* Install.in: restore DDOPTS for AIX 4.x
- 	* Install.in, subst-strings: add case for DG Aviion
- 	* subst-strings: fix typo in INSTALLdir var setting
- 	* comp-tools-verify: set SHLIB_PATH for shared libs
- 	* Install.in, subst-strings:  add case for solaris2.5
- 	* Install.in: fix regression for hppa1.1 check
- 	* comp-tools-fix: set LD_LIBRARY_PATH
- 	* comp-tools-fix: If fixincludes fixes /usr/include/limits.h,
- 	install it as syslimits.h.
-
-Wed Oct 16 19:20:42 1996  Michael Meissner  <meissner at tiktok.cygnus.com>
-
-	* Install.in (guess_system): Treat powerpc-ibm-aix4.1 the same as
-	rs6000-ibm-aix4.1, since the compiler now uses common mode by
-	default.
-
-Wed Oct  2 15:39:07 1996  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* configure.in (AC_PROG_INSTALL): Added.
-	* Makefile.in (distclean): Remove config.cache.
-
-Wed Oct  2 14:33:58 1996  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* configure.in: Switch to autoconf configure.in.
-	* configure: New.
-	* Makefile.in: Use autoconf-substituted values.
-
-Tue Jun 25 18:56:08 1996  Jason Molenda  (crash at godzilla.cygnus.co.jp)
-
-	* Makefile.in (datadir): Changed to $(prefix)/share.
-
-Fri Mar 29 11:38:01 1996  J.T. Conklin  (jtc at lisa.cygnus.com)
-
-	* configure.man: Changed to be recognized by catman -w on Solaris.
-
-Wed Dec  6 15:40:28 1995  Doug Evans  <dje at canuck.cygnus.com>
-
-	* comp-tools-fix (fixincludes): Define FIXPROTO_DEFINES from
-	.../install-tools/fixproto-defines.
-
-Sun Nov 12 19:31:27 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* comp-tools-verify (verify_cxx_initializers): delete argv,
-	argc declarations, add -static to compile line.
-	(verify_cxx_hello_world): delete argv, argc declarations, add
-	-static to compile line.
-
-Wed Sep 20 13:21:52 1995  Ian Lance Taylor  <ian at cygnus.com>
-
-	* Makefile.in (maintainer-clean): New target, synonym for
-	realclean.
-
-Mon Aug 28 17:25:49 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Install.in (PATH):  add /usr/ucb to $PATH (for SunOS 4.1.x).
-
-Tue Aug 15 21:51:58 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Install.in (guess_system): Match OSF/1 v3.x as the same as
-	v2.x--v2.x binaries are upward compatible.
-
-Tue Aug 15 21:46:54 1995  Jason Molenda  (crash at phydeaux.cygnus.com)
-
-	* Install.in (guess_system): recognize HP 9000/800 systems as the
-	same as HP 9000/700 systems.
-
-Tue Aug  8 13:11:56 1995  Brendan Kehoe  <brendan at lisa.cygnus.com>
-
-	* Install.in: For emacs, run show_emacs_alternate_msg and exit.
-	(show_emacs_alternate_msg): New message saying how emacs can't be
-	installed in an alternate prefix.
-
-Thu Jun  8 00:42:56 1995  Angela Marie Thomas  <angela at cirdan.cygnus.com>
-
-	* subst-strings: change du commands to $BINDIR/. & $SRCDIR/. just
-	in case they are symlinks.
-
-Tue Apr 18 14:23:10 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* cdk-fix: Extracted table of targets that don't need their
-	  headers fixed from gcc's configure script.
-
-	* cdk-fix, cdk-verify: Use ${HOST} instead of ||HOSTstr||
-
-	* cdk-fix, cdk-verify: New files, install script fragments used
-	  for Cygnus Developer's Kit.
-
-	* Install.in (do_mkdir): New function.
-
-	* Install.in: Added support for --with and --without options.
-	  Changed so that tape commands are not run when extracting
-	  from a file.
-	  (do_mt): Changed to take only one argument.
-
-Wed Mar 29 11:16:38 1995  Jason Molenda (crash at phydeaux.cygnus.com)
-
-	* Install.in: catch UNAME==alpha-dec-osf2.x and correct entry for
-	alpha-dec-osf1.x
-
-Fri Jan 27 12:04:29 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* subst-strings (mips-sgi-irix5): New entry in table.
-
-Thu Jan 19 12:15:44 1995  J.T. Conklin  <jtc at rtl.cygnus.com>
-
-	* Install.in: Major rewrite, bundle dependent code (for example,
-	  fixincludes for comp-tools) will be inserted into the Install
-	  script when it is generated.
-
-Tue Jan 17 16:51:32 1995  Ian Lance Taylor  <ian at sanguine.cygnus.com>
-
-	* Makefile.in (Makefile): Rebuild using $(SHELL).
-
-Thu Nov  3 19:30:33 1994  Ken Raeburn  <raeburn at cujo.cygnus.com>
-
-	* Makefile.in (install-info): Depend on info.
-
-Fri Aug 19 16:16:38 1994  Jason Molenda     (crash at phydeaux.cygnus.com)
-
-	* Install.in: set $FIX_HEADER so fixproto can find fix-header.
-
-Fri May  6 16:18:58 1994  Jason Molenda     (crash at sendai.cygnus.com)
-
-	* Makefile.in (install-info): add a semicolon in the if statement.
-
-Fri Apr 29 16:56:07 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* cfg-paper.texi: Update some outdated information.
-
-	* Makefile.in (install-info): Pass file, not directory, as last
-	arg to INSTALL_DATA.
-	(uninstall): New target.
-
-Thu Apr 28 14:42:22 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure.texi: Comment out @smallbook.
-
-	* Makefile.in: Define TEXI2DVI and TEXIDIR, and use the latter.
-	Remove info files in realclean, not clean, per coding standards.
-	Remove TeX output in clean.
-
-Tue Apr 26 17:18:03 1994  Jason Molenda (crash at sendai.cygnus.com)
-
-	* Install.in:  fixincludes output is actually put in fixincludes.log,
-	but echo'ed messages claim it is fixinc.log.  This is the same
-	messages as I logged in March 4 1994, but for some reason we found
-	the change hadn't been done.  I'll have to dig through the logs
-	and find out what I really did do that day. :)
-
-Mon Apr 25 20:28:19 1994  Jason Molenda   (crash at sendai.cygnus.com)
-
-	* Install.in:  use eval to call do_mt() for Ultrix brokenness.
-
-Mon Apr 25 20:00:00 1994  Jason Molenda   (crash at sendai.cygnus.com)
-
-	* Install.in(do_mt): exit with error status 1 if # of parameters
-	!= 3.
-
-Mon Apr 25 19:42:36 1994  Jason Molenda   (crash at sendai.cygnus.com)
-
-	* Install.in:  lose TAPE_FORWARD and TAPE_REWIND, add do_mt()
-	to do all tape movement operations.  Currently untested.  Addresses
-	PR # 4886 from bull.
-
-	* Install.in: add 1994 to the copyright thing.
-
-Fri Apr 22 19:05:13 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* standards.texi: Update from FSF.
-
-Fri Apr 22 15:46:10 1994  Jason Molenda (crash at cygnus.com)
-
-	* Install.in: Add $DDOPTS, has ``bs=124b'' for all systems except
-	AIX (some versions of AIX don't understand bs=124b.  Silly OS).
-
-Mon Apr  4 22:55:05 1994  Jason Molenda (crash at sendai.cygnus.com)
-
-	* Install.in: null out $TOOLS before adding stuff to it
-	non-destructively.
-
-Wed Mar 30 21:45:35 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* standards.texi: Fix typo.
-
-	* configure.texi, configure.man: Document --disable-.
-
-Mon Mar 28 13:22:15 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* standards.texi: Update from FSF.
-
-Sat Mar 26 09:21:44 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* standards.texi, make-stds.texi: Update from FSF.
-
-Fri Mar 25 22:59:45 1994  David J. Mackenzie  (djm at rtl.cygnus.com)
-
-	* configure.texi, configure.man: Document --enable-* options.
-
-Wed Mar 23 23:38:24 1994  Jason Molenda  (crash at sendai.cygnus.com)
-
-	* Install.in: set CPP to be gcc -E for fixincludes.
-
-Wed Mar 23 13:42:48 1994  Jason Molenda  (crash at sendai.cygnus.com)
-
-	* Install.in: set PATH to $PATH:/bin:/usr/bin so we can pick
-	up native tools even if the user doesn't have them in his
-	path.
-
-	* Install.in: ``hppa-1.1-hp-hpux'' -> ``hppa1.1-hp-hpux''.
-
-Tue Mar 15 22:09:20 1994  Jason Molenda  (crash at sendai.cygnus.com)
-
-	* Install.in: TAPE_REWIND and TAPE_FORWARD variables for Unixunaware,
-	added switch statement to detect if system is Unixunaware.
-
-Fri Mar  4 12:10:30 1994  Jason Molenda (crash at sendai.cygnus.com)
-
-	* Install.in:  fixincludes output is actually put in fixincludes.log,
-	but echo'ed messages claim it is fixinc.log.
-
-Wed Nov  3 02:58:02 1993  Jeffrey Osier  (jeffrey at thepub.cygnus.com)
-
-	* subst-strings:  output TEXBUNDLE for more install notes matching
-	* install-texi.in:  PRMS info now exists
-
-Tue Oct 26 16:57:12 1993  K. Richard Pixley  (rich at sendai.cygnus.com)
-
-	* subst-strings: match solaris*.  Also, add default case to catch
-	  and error out for unrecognized systems.
-
-Thu Aug 19 18:21:31 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)
-
-	* Install.in: handle the new fixproto work
-
-Mon Jul 19 12:05:41 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Install.in: remove "MT=tctl" for AIX (not needed, and barely
-	worked anyway)
-
-Mon Jun 14 19:09:22 1993  Jeffrey Osier  (jeffrey at cygnus.com)
-
-	* subst-strings: changed HOST to recognize Solaris for install notes
-
-Thu Jun 10 16:01:25 1993  Jeffrey Osier  (jeffrey at cygnus.com)
-
-	* dos-inst.texi:  new file.
-
-Wed Jun  9 19:23:59 1993  Jeffrey Osier  (jeffrey at rtl.cygnus.com)
-
-	* install-texi.in:	added conditionals (nearly complete)
-				  cleaned up
-				  added support for other releases (not done)
-
-Wed Jun  9 15:53:58 1993  Jim Kingdon  (kingdon at cygnus.com)
-
-	* Makefile.in (install-info): Use INSTALL_DATA.
-	({dist,real}clean): Also delete Makefile and config.status.
-
-Fri Jun  4 17:09:56 1993  Jeffrey Osier  (jeffrey at cygnus.com)
-
-	* subst-strings:  added data for OS_STRING
-
-	* subst-strings:  added support for OS_STRING
-
-Thu Jun  3 00:37:01 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Install.in: pull COPYING and COPYING.LIB off of the tape
-
-Tue Jun  1 16:52:08 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* subst-strings: replace RELEASE_DIR too
-
-Mon Mar 22 23:55:27 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: add installcheck target
-
-Wed Mar 17 02:21:15 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Install.in: fix 'source only' extraction bug where it looked for
-	the src dir under H-<host>/src instead of src; also remove stray
-	reference to EMACSHIBIN
-
-Mon Mar 15 01:25:45 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* make-stds.texi: added 'installcheck' to the standard targets
-
-Tue Mar  9 19:48:28 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* standards.texi: added INFO-DIR-ENTRY, updated version from the FSF
-
-Tue Feb  9 12:40:23 1993  Ian Lance Taylor  (ian at cygnus.com)
-
-	* Makefile.in (standards.info): Added -I$(srcdir) to find
-	make-stds.texi.
-
-Mon Feb  1 16:32:56 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* standards.texi: updated to latest FSF version, which includes:
-
-	* make-stds.texi: new file
-
-Mon Nov 30 01:31:40 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* install-texi.in, relnotes.texi, intro.texi: changed Cygnus phone
-	numbers from the old Palo Alto ones to the new Mtn. View numbers
-
-Mon Nov 16 16:50:43 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* Makefile.in: define $(RM) to "rm -f"
-
-Sun Oct 11 16:05:48 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
-
-	* intro.texi: added INFO-DIR-ENTRY
-

Deleted: branches/binutils/package/etc/add-log.el
===================================================================
--- branches/binutils/package/etc/add-log.el	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/etc/add-log.el	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,573 +0,0 @@
-;;; ============ NOTE WELL! =============
-;;;
-;;; You only need to use this file if you're using a version of Emacs
-;;; prior to 20.1 to work on GDB.  The only difference between this
-;;; and the standard add-log.el provided with 19.34 is that it
-;;; generates dates using the terser format used by Emacs 20.  This is
-;;; the format recommended for use in GDB ChangeLogs.
-;;;
-;;; To use this code, you should create a directory `~/elisp', save the code
-;;; below in `~/elisp/add-log.el', and then put something like this in
-;;; your `~/.emacs' file, to tell Emacs where to find it:
-;;; 
-;;; (setq load-path
-;;;       (cons (expand-file-name "~/elisp")
-;;;             load-path))
-;;; 
-;;; If you want, you can also byte-compile it --- it'll run a little
-;;; faster, and use a little less memory.  (Not that those matter much for
-;;; this file.)  To do that, after you've saved the text as
-;;; ~/elisp/add-log.el, bring it up in Emacs, and type
-;;; 
-;;;     C-u M-x byte-compile-file
-;;;
-;;; --- Jim Blandy
-
-;;; add-log.el --- change log maintenance commands for Emacs
-
-;; Copyright (C) 1985, 1986, 1988, 1993, 1994 Free Software Foundation, Inc.
-
-;; Keywords: maint
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs 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.
-
-;; GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; This facility is documented in the Emacs Manual.
-
-;;; Code:
-
-(defvar change-log-default-name nil
-  "*Name of a change log file for \\[add-change-log-entry].")
-
-(defvar add-log-current-defun-function nil
-  "\
-*If non-nil, function to guess name of current function from surrounding text.
-\\[add-change-log-entry] calls this function (if nil, `add-log-current-defun'
-instead) with no arguments.  It returns a string or nil if it cannot guess.")
-
-;;;###autoload
-(defvar add-log-full-name nil
-  "*Full name of user, for inclusion in ChangeLog daily headers.
-This defaults to the value returned by the `user-full-name' function.")
-
-;;;###autoload
-(defvar add-log-mailing-address nil
-  "*Electronic mail address of user, for inclusion in ChangeLog daily headers.
-This defaults to the value of `user-mail-address'.")
-
-(defvar change-log-font-lock-keywords
-  '(("^[SMTWF].+" . font-lock-function-name-face)	; Date line.
-    ("^\t\\* \\([^ :\n]+\\)" 1 font-lock-comment-face)	; File name.
-    ("(\\([^)\n]+\\)):" 1 font-lock-keyword-face))	; Function name.
-  "Additional expressions to highlight in Change Log mode.")
-
-(defvar change-log-mode-map nil
-  "Keymap for Change Log major mode.")
-(if change-log-mode-map
-    nil
-  (setq change-log-mode-map (make-sparse-keymap))
-  (define-key change-log-mode-map "\M-q" 'change-log-fill-paragraph))
-
-(defun change-log-name ()
-  (or change-log-default-name
-      (if (eq system-type 'vax-vms) 
-	  "$CHANGE_LOG$.TXT" 
-	(if (or (eq system-type 'ms-dos) (eq system-type 'windows-nt))
-	    "changelo"
-	  "ChangeLog"))))
-
-;;;###autoload
-(defun prompt-for-change-log-name ()
-  "Prompt for a change log name."
-  (let* ((default (change-log-name))
-	 (name (expand-file-name
-		(read-file-name (format "Log file (default %s): " default)
-				nil default))))
-    ;; Handle something that is syntactically a directory name.
-    ;; Look for ChangeLog or whatever in that directory.
-    (if (string= (file-name-nondirectory name) "")
-	(expand-file-name (file-name-nondirectory default)
-			  name)
-      ;; Handle specifying a file that is a directory.
-      (if (file-directory-p name)
-	  (expand-file-name (file-name-nondirectory default)
-			    (file-name-as-directory name))
-	name))))
-
-;;;###autoload
-(defun find-change-log (&optional file-name)
-  "Find a change log file for \\[add-change-log-entry] and return the name.
-
-Optional arg FILE-NAME specifies the file to use.
-If FILE-NAME is nil, use the value of `change-log-default-name'.
-If 'change-log-default-name' is nil, behave as though it were 'ChangeLog'
-\(or whatever we use on this operating system).
-
-If 'change-log-default-name' contains a leading directory component, then
-simply find it in the current directory.  Otherwise, search in the current 
-directory and its successive parents for a file so named.
-
-Once a file is found, `change-log-default-name' is set locally in the
-current buffer to the complete file name."
-  ;; If user specified a file name or if this buffer knows which one to use,
-  ;; just use that.
-  (or file-name
-      (setq file-name (and change-log-default-name
-			   (file-name-directory change-log-default-name)
-			   change-log-default-name))
-      (progn
-	;; Chase links in the source file
-	;; and use the change log in the dir where it points.
-	(setq file-name (or (and buffer-file-name
-				 (file-name-directory
-				  (file-chase-links buffer-file-name)))
-			    default-directory))
-	(if (file-directory-p file-name)
-	    (setq file-name (expand-file-name (change-log-name) file-name)))
-	;; Chase links before visiting the file.
-	;; This makes it easier to use a single change log file
-	;; for several related directories.
-	(setq file-name (file-chase-links file-name))
-	(setq file-name (expand-file-name file-name))
-	;; Move up in the dir hierarchy till we find a change log file.
-	(let ((file1 file-name)
-	      parent-dir)
-	  (while (and (not (or (get-file-buffer file1) (file-exists-p file1)))
-		      (progn (setq parent-dir
-				   (file-name-directory
-				    (directory-file-name
-				     (file-name-directory file1))))
-			     ;; Give up if we are already at the root dir.
-			     (not (string= (file-name-directory file1)
-					   parent-dir))))
-	    ;; Move up to the parent dir and try again.
-	    (setq file1 (expand-file-name 
-			 (file-name-nondirectory (change-log-name))
-			 parent-dir)))
-	  ;; If we found a change log in a parent, use that.
-	  (if (or (get-file-buffer file1) (file-exists-p file1))
-	      (setq file-name file1)))))
-  ;; Make a local variable in this buffer so we needn't search again.
-  (set (make-local-variable 'change-log-default-name) file-name)
-  file-name)
-
-;;;###autoload
-(defun add-change-log-entry (&optional whoami file-name other-window new-entry)
-  "Find change log file and add an entry for today.
-Optional arg (interactive prefix) non-nil means prompt for user name and site.
-Second arg is file name of change log.  If nil, uses `change-log-default-name'.
-Third arg OTHER-WINDOW non-nil means visit in other window.
-Fourth arg NEW-ENTRY non-nil means always create a new entry at the front;
-never append to an existing entry."
-  (interactive (list current-prefix-arg
-		     (prompt-for-change-log-name)))
-  (or add-log-full-name
-      (setq add-log-full-name (user-full-name)))
-  (or add-log-mailing-address
-      (setq add-log-mailing-address user-mail-address))
-  (if whoami
-      (progn
-	(setq add-log-full-name (read-input "Full name: " add-log-full-name))
-	 ;; Note that some sites have room and phone number fields in
-	 ;; full name which look silly when inserted.  Rather than do
-	 ;; anything about that here, let user give prefix argument so that
-	 ;; s/he can edit the full name field in prompter if s/he wants.
-	(setq add-log-mailing-address
-	      (read-input "Mailing address: " add-log-mailing-address))))
-  (let ((defun (funcall (or add-log-current-defun-function
-			    'add-log-current-defun)))
-	paragraph-end entry)
-
-    (setq file-name (expand-file-name (find-change-log file-name)))
-
-    ;; Set ENTRY to the file name to use in the new entry.
-    (and buffer-file-name
-	 ;; Never want to add a change log entry for the ChangeLog file itself.
-	 (not (string= buffer-file-name file-name))
-	 (setq entry (if (string-match
-			  (concat "^" (regexp-quote (file-name-directory
-						     file-name)))
-			  buffer-file-name)
-			 (substring buffer-file-name (match-end 0))
-		       (file-name-nondirectory buffer-file-name))))
-
-    (if (and other-window (not (equal file-name buffer-file-name)))
-	(find-file-other-window file-name)
-      (find-file file-name))
-    (or (eq major-mode 'change-log-mode)
-	(change-log-mode))
-    (undo-boundary)
-    (goto-char (point-min))
-    (let ((heading (format "%s  %s  <%s>"
-			   (format-time-string "%Y-%m-%d")
-			   add-log-full-name
-			   add-log-mailing-address)))
-      (if (looking-at (regexp-quote heading))
-	  (forward-line 1)
-	(insert heading "\n\n")))
-
-    ;; Search only within the first paragraph.
-    (if (looking-at "\n*[^\n* \t]")
-	(skip-chars-forward "\n")
-      (forward-paragraph 1))
-    (setq paragraph-end (point))
-    (goto-char (point-min))
-
-    ;; Now insert the new line for this entry.
-    (cond ((re-search-forward "^\\s *\\*\\s *$" paragraph-end t)
-	   ;; Put this file name into the existing empty entry.
-	   (if entry
-	       (insert entry)))
-	  ((and (not new-entry)
-		(let (case-fold-search)
-		  (re-search-forward
-		   (concat (regexp-quote (concat "* " entry))
-			   ;; Don't accept `foo.bar' when
-			   ;; looking for `foo':
-			   "\\(\\s \\|[(),:]\\)")
-		   paragraph-end t)))
-	   ;; Add to the existing entry for the same file.
-	   (re-search-forward "^\\s *$\\|^\\s \\*")
-	   (goto-char (match-beginning 0))
-	   ;; Delete excess empty lines; make just 2.
-	   (while (and (not (eobp)) (looking-at "^\\s *$"))
-	     (delete-region (point) (save-excursion (forward-line 1) (point))))
-	   (insert "\n\n")
-	   (forward-line -2)
-	   (indent-relative-maybe))
-	  (t
-	   ;; Make a new entry.
-	   (forward-line 1)
-	   (while (looking-at "\\sW")
-	     (forward-line 1))
-	   (while (and (not (eobp)) (looking-at "^\\s *$"))
-	     (delete-region (point) (save-excursion (forward-line 1) (point))))
-	   (insert "\n\n\n")
-	   (forward-line -2)
-	   (indent-to left-margin)
-	   (insert "* " (or entry ""))))
-    ;; Now insert the function name, if we have one.
-    ;; Point is at the entry for this file,
-    ;; either at the end of the line or at the first blank line.
-    (if defun
-	(progn
-	  ;; Make it easy to get rid of the function name.
-	  (undo-boundary)
-	  (insert (if (save-excursion
-			(beginning-of-line 1)
-			(looking-at "\\s *$")) 
-		      ""
-		    " ")
-		  "(" defun "): "))
-      ;; No function name, so put in a colon unless we have just a star.
-      (if (not (save-excursion
-		 (beginning-of-line 1)
-		 (looking-at "\\s *\\(\\*\\s *\\)?$")))
-	  (insert ": ")))))
-
-;;;###autoload
-(defun add-change-log-entry-other-window (&optional whoami file-name)
-  "Find change log file in other window and add an entry for today.
-Optional arg (interactive prefix) non-nil means prompt for user name and site.
-Second arg is file name of change log.  \
-If nil, uses `change-log-default-name'."
-  (interactive (if current-prefix-arg
-		   (list current-prefix-arg
-			 (prompt-for-change-log-name))))
-  (add-change-log-entry whoami file-name t))
-;;;###autoload (define-key ctl-x-4-map "a" 'add-change-log-entry-other-window)
-
-;;;###autoload
-(defun change-log-mode ()
-  "Major mode for editing change logs; like Indented Text Mode.
-Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74.
-New log entries are usually made with \\[add-change-log-entry] or \\[add-change-log-entry-other-window].
-Each entry behaves as a paragraph, and the entries for one day as a page.
-Runs `change-log-mode-hook'."
-  (interactive)
-  (kill-all-local-variables)
-  (indented-text-mode)
-  (setq major-mode 'change-log-mode
-	mode-name "Change Log"
-	left-margin 8
-	fill-column 74
-    indent-tabs-mode t
-    tab-width 8)
-  (use-local-map change-log-mode-map)
-  ;; Let each entry behave as one paragraph:
-  ;; We really do want "^" in paragraph-start below: it is only the lines that
-  ;; begin at column 0 (despite the left-margin of 8) that we are looking for.
-  (set (make-local-variable 'paragraph-start) "\\s *$\\|\f\\|^\\sw")
-  (set (make-local-variable 'paragraph-separate) "\\s *$\\|\f\\|^\\sw")
-  ;; Let all entries for one day behave as one page.
-  ;; Match null string on the date-line so that the date-line
-  ;; is grouped with what follows.
-  (set (make-local-variable 'page-delimiter) "^\\<\\|^\f")
-  (set (make-local-variable 'version-control) 'never)
-  (set (make-local-variable 'adaptive-fill-regexp) "\\s *")
-  (set (make-local-variable 'font-lock-defaults)
-       '(change-log-font-lock-keywords t))
-  (run-hooks 'change-log-mode-hook))
-
-;; It might be nice to have a general feature to replace this.  The idea I
-;; have is a variable giving a regexp matching text which should not be
-;; moved from bol by filling.  change-log-mode would set this to "^\\s *\\s(".
-;; But I don't feel up to implementing that today.
-(defun change-log-fill-paragraph (&optional justify)
-  "Fill the paragraph, but preserve open parentheses at beginning of lines.
-Prefix arg means justify as well."
-  (interactive "P")
-  (let ((end (save-excursion (forward-paragraph) (point)))
-	(beg (save-excursion (backward-paragraph)(point)))
-	(paragraph-start (concat paragraph-start "\\|\\s *\\s(")))
-    (fill-region beg end justify)))
-
-(defvar add-log-current-defun-header-regexp
-  "^\\([A-Z][A-Z_ ]*[A-Z_]\\|[-_a-zA-Z]+\\)[ \t]*[:=]"
-  "*Heuristic regexp used by `add-log-current-defun' for unknown major modes.")
-
-;;;###autoload
-(defun add-log-current-defun ()
-  "Return name of function definition point is in, or nil.
-
-Understands C, Lisp, LaTeX (\"functions\" are chapters, sections, ...),
-Texinfo (@node titles), Perl, and Fortran.
-
-Other modes are handled by a heuristic that looks in the 10K before
-point for uppercase headings starting in the first column or
-identifiers followed by `:' or `=', see variable
-`add-log-current-defun-header-regexp'.
-
-Has a preference of looking backwards."
-  (condition-case nil
-      (save-excursion
-	(let ((location (point)))
-	  (cond ((memq major-mode '(emacs-lisp-mode lisp-mode scheme-mode
-						    lisp-interaction-mode))
-		 ;; If we are now precisely at the beginning of a defun,
-		 ;; make sure beginning-of-defun finds that one
-		 ;; rather than the previous one.
-		 (or (eobp) (forward-char 1))
-		 (beginning-of-defun)
-		 ;; Make sure we are really inside the defun found, not after it.
-		 (if (and (looking-at "\\s(")
-			  (progn (end-of-defun)
-				 (< location (point)))
-			  (progn (forward-sexp -1)
-				 (>= location (point))))
-		     (progn
-		       (if (looking-at "\\s(")
-			   (forward-char 1))
-		       (forward-sexp 1)
-		       (skip-chars-forward " '")
-		       (buffer-substring (point)
-					 (progn (forward-sexp 1) (point))))))
-		((and (memq major-mode '(c-mode c++-mode c++-c-mode objc-mode))
-		      (save-excursion (beginning-of-line)
-				      ;; Use eq instead of = here to avoid
-				      ;; error when at bob and char-after
-				      ;; returns nil.
-				      (while (eq (char-after (- (point) 2)) ?\\)
-					(forward-line -1))
-				      (looking-at "[ \t]*#[ \t]*define[ \t]")))
-		 ;; Handle a C macro definition.
-		 (beginning-of-line)
-		 (while (eq (char-after (- (point) 2)) ?\\) ;not =; note above
-		   (forward-line -1))
-		 (search-forward "define")
-		 (skip-chars-forward " \t")
-		 (buffer-substring (point)
-				   (progn (forward-sexp 1) (point))))
-		((memq major-mode '(c-mode c++-mode c++-c-mode objc-mode))
-		 (beginning-of-line)
-		 ;; See if we are in the beginning part of a function,
-		 ;; before the open brace.  If so, advance forward.
-		 (while (not (looking-at "{\\|\\(\\s *$\\)"))
-		   (forward-line 1))
-		 (or (eobp)
-		     (forward-char 1))
-		 (beginning-of-defun)
-		 (if (progn (end-of-defun)
-			    (< location (point)))
-		     (progn
-		       (backward-sexp 1)
-		       (let (beg tem)
-
-			 (forward-line -1)
-			 ;; Skip back over typedefs of arglist.
-			 (while (and (not (bobp))
-				     (looking-at "[ \t\n]"))
-			   (forward-line -1))
-			 ;; See if this is using the DEFUN macro used in Emacs,
-			 ;; or the DEFUN macro used by the C library.
-			 (if (condition-case nil
-				 (and (save-excursion
-					(end-of-line)
-					(while (= (preceding-char) ?\\)
-					  (end-of-line 2))
-					(backward-sexp 1)
-					(beginning-of-line)
-					(setq tem (point))
-					(looking-at "DEFUN\\b"))
-				      (>= location tem))
-			       (error nil))
-			     (progn
-			       (goto-char tem)
-			       (down-list 1)
-			       (if (= (char-after (point)) ?\")
-				   (progn
-				     (forward-sexp 1)
-				     (skip-chars-forward " ,")))
-			       (buffer-substring (point)
-						 (progn (forward-sexp 1) (point))))
-                           (if (looking-at "^[+-]")
-                               (get-method-definition)
-                             ;; Ordinary C function syntax.
-                             (setq beg (point))
-                             (if (and (condition-case nil
-					  ;; Protect against "Unbalanced parens" error.
-					  (progn
-					    (down-list 1) ; into arglist
-					    (backward-up-list 1)
-					    (skip-chars-backward " \t")
-					    t)
-					(error nil))
-				      ;; Verify initial pos was after
-				      ;; real start of function.
-				      (save-excursion
-					(goto-char beg)
-					;; For this purpose, include the line
-					;; that has the decl keywords.  This
-					;; may also include some of the
-					;; comments before the function.
-					(while (and (not (bobp))
-						    (save-excursion
-						      (forward-line -1)
-						      (looking-at "[^\n\f]")))
-					  (forward-line -1))
-					(>= location (point)))
-                                          ;; Consistency check: going down and up
-                                          ;; shouldn't take us back before BEG.
-                                          (> (point) beg))
-				 (let (end middle)
-				   ;; Don't include any final newline
-				   ;; in the name we use.
-				   (if (= (preceding-char) ?\n)
-				       (forward-char -1))
-				   (setq end (point))
-				   (backward-sexp 1)
-				   ;; Now find the right beginning of the name.
-				   ;; Include certain keywords if they
-				   ;; precede the name.
-				   (setq middle (point))
-				   (forward-word -1)
-				   ;; Ignore these subparts of a class decl
-				   ;; and move back to the class name itself.
-				   (while (looking-at "public \\|private ")
-				     (skip-chars-backward " \t:")
-				     (setq end (point))
-				     (backward-sexp 1)
-				     (setq middle (point))
-				     (forward-word -1))
-				   (and (bolp)
-					(looking-at "struct \\|union \\|class ")
-					(setq middle (point)))
-				   (buffer-substring middle end)))))))))
-		((memq major-mode
-		       '(TeX-mode plain-TeX-mode LaTeX-mode;; tex-mode.el
-				  plain-tex-mode latex-mode;; cmutex.el
-				  ))
-		 (if (re-search-backward
-		      "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)" nil t)
-		     (progn
-		       (goto-char (match-beginning 0))
-		       (buffer-substring (1+ (point));; without initial backslash
-					 (progn
-					   (end-of-line)
-					   (point))))))
-		((eq major-mode 'texinfo-mode)
-		 (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
-		     (buffer-substring (match-beginning 1)
-				       (match-end 1))))
-		((eq major-mode 'perl-mode)
-		 (if (re-search-backward "^sub[ \t]+\\([^ \t\n]+\\)" nil t)
-		     (buffer-substring (match-beginning 1)
-				       (match-end 1))))
-                ((eq major-mode 'fortran-mode)
-                 ;; must be inside function body for this to work
-                 (beginning-of-fortran-subprogram)
-                 (let ((case-fold-search t)) ; case-insensitive
-                   ;; search for fortran subprogram start
-                   (if (re-search-forward
-			 "^[ \t]*\\(program\\|subroutine\\|function\
-\\|[ \ta-z0-9*]*[ \t]+function\\)"
-			 nil t)
-                       (progn
-                         ;; move to EOL or before first left paren
-                         (if (re-search-forward "[(\n]" nil t)
-			     (progn (forward-char -1)
-				    (skip-chars-backward " \t"))
-			   (end-of-line))
-			 ;; Use the name preceding that.
-                         (buffer-substring (point)
-                                           (progn (forward-sexp -1)
-                                                  (point)))))))
-		(t
-		 ;; If all else fails, try heuristics
-		 (let (case-fold-search)
-		   (end-of-line)
-		   (if (re-search-backward add-log-current-defun-header-regexp
-					   (- (point) 10000)
-					   t)
-		       (buffer-substring (match-beginning 1)
-					 (match-end 1))))))))
-    (error nil)))
-
-(defvar get-method-definition-md)
-
-;; Subroutine used within get-method-definition.
-;; Add the last match in the buffer to the end of `md',
-;; followed by the string END; move to the end of that match.
-(defun get-method-definition-1 (end)
-  (setq get-method-definition-md
-	(concat get-method-definition-md 
-		(buffer-substring (match-beginning 1) (match-end 1))
-		end))
-  (goto-char (match-end 0)))
-
-;; For objective C, return the method name if we are in a method.
-(defun get-method-definition ()
-  (let ((get-method-definition-md "["))
-    (save-excursion
-      (if (re-search-backward "^@implementation\\s-*\\([A-Za-z_]*\\)" nil t)
-	  (get-method-definition-1 " ")))
-    (save-excursion
-      (cond
-       ((re-search-forward "^\\([-+]\\)[ \t\n\f\r]*\\(([^)]*)\\)?\\s-*" nil t)
-	(get-method-definition-1 "")
-	(while (not (looking-at "[{;]"))
-	  (looking-at
-	   "\\([A-Za-z_]*:?\\)\\s-*\\(([^)]*)\\)?[A-Za-z_]*[ \t\n\f\r]*")
-	  (get-method-definition-1 ""))
-	(concat get-method-definition-md "]"))))))
-
-
-(provide 'add-log)
-
-;;; add-log.el ends here

Deleted: branches/binutils/package/etc/add-log.vi
===================================================================
--- branches/binutils/package/etc/add-log.vi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/etc/add-log.vi	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,11 +0,0 @@
-Here is a vi macro to create entries in the recommended format for
-GDB's ChangeLogs.
-
-map  1GO:r !date '+\%Y-\%m-\%d'2GA  Jason Molenda  (:r !whoamikJxA@:r !hostnameA)kJxkddjO
	* 
k$
-
-It contains control and escape sequences, so don't just cut and paste it.
-You'll need to change the "Jason Molenda" bit, of course. :-)  Put this
-in your $HOME/.exrc and when you type control-X in move-around-mode,
-you'll have a changelog template inserted.
-
---- Jason Molenda

Added: branches/binutils/package/etc/configure.info
===================================================================
--- branches/binutils/package/etc/configure.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/etc/configure.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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).
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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'
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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
+
+
+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'.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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*'.
+
+
+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
+
+
+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.
+
+
+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.
+
+
+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::.
+
+
+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'.
+
+
+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'.
+
+
+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
+
+
+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.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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.
+
+
+File: configure.info,  Node: Index,  Prev: FAQ,  Up: Top
+
+Index
+*****
+
+ [index ]
+* 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)
+
+
+
+Tag Table:
+Node: Top978
+Node: Introduction1506
+Node: Goals2588
+Node: Tools3312
+Node: History4306
+Node: Building7304
+Node: Getting Started10567
+Node: Write configure.in11080
+Node: Write Makefile.am18331
+Node: Write acconfig.h21508
+Node: Generate files23045
+Node: Getting Started Example25011
+Node: Getting Started Example 125766
+Node: Getting Started Example 227687
+Node: Getting Started Example 330682
+Node: Generate Files in Example33046
+Node: Files34136
+Node: Developer Files34747
+Node: Developer Files Picture35127
+Node: Written Developer Files36415
+Node: Generated Developer Files38967
+Node: Build Files42111
+Node: Build Files Picture42772
+Node: Build Files Description43536
+Node: Support Files45542
+Node: Configuration Names48424
+Node: Configuration Name Definition48924
+Node: Using Configuration Names51247
+Node: Cross Compilation Tools53217
+Node: Cross Compilation Concepts53908
+Node: Host and Target54876
+Node: Using the Host Type56377
+Node: Specifying the Target57726
+Node: Using the Target Type58515
+Node: Cross Tools in the Cygnus Tree61946
+Node: Host and Target Libraries63003
+Node: Target Library Configure Scripts66752
+Node: Make Targets in Cygnus Tree69844
+Node: Target libiberty71192
+Node: Canadian Cross72579
+Node: Canadian Cross Example73420
+Node: Canadian Cross Concepts74539
+Node: Build Cross Host Tools76051
+Node: Build and Host Options77003
+Node: CCross not in Cygnus Tree78789
+Node: CCross in Cygnus Tree79767
+Node: Standard Cygnus CCross80188
+Node: Cross Cygnus CCross81552
+Node: Supporting Canadian Cross84352
+Node: CCross in Configure84967
+Node: CCross in Make88135
+Node: Cygnus Configure89738
+Node: Cygnus Configure Basics90573
+Node: Cygnus Configure in C++ Libraries95251
+Node: Multilibs96258
+Node: Multilibs in gcc97303
+Node: Multilibs in Target Libraries98381
+Node: FAQ102572
+Node: Index106672
+
+End Tag Table

Added: branches/binutils/package/etc/standards.info
===================================================================
--- branches/binutils/package/etc/standards.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/etc/standards.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -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".
+
+
+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::
+
+
+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 at 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.
+
+
+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
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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
+
+
+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
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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 at 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 at 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'.
+
+
+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.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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 */
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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");
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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::
+
+
+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.
+
+
+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 at 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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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.
+
+
+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.
+
+
+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'.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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.
+
+
+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
+
+
+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.
+
+
+File: standards.info,  Node: Index,  Prev: Copying This Manual,  Up: Top
+
+Index
+*****
+
+ [index ]
+* 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)
+
+
+
+Tag Table:
+Node: Top696
+Node: Preface1396
+Node: Legal Issues3616
+Node: Reading Non-Free Code4080
+Node: Contributions5808
+Node: Trademarks7962
+Node: Design Advice9025
+Node: Source Language9609
+Node: Compatibility11621
+Node: Using Extensions13249
+Node: Standard C14825
+Node: Conditional Compilation17228
+Node: Program Behavior18527
+Node: Semantics19446
+Node: Libraries24139
+Node: Errors25384
+Node: User Interfaces27165
+Node: Graphical Interfaces28770
+Node: Command-Line Interfaces29805
+Node: Option Table35876
+Node: Memory Usage50885
+Node: File Usage51910
+Node: Writing C52658
+Node: Formatting53508
+Node: Comments57571
+Node: Syntactic Conventions60873
+Node: Names64285
+Node: System Portability66494
+Node: CPU Portability68879
+Node: System Functions72135
+Node: Internationalization77332
+Node: Mmap80485
+Node: Documentation81195
+Node: GNU Manuals82300
+Node: Doc Strings and Manuals87357
+Node: Manual Structure Details88910
+Node: License for Manuals90328
+Node: Manual Credits91302
+Node: Printed Manuals91695
+Node: NEWS File92381
+Node: Change Logs93059
+Node: Change Log Concepts93813
+Node: Style of Change Logs95677
+Node: Simple Changes97712
+Node: Conditional Changes98956
+Node: Indicating the Part Changed100378
+Node: Man Pages100905
+Node: Reading other Manuals102529
+Node: Managing Releases103320
+Node: Configuration104083
+Node: Makefile Conventions110988
+Node: Makefile Basics111794
+Node: Utilities in Makefiles114968
+Node: Command Variables117113
+Node: Directory Variables120690
+Node: Standard Targets131584
+Ref: Standard Targets-Footnote-1142824
+Node: Install Command Categories142924
+Node: Releases147506
+Node: References151594
+Node: Copying This Manual153879
+Node: GNU Free Documentation License154115
+Node: Index173816
+
+End Tag Table

Modified: branches/binutils/package/etc/texi2pod.pl
===================================================================
--- branches/binutils/package/etc/texi2pod.pl	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/etc/texi2pod.pl	2006-12-31 16:27:59 UTC (rev 19)
@@ -36,6 +36,7 @@
 $fnno = 1;
 $inf = "";
 $ibase = "";
+ at ipath = ();
 
 while ($_ = shift) {
     if (/^-D(.*)$/) {
@@ -51,6 +52,13 @@
 	die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
 	    unless $flag =~ /^[a-zA-Z0-9_-]+$/;
 	$defs{$flag} = $value;
+    } elsif (/^-I(.*)$/) {
+	if ($1 ne "") {
+	    $flag = $1;
+	} else {
+	    $flag = shift;
+	}
+        push (@ipath, $flag);
     } elsif (/^-/) {
 	usage();
     } else {
@@ -229,10 +237,14 @@
 	$inf = gensym();
 	$file = postprocess($1);
 
-	# Try cwd and $ibase.
-	open($inf, "<" . $file) 
-	    or open($inf, "<" . $ibase . "/" . $file)
-		or die "cannot open $file or $ibase/$file: $!\n";
+	# Try cwd and $ibase, then explicit -I paths.
+	$done = 0;
+	foreach $path ("", $ibase, @ipath) {
+	    $mypath = $file;
+	    $mypath = $path . "/" . $mypath if ($path ne "");
+	    open($inf, "<" . $mypath) and ($done = 1, last);
+	}
+	die "cannot find $file" if !$done;
 	next;
     };
 

Modified: branches/binutils/package/gas/ChangeLog
===================================================================
--- branches/binutils/package/gas/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,107 @@
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-02  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* doc/Makefile.am (TEXI2DVI): Define.
+	* doc/Makefile.in: Regenerate.
+	* doc/c-arc.texi: Fix typo.
+
+2006-05-30  Nick Clifton  <nickc at redhat.com>
+
+	* po/es.po: Updated Spanish translation.
+
+2006-05-25  Nathan Sidwell  <nathan at codesourcery.com>
+
+	* gas/config/tc-m68k.c (m68k_init_arch): Move checking of
+	cfloat/m68881 to correct architecture before using it.
+
+2006-05-16  Nick Clifton  <nickc at redhat.com>
+
+	* Import these patches from the mainline:
+
+	2006-05-16  Bjoern Haase  <bjoern.m.haase at web.de>
+
+        * config/tc-avr.h (TC_VALIDATE_FIX): Allow fixups for immediate
+	constant values.
+
+	2006-05-05  Bjoern Haase  <bjoern.m.haase at web.de>
+
+	* gas/config/tc-avr.h (TC_VALIDATE_FIX): Define.  Disable fixups
+	for PMEM related expressions.
+
+2006-05-11  Thiemo Seufer  <ths at mips.com>
+
+	* config/tc-mips.c (append_insn): Don't check the range of j or
+	jal addresses.
+
+2006-05-10  Alan Modra  <amodra at bigpond.net.au>
+
+	* dwarf2dbg.c (get_line_subseg): Attach new struct line_seg to end
+	of list rather than beginning.
+
+2006-05-10  Alan Modra  <amodra at bigpond.net.au>
+
+	* write.c (relax_segment): Add pass count arg.  Don't error on
+	negative org/space on first two passes.
+	(relax_seg_info): New struct.
+	(relax_seg, write_object_file): Adjust.
+	* write.h (relax_segment): Update prototype.
+
+2006-05-02  Joseph Myers  <joseph at codesourcery.com>
+
+	* config/tc-arm.c (do_iwmmxt_wldstbh): Don't multiply offset by 4
+	here.
+	(md_apply_fix3): Multiply offset by 4 here for
+	BFD_RELOC_ARM_CP_OFF_IMM_S2 and BFD_RELOC_ARM_T32_CP_OFF_IMM_S2.
+
+2006-05-02  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* doc/Makefile.am (AM_MAKEINFOFLAGS): New.
+	(TEXI2POD): Use AM_MAKEINFOFLAGS.
+	(asconfig.texi): Don't set top_srcdir.
+	* doc/as.texinfo: Don't use top_srcdir.
+	* aclocal.m4, Makefile.in, doc/Makefile.in: Regenerated.
+
+2006-05-02  Paul Brook  <paul at codesourcery.com>
+
+	* config/tc-arm.c (arm_optimize_expr): New function.
+	* config/tc-arm.h (md_optimize_expr): Define
+	(arm_optimize_expr): Add prototype.
+	(TC_FORCE_RELOCATION_SUB_SAME): Define.
+
+2006-05-01  James Lemke  <jwlemke at wasabisystems.com>
+
+	* subsegs.c (subseg_set_rest): Always set seginfp->frchainP if NULL.
+
+2006-04-25  Bob Wilson  <bob.wilson at acm.org>
+
+	* config/xtensa-relax.c (widen_spec_list): Use new "WIDE.<opcode>"
+	syntax instead of hardcoded opcodes with ".w18" suffixes.
+	(wide_branch_opcode): New.
+	(build_transition): Use it to check for wide branch opcodes with
+	either ".w18" or ".w15" suffixes.
+
+2006-04-25  Bob Wilson  <bob.wilson at acm.org>
+
+	* config/tc-xtensa.c (xtensa_create_literal_symbol,
+	xg_assemble_literal, xg_assemble_literal_space): Do not set the
+	frag's is_literal flag.
+
+2006-04-25  Bob Wilson  <bob.wilson at acm.org>
+
+	* config/xtensa-relax.c (XCHAL_HAVE_WIDE_BRANCHES): Provide default.
+
+2006-04-16  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* po/POTFILES.in: Regenerated.
+
+2006-04-14  Sterling Augustine  <sterling at tensilica.com>
+
+	* config/tc-xtensa.c (emit_single_op): Do not relax MOVI
+	instructions when such transformations have been disabled.
+
 2006-04-10  Sterling Augustine  <sterling at tensilica.com>
 
 	* config/tc-xtensa.c (xg_assemble_vliw_tokens): Record loop target

Modified: branches/binutils/package/gas/Makefile.in
===================================================================
--- branches/binutils/package/gas/Makefile.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/Makefile.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -15,8 +15,6 @@
 @SET_MAKE@
 
 
-SOURCES = $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(itbl_test_SOURCES)
-
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@

Modified: branches/binutils/package/gas/aclocal.m4
===================================================================
--- branches/binutils/package/gas/aclocal.m4	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/aclocal.m4	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005  Free Software Foundation, Inc.
@@ -28,7 +28,7 @@
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.9.5])])
+	 [AM_AUTOMAKE_VERSION([1.9.6])])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 

Added: branches/binutils/package/gas/bfin-lex.c
===================================================================
--- branches/binutils/package/gas/bfin-lex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/bfin-lex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3368 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/gas/Attic/bfin-lex.c,v 1.1.2.1 2006/04/16 18:36:43 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 238
+#define YY_END_OF_BUFFER 239
+static yyconst short int yy_accept[559] =
+    {   0,
+        0,    0,    0,    0,  239,  237,  235,  235,  220,  233,
+      219,  218,  200,  201,  216,  214,  211,  210,  203,  232,
+      232,  202,  221,  199,  195,  237,  224,  233,  148,  233,
+      233,  233,  233,  233,  233,  233,  233,  233,   70,  233,
+      233,  233,   54,   19,   18,  233,   12,   10,    8,    7,
+      189,  188,  187,  233,  185,  183,  233,  233,  233,  233,
+      233,  233,  217,  215,  213,  212,    0,  209,  204,    0,
+        0,    0,  232,  234,    0,  232,  234,  198,  196,  222,
+      194,  193,  178,  175,  233,  233,  233,  150,  151,  233,
+      233,  149,    0,  147,  233,  140,  233,  233,  136,  233,
+
+      125,  233,  123,  233,  233,  233,  233,  233,  233,  233,
+      103,  102,  101,  233,  100,   99,  233,  233,   97,  233,
+       95,   94,   93,   91,  233,   85,  233,  233,   77,   86,
+      233,   71,   69,  233,  233,  233,  233,   65,  233,  233,
+      233,   59,  233,   56,  233,  233,   53,  233,  233,  233,
+      233,  233,  233,  233,  233,  233,  233,  233,  233,   25,
+      233,  233,  233,  233,  233,   15,   14,  233,  233,  159,
+      233,  186,  233,  184,  223,  233,  233,   95,  233,  233,
+      233,  205,  207,  206,  208,    0,    0,  232,  232,  232,
+      232,  197,  191,  192,  233,  233,  171,  152,  153,  233,
+
+      233,  162,  163,  233,  154,  156,  232,  233,  233,  233,
+      233,  233,  233,  124,  233,  233,  119,  233,  233,  233,
+      233,  233,  233,  233,  233,  233,  179,   98,  233,  233,
+      233,  233,  233,  233,   80,   83,   78,   81,  233,  233,
+      233,   79,   82,  233,   67,   66,  233,   63,   62,  233,
+      233,  233,  233,  233,  233,  233,  233,  233,  233,   44,
+       39,   38,   37,   36,   35,   34,  233,   32,   31,  233,
+      233,  233,  233,  233,  233,  233,   21,  233,  233,   16,
+       13,  233,    9,  233,  233,  233,  233,  233,  233,  233,
+      236,  190,  170,  168,  177,  176,  169,  167,  174,  173,
+
+      233,  233,  233,  155,  157,  146,  233,  233,  233,  233,
+      139,  138,  233,  127,  233,  233,  118,  233,  233,  233,
+      233,  111,  110,  233,  233,  233,  233,  233,  233,  233,
+      105,  104,  233,  233,  233,   96,  233,   92,   89,   84,
+       74,  233,  233,   68,   64,  233,   61,   60,   58,   57,
+      233,   55,   45,  233,   50,   47,   49,   46,   48,  233,
+      233,   43,   42,  233,  233,  233,  233,  233,   27,   24,
+       23,  233,  233,  233,  233,  233,  233,  228,  233,  227,
+      233,  233,  233,  233,  160,  233,  233,  233,  233,  233,
+      233,  233,  233,  233,  233,  122,  233,  117,  116,  233,
+
+      233,  233,  233,  233,  233,  233,  233,  108,  233,  233,
+      233,  233,  233,  233,  233,  233,  233,  233,    2,  182,
+       52,   41,   40,   33,  233,  233,  233,   30,  233,   22,
+      233,  233,  233,  172,  231,  233,  233,  233,  233,  233,
+      164,  161,  145,  144,  143,  142,  141,  233,  233,  233,
+      233,  126,  121,  233,  233,  233,  233,  233,   51,  233,
+      233,  107,  233,  233,  233,  233,  233,   88,   87,   90,
+      233,  233,   73,   72,   29,  233,  233,  233,   20,  233,
+      233,  233,  229,  233,  226,  165,  166,  233,  233,  233,
+      233,  233,  233,  120,  233,  114,  113,  233,  233,  233,
+
+        5,  106,  233,  180,  233,  233,  233,  233,   28,  233,
+      233,   17,   11,  233,  233,  233,  233,  135,  133,  134,
+      132,  129,  233,  115,  233,    6,  109,  233,  233,    3,
+      233,   76,    1,   26,  230,  225,  137,  130,  131,  233,
+      233,  233,  233,  233,  128,  233,  233,    4,   75,  233,
+      233,  112,  233,  233,  233,  233,  181,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    4,    1,    5,    6,    7,    8,    1,    9,
+       10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
+       20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
+       30,   31,    1,   32,   33,   34,   35,   36,   37,   38,
+       39,   40,   41,   42,   43,   44,   45,   46,   47,   48,
+       49,   50,   51,   52,   53,   54,   55,   56,   57,   58,
+       59,    1,   60,   61,   62,    1,   63,   64,   35,   36,
+
+       37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
+       65,   48,   49,   66,   51,   67,   53,   54,   55,   56,
+       57,   58,    1,   68,    1,   69,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[70] =
+    {   0,
+        1,    1,    2,    1,    1,    3,    1,    1,    1,    1,
+        1,    1,    1,    1,    3,    1,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    1,    1,    1,    1,
+        1,    1,    5,    4,    5,    5,    5,    4,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    1,    1,
+        1,    3,    5,    4,    3,    3,    3,    1,    1
+    } ;
+
+static yyconst short int yy_base[565] =
+    {   0,
+        0,    0,   32,   33,  814,  815,  815,  815,  815,    0,
+      815,  783,  815,  815,  782,   60,  815,   61,  800,  113,
+       44,  815,  815,   54,   75,  779,  815,  161,  221,   59,
+       84,   42,   92,  105,  109,  148,  756,  271,  141,   48,
+      110,  322,  372,  421,  153,  757,   60,  787,    0,    0,
+      815,  815,  776,  741,   58,  815,  141,   64,  763,   43,
+       61,    0,  815,  815,  815,  815,  105,  815,  815,  129,
+      792,  210,  225,  235,  472,  275,  815,  772,  815,  815,
+      815,  145,  786,  785,  748,  163,  757,    0,    0,  263,
+      185,    0,    0,  782,  131,    0,  759,   97,  154,  751,
+
+        0,  753,    0,  736,  757,  752,  742,   69,  736,  279,
+      773,  741,    0,  156,    0,    0,  157,  749,  770,  740,
+        0,    0,  732,    0,  737,  766,  196,  199,    0,  153,
+      226,  247,  765,  723,  732,  220,  280,    0,  221,  740,
+      170,  761,  740,    0,  250,  728,  758,  731,  252,  735,
+      257,  308,  260,  248,  269,  288,  281,  729,  730,  753,
+      710,  725,  714,  713,  710,    0,    0,  714,  298,    0,
+      742,  815,  219,  815,  815,  707,  715,  714,  711,  174,
+      712,  815,  815,  815,  815,  744,  138,  356,  408,    0,
+        0,  815,  815,  724,  312,  343,    0,    0,    0,  714,
+
+      711,    0,    0,  249,  700,  699,    0,  232,  369,  695,
+      303,  711,  703,    0,  700,  701,  375,  337,  337,  122,
+      238,  338,  378,  347,  239,  709,  725,    0,  356,  318,
+      705,  722,  692,  363,    0,    0,    0,    0,  691,  390,
+      697,    0,    0,  372,    0,    0,  689,    0,    0,  700,
+      684,  699,  403,  690,  684,  393,  436,  680,  474,  431,
+        0,    0,    0,    0,    0,    0,  684,    0,    0,  398,
+      678,  401,  690,  681,  437,  680,    0,  690,  401,    0,
+        0,  662,    0,  657,  671,  684,  667,  676,  680,  676,
+      705,  815,    0,    0,    0,    0,    0,    0,    0,    0,
+
+      669,  676,  434,    0,    0,    0,  669,  659,  674,  448,
+        0,  659,  466,  694,  673,  670,  439,  661,  411,  654,
+      660,    0,    0,  419,  422,  647,  649,  450,  665,  470,
+        0,    0,  664,  675,  462,    0,  636,    0,  682,    0,
+      634,  642,  656,    0,    0,  656,    0,    0,    0,    0,
+      657,    0,    0,  654,    0,    0,    0,    0,    0,  671,
+      672,    0,    0,  652,  652,  470,  649,  471,  470,    0,
+        0,  650,  646,  632,  637,  614,  640,  617,  627,    0,
+      640,  630,  521,  474,    0,  466,  619,  475,  630,  477,
+      633,  624,  485,  625,  614,    0,  618,    0,    0,  620,
+
+      623,  625,  626,  611,  491,  628,  611,    0,  619,  625,
+      622,  613,  622,  495,  503,  487,  608,  497,    0,    0,
+        0,    0,    0,    0,  615,  517,  603,    0,  612,    0,
+      613,  614,  519,    0,  609,  609,  501,  605,  624,  625,
+        0,    0,    0,    0,    0,    0,    0,  604,  537,  609,
+      595,    0,  623,  597,  508,  510,  594,  588,    0,  590,
+      600,    0,  511,  585,  614,  532,  597,    0,    0,    0,
+      596,  586,    0,    0,    0,  514,  594,  517,    0,  518,
+      574,  583,    0,  593,    0,    0,    0,  589,  544,  315,
+      578,  582,  538,    0,  568,    0,    0,  586,  578,  520,
+
+        0,    0,  575,    0,  551,  554,  563,  564,    0,  521,
+      548,    0,    0,  543,  556,  522,  418,    0,    0,    0,
+        0,    0,  558,    0,  535,    0,    0,  524,  528,    0,
+      424,    0,    0,    0,    0,    0,    0,    0,    0,  403,
+      388,  378,  324,  279,    0,  272,  529,    0,    0,  531,
+      538,    0,  262,  168,   82,   83,    0,  815,  603,  608,
+       92,  613,  615,  617
+    } ;
+
+static yyconst short int yy_def[565] =
+    {   0,
+      558,    1,    1,    1,  558,  558,  558,  558,  558,  559,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  560,
+      561,  558,  558,  558,  558,  558,  558,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      558,  558,  558,   28,  558,  558,  559,   36,   38,   42,
+      559,  559,  558,  558,  558,  558,  558,  558,  558,  558,
+      562,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  563,  559,  559,  559,  559,  559,  559,  559,
+
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  558,  559,  558,  558,  559,  559,  559,  559,  559,
+      559,  558,  558,  558,  558,  562,  562,  558,  558,   75,
+      564,  558,  558,  558,  559,  559,  559,  559,  559,  559,
+
+      559,  559,  559,  559,  559,  559,  563,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      562,  558,  559,  559,  559,  559,  559,  559,  559,  559,
+
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  559,  559,  559,  559,  559,    0,  558,  558,
+      558,  558,  558,  558
+    } ;
+
+static yyconst short int yy_nxt[885] =
+    {   0,
+        6,    7,    8,    9,    6,   10,   11,   12,   13,   14,
+       15,   16,   17,   18,   10,   19,   20,   21,   21,   21,
+       21,   21,   21,   21,   21,   21,   22,   23,   24,   25,
+       26,   27,   28,   29,   30,   31,   32,   33,   34,   35,
+       36,   37,   10,   38,   39,   40,   41,   42,   10,   43,
+       44,   45,   46,   47,   48,   49,   10,   50,   51,   52,
+       53,   10,   54,   29,   41,   43,   45,   55,   56,   57,
+       57,   65,   58,   58,   68,   59,   59,   77,   80,   60,
+       60,   77,   78,   79,   61,   61,  109,  174,   93,   66,
+       69,  100,  180,  101,  137,   76,   93,  110,  138,  177,
+
+      169,  178,  102,  557,   81,  103,  181,   77,  180,  104,
+      170,  168,  137,   93,   93,  105,  182,  106,  183,  219,
+      107,  100,  220,  103,  108,  175,  556,   67,   70,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,  111,
+      184,  113,  185,  211,  112,   93,   74,  106,  187,  116,
+       74,  114,  117,  291,  139,  140,  115,  133,  133,  133,
+      133,  211,  141,  118,  119,  119,  119,  119,   75,  114,
+      322,  115,  323,  134,  193,  194,   74,   83,   84,  198,
+      199,  135,  209,  120,  176,  121,  136,  122,  111,  164,
+      165,  555,  166,  112,   85,   86,  167,  209,  123,  239,
+
+      124,  205,  206,  134,   87,  212,   88,  227,  228,   89,
+      289,   90,  235,  236,   91,  237,  238,  239,   92,  256,
+      212,  252,  227,  228,   85,   93,  188,  188,  188,  188,
+      188,  188,  188,  188,  188,  188,  252,   94,   94,   94,
+       94,  189,  189,  189,  189,  189,  189,  189,  189,  189,
+      189,  188,  188,  188,  188,  188,  188,  188,  188,  188,
+      188,   95,  240,  242,  243,  241,  247,  250,   96,  197,
+       97,  306,  324,  325,  326,  306,   98,   99,  331,  554,
+      268,  303,  332,  284,  247,  250,   97,  126,  126,  126,
+      126,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+
+       76,  255,  201,  259,  127,  128,  202,  129,  261,  267,
+      268,  303,  203,  222,  204,  269,  255,  130,  259,  550,
+      270,  131,  132,  261,  549,  267,  223,  248,  203,  204,
+      224,  249,  272,  269,  127,  130,  271,  132,  142,  142,
+      142,  142,  142,  142,  262,  224,  249,  272,  263,  282,
+      270,  293,  312,  264,  143,  294,  144,  336,  265,  519,
+      548,  336,  520,  266,  282,  145,  295,  296,  312,  321,
+      327,  146,  188,  188,  188,  188,  188,  188,  188,  188,
+      188,  188,  297,  320,  143,  328,  298,  146,  147,  147,
+      147,  147,  147,  147,  147,  147,  330,  299,  300,  321,
+
+      327,  320,  340,  307,  148,  335,  340,  317,  149,  318,
+      329,  344,  330,  308,  319,  344,  547,  150,  151,  309,
+      310,  335,  546,  152,  189,  189,  189,  189,  189,  189,
+      189,  189,  189,  189,  148,  310,  151,  317,  152,  153,
+      329,  342,  349,  401,  352,  545,  349,  365,  360,  361,
+      367,  404,  374,  154,  405,  155,  342,  156,  157,  352,
+      158,  159,  538,  365,  544,  539,  367,  374,  160,  353,
+      362,  161,  162,  401,  363,  353,  370,  163,  398,  353,
+      371,  404,  399,  154,  405,  385,  389,  162,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  390,  353,
+
+      385,  408,  410,  429,  191,  191,  191,  191,  191,  191,
+      355,  413,  392,  393,  356,  443,  408,  450,  394,  357,
+      471,  426,  428,  472,  358,  442,  445,  413,  447,  359,
+      392,  443,  410,  429,  191,  191,  426,  428,  439,  440,
+      442,  445,  459,  447,  467,  441,  468,  450,  474,  476,
+      471,  481,  484,  469,  489,  490,  491,  459,  470,  496,
+      467,  497,  502,  474,  505,  509,  517,  484,  511,  512,
+      523,  527,  533,  537,  496,  551,  497,  502,  543,  476,
+      509,  481,  552,  511,  512,  542,  527,  533,  537,  553,
+      541,  518,  540,  551,  505,  536,  535,  552,  534,  532,
+
+      523,  531,  530,  529,  553,   62,   62,   62,   72,  528,
+       72,   72,   72,  186,  526,  186,  186,  186,  207,  207,
+      191,  191,  525,  524,  522,  521,  516,  515,  514,  513,
+      510,  508,  507,  506,  504,  503,  501,  500,  499,  498,
+      495,  494,  493,  492,  488,  487,  486,  485,  483,  482,
+      480,  479,  478,  477,  475,  473,  466,  465,  464,  463,
+      462,  461,  460,  458,  457,  456,  455,  454,  453,  452,
+      451,  449,  448,  446,  444,  438,  437,  436,  414,  435,
+      434,  433,  432,  431,  430,  427,  425,  424,  423,  422,
+      421,  420,  419,  418,  417,  416,  415,  414,  412,  411,
+
+      409,  407,  406,  403,  402,  400,  397,  396,  395,  391,
+      388,  387,  386,  384,  383,  187,  382,  381,  380,  379,
+      378,  377,  376,  375,  373,  372,  369,  368,  366,  364,
+      354,  351,  350,  348,  347,  346,  345,  343,  341,  339,
+      338,  337,  334,  333,  316,  315,  314,  313,  311,  305,
+      304,  302,  301,  292,  187,  290,  288,  287,  286,  285,
+      283,  281,  280,  279,  278,  277,  276,  275,  274,  273,
+      260,  258,  257,  256,  254,  253,  251,  246,  245,  244,
+      234,  233,  232,  231,  230,  229,  226,  225,  221,  218,
+      217,  216,  215,  214,  213,  210,  208,  200,  197,  196,
+
+      195,  192,  187,  179,  173,  172,  171,  168,  125,   82,
+       71,   64,   63,  558,    5,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558
+    } ;
+
+static yyconst short int yy_chk[885] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
+        4,   16,    3,    4,   18,    3,    4,   21,   25,    3,
+        4,   21,   24,   24,    3,    4,   32,   55,   31,   16,
+       18,   30,   60,   30,   40,  561,   33,   32,   40,   58,
+
+       47,   58,   30,  556,   25,   30,   61,   21,   60,   30,
+       47,   61,   40,   35,   41,   30,   67,   31,   67,  108,
+       31,   30,  108,   30,   31,   55,  555,   16,   18,   20,
+       20,   20,   20,   20,   20,   20,   20,   20,   20,   33,
+       70,   34,   70,   98,   33,   57,   20,   31,  187,   35,
+       20,   34,   35,  187,   41,   41,   34,   39,   39,   39,
+       39,   98,   41,   35,   36,   36,   36,   36,   20,   34,
+      220,   34,  220,   39,   82,   82,   20,   28,   28,   86,
+       86,   39,   95,   36,   57,   36,   39,   36,   57,   45,
+       45,  554,   45,   57,   28,   28,   45,   95,   36,  130,
+
+       36,   91,   91,   39,   28,   99,   28,  114,  117,   28,
+      180,   28,  127,  127,   28,  128,  128,  130,   28,  180,
+       99,  141,  114,  117,   28,   29,   72,   72,   72,   72,
+       72,   72,   72,   72,   72,   72,  141,   29,   29,   29,
+       29,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   29,  131,  132,  132,  131,  136,  139,   29,  173,
+       29,  208,  221,  221,  221,  208,   29,   29,  225,  553,
+      154,  204,  225,  173,  136,  139,   29,   38,   38,   38,
+       38,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+
+       76,  145,   90,  149,   38,   38,   90,   38,  151,  153,
+      154,  204,   90,  110,   90,  155,  145,   38,  149,  546,
+      156,   38,   38,  151,  544,  153,  110,  137,   90,   90,
+      110,  137,  157,  155,   38,   38,  156,   38,   42,   42,
+       42,   42,   42,   42,  152,  110,  137,  157,  152,  169,
+      156,  195,  211,  152,   42,  195,   42,  230,  152,  490,
+      543,  230,  490,  152,  169,   42,  195,  195,  211,  219,
+      222,   42,  188,  188,  188,  188,  188,  188,  188,  188,
+      188,  188,  196,  218,   42,  222,  196,   42,   43,   43,
+       43,   43,   43,   43,   43,   43,  224,  196,  196,  219,
+
+      222,  218,  234,  209,   43,  229,  234,  217,   43,  217,
+      223,  244,  224,  209,  217,  244,  542,   43,   43,  209,
+      209,  229,  541,   43,  189,  189,  189,  189,  189,  189,
+      189,  189,  189,  189,   43,  209,   43,  217,   43,   44,
+      223,  240,  253,  319,  256,  540,  253,  270,  260,  260,
+      272,  324,  279,   44,  325,   44,  240,   44,   44,  256,
+       44,   44,  517,  270,  531,  517,  272,  279,   44,  257,
+      260,   44,   44,  319,  260,  257,  275,   44,  317,  257,
+      275,  324,  317,   44,  325,  303,  310,   44,   75,   75,
+       75,   75,   75,   75,   75,   75,   75,   75,  310,  257,
+
+      303,  328,  330,  369,   75,   75,   75,   75,   75,   75,
+      259,  335,  313,  313,  259,  386,  328,  393,  313,  259,
+      416,  366,  368,  416,  259,  384,  388,  335,  390,  259,
+      313,  386,  330,  369,   75,   75,  366,  368,  383,  383,
+      384,  388,  405,  390,  414,  383,  415,  393,  418,  426,
+      416,  433,  437,  415,  449,  449,  449,  405,  415,  455,
+      414,  456,  463,  418,  466,  476,  489,  437,  478,  480,
+      493,  500,  510,  516,  455,  547,  456,  463,  529,  426,
+      476,  433,  550,  478,  480,  528,  500,  510,  516,  551,
+      525,  489,  523,  547,  466,  515,  514,  550,  511,  508,
+
+      493,  507,  506,  505,  551,  559,  559,  559,  560,  503,
+      560,  560,  560,  562,  499,  562,  562,  562,  563,  563,
+      564,  564,  498,  495,  492,  491,  488,  484,  482,  481,
+      477,  472,  471,  467,  465,  464,  461,  460,  458,  457,
+      454,  453,  451,  450,  448,  440,  439,  438,  436,  435,
+      432,  431,  429,  427,  425,  417,  413,  412,  411,  410,
+      409,  407,  406,  404,  403,  402,  401,  400,  397,  395,
+      394,  392,  391,  389,  387,  382,  381,  379,  378,  377,
+      376,  375,  374,  373,  372,  367,  365,  364,  361,  360,
+      354,  351,  346,  343,  342,  341,  339,  337,  334,  333,
+
+      329,  327,  326,  321,  320,  318,  316,  315,  314,  312,
+      309,  308,  307,  302,  301,  291,  290,  289,  288,  287,
+      286,  285,  284,  282,  278,  276,  274,  273,  271,  267,
+      258,  255,  254,  252,  251,  250,  247,  241,  239,  233,
+      232,  231,  227,  226,  216,  215,  213,  212,  210,  206,
+      205,  201,  200,  194,  186,  181,  179,  178,  177,  176,
+      171,  168,  165,  164,  163,  162,  161,  160,  159,  158,
+      150,  148,  147,  146,  143,  142,  140,  135,  134,  133,
+      126,  125,  123,  120,  119,  118,  112,  111,  109,  107,
+      106,  105,  104,  102,  100,   97,   94,   87,   85,   84,
+
+       83,   78,   71,   59,   54,   53,   48,   46,   37,   26,
+       19,   15,   12,    5,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
+      558,  558,  558,  558
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "bfin-lex.l"
+#define INITIAL 0
+/* bfin-lex.l  ADI Blackfin lexer
+   Copyright 2005
+   Free Software Foundation, Inc.
+
+   This file is part of GAS, the GNU Assembler.
+
+   GAS 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.
+
+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+#line 22 "bfin-lex.l"
+
+#include <stdlib.h>
+#include <string.h>
+#include "bfin-defs.h"
+#include "bfin-parse.h"
+#include "as.h"
+
+static long parse_int (char **end);
+static int parse_halfreg (Register *r, int cl, char *hr);
+static int parse_reg (Register *r, int type, char *rt);
+int yylex (void);
+
+#define _REG yylval.reg
+
+
+/* Define Start States ... Actually we will use exclusion.
+   If no start state is specified it should match any state
+   and <INITIAL> would match some keyword rules only with
+   initial.  */
+#define KEYWORD 1
+
+#line 788 "bfin-lex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 45 "bfin-lex.l"
+
+#line 952 "bfin-lex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 559 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 815 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 46 "bfin-lex.l"
+_REG.regno = REG_sftreset;  return REG;
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 47 "bfin-lex.l"
+_REG.regno = REG_omode;     return REG;
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 48 "bfin-lex.l"
+_REG.regno = REG_idle_req;  return REG;
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 49 "bfin-lex.l"
+_REG.regno = REG_hwerrcause; return REG;
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 50 "bfin-lex.l"
+_REG.regno = REG_excause;   return REG;
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 51 "bfin-lex.l"
+_REG.regno = REG_emucause;  return REG;
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 52 "bfin-lex.l"
+return Z;
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 53 "bfin-lex.l"
+return X;
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 54 "bfin-lex.l"
+yylval.value = M_W32; return MMOD;
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 55 "bfin-lex.l"
+return W;
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 56 "bfin-lex.l"
+return VIT_MAX;
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 57 "bfin-lex.l"
+return V; /* Special: V is a statflag and a modifier.  */
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 58 "bfin-lex.l"
+_REG.regno = REG_USP; return REG;
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 59 "bfin-lex.l"
+return TL;
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 60 "bfin-lex.l"
+return TH;
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 61 "bfin-lex.l"
+yylval.value = M_TFU; return MMOD;
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 62 "bfin-lex.l"
+return TESTSET;
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 63 "bfin-lex.l"
+yylval.value = M_T; return MMOD;
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 64 "bfin-lex.l"
+return S;
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 65 "bfin-lex.l"
+_REG.regno = REG_SYSCFG; return REG;
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 66 "bfin-lex.l"
+return STI;
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 67 "bfin-lex.l"
+return SSYNC;
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 68 "bfin-lex.l"
+_REG.regno = REG_SP; return HALF_REG;
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 69 "bfin-lex.l"
+_REG.regno = REG_SP | F_REG_HIGH; return HALF_REG;
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 70 "bfin-lex.l"
+_REG.regno = REG_SP; return REG;
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 71 "bfin-lex.l"
+return SIGNBITS;
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 72 "bfin-lex.l"
+return SIGN;
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 73 "bfin-lex.l"
+_REG.regno = REG_SEQSTAT; return REG;
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 74 "bfin-lex.l"
+return SEARCH;
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 75 "bfin-lex.l"
+return SHIFT;
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 76 "bfin-lex.l"
+return SCO;
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 78 "bfin-lex.l"
+return SAA;
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 79 "bfin-lex.l"
+yylval.value = M_S2RND; return MMOD;
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 80 "bfin-lex.l"
+return RTX;
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 81 "bfin-lex.l"
+return RTS;
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 82 "bfin-lex.l"
+return RTN;
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 83 "bfin-lex.l"
+return RTI;
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 84 "bfin-lex.l"
+return RTE;
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 85 "bfin-lex.l"
+return ROT;
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 86 "bfin-lex.l"
+return RND20;
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 87 "bfin-lex.l"
+return RND12;
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 88 "bfin-lex.l"
+return RNDL;
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 89 "bfin-lex.l"
+return RNDH;
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 90 "bfin-lex.l"
+return RND;
+	YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 92 "bfin-lex.l"
+return parse_halfreg(&yylval.reg, T_REG_R, yytext);
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 94 "bfin-lex.l"
+_REG.regno = REG_RETS; return REG;
+	YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 95 "bfin-lex.l"
+_REG.regno = REG_RETI; return REG;
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 96 "bfin-lex.l"
+_REG.regno = REG_RETX; return REG;
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 97 "bfin-lex.l"
+_REG.regno = REG_RETN; return REG;
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 98 "bfin-lex.l"
+_REG.regno = REG_RETE; return REG;
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 99 "bfin-lex.l"
+_REG.regno = REG_EMUDAT; return REG;
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 100 "bfin-lex.l"
+return RAISE;
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 102 "bfin-lex.l"
+return parse_reg (&yylval.reg, T_REG_R, yytext);
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 104 "bfin-lex.l"
+return R;
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 105 "bfin-lex.l"
+return PRNT;
+	YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 106 "bfin-lex.l"
+return PC;
+	YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 107 "bfin-lex.l"
+return PACK;
+	YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 109 "bfin-lex.l"
+return parse_halfreg (&yylval.reg, T_REG_P, yytext);
+	YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 110 "bfin-lex.l"
+return parse_reg (&yylval.reg, T_REG_P, yytext);
+	YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 112 "bfin-lex.l"
+return OUTC;
+	YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 113 "bfin-lex.l"
+return ONES;
+	YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 115 "bfin-lex.l"
+return NOT;
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 116 "bfin-lex.l"
+return NOP;
+	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 117 "bfin-lex.l"
+return MNOP;
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 118 "bfin-lex.l"
+return NS;
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 121 "bfin-lex.l"
+return MIN;
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 122 "bfin-lex.l"
+return MAX;
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 124 "bfin-lex.l"
+return parse_halfreg (&yylval.reg, T_REG_M, yytext);
+	YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 125 "bfin-lex.l"
+return parse_reg (&yylval.reg, T_REG_M, yytext);
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 127 "bfin-lex.l"
+return M;
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 128 "bfin-lex.l"
+return LT;
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 129 "bfin-lex.l"
+return LSHIFT;
+	YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 130 "bfin-lex.l"
+return LSETUP;
+	YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 131 "bfin-lex.l"
+return LOOP;
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 132 "bfin-lex.l"
+return LOOP_BEGIN;
+	YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 133 "bfin-lex.l"
+return LOOP_END;
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 135 "bfin-lex.l"
+return LE;
+	YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 136 "bfin-lex.l"
+_REG.regno = REG_LC0; return REG;
+	YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 137 "bfin-lex.l"
+_REG.regno = REG_LT0; return REG;
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 138 "bfin-lex.l"
+_REG.regno = REG_LB0; return REG;
+	YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 139 "bfin-lex.l"
+_REG.regno = REG_LC1; return REG;
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 140 "bfin-lex.l"
+_REG.regno = REG_LT1; return REG;
+	YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 141 "bfin-lex.l"
+_REG.regno = REG_LB1; return REG;
+	YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 143 "bfin-lex.l"
+return parse_halfreg (&yylval.reg, T_REG_L, yytext);
+	YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 144 "bfin-lex.l"
+return parse_reg (&yylval.reg, T_REG_L, yytext);
+	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 145 "bfin-lex.l"
+return LO;
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 146 "bfin-lex.l"
+{ BEGIN 0; return JUMP_DOT_S;}
+	YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 147 "bfin-lex.l"
+{ BEGIN 0; return JUMP_DOT_L;}
+	YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 148 "bfin-lex.l"
+{ BEGIN 0; return JUMP;}
+	YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 149 "bfin-lex.l"
+{ BEGIN 0; return JUMP_DOT_L; }
+	YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 150 "bfin-lex.l"
+yylval.value = M_IU;   return MMOD;
+	YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 151 "bfin-lex.l"
+yylval.value = M_ISS2; return MMOD;
+	YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 152 "bfin-lex.l"
+yylval.value = M_IS;   return MMOD;
+	YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 153 "bfin-lex.l"
+yylval.value = M_IH;   return MMOD;
+	YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 154 "bfin-lex.l"
+return IF;
+	YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 155 "bfin-lex.l"
+return parse_halfreg (&yylval.reg, T_REG_I, yytext);
+	YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 156 "bfin-lex.l"
+return parse_reg (&yylval.reg, T_REG_I, yytext);
+	YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 157 "bfin-lex.l"
+return HLT;
+	YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 158 "bfin-lex.l"
+return HI;
+	YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 159 "bfin-lex.l"
+return GT;
+	YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 160 "bfin-lex.l"
+return GE;
+	YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 161 "bfin-lex.l"
+yylval.value = M_FU; return MMOD;
+	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 162 "bfin-lex.l"
+_REG.regno = REG_FP; return REG;
+	YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 163 "bfin-lex.l"
+_REG.regno = REG_FP; return HALF_REG;
+	YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 164 "bfin-lex.l"
+_REG.regno = REG_FP | F_REG_HIGH; return HALF_REG;
+	YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 166 "bfin-lex.l"
+return EXTRACT;
+	YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 167 "bfin-lex.l"
+return EXPADJ;
+	YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 168 "bfin-lex.l"
+return EXCPT;
+	YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 169 "bfin-lex.l"
+return EMUEXCPT;
+	YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 170 "bfin-lex.l"
+return DIVS;
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 171 "bfin-lex.l"
+return DIVQ;
+	YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 172 "bfin-lex.l"
+return DISALGNEXCPT;
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 173 "bfin-lex.l"
+return DEPOSIT;
+	YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 174 "bfin-lex.l"
+return DBGHALT;
+	YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 175 "bfin-lex.l"
+return DBGCMPLX;
+	YY_BREAK
+case 116:
+YY_RULE_SETUP
+#line 176 "bfin-lex.l"
+return DBGAL;
+	YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 177 "bfin-lex.l"
+return DBGAH;
+	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 178 "bfin-lex.l"
+return DBGA;
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 179 "bfin-lex.l"
+return DBG;
+	YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 180 "bfin-lex.l"
+{ _REG.regno = REG_CYCLES2; return REG; }
+	YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 181 "bfin-lex.l"
+{ _REG.regno = REG_CYCLES; return REG; }
+	YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 182 "bfin-lex.l"
+return CSYNC;
+	YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 183 "bfin-lex.l"
+return CO;
+	YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 184 "bfin-lex.l"
+return CLI;
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 186 "bfin-lex.l"
+_REG.regno = REG_CC; return CCREG;
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 187 "bfin-lex.l"
+{ BEGIN 0; return CALL;}
+	YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 188 "bfin-lex.l"
+{ BEGIN 0; return CALL;}
+	YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 189 "bfin-lex.l"
+return BYTEUNPACK;
+	YY_BREAK
+case 129:
+YY_RULE_SETUP
+#line 190 "bfin-lex.l"
+return BYTEPACK;
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 191 "bfin-lex.l"
+return BYTEOP16M;
+	YY_BREAK
+case 131:
+YY_RULE_SETUP
+#line 192 "bfin-lex.l"
+return BYTEOP16P;
+	YY_BREAK
+case 132:
+YY_RULE_SETUP
+#line 193 "bfin-lex.l"
+return BYTEOP3P;
+	YY_BREAK
+case 133:
+YY_RULE_SETUP
+#line 194 "bfin-lex.l"
+return BYTEOP2M;
+	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 195 "bfin-lex.l"
+return BYTEOP2P;
+	YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 196 "bfin-lex.l"
+return BYTEOP1P;
+	YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 197 "bfin-lex.l"
+return BY;
+	YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 198 "bfin-lex.l"
+return BXORSHIFT;
+	YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 199 "bfin-lex.l"
+return BXOR;
+	YY_BREAK
+case 139:
+YY_RULE_SETUP
+#line 201 "bfin-lex.l"
+return BREV;
+	YY_BREAK
+case 140:
+YY_RULE_SETUP
+#line 202 "bfin-lex.l"
+return BP;
+	YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 203 "bfin-lex.l"
+return BITTST;
+	YY_BREAK
+case 142:
+YY_RULE_SETUP
+#line 204 "bfin-lex.l"
+return BITTGL;
+	YY_BREAK
+case 143:
+YY_RULE_SETUP
+#line 205 "bfin-lex.l"
+return BITSET;
+	YY_BREAK
+case 144:
+YY_RULE_SETUP
+#line 206 "bfin-lex.l"
+return BITMUX;
+	YY_BREAK
+case 145:
+YY_RULE_SETUP
+#line 207 "bfin-lex.l"
+return BITCLR;
+	YY_BREAK
+case 146:
+YY_RULE_SETUP
+#line 208 "bfin-lex.l"
+return parse_halfreg (&yylval.reg, T_REG_B, yytext);
+	YY_BREAK
+case 147:
+YY_RULE_SETUP
+#line 209 "bfin-lex.l"
+return parse_reg (&yylval.reg, T_REG_B, yytext);
+	YY_BREAK
+case 148:
+YY_RULE_SETUP
+#line 210 "bfin-lex.l"
+return B;
+	YY_BREAK
+case 149:
+YY_RULE_SETUP
+#line 211 "bfin-lex.l"
+_REG.regno = S_AZ;   return STATUS_REG;
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 212 "bfin-lex.l"
+_REG.regno = S_AN;   return STATUS_REG;
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 213 "bfin-lex.l"
+_REG.regno = S_AQ;   return STATUS_REG;
+	YY_BREAK
+case 152:
+YY_RULE_SETUP
+#line 214 "bfin-lex.l"
+_REG.regno = S_AC0;  return STATUS_REG;
+	YY_BREAK
+case 153:
+YY_RULE_SETUP
+#line 215 "bfin-lex.l"
+_REG.regno = S_AC1;  return STATUS_REG;
+	YY_BREAK
+case 154:
+YY_RULE_SETUP
+#line 216 "bfin-lex.l"
+_REG.regno = S_AV0;  return STATUS_REG;
+	YY_BREAK
+case 155:
+YY_RULE_SETUP
+#line 217 "bfin-lex.l"
+_REG.regno = S_AV0S; return STATUS_REG;
+	YY_BREAK
+case 156:
+YY_RULE_SETUP
+#line 218 "bfin-lex.l"
+_REG.regno = S_AV1;  return STATUS_REG;
+	YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 219 "bfin-lex.l"
+_REG.regno = S_AV1S; return STATUS_REG;
+	YY_BREAK
+case 158:
+YY_RULE_SETUP
+#line 220 "bfin-lex.l"
+_REG.regno = S_V; return STATUS_REG;
+	YY_BREAK
+case 159:
+YY_RULE_SETUP
+#line 221 "bfin-lex.l"
+_REG.regno = S_VS;   return STATUS_REG;
+	YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 224 "bfin-lex.l"
+_REG.regno = REG_ASTAT; return REG;
+	YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 225 "bfin-lex.l"
+return ASHIFT;
+	YY_BREAK
+case 162:
+YY_RULE_SETUP
+#line 226 "bfin-lex.l"
+return ASL;
+	YY_BREAK
+case 163:
+YY_RULE_SETUP
+#line 227 "bfin-lex.l"
+return ASR;
+	YY_BREAK
+case 164:
+YY_RULE_SETUP
+#line 228 "bfin-lex.l"
+return ALIGN8;
+	YY_BREAK
+case 165:
+YY_RULE_SETUP
+#line 229 "bfin-lex.l"
+return ALIGN16;
+	YY_BREAK
+case 166:
+YY_RULE_SETUP
+#line 230 "bfin-lex.l"
+return ALIGN24;
+	YY_BREAK
+case 167:
+YY_RULE_SETUP
+#line 231 "bfin-lex.l"
+return A_ONE_DOT_L;
+	YY_BREAK
+case 168:
+YY_RULE_SETUP
+#line 232 "bfin-lex.l"
+return A_ZERO_DOT_L;
+	YY_BREAK
+case 169:
+YY_RULE_SETUP
+#line 233 "bfin-lex.l"
+return A_ONE_DOT_H;
+	YY_BREAK
+case 170:
+YY_RULE_SETUP
+#line 234 "bfin-lex.l"
+return A_ZERO_DOT_H;
+	YY_BREAK
+case 171:
+YY_RULE_SETUP
+#line 235 "bfin-lex.l"
+return ABS;
+	YY_BREAK
+case 172:
+YY_RULE_SETUP
+#line 236 "bfin-lex.l"
+return ABORT;
+	YY_BREAK
+case 173:
+YY_RULE_SETUP
+#line 237 "bfin-lex.l"
+_REG.regno = REG_A1x; return REG;
+	YY_BREAK
+case 174:
+YY_RULE_SETUP
+#line 238 "bfin-lex.l"
+_REG.regno = REG_A1w; return REG;
+	YY_BREAK
+case 175:
+YY_RULE_SETUP
+#line 239 "bfin-lex.l"
+_REG.regno = REG_A1;  return REG_A_DOUBLE_ONE;
+	YY_BREAK
+case 176:
+YY_RULE_SETUP
+#line 240 "bfin-lex.l"
+_REG.regno = REG_A0x; return REG;
+	YY_BREAK
+case 177:
+YY_RULE_SETUP
+#line 241 "bfin-lex.l"
+_REG.regno = REG_A0w; return REG;
+	YY_BREAK
+case 178:
+YY_RULE_SETUP
+#line 242 "bfin-lex.l"
+_REG.regno = REG_A0;  return REG_A_DOUBLE_ZERO;
+	YY_BREAK
+case 179:
+YY_RULE_SETUP
+#line 243 "bfin-lex.l"
+return GOT;
+	YY_BREAK
+case 180:
+YY_RULE_SETUP
+#line 244 "bfin-lex.l"
+return GOT17M4;
+	YY_BREAK
+case 181:
+YY_RULE_SETUP
+#line 245 "bfin-lex.l"
+return FUNCDESC_GOT17M4;
+	YY_BREAK
+case 182:
+YY_RULE_SETUP
+#line 246 "bfin-lex.l"
+return PLTPC;
+	YY_BREAK
+case 183:
+YY_RULE_SETUP
+#line 249 "bfin-lex.l"
+return TILDA;
+	YY_BREAK
+case 184:
+YY_RULE_SETUP
+#line 250 "bfin-lex.l"
+return _BAR_ASSIGN;
+	YY_BREAK
+case 185:
+YY_RULE_SETUP
+#line 251 "bfin-lex.l"
+return BAR;
+	YY_BREAK
+case 186:
+YY_RULE_SETUP
+#line 252 "bfin-lex.l"
+return _CARET_ASSIGN;
+	YY_BREAK
+case 187:
+YY_RULE_SETUP
+#line 253 "bfin-lex.l"
+return CARET;
+	YY_BREAK
+case 188:
+YY_RULE_SETUP
+#line 254 "bfin-lex.l"
+return RBRACK;
+	YY_BREAK
+case 189:
+YY_RULE_SETUP
+#line 255 "bfin-lex.l"
+return LBRACK;
+	YY_BREAK
+case 190:
+YY_RULE_SETUP
+#line 256 "bfin-lex.l"
+return _GREATER_GREATER_GREATER_THAN_ASSIGN;
+	YY_BREAK
+case 191:
+YY_RULE_SETUP
+#line 257 "bfin-lex.l"
+return _GREATER_GREATER_ASSIGN;
+	YY_BREAK
+case 192:
+YY_RULE_SETUP
+#line 258 "bfin-lex.l"
+return _GREATER_GREATER_GREATER;
+	YY_BREAK
+case 193:
+YY_RULE_SETUP
+#line 259 "bfin-lex.l"
+return GREATER_GREATER;
+	YY_BREAK
+case 194:
+YY_RULE_SETUP
+#line 260 "bfin-lex.l"
+return _ASSIGN_ASSIGN;
+	YY_BREAK
+case 195:
+YY_RULE_SETUP
+#line 261 "bfin-lex.l"
+return ASSIGN;
+	YY_BREAK
+case 196:
+YY_RULE_SETUP
+#line 262 "bfin-lex.l"
+return _LESS_THAN_ASSIGN;
+	YY_BREAK
+case 197:
+YY_RULE_SETUP
+#line 263 "bfin-lex.l"
+return _LESS_LESS_ASSIGN;
+	YY_BREAK
+case 198:
+YY_RULE_SETUP
+#line 264 "bfin-lex.l"
+return LESS_LESS;
+	YY_BREAK
+case 199:
+YY_RULE_SETUP
+#line 265 "bfin-lex.l"
+return LESS_THAN;
+	YY_BREAK
+case 200:
+YY_RULE_SETUP
+#line 266 "bfin-lex.l"
+return LPAREN;
+	YY_BREAK
+case 201:
+YY_RULE_SETUP
+#line 267 "bfin-lex.l"
+return RPAREN;
+	YY_BREAK
+case 202:
+YY_RULE_SETUP
+#line 268 "bfin-lex.l"
+return COLON;
+	YY_BREAK
+case 203:
+YY_RULE_SETUP
+#line 269 "bfin-lex.l"
+return SLASH;
+	YY_BREAK
+case 204:
+YY_RULE_SETUP
+#line 270 "bfin-lex.l"
+return _MINUS_ASSIGN;
+	YY_BREAK
+case 205:
+YY_RULE_SETUP
+#line 271 "bfin-lex.l"
+return _PLUS_BAR_PLUS;
+	YY_BREAK
+case 206:
+YY_RULE_SETUP
+#line 272 "bfin-lex.l"
+return _MINUS_BAR_PLUS;
+	YY_BREAK
+case 207:
+YY_RULE_SETUP
+#line 273 "bfin-lex.l"
+return _PLUS_BAR_MINUS;
+	YY_BREAK
+case 208:
+YY_RULE_SETUP
+#line 274 "bfin-lex.l"
+return _MINUS_BAR_MINUS;
+	YY_BREAK
+case 209:
+YY_RULE_SETUP
+#line 275 "bfin-lex.l"
+return _MINUS_MINUS;
+	YY_BREAK
+case 210:
+YY_RULE_SETUP
+#line 276 "bfin-lex.l"
+return MINUS;
+	YY_BREAK
+case 211:
+YY_RULE_SETUP
+#line 277 "bfin-lex.l"
+return COMMA;
+	YY_BREAK
+case 212:
+YY_RULE_SETUP
+#line 278 "bfin-lex.l"
+return _PLUS_ASSIGN;
+	YY_BREAK
+case 213:
+YY_RULE_SETUP
+#line 279 "bfin-lex.l"
+return _PLUS_PLUS;
+	YY_BREAK
+case 214:
+YY_RULE_SETUP
+#line 280 "bfin-lex.l"
+return PLUS;
+	YY_BREAK
+case 215:
+YY_RULE_SETUP
+#line 281 "bfin-lex.l"
+return _STAR_ASSIGN;
+	YY_BREAK
+case 216:
+YY_RULE_SETUP
+#line 282 "bfin-lex.l"
+return STAR;
+	YY_BREAK
+case 217:
+YY_RULE_SETUP
+#line 283 "bfin-lex.l"
+return _AMPERSAND_ASSIGN;
+	YY_BREAK
+case 218:
+YY_RULE_SETUP
+#line 284 "bfin-lex.l"
+return AMPERSAND;
+	YY_BREAK
+case 219:
+YY_RULE_SETUP
+#line 285 "bfin-lex.l"
+return PERCENT;
+	YY_BREAK
+case 220:
+YY_RULE_SETUP
+#line 286 "bfin-lex.l"
+return BANG;
+	YY_BREAK
+case 221:
+YY_RULE_SETUP
+#line 287 "bfin-lex.l"
+return SEMICOLON;
+	YY_BREAK
+case 222:
+YY_RULE_SETUP
+#line 288 "bfin-lex.l"
+return _ASSIGN_BANG;
+	YY_BREAK
+case 223:
+YY_RULE_SETUP
+#line 289 "bfin-lex.l"
+return DOUBLE_BAR;
+	YY_BREAK
+case 224:
+YY_RULE_SETUP
+#line 290 "bfin-lex.l"
+return AT;
+	YY_BREAK
+case 225:
+YY_RULE_SETUP
+#line 291 "bfin-lex.l"
+return PREFETCH;
+	YY_BREAK
+case 226:
+YY_RULE_SETUP
+#line 292 "bfin-lex.l"
+return UNLINK;
+	YY_BREAK
+case 227:
+YY_RULE_SETUP
+#line 293 "bfin-lex.l"
+return LINK;
+	YY_BREAK
+case 228:
+YY_RULE_SETUP
+#line 294 "bfin-lex.l"
+return IDLE;
+	YY_BREAK
+case 229:
+YY_RULE_SETUP
+#line 295 "bfin-lex.l"
+return IFLUSH;
+	YY_BREAK
+case 230:
+YY_RULE_SETUP
+#line 296 "bfin-lex.l"
+return FLUSHINV;
+	YY_BREAK
+case 231:
+YY_RULE_SETUP
+#line 297 "bfin-lex.l"
+return FLUSH;
+	YY_BREAK
+case 232:
+YY_RULE_SETUP
+#line 298 "bfin-lex.l"
+{
+    yylval.value = parse_int (&yytext);
+    return NUMBER;
+  }
+	YY_BREAK
+case 233:
+YY_RULE_SETUP
+#line 302 "bfin-lex.l"
+{ 
+    yylval.symbol = symbol_find_or_make (yytext);
+    symbol_mark_used (yylval.symbol);
+    return SYMBOL; 
+  }
+	YY_BREAK
+case 234:
+YY_RULE_SETUP
+#line 307 "bfin-lex.l"
+{
+    char *name;
+    char *ref = strdup (yytext);
+    if (ref[1] == 'b' || ref[1] == 'B')
+      {
+        name = fb_label_name ((int) (ref[0] - '0'), 0);
+	yylval.symbol = symbol_find (name);
+
+	if ((yylval.symbol != NULL)
+             && (S_IS_DEFINED (yylval.symbol)))
+          return SYMBOL;
+	as_bad ("backward reference to unknown label %d:", 
+						  (int) (ref[0] - '0')); 
+      }
+    else if (ref[1] == 'f' || ref[1] == 'F')
+      {
+        /* Forward reference.  Expect symbol to be undefined or
+           unknown.  undefined: seen it before.  unknown: never seen
+           it before.
+
+           Construct a local label name, then an undefined symbol.
+           Just return it as never seen before.  */
+
+        name = fb_label_name ((int) (ref[0] - '0'), 1);
+	yylval.symbol = symbol_find_or_make (name);
+	/* We have no need to check symbol properties.  */
+	return SYMBOL;
+      }                                  
+  }                                  
+	YY_BREAK
+case 235:
+YY_RULE_SETUP
+#line 336 "bfin-lex.l"
+;
+	YY_BREAK
+case 236:
+YY_RULE_SETUP
+#line 337 "bfin-lex.l"
+;
+	YY_BREAK
+case 237:
+YY_RULE_SETUP
+#line 338 "bfin-lex.l"
+return yytext[0];
+	YY_BREAK
+case 238:
+YY_RULE_SETUP
+#line 339 "bfin-lex.l"
+ECHO;
+	YY_BREAK
+#line 2260 "bfin-lex.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(KEYWORD):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 559 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 559 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 558);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 339 "bfin-lex.l"
+
+static long parse_int (char **end)
+{
+  char fmt = '\0';
+  int not_done = 1;
+  int shiftvalue = 0;
+  char * char_bag;
+  long value = 0;
+  char c;
+  char *arg = *end;
+
+  while (*arg && *arg == ' ')
+    arg++;
+
+  switch (*arg)
+    {
+      case '1':
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        fmt = 'd';
+        break;
+
+      case '0':  /* Accept different formated integers hex octal and binary. */
+        {
+	  c = *++arg;
+          arg++;
+	  if (c == 'x' || c == 'X') /* Hex input.  */
+	    fmt = 'h';
+	  else if (c == 'b' || c == 'B')
+	    fmt = 'b';
+	  else if (c == '.')
+	    fmt = 'f';
+	  else
+            {             /* Octal.  */
+	      arg--;
+	      fmt = 'o';
+	    }
+	  break;
+        }
+
+      case 'd':
+      case 'D':
+      case 'h':
+      case 'H':
+      case 'o':
+      case 'O':
+      case 'b':
+      case 'B':
+      case 'f':
+      case 'F':
+        {
+	  fmt = *arg++;
+	  if (*arg == '#')
+	    arg++;
+        }
+    }
+
+  switch (fmt)
+    {
+      case 'h':
+      case 'H':
+        shiftvalue = 4;
+        char_bag = "0123456789ABCDEFabcdef";
+        break;
+
+      case 'o':
+      case 'O':
+        shiftvalue = 3;
+        char_bag = "01234567";
+        break;
+
+      case 'b':
+      case 'B':
+        shiftvalue = 1;
+        char_bag = "01";
+        break;
+
+/* The assembler allows for fractional constants to be created
+   by either the 0.xxxx or the f#xxxx format 
+
+   i.e.   0.5 would result in 0x4000
+
+   note .5 would result in the identifier .5.
+
+   The assembler converts to fractional format 1.15 by the simple rule:
+
+             value = (short) (finput * (1 << 15)).  */
+
+      case 'f':
+      case 'F':
+        {
+          float fval = 0.0;
+          float pos = 10.0;
+          while (1)
+            {
+              int c;
+              c = *arg++;
+
+              if (c >= '0' && c <= '9')
+                {
+                  float digit = (c - '0') / pos;
+                  fval = fval + digit;
+                  pos = pos * 10.0;
+                }
+              else
+                {
+	          *--arg = c;
+                  value = (short) (fval * (1 << 15));
+                  break;
+                }
+            }
+          *end = arg+1;
+          return value;
+        }
+
+      case 'd':
+      case 'D':
+      default:
+        {
+          while (1)
+            {
+              int c;
+              c = *arg++;
+              if (c >= '0' && c <= '9')
+                value = (value * 10) + (c - '0');
+              else
+                {
+                  /* Constants that are suffixed with k|K are multiplied by 1024
+                     This suffix is only allowed on decimal constants. */
+                  if (c == 'k' || c == 'K')
+                    value *= 1024;
+                  else
+                    *--arg = c;
+                  break;
+                }
+            }
+          *end = arg+1;
+          return value;
+        }
+    }
+
+  while (not_done)
+    {
+      char c;
+      c = *arg++;
+      if (c == 0 || !index (char_bag, c))
+	{
+          not_done = 0;
+          *--arg = c;
+        }
+      else
+        {
+          if (c >= 'a' && c <= 'z')
+            c = c - ('a' - '9') + 1;
+          else if (c >= 'A' && c <= 'Z')
+            c = c - ('A' - '9') + 1;
+
+          c -= '0';
+          value = (value << shiftvalue) + c;
+        }
+    }
+  *end = arg+1;
+  return value;
+}
+
+
+static int parse_reg (Register *r, int cl, char *rt)
+{
+  r->regno = cl | (rt[1] - '0');
+  return REG;
+}
+
+static int parse_halfreg (Register *r, int cl, char *rt)
+{
+  r->regno = cl | (rt[1] - '0');
+
+  switch (rt[3])
+    {
+      case 'b':
+      case 'B':
+	return BYTE_DREG;
+
+      case 'l':
+      case 'L':
+	break;
+
+      case 'h':
+      case 'H':
+	r->regno |= F_REG_HIGH;
+	break;
+    }
+
+  return HALF_REG;
+}
+
+/* Our start state is KEYWORD as we have
+   command keywords such as PREFETCH.  */
+
+void 
+set_start_state (void)
+{
+  BEGIN KEYWORD;
+}
+
+
+#ifndef yywrap
+int
+yywrap ()
+{ 
+  return 1;
+}
+#endif

Added: branches/binutils/package/gas/bfin-parse.c
===================================================================
--- branches/binutils/package/gas/bfin-parse.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/bfin-parse.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7491 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     BYTEOP16P = 258,
+     BYTEOP16M = 259,
+     BYTEOP1P = 260,
+     BYTEOP2P = 261,
+     BYTEOP2M = 262,
+     BYTEOP3P = 263,
+     BYTEUNPACK = 264,
+     BYTEPACK = 265,
+     PACK = 266,
+     SAA = 267,
+     ALIGN8 = 268,
+     ALIGN16 = 269,
+     ALIGN24 = 270,
+     VIT_MAX = 271,
+     EXTRACT = 272,
+     DEPOSIT = 273,
+     EXPADJ = 274,
+     SEARCH = 275,
+     ONES = 276,
+     SIGN = 277,
+     SIGNBITS = 278,
+     LINK = 279,
+     UNLINK = 280,
+     REG = 281,
+     PC = 282,
+     CCREG = 283,
+     BYTE_DREG = 284,
+     REG_A_DOUBLE_ZERO = 285,
+     REG_A_DOUBLE_ONE = 286,
+     A_ZERO_DOT_L = 287,
+     A_ZERO_DOT_H = 288,
+     A_ONE_DOT_L = 289,
+     A_ONE_DOT_H = 290,
+     HALF_REG = 291,
+     NOP = 292,
+     RTI = 293,
+     RTS = 294,
+     RTX = 295,
+     RTN = 296,
+     RTE = 297,
+     HLT = 298,
+     IDLE = 299,
+     STI = 300,
+     CLI = 301,
+     CSYNC = 302,
+     SSYNC = 303,
+     EMUEXCPT = 304,
+     RAISE = 305,
+     EXCPT = 306,
+     LSETUP = 307,
+     LOOP = 308,
+     LOOP_BEGIN = 309,
+     LOOP_END = 310,
+     DISALGNEXCPT = 311,
+     JUMP = 312,
+     JUMP_DOT_S = 313,
+     JUMP_DOT_L = 314,
+     CALL = 315,
+     ABORT = 316,
+     NOT = 317,
+     TILDA = 318,
+     BANG = 319,
+     AMPERSAND = 320,
+     BAR = 321,
+     PERCENT = 322,
+     CARET = 323,
+     BXOR = 324,
+     MINUS = 325,
+     PLUS = 326,
+     STAR = 327,
+     SLASH = 328,
+     NEG = 329,
+     MIN = 330,
+     MAX = 331,
+     ABS = 332,
+     DOUBLE_BAR = 333,
+     _PLUS_BAR_PLUS = 334,
+     _PLUS_BAR_MINUS = 335,
+     _MINUS_BAR_PLUS = 336,
+     _MINUS_BAR_MINUS = 337,
+     _MINUS_MINUS = 338,
+     _PLUS_PLUS = 339,
+     SHIFT = 340,
+     LSHIFT = 341,
+     ASHIFT = 342,
+     BXORSHIFT = 343,
+     _GREATER_GREATER_GREATER_THAN_ASSIGN = 344,
+     ROT = 345,
+     LESS_LESS = 346,
+     GREATER_GREATER = 347,
+     _GREATER_GREATER_GREATER = 348,
+     _LESS_LESS_ASSIGN = 349,
+     _GREATER_GREATER_ASSIGN = 350,
+     DIVS = 351,
+     DIVQ = 352,
+     ASSIGN = 353,
+     _STAR_ASSIGN = 354,
+     _BAR_ASSIGN = 355,
+     _CARET_ASSIGN = 356,
+     _AMPERSAND_ASSIGN = 357,
+     _MINUS_ASSIGN = 358,
+     _PLUS_ASSIGN = 359,
+     _ASSIGN_BANG = 360,
+     _LESS_THAN_ASSIGN = 361,
+     _ASSIGN_ASSIGN = 362,
+     GE = 363,
+     LT = 364,
+     LE = 365,
+     GT = 366,
+     LESS_THAN = 367,
+     FLUSHINV = 368,
+     FLUSH = 369,
+     IFLUSH = 370,
+     PREFETCH = 371,
+     PRNT = 372,
+     OUTC = 373,
+     WHATREG = 374,
+     TESTSET = 375,
+     ASL = 376,
+     ASR = 377,
+     B = 378,
+     W = 379,
+     NS = 380,
+     S = 381,
+     CO = 382,
+     SCO = 383,
+     TH = 384,
+     TL = 385,
+     BP = 386,
+     BREV = 387,
+     X = 388,
+     Z = 389,
+     M = 390,
+     MMOD = 391,
+     R = 392,
+     RND = 393,
+     RNDL = 394,
+     RNDH = 395,
+     RND12 = 396,
+     RND20 = 397,
+     V = 398,
+     LO = 399,
+     HI = 400,
+     BITTGL = 401,
+     BITCLR = 402,
+     BITSET = 403,
+     BITTST = 404,
+     BITMUX = 405,
+     DBGAL = 406,
+     DBGAH = 407,
+     DBGHALT = 408,
+     DBG = 409,
+     DBGA = 410,
+     DBGCMPLX = 411,
+     IF = 412,
+     COMMA = 413,
+     BY = 414,
+     COLON = 415,
+     SEMICOLON = 416,
+     RPAREN = 417,
+     LPAREN = 418,
+     LBRACK = 419,
+     RBRACK = 420,
+     STATUS_REG = 421,
+     MNOP = 422,
+     SYMBOL = 423,
+     NUMBER = 424,
+     GOT = 425,
+     GOT17M4 = 426,
+     FUNCDESC_GOT17M4 = 427,
+     AT = 428,
+     PLTPC = 429
+   };
+#endif
+/* Tokens.  */
+#define BYTEOP16P 258
+#define BYTEOP16M 259
+#define BYTEOP1P 260
+#define BYTEOP2P 261
+#define BYTEOP2M 262
+#define BYTEOP3P 263
+#define BYTEUNPACK 264
+#define BYTEPACK 265
+#define PACK 266
+#define SAA 267
+#define ALIGN8 268
+#define ALIGN16 269
+#define ALIGN24 270
+#define VIT_MAX 271
+#define EXTRACT 272
+#define DEPOSIT 273
+#define EXPADJ 274
+#define SEARCH 275
+#define ONES 276
+#define SIGN 277
+#define SIGNBITS 278
+#define LINK 279
+#define UNLINK 280
+#define REG 281
+#define PC 282
+#define CCREG 283
+#define BYTE_DREG 284
+#define REG_A_DOUBLE_ZERO 285
+#define REG_A_DOUBLE_ONE 286
+#define A_ZERO_DOT_L 287
+#define A_ZERO_DOT_H 288
+#define A_ONE_DOT_L 289
+#define A_ONE_DOT_H 290
+#define HALF_REG 291
+#define NOP 292
+#define RTI 293
+#define RTS 294
+#define RTX 295
+#define RTN 296
+#define RTE 297
+#define HLT 298
+#define IDLE 299
+#define STI 300
+#define CLI 301
+#define CSYNC 302
+#define SSYNC 303
+#define EMUEXCPT 304
+#define RAISE 305
+#define EXCPT 306
+#define LSETUP 307
+#define LOOP 308
+#define LOOP_BEGIN 309
+#define LOOP_END 310
+#define DISALGNEXCPT 311
+#define JUMP 312
+#define JUMP_DOT_S 313
+#define JUMP_DOT_L 314
+#define CALL 315
+#define ABORT 316
+#define NOT 317
+#define TILDA 318
+#define BANG 319
+#define AMPERSAND 320
+#define BAR 321
+#define PERCENT 322
+#define CARET 323
+#define BXOR 324
+#define MINUS 325
+#define PLUS 326
+#define STAR 327
+#define SLASH 328
+#define NEG 329
+#define MIN 330
+#define MAX 331
+#define ABS 332
+#define DOUBLE_BAR 333
+#define _PLUS_BAR_PLUS 334
+#define _PLUS_BAR_MINUS 335
+#define _MINUS_BAR_PLUS 336
+#define _MINUS_BAR_MINUS 337
+#define _MINUS_MINUS 338
+#define _PLUS_PLUS 339
+#define SHIFT 340
+#define LSHIFT 341
+#define ASHIFT 342
+#define BXORSHIFT 343
+#define _GREATER_GREATER_GREATER_THAN_ASSIGN 344
+#define ROT 345
+#define LESS_LESS 346
+#define GREATER_GREATER 347
+#define _GREATER_GREATER_GREATER 348
+#define _LESS_LESS_ASSIGN 349
+#define _GREATER_GREATER_ASSIGN 350
+#define DIVS 351
+#define DIVQ 352
+#define ASSIGN 353
+#define _STAR_ASSIGN 354
+#define _BAR_ASSIGN 355
+#define _CARET_ASSIGN 356
+#define _AMPERSAND_ASSIGN 357
+#define _MINUS_ASSIGN 358
+#define _PLUS_ASSIGN 359
+#define _ASSIGN_BANG 360
+#define _LESS_THAN_ASSIGN 361
+#define _ASSIGN_ASSIGN 362
+#define GE 363
+#define LT 364
+#define LE 365
+#define GT 366
+#define LESS_THAN 367
+#define FLUSHINV 368
+#define FLUSH 369
+#define IFLUSH 370
+#define PREFETCH 371
+#define PRNT 372
+#define OUTC 373
+#define WHATREG 374
+#define TESTSET 375
+#define ASL 376
+#define ASR 377
+#define B 378
+#define W 379
+#define NS 380
+#define S 381
+#define CO 382
+#define SCO 383
+#define TH 384
+#define TL 385
+#define BP 386
+#define BREV 387
+#define X 388
+#define Z 389
+#define M 390
+#define MMOD 391
+#define R 392
+#define RND 393
+#define RNDL 394
+#define RNDH 395
+#define RND12 396
+#define RND20 397
+#define V 398
+#define LO 399
+#define HI 400
+#define BITTGL 401
+#define BITCLR 402
+#define BITSET 403
+#define BITTST 404
+#define BITMUX 405
+#define DBGAL 406
+#define DBGAH 407
+#define DBGHALT 408
+#define DBG 409
+#define DBGA 410
+#define DBGCMPLX 411
+#define IF 412
+#define COMMA 413
+#define BY 414
+#define COLON 415
+#define SEMICOLON 416
+#define RPAREN 417
+#define LPAREN 418
+#define LBRACK 419
+#define RBRACK 420
+#define STATUS_REG 421
+#define MNOP 422
+#define SYMBOL 423
+#define NUMBER 424
+#define GOT 425
+#define GOT17M4 426
+#define FUNCDESC_GOT17M4 427
+#define AT 428
+#define PLTPC 429
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 21 "bfin-parse.y"
+
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <obstack.h>
+
+#include "bfin-aux.h"  // opcode generating auxiliaries
+#include "libbfd.h"
+#include "elf/common.h"
+#include "elf/bfin.h"
+
+#define DSP32ALU(aopcde, HL, dst1, dst0, src0, src1, s, x, aop) \
+	bfin_gen_dsp32alu (HL, aopcde, aop, s, x, dst0, dst1, src0, src1)
+
+#define DSP32MAC(op1, MM, mmod, w1, P, h01, h11, h00, h10, dst, op0, src0, src1, w0) \
+	bfin_gen_dsp32mac (op1, MM, mmod, w1, P, h01, h11, h00, h10, op0, \
+	                   dst, src0, src1, w0)
+
+#define DSP32MULT(op1, MM, mmod, w1, P, h01, h11, h00, h10, dst, op0, src0, src1, w0) \
+	bfin_gen_dsp32mult (op1, MM, mmod, w1, P, h01, h11, h00, h10, op0, \
+	                    dst, src0, src1, w0)
+
+#define DSP32SHIFT(sopcde, dst0, src0, src1, sop, hls)  \
+	bfin_gen_dsp32shift (sopcde, dst0, src0, src1, sop, hls)
+
+#define DSP32SHIFTIMM(sopcde, dst0, immag, src1, sop, hls)  \
+	bfin_gen_dsp32shiftimm (sopcde, dst0, immag, src1, sop, hls)
+
+#define LDIMMHALF_R(reg, h, s, z, hword) \
+	bfin_gen_ldimmhalf (reg, h, s, z, hword, 1)
+
+#define LDIMMHALF_R5(reg, h, s, z, hword) \
+        bfin_gen_ldimmhalf (reg, h, s, z, hword, 2)
+
+#define LDSTIDXI(ptr, reg, w, sz, z, offset)  \
+	bfin_gen_ldstidxi (ptr, reg, w, sz, z, offset)
+
+#define LDST(ptr, reg, aop, sz, z, w)  \
+	bfin_gen_ldst (ptr, reg, aop, sz, z, w)
+
+#define LDSTII(ptr, reg, offset, w, op)  \
+	bfin_gen_ldstii (ptr, reg, offset, w, op)
+
+#define DSPLDST(i, m, reg, aop, w) \
+	bfin_gen_dspldst (i, reg, aop, w, m)
+
+#define LDSTPMOD(ptr, reg, idx, aop, w) \
+	bfin_gen_ldstpmod (ptr, reg, aop, w, idx)
+
+#define LDSTIIFP(offset, reg, w)  \
+	bfin_gen_ldstiifp (reg, offset, w)
+
+#define LOGI2OP(dst, src, opc) \
+	bfin_gen_logi2op (opc, src, dst.regno & CODE_MASK)
+
+#define ALU2OP(dst, src, opc)  \
+	bfin_gen_alu2op (dst, src, opc)
+
+#define BRCC(t, b, offset) \
+	bfin_gen_brcc (t, b, offset)
+
+#define UJUMP(offset) \
+	bfin_gen_ujump (offset)
+
+#define PROGCTRL(prgfunc, poprnd) \
+	bfin_gen_progctrl (prgfunc, poprnd)
+
+#define PUSHPOPMULTIPLE(dr, pr, d, p, w) \
+	bfin_gen_pushpopmultiple (dr, pr, d, p, w)
+
+#define PUSHPOPREG(reg, w) \
+	bfin_gen_pushpopreg (reg, w)
+
+#define CALLA(addr, s)  \
+	bfin_gen_calla (addr, s)
+
+#define LINKAGE(r, framesize) \
+	bfin_gen_linkage (r, framesize)
+
+#define COMPI2OPD(dst, src, op)  \
+	bfin_gen_compi2opd (dst, src, op)
+
+#define COMPI2OPP(dst, src, op)  \
+	bfin_gen_compi2opp (dst, src, op)
+
+#define DAGMODIK(i, op)  \
+	bfin_gen_dagmodik (i, op)
+
+#define DAGMODIM(i, m, op, br)  \
+	bfin_gen_dagmodim (i, m, op, br)
+
+#define COMP3OP(dst, src0, src1, opc)   \
+	bfin_gen_comp3op (src0, src1, dst, opc)
+
+#define PTR2OP(dst, src, opc)   \
+	bfin_gen_ptr2op (dst, src, opc)
+
+#define CCFLAG(x, y, opc, i, g)  \
+	bfin_gen_ccflag (x, y, opc, i, g)
+
+#define CCMV(src, dst, t) \
+	bfin_gen_ccmv (src, dst, t)
+
+#define CACTRL(reg, a, op) \
+	bfin_gen_cactrl (reg, a, op)
+
+#define LOOPSETUP(soffset, c, rop, eoffset, reg) \
+	bfin_gen_loopsetup (soffset, c, rop, eoffset, reg)
+
+#define HL2(r1, r0)  (IS_H (r1) << 1 | IS_H (r0))
+#define IS_RANGE(bits, expr, sign, mul)    \
+	value_match(expr, bits, sign, mul, 1)
+#define IS_URANGE(bits, expr, sign, mul)    \
+	value_match(expr, bits, sign, mul, 0)
+#define IS_CONST(expr) (expr->type == Expr_Node_Constant)
+#define IS_RELOC(expr) (expr->type != Expr_Node_Constant)
+#define IS_IMM(expr, bits)  value_match (expr, bits, 0, 1, 1)
+#define IS_UIMM(expr, bits)  value_match (expr, bits, 0, 1, 0)
+
+#define IS_PCREL4(expr) \
+	(value_match (expr, 4, 0, 2, 0))
+
+#define IS_LPPCREL10(expr) \
+	(value_match (expr, 10, 0, 2, 0))
+
+#define IS_PCREL10(expr) \
+	(value_match (expr, 10, 0, 2, 1))
+
+#define IS_PCREL12(expr) \
+	(value_match (expr, 12, 0, 2, 1))
+
+#define IS_PCREL24(expr) \
+	(value_match (expr, 24, 0, 2, 1))
+
+
+static int value_match (Expr_Node *expr, int sz, int sign, int mul, int issigned);
+
+extern FILE *errorf;
+extern INSTR_T insn;
+
+static Expr_Node *binary (Expr_Op_Type, Expr_Node *, Expr_Node *);
+static Expr_Node *unary  (Expr_Op_Type, Expr_Node *);
+
+static void notethat (char *format, ...);
+
+char *current_inputline;
+extern char *yytext;
+int yyerror (char *msg);
+
+void error (char *format, ...)
+{
+    va_list ap;
+    char buffer[2000];
+    
+    va_start (ap, format);
+    vsprintf (buffer, format, ap);
+    va_end (ap);
+
+    as_bad (buffer);
+}
+
+int
+yyerror (char *msg)
+{
+  if (msg[0] == '\0')
+    error ("%s", msg);
+
+  else if (yytext[0] != ';')
+    error ("%s. Input text was %s.", msg, yytext);
+  else
+    error ("%s.", msg);
+
+  return -1;
+}
+
+static int
+in_range_p (Expr_Node *expr, int from, int to, unsigned int mask)
+{
+  int val = EXPR_VALUE (expr);
+  if (expr->type != Expr_Node_Constant)
+    return 0;
+  if (val < from || val > to)
+    return 0;
+  return (val & mask) == 0;
+}
+
+extern int yylex (void);
+
+#define imm3(x) EXPR_VALUE (x)
+#define imm4(x) EXPR_VALUE (x)
+#define uimm4(x) EXPR_VALUE (x)
+#define imm5(x) EXPR_VALUE (x)
+#define uimm5(x) EXPR_VALUE (x)
+#define imm6(x) EXPR_VALUE (x)
+#define imm7(x) EXPR_VALUE (x)
+#define imm16(x) EXPR_VALUE (x)
+#define uimm16s4(x) ((EXPR_VALUE (x)) >> 2)
+#define uimm16(x) EXPR_VALUE (x)
+
+/* Return true if a value is inside a range.  */
+#define IN_RANGE(x, low, high) \
+  (((EXPR_VALUE(x)) >= (low)) && (EXPR_VALUE(x)) <= ((high)))
+
+/* Auxiliary functions.  */
+
+static void
+neg_value (Expr_Node *expr)
+{
+  expr->value.i_value = -expr->value.i_value;
+}
+
+static int
+valid_dreg_pair (Register *reg1, Expr_Node *reg2)
+{
+  if (!IS_DREG (*reg1))
+    {
+      yyerror ("Dregs expected");
+      return 0;
+    }
+
+  if (reg1->regno != 1 && reg1->regno != 3)
+    {
+      yyerror ("Bad register pair");
+      return 0;
+    }
+
+  if (imm7 (reg2) != reg1->regno - 1)
+    {
+      yyerror ("Bad register pair");
+      return 0;
+    }
+
+  reg1->regno--;
+  return 1;
+}
+
+static int
+check_multiply_halfregs (Macfunc *aa, Macfunc *ab)
+{
+  if ((!REG_EQUAL (aa->s0, ab->s0) && !REG_EQUAL (aa->s0, ab->s1))
+      || (!REG_EQUAL (aa->s1, ab->s1) && !REG_EQUAL (aa->s1, ab->s0)))
+    return yyerror ("Source multiplication register mismatch");
+
+  return 0;
+}
+
+
+/* Check (vector) mac funcs and ops.  */
+
+static int
+check_macfuncs (Macfunc *aa, Opt_mode *opa,
+		Macfunc *ab, Opt_mode *opb)
+{
+  /* Variables for swapping.  */
+  Macfunc mtmp;
+  Opt_mode otmp;
+
+  /* If a0macfunc comes before a1macfunc, swap them.  */
+	
+  if (aa->n == 0)
+    {
+      /*  (M) is not allowed here.  */
+      if (opa->MM != 0)
+	return yyerror ("(M) not allowed with A0MAC");
+      if (ab->n != 1)
+	return yyerror ("Vector AxMACs can't be same");
+
+      mtmp = *aa; *aa = *ab; *ab = mtmp;
+      otmp = *opa; *opa = *opb; *opb = otmp;
+    }
+  else
+    {
+      if (opb->MM != 0)
+	return yyerror ("(M) not allowed with A0MAC");
+      if (opa->mod != 0)
+	return yyerror ("Bad opt mode");
+      if (ab->n != 0)
+	return yyerror ("Vector AxMACs can't be same");
+    }
+
+  /*  If both ops are != 3, we have multiply_halfregs in both
+  assignment_or_macfuncs.  */
+  if (aa->op == ab->op && aa->op != 3)
+    {
+      if (check_multiply_halfregs (aa, ab) < 0)
+	return -1;
+    }
+  else
+    {
+      /*  Only one of the assign_macfuncs has a half reg multiply
+      Evil trick: Just 'OR' their source register codes:
+      We can do that, because we know they were initialized to 0
+      in the rules that don't use multiply_halfregs.  */
+      aa->s0.regno |= (ab->s0.regno & CODE_MASK);
+      aa->s1.regno |= (ab->s1.regno & CODE_MASK);
+    }
+
+  if (aa->w == ab->w  && aa->P != ab->P)
+    {
+      return yyerror ("macfuncs must differ");
+      if (aa->w && (aa->dst.regno - ab->dst.regno != 1))
+	return yyerror ("Destination Dregs must differ by one");
+    }
+  /* We assign to full regs, thus obey even/odd rules.  */
+  else if ((aa->w && aa->P && IS_EVEN (aa->dst)) 
+	   || (ab->w && ab->P && !IS_EVEN (ab->dst)))
+    return yyerror ("Even/Odd register assignment mismatch");
+  /* We assign to half regs, thus obey hi/low rules.  */
+  else if ( (aa->w && !aa->P && !IS_H (aa->dst)) 
+	    || (ab->w && !aa->P && IS_H (ab->dst)))
+    return yyerror ("High/Low register assignment mismatch");
+
+  /* Make sure first macfunc has got both P flags ORed.  */
+  aa->P |= ab->P;
+
+  /* Make sure mod flags get ORed, too.  */
+  opb->mod |= opa->mod;
+  return 0;	
+}
+
+
+static int
+is_group1 (INSTR_T x)
+{
+  /* Group1 is dpsLDST, LDSTpmod, LDST, LDSTiiFP, LDSTii.  */
+  if ((x->value & 0xc000) == 0x8000 || (x->value == 0x0000))
+    return 1;
+
+  return 0;
+}
+
+static int
+is_group2 (INSTR_T x)
+{
+  if ((((x->value & 0xfc00) == 0x9c00)  /* dspLDST.  */
+       && !((x->value & 0xfde0) == 0x9c60)  /* dagMODim.  */
+       && !((x->value & 0xfde0) == 0x9ce0)  /* dagMODim with bit rev.  */
+       && !((x->value & 0xfde0) == 0x9d60)) /* pick dagMODik.  */
+      || (x->value == 0x0000))
+    return 1;
+  return 0;
+}
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 366 "bfin-parse.y"
+typedef union YYSTYPE {
+  INSTR_T instr;
+  Expr_Node *expr;
+  SYMBOL_T symbol;
+  long value;
+  Register reg;
+  Macfunc macfunc;
+  struct { int r0; int s0; int x0; int aop; } modcodes;
+  struct { int r0; } r0;
+  Opt_mode mod;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 790 "bfin-parse.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 802 "bfin-parse.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  149
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1315
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  175
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  47
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  349
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  1024
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   429
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     4,     6,     9,    16,    21,    23,    25,
+      28,    34,    36,    43,    50,    54,    58,    76,    94,   106,
+     118,   130,   143,   156,   169,   175,   179,   183,   187,   196,
+     210,   223,   237,   251,   265,   274,   292,   299,   309,   313,
+     320,   324,   330,   337,   346,   355,   358,   361,   366,   370,
+     373,   378,   382,   389,   394,   402,   410,   414,   418,   425,
+     429,   434,   438,   442,   446,   458,   470,   480,   486,   492,
+     502,   508,   514,   521,   528,   534,   540,   546,   553,   560,
+     566,   568,   572,   576,   580,   584,   589,   594,   604,   614,
+     620,   628,   633,   640,   646,   653,   661,   671,   680,   689,
+     701,   711,   716,   722,   729,   737,   744,   749,   756,   762,
+     769,   776,   781,   790,   801,   812,   825,   831,   838,   844,
+     851,   856,   861,   866,   874,   884,   894,   904,   911,   918,
+     925,   934,   943,   950,   956,   962,   971,   976,   984,   986,
+     988,   990,   992,   994,   996,   998,  1000,  1002,  1004,  1007,
+    1010,  1015,  1020,  1027,  1034,  1037,  1040,  1045,  1048,  1051,
+    1054,  1057,  1060,  1063,  1070,  1077,  1083,  1088,  1092,  1096,
+    1100,  1104,  1108,  1112,  1117,  1120,  1125,  1128,  1133,  1136,
+    1141,  1144,  1152,  1161,  1170,  1178,  1186,  1194,  1204,  1212,
+    1221,  1231,  1240,  1247,  1255,  1264,  1274,  1283,  1291,  1299,
+    1306,  1310,  1322,  1330,  1342,  1350,  1354,  1357,  1359,  1367,
+    1377,  1389,  1393,  1399,  1407,  1409,  1412,  1415,  1420,  1422,
+    1429,  1436,  1443,  1445,  1447,  1448,  1454,  1460,  1464,  1468,
+    1472,  1476,  1477,  1479,  1481,  1483,  1485,  1487,  1488,  1492,
+    1493,  1497,  1501,  1502,  1506,  1510,  1516,  1522,  1523,  1527,
+    1531,  1532,  1536,  1540,  1541,  1545,  1549,  1553,  1559,  1565,
+    1566,  1570,  1571,  1575,  1577,  1579,  1581,  1583,  1584,  1588,
+    1592,  1596,  1602,  1608,  1610,  1612,  1614,  1615,  1619,  1620,
+    1624,  1629,  1634,  1636,  1638,  1640,  1642,  1644,  1646,  1648,
+    1650,  1654,  1658,  1662,  1666,  1672,  1678,  1684,  1690,  1694,
+    1698,  1704,  1710,  1711,  1713,  1715,  1718,  1721,  1724,  1728,
+    1730,  1736,  1742,  1746,  1749,  1752,  1755,  1759,  1761,  1763,
+    1765,  1767,  1771,  1775,  1779,  1783,  1785,  1787,  1789,  1791,
+    1795,  1797,  1799,  1803,  1805,  1807,  1811,  1814,  1817,  1819,
+    1823,  1827,  1831,  1835,  1839,  1843,  1847,  1851,  1855,  1859
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+     176,     0,    -1,    -1,   177,    -1,   178,   161,    -1,   178,
+      78,   178,    78,   178,   161,    -1,   178,    78,   178,   161,
+      -1,     1,    -1,   167,    -1,   209,   180,    -1,   209,   180,
+     158,   209,   180,    -1,    56,    -1,    26,    98,   163,   208,
+     179,   162,    -1,    36,    98,   163,   208,   179,   162,    -1,
+      33,    98,    36,    -1,    35,    98,    36,    -1,   163,    26,
+     158,    26,   162,    98,     3,   163,    26,   160,   220,   158,
+      26,   160,   220,   162,   193,    -1,   163,    26,   158,    26,
+     162,    98,     4,   163,    26,   160,   220,   158,    26,   160,
+     220,   162,   193,    -1,   163,    26,   158,    26,   162,    98,
+       9,    26,   160,   220,   193,    -1,   163,    26,   158,    26,
+     162,    98,    20,    26,   163,   192,   162,    -1,    26,    98,
+      34,    71,    35,   158,    26,    98,    32,    71,    33,    -1,
+      26,    98,   179,    71,   179,   158,    26,    98,   179,    70,
+     179,   185,    -1,    26,    98,    26,   202,    26,   158,    26,
+      98,    26,   202,    26,   185,    -1,    26,    98,    26,   201,
+      26,   158,    26,    98,    26,   201,    26,   186,    -1,    26,
+      98,    77,    26,   190,    -1,   206,    77,   179,    -1,    32,
+      98,    36,    -1,    34,    98,    36,    -1,    26,    98,   195,
+     163,    26,   158,    26,   162,    -1,    26,    98,     5,   163,
+      26,   160,   220,   158,    26,   160,   220,   162,   194,    -1,
+      26,    98,     5,   163,    26,   160,   220,   158,    26,   160,
+     220,   162,    -1,    26,    98,     6,   163,    26,   160,   220,
+     158,    26,   160,   220,   162,   203,    -1,    26,    98,     7,
+     163,    26,   160,   220,   158,    26,   160,   220,   162,   203,
+      -1,    26,    98,     8,   163,    26,   160,   220,   158,    26,
+     160,   220,   162,   204,    -1,    26,    98,    10,   163,    26,
+     158,    26,   162,    -1,    36,    98,    36,    98,    22,   163,
+      36,   162,    72,    36,    71,    22,   163,    36,   162,    72,
+      36,    -1,    26,    98,    26,   202,    26,   185,    -1,    26,
+      98,   200,   163,    26,   158,    26,   162,   190,    -1,   206,
+      70,   179,    -1,    36,    98,    36,   202,    36,   185,    -1,
+     206,   206,   220,    -1,   206,   179,   163,   126,   162,    -1,
+      36,    98,    26,   163,   138,   162,    -1,    36,    98,    26,
+     202,    26,   163,   141,   162,    -1,    36,    98,    26,   202,
+      26,   163,   142,   162,    -1,   206,   179,    -1,   206,    26,
+      -1,    26,    98,    36,   187,    -1,    36,    98,   220,    -1,
+     206,   220,    -1,    26,    98,   220,   188,    -1,    36,    98,
+      26,    -1,    26,    98,    26,   201,    26,   184,    -1,    26,
+      98,    29,   187,    -1,   206,    77,   179,   158,   206,    77,
+     179,    -1,   206,    70,   179,   158,   206,    70,   179,    -1,
+     207,   179,   196,    -1,    26,   103,   220,    -1,    26,   104,
+      26,   163,   132,   162,    -1,    26,   103,    26,    -1,   179,
+     104,   179,   196,    -1,    26,   104,    26,    -1,    26,   104,
+     220,    -1,    26,    99,    26,    -1,    12,   163,    26,   160,
+     220,   158,    26,   160,   220,   162,   193,    -1,   206,   179,
+     163,   126,   162,   158,   206,   179,   163,   126,   162,    -1,
+      26,    98,   163,    26,    71,    26,   162,    91,   220,    -1,
+      26,    98,    26,    66,    26,    -1,    26,    98,    26,    68,
+      26,    -1,    26,    98,    26,    71,   163,    26,    91,   220,
+     162,    -1,    28,    98,   179,   107,   179,    -1,    28,    98,
+     179,   112,   179,    -1,    28,    98,    26,   112,    26,   197,
+      -1,    28,    98,    26,   112,   220,   197,    -1,    28,    98,
+      26,   107,    26,    -1,    28,    98,    26,   107,   220,    -1,
+      28,    98,   179,   106,   179,    -1,    28,    98,    26,   106,
+      26,   197,    -1,    28,    98,    26,   106,   220,   197,    -1,
+      26,    98,    26,    65,    26,    -1,   213,    -1,    26,    98,
+      26,    -1,    28,    98,    26,    -1,    26,    98,    28,    -1,
+      28,   105,    28,    -1,    36,    98,   211,   180,    -1,    26,
+      98,   211,   180,    -1,    36,    98,   211,   180,   158,    36,
+      98,   211,   180,    -1,    26,    98,   211,   180,   158,    26,
+      98,   211,   180,    -1,   206,    87,   179,   159,    36,    -1,
+      36,    98,    87,    36,   159,    36,   191,    -1,   206,   179,
+      91,   220,    -1,    26,    98,    26,    91,   220,   189,    -1,
+      36,    98,    36,    91,   220,    -1,    36,    98,    36,    91,
+     220,   191,    -1,    26,    98,    87,    26,   159,    36,   189,
+      -1,    36,    98,    19,   163,    26,   158,    36,   162,   190,
+      -1,    36,    98,    19,   163,    36,   158,    36,   162,    -1,
+      26,    98,    18,   163,    26,   158,    26,   162,    -1,    26,
+      98,    18,   163,    26,   158,    26,   162,   163,   133,   162,
+      -1,    26,    98,    17,   163,    26,   158,    36,   162,   187,
+      -1,   206,   179,    93,   220,    -1,   206,    86,   179,   159,
+      36,    -1,    36,    98,    86,    36,   159,    36,    -1,    26,
+      98,    86,    26,   159,    36,   190,    -1,    26,    98,    85,
+      26,   159,    36,    -1,   206,   179,    92,   220,    -1,    26,
+      98,    26,    92,   220,   190,    -1,    36,    98,    36,    92,
+     220,    -1,    36,    98,    36,    93,   220,   191,    -1,    26,
+      98,    26,    93,   220,   189,    -1,    36,    98,    21,    26,
+      -1,    26,    98,    11,   163,    36,   158,    36,   162,    -1,
+      36,    98,    28,    98,    88,   163,   179,   158,    26,   162,
+      -1,    36,    98,    28,    98,    69,   163,   179,   158,    26,
+     162,    -1,    36,    98,    28,    98,    69,   163,   179,   158,
+     179,   158,    28,   162,    -1,   206,    90,   179,   159,    36,
+      -1,    26,    98,    90,    26,   159,    36,    -1,   206,    90,
+     179,   159,   220,    -1,    26,    98,    90,    26,   159,   220,
+      -1,    36,    98,    23,   179,    -1,    36,    98,    23,    26,
+      -1,    36,    98,    23,    36,    -1,    36,    98,    16,   163,
+      26,   162,   181,    -1,    26,    98,    16,   163,    26,   158,
+      26,   162,   181,    -1,   150,   163,    26,   158,    26,   158,
+     179,   162,   181,    -1,   206,    88,   163,   179,   158,   179,
+     158,    28,   162,    -1,   147,   163,    26,   158,   220,   162,
+      -1,   148,   163,    26,   158,   220,   162,    -1,   146,   163,
+      26,   158,   220,   162,    -1,    28,   105,   149,   163,    26,
+     158,   220,   162,    -1,    28,    98,   149,   163,    26,   158,
+     220,   162,    -1,   157,    64,    28,    26,    98,    26,    -1,
+     157,    28,    26,    98,    26,    -1,   157,    64,    28,    57,
+     220,    -1,   157,    64,    28,    57,   220,   163,   131,   162,
+      -1,   157,    28,    57,   220,    -1,   157,    28,    57,   220,
+     163,   131,   162,    -1,    37,    -1,    39,    -1,    38,    -1,
+      40,    -1,    41,    -1,    42,    -1,    44,    -1,    47,    -1,
+      48,    -1,    49,    -1,    46,    26,    -1,    45,    26,    -1,
+      57,   163,    26,   162,    -1,    60,   163,    26,   162,    -1,
+      60,   163,    27,    71,    26,   162,    -1,    57,   163,    27,
+      71,    26,   162,    -1,    50,   220,    -1,    51,   220,    -1,
+     120,   163,    26,   162,    -1,    57,   220,    -1,    58,   220,
+      -1,    59,   220,    -1,    59,   218,    -1,    60,   220,    -1,
+      60,   218,    -1,    97,   163,    26,   158,    26,   162,    -1,
+      96,   163,    26,   158,    26,   162,    -1,    26,    98,    70,
+      26,   189,    -1,    26,    98,    63,    26,    -1,    26,    95,
+      26,    -1,    26,    95,   220,    -1,    26,    89,    26,    -1,
+      26,    94,    26,    -1,    26,    94,   220,    -1,    26,    89,
+     220,    -1,   114,   164,    26,   165,    -1,   114,   199,    -1,
+     113,   164,    26,   165,    -1,   113,   199,    -1,   115,   164,
+      26,   165,    -1,   115,   199,    -1,   116,   164,    26,   165,
+      -1,   116,   199,    -1,   123,   164,    26,   205,   165,    98,
+      26,    -1,   123,   164,    26,   202,   220,   165,    98,    26,
+      -1,   124,   164,    26,   202,   220,   165,    98,    26,    -1,
+     124,   164,    26,   205,   165,    98,    26,    -1,   124,   164,
+      26,   205,   165,    98,    36,    -1,   164,    26,   202,   220,
+     165,    98,    26,    -1,    26,    98,   124,   164,    26,   202,
+     220,   165,   187,    -1,    36,    98,   124,   164,    26,   205,
+     165,    -1,    26,    98,   124,   164,    26,   205,   165,   187,
+      -1,    26,    98,   124,   164,    26,    84,    26,   165,   187,
+      -1,    36,    98,   124,   164,    26,    84,    26,   165,    -1,
+     164,    26,   205,   165,    98,    26,    -1,   164,    26,    84,
+      26,   165,    98,    26,    -1,   124,   164,    26,    84,    26,
+     165,    98,    36,    -1,    26,    98,   123,   164,    26,   202,
+     220,   165,   187,    -1,    26,    98,   123,   164,    26,   205,
+     165,   187,    -1,    26,    98,   164,    26,    84,    26,   165,
+      -1,    26,    98,   164,    26,   202,   217,   165,    -1,    26,
+      98,   164,    26,   205,   165,    -1,   220,    98,   220,    -1,
+     198,    98,   163,    26,   160,   220,   158,    26,   160,   220,
+     162,    -1,   198,    98,   163,    26,   160,   220,   162,    -1,
+     163,    26,   160,   220,   158,    26,   160,   220,   162,    98,
+     199,    -1,   163,    26,   160,   220,   162,    98,   199,    -1,
+     198,    98,    26,    -1,    24,   220,    -1,    25,    -1,    52,
+     163,   220,   158,   220,   162,    26,    -1,    52,   163,   220,
+     158,   220,   162,    26,    98,    26,    -1,    52,   163,   220,
+     158,   220,   162,    26,    98,    26,    92,   220,    -1,    53,
+     220,    26,    -1,    53,   220,    26,    98,    26,    -1,    53,
+     220,    26,    98,    26,    92,   220,    -1,   154,    -1,   154,
+     179,    -1,   154,    26,    -1,   156,   163,    26,   162,    -1,
+     153,    -1,   155,   163,    36,   158,   220,   162,    -1,   152,
+     163,    26,   158,   220,   162,    -1,   151,   163,    26,   158,
+     220,   162,    -1,    30,    -1,    31,    -1,    -1,   163,   135,
+     158,   136,   162,    -1,   163,   136,   158,   135,   162,    -1,
+     163,   136,   162,    -1,   163,   135,   162,    -1,   163,   121,
+     162,    -1,   163,   122,   162,    -1,    -1,   126,    -1,   127,
+      -1,   128,    -1,   121,    -1,   122,    -1,    -1,   163,   182,
+     162,    -1,    -1,   163,   125,   162,    -1,   163,   126,   162,
+      -1,    -1,   163,   183,   162,    -1,   163,   182,   162,    -1,
+     163,   183,   158,   182,   162,    -1,   163,   182,   158,   183,
+     162,    -1,    -1,   163,   134,   162,    -1,   163,   133,   162,
+      -1,    -1,   163,   133,   162,    -1,   163,   134,   162,    -1,
+      -1,   163,   125,   162,    -1,   163,   126,   162,    -1,   163,
+     143,   162,    -1,   163,   143,   158,   126,   162,    -1,   163,
+     126,   158,   143,   162,    -1,    -1,   163,   143,   162,    -1,
+      -1,   163,   126,   162,    -1,   108,    -1,   111,    -1,   110,
+      -1,   109,    -1,    -1,   163,   137,   162,    -1,   163,   137,
+     162,    -1,   163,   136,   162,    -1,   163,   136,   158,   137,
+     162,    -1,   163,   137,   158,   136,   162,    -1,    13,    -1,
+      14,    -1,    15,    -1,    -1,   163,   136,   162,    -1,    -1,
+     163,   136,   162,    -1,   164,    83,    26,   165,    -1,   164,
+      26,    84,   165,    -1,    75,    -1,    76,    -1,    79,    -1,
+      80,    -1,    81,    -1,    82,    -1,    71,    -1,    70,    -1,
+     163,   140,   162,    -1,   163,   129,   162,    -1,   163,   139,
+     162,    -1,   163,   130,   162,    -1,   163,   140,   158,   137,
+     162,    -1,   163,   129,   158,   137,   162,    -1,   163,   139,
+     158,   137,   162,    -1,   163,   130,   158,   137,   162,    -1,
+     163,   144,   162,    -1,   163,   145,   162,    -1,   163,   144,
+     158,   137,   162,    -1,   163,   145,   158,   137,   162,    -1,
+      -1,    84,    -1,    83,    -1,   179,    98,    -1,   179,   103,
+      -1,   179,   104,    -1,    26,    98,   179,    -1,   210,    -1,
+      26,    98,   163,   210,   162,    -1,    36,    98,   163,   210,
+     162,    -1,    36,    98,   179,    -1,   206,   211,    -1,   208,
+     211,    -1,   207,   211,    -1,    36,    72,    36,    -1,    98,
+      -1,   100,    -1,   102,    -1,   101,    -1,    28,   212,   166,
+      -1,    28,   212,   143,    -1,   166,   212,    28,    -1,   143,
+     212,    28,    -1,   168,    -1,   170,    -1,   171,    -1,   172,
+      -1,   214,   173,   215,    -1,   216,    -1,   220,    -1,   214,
+     173,   174,    -1,   169,    -1,   214,    -1,   163,   221,   162,
+      -1,    63,   221,    -1,    70,   221,    -1,   221,    -1,   221,
+      72,   221,    -1,   221,    73,   221,    -1,   221,    67,   221,
+      -1,   221,    71,   221,    -1,   221,    70,   221,    -1,   221,
+      91,   221,    -1,   221,    92,   221,    -1,   221,    65,   221,
+      -1,   221,    68,   221,    -1,   221,    66,   221,    -1,   219,
+      -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   567,   567,   568,   580,   582,   615,   642,   653,   657,
+     692,   712,   717,   727,   737,   742,   747,   763,   779,   791,
+     801,   814,   833,   851,   874,   896,   901,   911,   922,   933,
+     947,   962,   978,   994,  1010,  1021,  1035,  1061,  1079,  1084,
+    1090,  1102,  1113,  1124,  1135,  1146,  1157,  1168,  1194,  1208,
+    1218,  1263,  1282,  1293,  1304,  1315,  1326,  1337,  1353,  1370,
+    1386,  1397,  1408,  1439,  1450,  1463,  1474,  1513,  1523,  1533,
+    1553,  1563,  1573,  1583,  1594,  1602,  1612,  1622,  1633,  1657,
+    1668,  1674,  1685,  1696,  1707,  1715,  1736,  1761,  1788,  1822,
+    1836,  1847,  1861,  1895,  1905,  1915,  1940,  1952,  1970,  1981,
+    1992,  2003,  2016,  2027,  2038,  2049,  2060,  2071,  2104,  2114,
+    2127,  2147,  2158,  2169,  2182,  2195,  2206,  2217,  2228,  2239,
+    2249,  2260,  2271,  2283,  2294,  2305,  2316,  2329,  2341,  2353,
+    2364,  2375,  2386,  2398,  2410,  2421,  2432,  2443,  2453,  2459,
+    2465,  2471,  2477,  2483,  2489,  2495,  2501,  2507,  2513,  2524,
+    2535,  2546,  2557,  2568,  2579,  2590,  2596,  2607,  2618,  2629,
+    2640,  2651,  2661,  2674,  2682,  2690,  2714,  2725,  2736,  2747,
+    2758,  2769,  2781,  2794,  2803,  2814,  2825,  2837,  2848,  2859,
+    2870,  2884,  2896,  2911,  2930,  2941,  2959,  2993,  3011,  3028,
+    3039,  3050,  3061,  3082,  3101,  3114,  3128,  3140,  3156,  3196,
+    3229,  3237,  3253,  3272,  3286,  3305,  3321,  3329,  3338,  3349,
+    3361,  3375,  3383,  3393,  3405,  3410,  3415,  3421,  3429,  3435,
+    3441,  3447,  3460,  3464,  3474,  3478,  3483,  3488,  3493,  3500,
+    3504,  3511,  3515,  3520,  3525,  3533,  3537,  3544,  3548,  3556,
+    3561,  3567,  3576,  3581,  3587,  3593,  3599,  3608,  3611,  3615,
+    3622,  3625,  3629,  3636,  3641,  3647,  3653,  3659,  3664,  3672,
+    3675,  3682,  3685,  3692,  3696,  3700,  3704,  3711,  3714,  3721,
+    3726,  3733,  3740,  3752,  3756,  3760,  3767,  3770,  3780,  3783,
+    3792,  3798,  3807,  3811,  3818,  3822,  3826,  3830,  3837,  3841,
+    3848,  3856,  3864,  3872,  3880,  3887,  3894,  3902,  3912,  3917,
+    3922,  3927,  3935,  3938,  3942,  3951,  3958,  3965,  3972,  3987,
+    3993,  4001,  4009,  4027,  4034,  4041,  4051,  4064,  4068,  4072,
+    4076,  4083,  4089,  4095,  4101,  4111,  4120,  4122,  4124,  4128,
+    4136,  4140,  4147,  4153,  4159,  4163,  4167,  4171,  4177,  4183,
+    4187,  4191,  4195,  4199,  4203,  4207,  4211,  4215,  4219,  4223
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "BYTEOP16P", "BYTEOP16M", "BYTEOP1P",
+  "BYTEOP2P", "BYTEOP2M", "BYTEOP3P", "BYTEUNPACK", "BYTEPACK", "PACK",
+  "SAA", "ALIGN8", "ALIGN16", "ALIGN24", "VIT_MAX", "EXTRACT", "DEPOSIT",
+  "EXPADJ", "SEARCH", "ONES", "SIGN", "SIGNBITS", "LINK", "UNLINK", "REG",
+  "PC", "CCREG", "BYTE_DREG", "REG_A_DOUBLE_ZERO", "REG_A_DOUBLE_ONE",
+  "A_ZERO_DOT_L", "A_ZERO_DOT_H", "A_ONE_DOT_L", "A_ONE_DOT_H", "HALF_REG",
+  "NOP", "RTI", "RTS", "RTX", "RTN", "RTE", "HLT", "IDLE", "STI", "CLI",
+  "CSYNC", "SSYNC", "EMUEXCPT", "RAISE", "EXCPT", "LSETUP", "LOOP",
+  "LOOP_BEGIN", "LOOP_END", "DISALGNEXCPT", "JUMP", "JUMP_DOT_S",
+  "JUMP_DOT_L", "CALL", "ABORT", "NOT", "TILDA", "BANG", "AMPERSAND",
+  "BAR", "PERCENT", "CARET", "BXOR", "MINUS", "PLUS", "STAR", "SLASH",
+  "NEG", "MIN", "MAX", "ABS", "DOUBLE_BAR", "_PLUS_BAR_PLUS",
+  "_PLUS_BAR_MINUS", "_MINUS_BAR_PLUS", "_MINUS_BAR_MINUS", "_MINUS_MINUS",
+  "_PLUS_PLUS", "SHIFT", "LSHIFT", "ASHIFT", "BXORSHIFT",
+  "_GREATER_GREATER_GREATER_THAN_ASSIGN", "ROT", "LESS_LESS",
+  "GREATER_GREATER", "_GREATER_GREATER_GREATER", "_LESS_LESS_ASSIGN",
+  "_GREATER_GREATER_ASSIGN", "DIVS", "DIVQ", "ASSIGN", "_STAR_ASSIGN",
+  "_BAR_ASSIGN", "_CARET_ASSIGN", "_AMPERSAND_ASSIGN", "_MINUS_ASSIGN",
+  "_PLUS_ASSIGN", "_ASSIGN_BANG", "_LESS_THAN_ASSIGN", "_ASSIGN_ASSIGN",
+  "GE", "LT", "LE", "GT", "LESS_THAN", "FLUSHINV", "FLUSH", "IFLUSH",
+  "PREFETCH", "PRNT", "OUTC", "WHATREG", "TESTSET", "ASL", "ASR", "B", "W",
+  "NS", "S", "CO", "SCO", "TH", "TL", "BP", "BREV", "X", "Z", "M", "MMOD",
+  "R", "RND", "RNDL", "RNDH", "RND12", "RND20", "V", "LO", "HI", "BITTGL",
+  "BITCLR", "BITSET", "BITTST", "BITMUX", "DBGAL", "DBGAH", "DBGHALT",
+  "DBG", "DBGA", "DBGCMPLX", "IF", "COMMA", "BY", "COLON", "SEMICOLON",
+  "RPAREN", "LPAREN", "LBRACK", "RBRACK", "STATUS_REG", "MNOP", "SYMBOL",
+  "NUMBER", "GOT", "GOT17M4", "FUNCDESC_GOT17M4", "AT", "PLTPC", "$accept",
+  "statement", "asm", "asm_1", "REG_A", "opt_mode", "asr_asl", "sco",
+  "asr_asl_0", "amod0", "amod1", "amod2", "xpmod", "xpmod1", "vsmod",
+  "vmod", "smod", "searchmod", "aligndir", "byteop_mod", "c_align",
+  "w32_or_nothing", "iu_or_nothing", "reg_with_predec", "reg_with_postinc",
+  "min_max", "op_bar_op", "plus_minus", "rnd_op", "b3_op", "post_op",
+  "a_assign", "a_minusassign", "a_plusassign", "assign_macfunc",
+  "a_macfunc", "multiply_halfregs", "cc_op", "ccstat", "symbol",
+  "any_gotrel", "got", "got_or_expr", "pltpc", "eterm", "expr", "expr_1", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
+     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
+     425,   426,   427,   428,   429
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,   175,   176,   176,   177,   177,   177,   177,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   179,   179,   180,   180,   180,   180,   180,   181,
+     181,   182,   182,   182,   182,   183,   183,   184,   184,   185,
+     185,   185,   186,   186,   186,   186,   186,   187,   187,   187,
+     188,   188,   188,   189,   189,   189,   189,   189,   189,   190,
+     190,   191,   191,   192,   192,   192,   192,   193,   193,   194,
+     194,   194,   194,   195,   195,   195,   196,   196,   197,   197,
+     198,   199,   200,   200,   201,   201,   201,   201,   202,   202,
+     203,   203,   203,   203,   203,   203,   203,   203,   204,   204,
+     204,   204,   205,   205,   205,   206,   207,   208,   209,   209,
+     209,   209,   209,   210,   210,   210,   211,   212,   212,   212,
+     212,   213,   213,   213,   213,   214,   215,   215,   215,   216,
+     217,   217,   218,   219,   219,   219,   219,   219,   220,   221,
+     221,   221,   221,   221,   221,   221,   221,   221,   221,   221
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     0,     1,     2,     6,     4,     1,     1,     2,
+       5,     1,     6,     6,     3,     3,    17,    17,    11,    11,
+      11,    12,    12,    12,     5,     3,     3,     3,     8,    13,
+      12,    13,    13,    13,     8,    17,     6,     9,     3,     6,
+       3,     5,     6,     8,     8,     2,     2,     4,     3,     2,
+       4,     3,     6,     4,     7,     7,     3,     3,     6,     3,
+       4,     3,     3,     3,    11,    11,     9,     5,     5,     9,
+       5,     5,     6,     6,     5,     5,     5,     6,     6,     5,
+       1,     3,     3,     3,     3,     4,     4,     9,     9,     5,
+       7,     4,     6,     5,     6,     7,     9,     8,     8,    11,
+       9,     4,     5,     6,     7,     6,     4,     6,     5,     6,
+       6,     4,     8,    10,    10,    12,     5,     6,     5,     6,
+       4,     4,     4,     7,     9,     9,     9,     6,     6,     6,
+       8,     8,     6,     5,     5,     8,     4,     7,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       4,     4,     6,     6,     2,     2,     4,     2,     2,     2,
+       2,     2,     2,     6,     6,     5,     4,     3,     3,     3,
+       3,     3,     3,     4,     2,     4,     2,     4,     2,     4,
+       2,     7,     8,     8,     7,     7,     7,     9,     7,     8,
+       9,     8,     6,     7,     8,     9,     8,     7,     7,     6,
+       3,    11,     7,    11,     7,     3,     2,     1,     7,     9,
+      11,     3,     5,     7,     1,     2,     2,     4,     1,     6,
+       6,     6,     1,     1,     0,     5,     5,     3,     3,     3,
+       3,     0,     1,     1,     1,     1,     1,     0,     3,     0,
+       3,     3,     0,     3,     3,     5,     5,     0,     3,     3,
+       0,     3,     3,     0,     3,     3,     3,     5,     5,     0,
+       3,     0,     3,     1,     1,     1,     1,     0,     3,     3,
+       3,     5,     5,     1,     1,     1,     0,     3,     0,     3,
+       4,     4,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     3,     3,     3,     5,     5,     5,     5,     3,     3,
+       5,     5,     0,     1,     1,     2,     2,     2,     3,     1,
+       5,     5,     3,     2,     2,     2,     3,     1,     1,     1,
+       1,     3,     3,     3,     3,     1,     1,     1,     1,     3,
+       1,     1,     3,     1,     1,     3,     2,     2,     1,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned short int yydefact[] =
+{
+       0,     7,     0,     0,   207,     0,     0,   222,   223,     0,
+       0,     0,     0,     0,   138,   140,   139,   141,   142,   143,
+     144,     0,     0,   145,   146,   147,     0,     0,     0,     0,
+      11,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   218,   214,     0,     0,     0,     0,     0,
+       0,     8,   325,   333,     0,     3,     0,     0,     0,     0,
+       0,     0,   224,   309,    80,   334,   349,     0,   338,     0,
+       0,   206,     0,     0,     0,     0,     0,     0,     0,   317,
+     318,   320,   319,     0,     0,     0,     0,     0,     0,     0,
+     149,   148,   154,   155,     0,     0,     0,   157,   158,   334,
+     160,   159,     0,   162,   161,   336,   337,     0,     0,     0,
+     176,     0,   174,     0,   178,     0,   180,     0,     0,     0,
+     317,     0,     0,     0,     0,     0,     0,     0,   216,   215,
+       0,     0,     0,     0,     0,     0,   302,     0,     0,     1,
+       0,     4,   305,   306,   307,     0,    46,     0,     0,     0,
+       0,     0,     0,     0,    45,     0,   313,    49,   276,   315,
+     314,     0,     9,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   169,   172,   170,   171,   167,
+     168,     0,     0,     0,     0,     0,     0,   273,   274,   275,
+       0,     0,     0,    81,    83,   247,     0,   247,     0,     0,
+     282,   283,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   308,     0,     0,   224,   250,    63,    59,    57,    61,
+      62,    82,     0,     0,    84,     0,   322,   321,    26,    14,
+      27,    15,     0,     0,     0,     0,    51,     0,     0,     0,
+       0,     0,     0,   312,   224,    48,     0,   211,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     302,   302,   324,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   335,   289,   288,   304,
+     303,     0,     0,     0,   323,     0,   276,   205,     0,     0,
+      38,    25,     0,     0,     0,     0,     0,     0,     0,     0,
+      40,     0,    56,     0,     0,     0,   200,   346,   348,   341,
+     347,   343,   342,   339,   340,   344,   345,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     288,   284,   285,   286,   287,     0,     0,     0,     0,     0,
+       0,    53,     0,    47,   166,   253,   259,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   302,
+       0,     0,     0,    86,     0,    50,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   111,   121,   122,
+     120,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    85,     0,     0,   150,     0,   332,
+     151,     0,     0,     0,     0,   175,   173,   177,   179,   156,
+     303,     0,     0,   303,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   217,     0,   136,     0,     0,     0,     0,
+       0,     0,     0,   280,     0,     6,    60,     0,   316,     0,
+       0,     0,     0,     0,     0,    91,   106,   101,     0,     0,
+       0,   228,     0,   227,     0,     0,   224,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    79,    67,    68,
+       0,   253,   259,   253,   237,   239,     0,     0,     0,     0,
+     165,     0,    24,     0,     0,     0,     0,   302,   302,     0,
+     307,     0,   310,   303,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   278,   278,    74,    75,   278,   278,     0,
+      76,    70,    71,     0,     0,     0,     0,     0,     0,     0,
+       0,    93,   108,   261,     0,   239,     0,     0,   302,     0,
+     311,     0,     0,   212,     0,     0,     0,     0,   281,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   133,     0,     0,   134,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   102,    89,     0,   116,
+     118,    41,   277,     0,     0,     0,     0,    10,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    92,
+     107,   110,     0,   231,    52,     0,     0,    36,   249,   248,
+       0,     0,     0,     0,     0,   105,   259,   253,   117,   119,
+       0,     0,   303,     0,     0,     0,    12,     0,   334,   330,
+       0,   331,   199,     0,     0,     0,     0,   251,   252,    58,
+       0,    77,    78,    72,    73,     0,     0,     0,     0,     0,
+      42,     0,     0,     0,     0,    94,   109,     0,    39,   103,
+     261,   303,     0,    13,     0,     0,     0,   153,   152,   164,
+     163,     0,     0,     0,     0,     0,   129,   127,   128,     0,
+     221,   220,   219,     0,   132,     0,     0,     0,     0,     0,
+       0,   192,     5,     0,     0,     0,     0,     0,   225,   226,
+       0,   308,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   232,   233,   234,     0,     0,
+       0,     0,     0,   254,     0,   255,     0,   256,   260,   104,
+      95,     0,   247,     0,     0,   247,     0,   197,     0,   198,
+       0,     0,     0,     0,     0,     0,     0,     0,   123,     0,
+       0,     0,     0,     0,     0,     0,     0,    90,     0,   188,
+       0,   208,   213,     0,   181,     0,     0,   184,   185,     0,
+     137,     0,     0,     0,     0,     0,     0,     0,   204,   193,
+     186,     0,   202,    55,    54,     0,     0,     0,     0,     0,
+       0,     0,    34,   112,     0,   247,    98,     0,     0,   238,
+       0,   240,   241,     0,     0,     0,   247,   196,   247,   247,
+     189,     0,   326,   327,   328,   329,     0,    28,   259,   224,
+     279,   131,   130,     0,     0,   259,    97,    43,    44,     0,
+       0,   262,     0,   191,   224,     0,   182,   194,   183,     0,
+     135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   124,   100,     0,    69,     0,
+       0,     0,   258,   257,   195,   190,   187,    66,     0,    37,
+      88,   229,   230,    96,     0,     0,     0,     0,    87,   209,
+     125,     0,     0,     0,     0,     0,     0,   126,     0,   267,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   114,
+       0,   113,     0,     0,     0,     0,   267,   263,   266,   265,
+     264,     0,     0,     0,     0,     0,    64,     0,     0,     0,
+       0,    99,   242,   239,    20,   239,     0,     0,   210,     0,
+       0,    18,    19,   203,   201,    65,     0,    30,     0,     0,
+       0,   231,    23,    22,    21,   115,     0,     0,     0,   268,
+       0,    29,     0,    31,    32,     0,    33,   235,   236,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   244,   231,   243,     0,     0,     0,     0,
+     270,     0,   269,     0,   291,     0,   293,     0,   292,     0,
+     290,     0,   298,     0,   299,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   246,   245,
+       0,   267,   267,   271,   272,   295,   297,   296,   294,   300,
+     301,    35,    16,    17
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,    64,    65,    66,   364,   172,   748,   718,   960,   604,
+     607,   942,   351,   375,   490,   492,   655,   911,   916,   951,
+     222,   312,   641,    68,   120,   223,   348,   291,   953,   956,
+     292,   365,   366,    71,    72,    73,   170,    94,    74,    75,
+     815,   629,   630,   110,    76,    77,    78
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -903
+static const short int yypact[] =
+{
+     697,  -903,   -94,   277,  -903,   676,   315,  -903,  -903,    23,
+      32,    41,    58,    65,  -903,  -903,  -903,  -903,  -903,  -903,
+    -903,   121,   158,  -903,  -903,  -903,   277,   277,    29,   277,
+    -903,   318,   277,   277,   320,   277,   277,    94,   100,    64,
+     104,   108,   131,   137,   152,   165,   376,   160,   171,   176,
+     182,   219,   238,  -903,   566,   244,   251,    79,    96,    44,
+     376,  -903,  -903,  -903,   350,  -903,   -57,   187,   337,    63,
+     245,   394,   278,  -903,  -903,  -903,  -903,   349,   563,   436,
+     277,  -903,   146,   159,   167,   489,   438,   186,   188,    37,
+    -903,  -903,  -903,    15,  -118,   446,   462,   480,   485,    28,
+    -903,  -903,  -903,  -903,   277,   513,    50,  -903,  -903,   353,
+    -903,  -903,    85,  -903,  -903,  -903,  -903,   521,   534,   537,
+    -903,   542,  -903,   567,  -903,   575,  -903,   578,   583,   585,
+    -903,   619,   590,   598,   630,   651,   656,   680,  -903,  -903,
+     677,   693,    62,   692,   204,   470,   200,   698,   712,  -903,
+     886,  -903,  -903,  -903,   180,    -6,  -903,   419,   302,   180,
+     180,   180,   589,   180,    97,   277,  -903,  -903,   595,  -903,
+    -903,   297,   568,   277,   277,   277,   277,   277,   277,   277,
+     277,   277,   277,   277,   591,  -903,  -903,  -903,  -903,  -903,
+    -903,   599,   600,   601,   603,   605,   606,  -903,  -903,  -903,
+     609,   613,   614,   580,  -903,   615,   688,   -38,   210,   226,
+    -903,  -903,   735,   755,   756,   757,   759,   622,   623,    98,
+     762,   718,   627,   628,   278,   629,  -903,  -903,  -903,   632,
+    -903,   205,   633,   332,  -903,   634,  -903,  -903,  -903,  -903,
+    -903,  -903,   635,   636,   774,   449,   -25,   703,   227,   766,
+     768,   641,   302,  -903,   278,  -903,   648,   709,   647,   743,
+     642,   653,   747,   661,   664,   -62,   -31,   -19,    16,   662,
+     326,   372,  -903,   665,   667,   668,   669,   670,   671,   672,
+     673,   733,   277,    84,   806,   277,  -903,  -903,  -903,  -903,
+     808,   277,   674,   690,  -903,   -16,   595,  -903,   810,   801,
+     683,   684,   679,   699,   180,   700,   277,   277,   277,   730,
+    -903,   721,  -903,   -26,   116,   520,  -903,   441,   616,  -903,
+     457,   313,   313,  -903,  -903,   500,   500,   277,   836,   841,
+     842,   843,   844,   835,   846,   848,   849,   850,   851,   852,
+     716,  -903,  -903,  -903,  -903,   277,   277,   277,   855,   856,
+     316,  -903,   857,  -903,  -903,   722,   723,   725,   732,   734,
+     736,   868,   870,   826,   487,   394,   394,   245,   737,   389,
+     180,   877,   878,   748,   324,  -903,   773,   243,   268,   300,
+     881,   180,   180,   180,   882,   883,   189,  -903,  -903,  -903,
+    -903,   775,   903,   110,   277,   277,   277,   918,   905,   788,
+     789,   924,   245,   790,   793,   277,   927,  -903,   928,  -903,
+    -903,   929,   931,   932,   794,  -903,  -903,  -903,  -903,  -903,
+    -903,   277,   795,   935,   277,   797,   277,   277,   277,   937,
+     277,   277,   277,  -903,   938,   802,   869,   277,   804,   179,
+     803,   805,   871,  -903,   886,  -903,  -903,   811,  -903,   180,
+     180,   936,   940,   815,    72,  -903,  -903,  -903,   816,   817,
+     845,  -903,   853,  -903,   879,   887,   278,   822,   824,   827,
+     829,   830,   828,   833,   834,   837,   838,  -903,  -903,  -903,
+     967,   722,   723,   722,   -66,    92,   832,   854,   839,    95,
+    -903,   860,  -903,   962,   968,   969,   124,   326,   474,   981,
+    -903,   858,  -903,   982,   277,   847,   859,   861,   863,   985,
+     862,   864,   865,   867,   867,  -903,  -903,   867,   867,   873,
+    -903,  -903,  -903,   888,   866,   889,   890,   894,   872,   895,
+     896,   897,  -903,   897,   898,   899,   977,   978,   426,   901,
+    -903,   979,   902,   926,   904,   906,   907,   908,  -903,   880,
+     925,   892,   900,   946,   909,   910,   911,   893,   912,   913,
+     914,  -903,   891,   999,   915,   983,  1041,   984,   986,   987,
+    1051,   919,   277,   988,  1009,  1006,  -903,  -903,   180,  -903,
+    -903,   930,  -903,   933,   934,     2,     6,  -903,  1061,   277,
+     277,   277,   277,  1063,  1054,  1065,  1056,  1067,  1003,  -903,
+    -903,  -903,  1071,   427,  -903,  1072,   455,  -903,  -903,  -903,
+    1073,   939,   190,   209,   941,  -903,   723,   722,  -903,  -903,
+     277,   942,  1074,   277,   943,   944,  -903,   945,   947,  -903,
+     948,  -903,  -903,  1076,  1078,  1079,  1011,  -903,  -903,  -903,
+     975,  -903,  -903,  -903,  -903,   277,   277,   949,  1080,  1081,
+    -903,   497,   180,   180,   989,  -903,  -903,  1082,  -903,  -903,
+     897,  1088,   954,  -903,  1023,  1096,   277,  -903,  -903,  -903,
+    -903,  1025,  1098,  1027,  1028,   191,  -903,  -903,  -903,   180,
+    -903,  -903,  -903,   965,  -903,   997,   357,   970,   971,  1103,
+    1105,  -903,  -903,   246,   180,   180,   974,   180,  -903,  -903,
+     180,  -903,   180,   973,   976,   980,   990,   991,   992,   993,
+     994,   995,   996,   277,  1038,  -903,  -903,  -903,   998,  1039,
+    1000,  1001,  1042,  -903,  1002,  -903,  1013,  -903,  -903,  -903,
+    -903,  1004,   615,  1005,  1007,   615,  1050,  -903,   533,  -903,
+    1044,  1012,  1014,   394,  1015,  1016,  1017,   477,  -903,  1018,
+    1019,  1020,  1021,  1008,  1010,  1022,  1024,  -903,  1026,  -903,
+     394,  1045,  -903,  1118,  -903,  1110,  1121,  -903,  -903,  1030,
+    -903,  1031,  1032,  1033,  1124,  1125,   277,  1126,  -903,  -903,
+    -903,  1127,  -903,  -903,  -903,  1131,   180,   277,  1135,  1138,
+    1139,  1141,  -903,  -903,   949,   615,  1034,  1036,  1145,  -903,
+    1147,  -903,  -903,  1143,  1037,  1040,   615,  -903,   615,   615,
+    -903,   277,  -903,  -903,  -903,  -903,   180,  -903,   723,   278,
+    -903,  -903,  -903,  1043,  1046,   723,  -903,  -903,  -903,   588,
+    1159,  -903,  1115,  -903,   278,  1162,  -903,  -903,  -903,   949,
+    -903,  1163,  1164,  1047,  1048,  1052,  1116,  1049,  1053,  1055,
+    1057,  1060,  1062,  1064,  1066,  -903,  -903,  1068,  -903,   586,
+     624,  1123,  -903,  -903,  -903,  -903,  -903,  -903,  1133,  -903,
+    -903,  -903,  -903,  -903,  1059,  1058,  1069,  1168,  -903,  1114,
+    -903,  1070,  1075,   277,   582,  1112,   277,  -903,  1086,  1077,
+     277,   277,   277,   277,  1083,  1187,  1191,  1190,   180,  -903,
+    1197,  -903,  1156,   277,   277,   277,  1077,  -903,  -903,  -903,
+    -903,  1084,   971,  1085,  1087,  1091,  -903,  1089,  1090,  1092,
+    1093,  -903,  1094,   899,  -903,   899,  1097,  1207,  -903,  1095,
+    1100,  -903,  -903,  -903,  -903,  -903,  1099,  1101,  1102,  1102,
+    1104,   456,  -903,  -903,  -903,  -903,  1106,  1206,  1208,  -903,
+     579,  -903,   229,  -903,  -903,   555,  -903,  -903,  -903,   264,
+     448,  1200,  1108,  1111,   463,   464,   465,   479,   482,   516,
+     517,   518,   596,  -903,   427,  -903,  1113,   277,   277,  1107,
+    -903,  1120,  -903,  1129,  -903,  1136,  -903,  1137,  -903,  1140,
+    -903,  1142,  -903,  1144,  -903,  1122,  1128,  1161,  1130,  1132,
+    1134,  1146,  1148,  1149,  1150,  1151,  1152,  1153,  -903,  -903,
+    1201,  1077,  1077,  -903,  -903,  -903,  -903,  -903,  -903,  -903,
+    -903,  -903,  -903,  -903
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+    -903,  -903,  -903,  -134,    17,  -219,  -716,  -902,   266,  -903,
+    -520,  -903,  -201,  -903,  -443,  -472,  -478,  -903,  -788,  -903,
+    -903,   952,  -275,  -903,   -39,  -903,   380,  -196,   303,  -903,
+    -252,     4,     8,  -162,   955,  -210,   -58,    49,  -903,   -20,
+    -903,  -903,  -903,  1209,  -903,    -3,    25
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -3
+static const short int yytable[] =
+{
+      81,   122,   124,   126,    69,   373,   353,   349,    70,   368,
+     600,   166,   169,   109,   109,   658,   295,    67,   422,   425,
+     297,   150,   414,   102,   103,   236,   105,   224,   107,   108,
+     111,   114,     7,     8,   299,   404,     7,     8,   599,   959,
+     601,   254,   403,   234,   242,   287,   288,   243,   237,   244,
+     392,   245,   398,   414,   246,   656,   247,   367,     7,     8,
+     115,   116,   444,   231,   248,   414,   167,     7,     8,    79,
+     146,   139,   996,   165,   421,   424,   258,   259,   855,   186,
+     188,   190,   225,   145,   228,   230,   164,   168,   281,   156,
+     402,    35,   602,     7,     8,   131,   255,   603,    36,   157,
+     414,   256,   221,   415,   151,   145,   233,   142,   579,   148,
+     436,   261,   262,    35,   249,   250,   253,   505,   931,   282,
+      36,    95,   144,   880,   363,   350,    35,   147,     7,     8,
+      96,   145,   460,   158,   416,    35,   461,   145,   391,    97,
+     159,   437,    36,   143,   729,   445,   417,   100,    35,   160,
+     161,   162,   251,   163,    69,    36,    98,   298,    70,    35,
+     618,    35,   310,    99,   235,   700,    36,    67,    36,   702,
+     316,   296,   185,   504,   730,   300,   301,   302,   303,   529,
+     305,   418,   757,   116,   101,   187,   232,    35,   306,   307,
+     308,   252,   104,   189,    36,   152,    62,    63,   530,   317,
+     318,   319,   320,   321,   322,   323,   324,   325,   326,    35,
+       7,     8,   227,    80,   229,   525,    36,   767,    62,    63,
+     611,   612,    35,  1022,  1023,   526,    80,   768,   119,    36,
+      35,    62,    63,   115,   116,    80,   354,    36,   613,   642,
+      62,    63,   643,   644,   145,   621,   624,   587,    80,    35,
+     605,    35,   355,    62,    63,   606,    36,   117,    36,    80,
+     309,    80,   390,   118,    62,    63,    62,    63,   121,   513,
+     287,   288,   123,    35,   462,     7,     8,   145,   463,   435,
+      36,   157,   439,   289,   290,   152,   662,    80,   441,    35,
+     153,   154,    62,    63,   515,   125,    36,   287,   288,   299,
+     127,   620,   623,   455,   456,   457,    35,   166,   169,    80,
+     571,   377,   378,    36,    62,    63,   128,   379,   394,   395,
+     396,   453,    80,   132,   467,   397,   517,    62,    63,   129,
+      80,    35,     7,     8,   133,    62,    63,   566,    36,   134,
+      35,   567,   481,   482,   483,   135,   869,    36,   724,    80,
+     149,    80,   725,   873,    62,    63,    62,    63,   966,   967,
+     772,   773,   284,    35,   285,    35,   774,   726,   968,   969,
+      36,   727,    36,    80,   514,   516,   518,   775,    62,    63,
+     176,    35,   136,    35,   501,   180,   181,   506,    36,    80,
+      36,   531,   532,   533,    62,    63,   287,   288,   520,   521,
+     522,   137,   542,   943,   781,   944,    80,   140,   782,   289,
+     420,    62,    63,    89,   141,    90,    91,    92,   549,   539,
+      93,   552,   972,   554,   555,   556,   973,   558,   559,   560,
+     157,    80,   313,   314,   564,   155,    62,    63,   381,   382,
+      80,   171,   287,   288,   383,    62,    63,   173,    69,   486,
+     487,   580,    70,   574,   575,   289,   423,   510,   511,   287,
+     288,    67,   184,    80,   226,    80,   573,   573,    62,    63,
+      62,    63,   289,   503,   130,   388,    90,    91,    92,     7,
+       8,   106,   238,   112,   628,   389,    62,    63,    62,    63,
+     368,   299,   403,   619,   191,   192,   193,   194,   239,   195,
+     196,   631,   197,   198,   199,   200,   201,   202,   176,   289,
+     661,   178,   179,   180,   181,   203,   240,   204,   205,     7,
+       8,   241,   174,   206,   176,   207,   260,   178,   179,   180,
+     181,   807,   182,   183,   810,   174,   175,   176,   177,   257,
+     178,   179,   180,   181,   287,   288,   464,   263,   182,   183,
+       7,     8,   208,   715,   716,   717,   465,   289,   622,   209,
+     264,   182,   183,   265,   210,   211,   212,   176,   266,   693,
+     178,   179,   180,   181,   213,   214,   215,   957,   958,   216,
+     720,   721,   715,   716,   717,   152,   704,   705,   706,   707,
+     153,   500,   138,   267,   856,   696,     7,     8,   823,   824,
+     870,   268,   701,   253,   269,   864,   974,   865,   866,   270,
+     975,   271,   217,   218,   874,   878,   273,   731,     7,     8,
+     734,   979,   981,   983,   274,   980,   982,   984,   174,   175,
+     176,   177,   286,   178,   179,   180,   181,   985,   751,   752,
+     987,   986,   745,   746,   988,   337,   338,   272,   339,   778,
+     287,   340,   219,   220,   182,   183,   275,    62,    63,   341,
+     342,   343,   344,   762,   896,   341,   342,   343,   344,   753,
+     754,   345,   346,   347,   989,   991,   993,   276,   990,   992,
+     994,   174,   277,   176,   177,   819,   178,   179,   180,   181,
+     907,   908,   909,   910,   287,   288,   769,    -2,     1,   970,
+     971,   786,   834,   812,   813,   814,   278,   182,   183,     2,
+     797,   783,   784,   279,   573,   964,   965,   957,   958,   280,
+     283,     3,     4,     5,   293,     6,   315,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+     294,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,   327,   304,    30,    31,    32,    33,    34,   311,   352,
+      35,   356,   328,   329,   330,    82,   331,    36,   332,   333,
+      83,    84,   334,   845,    85,    86,   335,   336,   350,    87,
+      88,   357,   358,   359,   850,   360,   361,   362,   369,   370,
+     371,   372,   374,    37,    38,   376,   380,   384,   385,   386,
+     387,   393,   399,   849,   400,   401,   405,   406,   867,   407,
+      39,    40,    41,    42,   408,   410,   409,    43,   411,   412,
+      44,    45,   413,   426,   419,   427,   428,   429,   430,   431,
+     432,   434,   438,   868,   440,   433,   447,   448,   451,   442,
+      46,   449,   450,    47,    48,    49,   875,    50,    51,    52,
+      53,    54,    55,    56,    57,   443,   458,   459,   452,   454,
+      58,    59,   468,    60,    61,    62,    63,   469,   470,   471,
+     472,   473,   474,   933,   475,   476,   477,   478,   479,   480,
+     906,   484,   485,   913,   493,   489,   491,   917,   918,   919,
+     920,   494,   488,   495,   497,   496,   498,   499,     2,   502,
+     928,   929,   930,   507,   508,   512,   509,   519,   523,   524,
+       3,     4,     5,   527,     6,   925,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,   528,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+     534,   535,    30,    31,    32,    33,    34,   536,   537,    35,
+     538,   541,   540,   543,   544,   545,    36,   546,   547,   548,
+     550,   551,   553,   557,   561,   562,   565,   563,   568,   570,
+     569,   572,   576,   578,   998,   999,   577,   585,   581,   582,
+     588,   583,    37,    38,   589,   586,   593,   590,   584,   591,
+     592,   594,   595,   598,   608,   596,   597,   610,   615,    39,
+      40,    41,    42,   614,   616,   617,    43,   625,   627,    44,
+      45,   636,   632,   659,   660,   664,   609,   633,   666,   634,
+     626,   635,   683,   672,   637,   684,   638,   639,   647,    46,
+     640,   645,    47,    48,    49,   651,    50,    51,    52,    53,
+      54,    55,    56,    57,   675,   671,   646,   648,   649,    58,
+      59,   679,    60,    61,    62,    63,   650,   673,   652,   653,
+     654,   657,   606,   663,   665,   674,   667,   687,   668,   669,
+     670,   676,   677,   678,   680,   681,   682,   691,   685,   694,
+     692,   686,   688,   695,   689,   690,   152,   703,   697,   708,
+     709,   710,   711,   712,   713,   698,   699,   714,   719,   722,
+     733,   723,   740,   728,   741,   742,   736,   732,   735,   743,
+     737,   744,   747,   739,   758,   755,   749,   750,   756,   759,
+     738,   760,   761,   763,   764,   765,   766,   770,   771,   779,
+     776,   780,   785,   787,   788,   777,   798,   800,   789,   805,
+     803,   811,   816,   835,   836,   804,   837,   838,   790,   791,
+     843,   844,   846,   847,   792,   793,   794,   795,   796,   848,
+     799,   851,   801,   802,   852,   853,   829,   854,   830,   806,
+     808,   859,   809,   860,   817,   861,   818,   820,   821,   822,
+     825,   826,   827,   828,   831,   876,   832,   877,   879,   881,
+     882,   833,   839,   840,   897,   841,   842,   857,   858,   862,
+     414,   894,   863,   898,   902,   871,   903,   883,   872,   886,
+     912,   884,   914,   922,   885,   887,   900,   923,   888,   889,
+     890,   899,   891,   924,   892,   926,   893,   927,   936,   946,
+     904,   901,   962,  1010,   963,   905,   976,  1021,   995,   895,
+     915,     0,   954,   113,  1000,   921,   932,   934,   446,   935,
+       0,   937,   938,   947,   939,   940,  1001,   941,   948,   945,
+       0,   949,     0,     0,   950,   952,  1002,   955,   977,   961,
+     466,   978,     0,  1003,  1004,   997,     0,  1005,     0,  1006,
+       0,  1007,     0,     0,  1008,     0,     0,     0,     0,     0,
+    1009,     0,  1011,     0,  1012,     0,  1013,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  1014,     0,
+    1015,  1016,  1017,  1018,  1019,  1020
+};
+
+static const short int yycheck[] =
+{
+       3,    40,    41,    42,     0,   224,   207,   203,     0,   219,
+     482,    69,    70,    33,    34,   535,   150,     0,   270,   271,
+      26,    78,    84,    26,    27,   143,    29,    85,    31,    32,
+      33,    34,    30,    31,    72,   254,    30,    31,   481,   941,
+     483,    99,   252,    28,    16,    70,    71,    19,   166,    21,
+     246,    23,   248,    84,    26,   533,    28,   219,    30,    31,
+      35,    36,    78,    26,    36,    84,    69,    30,    31,   163,
+      26,    54,   974,    69,   270,   271,    26,    27,   794,    82,
+      83,    84,    85,    58,    87,    88,    69,    70,    26,    26,
+     252,    63,   158,    30,    31,    46,    99,   163,    70,    36,
+      84,   104,    85,   165,   161,    80,    89,    28,    36,    60,
+      26,    26,    27,    63,    86,    87,    99,   369,   906,    57,
+      70,    98,    26,   839,    26,   163,    63,    83,    30,    31,
+      98,   106,   158,    70,   165,    63,   162,   112,   163,    98,
+      77,    57,    70,    64,   616,   161,   165,    26,    63,    86,
+      87,    88,   124,    90,   150,    70,    98,   163,   150,    63,
+      36,    63,   165,    98,   149,   163,    70,   150,    70,   163,
+     173,   154,    26,   369,   617,   158,   159,   160,   161,    69,
+     163,   165,   660,   158,    26,    26,   149,    63,    91,    92,
+      93,   163,   163,    26,    70,    98,   168,   169,    88,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,    63,
+      30,    31,    26,   163,    26,    26,    70,    26,   168,   169,
+     125,   126,    63,  1011,  1012,    36,   163,    36,   164,    70,
+      63,   168,   169,   208,   209,   163,    26,    70,   143,   514,
+     168,   169,   517,   518,   219,   497,   498,   466,   163,    63,
+     158,    63,    26,   168,   169,   163,    70,   163,    70,   163,
+     163,   163,   245,   163,   168,   169,   168,   169,   164,    26,
+      70,    71,   164,    63,   158,    30,    31,   252,   162,   282,
+      70,    36,   285,    83,    84,    98,   538,   163,   291,    63,
+     103,   104,   168,   169,    26,   164,    70,    70,    71,    72,
+     163,   497,   498,   306,   307,   308,    63,   365,   366,   163,
+     444,   106,   107,    70,   168,   169,   164,   112,    91,    92,
+      93,   304,   163,   163,   327,    98,    26,   168,   169,   164,
+     163,    63,    30,    31,   163,   168,   169,   158,    70,   163,
+      63,   162,   345,   346,   347,   163,   818,    70,   158,   163,
+       0,   163,   162,   825,   168,   169,   168,   169,   129,   130,
+       3,     4,   158,    63,   160,    63,     9,   158,   139,   140,
+      70,   162,    70,   163,   377,   378,   379,    20,   168,   169,
+      67,    63,   163,    63,   367,    72,    73,   370,    70,   163,
+      70,   394,   395,   396,   168,   169,    70,    71,   381,   382,
+     383,   163,   405,   923,   158,   925,   163,   163,   162,    83,
+      84,   168,   169,    98,   163,   100,   101,   102,   421,   402,
+     105,   424,   158,   426,   427,   428,   162,   430,   431,   432,
+      36,   163,   135,   136,   437,    98,   168,   169,   106,   107,
+     163,   163,    70,    71,   112,   168,   169,    98,   444,   133,
+     134,   454,   444,   449,   450,    83,    84,   133,   134,    70,
+      71,   444,    26,   163,    26,   163,   449,   450,   168,   169,
+     168,   169,    83,    84,    98,    26,   100,   101,   102,    30,
+      31,   163,    36,   163,   504,    36,   168,   169,   168,   169,
+     700,    72,   702,   496,     5,     6,     7,     8,    36,    10,
+      11,   504,    13,    14,    15,    16,    17,    18,    67,    83,
+      84,    70,    71,    72,    73,    26,    36,    28,    29,    30,
+      31,    36,    65,    34,    67,    36,   173,    70,    71,    72,
+      73,   732,    91,    92,   735,    65,    66,    67,    68,    26,
+      70,    71,    72,    73,    70,    71,    26,    26,    91,    92,
+      30,    31,    63,   126,   127,   128,    36,    83,    84,    70,
+      26,    91,    92,    26,    75,    76,    77,    67,    26,   572,
+      70,    71,    72,    73,    85,    86,    87,   121,   122,    90,
+     125,   126,   126,   127,   128,    98,   589,   590,   591,   592,
+     103,   104,    26,    26,   795,   578,    30,    31,   121,   122,
+     819,    26,   585,   586,    26,   806,   158,   808,   809,    26,
+     162,    26,   123,   124,    26,   834,    26,   620,    30,    31,
+     623,   158,   158,   158,    26,   162,   162,   162,    65,    66,
+      67,    68,   162,    70,    71,    72,    73,   158,   141,   142,
+     158,   162,   645,   646,   162,    65,    66,    28,    68,   688,
+      70,    71,   163,   164,    91,    92,    26,   168,   169,    79,
+      80,    81,    82,   666,   860,    79,    80,    81,    82,   652,
+     653,    91,    92,    93,   158,   158,   158,    26,   162,   162,
+     162,    65,    26,    67,    68,   743,    70,    71,    72,    73,
+     108,   109,   110,   111,    70,    71,   679,     0,     1,   144,
+     145,   697,   760,   170,   171,   172,    26,    91,    92,    12,
+     713,   694,   695,    36,   697,   136,   137,   121,   122,    26,
+      28,    24,    25,    26,    26,    28,   158,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      28,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,   160,   163,    56,    57,    58,    59,    60,   163,    71,
+      63,    26,   163,   163,   163,    89,   163,    70,   163,   163,
+      94,    95,   163,   776,    98,    99,   163,   163,   163,   103,
+     104,    26,    26,    26,   787,    26,   164,   164,    26,    71,
+     163,   163,   163,    96,    97,   163,   163,   163,   163,   163,
+      26,    98,    36,   786,    36,   164,   158,    98,   811,   162,
+     113,   114,   115,   116,    71,   162,   174,   120,    71,   158,
+     123,   124,   158,   158,   162,   158,   158,   158,   158,   158,
+     158,    98,    26,   816,    26,   162,    26,    36,   159,   165,
+     143,   158,   158,   146,   147,   148,   829,   150,   151,   152,
+     153,   154,   155,   156,   157,   165,   126,   136,   159,   159,
+     163,   164,    26,   166,   167,   168,   169,    26,    26,    26,
+      26,    36,    26,   912,    26,    26,    26,    26,    26,   163,
+     883,    26,    26,   886,   159,   163,   163,   890,   891,   892,
+     893,   159,    35,   159,    26,   159,    26,    71,    12,   162,
+     903,   904,   905,    26,    26,   132,   158,    26,    26,    26,
+      24,    25,    26,   138,    28,   898,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    26,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      22,    36,    56,    57,    58,    59,    60,   159,   159,    63,
+      26,   158,   162,    26,    26,    26,    70,    26,    26,   165,
+     165,    26,   165,    26,    26,   163,   162,    98,   165,    98,
+     165,   160,    36,   158,   977,   978,    36,    98,   162,   162,
+     158,   136,    96,    97,   160,    98,   158,   160,   135,   160,
+     160,   158,   158,    26,   162,   158,   158,   158,    36,   113,
+     114,   115,   116,   143,    36,    36,   120,    26,    26,   123,
+     124,    26,   165,    36,    36,    36,   162,   158,    92,   158,
+     162,   158,   131,    98,   162,    26,   162,   162,   162,   143,
+     163,   158,   146,   147,   148,   163,   150,   151,   152,   153,
+     154,   155,   156,   157,    98,   165,   158,   158,   158,   163,
+     164,   158,   166,   167,   168,   169,   162,   165,   163,   163,
+     163,   163,   163,   162,   162,   165,   162,    26,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,    26,   163,    70,
+     161,    98,    98,    77,    98,    98,    98,    26,   158,    26,
+      36,    26,    36,    26,    91,   162,   162,    26,    26,    26,
+      26,   162,    26,   162,    26,    26,   162,   165,   165,    98,
+     165,   136,   163,   165,    26,   126,    36,    36,    36,   165,
+     173,    98,    26,    98,    26,    98,    98,   162,   131,    26,
+     160,    26,   158,   160,   158,   164,    98,    98,   158,   126,
+      98,    91,    98,    98,    26,   143,    36,    26,   158,   158,
+      26,    26,    26,    26,   162,   162,   162,   162,   162,    28,
+     162,    26,   162,   162,    26,    26,   158,    26,   158,   165,
+     165,    26,   165,    26,   162,    32,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,    26,   162,    72,    26,    26,
+      26,   165,   162,   162,    71,   163,   163,   163,   162,   162,
+      84,   133,   162,    70,    36,   162,    92,   160,   162,   160,
+      98,   163,   126,    26,   162,   162,   158,    26,   163,   162,
+     160,   162,   160,    33,   160,    28,   160,    71,   137,    22,
+     160,   162,    26,    72,    26,   160,    36,    36,   972,   859,
+     163,    -1,   939,    34,   137,   162,   162,   162,   296,   162,
+      -1,   162,   162,   158,   162,   162,   136,   163,   158,   162,
+      -1,   162,    -1,    -1,   163,   163,   137,   163,   160,   163,
+     315,   160,    -1,   137,   137,   162,    -1,   137,    -1,   137,
+      -1,   137,    -1,    -1,   162,    -1,    -1,    -1,    -1,    -1,
+     162,    -1,   162,    -1,   162,    -1,   162,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   162,    -1,
+     162,   162,   162,   162,   162,   162
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,     1,    12,    24,    25,    26,    28,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      56,    57,    58,    59,    60,    63,    70,    96,    97,   113,
+     114,   115,   116,   120,   123,   124,   143,   146,   147,   148,
+     150,   151,   152,   153,   154,   155,   156,   157,   163,   164,
+     166,   167,   168,   169,   176,   177,   178,   179,   198,   206,
+     207,   208,   209,   210,   213,   214,   219,   220,   221,   163,
+     163,   220,    89,    94,    95,    98,    99,   103,   104,    98,
+     100,   101,   102,   105,   212,    98,    98,    98,    98,    98,
+      26,    26,   220,   220,   163,   220,   163,   220,   220,   214,
+     218,   220,   163,   218,   220,   221,   221,   163,   163,   164,
+     199,   164,   199,   164,   199,   164,   199,   163,   164,   164,
+      98,   212,   163,   163,   163,   163,   163,   163,    26,   179,
+     163,   163,    28,    64,    26,   221,    26,    83,   212,     0,
+      78,   161,    98,   103,   104,    98,    26,    36,    70,    77,
+      86,    87,    88,    90,   179,   206,   211,   220,   179,   211,
+     211,   163,   180,    98,    65,    66,    67,    68,    70,    71,
+      72,    73,    91,    92,    26,    26,   220,    26,   220,    26,
+     220,     5,     6,     7,     8,    10,    11,    13,    14,    15,
+      16,    17,    18,    26,    28,    29,    34,    36,    63,    70,
+      75,    76,    77,    85,    86,    87,    90,   123,   124,   163,
+     164,   179,   195,   200,   211,   220,    26,    26,   220,    26,
+     220,    26,   149,   179,    28,   149,   143,   166,    36,    36,
+      36,    36,    16,    19,    21,    23,    26,    28,    36,    86,
+      87,   124,   163,   179,   211,   220,   220,    26,    26,    27,
+     173,    26,    27,    26,    26,    26,    26,    26,    26,    26,
+      26,    26,    28,    26,    26,    26,    26,    26,    26,    36,
+      26,    26,    57,    28,   158,   160,   162,    70,    71,    83,
+      84,   202,   205,    26,    28,   178,   179,    26,   163,    72,
+     179,   179,   179,   179,   163,   179,    91,    92,    93,   163,
+     220,   163,   196,   135,   136,   158,   220,   221,   221,   221,
+     221,   221,   221,   221,   221,   221,   221,   160,   163,   163,
+     163,   163,   163,   163,   163,   163,   163,    65,    66,    68,
+      71,    79,    80,    81,    82,    91,    92,    93,   201,   202,
+     163,   187,    71,   187,    26,    26,    26,    26,    26,    26,
+      26,   164,   164,    26,   179,   206,   207,   208,   210,    26,
+      71,   163,   163,   180,   163,   188,   163,   106,   107,   112,
+     163,   106,   107,   112,   163,   163,   163,    26,    26,    36,
+     179,   163,   202,    98,    91,    92,    93,    98,   202,    36,
+      36,   164,   208,   210,   180,   158,    98,   162,    71,   174,
+     162,    71,   158,   158,    84,   165,   165,   165,   165,   162,
+      84,   202,   205,    84,   202,   205,   158,   158,   158,   158,
+     158,   158,   158,   162,    98,   220,    26,    57,    26,   220,
+      26,   220,   165,   165,    78,   161,   196,    26,    36,   158,
+     158,   159,   159,   179,   159,   220,   220,   220,   126,   136,
+     158,   162,   158,   162,    26,    36,   209,   220,    26,    26,
+      26,    26,    26,    36,    26,    26,    26,    26,    26,    26,
+     163,   220,   220,   220,    26,    26,   133,   134,    35,   163,
+     189,   163,   190,   159,   159,   159,   159,    26,    26,    71,
+     104,   179,   162,    84,   202,   205,   179,    26,    26,   158,
+     133,   134,   132,    26,   220,    26,   220,    26,   220,    26,
+     179,   179,   179,    26,    26,    26,    36,   138,    26,    69,
+      88,   220,   220,   220,    22,    36,   159,   159,    26,   179,
+     162,   158,   220,    26,    26,    26,    26,    26,   165,   220,
+     165,    26,   220,   165,   220,   220,   220,    26,   220,   220,
+     220,    26,   163,    98,   220,   162,   158,   162,   165,   165,
+      98,   178,   160,   179,   206,   206,    36,    36,   158,    36,
+     220,   162,   162,   136,   135,    98,    98,   180,   158,   160,
+     160,   160,   160,   158,   158,   158,   158,   158,    26,   189,
+     190,   189,   158,   163,   184,   158,   163,   185,   162,   162,
+     158,   125,   126,   143,   143,    36,    36,    36,    36,   220,
+     202,   205,    84,   202,   205,    26,   162,    26,   214,   216,
+     217,   220,   165,   158,   158,   158,    26,   162,   162,   162,
+     163,   197,   197,   197,   197,   158,   158,   162,   158,   158,
+     162,   163,   163,   163,   163,   191,   191,   163,   185,    36,
+      36,    84,   205,   162,    36,   162,    92,   162,   162,   162,
+     162,   165,    98,   165,   165,    98,   162,   162,   162,   158,
+     162,   162,   162,   131,    26,   163,    98,    26,    98,    98,
+      98,    26,   161,   220,    70,    77,   179,   158,   162,   162,
+     163,   179,   163,    26,   220,   220,   220,   220,    26,    36,
+      26,    36,    26,    91,    26,   126,   127,   128,   182,    26,
+     125,   126,    26,   162,   158,   162,   158,   162,   162,   190,
+     189,   220,   165,    26,   220,   165,   162,   165,   173,   165,
+      26,    26,    26,    98,   136,   220,   220,   163,   181,    36,
+      36,   141,   142,   179,   179,   126,    36,   191,    26,   165,
+      98,    26,   220,    98,    26,    98,    98,    26,    36,   179,
+     162,   131,     3,     4,     9,    20,   160,   164,   199,    26,
+      26,   158,   162,   179,   179,   158,   206,   160,   158,   158,
+     158,   158,   162,   162,   162,   162,   162,   220,    98,   162,
+      98,   162,   162,    98,   143,   126,   165,   187,   165,   165,
+     187,    91,   170,   171,   172,   215,    98,   162,   162,   211,
+     162,   162,   162,   121,   122,   162,   162,   162,   162,   158,
+     158,   162,   162,   165,   211,    98,    26,    36,    26,   162,
+     162,   163,   163,    26,    26,   220,    26,    26,    28,   179,
+     220,    26,    26,    26,    26,   181,   187,   163,   162,    26,
+      26,    32,   162,   162,   187,   187,   187,   220,   179,   190,
+     180,   162,   162,   190,    26,   179,    26,    72,   180,    26,
+     181,    26,    26,   160,   163,   162,   160,   162,   163,   162,
+     160,   160,   160,   160,   133,   201,   202,    71,    70,   162,
+     158,   162,    36,    92,   160,   160,   220,   108,   109,   110,
+     111,   192,    98,   220,   126,   163,   193,   220,   220,   220,
+     220,   162,    26,    26,    33,   179,    28,    71,   220,   220,
+     220,   193,   162,   199,   162,   162,   137,   162,   162,   162,
+     162,   163,   186,   185,   185,   162,    22,   158,   158,   162,
+     163,   194,   163,   203,   203,   163,   204,   121,   122,   182,
+     183,   163,    26,    26,   136,   137,   129,   130,   139,   140,
+     144,   145,   158,   162,   158,   162,    36,   160,   160,   158,
+     162,   158,   162,   158,   162,   158,   162,   158,   162,   158,
+     162,   158,   162,   158,   162,   183,   182,   162,   220,   220,
+     137,   136,   137,   137,   137,   137,   137,   137,   162,   162,
+      72,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,    36,   193,   193
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 3:
+#line 569 "bfin-parse.y"
+    {
+	  insn = (yyvsp[0].instr);
+	  if (insn == (INSTR_T) 0)
+	    return NO_INSN_GENERATED;
+	  else if (insn == (INSTR_T) - 1)
+	    return SEMANTIC_ERROR;
+	  else
+	    return INSN_GENERATED;
+	}
+    break;
+
+  case 5:
+#line 583 "bfin-parse.y"
+    {
+	  if (((yyvsp[-5].instr)->value & 0xf800) == 0xc000)
+	    {
+	      if (is_group1 ((yyvsp[-3].instr)) && is_group2 ((yyvsp[-1].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-5].instr), (yyvsp[-3].instr), (yyvsp[-1].instr));
+	      else if (is_group2 ((yyvsp[-3].instr)) && is_group1 ((yyvsp[-1].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-5].instr), (yyvsp[-1].instr), (yyvsp[-3].instr));
+	      else
+		return yyerror ("Wrong 16 bit instructions groups, slot 2 and slot 3 must be 16-bit instrution group");
+	    }
+	  else if (((yyvsp[-3].instr)->value & 0xf800) == 0xc000)
+	    {
+	      if (is_group1 ((yyvsp[-5].instr)) && is_group2 ((yyvsp[-1].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-3].instr), (yyvsp[-5].instr), (yyvsp[-1].instr));
+	      else if (is_group2 ((yyvsp[-5].instr)) && is_group1 ((yyvsp[-1].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-3].instr), (yyvsp[-1].instr), (yyvsp[-5].instr));
+	      else
+		return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 3 must be 16-bit instrution group");
+	    }
+	  else if (((yyvsp[-1].instr)->value & 0xf800) == 0xc000)
+	    {
+	      if (is_group1 ((yyvsp[-5].instr)) && is_group2 ((yyvsp[-3].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-1].instr), (yyvsp[-5].instr), (yyvsp[-3].instr));
+	      else if (is_group2 ((yyvsp[-5].instr)) && is_group1 ((yyvsp[-3].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-1].instr), (yyvsp[-3].instr), (yyvsp[-5].instr));
+	      else
+		return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be 16-bit instrution group");
+	    }
+	  else
+	    error ("\nIllegal Multi Issue Construct, at least any one of the slot must be DSP32 instruction group\n");
+	}
+    break;
+
+  case 6:
+#line 616 "bfin-parse.y"
+    {
+	  if (((yyvsp[-3].instr)->value & 0xf800) == 0xc000)
+	    {
+	      if (is_group1 ((yyvsp[-1].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-3].instr), (yyvsp[-1].instr), 0);
+	      else if (is_group2 ((yyvsp[-1].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-3].instr), 0, (yyvsp[-1].instr));
+	      else
+		return yyerror ("Wrong 16 bit instructions groups, slot 2 must be the 16-bit instruction group");
+	    }
+	  else if (((yyvsp[-1].instr)->value & 0xf800) == 0xc000)
+	    {
+	      if (is_group1 ((yyvsp[-3].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-1].instr), (yyvsp[-3].instr), 0);
+	      else if (is_group2 ((yyvsp[-3].instr)))
+		(yyval.instr) = bfin_gen_multi_instr ((yyvsp[-1].instr), 0, (yyvsp[-3].instr));
+	      else
+		return yyerror ("Wrong 16 bit instructions groups, slot 1 must be the 16-bit instruction group");
+	    }
+	  else if (is_group1 ((yyvsp[-3].instr)) && is_group2 ((yyvsp[-1].instr)))
+	      (yyval.instr) = bfin_gen_multi_instr (0, (yyvsp[-3].instr), (yyvsp[-1].instr));
+	  else if (is_group2 ((yyvsp[-3].instr)) && is_group1 ((yyvsp[-1].instr)))
+	    (yyval.instr) = bfin_gen_multi_instr (0, (yyvsp[-1].instr), (yyvsp[-3].instr));
+	  else
+	    return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be the 16-bit instruction group");
+	}
+    break;
+
+  case 7:
+#line 643 "bfin-parse.y"
+    {
+	(yyval.instr) = 0;
+	yyerror ("");
+	yyerrok;
+	}
+    break;
+
+  case 8:
+#line 654 "bfin-parse.y"
+    {
+	  (yyval.instr) = DSP32MAC (3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0);
+	}
+    break;
+
+  case 9:
+#line 658 "bfin-parse.y"
+    {
+	  int op0, op1;
+	  int w0 = 0, w1 = 0;
+	  int h00, h10, h01, h11;
+
+	  if ((yyvsp[-1].macfunc).n == 0)
+	    {
+	      if ((yyvsp[0].mod).MM) 
+		return yyerror ("(m) not allowed with a0 unit");
+	      op1 = 3;
+	      op0 = (yyvsp[-1].macfunc).op;
+	      w1 = 0;
+              w0 = (yyvsp[-1].macfunc).w;
+	      h00 = IS_H ((yyvsp[-1].macfunc).s0);
+              h10 = IS_H ((yyvsp[-1].macfunc).s1);
+	      h01 = h11 = 0;
+	    }
+	  else
+	    {
+	      op1 = (yyvsp[-1].macfunc).op;
+	      op0 = 3;
+	      w1 = (yyvsp[-1].macfunc).w;
+              w0 = 0;
+	      h00 = h10 = 0;
+	      h01 = IS_H ((yyvsp[-1].macfunc).s0);
+              h11 = IS_H ((yyvsp[-1].macfunc).s1);
+	    }
+	  (yyval.instr) = DSP32MAC (op1, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, w1, (yyvsp[-1].macfunc).P, h01, h11, h00, h10,
+			 &(yyvsp[-1].macfunc).dst, op0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, w0);
+	}
+    break;
+
+  case 10:
+#line 693 "bfin-parse.y"
+    {
+	  Register *dst;
+
+	  if (check_macfuncs (&(yyvsp[-4].macfunc), &(yyvsp[-3].mod), &(yyvsp[-1].macfunc), &(yyvsp[0].mod)) < 0) 
+	    return -1;
+	  notethat ("assign_macfunc (.), assign_macfunc (.)\n");
+
+	  if ((yyvsp[-4].macfunc).w)
+	    dst = &(yyvsp[-4].macfunc).dst;
+	  else
+	    dst = &(yyvsp[-1].macfunc).dst;
+
+	  (yyval.instr) = DSP32MAC ((yyvsp[-4].macfunc).op, (yyvsp[-3].mod).MM, (yyvsp[0].mod).mod, (yyvsp[-4].macfunc).w, (yyvsp[-4].macfunc).P,
+			 IS_H ((yyvsp[-4].macfunc).s0),  IS_H ((yyvsp[-4].macfunc).s1), IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1),
+			 dst, (yyvsp[-1].macfunc).op, &(yyvsp[-4].macfunc).s0, &(yyvsp[-4].macfunc).s1, (yyvsp[-1].macfunc).w);
+	}
+    break;
+
+  case 11:
+#line 713 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: DISALGNEXCPT\n");
+	  (yyval.instr) = DSP32ALU (18, 0, 0, 0, 0, 0, 0, 0, 3);
+	}
+    break;
+
+  case 12:
+#line 718 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && !IS_A1 ((yyvsp[-2].reg)) && IS_A1 ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = ( A0 += A1 )\n");
+	      (yyval.instr) = DSP32ALU (11, 0, 0, &(yyvsp[-5].reg), 0, 0, 0, 0, 0);
+	    }
+	  else 
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 13:
+#line 728 "bfin-parse.y"
+    {
+	  if (!IS_A1 ((yyvsp[-2].reg)) && IS_A1 ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs_half = ( A0 += A1 )\n");
+	      (yyval.instr) = DSP32ALU (11, IS_H ((yyvsp[-5].reg)), 0, &(yyvsp[-5].reg), 0, 0, 0, 0, 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 14:
+#line 738 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n");
+	  (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 0);
+	}
+    break;
+
+  case 15:
+#line 743 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n");
+	  (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 2);
+	}
+    break;
+
+  case 16:
+#line 749 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-15].reg)) || !IS_DREG ((yyvsp[-13].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: (dregs , dregs ) = BYTEOP16P (dregs_pair , dregs_pair ) (half)\n");
+	      (yyval.instr) = DSP32ALU (21, 0, &(yyvsp[-15].reg), &(yyvsp[-13].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0, 0);
+	    }
+	}
+    break;
+
+  case 17:
+#line 765 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-15].reg)) || !IS_DREG((yyvsp[-13].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: (dregs , dregs ) = BYTEOP16M (dregs_pair , dregs_pair ) (aligndir)\n");
+	      (yyval.instr) = DSP32ALU (21, 0, &(yyvsp[-15].reg), &(yyvsp[-13].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0, 1);
+	    }
+	}
+    break;
+
+  case 18:
+#line 780 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-9].reg)) || !IS_DREG ((yyvsp[-7].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-3].reg), (yyvsp[-1].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: (dregs , dregs ) = BYTEUNPACK dregs_pair (aligndir)\n");
+	      (yyval.instr) = DSP32ALU (24, 0, &(yyvsp[-9].reg), &(yyvsp[-7].reg), &(yyvsp[-3].reg), 0, (yyvsp[0].r0).r0, 0, 1);
+	    }
+	}
+    break;
+
+  case 19:
+#line 792 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-9].reg)) && IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32alu: (dregs , dregs ) = SEARCH dregs (searchmod)\n");
+	      (yyval.instr) = DSP32ALU (13, 0, &(yyvsp[-9].reg), &(yyvsp[-7].reg), &(yyvsp[-3].reg), 0, 0, 0, (yyvsp[-1].r0).r0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 20:
+#line 803 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-10].reg)) && IS_DREG ((yyvsp[-4].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = A1.l + A1.h, dregs = A0.l + A0.h  \n");
+	      (yyval.instr) = DSP32ALU (12, 0, &(yyvsp[-10].reg), &(yyvsp[-4].reg), 0, 0, 0, 0, 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 21:
+#line 815 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-11].reg)) && IS_DREG ((yyvsp[-5].reg)) && !REG_SAME ((yyvsp[-9].reg), (yyvsp[-7].reg))
+	      && IS_A1 ((yyvsp[-3].reg)) && !IS_A1 ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = A1 + A0 , dregs = A1 - A0 (amod1)\n");
+	      (yyval.instr) = DSP32ALU (17, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), 0, 0, (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, 0);
+	      
+	    }
+	  else if (IS_DREG ((yyvsp[-11].reg)) && IS_DREG ((yyvsp[-5].reg)) && !REG_SAME ((yyvsp[-9].reg), (yyvsp[-7].reg))
+		   && !IS_A1 ((yyvsp[-3].reg)) && IS_A1 ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = A0 + A1 , dregs = A0 - A1 (amod1)\n");
+	      (yyval.instr) = DSP32ALU (17, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), 0, 0, (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 22:
+#line 834 "bfin-parse.y"
+    {
+	  if ((yyvsp[-8].r0).r0 == (yyvsp[-2].r0).r0) 
+	    return yyerror ("Operators must differ");
+
+	  if (IS_DREG ((yyvsp[-11].reg)) && IS_DREG ((yyvsp[-9].reg)) && IS_DREG ((yyvsp[-7].reg))
+	      && REG_SAME ((yyvsp[-9].reg), (yyvsp[-3].reg)) && REG_SAME ((yyvsp[-7].reg), (yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = dregs + dregs,"
+		       "dregs = dregs - dregs (amod1)\n");
+	      (yyval.instr) = DSP32ALU (4, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), &(yyvsp[-9].reg), &(yyvsp[-7].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, 2);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 23:
+#line 852 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-9].reg), (yyvsp[-3].reg)) || !REG_SAME ((yyvsp[-7].reg), (yyvsp[-1].reg)))
+	    return yyerror ("Differing source registers");
+
+	  if (!IS_DREG ((yyvsp[-11].reg)) || !IS_DREG ((yyvsp[-9].reg)) || !IS_DREG ((yyvsp[-7].reg)) || !IS_DREG ((yyvsp[-5].reg))) 
+	    return yyerror ("Dregs expected");
+
+	
+	  if ((yyvsp[-8].r0).r0 == 1 && (yyvsp[-2].r0).r0 == 2)
+	    {
+	      notethat ("dsp32alu:  dregs = dregs .|. dregs , dregs = dregs .|. dregs (amod2)\n");
+	      (yyval.instr) = DSP32ALU (1, 1, &(yyvsp[-11].reg), &(yyvsp[-5].reg), &(yyvsp[-9].reg), &(yyvsp[-7].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).r0);
+	    }
+	  else if ((yyvsp[-8].r0).r0 == 0 && (yyvsp[-2].r0).r0 == 3)
+	    {
+	      notethat ("dsp32alu:  dregs = dregs .|. dregs , dregs = dregs .|. dregs (amod2)\n");
+	      (yyval.instr) = DSP32ALU (1, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), &(yyvsp[-9].reg), &(yyvsp[-7].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).r0);
+	    }
+	  else
+	    return yyerror ("Bar operand mismatch");
+	}
+    break;
+
+  case 24:
+#line 875 "bfin-parse.y"
+    {
+	  int op;
+
+	  if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      if ((yyvsp[0].r0).r0)
+		{
+		  notethat ("dsp32alu: dregs = ABS dregs (v)\n");
+		  op = 6;
+		}
+	      else
+		{
+		  /* Vector version of ABS.  */
+		  notethat ("dsp32alu: dregs = ABS dregs\n");
+		  op = 7;
+		}
+	      (yyval.instr) = DSP32ALU (op, 0, 0, &(yyvsp[-4].reg), &(yyvsp[-1].reg), 0, 0, 0, 2);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 25:
+#line 897 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: Ax = ABS Ax\n");
+	  (yyval.instr) = DSP32ALU (16, IS_A1 ((yyvsp[-2].reg)), 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[0].reg)));
+	}
+    break;
+
+  case 26:
+#line 902 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32alu: A0.l = reg_half\n");
+	      (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 0);
+	    }
+	  else
+	    return yyerror ("A0.l = Rx.l expected");
+	}
+    break;
+
+  case 27:
+#line 912 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32alu: A1.l = reg_half\n");
+	      (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 2);
+	    }
+	  else
+	    return yyerror ("A1.l = Rx.l expected");
+	}
+    break;
+
+  case 28:
+#line 923 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = ALIGN8 (dregs , dregs )\n");
+	      (yyval.instr) = DSP32SHIFT (13, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), (yyvsp[-5].r0).r0, 0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 29:
+#line 934 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-12].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: dregs = BYTEOP1P (dregs_pair , dregs_pair ) (T)\n");
+	      (yyval.instr) = DSP32ALU (20, 0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, 0, (yyvsp[0].modcodes).r0);
+	    }
+	}
+    break;
+
+  case 30:
+#line 948 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-11].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-7].reg), (yyvsp[-5].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-3].reg), (yyvsp[-1].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: dregs = BYTEOP1P (dregs_pair , dregs_pair ) (T)\n");
+	      (yyval.instr) = DSP32ALU (20, 0, 0, &(yyvsp[-11].reg), &(yyvsp[-7].reg), &(yyvsp[-3].reg), 0, 0, 0);
+	    }
+	}
+    break;
+
+  case 31:
+#line 964 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-12].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: dregs = BYTEOP2P (dregs_pair , dregs_pair ) (rnd_op)\n");
+	      (yyval.instr) = DSP32ALU (22, (yyvsp[0].modcodes).r0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).aop);
+	    }
+	}
+    break;
+
+  case 32:
+#line 980 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-12].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: dregs = BYTEOP2P (dregs_pair , dregs_pair ) (rnd_op)\n");
+	      (yyval.instr) = DSP32ALU (22, (yyvsp[0].modcodes).r0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, 0, (yyvsp[0].modcodes).x0);
+	    }
+	}
+    break;
+
+  case 33:
+#line 996 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-12].reg)))
+	    return yyerror ("Dregs expected");
+	  else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: dregs = BYTEOP3P (dregs_pair , dregs_pair ) (b3_op)\n");
+	      (yyval.instr) = DSP32ALU (23, (yyvsp[0].modcodes).x0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, 0, 0);
+	    }
+	}
+    break;
+
+  case 34:
+#line 1011 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = BYTEPACK (dregs , dregs )\n");
+	      (yyval.instr) = DSP32ALU (24, 0, 0, &(yyvsp[-7].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), 0, 0, 0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 35:
+#line 1023 "bfin-parse.y"
+    {
+	  if (IS_HCOMPL ((yyvsp[-16].reg), (yyvsp[-14].reg)) && IS_HCOMPL ((yyvsp[-10].reg), (yyvsp[-3].reg)) && IS_HCOMPL ((yyvsp[-7].reg), (yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32alu:	dregs_hi = dregs_lo ="
+		       "SIGN (dregs_hi) * dregs_hi + "
+		       "SIGN (dregs_lo) * dregs_lo \n");
+
+		(yyval.instr) = DSP32ALU (12, 0, 0, &(yyvsp[-16].reg), &(yyvsp[-10].reg), &(yyvsp[-7].reg), 0, 0, 0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 36:
+#line 1036 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      if ((yyvsp[0].modcodes).aop == 0)
+		{
+	          /* No saturation flag specified, generate the 16 bit variant.  */
+		  notethat ("COMP3op: dregs = dregs +- dregs\n");
+		  (yyval.instr) = COMP3OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), (yyvsp[-2].r0).r0);
+		}
+	      else
+		{
+		 /* Saturation flag specified, generate the 32 bit variant.  */
+                 notethat ("dsp32alu: dregs = dregs +- dregs (amod1)\n");
+                 (yyval.instr) = DSP32ALU (4, 0, 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[-2].r0).r0);
+		}
+	    }
+	  else
+	    if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg)) && (yyvsp[-2].r0).r0 == 0)
+	      {
+		notethat ("COMP3op: pregs = pregs + pregs\n");
+		(yyval.instr) = COMP3OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), 5);
+	      }
+	    else
+	      return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 37:
+#line 1062 "bfin-parse.y"
+    {
+	  int op;
+
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)))
+	    {
+	      if ((yyvsp[0].r0).r0)
+		op = 6;
+	      else
+		op = 7;
+
+	      notethat ("dsp32alu: dregs = {MIN|MAX} (dregs, dregs)\n");
+	      (yyval.instr) = DSP32ALU (op, 0, 0, &(yyvsp[-8].reg), &(yyvsp[-4].reg), &(yyvsp[-2].reg), 0, 0, (yyvsp[-6].r0).r0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 38:
+#line 1080 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: Ax = - Ax\n");
+	  (yyval.instr) = DSP32ALU (14, IS_A1 ((yyvsp[-2].reg)), 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[0].reg)));
+	}
+    break;
+
+  case 39:
+#line 1085 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: dregs_lo = dregs_lo +- dregs_lo (amod1)\n");
+	  (yyval.instr) = DSP32ALU (2 | (yyvsp[-2].r0).r0, IS_H ((yyvsp[-5].reg)), 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg),
+			 (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, HL2 ((yyvsp[-3].reg), (yyvsp[-1].reg)));
+	}
+    break;
+
+  case 40:
+#line 1091 "bfin-parse.y"
+    {
+	  if (EXPR_VALUE ((yyvsp[0].expr)) == 0 && !REG_SAME ((yyvsp[-2].reg), (yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: A1 = A0 = 0\n");
+	      (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, 0, 0, 2);
+	    }
+	  else
+	    return yyerror ("Bad value, 0 expected");
+	}
+    break;
+
+  case 41:
+#line 1103 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-4].reg), (yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32alu: Ax = Ax (S)\n");
+	      (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, 1, 0, IS_A1 ((yyvsp[-4].reg)));
+	    }
+	  else
+	    return yyerror ("Registers must be equal");
+	}
+    break;
+
+  case 42:
+#line 1114 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32alu: dregs_half = dregs (RND)\n");
+	      (yyval.instr) = DSP32ALU (12, IS_H ((yyvsp[-5].reg)), 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 0, 0, 3);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 43:
+#line 1125 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32alu: dregs_half = dregs (+-) dregs (RND12)\n");
+	      (yyval.instr) = DSP32ALU (5, IS_H ((yyvsp[-7].reg)), 0, &(yyvsp[-7].reg), &(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 0, (yyvsp[-4].r0).r0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 44:
+#line 1136 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32alu: dregs_half = dregs -+ dregs (RND20)\n");
+	      (yyval.instr) = DSP32ALU (5, IS_H ((yyvsp[-7].reg)), 0, &(yyvsp[-7].reg), &(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 1, (yyvsp[-4].r0).r0 | 2);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 45:
+#line 1147 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-1].reg), (yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32alu: An = Am\n");
+	      (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[-1].reg)), 0, 3);
+	    }
+	  else
+	    return yyerror ("Accu reg arguments must differ");
+	}
+    break;
+
+  case 46:
+#line 1158 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32alu: An = dregs\n");
+	      (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[0].reg), 0, 1, 0, IS_A1 ((yyvsp[-1].reg)) << 1);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 47:
+#line 1169 "bfin-parse.y"
+    {
+	  if (!IS_H ((yyvsp[-1].reg)))
+	    {
+	      if ((yyvsp[-3].reg).regno == REG_A0x && IS_DREG ((yyvsp[-1].reg)))
+		{
+		  notethat ("dsp32alu: A0.x = dregs_lo\n");
+		  (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[-1].reg), 0, 0, 0, 1);
+		}
+	      else if ((yyvsp[-3].reg).regno == REG_A1x && IS_DREG ((yyvsp[-1].reg)))
+		{
+		  notethat ("dsp32alu: A1.x = dregs_lo\n");
+		  (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[-1].reg), 0, 0, 0, 3);
+		}
+	      else if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+		{
+		  notethat ("ALU2op: dregs = dregs_lo\n");
+		  (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 10 | ((yyvsp[0].r0).r0 ? 0: 1));
+		}
+	      else
+	        return yyerror ("Register mismatch");
+	    }
+	  else
+	    return yyerror ("Low reg expected");
+	}
+    break;
+
+  case 48:
+#line 1195 "bfin-parse.y"
+    {
+	  notethat ("LDIMMhalf: pregs_half = imm16\n");
+
+	  if (!IS_DREG ((yyvsp[-2].reg)) && !IS_PREG ((yyvsp[-2].reg)) && !IS_IREG ((yyvsp[-2].reg))
+	      && !IS_MREG ((yyvsp[-2].reg)) && !IS_BREG ((yyvsp[-2].reg)) && !IS_LREG ((yyvsp[-2].reg)))
+	    return yyerror ("Wrong register for load immediate");
+
+	  if (!IS_IMM ((yyvsp[0].expr), 16) && !IS_UIMM ((yyvsp[0].expr), 16))
+	    return yyerror ("Constant out of range");
+
+	  (yyval.instr) = LDIMMHALF_R (&(yyvsp[-2].reg), IS_H ((yyvsp[-2].reg)), 0, 0, (yyvsp[0].expr));
+	}
+    break;
+
+  case 49:
+#line 1209 "bfin-parse.y"
+    {
+	  notethat ("dsp32alu: An = 0\n");
+
+	  if (imm7 ((yyvsp[0].expr)) != 0)
+	    return yyerror ("0 expected");
+
+	  (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[-1].reg)));
+	}
+    break;
+
+  case 50:
+#line 1219 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-3].reg)) && !IS_PREG ((yyvsp[-3].reg)) && !IS_IREG ((yyvsp[-3].reg))
+	      && !IS_MREG ((yyvsp[-3].reg)) && !IS_BREG ((yyvsp[-3].reg)) && !IS_LREG ((yyvsp[-3].reg)))
+	    return yyerror ("Wrong register for load immediate");
+
+	  if ((yyvsp[0].r0).r0 == 0)
+	    {
+	      /* 7 bit immediate value if possible.
+		 We will check for that constant value for efficiency
+		 If it goes to reloc, it will be 16 bit.  */
+	      if (IS_CONST ((yyvsp[-1].expr)) && IS_IMM ((yyvsp[-1].expr), 7) && IS_DREG ((yyvsp[-3].reg)))
+		{
+		  notethat ("COMPI2opD: dregs = imm7 (x) \n");
+		  (yyval.instr) = COMPI2OPD (&(yyvsp[-3].reg), imm7 ((yyvsp[-1].expr)), 0);
+		}
+	      else if (IS_CONST ((yyvsp[-1].expr)) && IS_IMM ((yyvsp[-1].expr), 7) && IS_PREG ((yyvsp[-3].reg)))
+		{
+		  notethat ("COMPI2opP: pregs = imm7 (x)\n");
+		  (yyval.instr) = COMPI2OPP (&(yyvsp[-3].reg), imm7 ((yyvsp[-1].expr)), 0);
+		}
+	      else
+		{
+		  if (IS_CONST ((yyvsp[-1].expr)) && !IS_IMM ((yyvsp[-1].expr), 16))
+		    return yyerror ("Immediate value out of range");
+
+		  notethat ("LDIMMhalf: regs = luimm16 (x)\n");
+		  /* reg, H, S, Z.   */
+		  (yyval.instr) = LDIMMHALF_R5 (&(yyvsp[-3].reg), 0, 1, 0, (yyvsp[-1].expr));
+		} 
+	    }
+	  else
+	    {
+	      /* (z) There is no 7 bit zero extended instruction.
+	      If the expr is a relocation, generate it.   */
+
+	      if (IS_CONST ((yyvsp[-1].expr)) && !IS_UIMM ((yyvsp[-1].expr), 16))
+		return yyerror ("Immediate value out of range");
+
+	      notethat ("LDIMMhalf: regs = luimm16 (x)\n");
+	      /* reg, H, S, Z.  */
+	      (yyval.instr) = LDIMMHALF_R5 (&(yyvsp[-3].reg), 0, 0, 1, (yyvsp[-1].expr));
+	    }
+	}
+    break;
+
+  case 51:
+#line 1264 "bfin-parse.y"
+    {
+	  if (IS_H ((yyvsp[-2].reg)))
+	    return yyerror ("Low reg expected");
+
+	  if (IS_DREG ((yyvsp[-2].reg)) && (yyvsp[0].reg).regno == REG_A0x)
+	    {
+	      notethat ("dsp32alu: dregs_lo = A0.x\n");
+	      (yyval.instr) = DSP32ALU (10, 0, 0, &(yyvsp[-2].reg), 0, 0, 0, 0, 0);
+	    }
+	  else if (IS_DREG ((yyvsp[-2].reg)) && (yyvsp[0].reg).regno == REG_A1x)
+	    {
+	      notethat ("dsp32alu: dregs_lo = A1.x\n");
+	      (yyval.instr) = DSP32ALU (10, 0, 0, &(yyvsp[-2].reg), 0, 0, 0, 0, 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 52:
+#line 1283 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: dregs = dregs .|. dregs (amod0)\n");
+	      (yyval.instr) = DSP32ALU (0, 0, 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[-2].r0).r0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 53:
+#line 1294 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("ALU2op: dregs = dregs_byte\n");
+	      (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 12 | ((yyvsp[0].r0).r0 ? 0: 1));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 54:
+#line 1305 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-6].reg), (yyvsp[-4].reg)) && REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)) && !REG_SAME ((yyvsp[-6].reg), (yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32alu: A1 = ABS A1 , A0 = ABS A0\n");
+	      (yyval.instr) = DSP32ALU (16, 0, 0, 0, 0, 0, 0, 0, 3);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 55:
+#line 1316 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-6].reg), (yyvsp[-4].reg)) && REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)) && !REG_SAME ((yyvsp[-6].reg), (yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32alu: A1 = - A1 , A0 = - A0\n");
+	      (yyval.instr) = DSP32ALU (14, 0, 0, 0, 0, 0, 0, 0, 3);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 56:
+#line 1327 "bfin-parse.y"
+    {
+	  if (!IS_A1 ((yyvsp[-2].reg)) && IS_A1 ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: A0 -= A1\n");
+	      (yyval.instr) = DSP32ALU (11, 0, 0, 0, 0, 0, (yyvsp[0].r0).r0, 0, 3);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 57:
+#line 1338 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-2].reg)) && EXPR_VALUE ((yyvsp[0].expr)) == 4)
+	    {
+	      notethat ("dagMODik: iregs -= 4\n");
+	      (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 3);
+	    }
+	  else if (IS_IREG ((yyvsp[-2].reg)) && EXPR_VALUE ((yyvsp[0].expr)) == 2)
+	    {
+	      notethat ("dagMODik: iregs -= 2\n");
+	      (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 1);
+	    }
+	  else
+	    return yyerror ("Register or value mismatch");
+	}
+    break;
+
+  case 58:
+#line 1354 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-5].reg)) && IS_MREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dagMODim: iregs += mregs (opt_brev)\n");
+	      /* i, m, op, br.  */
+	      (yyval.instr) = DAGMODIM (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 1);
+	    }
+	  else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("PTR2op: pregs += pregs (BREV )\n");
+	      (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 5);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 59:
+#line 1371 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-2].reg)) && IS_MREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("dagMODim: iregs -= mregs\n");
+	      (yyval.instr) = DAGMODIM (&(yyvsp[-2].reg), &(yyvsp[0].reg), 1, 0);
+	    }
+	  else if (IS_PREG ((yyvsp[-2].reg)) && IS_PREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("PTR2op: pregs -= pregs\n");
+	      (yyval.instr) = PTR2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 60:
+#line 1387 "bfin-parse.y"
+    {
+	  if (!IS_A1 ((yyvsp[-3].reg)) && IS_A1 ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32alu: A0 += A1 (W32)\n");
+	      (yyval.instr) = DSP32ALU (11, 0, 0, 0, 0, 0, (yyvsp[0].r0).r0, 0, 2);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 61:
+#line 1398 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-2].reg)) && IS_MREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("dagMODim: iregs += mregs\n");
+	      (yyval.instr) = DAGMODIM (&(yyvsp[-2].reg), &(yyvsp[0].reg), 0, 0);
+	    }
+	  else
+	    return yyerror ("iregs += mregs expected");
+	}
+    break;
+
+  case 62:
+#line 1409 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-2].reg)))
+	    {
+	      if (EXPR_VALUE ((yyvsp[0].expr)) == 4)
+		{
+		  notethat ("dagMODik: iregs += 4\n");
+		  (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 2);
+		}
+	      else if (EXPR_VALUE ((yyvsp[0].expr)) == 2)
+		{
+		  notethat ("dagMODik: iregs += 2\n");
+		  (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 0);
+		}
+	      else
+		return yyerror ("iregs += [ 2 | 4 ");
+	    }
+	  else if (IS_PREG ((yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 7))
+	    {
+	      notethat ("COMPI2opP: pregs += imm7\n");
+	      (yyval.instr) = COMPI2OPP (&(yyvsp[-2].reg), imm7 ((yyvsp[0].expr)), 1);
+	    }
+	  else if (IS_DREG ((yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 7))
+	    {
+	      notethat ("COMPI2opD: dregs += imm7\n");
+	      (yyval.instr) = COMPI2OPD (&(yyvsp[-2].reg), imm7 ((yyvsp[0].expr)), 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 63:
+#line 1440 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ALU2op: dregs *= dregs\n");
+	      (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 3);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 64:
+#line 1451 "bfin-parse.y"
+    {
+	  if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr)))
+	    return yyerror ("Bad dreg pair");
+	  else
+	    {
+	      notethat ("dsp32alu: SAA (dregs_pair , dregs_pair ) (aligndir)\n");
+	      (yyval.instr) = DSP32ALU (18, 0, 0, 0, &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0, 0);
+	    }
+	}
+    break;
+
+  case 65:
+#line 1464 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-10].reg), (yyvsp[-9].reg)) && REG_SAME ((yyvsp[-4].reg), (yyvsp[-3].reg)) && !REG_SAME ((yyvsp[-10].reg), (yyvsp[-4].reg)))
+	    {
+	      notethat ("dsp32alu: A1 = A1 (S) , A0 = A0 (S)\n");
+	      (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, 1, 0, 2);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 66:
+#line 1475 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg))
+	      && REG_SAME ((yyvsp[-8].reg), (yyvsp[-5].reg)))
+	    {
+	      if (EXPR_VALUE ((yyvsp[0].expr)) == 1)
+		{
+		  notethat ("ALU2op: dregs = (dregs + dregs) << 1\n");
+		  (yyval.instr) = ALU2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 4);
+		}
+	      else if (EXPR_VALUE ((yyvsp[0].expr)) == 2)
+		{
+		  notethat ("ALU2op: dregs = (dregs + dregs) << 2\n");
+		  (yyval.instr) = ALU2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 5);
+		}
+	      else
+		return yyerror ("Bad shift value");
+	    }
+	  else if (IS_PREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg))
+		   && REG_SAME ((yyvsp[-8].reg), (yyvsp[-5].reg)))
+	    {
+	      if (EXPR_VALUE ((yyvsp[0].expr)) == 1)
+		{
+		  notethat ("PTR2op: pregs = (pregs + pregs) << 1\n");
+		  (yyval.instr) = PTR2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 6);
+		}
+	      else if (EXPR_VALUE ((yyvsp[0].expr)) == 2)
+		{
+		  notethat ("PTR2op: pregs = (pregs + pregs) << 2\n");
+		  (yyval.instr) = PTR2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 7);
+		}
+	      else
+		return yyerror ("Bad shift value");
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 67:
+#line 1514 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("COMP3op: dregs = dregs | dregs\n");
+	      (yyval.instr) = COMP3OP (&(yyvsp[-4].reg), &(yyvsp[-2].reg), &(yyvsp[0].reg), 3);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 68:
+#line 1524 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("COMP3op: dregs = dregs ^ dregs\n");
+	      (yyval.instr) = COMP3OP (&(yyvsp[-4].reg), &(yyvsp[-2].reg), &(yyvsp[0].reg), 4);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 69:
+#line 1534 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-6].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      if (EXPR_VALUE ((yyvsp[-1].expr)) == 1)
+		{
+		  notethat ("COMP3op: pregs = pregs + (pregs << 1)\n");
+		  (yyval.instr) = COMP3OP (&(yyvsp[-8].reg), &(yyvsp[-6].reg), &(yyvsp[-3].reg), 6);
+		}
+	      else if (EXPR_VALUE ((yyvsp[-1].expr)) == 2)
+		{
+		  notethat ("COMP3op: pregs = pregs + (pregs << 2)\n");
+		  (yyval.instr) = COMP3OP (&(yyvsp[-8].reg), &(yyvsp[-6].reg), &(yyvsp[-3].reg), 7);
+		}
+	      else
+		  return yyerror ("Bad shift value");
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 70:
+#line 1554 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)))
+	    {
+	      notethat ("CCflag: CC = A0 == A1\n");
+	      (yyval.instr) = CCFLAG (0, 0, 5, 0, 0);
+	    }
+	  else
+	    return yyerror ("CC register expected");
+	}
+    break;
+
+  case 71:
+#line 1564 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)))
+	    {
+	      notethat ("CCflag: CC = A0 < A1\n");
+	      (yyval.instr) = CCFLAG (0, 0, 6, 0, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 72:
+#line 1574 "bfin-parse.y"
+    {
+	  if (REG_CLASS((yyvsp[-3].reg)) == REG_CLASS((yyvsp[-1].reg)))
+	    {
+	      notethat ("CCflag: CC = dpregs < dpregs\n");
+	      (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), (yyvsp[-1].reg).regno & CODE_MASK, (yyvsp[0].r0).r0, 0, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0);
+	    }
+	  else
+	    return yyerror ("Compare only of same register class");
+	}
+    break;
+
+  case 73:
+#line 1584 "bfin-parse.y"
+    {
+	  if (((yyvsp[0].r0).r0 == 1 && IS_IMM ((yyvsp[-1].expr), 3))
+	      || ((yyvsp[0].r0).r0 == 3 && IS_UIMM ((yyvsp[-1].expr), 3)))
+	    {
+	      notethat ("CCflag: CC = dpregs < (u)imm3\n");
+	      (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), imm3 ((yyvsp[-1].expr)), (yyvsp[0].r0).r0, 1, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0);
+	    }
+	  else
+	    return yyerror ("Bad constant value");
+	}
+    break;
+
+  case 74:
+#line 1595 "bfin-parse.y"
+    {
+	  if (REG_CLASS((yyvsp[-2].reg)) == REG_CLASS((yyvsp[0].reg)))
+	    {
+	      notethat ("CCflag: CC = dpregs == dpregs\n");
+	      (yyval.instr) = CCFLAG (&(yyvsp[-2].reg), (yyvsp[0].reg).regno & CODE_MASK, 0, 0, IS_PREG ((yyvsp[-2].reg)) ? 1 : 0);
+	    } 
+	}
+    break;
+
+  case 75:
+#line 1603 "bfin-parse.y"
+    {
+	  if (IS_IMM ((yyvsp[0].expr), 3))
+	    {
+	      notethat ("CCflag: CC = dpregs == imm3\n");
+	      (yyval.instr) = CCFLAG (&(yyvsp[-2].reg), imm3 ((yyvsp[0].expr)), 0, 1, IS_PREG ((yyvsp[-2].reg)) ? 1 : 0);
+	    }
+	  else
+	    return yyerror ("Bad constant range");
+	}
+    break;
+
+  case 76:
+#line 1613 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)))
+	    {
+	      notethat ("CCflag: CC = A0 <= A1\n");
+	      (yyval.instr) = CCFLAG (0, 0, 7, 0, 0);
+	    }
+	  else
+	    return yyerror ("CC register expected");
+	}
+    break;
+
+  case 77:
+#line 1623 "bfin-parse.y"
+    {
+	  if (REG_CLASS((yyvsp[-3].reg)) == REG_CLASS((yyvsp[-1].reg)))
+	    {
+	      notethat ("CCflag: CC = pregs <= pregs (..)\n");
+	      (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), (yyvsp[-1].reg).regno & CODE_MASK,
+			   1 + (yyvsp[0].r0).r0, 0, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0);
+	    }
+	  else
+	    return yyerror ("Compare only of same register class");
+	}
+    break;
+
+  case 78:
+#line 1634 "bfin-parse.y"
+    {
+	  if (((yyvsp[0].r0).r0 == 1 && IS_IMM ((yyvsp[-1].expr), 3))
+	      || ((yyvsp[0].r0).r0 == 3 && IS_UIMM ((yyvsp[-1].expr), 3)))
+	    {
+	      if (IS_DREG ((yyvsp[-3].reg)))
+		{
+		  notethat ("CCflag: CC = dregs <= (u)imm3\n");
+		  /*    x       y     opc     I     G   */
+		  (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), imm3 ((yyvsp[-1].expr)), 1 + (yyvsp[0].r0).r0, 1, 0);
+		}
+	      else if (IS_PREG ((yyvsp[-3].reg)))
+		{
+		  notethat ("CCflag: CC = pregs <= (u)imm3\n");
+		  /*    x       y     opc     I     G   */
+		  (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), imm3 ((yyvsp[-1].expr)), 1 + (yyvsp[0].r0).r0, 1, 1);
+		}
+	      else
+		return yyerror ("Dreg or Preg expected");
+	    }
+	  else
+	    return yyerror ("Bad constant value");
+	}
+    break;
+
+  case 79:
+#line 1658 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("COMP3op: dregs = dregs & dregs\n");
+	      (yyval.instr) = COMP3OP (&(yyvsp[-4].reg), &(yyvsp[-2].reg), &(yyvsp[0].reg), 2);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 80:
+#line 1669 "bfin-parse.y"
+    {
+	  notethat ("CC2stat operation\n");
+	  (yyval.instr) = bfin_gen_cc2stat ((yyvsp[0].modcodes).r0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).s0);
+	}
+    break;
+
+  case 81:
+#line 1675 "bfin-parse.y"
+    {
+	  if (IS_ALLREG ((yyvsp[-2].reg)) && IS_ALLREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("REGMV: allregs = allregs\n");
+	      (yyval.instr) = bfin_gen_regmv (&(yyvsp[0].reg), &(yyvsp[-2].reg));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 82:
+#line 1686 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("CC2dreg: CC = dregs\n");
+	      (yyval.instr) = bfin_gen_cc2dreg (1, &(yyvsp[0].reg));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 83:
+#line 1697 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("CC2dreg: dregs = CC\n");
+	      (yyval.instr) = bfin_gen_cc2dreg (0, &(yyvsp[-2].reg));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 84:
+#line 1708 "bfin-parse.y"
+    {
+	  notethat ("CC2dreg: CC =! CC\n");
+	  (yyval.instr) = bfin_gen_cc2dreg (3, 0);
+	}
+    break;
+
+  case 85:
+#line 1716 "bfin-parse.y"
+    {
+	  notethat ("dsp32mult: dregs_half = multiply_halfregs (opt_mode)\n");
+
+	  if (!IS_H ((yyvsp[-3].reg)) && (yyvsp[0].mod).MM)
+	    return yyerror ("(M) not allowed with MAC0");
+
+	  if (IS_H ((yyvsp[-3].reg)))
+	    {
+	      (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 0,
+			      IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), 0, 0,
+			      &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 0);
+	    }
+	  else
+	    {
+	      (yyval.instr) = DSP32MULT (0, 0, (yyvsp[0].mod).mod, 0, 0,
+			      0, 0, IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), 
+			      &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 1);
+		}	
+	}
+    break;
+
+  case 86:
+#line 1737 "bfin-parse.y"
+    {
+	  /* Odd registers can use (M).  */
+	  if (!IS_DREG ((yyvsp[-3].reg)))
+	    return yyerror ("Dreg expected");
+
+	  if (!IS_EVEN ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32mult: dregs = multiply_halfregs (opt_mode)\n");
+
+	      (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 1,
+			      IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), 0, 0,
+			      &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 0);
+	    }
+	  else if ((yyvsp[0].mod).MM == 0)
+	    {
+	      notethat ("dsp32mult: dregs = multiply_halfregs opt_mode\n");
+	      (yyval.instr) = DSP32MULT (0, 0, (yyvsp[0].mod).mod, 0, 1,
+			      0, 0, IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), 
+			      &(yyvsp[-3].reg),  0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 1);
+	    }
+	  else
+	    return yyerror ("Register or mode mismatch");
+	}
+    break;
+
+  case 87:
+#line 1763 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-8].reg)) || !IS_DREG ((yyvsp[-3].reg))) 
+	    return yyerror ("Dregs expected");
+
+	  if (check_multiply_halfregs (&(yyvsp[-6].macfunc), &(yyvsp[-1].macfunc)) < 0)
+	    return -1;
+
+	  if (IS_H ((yyvsp[-8].reg)) && !IS_H ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32mult: dregs_hi = multiply_halfregs mxd_mod, "
+		       "dregs_lo = multiply_halfregs opt_mode\n");
+	      (yyval.instr) = DSP32MULT (0, (yyvsp[-5].mod).MM, (yyvsp[0].mod).mod, 1, 0,
+			      IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1), IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1),
+			      &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1);
+	    }
+	  else if (!IS_H ((yyvsp[-8].reg)) && IS_H ((yyvsp[-3].reg)) && (yyvsp[-5].mod).MM == 0)
+	    {
+	      (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 0,
+			      IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1),
+			      &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1);
+	    }
+	  else
+	    return yyerror ("Multfunc Register or mode mismatch");
+	}
+    break;
+
+  case 88:
+#line 1789 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-8].reg)) || !IS_DREG ((yyvsp[-3].reg))) 
+	    return yyerror ("Dregs expected");
+
+	  if (check_multiply_halfregs (&(yyvsp[-6].macfunc), &(yyvsp[-1].macfunc)) < 0)
+	    return -1;
+
+	  notethat ("dsp32mult: dregs = multiply_halfregs mxd_mod, "
+		   "dregs = multiply_halfregs opt_mode\n");
+	  if (IS_EVEN ((yyvsp[-8].reg)))
+	    {
+	      if ((yyvsp[-3].reg).regno - (yyvsp[-8].reg).regno != 1 || (yyvsp[-5].mod).MM != 0)
+		return yyerror ("Dest registers or mode mismatch");
+
+	      /*   op1       MM      mmod  */
+	      (yyval.instr) = DSP32MULT (0, 0, (yyvsp[0].mod).mod, 1, 1,
+			      IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1),
+			      &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1);
+	      
+	    }
+	  else
+	    {
+	      if ((yyvsp[-8].reg).regno - (yyvsp[-3].reg).regno != 1)
+		return yyerror ("Dest registers mismatch");
+	      
+	      (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 1,
+			      IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1), IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1),
+			      &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1);
+	    }
+	}
+    break;
+
+  case 89:
+#line 1823 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-4].reg), (yyvsp[-2].reg)))
+	    return yyerror ("Aregs must be same");
+
+	  if (IS_DREG ((yyvsp[0].reg)) && !IS_H ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: A0 = ASHIFT A0 BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[0].reg), 0, 0, IS_A1 ((yyvsp[-4].reg)));
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 90:
+#line 1837 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_half = ASHIFT dregs_half BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (0, &(yyvsp[-6].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, HL2 ((yyvsp[-6].reg), (yyvsp[-3].reg)));
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 91:
+#line 1848 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-3].reg), (yyvsp[-2].reg)))
+	    return yyerror ("Aregs must be same");
+
+	  if (IS_UIMM ((yyvsp[0].expr), 5))
+	    {
+	      notethat ("dsp32shiftimm: A0 = A0 << uimm5\n");
+	      (yyval.instr) = DSP32SHIFTIMM (3, 0, imm5 ((yyvsp[0].expr)), 0, 0, IS_A1 ((yyvsp[-3].reg)));
+	    }
+	  else
+	    return yyerror ("Bad shift value");
+	}
+    break;
+
+  case 92:
+#line 1862 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      if ((yyvsp[0].modcodes).r0)
+		{
+		  /*  Vector?  */
+		  notethat ("dsp32shiftimm: dregs = dregs << expr (V, .)\n");
+		  (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[-5].reg), imm4 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0 ? 1 : 2, 0);
+		}
+	      else
+		{
+		  notethat ("dsp32shiftimm: dregs =  dregs << uimm5 (.)\n");
+		  (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), imm6 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0 ? 1 : 2, 0);
+		}
+	    }
+	  else if ((yyvsp[0].modcodes).s0 == 0 && IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      if (EXPR_VALUE ((yyvsp[-1].expr)) == 2)
+		{
+		  notethat ("PTR2op: pregs = pregs << 2\n");
+		  (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 1);
+		}
+	      else if (EXPR_VALUE ((yyvsp[-1].expr)) == 1)
+		{
+		  notethat ("COMP3op: pregs = pregs << 1\n");
+		  (yyval.instr) = COMP3OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-3].reg), 5);
+		}
+	      else
+		return yyerror ("Bad shift value");
+	    }
+	  else
+	    return yyerror ("Bad shift value or register");
+	}
+    break;
+
+  case 93:
+#line 1896 "bfin-parse.y"
+    {
+	  if (IS_UIMM ((yyvsp[0].expr), 4))
+	    {
+	      notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n");
+	      (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[-4].reg), imm5 ((yyvsp[0].expr)), &(yyvsp[-2].reg), 2, HL2 ((yyvsp[-4].reg), (yyvsp[-2].reg)));
+	    }
+	  else
+	    return yyerror ("Bad shift value");
+	}
+    break;
+
+  case 94:
+#line 1906 "bfin-parse.y"
+    {
+	  if (IS_UIMM ((yyvsp[-1].expr), 4))
+	    {
+	      notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n");
+	      (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[-5].reg), imm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, HL2 ((yyvsp[-5].reg), (yyvsp[-3].reg)));
+	    }
+	  else
+	    return yyerror ("Bad shift value");
+	}
+    break;
+
+  case 95:
+#line 1916 "bfin-parse.y"
+    {
+	  int op;
+
+	  if (IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-1].reg)))
+	    {
+	      if ((yyvsp[0].modcodes).r0)
+		{
+		  op = 1;
+		  notethat ("dsp32shift: dregs = ASHIFT dregs BY "
+			   "dregs_lo (V, .)\n");
+		}
+	      else
+		{
+		  
+		  op = 2;
+		  notethat ("dsp32shift: dregs = ASHIFT dregs BY dregs_lo (.)\n");
+		}
+	      (yyval.instr) = DSP32SHIFT (op, &(yyvsp[-6].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, 0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 96:
+#line 1941 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-8].reg)) && IS_DREG_L ((yyvsp[-4].reg)) && IS_DREG_L ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = EXPADJ (dregs , dregs_lo )\n");
+	      (yyval.instr) = DSP32SHIFT (7, &(yyvsp[-8].reg), &(yyvsp[-2].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0);
+	    }
+	  else
+	    return yyerror ("Bad shift value or register");
+	}
+    break;
+
+  case 97:
+#line 1953 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-7].reg)) && IS_DREG_L ((yyvsp[-3].reg)) && IS_DREG_L ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = EXPADJ (dregs_lo, dregs_lo)\n");
+	      (yyval.instr) = DSP32SHIFT (7, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 2, 0);
+	    }
+	  else if (IS_DREG_L ((yyvsp[-7].reg)) && IS_DREG_H ((yyvsp[-3].reg)) && IS_DREG_L ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = EXPADJ (dregs_hi, dregs_lo)\n");
+	      (yyval.instr) = DSP32SHIFT (7, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 3, 0);
+	    }
+	  else
+	    return yyerror ("Bad shift value or register");
+	}
+    break;
+
+  case 98:
+#line 1971 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = DEPOSIT (dregs , dregs )\n");
+	      (yyval.instr) = DSP32SHIFT (10, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 2, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 99:
+#line 1982 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-10].reg)) && IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-4].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = DEPOSIT (dregs , dregs ) (X)\n");
+	      (yyval.instr) = DSP32SHIFT (10, &(yyvsp[-10].reg), &(yyvsp[-4].reg), &(yyvsp[-6].reg), 3, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 100:
+#line 1993 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-4].reg)) && IS_DREG_L ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = EXTRACT (dregs, dregs_lo ) (.)\n");
+	      (yyval.instr) = DSP32SHIFT (10, &(yyvsp[-8].reg), &(yyvsp[-2].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 101:
+#line 2004 "bfin-parse.y"
+    {
+	  if (!REG_SAME ((yyvsp[-3].reg), (yyvsp[-2].reg)))
+	    return yyerror ("Aregs must be same");
+
+	  if (IS_UIMM ((yyvsp[0].expr), 5))
+	    {
+	      notethat ("dsp32shiftimm: Ax = Ax >>> uimm5\n");
+	      (yyval.instr) = DSP32SHIFTIMM (3, 0, -imm6 ((yyvsp[0].expr)), 0, 0, IS_A1 ((yyvsp[-3].reg)));
+	    }
+	  else
+	    return yyerror ("Shift value range error");
+	}
+    break;
+
+  case 102:
+#line 2017 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-4].reg), (yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: Ax = LSHIFT Ax BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[0].reg), 0, 1, IS_A1 ((yyvsp[-4].reg)));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 103:
+#line 2028 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = LSHIFT dregs_hi BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (0, &(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-2].reg), 2, HL2 ((yyvsp[-5].reg), (yyvsp[-2].reg)));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 104:
+#line 2039 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG_L ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = LSHIFT dregs BY dregs_lo (V )\n");
+	      (yyval.instr) = DSP32SHIFT ((yyvsp[0].r0).r0 ? 1: 2, &(yyvsp[-6].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 2, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 105:
+#line 2050 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = SHIFT dregs BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (2, &(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-2].reg), 2, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 106:
+#line 2061 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-3].reg), (yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 6) >= 0)
+	    {
+	      notethat ("dsp32shiftimm: Ax = Ax >> imm6\n");
+	      (yyval.instr) = DSP32SHIFTIMM (3, 0, -imm6 ((yyvsp[0].expr)), 0, 1, IS_A1 ((yyvsp[-3].reg)));
+	    }
+	  else
+	    return yyerror ("Accu register expected");
+	}
+    break;
+
+  case 107:
+#line 2072 "bfin-parse.y"
+    {
+	  if ((yyvsp[0].r0).r0 == 1)
+	    {
+	      if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+		{
+		  notethat ("dsp32shiftimm: dregs = dregs >> uimm5 (V)\n");
+		  (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), 2, 0);
+		}
+	      else
+	        return yyerror ("Register mismatch");
+	    }
+	  else
+	    {
+	      if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+		{
+		  notethat ("dsp32shiftimm: dregs = dregs >> uimm5\n");
+		  (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), -imm6 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), 2, 0);
+		}
+	      else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) && EXPR_VALUE ((yyvsp[-1].expr)) == 2)
+		{
+		  notethat ("PTR2op: pregs = pregs >> 2\n");
+		  (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 3);
+		}
+	      else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) && EXPR_VALUE ((yyvsp[-1].expr)) == 1)
+		{
+		  notethat ("PTR2op: pregs = pregs >> 1\n");
+		  (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 4);
+		}
+	      else
+	        return yyerror ("Register mismatch");
+	    }
+	}
+    break;
+
+  case 108:
+#line 2105 "bfin-parse.y"
+    {
+	  if (IS_UIMM ((yyvsp[0].expr), 5))
+	    {
+	      notethat ("dsp32shiftimm:  dregs_half =  dregs_half >> uimm5\n");
+	      (yyval.instr) = DSP32SHIFTIMM (0, &(yyvsp[-4].reg), -uimm5 ((yyvsp[0].expr)), &(yyvsp[-2].reg), 2, HL2 ((yyvsp[-4].reg), (yyvsp[-2].reg)));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 109:
+#line 2115 "bfin-parse.y"
+    {
+	  if (IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      notethat ("dsp32shiftimm: dregs_half = dregs_half >>> uimm5\n");
+	      (yyval.instr) = DSP32SHIFTIMM (0, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg),
+				  (yyvsp[0].modcodes).s0, HL2 ((yyvsp[-5].reg), (yyvsp[-3].reg)));
+	    }
+	  else
+	    return yyerror ("Register or modifier mismatch");
+	}
+    break;
+
+  case 110:
+#line 2128 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      if ((yyvsp[0].modcodes).r0)
+		{
+		  /* Vector?  */
+		  notethat ("dsp32shiftimm: dregs  =  dregs >>> uimm5 (V, .)\n");
+		  (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, 0);
+		}
+	      else
+		{
+		  notethat ("dsp32shiftimm: dregs  =  dregs >>> uimm5 (.)\n");
+		  (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, 0);
+		}
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 111:
+#line 2148 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = ONES dregs\n");
+	      (yyval.instr) = DSP32SHIFT (6, &(yyvsp[-3].reg), 0, &(yyvsp[0].reg), 3, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 112:
+#line 2159 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = PACK (dregs_hi , dregs_hi )\n");
+	      (yyval.instr) = DSP32SHIFT (4, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), HL2 ((yyvsp[-3].reg), (yyvsp[-1].reg)), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 113:
+#line 2170 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-9].reg))
+	      && (yyvsp[-3].reg).regno == REG_A0
+	      && IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-9].reg)) && !IS_A1 ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = CC = BXORSHIFT (A0 , dregs )\n");
+	      (yyval.instr) = DSP32SHIFT (11, &(yyvsp[-9].reg), &(yyvsp[-1].reg), 0, 0, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 114:
+#line 2183 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-9].reg))
+	      && (yyvsp[-3].reg).regno == REG_A0
+	      && IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-9].reg)) && !IS_A1 ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = CC = BXOR (A0 , dregs)\n");
+	      (yyval.instr) = DSP32SHIFT (11, &(yyvsp[-9].reg), &(yyvsp[-1].reg), 0, 1, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 115:
+#line 2196 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-11].reg)) && !IS_H ((yyvsp[-11].reg)) && !REG_SAME ((yyvsp[-5].reg), (yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = CC = BXOR (A0 , A1 , CC)\n");
+	      (yyval.instr) = DSP32SHIFT (12, &(yyvsp[-11].reg), 0, 0, 1, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 116:
+#line 2207 "bfin-parse.y"
+    {
+	  if (REG_SAME ((yyvsp[-4].reg), (yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: Ax = ROT Ax BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[0].reg), 0, 2, IS_A1 ((yyvsp[-4].reg)));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 117:
+#line 2218 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = ROT dregs BY dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (2, &(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-2].reg), 3, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 118:
+#line 2229 "bfin-parse.y"
+    {
+	  if (IS_IMM ((yyvsp[0].expr), 6))
+	    {
+	      notethat ("dsp32shiftimm: An = ROT An BY imm6\n");
+	      (yyval.instr) = DSP32SHIFTIMM (3, 0, imm6 ((yyvsp[0].expr)), 0, 2, IS_A1 ((yyvsp[-4].reg)));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 119:
+#line 2240 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 6))
+	    {
+	      (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), imm6 ((yyvsp[0].expr)), &(yyvsp[-2].reg), 3, IS_A1 ((yyvsp[-5].reg)));
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 120:
+#line 2250 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = SIGNBITS An\n");
+	      (yyval.instr) = DSP32SHIFT (6, &(yyvsp[-3].reg), 0, 0, IS_A1 ((yyvsp[0].reg)), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 121:
+#line 2261 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = SIGNBITS dregs\n");
+	      (yyval.instr) = DSP32SHIFT (5, &(yyvsp[-3].reg), 0, &(yyvsp[0].reg), 0, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 122:
+#line 2272 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = SIGNBITS dregs_lo\n");
+	      (yyval.instr) = DSP32SHIFT (5, &(yyvsp[-3].reg), 0, &(yyvsp[0].reg), 1 + IS_H ((yyvsp[0].reg)), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 123:
+#line 2284 "bfin-parse.y"
+    {
+	  if (IS_DREG_L ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32shift: dregs_lo = VIT_MAX (dregs) (..)\n");
+	      (yyval.instr) = DSP32SHIFT (9, &(yyvsp[-6].reg), 0, &(yyvsp[-2].reg), ((yyvsp[0].r0).r0 ? 0 : 1), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 124:
+#line 2295 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32shift: dregs = VIT_MAX (dregs, dregs) (ASR)\n");
+	      (yyval.instr) = DSP32SHIFT (9, &(yyvsp[-8].reg), &(yyvsp[-2].reg), &(yyvsp[-4].reg), 2 | ((yyvsp[0].r0).r0 ? 0 : 1), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 125:
+#line 2306 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-4].reg)) && !IS_A1 ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dsp32shift: BITMUX (dregs , dregs , A0) (ASR)\n");
+	      (yyval.instr) = DSP32SHIFT (8, 0, &(yyvsp[-6].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 126:
+#line 2317 "bfin-parse.y"
+    {
+	  if (!IS_A1 ((yyvsp[-8].reg)) && !IS_A1 ((yyvsp[-5].reg)) && IS_A1 ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dsp32shift: A0 = BXORSHIFT (A0 , A1 , CC )\n");
+	      (yyval.instr) = DSP32SHIFT (12, 0, 0, 0, 0, 0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 127:
+#line 2330 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 4);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 128:
+#line 2342 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 2);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 129:
+#line 2354 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 3);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 130:
+#line 2365 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      notethat ("LOGI2op: CC =! BITTST (dregs , uimm5 )\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch or value error");
+	}
+    break;
+
+  case 131:
+#line 2376 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5))
+	    {
+	      notethat ("LOGI2op: CC = BITTST (dregs , uimm5 )\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch or value error");
+	}
+    break;
+
+  case 132:
+#line 2387 "bfin-parse.y"
+    {
+	  if ((IS_DREG ((yyvsp[-2].reg)) || IS_PREG ((yyvsp[-2].reg)))
+	      && (IS_DREG ((yyvsp[0].reg)) || IS_PREG ((yyvsp[0].reg))))
+	    {
+	      notethat ("ccMV: IF ! CC gregs = gregs\n");
+	      (yyval.instr) = CCMV (&(yyvsp[0].reg), &(yyvsp[-2].reg), 0);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 133:
+#line 2399 "bfin-parse.y"
+    {
+	  if ((IS_DREG ((yyvsp[0].reg)) || IS_PREG ((yyvsp[0].reg)))
+	      && (IS_DREG ((yyvsp[-2].reg)) || IS_PREG ((yyvsp[-2].reg))))
+	    {
+	      notethat ("ccMV: IF CC gregs = gregs\n");
+	      (yyval.instr) = CCMV (&(yyvsp[0].reg), &(yyvsp[-2].reg), 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 134:
+#line 2411 "bfin-parse.y"
+    {
+	  if (IS_PCREL10 ((yyvsp[0].expr)))
+	    {
+	      notethat ("BRCC: IF !CC JUMP  pcrel11m2\n");
+	      (yyval.instr) = BRCC (0, 0, (yyvsp[0].expr));
+	    }
+	  else
+	    return yyerror ("Bad jump offset");
+	}
+    break;
+
+  case 135:
+#line 2422 "bfin-parse.y"
+    {
+	  if (IS_PCREL10 ((yyvsp[-3].expr)))
+	    {
+	      notethat ("BRCC: IF !CC JUMP  pcrel11m2\n");
+	      (yyval.instr) = BRCC (0, 1, (yyvsp[-3].expr));
+	    }
+	  else
+	    return yyerror ("Bad jump offset");
+	}
+    break;
+
+  case 136:
+#line 2433 "bfin-parse.y"
+    {
+	  if (IS_PCREL10 ((yyvsp[0].expr)))
+	    {
+	      notethat ("BRCC: IF CC JUMP  pcrel11m2\n");
+	      (yyval.instr) = BRCC (1, 0, (yyvsp[0].expr));
+	    }
+	  else
+	    return yyerror ("Bad jump offset");
+	}
+    break;
+
+  case 137:
+#line 2444 "bfin-parse.y"
+    {
+	  if (IS_PCREL10 ((yyvsp[-3].expr)))
+	    {
+	      notethat ("BRCC: IF !CC JUMP  pcrel11m2\n");
+	      (yyval.instr) = BRCC (1, 1, (yyvsp[-3].expr));
+	    }
+	  else
+	    return yyerror ("Bad jump offset");
+	}
+    break;
+
+  case 138:
+#line 2454 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: NOP\n");
+	  (yyval.instr) = PROGCTRL (0, 0);
+	}
+    break;
+
+  case 139:
+#line 2460 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: RTS\n");
+	  (yyval.instr) = PROGCTRL (1, 0);
+	}
+    break;
+
+  case 140:
+#line 2466 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: RTI\n");
+	  (yyval.instr) = PROGCTRL (1, 1);
+	}
+    break;
+
+  case 141:
+#line 2472 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: RTX\n");
+	  (yyval.instr) = PROGCTRL (1, 2);
+	}
+    break;
+
+  case 142:
+#line 2478 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: RTN\n");
+	  (yyval.instr) = PROGCTRL (1, 3);
+	}
+    break;
+
+  case 143:
+#line 2484 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: RTE\n");
+	  (yyval.instr) = PROGCTRL (1, 4);
+	}
+    break;
+
+  case 144:
+#line 2490 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: IDLE\n");
+	  (yyval.instr) = PROGCTRL (2, 0);
+	}
+    break;
+
+  case 145:
+#line 2496 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: CSYNC\n");
+	  (yyval.instr) = PROGCTRL (2, 3);
+	}
+    break;
+
+  case 146:
+#line 2502 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: SSYNC\n");
+	  (yyval.instr) = PROGCTRL (2, 4);
+	}
+    break;
+
+  case 147:
+#line 2508 "bfin-parse.y"
+    {
+	  notethat ("ProgCtrl: EMUEXCPT\n");
+	  (yyval.instr) = PROGCTRL (2, 5);
+	}
+    break;
+
+  case 148:
+#line 2514 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ProgCtrl: CLI dregs\n");
+	      (yyval.instr) = PROGCTRL (3, (yyvsp[0].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Dreg expected for CLI");
+	}
+    break;
+
+  case 149:
+#line 2525 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ProgCtrl: STI dregs\n");
+	      (yyval.instr) = PROGCTRL (4, (yyvsp[0].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Dreg expected for STI");
+	}
+    break;
+
+  case 150:
+#line 2536 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("ProgCtrl: JUMP (pregs )\n");
+	      (yyval.instr) = PROGCTRL (5, (yyvsp[-1].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Bad register for indirect jump");
+	}
+    break;
+
+  case 151:
+#line 2547 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("ProgCtrl: CALL (pregs )\n");
+	      (yyval.instr) = PROGCTRL (6, (yyvsp[-1].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Bad register for indirect call");
+	}
+    break;
+
+  case 152:
+#line 2558 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("ProgCtrl: CALL (PC + pregs )\n");
+	      (yyval.instr) = PROGCTRL (7, (yyvsp[-1].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Bad register for indirect call");
+	}
+    break;
+
+  case 153:
+#line 2569 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("ProgCtrl: JUMP (PC + pregs )\n");
+	      (yyval.instr) = PROGCTRL (8, (yyvsp[-1].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Bad register for indirect jump");
+	}
+    break;
+
+  case 154:
+#line 2580 "bfin-parse.y"
+    {
+	  if (IS_UIMM ((yyvsp[0].expr), 4))
+	    {
+	      notethat ("ProgCtrl: RAISE uimm4\n");
+	      (yyval.instr) = PROGCTRL (9, uimm4 ((yyvsp[0].expr)));
+	    }
+	  else
+	    return yyerror ("Bad value for RAISE");
+	}
+    break;
+
+  case 155:
+#line 2591 "bfin-parse.y"
+    {
+		notethat ("ProgCtrl: EMUEXCPT\n");
+		(yyval.instr) = PROGCTRL (10, uimm4 ((yyvsp[0].expr)));
+	}
+    break;
+
+  case 156:
+#line 2597 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("ProgCtrl: TESTSET (pregs )\n");
+	      (yyval.instr) = PROGCTRL (11, (yyvsp[-1].reg).regno & CODE_MASK);
+	    }
+	  else
+	    return yyerror ("Preg expected");
+	}
+    break;
+
+  case 157:
+#line 2608 "bfin-parse.y"
+    {
+	  if (IS_PCREL12 ((yyvsp[0].expr)))
+	    {
+	      notethat ("UJUMP: JUMP pcrel12\n");
+	      (yyval.instr) = UJUMP ((yyvsp[0].expr));
+	    }
+	  else
+	    return yyerror ("Bad value for relative jump");
+	}
+    break;
+
+  case 158:
+#line 2619 "bfin-parse.y"
+    {
+	  if (IS_PCREL12 ((yyvsp[0].expr)))
+	    {
+	      notethat ("UJUMP: JUMP_DOT_S pcrel12\n");
+	      (yyval.instr) = UJUMP((yyvsp[0].expr));
+	    }
+	  else
+	    return yyerror ("Bad value for relative jump");
+	}
+    break;
+
+  case 159:
+#line 2630 "bfin-parse.y"
+    {
+	  if (IS_PCREL24 ((yyvsp[0].expr)))
+	    {
+	      notethat ("CALLa: jump.l pcrel24\n");
+	      (yyval.instr) = CALLA ((yyvsp[0].expr), 0);
+	    }
+	  else
+	    return yyerror ("Bad value for long jump");
+	}
+    break;
+
+  case 160:
+#line 2641 "bfin-parse.y"
+    {
+	  if (IS_PCREL24 ((yyvsp[0].expr)))
+	    {
+	      notethat ("CALLa: jump.l pcrel24\n");
+	      (yyval.instr) = CALLA ((yyvsp[0].expr), 2);
+	    }
+	  else
+	    return yyerror ("Bad value for long jump");
+	}
+    break;
+
+  case 161:
+#line 2652 "bfin-parse.y"
+    {
+	  if (IS_PCREL24 ((yyvsp[0].expr)))
+	    {
+	      notethat ("CALLa: CALL pcrel25m2\n");
+	      (yyval.instr) = CALLA ((yyvsp[0].expr), 1);
+	    }
+	  else
+	    return yyerror ("Bad call address");
+	}
+    break;
+
+  case 162:
+#line 2662 "bfin-parse.y"
+    {
+	  if (IS_PCREL24 ((yyvsp[0].expr)))
+	    {
+	      notethat ("CALLa: CALL pcrel25m2\n");
+	      (yyval.instr) = CALLA ((yyvsp[0].expr), 2);
+	    }
+	  else
+	    return yyerror ("Bad call address");
+	}
+    break;
+
+  case 163:
+#line 2675 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 8);
+	  else
+	    return yyerror ("Bad registers for DIVQ");
+	}
+    break;
+
+  case 164:
+#line 2683 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 9);
+	  else
+	    return yyerror ("Bad registers for DIVS");
+	}
+    break;
+
+  case 165:
+#line 2691 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-1].reg)))
+	    {
+	      if ((yyvsp[0].modcodes).r0 == 0 && (yyvsp[0].modcodes).s0 == 0 && (yyvsp[0].modcodes).aop == 0)
+		{
+		  notethat ("ALU2op: dregs = - dregs\n");
+		  (yyval.instr) = ALU2OP (&(yyvsp[-4].reg), &(yyvsp[-1].reg), 14);
+		}
+	      else if ((yyvsp[0].modcodes).r0 == 1 && (yyvsp[0].modcodes).s0 == 0 && (yyvsp[0].modcodes).aop == 3)
+		{
+		  notethat ("dsp32alu: dregs = - dregs (.)\n");
+		  (yyval.instr) = DSP32ALU (15, 0, 0, &(yyvsp[-4].reg), &(yyvsp[-1].reg), 0, (yyvsp[0].modcodes).s0, 0, 3);
+		}
+	      else
+		{
+		  notethat ("dsp32alu: dregs = - dregs (.)\n");
+		  (yyval.instr) = DSP32ALU (7, 0, 0, &(yyvsp[-4].reg), &(yyvsp[-1].reg), 0, (yyvsp[0].modcodes).s0, 0, 3);
+		}
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 166:
+#line 2715 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ALU2op: dregs = ~dregs\n");
+	      (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[0].reg), 15);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 167:
+#line 2726 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ALU2op: dregs >>= dregs\n");
+	      (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 1);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 168:
+#line 2737 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_UIMM ((yyvsp[0].expr), 5))
+	    {
+	      notethat ("LOGI2op: dregs >>= uimm5\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-2].reg), uimm5 ((yyvsp[0].expr)), 6);
+	    }
+	  else
+	    return yyerror ("Dregs expected or value error");
+	}
+    break;
+
+  case 169:
+#line 2748 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ALU2op: dregs >>>= dregs\n");
+	      (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 0);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 170:
+#line 2759 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("ALU2op: dregs <<= dregs\n");
+	      (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 2);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 171:
+#line 2770 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_UIMM ((yyvsp[0].expr), 5))
+	    {
+	      notethat ("LOGI2op: dregs <<= uimm5\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-2].reg), uimm5 ((yyvsp[0].expr)), 7);
+	    }
+	  else
+	    return yyerror ("Dregs expected or const value error");
+	}
+    break;
+
+  case 172:
+#line 2782 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_UIMM ((yyvsp[0].expr), 5))
+	    {
+	      notethat ("LOGI2op: dregs >>>= uimm5\n");
+	      (yyval.instr) = LOGI2OP ((yyvsp[-2].reg), uimm5 ((yyvsp[0].expr)), 5);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 173:
+#line 2795 "bfin-parse.y"
+    {
+	  notethat ("CaCTRL: FLUSH [ pregs ]\n");
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 2);
+	  else
+	    return yyerror ("Bad register(s) for FLUSH");
+	}
+    break;
+
+  case 174:
+#line 2804 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("CaCTRL: FLUSH [ pregs ++ ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 2);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for FLUSH");
+	}
+    break;
+
+  case 175:
+#line 2815 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("CaCTRL: FLUSHINV [ pregs ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 1);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for FLUSH");
+	}
+    break;
+
+  case 176:
+#line 2826 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("CaCTRL: FLUSHINV [ pregs ++ ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 1);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for FLUSH");
+	}
+    break;
+
+  case 177:
+#line 2838 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("CaCTRL: IFLUSH [ pregs ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 3);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for FLUSH");
+	}
+    break;
+
+  case 178:
+#line 2849 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("CaCTRL: IFLUSH [ pregs ++ ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 3);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for FLUSH");
+	}
+    break;
+
+  case 179:
+#line 2860 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("CaCTRL: PREFETCH [ pregs ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 0);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for PREFETCH");
+	}
+    break;
+
+  case 180:
+#line 2871 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("CaCTRL: PREFETCH [ pregs ++ ]\n");
+	      (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 0);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for PREFETCH");
+	}
+    break;
+
+  case 181:
+#line 2885 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDST: B [ pregs <post_op> ] = dregs\n");
+	      (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 2, 0, 1);
+	    }
+	  else
+	    return yyerror ("Register mismatch");
+	}
+    break;
+
+  case 182:
+#line 2897 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-5].reg)) && IS_RANGE(16, (yyvsp[-3].expr), (yyvsp[-4].r0).r0, 1) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDST: B [ pregs + imm16 ] = dregs\n");
+	      if ((yyvsp[-4].r0).r0)
+		neg_value ((yyvsp[-3].expr));
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-5].reg), &(yyvsp[0].reg), 1, 2, 0, (yyvsp[-3].expr));
+	    }
+	  else
+	    return yyerror ("Register mismatch or const size wrong");
+	}
+    break;
+
+  case 183:
+#line 2912 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-5].reg)) && IS_URANGE (4, (yyvsp[-3].expr), (yyvsp[-4].r0).r0, 2) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDSTii: W [ pregs +- uimm5m2 ] = dregs\n");
+	      (yyval.instr) = LDSTII (&(yyvsp[-5].reg), &(yyvsp[0].reg), (yyvsp[-3].expr), 1, 1);
+	    }
+	  else if (IS_PREG ((yyvsp[-5].reg)) && IS_RANGE(16, (yyvsp[-3].expr), (yyvsp[-4].r0).r0, 2) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDSTidxI: W [ pregs + imm17m2 ] = dregs\n");
+	      if ((yyvsp[-4].r0).r0)
+		neg_value ((yyvsp[-3].expr));
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-5].reg), &(yyvsp[0].reg), 1, 1, 0, (yyvsp[-3].expr));
+	    }
+	  else
+	    return yyerror ("Bad register(s) or wrong constant size");
+	}
+    break;
+
+  case 184:
+#line 2931 "bfin-parse.y"
+    {
+	  if (IS_PREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDST: W [ pregs <post_op> ] = dregs\n");
+	      (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 1, 0, 1);
+	    }
+	  else
+	    return yyerror ("Bad register(s) for STORE");
+	}
+    break;
+
+  case 185:
+#line 2942 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-4].reg)))
+	    {
+	      notethat ("dspLDST: W [ iregs <post_op> ] = dregs_half\n");
+	      (yyval.instr) = DSPLDST (&(yyvsp[-4].reg), 1 + IS_H ((yyvsp[0].reg)), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 1);
+	    }
+	  else if ((yyvsp[-3].modcodes).x0 == 2 && IS_PREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDSTpmod: W [ pregs <post_op>] = dregs_half\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-4].reg), &(yyvsp[0].reg), &(yyvsp[-4].reg), 1 + IS_H ((yyvsp[0].reg)), 1);
+	      
+	    }
+	  else
+	    return yyerror ("Bad register(s) for STORE");
+	}
+    break;
+
+  case 186:
+#line 2960 "bfin-parse.y"
+    {
+	  Expr_Node *tmp = (yyvsp[-3].expr);
+	  int ispreg = IS_PREG ((yyvsp[0].reg));
+
+	  if (!IS_PREG ((yyvsp[-5].reg)))
+	    return yyerror ("Preg expected for indirect");
+
+	  if (!IS_DREG ((yyvsp[0].reg)) && !ispreg)
+	    return yyerror ("Bad source register for STORE");
+
+	  if ((yyvsp[-4].r0).r0)
+	    tmp = unary (Expr_Op_Type_NEG, tmp);
+
+	  if (in_range_p (tmp, 0, 63, 3))
+	    {
+	      notethat ("LDSTii: dpregs = [ pregs + uimm6m4 ]\n");
+	      (yyval.instr) = LDSTII (&(yyvsp[-5].reg), &(yyvsp[0].reg), tmp, 1, ispreg ? 3 : 0);
+	    }
+	  else if ((yyvsp[-5].reg).regno == REG_FP && in_range_p (tmp, -128, 0, 3))
+	    {
+	      notethat ("LDSTiiFP: dpregs = [ FP - uimm7m4 ]\n");
+	      tmp = unary (Expr_Op_Type_NEG, tmp);
+	      (yyval.instr) = LDSTIIFP (tmp, &(yyvsp[0].reg), 1);
+	    }
+	  else if (in_range_p (tmp, -131072, 131071, 3))
+	    {
+	      notethat ("LDSTidxI: [ pregs + imm18m4 ] = dpregs\n");
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-5].reg), &(yyvsp[0].reg), 1, 0, ispreg ? 1: 0, tmp);
+	    }
+	  else
+	    return yyerror ("Displacement out of range for store");
+	}
+    break;
+
+  case 187:
+#line 2994 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-4].reg)) && IS_URANGE (4, (yyvsp[-2].expr), (yyvsp[-3].r0).r0, 2))
+	    {
+	      notethat ("LDSTii: dregs = W [ pregs + uimm4s2 ] (.)\n");
+	      (yyval.instr) = LDSTII (&(yyvsp[-4].reg), &(yyvsp[-8].reg), (yyvsp[-2].expr), 0, 1 << (yyvsp[0].r0).r0);
+	    }
+	  else if (IS_DREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-4].reg)) && IS_RANGE(16, (yyvsp[-2].expr), (yyvsp[-3].r0).r0, 2))
+	    {
+	      notethat ("LDSTidxI: dregs = W [ pregs + imm17m2 ] (.)\n");
+	      if ((yyvsp[-3].r0).r0)
+		neg_value ((yyvsp[-2].expr));
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-4].reg), &(yyvsp[-8].reg), 0, 1, (yyvsp[0].r0).r0, (yyvsp[-2].expr));
+	    }
+	  else
+	    return yyerror ("Bad register or constant for LOAD");
+	}
+    break;
+
+  case 188:
+#line 3012 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dspLDST: dregs_half = W [ iregs ]\n");
+	      (yyval.instr) = DSPLDST(&(yyvsp[-2].reg), 1 + IS_H ((yyvsp[-6].reg)), &(yyvsp[-6].reg), (yyvsp[-1].modcodes).x0, 0);
+	    }
+	  else if ((yyvsp[-1].modcodes).x0 == 2 && IS_DREG ((yyvsp[-6].reg)) && IS_PREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("LDSTpmod: dregs_half = W [ pregs ]\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-2].reg), &(yyvsp[-6].reg), &(yyvsp[-2].reg), 1 + IS_H ((yyvsp[-6].reg)), 0);
+	    }
+	  else
+	    return yyerror ("Bad register or post_op for LOAD");
+	}
+    break;
+
+  case 189:
+#line 3029 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("LDST: dregs = W [ pregs <post_op> ] (.)\n");
+	      (yyval.instr) = LDST (&(yyvsp[-3].reg), &(yyvsp[-7].reg), (yyvsp[-2].modcodes).x0, 1, (yyvsp[0].r0).r0, 0);
+	    }
+	  else
+	    return yyerror ("Bad register for LOAD");
+	}
+    break;
+
+  case 190:
+#line 3040 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-4].reg)) && IS_PREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("LDSTpmod: dregs = W [ pregs ++ pregs ] (.)\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-4].reg), &(yyvsp[-8].reg), &(yyvsp[-2].reg), 3, (yyvsp[0].r0).r0);
+	    }
+	  else
+	    return yyerror ("Bad register for LOAD");
+	}
+    break;
+
+  case 191:
+#line 3051 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("LDSTpmod: dregs_half = W [ pregs ++ pregs ]\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-3].reg), &(yyvsp[-7].reg), &(yyvsp[-1].reg), 1 + IS_H ((yyvsp[-7].reg)), 0);
+	    }
+	  else
+	    return yyerror ("Bad register for LOAD");
+	}
+    break;
+
+  case 192:
+#line 3062 "bfin-parse.y"
+    {
+	  if (IS_IREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("dspLDST: [ iregs <post_op> ] = dregs\n");
+	      (yyval.instr) = DSPLDST(&(yyvsp[-4].reg), 0, &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 1);
+	    }
+	  else if (IS_PREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDST: [ pregs <post_op> ] = dregs\n");
+	      (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 0, 0, 1);
+	    }
+	  else if (IS_PREG ((yyvsp[-4].reg)) && IS_PREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LDST: [ pregs <post_op> ] = pregs\n");
+	      (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 0, 1, 1);
+	    }
+	  else
+	    return yyerror ("Bad register for STORE");
+	}
+    break;
+
+  case 193:
+#line 3083 "bfin-parse.y"
+    {
+	  if (! IS_DREG ((yyvsp[0].reg)))
+	    return yyerror ("Expected Dreg for last argument");
+
+	  if (IS_IREG ((yyvsp[-5].reg)) && IS_MREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("dspLDST: [ iregs ++ mregs ] = dregs\n");
+	      (yyval.instr) = DSPLDST(&(yyvsp[-5].reg), (yyvsp[-3].reg).regno & CODE_MASK, &(yyvsp[0].reg), 3, 1);
+	    }
+	  else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("LDSTpmod: [ pregs ++ pregs ] = dregs\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-3].reg), 0, 1);
+	    }
+	  else
+	    return yyerror ("Bad register for STORE");
+	}
+    break;
+
+  case 194:
+#line 3102 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[0].reg)))
+	    return yyerror ("Expect Dreg as last argument");
+	  if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("LDSTpmod: W [ pregs ++ pregs ] = dregs_half\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-3].reg), 1 + IS_H ((yyvsp[0].reg)), 1);
+	    }
+	  else
+	    return yyerror ("Bad register for STORE");
+	}
+    break;
+
+  case 195:
+#line 3115 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-4].reg)) && IS_RANGE(16, (yyvsp[-2].expr), (yyvsp[-3].r0).r0, 1))
+	    {
+	      notethat ("LDSTidxI: dregs = B [ pregs + imm16 ] (%c)\n",
+		       (yyvsp[0].r0).r0 ? 'X' : 'Z');
+	      if ((yyvsp[-3].r0).r0)
+		neg_value ((yyvsp[-2].expr));
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-4].reg), &(yyvsp[-8].reg), 0, 2, (yyvsp[0].r0).r0, (yyvsp[-2].expr));
+	    }
+	  else
+	    return yyerror ("Bad register or value for LOAD");
+	}
+    break;
+
+  case 196:
+#line 3129 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-7].reg)) && IS_PREG ((yyvsp[-3].reg)))
+	    {
+	      notethat ("LDST: dregs = B [ pregs <post_op> ] (%c)\n",
+		       (yyvsp[0].r0).r0 ? 'X' : 'Z');
+	      (yyval.instr) = LDST (&(yyvsp[-3].reg), &(yyvsp[-7].reg), (yyvsp[-2].modcodes).x0, 2, (yyvsp[0].r0).r0, 0);
+	    }
+	  else
+	    return yyerror ("Bad register for LOAD");
+	}
+    break;
+
+  case 197:
+#line 3141 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-6].reg)) && IS_IREG ((yyvsp[-3].reg)) && IS_MREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("dspLDST: dregs = [ iregs ++ mregs ]\n");
+	      (yyval.instr) = DSPLDST(&(yyvsp[-3].reg), (yyvsp[-1].reg).regno & CODE_MASK, &(yyvsp[-6].reg), 3, 0);
+	    }
+	  else if (IS_DREG ((yyvsp[-6].reg)) && IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg)))
+	    {
+	      notethat ("LDSTpmod: dregs = [ pregs ++ pregs ]\n");
+	      (yyval.instr) = LDSTPMOD (&(yyvsp[-3].reg), &(yyvsp[-6].reg), &(yyvsp[-1].reg), 0, 0);
+	    }
+	  else
+	    return yyerror ("Bad register for LOAD");
+	}
+    break;
+
+  case 198:
+#line 3157 "bfin-parse.y"
+    {
+	  Expr_Node *tmp = (yyvsp[-1].expr);
+	  int ispreg = IS_PREG ((yyvsp[-6].reg));
+	  int isgot = IS_RELOC((yyvsp[-1].expr));
+
+	  if (!IS_PREG ((yyvsp[-3].reg)))
+	    return yyerror ("Preg expected for indirect");
+
+	  if (!IS_DREG ((yyvsp[-6].reg)) && !ispreg)
+	    return yyerror ("Bad destination register for LOAD");
+
+	  if ((yyvsp[-2].r0).r0)
+	    tmp = unary (Expr_Op_Type_NEG, tmp);
+
+	  if(isgot){
+	      notethat ("LDSTidxI: dpregs = [ pregs + sym at got ]\n");
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-3].reg), &(yyvsp[-6].reg), 0, 0, ispreg ? 1: 0, tmp);
+	  }
+	  else if (in_range_p (tmp, 0, 63, 3))
+	    {
+	      notethat ("LDSTii: dpregs = [ pregs + uimm7m4 ]\n");
+	      (yyval.instr) = LDSTII (&(yyvsp[-3].reg), &(yyvsp[-6].reg), tmp, 0, ispreg ? 3 : 0);
+	    }
+	  else if ((yyvsp[-3].reg).regno == REG_FP && in_range_p (tmp, -128, 0, 3))
+	    {
+	      notethat ("LDSTiiFP: dpregs = [ FP - uimm7m4 ]\n");
+	      tmp = unary (Expr_Op_Type_NEG, tmp);
+	      (yyval.instr) = LDSTIIFP (tmp, &(yyvsp[-6].reg), 0);
+	    }
+	  else if (in_range_p (tmp, -131072, 131071, 3))
+	    {
+	      notethat ("LDSTidxI: dpregs = [ pregs + imm18m4 ]\n");
+	      (yyval.instr) = LDSTIDXI (&(yyvsp[-3].reg), &(yyvsp[-6].reg), 0, 0, ispreg ? 1: 0, tmp);
+	      
+	    }
+	  else
+	    return yyerror ("Displacement out of range for load");
+	}
+    break;
+
+  case 199:
+#line 3197 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-5].reg)) && IS_IREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("dspLDST: dregs = [ iregs <post_op> ]\n");
+	      (yyval.instr) = DSPLDST (&(yyvsp[-2].reg), 0, &(yyvsp[-5].reg), (yyvsp[-1].modcodes).x0, 0);
+	    }
+	  else if (IS_DREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("LDST: dregs = [ pregs <post_op> ]\n");
+	      (yyval.instr) = LDST (&(yyvsp[-2].reg), &(yyvsp[-5].reg), (yyvsp[-1].modcodes).x0, 0, 0, 0);
+	    }
+	  else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-2].reg)))
+	    {
+	      if (REG_SAME ((yyvsp[-5].reg), (yyvsp[-2].reg)) && (yyvsp[-1].modcodes).x0 != 2)
+		return yyerror ("Pregs can't be same");
+
+	      notethat ("LDST: pregs = [ pregs <post_op> ]\n");
+	      (yyval.instr) = LDST (&(yyvsp[-2].reg), &(yyvsp[-5].reg), (yyvsp[-1].modcodes).x0, 0, 1, 0);
+	    }
+	  else if ((yyvsp[-2].reg).regno == REG_SP && IS_ALLREG ((yyvsp[-5].reg)) && (yyvsp[-1].modcodes).x0 == 0)
+	    {
+	      notethat ("PushPopReg: allregs = [ SP ++ ]\n");
+	      (yyval.instr) = PUSHPOPREG (&(yyvsp[-5].reg), 0);
+	    }
+	  else
+	    return yyerror ("Bad register or value");
+	}
+    break;
+
+  case 200:
+#line 3230 "bfin-parse.y"
+    {
+	  bfin_equals ((yyvsp[-2].expr));
+	  (yyval.instr) = 0;
+	}
+    break;
+
+  case 201:
+#line 3238 "bfin-parse.y"
+    {
+	  if ((yyvsp[-10].reg).regno != REG_SP)
+	    yyerror ("Stack Pointer expected");
+	  if ((yyvsp[-7].reg).regno == REG_R7
+	      && IN_RANGE ((yyvsp[-5].expr), 0, 7)
+	      && (yyvsp[-3].reg).regno == REG_P5
+	      && IN_RANGE ((yyvsp[-1].expr), 0, 5))
+	    {
+	      notethat ("PushPopMultiple: [ -- SP ] = (R7 : reglim , P5 : reglim )\n");
+	      (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-5].expr)), imm5 ((yyvsp[-1].expr)), 1, 1, 1);
+	    }
+	  else
+	    return yyerror ("Bad register for PushPopMultiple");
+	}
+    break;
+
+  case 202:
+#line 3254 "bfin-parse.y"
+    {
+	  if ((yyvsp[-6].reg).regno != REG_SP)
+	    yyerror ("Stack Pointer expected");
+
+	  if ((yyvsp[-3].reg).regno == REG_R7 && IN_RANGE ((yyvsp[-1].expr), 0, 7))
+	    {
+	      notethat ("PushPopMultiple: [ -- SP ] = (R7 : reglim )\n");
+	      (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-1].expr)), 0, 1, 0, 1);
+	    }
+	  else if ((yyvsp[-3].reg).regno == REG_P5 && IN_RANGE ((yyvsp[-1].expr), 0, 6))
+	    {
+	      notethat ("PushPopMultiple: [ -- SP ] = (P5 : reglim )\n");
+	      (yyval.instr) = PUSHPOPMULTIPLE (0, imm5 ((yyvsp[-1].expr)), 0, 1, 1);
+	    }
+	  else
+	    return yyerror ("Bad register for PushPopMultiple");
+	}
+    break;
+
+  case 203:
+#line 3273 "bfin-parse.y"
+    {
+	  if ((yyvsp[0].reg).regno != REG_SP)
+	    yyerror ("Stack Pointer expected");
+	  if ((yyvsp[-9].reg).regno == REG_R7 && (IN_RANGE ((yyvsp[-7].expr), 0, 7))
+	      && (yyvsp[-5].reg).regno == REG_P5 && (IN_RANGE ((yyvsp[-3].expr), 0, 6)))
+	    {
+	      notethat ("PushPopMultiple: (R7 : reglim , P5 : reglim ) = [ SP ++ ]\n");
+	      (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-7].expr)), imm5 ((yyvsp[-3].expr)), 1, 1, 0);
+	    }
+	  else
+	    return yyerror ("Bad register range for PushPopMultiple");
+	}
+    break;
+
+  case 204:
+#line 3287 "bfin-parse.y"
+    {
+	  if ((yyvsp[0].reg).regno != REG_SP)
+	    yyerror ("Stack Pointer expected");
+
+	  if ((yyvsp[-5].reg).regno == REG_R7 && IN_RANGE ((yyvsp[-3].expr), 0, 7))
+	    {
+	      notethat ("PushPopMultiple: (R7 : reglim ) = [ SP ++ ]\n");
+	      (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-3].expr)), 0, 1, 0, 0);
+	    }
+	  else if ((yyvsp[-5].reg).regno == REG_P5 && IN_RANGE ((yyvsp[-3].expr), 0, 6))
+	    {
+	      notethat ("PushPopMultiple: (P5 : reglim ) = [ SP ++ ]\n");
+	      (yyval.instr) = PUSHPOPMULTIPLE (0, imm5 ((yyvsp[-3].expr)), 0, 1, 0);
+	    }
+	  else
+	    return yyerror ("Bad register range for PushPopMultiple");
+	}
+    break;
+
+  case 205:
+#line 3306 "bfin-parse.y"
+    {
+	  if ((yyvsp[-2].reg).regno != REG_SP)
+	    yyerror ("Stack Pointer expected");
+
+	  if (IS_ALLREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("PushPopReg: [ -- SP ] = allregs\n");
+	      (yyval.instr) = PUSHPOPREG (&(yyvsp[0].reg), 1);
+	    }
+	  else
+	    return yyerror ("Bad register for PushPopReg");
+	}
+    break;
+
+  case 206:
+#line 3322 "bfin-parse.y"
+    {
+	  if (IS_URANGE (16, (yyvsp[0].expr), 0, 4))
+	    (yyval.instr) = LINKAGE (0, uimm16s4 ((yyvsp[0].expr)));
+	  else
+	    return yyerror ("Bad constant for LINK");
+	}
+    break;
+
+  case 207:
+#line 3330 "bfin-parse.y"
+    {
+		notethat ("linkage: UNLINK\n");
+		(yyval.instr) = LINKAGE (1, 0);
+	}
+    break;
+
+  case 208:
+#line 3339 "bfin-parse.y"
+    {
+	  if (IS_PCREL4 ((yyvsp[-4].expr)) && IS_LPPCREL10 ((yyvsp[-2].expr)) && IS_CREG ((yyvsp[0].reg)))
+	    {
+	      notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters\n");
+	      (yyval.instr) = LOOPSETUP ((yyvsp[-4].expr), &(yyvsp[0].reg), 0, (yyvsp[-2].expr), 0);
+	    }
+	  else
+	    return yyerror ("Bad register or values for LSETUP");
+	  
+	}
+    break;
+
+  case 209:
+#line 3350 "bfin-parse.y"
+    {
+	  if (IS_PCREL4 ((yyvsp[-6].expr)) && IS_LPPCREL10 ((yyvsp[-4].expr))
+	      && IS_PREG ((yyvsp[0].reg)) && IS_CREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters = pregs\n");
+	      (yyval.instr) = LOOPSETUP ((yyvsp[-6].expr), &(yyvsp[-2].reg), 1, (yyvsp[-4].expr), &(yyvsp[0].reg));
+	    }
+	  else
+	    return yyerror ("Bad register or values for LSETUP");
+	}
+    break;
+
+  case 210:
+#line 3362 "bfin-parse.y"
+    {
+	  if (IS_PCREL4 ((yyvsp[-8].expr)) && IS_LPPCREL10 ((yyvsp[-6].expr))
+	      && IS_PREG ((yyvsp[-2].reg)) && IS_CREG ((yyvsp[-4].reg)) 
+	      && EXPR_VALUE ((yyvsp[0].expr)) == 1)
+	    {
+	      notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters = pregs >> 1\n");
+	      (yyval.instr) = LOOPSETUP ((yyvsp[-8].expr), &(yyvsp[-4].reg), 3, (yyvsp[-6].expr), &(yyvsp[-2].reg));
+	    }
+	  else
+	    return yyerror ("Bad register or values for LSETUP");
+	}
+    break;
+
+  case 211:
+#line 3376 "bfin-parse.y"
+    {
+	  if (!IS_RELOC ((yyvsp[-1].expr)))
+	    return yyerror ("Invalid expression in loop statement");
+	  if (!IS_CREG ((yyvsp[0].reg)))
+            return yyerror ("Invalid loop counter register");
+	(yyval.instr) = bfin_gen_loop ((yyvsp[-1].expr), &(yyvsp[0].reg), 0, 0);
+	}
+    break;
+
+  case 212:
+#line 3384 "bfin-parse.y"
+    {
+	  if (IS_RELOC ((yyvsp[-3].expr)) && IS_PREG ((yyvsp[0].reg)) && IS_CREG ((yyvsp[-2].reg)))
+	    {
+	      notethat ("Loop: LOOP expr counters = pregs\n");
+	      (yyval.instr) = bfin_gen_loop ((yyvsp[-3].expr), &(yyvsp[-2].reg), 1, &(yyvsp[0].reg));
+	    }
+	  else
+	    return yyerror ("Bad register or values for LOOP");
+	}
+    break;
+
+  case 213:
+#line 3394 "bfin-parse.y"
+    {
+	  if (IS_RELOC ((yyvsp[-5].expr)) && IS_PREG ((yyvsp[-2].reg)) && IS_CREG ((yyvsp[-4].reg)) && EXPR_VALUE ((yyvsp[0].expr)) == 1)
+	    {
+	      notethat ("Loop: LOOP expr counters = pregs >> 1\n");
+	      (yyval.instr) = bfin_gen_loop ((yyvsp[-5].expr), &(yyvsp[-4].reg), 3, &(yyvsp[-2].reg));
+	    }
+	  else
+	    return yyerror ("Bad register or values for LOOP");
+	}
+    break;
+
+  case 214:
+#line 3406 "bfin-parse.y"
+    {
+	  notethat ("pseudoDEBUG: DBG\n");
+	  (yyval.instr) = bfin_gen_pseudodbg (3, 7, 0);
+	}
+    break;
+
+  case 215:
+#line 3411 "bfin-parse.y"
+    {
+	  notethat ("pseudoDEBUG: DBG REG_A\n");
+	  (yyval.instr) = bfin_gen_pseudodbg (3, IS_A1 ((yyvsp[0].reg)), 0);
+	}
+    break;
+
+  case 216:
+#line 3416 "bfin-parse.y"
+    {
+	  notethat ("pseudoDEBUG: DBG allregs\n");
+	  (yyval.instr) = bfin_gen_pseudodbg (0, (yyvsp[0].reg).regno & CODE_MASK, (yyvsp[0].reg).regno & CLASS_MASK);
+	}
+    break;
+
+  case 217:
+#line 3422 "bfin-parse.y"
+    {
+	  if (!IS_DREG ((yyvsp[-1].reg)))
+	    return yyerror ("Dregs expected");
+	  notethat ("pseudoDEBUG: DBGCMPLX (dregs )\n");
+	  (yyval.instr) = bfin_gen_pseudodbg (3, 6, (yyvsp[-1].reg).regno & CODE_MASK);
+	}
+    break;
+
+  case 218:
+#line 3430 "bfin-parse.y"
+    {
+	  notethat ("psedoDEBUG: DBGHALT\n");
+	  (yyval.instr) = bfin_gen_pseudodbg (3, 5, 0);
+	}
+    break;
+
+  case 219:
+#line 3436 "bfin-parse.y"
+    {
+	  notethat ("pseudodbg_assert: DBGA (dregs_lo , uimm16 )\n");
+	  (yyval.instr) = bfin_gen_pseudodbg_assert (IS_H ((yyvsp[-3].reg)), &(yyvsp[-3].reg), uimm16 ((yyvsp[-1].expr)));
+	}
+    break;
+
+  case 220:
+#line 3442 "bfin-parse.y"
+    {
+	  notethat ("pseudodbg_assert: DBGAH (dregs , uimm16 )\n");
+	  (yyval.instr) = bfin_gen_pseudodbg_assert (3, &(yyvsp[-3].reg), uimm16 ((yyvsp[-1].expr)));
+	}
+    break;
+
+  case 221:
+#line 3448 "bfin-parse.y"
+    {
+	  notethat ("psedodbg_assert: DBGAL (dregs , uimm16 )\n");
+	  (yyval.instr) = bfin_gen_pseudodbg_assert (2, &(yyvsp[-3].reg), uimm16 ((yyvsp[-1].expr)));
+	}
+    break;
+
+  case 222:
+#line 3461 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[0].reg);
+	}
+    break;
+
+  case 223:
+#line 3465 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[0].reg);
+	}
+    break;
+
+  case 224:
+#line 3474 "bfin-parse.y"
+    {
+	(yyval.mod).MM = 0;
+	(yyval.mod).mod = 0;
+	}
+    break;
+
+  case 225:
+#line 3479 "bfin-parse.y"
+    {
+	(yyval.mod).MM = 1;
+	(yyval.mod).mod = (yyvsp[-1].value);
+	}
+    break;
+
+  case 226:
+#line 3484 "bfin-parse.y"
+    {
+	(yyval.mod).MM = 1;
+	(yyval.mod).mod = (yyvsp[-3].value);
+	}
+    break;
+
+  case 227:
+#line 3489 "bfin-parse.y"
+    {
+	(yyval.mod).MM = 0;
+	(yyval.mod).mod = (yyvsp[-1].value);
+	}
+    break;
+
+  case 228:
+#line 3494 "bfin-parse.y"
+    {
+	(yyval.mod).MM = 1;
+	(yyval.mod).mod = 0;
+	}
+    break;
+
+  case 229:
+#line 3501 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 230:
+#line 3505 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 231:
+#line 3511 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 0;
+	}
+    break;
+
+  case 232:
+#line 3516 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 1;
+	(yyval.modcodes).x0 = 0;
+	}
+    break;
+
+  case 233:
+#line 3521 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 1;
+	}
+    break;
+
+  case 234:
+#line 3526 "bfin-parse.y"
+    {	
+	(yyval.modcodes).s0 = 1;
+	(yyval.modcodes).x0 = 1;
+	}
+    break;
+
+  case 235:
+#line 3534 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 236:
+#line 3538 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 237:
+#line 3544 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 0;
+	}
+    break;
+
+  case 238:
+#line 3549 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = (yyvsp[-1].modcodes).s0;
+	(yyval.modcodes).x0 = (yyvsp[-1].modcodes).x0;
+	}
+    break;
+
+  case 239:
+#line 3556 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 0;
+	(yyval.modcodes).aop = 0;
+	}
+    break;
+
+  case 240:
+#line 3562 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 0;
+	(yyval.modcodes).aop = 1;
+	}
+    break;
+
+  case 241:
+#line 3568 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 1;
+	(yyval.modcodes).x0 = 0;
+	(yyval.modcodes).aop = 1;
+	}
+    break;
+
+  case 242:
+#line 3576 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0;
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 0;
+	}
+    break;
+
+  case 243:
+#line 3582 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 2 + (yyvsp[-1].r0).r0;
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).x0 = 0;
+	}
+    break;
+
+  case 244:
+#line 3588 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0;
+	(yyval.modcodes).s0 = (yyvsp[-1].modcodes).s0;
+	(yyval.modcodes).x0 = (yyvsp[-1].modcodes).x0;
+	}
+    break;
+
+  case 245:
+#line 3594 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 2 + (yyvsp[-3].r0).r0;
+	(yyval.modcodes).s0 = (yyvsp[-1].modcodes).s0;
+	(yyval.modcodes).x0 = (yyvsp[-1].modcodes).x0;
+	}
+    break;
+
+  case 246:
+#line 3600 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 2 + (yyvsp[-1].r0).r0;
+	(yyval.modcodes).s0 = (yyvsp[-3].modcodes).s0;
+	(yyval.modcodes).x0 = (yyvsp[-3].modcodes).x0;
+	}
+    break;
+
+  case 247:
+#line 3608 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 248:
+#line 3612 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 249:
+#line 3616 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 250:
+#line 3622 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 251:
+#line 3626 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 252:
+#line 3630 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 253:
+#line 3636 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0;
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).aop = 0;
+	}
+    break;
+
+  case 254:
+#line 3642 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0;
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).aop = 3;
+	}
+    break;
+
+  case 255:
+#line 3648 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0;
+	(yyval.modcodes).s0 = 1;
+	(yyval.modcodes).aop = 3;
+	}
+    break;
+
+  case 256:
+#line 3654 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 1;
+	(yyval.modcodes).s0 = 0;
+	(yyval.modcodes).aop = 3;
+	}
+    break;
+
+  case 257:
+#line 3660 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 1;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 258:
+#line 3665 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 1;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 259:
+#line 3672 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 260:
+#line 3676 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 261:
+#line 3682 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 0;
+	}
+    break;
+
+  case 262:
+#line 3686 "bfin-parse.y"
+    {
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 263:
+#line 3693 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 264:
+#line 3697 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 265:
+#line 3701 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 3;
+	}
+    break;
+
+  case 266:
+#line 3705 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 2;
+	}
+    break;
+
+  case 267:
+#line 3711 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 268:
+#line 3715 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 269:
+#line 3722 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 270:
+#line 3727 "bfin-parse.y"
+    {
+	if ((yyvsp[-1].value) != M_T)
+	  return yyerror ("Bad modifier");
+	(yyval.modcodes).r0 = 1;
+	(yyval.modcodes).s0 = 0;
+	}
+    break;
+
+  case 271:
+#line 3734 "bfin-parse.y"
+    {
+	if ((yyvsp[-3].value) != M_T)
+	  return yyerror ("Bad modifier");
+	(yyval.modcodes).r0 = 1;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 272:
+#line 3741 "bfin-parse.y"
+    {
+	if ((yyvsp[-1].value) != M_T)
+	  return yyerror ("Bad modifier");
+	(yyval.modcodes).r0 = 1;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 273:
+#line 3753 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 274:
+#line 3757 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 275:
+#line 3761 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 2;
+	}
+    break;
+
+  case 276:
+#line 3767 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 277:
+#line 3771 "bfin-parse.y"
+    {
+	  if ((yyvsp[-1].value) == M_W32)
+	    (yyval.r0).r0 = 1;
+	  else
+	    return yyerror ("Only (W32) allowed");
+	}
+    break;
+
+  case 278:
+#line 3780 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 279:
+#line 3784 "bfin-parse.y"
+    {
+	  if ((yyvsp[-1].value) == M_IU)
+	    (yyval.r0).r0 = 3;
+	  else
+	    return yyerror ("(IU) expected");
+	}
+    break;
+
+  case 280:
+#line 3793 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[-1].reg);
+	}
+    break;
+
+  case 281:
+#line 3799 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[-2].reg);
+	}
+    break;
+
+  case 282:
+#line 3808 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 283:
+#line 3812 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 284:
+#line 3819 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 285:
+#line 3823 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 286:
+#line 3827 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 2;
+	}
+    break;
+
+  case 287:
+#line 3831 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 3;
+	}
+    break;
+
+  case 288:
+#line 3838 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 289:
+#line 3842 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 290:
+#line 3849 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 1;	/* HL.  */
+	  (yyval.modcodes).s0 = 0;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 0;	/* aop.  */
+	}
+    break;
+
+  case 291:
+#line 3857 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 1;	/* HL.  */
+	  (yyval.modcodes).s0 = 0;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 1;	/* aop.  */
+	}
+    break;
+
+  case 292:
+#line 3865 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 0;	/* HL.  */
+	  (yyval.modcodes).s0 = 0;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 0;	/* aop.  */
+	}
+    break;
+
+  case 293:
+#line 3873 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 0;	/* HL.  */
+	  (yyval.modcodes).s0 = 0;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 1;
+	}
+    break;
+
+  case 294:
+#line 3881 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 1;	/* HL.  */
+	  (yyval.modcodes).s0 = 1;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 0;	/* aop.  */
+	}
+    break;
+
+  case 295:
+#line 3888 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 1;	/* HL.  */
+	  (yyval.modcodes).s0 = 1;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 1;	/* aop.  */
+	}
+    break;
+
+  case 296:
+#line 3895 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 0;	/* HL.  */
+	  (yyval.modcodes).s0 = 1;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 0;	/* aop.  */
+	}
+    break;
+
+  case 297:
+#line 3903 "bfin-parse.y"
+    {
+	  (yyval.modcodes).r0 = 0;	/* HL.  */
+	  (yyval.modcodes).s0 = 1;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* x.  */
+	  (yyval.modcodes).aop = 1;	/* aop.  */
+	}
+    break;
+
+  case 298:
+#line 3913 "bfin-parse.y"
+    {
+	  (yyval.modcodes).s0 = 0;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* HL.  */
+	}
+    break;
+
+  case 299:
+#line 3918 "bfin-parse.y"
+    {
+	  (yyval.modcodes).s0 = 0;	/* s.  */
+	  (yyval.modcodes).x0 = 1;	/* HL.  */
+	}
+    break;
+
+  case 300:
+#line 3923 "bfin-parse.y"
+    {
+	  (yyval.modcodes).s0 = 1;	/* s.  */
+	  (yyval.modcodes).x0 = 0;	/* HL.  */
+	}
+    break;
+
+  case 301:
+#line 3928 "bfin-parse.y"
+    {
+	  (yyval.modcodes).s0 = 1;	/* s.  */
+	  (yyval.modcodes).x0 = 1;	/* HL.  */
+	}
+    break;
+
+  case 302:
+#line 3935 "bfin-parse.y"
+    {
+	(yyval.modcodes).x0 = 2;
+	}
+    break;
+
+  case 303:
+#line 3939 "bfin-parse.y"
+    {
+	(yyval.modcodes).x0 = 0;
+	}
+    break;
+
+  case 304:
+#line 3943 "bfin-parse.y"
+    {
+	(yyval.modcodes).x0 = 1;
+	}
+    break;
+
+  case 305:
+#line 3952 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[-1].reg);
+	}
+    break;
+
+  case 306:
+#line 3959 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[-1].reg);
+	}
+    break;
+
+  case 307:
+#line 3966 "bfin-parse.y"
+    {
+	(yyval.reg) = (yyvsp[-1].reg);
+	}
+    break;
+
+  case 308:
+#line 3973 "bfin-parse.y"
+    {
+	  (yyval.macfunc).w = 1;
+          (yyval.macfunc).P = 1;
+          (yyval.macfunc).n = IS_A1 ((yyvsp[0].reg));
+	  (yyval.macfunc).op = 3;
+          (yyval.macfunc).dst = (yyvsp[-2].reg);
+	  (yyval.macfunc).s0.regno = 0;
+          (yyval.macfunc).s1.regno = 0;
+
+	  if (IS_A1 ((yyvsp[0].reg)) && IS_EVEN ((yyvsp[-2].reg)))
+	    return yyerror ("Cannot move A1 to even register");
+	  else if (!IS_A1 ((yyvsp[0].reg)) && !IS_EVEN ((yyvsp[-2].reg)))
+	    return yyerror ("Cannot move A0 to odd register");
+	}
+    break;
+
+  case 309:
+#line 3988 "bfin-parse.y"
+    {
+	  (yyval.macfunc) = (yyvsp[0].macfunc);
+	  (yyval.macfunc).w = 0; (yyval.macfunc).P = 0;
+	  (yyval.macfunc).dst.regno = 0;
+	}
+    break;
+
+  case 310:
+#line 3994 "bfin-parse.y"
+    {
+	  (yyval.macfunc) = (yyvsp[-1].macfunc);
+	  (yyval.macfunc).w = 1;
+          (yyval.macfunc).P = 1;
+          (yyval.macfunc).dst = (yyvsp[-4].reg);
+	}
+    break;
+
+  case 311:
+#line 4002 "bfin-parse.y"
+    {
+	  (yyval.macfunc) = (yyvsp[-1].macfunc);
+	  (yyval.macfunc).w = 1;
+	  (yyval.macfunc).P = 0;
+          (yyval.macfunc).dst = (yyvsp[-4].reg);
+	}
+    break;
+
+  case 312:
+#line 4010 "bfin-parse.y"
+    {
+	  (yyval.macfunc).w = 1;
+	  (yyval.macfunc).P = 0;
+	  (yyval.macfunc).n = IS_A1 ((yyvsp[0].reg));
+	  (yyval.macfunc).op = 3;
+          (yyval.macfunc).dst = (yyvsp[-2].reg);
+	  (yyval.macfunc).s0.regno = 0;
+          (yyval.macfunc).s1.regno = 0;
+
+	  if (IS_A1 ((yyvsp[0].reg)) && !IS_H ((yyvsp[-2].reg)))
+	    return yyerror ("Cannot move A1 to low half of register");
+	  else if (!IS_A1 ((yyvsp[0].reg)) && IS_H ((yyvsp[-2].reg)))
+	    return yyerror ("Cannot move A0 to high half of register");
+	}
+    break;
+
+  case 313:
+#line 4028 "bfin-parse.y"
+    {
+	  (yyval.macfunc).n = IS_A1 ((yyvsp[-1].reg));
+	  (yyval.macfunc).op = 0;
+	  (yyval.macfunc).s0 = (yyvsp[0].macfunc).s0;
+	  (yyval.macfunc).s1 = (yyvsp[0].macfunc).s1;
+	}
+    break;
+
+  case 314:
+#line 4035 "bfin-parse.y"
+    {
+	  (yyval.macfunc).n = IS_A1 ((yyvsp[-1].reg));
+	  (yyval.macfunc).op = 1;
+	  (yyval.macfunc).s0 = (yyvsp[0].macfunc).s0;
+	  (yyval.macfunc).s1 = (yyvsp[0].macfunc).s1;
+	}
+    break;
+
+  case 315:
+#line 4042 "bfin-parse.y"
+    {
+	  (yyval.macfunc).n = IS_A1 ((yyvsp[-1].reg));
+	  (yyval.macfunc).op = 2;
+	  (yyval.macfunc).s0 = (yyvsp[0].macfunc).s0;
+	  (yyval.macfunc).s1 = (yyvsp[0].macfunc).s1;
+	}
+    break;
+
+  case 316:
+#line 4052 "bfin-parse.y"
+    {
+	  if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg)))
+	    {
+	      (yyval.macfunc).s0 = (yyvsp[-2].reg);
+              (yyval.macfunc).s1 = (yyvsp[0].reg);
+	    }
+	  else
+	    return yyerror ("Dregs expected");
+	}
+    break;
+
+  case 317:
+#line 4065 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 0;
+	}
+    break;
+
+  case 318:
+#line 4069 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 1;
+	}
+    break;
+
+  case 319:
+#line 4073 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 2;
+	}
+    break;
+
+  case 320:
+#line 4077 "bfin-parse.y"
+    {
+	(yyval.r0).r0 = 3;
+	}
+    break;
+
+  case 321:
+#line 4084 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = (yyvsp[0].reg).regno;
+	(yyval.modcodes).x0 = (yyvsp[-1].r0).r0;
+	(yyval.modcodes).s0 = 0;
+	}
+    break;
+
+  case 322:
+#line 4090 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0x18;
+	(yyval.modcodes).x0 = (yyvsp[-1].r0).r0;
+	(yyval.modcodes).s0 = 0;
+	}
+    break;
+
+  case 323:
+#line 4096 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = (yyvsp[-2].reg).regno;
+	(yyval.modcodes).x0 = (yyvsp[-1].r0).r0;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 324:
+#line 4102 "bfin-parse.y"
+    {
+	(yyval.modcodes).r0 = 0x18;
+	(yyval.modcodes).x0 = (yyvsp[-1].r0).r0;
+	(yyval.modcodes).s0 = 1;
+	}
+    break;
+
+  case 325:
+#line 4112 "bfin-parse.y"
+    {
+	Expr_Node_Value val;
+	val.s_value = S_GET_NAME((yyvsp[0].symbol));
+	(yyval.expr) = Expr_Node_Create (Expr_Node_Reloc, val, NULL, NULL);
+	}
+    break;
+
+  case 326:
+#line 4121 "bfin-parse.y"
+    { (yyval.value) = BFD_RELOC_BFIN_GOT; }
+    break;
+
+  case 327:
+#line 4123 "bfin-parse.y"
+    { (yyval.value) = BFD_RELOC_BFIN_GOT17M4; }
+    break;
+
+  case 328:
+#line 4125 "bfin-parse.y"
+    { (yyval.value) = BFD_RELOC_BFIN_FUNCDESC_GOT17M4; }
+    break;
+
+  case 329:
+#line 4129 "bfin-parse.y"
+    {
+	Expr_Node_Value val;
+	val.i_value = (yyvsp[0].value);
+	(yyval.expr) = Expr_Node_Create (Expr_Node_GOT_Reloc, val, (yyvsp[-2].expr), NULL);
+	}
+    break;
+
+  case 330:
+#line 4137 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[0].expr);
+	}
+    break;
+
+  case 331:
+#line 4141 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[0].expr);
+	}
+    break;
+
+  case 332:
+#line 4148 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[-2].expr);
+	}
+    break;
+
+  case 333:
+#line 4154 "bfin-parse.y"
+    {
+	Expr_Node_Value val;
+	val.i_value = (yyvsp[0].value);
+	(yyval.expr) = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL);
+	}
+    break;
+
+  case 334:
+#line 4160 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[0].expr);
+	}
+    break;
+
+  case 335:
+#line 4164 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[-1].expr);
+	}
+    break;
+
+  case 336:
+#line 4168 "bfin-parse.y"
+    {
+	(yyval.expr) = unary (Expr_Op_Type_COMP, (yyvsp[0].expr));
+	}
+    break;
+
+  case 337:
+#line 4172 "bfin-parse.y"
+    {
+	(yyval.expr) = unary (Expr_Op_Type_NEG, (yyvsp[0].expr));
+	}
+    break;
+
+  case 338:
+#line 4178 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[0].expr);
+	}
+    break;
+
+  case 339:
+#line 4184 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Mult, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 340:
+#line 4188 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Div, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 341:
+#line 4192 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Mod, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 342:
+#line 4196 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Add, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 343:
+#line 4200 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Sub, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 344:
+#line 4204 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Lshift, (yyvsp[-2].expr), (yyvsp[0].expr));	
+	}
+    break;
+
+  case 345:
+#line 4208 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_Rshift, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 346:
+#line 4212 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_BAND, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 347:
+#line 4216 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_LOR, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 348:
+#line 4220 "bfin-parse.y"
+    {
+	(yyval.expr) = binary (Expr_Op_Type_BOR, (yyvsp[-2].expr), (yyvsp[0].expr));
+	}
+    break;
+
+  case 349:
+#line 4224 "bfin-parse.y"
+    {
+	(yyval.expr) = (yyvsp[0].expr);
+	}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 7065 "bfin-parse.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 4230 "bfin-parse.y"
+
+
+EXPR_T
+mkexpr (int x, SYMBOL_T s)
+{
+  EXPR_T e = (EXPR_T) ALLOCATE (sizeof (struct expression_cell));
+  e->value = x;
+  EXPR_SYMBOL(e) = s;
+  return e;
+}
+
+static int
+value_match (Expr_Node *expr, int sz, int sign, int mul, int issigned)
+{
+  long umax = (1L << sz) - 1;
+  long min = -1L << (sz - 1);
+  long max = (1L << (sz - 1)) - 1;
+	
+  long v = EXPR_VALUE (expr);
+
+  if ((v % mul) != 0)
+    {
+      error ("%s:%d: Value Error -- Must align to %d\n", __FILE__, __LINE__, mul); 
+      return 0;
+    }
+
+  v /= mul;
+
+  if (sign)
+    v = -v;
+
+  if (issigned)
+    {
+      if (v >= min && v <= max) return 1;
+
+#ifdef DEBUG
+      fprintf(stderr, "signed value %lx out of range\n", v * mul);
+#endif
+      return 0;
+    }
+  if (v <= umax && v >= 0) 
+    return 1;
+#ifdef DEBUG
+  fprintf(stderr, "unsigned value %lx out of range\n", v * mul);
+#endif
+  return 0;
+}
+
+/* Return the expression structure that allows symbol operations.
+   If the left and right children are constants, do the operation.  */
+static Expr_Node *
+binary (Expr_Op_Type op, Expr_Node *x, Expr_Node *y)
+{
+  if (x->type == Expr_Node_Constant && y->type == Expr_Node_Constant)
+    {
+      switch (op)
+	{
+        case Expr_Op_Type_Add: 
+	  x->value.i_value += y->value.i_value;
+	  break;
+        case Expr_Op_Type_Sub: 
+	  x->value.i_value -= y->value.i_value;
+	  break;
+        case Expr_Op_Type_Mult: 
+	  x->value.i_value *= y->value.i_value;
+	  break;
+        case Expr_Op_Type_Div: 
+	  if (y->value.i_value == 0)
+	    error ("Illegal Expression:  Division by zero.");
+	  else
+	    x->value.i_value /= y->value.i_value;
+	  break;
+        case Expr_Op_Type_Mod: 
+	  x->value.i_value %= y->value.i_value;
+	  break;
+        case Expr_Op_Type_Lshift: 
+	  x->value.i_value <<= y->value.i_value;
+	  break;
+        case Expr_Op_Type_Rshift: 
+	  x->value.i_value >>= y->value.i_value;
+	  break;
+        case Expr_Op_Type_BAND: 
+	  x->value.i_value &= y->value.i_value;
+	  break;
+        case Expr_Op_Type_BOR: 
+	  x->value.i_value |= y->value.i_value;
+	  break;
+        case Expr_Op_Type_BXOR: 
+	  x->value.i_value ^= y->value.i_value;
+	  break;
+        case Expr_Op_Type_LAND: 
+	  x->value.i_value = x->value.i_value && y->value.i_value;
+	  break;
+        case Expr_Op_Type_LOR: 
+	  x->value.i_value = x->value.i_value || y->value.i_value;
+	  break;
+
+	default:
+	  error ("%s:%d: Internal compiler error\n", __FILE__, __LINE__); 
+	}
+      return x;
+    }
+  else
+    {
+    /* Create a new expression structure.  */
+    Expr_Node_Value val;
+    val.op_value = op;
+    return Expr_Node_Create (Expr_Node_Binop, val, x, y);
+  }
+}
+
+static Expr_Node *
+unary (Expr_Op_Type op, Expr_Node *x) 
+{
+  if (x->type == Expr_Node_Constant)
+    {
+      switch (op)
+	{
+	case Expr_Op_Type_NEG: 
+	  x->value.i_value = -x->value.i_value;
+	  break;
+	case Expr_Op_Type_COMP:
+	  x->value.i_value = ~x->value.i_value;
+	  break;
+	default:
+	  error ("%s:%d: Internal compiler error\n", __FILE__, __LINE__); 
+	}
+      return x;
+    }
+  else
+    {
+      /* Create a new expression structure.  */
+      Expr_Node_Value val;
+      val.op_value = op;
+      return Expr_Node_Create (Expr_Node_Unop, val, x, NULL);
+    }
+}
+
+int debug_codeselection = 0;
+static void
+notethat (char *format, ...)
+{
+  va_list ap;
+  va_start (ap, format);
+  if (debug_codeselection)
+    {
+      vfprintf (errorf, format, ap);
+    }
+  va_end (ap);
+}
+
+#ifdef TEST
+main (int argc, char **argv)
+{
+  yyparse();
+}
+#endif
+
+

Added: branches/binutils/package/gas/bfin-parse.h
===================================================================
--- branches/binutils/package/gas/bfin-parse.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/bfin-parse.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,406 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     BYTEOP16P = 258,
+     BYTEOP16M = 259,
+     BYTEOP1P = 260,
+     BYTEOP2P = 261,
+     BYTEOP2M = 262,
+     BYTEOP3P = 263,
+     BYTEUNPACK = 264,
+     BYTEPACK = 265,
+     PACK = 266,
+     SAA = 267,
+     ALIGN8 = 268,
+     ALIGN16 = 269,
+     ALIGN24 = 270,
+     VIT_MAX = 271,
+     EXTRACT = 272,
+     DEPOSIT = 273,
+     EXPADJ = 274,
+     SEARCH = 275,
+     ONES = 276,
+     SIGN = 277,
+     SIGNBITS = 278,
+     LINK = 279,
+     UNLINK = 280,
+     REG = 281,
+     PC = 282,
+     CCREG = 283,
+     BYTE_DREG = 284,
+     REG_A_DOUBLE_ZERO = 285,
+     REG_A_DOUBLE_ONE = 286,
+     A_ZERO_DOT_L = 287,
+     A_ZERO_DOT_H = 288,
+     A_ONE_DOT_L = 289,
+     A_ONE_DOT_H = 290,
+     HALF_REG = 291,
+     NOP = 292,
+     RTI = 293,
+     RTS = 294,
+     RTX = 295,
+     RTN = 296,
+     RTE = 297,
+     HLT = 298,
+     IDLE = 299,
+     STI = 300,
+     CLI = 301,
+     CSYNC = 302,
+     SSYNC = 303,
+     EMUEXCPT = 304,
+     RAISE = 305,
+     EXCPT = 306,
+     LSETUP = 307,
+     LOOP = 308,
+     LOOP_BEGIN = 309,
+     LOOP_END = 310,
+     DISALGNEXCPT = 311,
+     JUMP = 312,
+     JUMP_DOT_S = 313,
+     JUMP_DOT_L = 314,
+     CALL = 315,
+     ABORT = 316,
+     NOT = 317,
+     TILDA = 318,
+     BANG = 319,
+     AMPERSAND = 320,
+     BAR = 321,
+     PERCENT = 322,
+     CARET = 323,
+     BXOR = 324,
+     MINUS = 325,
+     PLUS = 326,
+     STAR = 327,
+     SLASH = 328,
+     NEG = 329,
+     MIN = 330,
+     MAX = 331,
+     ABS = 332,
+     DOUBLE_BAR = 333,
+     _PLUS_BAR_PLUS = 334,
+     _PLUS_BAR_MINUS = 335,
+     _MINUS_BAR_PLUS = 336,
+     _MINUS_BAR_MINUS = 337,
+     _MINUS_MINUS = 338,
+     _PLUS_PLUS = 339,
+     SHIFT = 340,
+     LSHIFT = 341,
+     ASHIFT = 342,
+     BXORSHIFT = 343,
+     _GREATER_GREATER_GREATER_THAN_ASSIGN = 344,
+     ROT = 345,
+     LESS_LESS = 346,
+     GREATER_GREATER = 347,
+     _GREATER_GREATER_GREATER = 348,
+     _LESS_LESS_ASSIGN = 349,
+     _GREATER_GREATER_ASSIGN = 350,
+     DIVS = 351,
+     DIVQ = 352,
+     ASSIGN = 353,
+     _STAR_ASSIGN = 354,
+     _BAR_ASSIGN = 355,
+     _CARET_ASSIGN = 356,
+     _AMPERSAND_ASSIGN = 357,
+     _MINUS_ASSIGN = 358,
+     _PLUS_ASSIGN = 359,
+     _ASSIGN_BANG = 360,
+     _LESS_THAN_ASSIGN = 361,
+     _ASSIGN_ASSIGN = 362,
+     GE = 363,
+     LT = 364,
+     LE = 365,
+     GT = 366,
+     LESS_THAN = 367,
+     FLUSHINV = 368,
+     FLUSH = 369,
+     IFLUSH = 370,
+     PREFETCH = 371,
+     PRNT = 372,
+     OUTC = 373,
+     WHATREG = 374,
+     TESTSET = 375,
+     ASL = 376,
+     ASR = 377,
+     B = 378,
+     W = 379,
+     NS = 380,
+     S = 381,
+     CO = 382,
+     SCO = 383,
+     TH = 384,
+     TL = 385,
+     BP = 386,
+     BREV = 387,
+     X = 388,
+     Z = 389,
+     M = 390,
+     MMOD = 391,
+     R = 392,
+     RND = 393,
+     RNDL = 394,
+     RNDH = 395,
+     RND12 = 396,
+     RND20 = 397,
+     V = 398,
+     LO = 399,
+     HI = 400,
+     BITTGL = 401,
+     BITCLR = 402,
+     BITSET = 403,
+     BITTST = 404,
+     BITMUX = 405,
+     DBGAL = 406,
+     DBGAH = 407,
+     DBGHALT = 408,
+     DBG = 409,
+     DBGA = 410,
+     DBGCMPLX = 411,
+     IF = 412,
+     COMMA = 413,
+     BY = 414,
+     COLON = 415,
+     SEMICOLON = 416,
+     RPAREN = 417,
+     LPAREN = 418,
+     LBRACK = 419,
+     RBRACK = 420,
+     STATUS_REG = 421,
+     MNOP = 422,
+     SYMBOL = 423,
+     NUMBER = 424,
+     GOT = 425,
+     GOT17M4 = 426,
+     FUNCDESC_GOT17M4 = 427,
+     AT = 428,
+     PLTPC = 429
+   };
+#endif
+/* Tokens.  */
+#define BYTEOP16P 258
+#define BYTEOP16M 259
+#define BYTEOP1P 260
+#define BYTEOP2P 261
+#define BYTEOP2M 262
+#define BYTEOP3P 263
+#define BYTEUNPACK 264
+#define BYTEPACK 265
+#define PACK 266
+#define SAA 267
+#define ALIGN8 268
+#define ALIGN16 269
+#define ALIGN24 270
+#define VIT_MAX 271
+#define EXTRACT 272
+#define DEPOSIT 273
+#define EXPADJ 274
+#define SEARCH 275
+#define ONES 276
+#define SIGN 277
+#define SIGNBITS 278
+#define LINK 279
+#define UNLINK 280
+#define REG 281
+#define PC 282
+#define CCREG 283
+#define BYTE_DREG 284
+#define REG_A_DOUBLE_ZERO 285
+#define REG_A_DOUBLE_ONE 286
+#define A_ZERO_DOT_L 287
+#define A_ZERO_DOT_H 288
+#define A_ONE_DOT_L 289
+#define A_ONE_DOT_H 290
+#define HALF_REG 291
+#define NOP 292
+#define RTI 293
+#define RTS 294
+#define RTX 295
+#define RTN 296
+#define RTE 297
+#define HLT 298
+#define IDLE 299
+#define STI 300
+#define CLI 301
+#define CSYNC 302
+#define SSYNC 303
+#define EMUEXCPT 304
+#define RAISE 305
+#define EXCPT 306
+#define LSETUP 307
+#define LOOP 308
+#define LOOP_BEGIN 309
+#define LOOP_END 310
+#define DISALGNEXCPT 311
+#define JUMP 312
+#define JUMP_DOT_S 313
+#define JUMP_DOT_L 314
+#define CALL 315
+#define ABORT 316
+#define NOT 317
+#define TILDA 318
+#define BANG 319
+#define AMPERSAND 320
+#define BAR 321
+#define PERCENT 322
+#define CARET 323
+#define BXOR 324
+#define MINUS 325
+#define PLUS 326
+#define STAR 327
+#define SLASH 328
+#define NEG 329
+#define MIN 330
+#define MAX 331
+#define ABS 332
+#define DOUBLE_BAR 333
+#define _PLUS_BAR_PLUS 334
+#define _PLUS_BAR_MINUS 335
+#define _MINUS_BAR_PLUS 336
+#define _MINUS_BAR_MINUS 337
+#define _MINUS_MINUS 338
+#define _PLUS_PLUS 339
+#define SHIFT 340
+#define LSHIFT 341
+#define ASHIFT 342
+#define BXORSHIFT 343
+#define _GREATER_GREATER_GREATER_THAN_ASSIGN 344
+#define ROT 345
+#define LESS_LESS 346
+#define GREATER_GREATER 347
+#define _GREATER_GREATER_GREATER 348
+#define _LESS_LESS_ASSIGN 349
+#define _GREATER_GREATER_ASSIGN 350
+#define DIVS 351
+#define DIVQ 352
+#define ASSIGN 353
+#define _STAR_ASSIGN 354
+#define _BAR_ASSIGN 355
+#define _CARET_ASSIGN 356
+#define _AMPERSAND_ASSIGN 357
+#define _MINUS_ASSIGN 358
+#define _PLUS_ASSIGN 359
+#define _ASSIGN_BANG 360
+#define _LESS_THAN_ASSIGN 361
+#define _ASSIGN_ASSIGN 362
+#define GE 363
+#define LT 364
+#define LE 365
+#define GT 366
+#define LESS_THAN 367
+#define FLUSHINV 368
+#define FLUSH 369
+#define IFLUSH 370
+#define PREFETCH 371
+#define PRNT 372
+#define OUTC 373
+#define WHATREG 374
+#define TESTSET 375
+#define ASL 376
+#define ASR 377
+#define B 378
+#define W 379
+#define NS 380
+#define S 381
+#define CO 382
+#define SCO 383
+#define TH 384
+#define TL 385
+#define BP 386
+#define BREV 387
+#define X 388
+#define Z 389
+#define M 390
+#define MMOD 391
+#define R 392
+#define RND 393
+#define RNDL 394
+#define RNDH 395
+#define RND12 396
+#define RND20 397
+#define V 398
+#define LO 399
+#define HI 400
+#define BITTGL 401
+#define BITCLR 402
+#define BITSET 403
+#define BITTST 404
+#define BITMUX 405
+#define DBGAL 406
+#define DBGAH 407
+#define DBGHALT 408
+#define DBG 409
+#define DBGA 410
+#define DBGCMPLX 411
+#define IF 412
+#define COMMA 413
+#define BY 414
+#define COLON 415
+#define SEMICOLON 416
+#define RPAREN 417
+#define LPAREN 418
+#define LBRACK 419
+#define RBRACK 420
+#define STATUS_REG 421
+#define MNOP 422
+#define SYMBOL 423
+#define NUMBER 424
+#define GOT 425
+#define GOT17M4 426
+#define FUNCDESC_GOT17M4 427
+#define AT 428
+#define PLTPC 429
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 366 "bfin-parse.y"
+typedef union YYSTYPE {
+  INSTR_T instr;
+  Expr_Node *expr;
+  SYMBOL_T symbol;
+  long value;
+  Register reg;
+  Macfunc macfunc;
+  struct { int r0; int s0; int x0; int aop; } modcodes;
+  struct { int r0; } r0;
+  Opt_mode mod;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 398 "bfin-parse.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Modified: branches/binutils/package/gas/config/tc-arm.c
===================================================================
--- branches/binutils/package/gas/config/tc-arm.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/tc-arm.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -5803,7 +5803,6 @@
 {
   int reloc;
   inst.instruction |= inst.operands[0].reg << 12;
-  inst.reloc.exp.X_add_number *= 4;
   if (thumb_mode)
     reloc = BFD_RELOC_ARM_T32_CP_OFF_IMM_S2;
   else
@@ -11491,6 +11490,29 @@
   return insn;
 }
 
+
+/* We usually want to set the low bit on the address of thumb function
+   symbols.  In particular .word foo - . should have the low bit set.
+   Generic code tries to fold the difference of two symbols to
+   a constant.  Prevent this and force a relocation when the first symbols
+   is a thumb function.  */
+int
+arm_optimize_expr (expressionS *l, operatorT op, expressionS *r)
+{
+  if (op == O_subtract
+      && l->X_op == O_symbol
+      && r->X_op == O_symbol
+      && THUMB_IS_FUNC (l->X_add_symbol))
+    {
+      l->X_op = O_subtract;
+      l->X_op_symbol = r->X_add_symbol;
+      l->X_add_number -= r->X_add_number;
+      return 1;
+    }
+  /* Process as normal.  */
+  return 0;
+}
+
 void
 md_apply_fix (fixS *	fixP,
 	       valueT * valP,
@@ -12157,6 +12179,7 @@
       if (value < -255 || value > 255)
 	as_bad_where (fixP->fx_file, fixP->fx_line,
 		      _("co-processor offset out of range"));
+      value *= 4;
       goto cp_off_common;
 
     case BFD_RELOC_ARM_THUMB_OFFSET:

Modified: branches/binutils/package/gas/config/tc-arm.h
===================================================================
--- branches/binutils/package/gas/config/tc-arm.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/tc-arm.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -83,6 +83,9 @@
   arm_relax_frag(segment, fragp, stretch)
 extern int arm_relax_frag (asection *, struct frag *, long);
 
+#define md_optimize_expr(l,o,r)		arm_optimize_expr (l, o, r)
+extern int arm_optimize_expr (expressionS *, operatorT, expressionS *);
+
 #define md_cleanup() arm_cleanup ()
 
 #define md_start_line_hook() arm_start_line_hook ()
@@ -148,6 +151,12 @@
    || (FIX)->fx_r_type == BFD_RELOC_32			\
    || TC_FORCE_RELOCATION (FIX))
 
+/* Force output of R_ARM_REL32 relocations against thumb function symbols.
+   This is needed to ensure the low bit is handled correctly.  */
+#define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEG)	\
+  (THUMB_IS_FUNC ((FIX)->fx_addsy)		\
+   || !SEG_NORMAL (SEG))
+
 #define TC_CONS_FIX_NEW cons_fix_new_arm
 
 #define MAX_MEM_FOR_RS_ALIGN_CODE 31

Modified: branches/binutils/package/gas/config/tc-avr.h
===================================================================
--- branches/binutils/package/gas/config/tc-avr.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/tc-avr.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -120,3 +120,21 @@
    also affected by this macro.  The default definition will set
    P2VAR to the truncated power of two of sizes up to eight bytes.  */
 #define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) (P2VAR) = 0
+
+/* We don't want gas to fixup the following program memory related relocations.
+   We will need them in case that we want to do linker relaxation.
+   We could in principle keep these fixups in gas when not relaxing.
+   However, there is no serious performance penilty when making the linker
+   make the fixup work.  */
+#define TC_VALIDATE_FIX(FIXP,SEG,SKIP)                     \
+ if (   (FIXP->fx_r_type == BFD_RELOC_AVR_7_PCREL          \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_13_PCREL         \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_LO8_LDI_PM       \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_HI8_LDI_PM       \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_HH8_LDI_PM       \
+      || FIXP->fx_r_type == BFD_RELOC_AVR_16_PM)           \
+     && (FIXP->fx_addsy))                                  \
+   {                                                       \
+     goto SKIP;                                            \
+   }
+

Modified: branches/binutils/package/gas/config/tc-m68k.c
===================================================================
--- branches/binutils/package/gas/config/tc-m68k.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/tc-m68k.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -7233,6 +7233,15 @@
   
   current_architecture &= ~not_current_architecture;
 
+  if ((current_architecture & (cfloat | m68881)) == (cfloat | m68881))
+    {
+      /* Determine which float is really meant.  */
+      if (current_architecture & (m68k_mask & ~m68881))
+	current_architecture ^= cfloat;
+      else
+	current_architecture ^= m68881;
+    }
+
   if (selected_cpu)
     {
       control_regs = selected_cpu->control_regs;
@@ -7244,15 +7253,6 @@
 	}
     }
 
-  if ((current_architecture & (cfloat | m68881)) == (cfloat | m68881))
-    {
-      /* Determine which float is really meant.  */
-      if (current_architecture & (m68k_mask & ~m68881))
-	current_architecture ^= cfloat;
-      else
-	current_architecture ^= m68881;
-    }
-
   if ((current_architecture & m68k_mask)
       && (current_architecture & ~m68k_mask))
     {

Modified: branches/binutils/package/gas/config/tc-mips.c
===================================================================
--- branches/binutils/package/gas/config/tc-mips.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/tc-mips.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -2406,9 +2406,6 @@
 	      if ((address_expr->X_add_number & 3) != 0)
 		as_bad (_("jump to misaligned address (0x%lx)"),
 			(unsigned long) address_expr->X_add_number);
-	      if (address_expr->X_add_number & ~0xfffffff)
-		as_bad (_("jump address range overflow (0x%lx)"),
-			(unsigned long) address_expr->X_add_number);
 	      ip->insn_opcode |= (address_expr->X_add_number >> 2) & 0x3ffffff;
 	      break;
 
@@ -2416,9 +2413,6 @@
 	      if ((address_expr->X_add_number & 3) != 0)
 		as_bad (_("jump to misaligned address (0x%lx)"),
 			(unsigned long) address_expr->X_add_number);
-	      if (address_expr->X_add_number & ~0xfffffff)
-		as_bad (_("jump address range overflow (0x%lx)"),
-			(unsigned long) address_expr->X_add_number);
 	      ip->insn_opcode |=
 		(((address_expr->X_add_number & 0x7c0000) << 3)
 		 | ((address_expr->X_add_number & 0xf800000) >> 7)

Modified: branches/binutils/package/gas/config/tc-xtensa.c
===================================================================
--- branches/binutils/package/gas/config/tc-xtensa.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/tc-xtensa.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -3980,7 +3980,6 @@
 
   xtensa_add_literal_sym (symbolP);
 
-  frag->tc_frag_data.is_literal = TRUE;
   lit_num++;
   return symbolP;
 }
@@ -4046,7 +4045,6 @@
   frag_now->tc_frag_data.literal_frag = get_literal_pool_location (now_seg);
   frag_now->fr_symbol = xtensa_create_literal_symbol (now_seg, frag_now);
   lit_sym = frag_now->fr_symbol;
-  frag_now->tc_frag_data.is_literal = TRUE;
 
   /* Go back.  */
   xtensa_restore_emit_state (&state);
@@ -4075,7 +4073,6 @@
 
   lit_saved_frag = frag_now;
   frag_now->tc_frag_data.literal_frag = get_literal_pool_location (now_seg);
-  frag_now->tc_frag_data.is_literal = TRUE;
   frag_now->fr_symbol = xtensa_create_literal_symbol (now_seg, frag_now);
   xg_finish_frag (0, RELAX_LITERAL, 0, size, FALSE);
 
@@ -4230,7 +4227,6 @@
 {
   symbolS *sym = get_special_label_symbol ();
   int i;
-  /* assert (!insn->is_literal); */
   for (i = 0; i < insn->ntok; i++)
     if (insn->tok[i].X_add_symbol == sym)
       insn->tok[i].X_add_symbol = label_sym;
@@ -6573,7 +6569,8 @@
        || orig_insn->opcode == xtensa_movi_n_opcode)
       && !cur_vinsn.inside_bundle
       && (orig_insn->tok[1].X_op == O_symbol
-	  || orig_insn->tok[1].X_op == O_pltrel))
+	  || orig_insn->tok[1].X_op == O_pltrel)
+      && !orig_insn->is_specific_opcode && use_transform ())
     xg_assembly_relax (&istack, orig_insn, now_seg, frag_now, 0, 1, 0);
   else
     if (xg_expand_assembly_insn (&istack, orig_insn))

Modified: branches/binutils/package/gas/config/xtensa-relax.c
===================================================================
--- branches/binutils/package/gas/config/xtensa-relax.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/config/xtensa-relax.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -101,6 +101,10 @@
 #include <stddef.h>
 #include "xtensa-config.h"
 
+#ifndef XCHAL_HAVE_WIDE_BRANCHES
+#define XCHAL_HAVE_WIDE_BRANCHES 0
+#endif
+
 /* Imported from bfd.  */
 extern xtensa_isa xtensa_default_isa;
 
@@ -345,30 +349,30 @@
      table since they are more efficient than the branch-around
      relaxations.  */
   
-  {"beqz %as,%label ? IsaUseWideBranches", "beqz.w18 %as,%label"},
-  {"bnez %as,%label ? IsaUseWideBranches", "bnez.w18 %as,%label"},
-  {"bgez %as,%label ? IsaUseWideBranches", "bgez.w18 %as,%label"},
-  {"bltz %as,%label ? IsaUseWideBranches", "bltz.w18 %as,%label"},
-  {"beqi %as,%imm,%label ? IsaUseWideBranches", "beqi.w18 %as,%imm,%label"},
-  {"bnei %as,%imm,%label ? IsaUseWideBranches", "bnei.w18 %as,%imm,%label"},
-  {"bgei %as,%imm,%label ? IsaUseWideBranches", "bgei.w18 %as,%imm,%label"},
-  {"blti %as,%imm,%label ? IsaUseWideBranches", "blti.w18 %as,%imm,%label"},
-  {"bgeui %as,%imm,%label ? IsaUseWideBranches", "bgeui.w18 %as,%imm,%label"},
-  {"bltui %as,%imm,%label ? IsaUseWideBranches", "bltui.w18 %as,%imm,%label"},
-  {"bbci %as,%imm,%label ? IsaUseWideBranches", "bbci.w18 %as,%imm,%label"},
-  {"bbsi %as,%imm,%label ? IsaUseWideBranches", "bbsi.w18 %as,%imm,%label"},
-  {"beq %as,%at,%label ? IsaUseWideBranches", "beq.w18 %as,%at,%label"},
-  {"bne %as,%at,%label ? IsaUseWideBranches", "bne.w18 %as,%at,%label"},
-  {"bge %as,%at,%label ? IsaUseWideBranches", "bge.w18 %as,%at,%label"},
-  {"blt %as,%at,%label ? IsaUseWideBranches", "blt.w18 %as,%at,%label"},
-  {"bgeu %as,%at,%label ? IsaUseWideBranches", "bgeu.w18 %as,%at,%label"},
-  {"bltu %as,%at,%label ? IsaUseWideBranches", "bltu.w18 %as,%at,%label"},
-  {"bany %as,%at,%label ? IsaUseWideBranches", "bany.w18 %as,%at,%label"},
-  {"bnone %as,%at,%label ? IsaUseWideBranches", "bnone.w18 %as,%at,%label"},
-  {"ball %as,%at,%label ? IsaUseWideBranches", "ball.w18 %as,%at,%label"},
-  {"bnall %as,%at,%label ? IsaUseWideBranches", "bnall.w18 %as,%at,%label"},
-  {"bbc %as,%at,%label ? IsaUseWideBranches", "bbc.w18 %as,%at,%label"},
-  {"bbs %as,%at,%label ? IsaUseWideBranches", "bbs.w18 %as,%at,%label"},
+  {"beqz %as,%label ? IsaUseWideBranches", "WIDE.beqz %as,%label"},
+  {"bnez %as,%label ? IsaUseWideBranches", "WIDE.bnez %as,%label"},
+  {"bgez %as,%label ? IsaUseWideBranches", "WIDE.bgez %as,%label"},
+  {"bltz %as,%label ? IsaUseWideBranches", "WIDE.bltz %as,%label"},
+  {"beqi %as,%imm,%label ? IsaUseWideBranches", "WIDE.beqi %as,%imm,%label"},
+  {"bnei %as,%imm,%label ? IsaUseWideBranches", "WIDE.bnei %as,%imm,%label"},
+  {"bgei %as,%imm,%label ? IsaUseWideBranches", "WIDE.bgei %as,%imm,%label"},
+  {"blti %as,%imm,%label ? IsaUseWideBranches", "WIDE.blti %as,%imm,%label"},
+  {"bgeui %as,%imm,%label ? IsaUseWideBranches", "WIDE.bgeui %as,%imm,%label"},
+  {"bltui %as,%imm,%label ? IsaUseWideBranches", "WIDE.bltui %as,%imm,%label"},
+  {"bbci %as,%imm,%label ? IsaUseWideBranches", "WIDE.bbci %as,%imm,%label"},
+  {"bbsi %as,%imm,%label ? IsaUseWideBranches", "WIDE.bbsi %as,%imm,%label"},
+  {"beq %as,%at,%label ? IsaUseWideBranches", "WIDE.beq %as,%at,%label"},
+  {"bne %as,%at,%label ? IsaUseWideBranches", "WIDE.bne %as,%at,%label"},
+  {"bge %as,%at,%label ? IsaUseWideBranches", "WIDE.bge %as,%at,%label"},
+  {"blt %as,%at,%label ? IsaUseWideBranches", "WIDE.blt %as,%at,%label"},
+  {"bgeu %as,%at,%label ? IsaUseWideBranches", "WIDE.bgeu %as,%at,%label"},
+  {"bltu %as,%at,%label ? IsaUseWideBranches", "WIDE.bltu %as,%at,%label"},
+  {"bany %as,%at,%label ? IsaUseWideBranches", "WIDE.bany %as,%at,%label"},
+  {"bnone %as,%at,%label ? IsaUseWideBranches", "WIDE.bnone %as,%at,%label"},
+  {"ball %as,%at,%label ? IsaUseWideBranches", "WIDE.ball %as,%at,%label"},
+  {"bnall %as,%at,%label ? IsaUseWideBranches", "WIDE.bnall %as,%at,%label"},
+  {"bbc %as,%at,%label ? IsaUseWideBranches", "WIDE.bbc %as,%at,%label"},
+  {"bbs %as,%at,%label ? IsaUseWideBranches", "WIDE.bbs %as,%at,%label"},
   
   /* Widening branch comparisons eq/ne to zero.  Prefer relaxing to narrow
      branches if the density option is available.  */
@@ -1550,6 +1554,31 @@
 }
 
 
+static bfd_boolean
+wide_branch_opcode (const char *opcode_name,
+		    char *suffix,
+		    xtensa_opcode *popcode)
+{
+  xtensa_isa isa = xtensa_default_isa;
+  xtensa_opcode opcode;
+  static char wbr_name_buf[20];
+
+  if (strncmp (opcode_name, "WIDE.", 5) != 0)
+    return FALSE;
+
+  strcpy (wbr_name_buf, opcode_name + 5);
+  strcat (wbr_name_buf, suffix);
+  opcode = xtensa_opcode_lookup (isa, wbr_name_buf);
+  if (opcode != XTENSA_UNDEFINED)
+    {
+      *popcode = opcode;
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+
 static TransitionRule *
 build_transition (insn_pattern *initial_insn,
 		  insn_repl *replace_insns,
@@ -1727,13 +1756,19 @@
       else
 	{
 	  bi->typ = INSTR_INSTR;
-	  bi->opcode = xtensa_opcode_lookup (isa, r->t.opcode_name);
+	  if (wide_branch_opcode (opcode_name, ".w18", &bi->opcode)
+	      || wide_branch_opcode (opcode_name, ".w15", &bi->opcode))
+	    opcode_name = xtensa_opcode_name (isa, bi->opcode);
+	  else
+	    bi->opcode = xtensa_opcode_lookup (isa, opcode_name);
+
 	  if (bi->opcode == XTENSA_UNDEFINED)
 	    {
 	      as_warn (_("invalid opcode '%s' in transition rule '%s'"),
-		       r->t.opcode_name, to_string);
+		       opcode_name, to_string);
 	      return NULL;
 	    }
+
 	  /* Check for the right number of ops.  */
 	  if (xtensa_opcode_num_operands (isa, bi->opcode)
 	      != (int) operand_count)

Modified: branches/binutils/package/gas/doc/Makefile.am
===================================================================
--- branches/binutils/package/gas/doc/Makefile.am	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/Makefile.am	2006-12-31 16:27:59 UTC (rev 19)
@@ -8,7 +8,7 @@
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
 
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 
 POD2MAN = pod2man --center="GNU Development Tools" \
 	--release="binutils-$(VERSION)" --section=1
@@ -17,11 +17,13 @@
 
 info_TEXINFOS = as.texinfo 
 
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+
 asconfig.texi: $(CONFIG).texi
 	rm -f asconfig.texi
 	cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
 	chmod u+w ./asconfig.texi
-	echo "@set top_srcdir $(top_srcdir)" >> ./asconfig.texi
 
 CPU_DOCS = \
 	c-alpha.texi \

Modified: branches/binutils/package/gas/doc/Makefile.in
===================================================================
--- branches/binutils/package/gas/doc/Makefile.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/Makefile.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -58,11 +58,6 @@
 PSS = as.ps
 HTMLS = as.html
 TEXINFOS = as.texinfo
-TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then \
-             echo $(top_srcdir)/../texinfo/util/texi2dvi; \
-           else \
-             echo texi2dvi; \
-           fi`
 TEXI2PDF = $(TEXI2DVI) --pdf --batch
 MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
@@ -211,12 +206,14 @@
 
 # Options to extract the man page from as.texinfo
 MANCONF = -Dman
-TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 POD2MAN = pod2man --center="GNU Development Tools" \
 	--release="binutils-$(VERSION)" --section=1
 
 man_MANS = as.1
 info_TEXINFOS = as.texinfo 
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty"
 CPU_DOCS = \
 	c-alpha.texi \
 	c-arc.texi \
@@ -308,9 +305,11 @@
 	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	am__cwd=`pwd` && cd $(srcdir) && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
-	for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-	  if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-	done; \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
 	cd "$$am__cwd"; \
 	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
 	 -o $@ $<; \
@@ -352,6 +351,7 @@
 as.pdf: as.texinfo 
 as.html: as.texinfo 
 .dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	$(DVIPS) -o $@ $<
 
 uninstall-info-am:
@@ -585,7 +585,6 @@
 	rm -f asconfig.texi
 	cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
 	chmod u+w ./asconfig.texi
-	echo "@set top_srcdir $(top_srcdir)" >> ./asconfig.texi
 
 gasver.texi: $(srcdir)/../../bfd/configure
 	rm -f $@

Added: branches/binutils/package/gas/doc/as.1
===================================================================
--- branches/binutils/package/gas/doc/as.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/as.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1109 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "AS 1"
+.TH AS 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+AS \- the portable GNU assembler.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+as [\fB\-a\fR[\fBcdhlns\fR][=\fIfile\fR]] [\fB\-\-alternate\fR] [\fB\-D\fR]
+ [\fB\-\-defsym\fR \fIsym\fR=\fIval\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-\-gstabs\fR]
+ [\fB\-\-gstabs+\fR] [\fB\-\-gdwarf\-2\fR] [\fB\-\-help\fR] [\fB\-I\fR \fIdir\fR] [\fB\-J\fR]
+ [\fB\-K\fR] [\fB\-L\fR] [\fB\-\-listing\-lhs\-width\fR=\fI\s-1NUM\s0\fR]
+ [\fB\-\-listing\-lhs\-width2\fR=\fI\s-1NUM\s0\fR] [\fB\-\-listing\-rhs\-width\fR=\fI\s-1NUM\s0\fR]
+ [\fB\-\-listing\-cont\-lines\fR=\fI\s-1NUM\s0\fR] [\fB\-\-keep\-locals\fR] [\fB\-o\fR
+ \fIobjfile\fR] [\fB\-R\fR] [\fB\-\-reduce\-memory\-overheads\fR] [\fB\-\-statistics\fR]
+ [\fB\-v\fR] [\fB\-version\fR] [\fB\-\-version\fR] [\fB\-W\fR] [\fB\-\-warn\fR]
+ [\fB\-\-fatal\-warnings\fR] [\fB\-w\fR] [\fB\-x\fR] [\fB\-Z\fR] [\fB@\fR\fI\s-1FILE\s0\fR]
+ [\fB\-\-target\-help\fR] [\fItarget-options\fR]
+ [\fB\-\-\fR|\fIfiles\fR ...]
+.PP
+\&\fITarget Alpha options:\fR
+   [\fB\-m\fR\fIcpu\fR]
+   [\fB\-mdebug\fR | \fB\-no\-mdebug\fR]
+   [\fB\-relax\fR] [\fB\-g\fR] [\fB\-G\fR\fIsize\fR]
+   [\fB\-F\fR] [\fB\-32addr\fR]
+.PP
+\&\fITarget \s-1ARC\s0 options:\fR
+   [\fB\-marc[5|6|7|8]\fR]
+   [\fB\-EB\fR|\fB\-EL\fR]
+.PP
+\&\fITarget \s-1ARM\s0 options:\fR
+   [\fB\-mcpu\fR=\fIprocessor\fR[+\fIextension\fR...]]
+   [\fB\-march\fR=\fIarchitecture\fR[+\fIextension\fR...]]
+   [\fB\-mfpu\fR=\fIfloating-point-format\fR]
+   [\fB\-mfloat\-abi\fR=\fIabi\fR]
+   [\fB\-meabi\fR=\fIver\fR]
+   [\fB\-mthumb\fR]
+   [\fB\-EB\fR|\fB\-EL\fR]
+   [\fB\-mapcs\-32\fR|\fB\-mapcs\-26\fR|\fB\-mapcs\-float\fR|
+    \fB\-mapcs\-reentrant\fR]
+   [\fB\-mthumb\-interwork\fR] [\fB\-k\fR]
+.PP
+\&\fITarget \s-1CRIS\s0 options:\fR
+   [\fB\-\-underscore\fR | \fB\-\-no\-underscore\fR]
+   [\fB\-\-pic\fR] [\fB\-N\fR]
+   [\fB\-\-emulation=criself\fR | \fB\-\-emulation=crisaout\fR]
+   [\fB\-\-march=v0_v10\fR | \fB\-\-march=v10\fR | \fB\-\-march=v32\fR | \fB\-\-march=common_v10_v32\fR]
+.PP
+\&\fITarget D10V options:\fR
+   [\fB\-O\fR]
+.PP
+\&\fITarget D30V options:\fR
+   [\fB\-O\fR|\fB\-n\fR|\fB\-N\fR]
+.PP
+\&\fITarget i386 options:\fR
+   [\fB\-\-32\fR|\fB\-\-64\fR] [\fB\-n\fR]
+.PP
+\&\fITarget i960 options:\fR
+   [\fB\-ACA\fR|\fB\-ACA_A\fR|\fB\-ACB\fR|\fB\-ACC\fR|\fB\-AKA\fR|\fB\-AKB\fR|
+    \fB\-AKC\fR|\fB\-AMC\fR]
+   [\fB\-b\fR] [\fB\-no\-relax\fR]
+.PP
+\&\fITarget \s-1IA\-64\s0 options:\fR
+   [\fB\-mconstant\-gp\fR|\fB\-mauto\-pic\fR]
+   [\fB\-milp32\fR|\fB\-milp64\fR|\fB\-mlp64\fR|\fB\-mp64\fR]
+   [\fB\-mle\fR|\fBmbe\fR]
+   [\fB\-mtune=itanium1\fR|\fB\-mtune=itanium2\fR]
+   [\fB\-munwind\-check=warning\fR|\fB\-munwind\-check=error\fR]
+   [\fB\-mhint.b=ok\fR|\fB\-mhint.b=warning\fR|\fB\-mhint.b=error\fR]
+   [\fB\-x\fR|\fB\-xexplicit\fR] [\fB\-xauto\fR] [\fB\-xdebug\fR]
+.PP
+\&\fITarget \s-1IP2K\s0 options:\fR
+   [\fB\-mip2022\fR|\fB\-mip2022ext\fR]
+.PP
+\&\fITarget M32C options:\fR
+   [\fB\-m32c\fR|\fB\-m16c\fR]
+.PP
+\&\fITarget M32R options:\fR
+   [\fB\-\-m32rx\fR|\fB\-\-[no\-]warn\-explicit\-parallel\-conflicts\fR|
+   \fB\-\-W[n]p\fR]
+.PP
+\&\fITarget M680X0 options:\fR
+   [\fB\-l\fR] [\fB\-m68000\fR|\fB\-m68010\fR|\fB\-m68020\fR|...]
+.PP
+\&\fITarget M68HC11 options:\fR
+   [\fB\-m68hc11\fR|\fB\-m68hc12\fR|\fB\-m68hcs12\fR]
+   [\fB\-mshort\fR|\fB\-mlong\fR]
+   [\fB\-mshort\-double\fR|\fB\-mlong\-double\fR]
+   [\fB\-\-force\-long\-branchs\fR] [\fB\-\-short\-branchs\fR]
+   [\fB\-\-strict\-direct\-mode\fR] [\fB\-\-print\-insn\-syntax\fR]
+   [\fB\-\-print\-opcodes\fR] [\fB\-\-generate\-example\fR]
+.PP
+\&\fITarget \s-1MCORE\s0 options:\fR
+   [\fB\-jsri2bsr\fR] [\fB\-sifilter\fR] [\fB\-relax\fR]
+   [\fB\-mcpu=[210|340]\fR]
+.PP
+\&\fITarget \s-1MIPS\s0 options:\fR
+   [\fB\-nocpp\fR] [\fB\-EL\fR] [\fB\-EB\fR] [\fB\-O\fR[\fIoptimization level\fR]]
+   [\fB\-g\fR[\fIdebug level\fR]] [\fB\-G\fR \fInum\fR] [\fB\-KPIC\fR] [\fB\-call_shared\fR]
+   [\fB\-non_shared\fR] [\fB\-xgot\fR]
+   [\fB\-mabi\fR=\fI\s-1ABI\s0\fR] [\fB\-32\fR] [\fB\-n32\fR] [\fB\-64\fR] [\fB\-mfp32\fR] [\fB\-mgp32\fR]
+   [\fB\-march\fR=\fI\s-1CPU\s0\fR] [\fB\-mtune\fR=\fI\s-1CPU\s0\fR] [\fB\-mips1\fR] [\fB\-mips2\fR]
+   [\fB\-mips3\fR] [\fB\-mips4\fR] [\fB\-mips5\fR] [\fB\-mips32\fR] [\fB\-mips32r2\fR]
+   [\fB\-mips64\fR] [\fB\-mips64r2\fR]
+   [\fB\-construct\-floats\fR] [\fB\-no\-construct\-floats\fR]
+   [\fB\-trap\fR] [\fB\-no\-break\fR] [\fB\-break\fR] [\fB\-no\-trap\fR]
+   [\fB\-mfix7000\fR] [\fB\-mno\-fix7000\fR]
+   [\fB\-mips16\fR] [\fB\-no\-mips16\fR]
+   [\fB\-mips3d\fR] [\fB\-no\-mips3d\fR]
+   [\fB\-mdmx\fR] [\fB\-no\-mdmx\fR]
+   [\fB\-mdsp\fR] [\fB\-mno\-dsp\fR]
+   [\fB\-mmt\fR] [\fB\-mno\-mt\fR]
+   [\fB\-mdebug\fR] [\fB\-no\-mdebug\fR]
+   [\fB\-mpdr\fR] [\fB\-mno\-pdr\fR]
+.PP
+\&\fITarget \s-1MMIX\s0 options:\fR
+   [\fB\-\-fixed\-special\-register\-names\fR] [\fB\-\-globalize\-symbols\fR]
+   [\fB\-\-gnu\-syntax\fR] [\fB\-\-relax\fR] [\fB\-\-no\-predefined\-symbols\fR]
+   [\fB\-\-no\-expand\fR] [\fB\-\-no\-merge\-gregs\fR] [\fB\-x\fR]
+   [\fB\-\-linker\-allocated\-gregs\fR]
+.PP
+\&\fITarget \s-1PDP11\s0 options:\fR
+   [\fB\-mpic\fR|\fB\-mno\-pic\fR] [\fB\-mall\fR] [\fB\-mno\-extensions\fR]
+   [\fB\-m\fR\fIextension\fR|\fB\-mno\-\fR\fIextension\fR]
+   [\fB\-m\fR\fIcpu\fR] [\fB\-m\fR\fImachine\fR]  
+.PP
+\&\fITarget picoJava options:\fR
+   [\fB\-mb\fR|\fB\-me\fR]
+.PP
+\&\fITarget PowerPC options:\fR
+   [\fB\-mpwrx\fR|\fB\-mpwr2\fR|\fB\-mpwr\fR|\fB\-m601\fR|\fB\-mppc\fR|\fB\-mppc32\fR|\fB\-m603\fR|\fB\-m604\fR|
+    \fB\-m403\fR|\fB\-m405\fR|\fB\-mppc64\fR|\fB\-m620\fR|\fB\-mppc64bridge\fR|\fB\-mbooke\fR|
+    \fB\-mbooke32\fR|\fB\-mbooke64\fR]
+   [\fB\-mcom\fR|\fB\-many\fR|\fB\-maltivec\fR] [\fB\-memb\fR]
+   [\fB\-mregnames\fR|\fB\-mno\-regnames\fR]
+   [\fB\-mrelocatable\fR|\fB\-mrelocatable\-lib\fR]
+   [\fB\-mlittle\fR|\fB\-mlittle\-endian\fR|\fB\-mbig\fR|\fB\-mbig\-endian\fR]
+   [\fB\-msolaris\fR|\fB\-mno\-solaris\fR]
+.PP
+\&\fITarget \s-1SPARC\s0 options:\fR
+   [\fB\-Av6\fR|\fB\-Av7\fR|\fB\-Av8\fR|\fB\-Asparclet\fR|\fB\-Asparclite\fR
+    \fB\-Av8plus\fR|\fB\-Av8plusa\fR|\fB\-Av9\fR|\fB\-Av9a\fR]
+   [\fB\-xarch=v8plus\fR|\fB\-xarch=v8plusa\fR] [\fB\-bump\fR]
+   [\fB\-32\fR|\fB\-64\fR]
+.PP
+\&\fITarget \s-1TIC54X\s0 options:\fR
+ [\fB\-mcpu=54[123589]\fR|\fB\-mcpu=54[56]lp\fR] [\fB\-mfar\-mode\fR|\fB\-mf\fR] 
+ [\fB\-merrors\-to\-file\fR \fI<filename>\fR|\fB\-me\fR \fI<filename>\fR]
+.PP
+\&\fITarget Z80 options:\fR
+  [\fB\-z80\fR] [\fB\-r800\fR]
+  [ \fB\-ignore\-undocumented\-instructions\fR] [\fB\-Wnud\fR]
+  [ \fB\-ignore\-unportable\-instructions\fR] [\fB\-Wnup\fR]
+  [ \fB\-warn\-undocumented\-instructions\fR] [\fB\-Wud\fR]
+  [ \fB\-warn\-unportable\-instructions\fR] [\fB\-Wup\fR]
+  [ \fB\-forbid\-undocumented\-instructions\fR] [\fB\-Fud\fR]
+  [ \fB\-forbid\-unportable\-instructions\fR] [\fB\-Fup\fR]
+.PP
+\&\fITarget Xtensa options:\fR
+ [\fB\-\-[no\-]text\-section\-literals\fR] [\fB\-\-[no\-]absolute\-literals\fR]
+ [\fB\-\-[no\-]target\-align\fR] [\fB\-\-[no\-]longcalls\fR]
+ [\fB\-\-[no\-]transform\fR]
+ [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\s-1GNU\s0 \fBas\fR is really a family of assemblers.
+If you use (or have used) the \s-1GNU\s0 assembler on one architecture, you
+should find a fairly similar environment when you use it on another
+architecture.  Each version has much in common with the others,
+including object file formats, most assembler directives (often called
+\&\fIpseudo-ops\fR) and assembler syntax.
+.PP
+\&\fBas\fR is primarily intended to assemble the output of the
+\&\s-1GNU\s0 C compiler \f(CW\*(C`gcc\*(C'\fR for use by the linker
+\&\f(CW\*(C`ld\*(C'\fR.  Nevertheless, we've tried to make \fBas\fR
+assemble correctly everything that other assemblers for the same
+machine would assemble.
+Any exceptions are documented explicitly.
+This doesn't mean \fBas\fR always uses the same syntax as another
+assembler for the same architecture; for example, we know of several
+incompatible versions of 680x0 assembly language syntax.
+.PP
+Each time you run \fBas\fR it assembles exactly one source
+program.  The source program is made up of one or more files.
+(The standard input is also a file.)
+.PP
+You give \fBas\fR a command line that has zero or more input file
+names.  The input files are read (from left file name to right).  A
+command line argument (in any position) that has no special meaning
+is taken to be an input file name.
+.PP
+If you give \fBas\fR no file names it attempts to read one input file
+from the \fBas\fR standard input, which is normally your terminal.  You
+may have to type \fBctl-D\fR to tell \fBas\fR there is no more program
+to assemble.
+.PP
+Use \fB\-\-\fR if you need to explicitly name the standard input file
+in your command line.
+.PP
+If the source is empty, \fBas\fR produces a small, empty object
+file.
+.PP
+\&\fBas\fR may write warnings and error messages to the standard error
+file (usually your terminal).  This should not happen when  a compiler
+runs \fBas\fR automatically.  Warnings report an assumption made so
+that \fBas\fR could keep assembling a flawed program; errors report a
+grave problem that stops the assembly.
+.PP
+If you are invoking \fBas\fR via the \s-1GNU\s0 C compiler,
+you can use the \fB\-Wa\fR option to pass arguments through to the assembler.
+The assembler arguments must be separated from each other (and the \fB\-Wa\fR)
+by commas.  For example:
+.PP
+.Vb 1
+\&        gcc \-c \-g \-O \-Wa,\-alh,\-L file.c
+.Ve
+.PP
+This passes two options to the assembler: \fB\-alh\fR (emit a listing to
+standard output with high-level and assembly source) and \fB\-L\fR (retain
+local symbols in the symbol table).
+.PP
+Usually you do not need to use this \fB\-Wa\fR mechanism, since many compiler
+command-line options are automatically passed to the assembler by the compiler.
+(You can call the \s-1GNU\s0 compiler driver with the \fB\-v\fR option to see
+precisely what options it passes to each compilation pass, including the
+assembler.)
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.IP "\fB\-a[cdhlmns]\fR" 4
+.IX Item "-a[cdhlmns]"
+Turn on listings, in any of a variety of ways:
+.RS 4
+.IP "\fB\-ac\fR" 4
+.IX Item "-ac"
+omit false conditionals
+.IP "\fB\-ad\fR" 4
+.IX Item "-ad"
+omit debugging directives
+.IP "\fB\-ah\fR" 4
+.IX Item "-ah"
+include high-level source
+.IP "\fB\-al\fR" 4
+.IX Item "-al"
+include assembly
+.IP "\fB\-am\fR" 4
+.IX Item "-am"
+include macro expansions
+.IP "\fB\-an\fR" 4
+.IX Item "-an"
+omit forms processing
+.IP "\fB\-as\fR" 4
+.IX Item "-as"
+include symbols
+.IP "\fB=file\fR" 4
+.IX Item "=file"
+set the name of the listing file
+.RE
+.RS 4
+.Sp
+You may combine these options; for example, use \fB\-aln\fR for assembly
+listing without forms processing.  The \fB=file\fR option, if used, must be
+the last one.  By itself, \fB\-a\fR defaults to \fB\-ahls\fR.
+.RE
+.IP "\fB\-\-alternate\fR" 4
+.IX Item "--alternate"
+Begin in alternate macro mode, see \fBAltmacro,,\f(CB\*(C`.altmacro\*(C'\fB\fR.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+Ignored.  This option is accepted for script compatibility with calls to
+other assemblers.
+.IP "\fB\-\-defsym\fR \fIsym\fR\fB=\fR\fIvalue\fR" 4
+.IX Item "--defsym sym=value"
+Define the symbol \fIsym\fR to be \fIvalue\fR before assembling the input file.
+\&\fIvalue\fR must be an integer constant.  As in C, a leading \fB0x\fR
+indicates a hexadecimal value, and a leading \fB0\fR indicates an octal value.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+\&\*(L"fast\*(R"\-\-\-skip whitespace and comment preprocessing (assume source is
+compiler output).
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+.PD 0
+.IP "\fB\-\-gen\-debug\fR" 4
+.IX Item "--gen-debug"
+.PD
+Generate debugging information for each assembler source line using whichever
+debug format is preferred by the target.  This currently means either \s-1STABS\s0,
+\&\s-1ECOFF\s0 or \s-1DWARF2\s0.
+.IP "\fB\-\-gstabs\fR" 4
+.IX Item "--gstabs"
+Generate stabs debugging information for each assembler line.  This
+may help debugging assembler code, if the debugger can handle it.
+.IP "\fB\-\-gstabs+\fR" 4
+.IX Item "--gstabs+"
+Generate stabs debugging information for each assembler line, with \s-1GNU\s0
+extensions that probably only gdb can handle, and that could make other
+debuggers crash or refuse to read your program.  This
+may help debugging assembler code.  Currently the only \s-1GNU\s0 extension is
+the location of the current working directory at assembling time.
+.IP "\fB\-\-gdwarf\-2\fR" 4
+.IX Item "--gdwarf-2"
+Generate \s-1DWARF2\s0 debugging information for each assembler line.  This
+may help debugging assembler code, if the debugger can handle it.  Note\-\-\-this
+option is only supported by some targets, not all of them.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print a summary of the command line options and exit.
+.IP "\fB\-\-target\-help\fR" 4
+.IX Item "--target-help"
+Print a summary of all target specific options and exit.
+.IP "\fB\-I\fR \fIdir\fR" 4
+.IX Item "-I dir"
+Add directory \fIdir\fR to the search list for \f(CW\*(C`.include\*(C'\fR directives.
+.IP "\fB\-J\fR" 4
+.IX Item "-J"
+Don't warn about signed overflow.
+.IP "\fB\-K\fR" 4
+.IX Item "-K"
+Issue warnings when difference tables altered for long displacements.
+.IP "\fB\-L\fR" 4
+.IX Item "-L"
+.PD 0
+.IP "\fB\-\-keep\-locals\fR" 4
+.IX Item "--keep-locals"
+.PD
+Keep (in the symbol table) local symbols.  On traditional a.out systems
+these start with \fBL\fR, but different systems have different local
+label prefixes.
+.IP "\fB\-\-listing\-lhs\-width=\fR\fInumber\fR" 4
+.IX Item "--listing-lhs-width=number"
+Set the maximum width, in words, of the output data column for an assembler
+listing to \fInumber\fR.
+.IP "\fB\-\-listing\-lhs\-width2=\fR\fInumber\fR" 4
+.IX Item "--listing-lhs-width2=number"
+Set the maximum width, in words, of the output data column for continuation
+lines in an assembler listing to \fInumber\fR.
+.IP "\fB\-\-listing\-rhs\-width=\fR\fInumber\fR" 4
+.IX Item "--listing-rhs-width=number"
+Set the maximum width of an input source line, as displayed in a listing, to
+\&\fInumber\fR bytes.
+.IP "\fB\-\-listing\-cont\-lines=\fR\fInumber\fR" 4
+.IX Item "--listing-cont-lines=number"
+Set the maximum number of lines printed in a listing for a single line of input
+to \fInumber\fR + 1.
+.IP "\fB\-o\fR \fIobjfile\fR" 4
+.IX Item "-o objfile"
+Name the object-file output from \fBas\fR \fIobjfile\fR.
+.IP "\fB\-R\fR" 4
+.IX Item "-R"
+Fold the data section into the text section.
+.Sp
+Set the default size of \s-1GAS\s0's hash tables to a prime number close to
+\&\fInumber\fR.  Increasing this value can reduce the length of time it takes the
+assembler to perform its tasks, at the expense of increasing the assembler's
+memory requirements.  Similarly reducing this value can reduce the memory
+requirements at the expense of speed.
+.IP "\fB\-\-reduce\-memory\-overheads\fR" 4
+.IX Item "--reduce-memory-overheads"
+This option reduces \s-1GAS\s0's memory requirements, at the expense of making the
+assembly processes slower.  Currently this switch is a synonym for
+\&\fB\-\-hash\-size=4051\fR, but in the future it may have other effects as well.
+.IP "\fB\-\-statistics\fR" 4
+.IX Item "--statistics"
+Print the maximum space (in bytes) and total time (in seconds) used by
+assembly.
+.IP "\fB\-\-strip\-local\-absolute\fR" 4
+.IX Item "--strip-local-absolute"
+Remove local absolute symbols from the outgoing symbol table.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-version\fR" 4
+.IX Item "-version"
+.PD
+Print the \fBas\fR version.
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+Print the \fBas\fR version and exit.
+.IP "\fB\-W\fR" 4
+.IX Item "-W"
+.PD 0
+.IP "\fB\-\-no\-warn\fR" 4
+.IX Item "--no-warn"
+.PD
+Suppress warning messages.
+.IP "\fB\-\-fatal\-warnings\fR" 4
+.IX Item "--fatal-warnings"
+Treat warnings as errors.
+.IP "\fB\-\-warn\fR" 4
+.IX Item "--warn"
+Don't suppress warning messages or treat them as errors.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+Ignored.
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+Ignored.
+.IP "\fB\-Z\fR" 4
+.IX Item "-Z"
+Generate an object file even after errors.
+.IP "\fB\-\- |\fR \fIfiles\fR \fB...\fR" 4
+.IX Item "-- | files ..."
+Standard input, or source files to assemble.
+.PP
+The following options are available when as is configured for
+an \s-1ARC\s0 processor.
+.IP "\fB\-marc[5|6|7|8]\fR" 4
+.IX Item "-marc[5|6|7|8]"
+This option selects the core processor variant.
+.IP "\fB\-EB | \-EL\fR" 4
+.IX Item "-EB | -EL"
+Select either big-endian (\-EB) or little-endian (\-EL) output.
+.PP
+The following options are available when as is configured for the \s-1ARM\s0
+processor family.
+.IP "\fB\-mcpu=\fR\fIprocessor\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4
+.IX Item "-mcpu=processor[+extension...]"
+Specify which \s-1ARM\s0 processor variant is the target.
+.IP "\fB\-march=\fR\fIarchitecture\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4
+.IX Item "-march=architecture[+extension...]"
+Specify which \s-1ARM\s0 architecture variant is used by the target.
+.IP "\fB\-mfpu=\fR\fIfloating-point-format\fR" 4
+.IX Item "-mfpu=floating-point-format"
+Select which Floating Point architecture is the target.
+.IP "\fB\-mfloat\-abi=\fR\fIabi\fR" 4
+.IX Item "-mfloat-abi=abi"
+Select which floating point \s-1ABI\s0 is in use.
+.IP "\fB\-mthumb\fR" 4
+.IX Item "-mthumb"
+Enable Thumb only instruction decoding.
+.IP "\fB\-mapcs\-32 | \-mapcs\-26 | \-mapcs\-float | \-mapcs\-reentrant\fR" 4
+.IX Item "-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant"
+Select which procedure calling convention is in use.
+.IP "\fB\-EB | \-EL\fR" 4
+.IX Item "-EB | -EL"
+Select either big-endian (\-EB) or little-endian (\-EL) output.
+.IP "\fB\-mthumb\-interwork\fR" 4
+.IX Item "-mthumb-interwork"
+Specify that the code has been generated with interworking between Thumb and
+\&\s-1ARM\s0 code in mind.
+.IP "\fB\-k\fR" 4
+.IX Item "-k"
+Specify that \s-1PIC\s0 code has been generated.
+.PP
+See the info pages for documentation of the CRIS-specific options.
+.PP
+The following options are available when as is configured for
+a D10V processor.
+.IP "\fB\-O\fR" 4
+.IX Item "-O"
+Optimize output by parallelizing instructions.
+.PP
+The following options are available when as is configured for a D30V
+processor.
+.IP "\fB\-O\fR" 4
+.IX Item "-O"
+Optimize output by parallelizing instructions.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+Warn when nops are generated.
+.IP "\fB\-N\fR" 4
+.IX Item "-N"
+Warn when a nop after a 32\-bit multiply instruction is generated.
+.PP
+The following options are available when as is configured for the
+Intel 80960 processor.
+.IP "\fB\-ACA | \-ACA_A | \-ACB | \-ACC | \-AKA | \-AKB | \-AKC | \-AMC\fR" 4
+.IX Item "-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC"
+Specify which variant of the 960 architecture is the target.
+.IP "\fB\-b\fR" 4
+.IX Item "-b"
+Add code to collect statistics about branches taken.
+.IP "\fB\-no\-relax\fR" 4
+.IX Item "-no-relax"
+Do not alter compare-and-branch instructions for long displacements;
+error if necessary.
+.PP
+The following options are available when as is configured for the
+Ubicom \s-1IP2K\s0 series.
+.IP "\fB\-mip2022ext\fR" 4
+.IX Item "-mip2022ext"
+Specifies that the extended \s-1IP2022\s0 instructions are allowed.
+.IP "\fB\-mip2022\fR" 4
+.IX Item "-mip2022"
+Restores the default behaviour, which restricts the permitted instructions to
+just the basic \s-1IP2022\s0 ones.
+.PP
+The following options are available when as is configured for the
+Renesas M32C and M16C processors.
+.IP "\fB\-m32c\fR" 4
+.IX Item "-m32c"
+Assemble M32C instructions.
+.IP "\fB\-m16c\fR" 4
+.IX Item "-m16c"
+Assemble M16C instructions (the default).
+.PP
+The following options are available when as is configured for the
+Renesas M32R (formerly Mitsubishi M32R) series.
+.IP "\fB\-\-m32rx\fR" 4
+.IX Item "--m32rx"
+Specify which processor in the M32R family is the target.  The default
+is normally the M32R, but this option changes it to the M32RX.
+.IP "\fB\-\-warn\-explicit\-parallel\-conflicts or \-\-Wp\fR" 4
+.IX Item "--warn-explicit-parallel-conflicts or --Wp"
+Produce warning messages when questionable parallel constructs are
+encountered. 
+.IP "\fB\-\-no\-warn\-explicit\-parallel\-conflicts or \-\-Wnp\fR" 4
+.IX Item "--no-warn-explicit-parallel-conflicts or --Wnp"
+Do not produce warning messages when questionable parallel constructs are 
+encountered. 
+.PP
+The following options are available when as is configured for the
+Motorola 68000 series.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+Shorten references to undefined symbols, to one word instead of two.
+.IP "\fB\-m68000 | \-m68008 | \-m68010 | \-m68020 | \-m68030\fR" 4
+.IX Item "-m68000 | -m68008 | -m68010 | -m68020 | -m68030"
+.PD 0
+.IP "\fB| \-m68040 | \-m68060 | \-m68302 | \-m68331 | \-m68332\fR" 4
+.IX Item "| -m68040 | -m68060 | -m68302 | -m68331 | -m68332"
+.IP "\fB| \-m68333 | \-m68340 | \-mcpu32 | \-m5200\fR" 4
+.IX Item "| -m68333 | -m68340 | -mcpu32 | -m5200"
+.PD
+Specify what processor in the 68000 family is the target.  The default
+is normally the 68020, but this can be changed at configuration time.
+.IP "\fB\-m68881 | \-m68882 | \-mno\-68881 | \-mno\-68882\fR" 4
+.IX Item "-m68881 | -m68882 | -mno-68881 | -mno-68882"
+The target machine does (or does not) have a floating-point coprocessor.
+The default is to assume a coprocessor for 68020, 68030, and cpu32.  Although
+the basic 68000 is not compatible with the 68881, a combination of the
+two can be specified, since it's possible to do emulation of the
+coprocessor instructions with the main processor.
+.IP "\fB\-m68851 | \-mno\-68851\fR" 4
+.IX Item "-m68851 | -mno-68851"
+The target machine does (or does not) have a memory-management
+unit coprocessor.  The default is to assume an \s-1MMU\s0 for 68020 and up.
+.PP
+For details about the \s-1PDP\-11\s0 machine dependent features options,
+see \fBPDP\-11\-Options\fR.
+.IP "\fB\-mpic | \-mno\-pic\fR" 4
+.IX Item "-mpic | -mno-pic"
+Generate position-independent (or position\-dependent) code.  The
+default is \fB\-mpic\fR.
+.IP "\fB\-mall\fR" 4
+.IX Item "-mall"
+.PD 0
+.IP "\fB\-mall\-extensions\fR" 4
+.IX Item "-mall-extensions"
+.PD
+Enable all instruction set extensions.  This is the default.
+.IP "\fB\-mno\-extensions\fR" 4
+.IX Item "-mno-extensions"
+Disable all instruction set extensions.
+.IP "\fB\-m\fR\fIextension\fR \fB| \-mno\-\fR\fIextension\fR" 4
+.IX Item "-mextension | -mno-extension"
+Enable (or disable) a particular instruction set extension.
+.IP "\fB\-m\fR\fIcpu\fR" 4
+.IX Item "-mcpu"
+Enable the instruction set extensions supported by a particular \s-1CPU\s0, and
+disable all other extensions.
+.IP "\fB\-m\fR\fImachine\fR" 4
+.IX Item "-mmachine"
+Enable the instruction set extensions supported by a particular machine
+model, and disable all other extensions.
+.PP
+The following options are available when as is configured for
+a picoJava processor.
+.IP "\fB\-mb\fR" 4
+.IX Item "-mb"
+Generate \*(L"big endian\*(R" format output.
+.IP "\fB\-ml\fR" 4
+.IX Item "-ml"
+Generate \*(L"little endian\*(R" format output.
+.PP
+The following options are available when as is configured for the
+Motorola 68HC11 or 68HC12 series.
+.IP "\fB\-m68hc11 | \-m68hc12 | \-m68hcs12\fR" 4
+.IX Item "-m68hc11 | -m68hc12 | -m68hcs12"
+Specify what processor is the target.  The default is
+defined by the configuration option when building the assembler.
+.IP "\fB\-mshort\fR" 4
+.IX Item "-mshort"
+Specify to use the 16\-bit integer \s-1ABI\s0.
+.IP "\fB\-mlong\fR" 4
+.IX Item "-mlong"
+Specify to use the 32\-bit integer \s-1ABI\s0.  
+.IP "\fB\-mshort\-double\fR" 4
+.IX Item "-mshort-double"
+Specify to use the 32\-bit double \s-1ABI\s0.  
+.IP "\fB\-mlong\-double\fR" 4
+.IX Item "-mlong-double"
+Specify to use the 64\-bit double \s-1ABI\s0.  
+.IP "\fB\-\-force\-long\-branchs\fR" 4
+.IX Item "--force-long-branchs"
+Relative branches are turned into absolute ones. This concerns
+conditional branches, unconditional branches and branches to a
+sub routine.
+.IP "\fB\-S | \-\-short\-branchs\fR" 4
+.IX Item "-S | --short-branchs"
+Do not turn relative branchs into absolute ones
+when the offset is out of range.
+.IP "\fB\-\-strict\-direct\-mode\fR" 4
+.IX Item "--strict-direct-mode"
+Do not turn the direct addressing mode into extended addressing mode
+when the instruction does not support direct addressing mode.
+.IP "\fB\-\-print\-insn\-syntax\fR" 4
+.IX Item "--print-insn-syntax"
+Print the syntax of instruction in case of error.
+.IP "\fB\-\-print\-opcodes\fR" 4
+.IX Item "--print-opcodes"
+print the list of instructions with syntax and then exit.
+.IP "\fB\-\-generate\-example\fR" 4
+.IX Item "--generate-example"
+print an example of instruction for each possible instruction and then exit.
+This option is only useful for testing \fBas\fR.
+.PP
+The following options are available when \fBas\fR is configured
+for the \s-1SPARC\s0 architecture:
+.IP "\fB\-Av6 | \-Av7 | \-Av8 | \-Asparclet | \-Asparclite\fR" 4
+.IX Item "-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite"
+.PD 0
+.IP "\fB\-Av8plus | \-Av8plusa | \-Av9 | \-Av9a\fR" 4
+.IX Item "-Av8plus | -Av8plusa | -Av9 | -Av9a"
+.PD
+Explicitly select a variant of the \s-1SPARC\s0 architecture.
+.Sp
+\&\fB\-Av8plus\fR and \fB\-Av8plusa\fR select a 32 bit environment.
+\&\fB\-Av9\fR and \fB\-Av9a\fR select a 64 bit environment.
+.Sp
+\&\fB\-Av8plusa\fR and \fB\-Av9a\fR enable the \s-1SPARC\s0 V9 instruction set with
+UltraSPARC extensions.
+.IP "\fB\-xarch=v8plus | \-xarch=v8plusa\fR" 4
+.IX Item "-xarch=v8plus | -xarch=v8plusa"
+For compatibility with the Solaris v9 assembler.  These options are
+equivalent to \-Av8plus and \-Av8plusa, respectively.
+.IP "\fB\-bump\fR" 4
+.IX Item "-bump"
+Warn when the assembler switches to another architecture.
+.PP
+The following options are available when as is configured for the 'c54x
+architecture. 
+.IP "\fB\-mfar\-mode\fR" 4
+.IX Item "-mfar-mode"
+Enable extended addressing mode.  All addresses and relocations will assume
+extended addressing (usually 23 bits).
+.IP "\fB\-mcpu=\fR\fI\s-1CPU_VERSION\s0\fR" 4
+.IX Item "-mcpu=CPU_VERSION"
+Sets the \s-1CPU\s0 version being compiled for.
+.IP "\fB\-merrors\-to\-file\fR \fI\s-1FILENAME\s0\fR" 4
+.IX Item "-merrors-to-file FILENAME"
+Redirect error output to a file, for broken systems which don't support such
+behaviour in the shell.
+.PP
+The following options are available when as is configured for
+a \s-1MIPS\s0 processor.
+.IP "\fB\-G\fR \fInum\fR" 4
+.IX Item "-G num"
+This option sets the largest size of an object that can be referenced
+implicitly with the \f(CW\*(C`gp\*(C'\fR register.  It is only accepted for targets that
+use \s-1ECOFF\s0 format, such as a DECstation running Ultrix.  The default value is 8.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+Generate \*(L"big endian\*(R" format output.
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+Generate \*(L"little endian\*(R" format output.
+.IP "\fB\-mips1\fR" 4
+.IX Item "-mips1"
+.PD 0
+.IP "\fB\-mips2\fR" 4
+.IX Item "-mips2"
+.IP "\fB\-mips3\fR" 4
+.IX Item "-mips3"
+.IP "\fB\-mips4\fR" 4
+.IX Item "-mips4"
+.IP "\fB\-mips5\fR" 4
+.IX Item "-mips5"
+.IP "\fB\-mips32\fR" 4
+.IX Item "-mips32"
+.IP "\fB\-mips32r2\fR" 4
+.IX Item "-mips32r2"
+.IP "\fB\-mips64\fR" 4
+.IX Item "-mips64"
+.IP "\fB\-mips64r2\fR" 4
+.IX Item "-mips64r2"
+.PD
+Generate code for a particular \s-1MIPS\s0 Instruction Set Architecture level.
+\&\fB\-mips1\fR is an alias for \fB\-march=r3000\fR, \fB\-mips2\fR is an
+alias for \fB\-march=r6000\fR, \fB\-mips3\fR is an alias for
+\&\fB\-march=r4000\fR and \fB\-mips4\fR is an alias for \fB\-march=r8000\fR.
+\&\fB\-mips5\fR, \fB\-mips32\fR, \fB\-mips32r2\fR, \fB\-mips64\fR, and
+\&\fB\-mips64r2\fR
+correspond to generic
+\&\fB\s-1MIPS\s0 V\fR, \fB\s-1MIPS32\s0\fR, \fB\s-1MIPS32\s0 Release 2\fR, \fB\s-1MIPS64\s0\fR,
+and \fB\s-1MIPS64\s0 Release 2\fR
+\&\s-1ISA\s0 processors, respectively.
+.IP "\fB\-march=\fR\fI\s-1CPU\s0\fR" 4
+.IX Item "-march=CPU"
+Generate code for a particular \s-1MIPS\s0 cpu.
+.IP "\fB\-mtune=\fR\fIcpu\fR" 4
+.IX Item "-mtune=cpu"
+Schedule and tune for a particular \s-1MIPS\s0 cpu.
+.IP "\fB\-mfix7000\fR" 4
+.IX Item "-mfix7000"
+.PD 0
+.IP "\fB\-mno\-fix7000\fR" 4
+.IX Item "-mno-fix7000"
+.PD
+Cause nops to be inserted if the read of the destination register
+of an mfhi or mflo instruction occurs in the following two instructions.
+.IP "\fB\-mdebug\fR" 4
+.IX Item "-mdebug"
+.PD 0
+.IP "\fB\-no\-mdebug\fR" 4
+.IX Item "-no-mdebug"
+.PD
+Cause stabs-style debugging output to go into an ECOFF-style .mdebug
+section instead of the standard \s-1ELF\s0 .stabs sections.
+.IP "\fB\-mpdr\fR" 4
+.IX Item "-mpdr"
+.PD 0
+.IP "\fB\-mno\-pdr\fR" 4
+.IX Item "-mno-pdr"
+.PD
+Control generation of \f(CW\*(C`.pdr\*(C'\fR sections.
+.IP "\fB\-mgp32\fR" 4
+.IX Item "-mgp32"
+.PD 0
+.IP "\fB\-mfp32\fR" 4
+.IX Item "-mfp32"
+.PD
+The register sizes are normally inferred from the \s-1ISA\s0 and \s-1ABI\s0, but these
+flags force a certain group of registers to be treated as 32 bits wide at
+all times.  \fB\-mgp32\fR controls the size of general-purpose registers
+and \fB\-mfp32\fR controls the size of floating-point registers.
+.IP "\fB\-mips16\fR" 4
+.IX Item "-mips16"
+.PD 0
+.IP "\fB\-no\-mips16\fR" 4
+.IX Item "-no-mips16"
+.PD
+Generate code for the \s-1MIPS\s0 16 processor.  This is equivalent to putting
+\&\f(CW\*(C`.set mips16\*(C'\fR at the start of the assembly file.  \fB\-no\-mips16\fR
+turns off this option.
+.IP "\fB\-mips3d\fR" 4
+.IX Item "-mips3d"
+.PD 0
+.IP "\fB\-no\-mips3d\fR" 4
+.IX Item "-no-mips3d"
+.PD
+Generate code for the \s-1MIPS\-3D\s0 Application Specific Extension.
+This tells the assembler to accept \s-1MIPS\-3D\s0 instructions.
+\&\fB\-no\-mips3d\fR turns off this option.
+.IP "\fB\-mdmx\fR" 4
+.IX Item "-mdmx"
+.PD 0
+.IP "\fB\-no\-mdmx\fR" 4
+.IX Item "-no-mdmx"
+.PD
+Generate code for the \s-1MDMX\s0 Application Specific Extension.
+This tells the assembler to accept \s-1MDMX\s0 instructions.
+\&\fB\-no\-mdmx\fR turns off this option.
+.IP "\fB\-mdsp\fR" 4
+.IX Item "-mdsp"
+.PD 0
+.IP "\fB\-mno\-dsp\fR" 4
+.IX Item "-mno-dsp"
+.PD
+Generate code for the \s-1DSP\s0 Application Specific Extension.
+This tells the assembler to accept \s-1DSP\s0 instructions.
+\&\fB\-mno\-dsp\fR turns off this option.
+.IP "\fB\-mmt\fR" 4
+.IX Item "-mmt"
+.PD 0
+.IP "\fB\-mno\-mt\fR" 4
+.IX Item "-mno-mt"
+.PD
+Generate code for the \s-1MT\s0 Application Specific Extension.
+This tells the assembler to accept \s-1MT\s0 instructions.
+\&\fB\-mno\-mt\fR turns off this option.
+.IP "\fB\-\-construct\-floats\fR" 4
+.IX Item "--construct-floats"
+.PD 0
+.IP "\fB\-\-no\-construct\-floats\fR" 4
+.IX Item "--no-construct-floats"
+.PD
+The \fB\-\-no\-construct\-floats\fR option disables the construction of
+double width floating point constants by loading the two halves of the
+value into the two single width floating point registers that make up
+the double width register.  By default \fB\-\-construct\-floats\fR is
+selected, allowing construction of these floating point constants.
+.IP "\fB\-\-emulation=\fR\fIname\fR" 4
+.IX Item "--emulation=name"
+This option causes \fBas\fR to emulate \fBas\fR configured
+for some other target, in all respects, including output format (choosing
+between \s-1ELF\s0 and \s-1ECOFF\s0 only), handling of pseudo-opcodes which may generate
+debugging information or store symbol table information, and default
+endianness.  The available configuration names are: \fBmipsecoff\fR,
+\&\fBmipself\fR, \fBmipslecoff\fR, \fBmipsbecoff\fR, \fBmipslelf\fR,
+\&\fBmipsbelf\fR.  The first two do not alter the default endianness from that
+of the primary target for which the assembler was configured; the others change
+the default to little\- or big-endian as indicated by the \fBb\fR or \fBl\fR
+in the name.  Using \fB\-EB\fR or \fB\-EL\fR will override the endianness
+selection in any case.
+.Sp
+This option is currently supported only when the primary target
+\&\fBas\fR is configured for is a \s-1MIPS\s0 \s-1ELF\s0 or \s-1ECOFF\s0 target.
+Furthermore, the primary target or others specified with
+\&\fB\-\-enable\-targets=...\fR at configuration time must include support for
+the other format, if both are to be available.  For example, the Irix 5
+configuration includes support for both.
+.Sp
+Eventually, this option will support more configurations, with more
+fine-grained control over the assembler's behavior, and will be supported for
+more processors.
+.IP "\fB\-nocpp\fR" 4
+.IX Item "-nocpp"
+\&\fBas\fR ignores this option.  It is accepted for compatibility with
+the native tools.
+.IP "\fB\-\-trap\fR" 4
+.IX Item "--trap"
+.PD 0
+.IP "\fB\-\-no\-trap\fR" 4
+.IX Item "--no-trap"
+.IP "\fB\-\-break\fR" 4
+.IX Item "--break"
+.IP "\fB\-\-no\-break\fR" 4
+.IX Item "--no-break"
+.PD
+Control how to deal with multiplication overflow and division by zero.
+\&\fB\-\-trap\fR or \fB\-\-no\-break\fR (which are synonyms) take a trap exception
+(and only work for Instruction Set Architecture level 2 and higher);
+\&\fB\-\-break\fR or \fB\-\-no\-trap\fR (also synonyms, and the default) take a
+break exception.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+When this option is used, \fBas\fR will issue a warning every
+time it generates a nop instruction from a macro.
+.PP
+The following options are available when as is configured for
+an MCore processor.
+.IP "\fB\-jsri2bsr\fR" 4
+.IX Item "-jsri2bsr"
+.PD 0
+.IP "\fB\-nojsri2bsr\fR" 4
+.IX Item "-nojsri2bsr"
+.PD
+Enable or disable the \s-1JSRI\s0 to \s-1BSR\s0 transformation.  By default this is enabled.
+The command line option \fB\-nojsri2bsr\fR can be used to disable it.
+.IP "\fB\-sifilter\fR" 4
+.IX Item "-sifilter"
+.PD 0
+.IP "\fB\-nosifilter\fR" 4
+.IX Item "-nosifilter"
+.PD
+Enable or disable the silicon filter behaviour.  By default this is disabled.
+The default can be overridden by the \fB\-sifilter\fR command line option.
+.IP "\fB\-relax\fR" 4
+.IX Item "-relax"
+Alter jump instructions for long displacements.
+.IP "\fB\-mcpu=[210|340]\fR" 4
+.IX Item "-mcpu=[210|340]"
+Select the cpu type on the target hardware.  This controls which instructions
+can be assembled.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+Assemble for a big endian target.
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+Assemble for a little endian target.
+.PP
+See the info pages for documentation of the MMIX-specific options.
+.PP
+The following options are available when as is configured for
+an Xtensa processor.
+.IP "\fB\-\-text\-section\-literals | \-\-no\-text\-section\-literals\fR" 4
+.IX Item "--text-section-literals | --no-text-section-literals"
+With \fB\-\-text\-section\-literals\fR, literal pools are interspersed
+in the text section.  The default is
+\&\fB\-\-no\-text\-section\-literals\fR, which places literals in a
+separate section in the output file.  These options only affect literals
+referenced via PC-relative \f(CW\*(C`L32R\*(C'\fR instructions; literals for
+absolute mode \f(CW\*(C`L32R\*(C'\fR instructions are handled separately.
+.IP "\fB\-\-absolute\-literals | \-\-no\-absolute\-literals\fR" 4
+.IX Item "--absolute-literals | --no-absolute-literals"
+Indicate to the assembler whether \f(CW\*(C`L32R\*(C'\fR instructions use absolute
+or PC-relative addressing.  The default is to assume absolute addressing
+if the Xtensa processor includes the absolute \f(CW\*(C`L32R\*(C'\fR addressing
+option.  Otherwise, only the PC-relative \f(CW\*(C`L32R\*(C'\fR mode can be used.
+.IP "\fB\-\-target\-align | \-\-no\-target\-align\fR" 4
+.IX Item "--target-align | --no-target-align"
+Enable or disable automatic alignment to reduce branch penalties at the
+expense of some code density.  The default is \fB\-\-target\-align\fR.
+.IP "\fB\-\-longcalls | \-\-no\-longcalls\fR" 4
+.IX Item "--longcalls | --no-longcalls"
+Enable or disable transformation of call instructions to allow calls
+across a greater range of addresses.  The default is
+\&\fB\-\-no\-longcalls\fR.
+.IP "\fB\-\-transform | \-\-no\-transform\fR" 4
+.IX Item "--transform | --no-transform"
+Enable or disable all assembler transformations of Xtensa instructions.
+The default is \fB\-\-transform\fR;
+\&\fB\-\-no\-transform\fR should be used only in the rare cases when the
+instructions must be exactly as specified in the assembly source.
+.PP
+The following options are available when as is configured for
+a Z80 family processor.
+.IP "\fB\-z80\fR" 4
+.IX Item "-z80"
+Assemble for Z80 processor.
+.IP "\fB\-r800\fR" 4
+.IX Item "-r800"
+Assemble for R800 processor.
+.IP "\fB\-ignore\-undocumented\-instructions\fR" 4
+.IX Item "-ignore-undocumented-instructions"
+.PD 0
+.IP "\fB\-Wnud\fR" 4
+.IX Item "-Wnud"
+.PD
+Assemble undocumented Z80 instructions that also work on R800 without warning.
+.IP "\fB\-ignore\-unportable\-instructions\fR" 4
+.IX Item "-ignore-unportable-instructions"
+.PD 0
+.IP "\fB\-Wnup\fR" 4
+.IX Item "-Wnup"
+.PD
+Assemble all undocumented Z80 instructions without warning.
+.IP "\fB\-warn\-undocumented\-instructions\fR" 4
+.IX Item "-warn-undocumented-instructions"
+.PD 0
+.IP "\fB\-Wud\fR" 4
+.IX Item "-Wud"
+.PD
+Issue a warning for undocumented Z80 instructions that also work on R800.
+.IP "\fB\-warn\-unportable\-instructions\fR" 4
+.IX Item "-warn-unportable-instructions"
+.PD 0
+.IP "\fB\-Wup\fR" 4
+.IX Item "-Wup"
+.PD
+Issue a warning for undocumented Z80 instructions that do notwork on R800.  
+.IP "\fB\-forbid\-undocumented\-instructions\fR" 4
+.IX Item "-forbid-undocumented-instructions"
+.PD 0
+.IP "\fB\-Fud\fR" 4
+.IX Item "-Fud"
+.PD
+Treat all undocumented instructions as errors.
+.IP "\fB\-forbid\-unportable\-instructions\fR" 4
+.IX Item "-forbid-unportable-instructions"
+.PD 0
+.IP "\fB\-Fup\fR" 4
+.IX Item "-Fup"
+.PD
+Treat undocumented Z80 intructions that do notwork on R800 as errors.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIgcc\fR\|(1), \fIld\fR\|(1), and the Info entries for \fIbinutils\fR and \fIld\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/gas/doc/as.info
===================================================================
--- branches/binutils/package/gas/doc/as.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/as.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18352 @@
+This is ../.././gas/doc/as.info, produced by makeinfo version 4.8 from
+../.././gas/doc/as.texinfo.
+
+START-INFO-DIR-ENTRY
+* As: (as).                     The GNU assembler.
+* Gas: (as).                    The GNU assembler.
+END-INFO-DIR-ENTRY
+
+   This file documents the GNU Assembler "as".
+
+   Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
+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".
+
+
+File: as.info,  Node: Top,  Next: Overview,  Up: (dir)
+
+Using as
+********
+
+This file is a user guide to the GNU assembler `as' version 2.17.
+
+   This document is distributed under the terms of the GNU Free
+Documentation License.  A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+* Menu:
+
+* Overview::                    Overview
+* Invoking::                    Command-Line Options
+* Syntax::                      Syntax
+* Sections::                    Sections and Relocation
+* Symbols::                     Symbols
+* Expressions::                 Expressions
+* Pseudo Ops::                  Assembler Directives
+* Machine Dependencies::        Machine Dependent Features
+* Reporting Bugs::              Reporting Bugs
+* Acknowledgements::            Who Did What
+* GNU Free Documentation License::  GNU Free Documentation License
+* Index::                       Index
+
+
+File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
+
+1 Overview
+**********
+
+Here is a brief summary of how to invoke `as'.  For details, *note
+Command-Line Options: Invoking.
+
+     as [-a[cdhlns][=FILE]] [-alternate] [-D]
+      [-defsym SYM=VAL] [-f] [-g] [-gstabs]
+      [-gstabs+] [-gdwarf-2] [-help] [-I DIR] [-J]
+      [-K] [-L] [-listing-lhs-width=NUM]
+      [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM]
+      [-listing-cont-lines=NUM] [-keep-locals] [-o
+      OBJFILE] [-R] [-reduce-memory-overheads] [-statistics]
+      [-v] [-version] [-version] [-W] [-warn]
+      [-fatal-warnings] [-w] [-x] [-Z] [@FILE]
+      [-target-help] [TARGET-OPTIONS]
+      [-|FILES ...]
+
+     _Target Alpha options:_
+        [-mCPU]
+        [-mdebug | -no-mdebug]
+        [-relax] [-g] [-GSIZE]
+        [-F] [-32addr]
+
+     _Target ARC options:_
+        [-marc[5|6|7|8]]
+        [-EB|-EL]
+
+     _Target ARM options:_
+        [-mcpu=PROCESSOR[+EXTENSION...]]
+        [-march=ARCHITECTURE[+EXTENSION...]]
+        [-mfpu=FLOATING-POINT-FORMAT]
+        [-mfloat-abi=ABI]
+        [-meabi=VER]
+        [-mthumb]
+        [-EB|-EL]
+        [-mapcs-32|-mapcs-26|-mapcs-float|
+         -mapcs-reentrant]
+        [-mthumb-interwork] [-k]
+
+     _Target CRIS options:_
+        [-underscore | -no-underscore]
+        [-pic] [-N]
+        [-emulation=criself | -emulation=crisaout]
+        [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32]
+
+     _Target D10V options:_
+        [-O]
+
+     _Target D30V options:_
+        [-O|-n|-N]
+
+     _Target i386 options:_
+        [-32|-64] [-n]
+
+     _Target i960 options:_
+        [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
+         -AKC|-AMC]
+        [-b] [-no-relax]
+
+     _Target IA-64 options:_
+        [-mconstant-gp|-mauto-pic]
+        [-milp32|-milp64|-mlp64|-mp64]
+        [-mle|mbe]
+        [-mtune=itanium1|-mtune=itanium2]
+        [-munwind-check=warning|-munwind-check=error]
+        [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
+        [-x|-xexplicit] [-xauto] [-xdebug]
+
+     _Target IP2K options:_
+        [-mip2022|-mip2022ext]
+
+     _Target M32C options:_
+        [-m32c|-m16c]
+
+     _Target M32R options:_
+        [-m32rx|-[no-]warn-explicit-parallel-conflicts|
+        -W[n]p]
+
+     _Target M680X0 options:_
+        [-l] [-m68000|-m68010|-m68020|...]
+
+     _Target M68HC11 options:_
+        [-m68hc11|-m68hc12|-m68hcs12]
+        [-mshort|-mlong]
+        [-mshort-double|-mlong-double]
+        [-force-long-branchs] [-short-branchs]
+        [-strict-direct-mode] [-print-insn-syntax]
+        [-print-opcodes] [-generate-example]
+
+     _Target MCORE options:_
+        [-jsri2bsr] [-sifilter] [-relax]
+        [-mcpu=[210|340]]
+
+     _Target MIPS options:_
+        [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
+        [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
+        [-non_shared] [-xgot]
+        [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
+        [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
+        [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
+        [-mips64] [-mips64r2]
+        [-construct-floats] [-no-construct-floats]
+        [-trap] [-no-break] [-break] [-no-trap]
+        [-mfix7000] [-mno-fix7000]
+        [-mips16] [-no-mips16]
+        [-mips3d] [-no-mips3d]
+        [-mdmx] [-no-mdmx]
+        [-mdsp] [-mno-dsp]
+        [-mmt] [-mno-mt]
+        [-mdebug] [-no-mdebug]
+        [-mpdr] [-mno-pdr]
+
+     _Target MMIX options:_
+        [-fixed-special-register-names] [-globalize-symbols]
+        [-gnu-syntax] [-relax] [-no-predefined-symbols]
+        [-no-expand] [-no-merge-gregs] [-x]
+        [-linker-allocated-gregs]
+
+     _Target PDP11 options:_
+        [-mpic|-mno-pic] [-mall] [-mno-extensions]
+        [-mEXTENSION|-mno-EXTENSION]
+        [-mCPU] [-mMACHINE]
+
+     _Target picoJava options:_
+        [-mb|-me]
+
+     _Target PowerPC options:_
+        [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
+         -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
+         -mbooke32|-mbooke64]
+        [-mcom|-many|-maltivec] [-memb]
+        [-mregnames|-mno-regnames]
+        [-mrelocatable|-mrelocatable-lib]
+        [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
+        [-msolaris|-mno-solaris]
+
+     _Target SPARC options:_
+        [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
+         -Av8plus|-Av8plusa|-Av9|-Av9a]
+        [-xarch=v8plus|-xarch=v8plusa] [-bump]
+        [-32|-64]
+
+     _Target TIC54X options:_
+      [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
+      [-merrors-to-file <FILENAME>|-me <FILENAME>]
+
+
+     _Target Z80 options:_
+       [-z80] [-r800]
+       [ -ignore-undocumented-instructions] [-Wnud]
+       [ -ignore-unportable-instructions] [-Wnup]
+       [ -warn-undocumented-instructions] [-Wud]
+       [ -warn-unportable-instructions] [-Wup]
+       [ -forbid-undocumented-instructions] [-Fud]
+       [ -forbid-unportable-instructions] [-Fup]
+
+
+     _Target Xtensa options:_
+      [-[no-]text-section-literals] [-[no-]absolute-literals]
+      [-[no-]target-align] [-[no-]longcalls]
+      [-[no-]transform]
+      [-rename-section OLDNAME=NEWNAME]
+
+`@FILE'
+     Read command-line options from FILE.  The options read are
+     inserted in place of the original @FILE option.  If FILE does not
+     exist, or cannot be read, then the option will be treated
+     literally, and not removed.
+
+     Options in FILE are separated by whitespace.  A whitespace
+     character may be included in an option by surrounding the entire
+     option in either single or double quotes.  Any character
+     (including a backslash) may be included by prefixing the character
+     to be included with a backslash.  The FILE may itself contain
+     additional @FILE options; any such options will be processed
+     recursively.
+
+`-a[cdhlmns]'
+     Turn on listings, in any of a variety of ways:
+
+    `-ac'
+          omit false conditionals
+
+    `-ad'
+          omit debugging directives
+
+    `-ah'
+          include high-level source
+
+    `-al'
+          include assembly
+
+    `-am'
+          include macro expansions
+
+    `-an'
+          omit forms processing
+
+    `-as'
+          include symbols
+
+    `=file'
+          set the name of the listing file
+
+     You may combine these options; for example, use `-aln' for assembly
+     listing without forms processing.  The `=file' option, if used,
+     must be the last one.  By itself, `-a' defaults to `-ahls'.
+
+`--alternate'
+     Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
+
+`-D'
+     Ignored.  This option is accepted for script compatibility with
+     calls to other assemblers.
+
+`--defsym SYM=VALUE'
+     Define the symbol SYM to be VALUE before assembling the input file.
+     VALUE must be an integer constant.  As in C, a leading `0x'
+     indicates a hexadecimal value, and a leading `0' indicates an
+     octal value.
+
+`-f'
+     "fast"--skip whitespace and comment preprocessing (assume source is
+     compiler output).
+
+`-g'
+`--gen-debug'
+     Generate debugging information for each assembler source line
+     using whichever debug format is preferred by the target.  This
+     currently means either STABS, ECOFF or DWARF2.
+
+`--gstabs'
+     Generate stabs debugging information for each assembler line.  This
+     may help debugging assembler code, if the debugger can handle it.
+
+`--gstabs+'
+     Generate stabs debugging information for each assembler line, with
+     GNU extensions that probably only gdb can handle, and that could
+     make other debuggers crash or refuse to read your program.  This
+     may help debugging assembler code.  Currently the only GNU
+     extension is the location of the current working directory at
+     assembling time.
+
+`--gdwarf-2'
+     Generate DWARF2 debugging information for each assembler line.
+     This may help debugging assembler code, if the debugger can handle
+     it.  Note--this option is only supported by some targets, not all
+     of them.
+
+`--help'
+     Print a summary of the command line options and exit.
+
+`--target-help'
+     Print a summary of all target specific options and exit.
+
+`-I DIR'
+     Add directory DIR to the search list for `.include' directives.
+
+`-J'
+     Don't warn about signed overflow.
+
+`-K'
+     Issue warnings when difference tables altered for long
+     displacements.
+
+`-L'
+`--keep-locals'
+     Keep (in the symbol table) local symbols.  On traditional a.out
+     systems these start with `L', but different systems have different
+     local label prefixes.
+
+`--listing-lhs-width=NUMBER'
+     Set the maximum width, in words, of the output data column for an
+     assembler listing to NUMBER.
+
+`--listing-lhs-width2=NUMBER'
+     Set the maximum width, in words, of the output data column for
+     continuation lines in an assembler listing to NUMBER.
+
+`--listing-rhs-width=NUMBER'
+     Set the maximum width of an input source line, as displayed in a
+     listing, to NUMBER bytes.
+
+`--listing-cont-lines=NUMBER'
+     Set the maximum number of lines printed in a listing for a single
+     line of input to NUMBER + 1.
+
+`-o OBJFILE'
+     Name the object-file output from `as' OBJFILE.
+
+`-R'
+     Fold the data section into the text section.
+
+     Set the default size of GAS's hash tables to a prime number close
+     to NUMBER.  Increasing this value can reduce the length of time it
+     takes the assembler to perform its tasks, at the expense of
+     increasing the assembler's memory requirements.  Similarly
+     reducing this value can reduce the memory requirements at the
+     expense of speed.
+
+`--reduce-memory-overheads'
+     This option reduces GAS's memory requirements, at the expense of
+     making the assembly processes slower.  Currently this switch is a
+     synonym for `--hash-size=4051', but in the future it may have
+     other effects as well.
+
+`--statistics'
+     Print the maximum space (in bytes) and total time (in seconds)
+     used by assembly.
+
+`--strip-local-absolute'
+     Remove local absolute symbols from the outgoing symbol table.
+
+`-v'
+`-version'
+     Print the `as' version.
+
+`--version'
+     Print the `as' version and exit.
+
+`-W'
+`--no-warn'
+     Suppress warning messages.
+
+`--fatal-warnings'
+     Treat warnings as errors.
+
+`--warn'
+     Don't suppress warning messages or treat them as errors.
+
+`-w'
+     Ignored.
+
+`-x'
+     Ignored.
+
+`-Z'
+     Generate an object file even after errors.
+
+`-- | FILES ...'
+     Standard input, or source files to assemble.
+
+
+   The following options are available when as is configured for an ARC
+processor.
+
+`-marc[5|6|7|8]'
+     This option selects the core processor variant.
+
+`-EB | -EL'
+     Select either big-endian (-EB) or little-endian (-EL) output.
+
+   The following options are available when as is configured for the ARM
+processor family.
+
+`-mcpu=PROCESSOR[+EXTENSION...]'
+     Specify which ARM processor variant is the target.
+
+`-march=ARCHITECTURE[+EXTENSION...]'
+     Specify which ARM architecture variant is used by the target.
+
+`-mfpu=FLOATING-POINT-FORMAT'
+     Select which Floating Point architecture is the target.
+
+`-mfloat-abi=ABI'
+     Select which floating point ABI is in use.
+
+`-mthumb'
+     Enable Thumb only instruction decoding.
+
+`-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
+     Select which procedure calling convention is in use.
+
+`-EB | -EL'
+     Select either big-endian (-EB) or little-endian (-EL) output.
+
+`-mthumb-interwork'
+     Specify that the code has been generated with interworking between
+     Thumb and ARM code in mind.
+
+`-k'
+     Specify that PIC code has been generated.
+
+   See the info pages for documentation of the CRIS-specific options.
+
+   The following options are available when as is configured for a D10V
+processor.
+`-O'
+     Optimize output by parallelizing instructions.
+
+   The following options are available when as is configured for a D30V
+processor.
+`-O'
+     Optimize output by parallelizing instructions.
+
+`-n'
+     Warn when nops are generated.
+
+`-N'
+     Warn when a nop after a 32-bit multiply instruction is generated.
+
+   The following options are available when as is configured for the
+Intel 80960 processor.
+
+`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
+     Specify which variant of the 960 architecture is the target.
+
+`-b'
+     Add code to collect statistics about branches taken.
+
+`-no-relax'
+     Do not alter compare-and-branch instructions for long
+     displacements; error if necessary.
+
+
+   The following options are available when as is configured for the
+Ubicom IP2K series.
+
+`-mip2022ext'
+     Specifies that the extended IP2022 instructions are allowed.
+
+`-mip2022'
+     Restores the default behaviour, which restricts the permitted
+     instructions to just the basic IP2022 ones.
+
+
+   The following options are available when as is configured for the
+Renesas M32C and M16C processors.
+
+`-m32c'
+     Assemble M32C instructions.
+
+`-m16c'
+     Assemble M16C instructions (the default).
+
+
+   The following options are available when as is configured for the
+Renesas M32R (formerly Mitsubishi M32R) series.
+
+`--m32rx'
+     Specify which processor in the M32R family is the target.  The
+     default is normally the M32R, but this option changes it to the
+     M32RX.
+
+`--warn-explicit-parallel-conflicts or --Wp'
+     Produce warning messages when questionable parallel constructs are
+     encountered.
+
+`--no-warn-explicit-parallel-conflicts or --Wnp'
+     Do not produce warning messages when questionable parallel
+     constructs are encountered.
+
+
+   The following options are available when as is configured for the
+Motorola 68000 series.
+
+`-l'
+     Shorten references to undefined symbols, to one word instead of
+     two.
+
+`-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
+`| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
+`| -m68333 | -m68340 | -mcpu32 | -m5200'
+     Specify what processor in the 68000 family is the target.  The
+     default is normally the 68020, but this can be changed at
+     configuration time.
+
+`-m68881 | -m68882 | -mno-68881 | -mno-68882'
+     The target machine does (or does not) have a floating-point
+     coprocessor.  The default is to assume a coprocessor for 68020,
+     68030, and cpu32.  Although the basic 68000 is not compatible with
+     the 68881, a combination of the two can be specified, since it's
+     possible to do emulation of the coprocessor instructions with the
+     main processor.
+
+`-m68851 | -mno-68851'
+     The target machine does (or does not) have a memory-management
+     unit coprocessor.  The default is to assume an MMU for 68020 and
+     up.
+
+
+   For details about the PDP-11 machine dependent features options, see
+*Note PDP-11-Options::.
+
+`-mpic | -mno-pic'
+     Generate position-independent (or position-dependent) code.  The
+     default is `-mpic'.
+
+`-mall'
+`-mall-extensions'
+     Enable all instruction set extensions.  This is the default.
+
+`-mno-extensions'
+     Disable all instruction set extensions.
+
+`-mEXTENSION | -mno-EXTENSION'
+     Enable (or disable) a particular instruction set extension.
+
+`-mCPU'
+     Enable the instruction set extensions supported by a particular
+     CPU, and disable all other extensions.
+
+`-mMACHINE'
+     Enable the instruction set extensions supported by a particular
+     machine model, and disable all other extensions.
+
+   The following options are available when as is configured for a
+picoJava processor.
+
+`-mb'
+     Generate "big endian" format output.
+
+`-ml'
+     Generate "little endian" format output.
+
+
+   The following options are available when as is configured for the
+Motorola 68HC11 or 68HC12 series.
+
+`-m68hc11 | -m68hc12 | -m68hcs12'
+     Specify what processor is the target.  The default is defined by
+     the configuration option when building the assembler.
+
+`-mshort'
+     Specify to use the 16-bit integer ABI.
+
+`-mlong'
+     Specify to use the 32-bit integer ABI.
+
+`-mshort-double'
+     Specify to use the 32-bit double ABI.
+
+`-mlong-double'
+     Specify to use the 64-bit double ABI.
+
+`--force-long-branchs'
+     Relative branches are turned into absolute ones. This concerns
+     conditional branches, unconditional branches and branches to a sub
+     routine.
+
+`-S | --short-branchs'
+     Do not turn relative branchs into absolute ones when the offset is
+     out of range.
+
+`--strict-direct-mode'
+     Do not turn the direct addressing mode into extended addressing
+     mode when the instruction does not support direct addressing mode.
+
+`--print-insn-syntax'
+     Print the syntax of instruction in case of error.
+
+`--print-opcodes'
+     print the list of instructions with syntax and then exit.
+
+`--generate-example'
+     print an example of instruction for each possible instruction and
+     then exit.  This option is only useful for testing `as'.
+
+
+   The following options are available when `as' is configured for the
+SPARC architecture:
+
+`-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
+`-Av8plus | -Av8plusa | -Av9 | -Av9a'
+     Explicitly select a variant of the SPARC architecture.
+
+     `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
+     and `-Av9a' select a 64 bit environment.
+
+     `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
+     UltraSPARC extensions.
+
+`-xarch=v8plus | -xarch=v8plusa'
+     For compatibility with the Solaris v9 assembler.  These options are
+     equivalent to -Av8plus and -Av8plusa, respectively.
+
+`-bump'
+     Warn when the assembler switches to another architecture.
+
+   The following options are available when as is configured for the
+'c54x architecture.
+
+`-mfar-mode'
+     Enable extended addressing mode.  All addresses and relocations
+     will assume extended addressing (usually 23 bits).
+
+`-mcpu=CPU_VERSION'
+     Sets the CPU version being compiled for.
+
+`-merrors-to-file FILENAME'
+     Redirect error output to a file, for broken systems which don't
+     support such behaviour in the shell.
+
+   The following options are available when as is configured for a MIPS
+processor.
+
+`-G NUM'
+     This option sets the largest size of an object that can be
+     referenced implicitly with the `gp' register.  It is only accepted
+     for targets that use ECOFF format, such as a DECstation running
+     Ultrix.  The default value is 8.
+
+`-EB'
+     Generate "big endian" format output.
+
+`-EL'
+     Generate "little endian" format output.
+
+`-mips1'
+`-mips2'
+`-mips3'
+`-mips4'
+`-mips5'
+`-mips32'
+`-mips32r2'
+`-mips64'
+`-mips64r2'
+     Generate code for a particular MIPS Instruction Set Architecture
+     level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
+     alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
+     and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
+     `-mips32r2', `-mips64', and `-mips64r2' correspond to generic
+     `MIPS V', `MIPS32', `MIPS32 Release 2', `MIPS64', and `MIPS64
+     Release 2' ISA processors, respectively.
+
+`-march=CPU'
+     Generate code for a particular MIPS cpu.
+
+`-mtune=CPU'
+     Schedule and tune for a particular MIPS cpu.
+
+`-mfix7000'
+`-mno-fix7000'
+     Cause nops to be inserted if the read of the destination register
+     of an mfhi or mflo instruction occurs in the following two
+     instructions.
+
+`-mdebug'
+`-no-mdebug'
+     Cause stabs-style debugging output to go into an ECOFF-style
+     .mdebug section instead of the standard ELF .stabs sections.
+
+`-mpdr'
+`-mno-pdr'
+     Control generation of `.pdr' sections.
+
+`-mgp32'
+`-mfp32'
+     The register sizes are normally inferred from the ISA and ABI, but
+     these flags force a certain group of registers to be treated as 32
+     bits wide at all times.  `-mgp32' controls the size of
+     general-purpose registers and `-mfp32' controls the size of
+     floating-point registers.
+
+`-mips16'
+`-no-mips16'
+     Generate code for the MIPS 16 processor.  This is equivalent to
+     putting `.set mips16' at the start of the assembly file.
+     `-no-mips16' turns off this option.
+
+`-mips3d'
+`-no-mips3d'
+     Generate code for the MIPS-3D Application Specific Extension.
+     This tells the assembler to accept MIPS-3D instructions.
+     `-no-mips3d' turns off this option.
+
+`-mdmx'
+`-no-mdmx'
+     Generate code for the MDMX Application Specific Extension.  This
+     tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
+     off this option.
+
+`-mdsp'
+`-mno-dsp'
+     Generate code for the DSP Application Specific Extension.  This
+     tells the assembler to accept DSP instructions.  `-mno-dsp' turns
+     off this option.
+
+`-mmt'
+`-mno-mt'
+     Generate code for the MT Application Specific Extension.  This
+     tells the assembler to accept MT instructions.  `-mno-mt' turns
+     off this option.
+
+`--construct-floats'
+`--no-construct-floats'
+     The `--no-construct-floats' option disables the construction of
+     double width floating point constants by loading the two halves of
+     the value into the two single width floating point registers that
+     make up the double width register.  By default
+     `--construct-floats' is selected, allowing construction of these
+     floating point constants.
+
+`--emulation=NAME'
+     This option causes `as' to emulate `as' configured for some other
+     target, in all respects, including output format (choosing between
+     ELF and ECOFF only), handling of pseudo-opcodes which may generate
+     debugging information or store symbol table information, and
+     default endianness.  The available configuration names are:
+     `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
+     `mipsbelf'.  The first two do not alter the default endianness
+     from that of the primary target for which the assembler was
+     configured; the others change the default to little- or big-endian
+     as indicated by the `b' or `l' in the name.  Using `-EB' or `-EL'
+     will override the endianness selection in any case.
+
+     This option is currently supported only when the primary target
+     `as' is configured for is a MIPS ELF or ECOFF target.
+     Furthermore, the primary target or others specified with
+     `--enable-targets=...' at configuration time must include support
+     for the other format, if both are to be available.  For example,
+     the Irix 5 configuration includes support for both.
+
+     Eventually, this option will support more configurations, with more
+     fine-grained control over the assembler's behavior, and will be
+     supported for more processors.
+
+`-nocpp'
+     `as' ignores this option.  It is accepted for compatibility with
+     the native tools.
+
+`--trap'
+`--no-trap'
+`--break'
+`--no-break'
+     Control how to deal with multiplication overflow and division by
+     zero.  `--trap' or `--no-break' (which are synonyms) take a trap
+     exception (and only work for Instruction Set Architecture level 2
+     and higher); `--break' or `--no-trap' (also synonyms, and the
+     default) take a break exception.
+
+`-n'
+     When this option is used, `as' will issue a warning every time it
+     generates a nop instruction from a macro.
+
+   The following options are available when as is configured for an
+MCore processor.
+
+`-jsri2bsr'
+`-nojsri2bsr'
+     Enable or disable the JSRI to BSR transformation.  By default this
+     is enabled.  The command line option `-nojsri2bsr' can be used to
+     disable it.
+
+`-sifilter'
+`-nosifilter'
+     Enable or disable the silicon filter behaviour.  By default this
+     is disabled.  The default can be overridden by the `-sifilter'
+     command line option.
+
+`-relax'
+     Alter jump instructions for long displacements.
+
+`-mcpu=[210|340]'
+     Select the cpu type on the target hardware.  This controls which
+     instructions can be assembled.
+
+`-EB'
+     Assemble for a big endian target.
+
+`-EL'
+     Assemble for a little endian target.
+
+
+   See the info pages for documentation of the MMIX-specific options.
+
+   The following options are available when as is configured for an
+Xtensa processor.
+
+`--text-section-literals | --no-text-section-literals'
+     With `--text-section-literals', literal pools are interspersed in
+     the text section.  The default is `--no-text-section-literals',
+     which places literals in a separate section in the output file.
+     These options only affect literals referenced via PC-relative
+     `L32R' instructions; literals for absolute mode `L32R'
+     instructions are handled separately.
+
+`--absolute-literals | --no-absolute-literals'
+     Indicate to the assembler whether `L32R' instructions use absolute
+     or PC-relative addressing.  The default is to assume absolute
+     addressing if the Xtensa processor includes the absolute `L32R'
+     addressing option.  Otherwise, only the PC-relative `L32R' mode
+     can be used.
+
+`--target-align | --no-target-align'
+     Enable or disable automatic alignment to reduce branch penalties
+     at the expense of some code density.  The default is
+     `--target-align'.
+
+`--longcalls | --no-longcalls'
+     Enable or disable transformation of call instructions to allow
+     calls across a greater range of addresses.  The default is
+     `--no-longcalls'.
+
+`--transform | --no-transform'
+     Enable or disable all assembler transformations of Xtensa
+     instructions.  The default is `--transform'; `--no-transform'
+     should be used only in the rare cases when the instructions must
+     be exactly as specified in the assembly source.
+
+   The following options are available when as is configured for a Z80
+family processor.
+`-z80'
+     Assemble for Z80 processor.
+
+`-r800'
+     Assemble for R800 processor.
+
+`-ignore-undocumented-instructions'
+`-Wnud'
+     Assemble undocumented Z80 instructions that also work on R800
+     without warning.
+
+`-ignore-unportable-instructions'
+`-Wnup'
+     Assemble all undocumented Z80 instructions without warning.
+
+`-warn-undocumented-instructions'
+`-Wud'
+     Issue a warning for undocumented Z80 instructions that also work
+     on R800.
+
+`-warn-unportable-instructions'
+`-Wup'
+     Issue a warning for undocumented Z80 instructions that do notwork
+     on R800.
+
+`-forbid-undocumented-instructions'
+`-Fud'
+     Treat all undocumented instructions as errors.
+
+`-forbid-unportable-instructions'
+`-Fup'
+     Treat undocumented Z80 intructions that do notwork on R800 as
+     errors.
+
+* Menu:
+
+* Manual::                      Structure of this Manual
+* GNU Assembler::               The GNU Assembler
+* Object Formats::              Object File Formats
+* Command Line::                Command Line
+* Input Files::                 Input Files
+* Object::                      Output (Object) File
+* Errors::                      Error and Warning Messages
+
+
+File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
+
+1.1 Structure of this Manual
+============================
+
+This manual is intended to describe what you need to know to use GNU
+`as'.  We cover the syntax expected in source files, including notation
+for symbols, constants, and expressions; the directives that `as'
+understands; and of course how to invoke `as'.
+
+   This manual also describes some of the machine-dependent features of
+various flavors of the assembler.
+
+   On the other hand, this manual is _not_ intended as an introduction
+to programming in assembly language--let alone programming in general!
+In a similar vein, we make no attempt to introduce the machine
+architecture; we do _not_ describe the instruction set, standard
+mnemonics, registers or addressing modes that are standard to a
+particular architecture.  You may want to consult the manufacturer's
+machine architecture manual for this information.
+
+
+File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
+
+1.2 The GNU Assembler
+=====================
+
+GNU `as' is really a family of assemblers.  If you use (or have used)
+the GNU assembler on one architecture, you should find a fairly similar
+environment when you use it on another architecture.  Each version has
+much in common with the others, including object file formats, most
+assembler directives (often called "pseudo-ops") and assembler syntax.
+
+   `as' is primarily intended to assemble the output of the GNU C
+compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
+to make `as' assemble correctly everything that other assemblers for
+the same machine would assemble.  Any exceptions are documented
+explicitly (*note Machine Dependencies::).  This doesn't mean `as'
+always uses the same syntax as another assembler for the same
+architecture; for example, we know of several incompatible versions of
+680x0 assembly language syntax.
+
+   Unlike older assemblers, `as' is designed to assemble a source
+program in one pass of the source file.  This has a subtle impact on the
+`.org' directive (*note `.org': Org.).
+
+
+File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
+
+1.3 Object File Formats
+=======================
+
+The GNU assembler can be configured to produce several alternative
+object file formats.  For the most part, this does not affect how you
+write assembly language programs; but directives for debugging symbols
+are typically different in different file formats.  *Note Symbol
+Attributes: Symbol Attributes.
+
+
+File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
+
+1.4 Command Line
+================
+
+After the program name `as', the command line may contain options and
+file names.  Options may appear in any order, and may be before, after,
+or between file names.  The order of file names is significant.
+
+   `--' (two hyphens) by itself names the standard input file
+explicitly, as one of the files for `as' to assemble.
+
+   Except for `--' any command line argument that begins with a hyphen
+(`-') is an option.  Each option changes the behavior of `as'.  No
+option changes the way another option works.  An option is a `-'
+followed by one or more letters; the case of the letter is important.
+All options are optional.
+
+   Some options expect exactly one file name to follow them.  The file
+name may either immediately follow the option's letter (compatible with
+older assemblers) or it may be the next command argument (GNU
+standard).  These two command lines are equivalent:
+
+     as -o my-object-file.o mumble.s
+     as -omy-object-file.o mumble.s
+
+
+File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
+
+1.5 Input Files
+===============
+
+We use the phrase "source program", abbreviated "source", to describe
+the program input to one run of `as'.  The program may be in one or
+more files; how the source is partitioned into files doesn't change the
+meaning of the source.
+
+   The source program is a concatenation of the text in all the files,
+in the order specified.
+
+   Each time you run `as' it assembles exactly one source program.  The
+source program is made up of one or more files.  (The standard input is
+also a file.)
+
+   You give `as' a command line that has zero or more input file names.
+The input files are read (from left file name to right).  A command
+line argument (in any position) that has no special meaning is taken to
+be an input file name.
+
+   If you give `as' no file names it attempts to read one input file
+from the `as' standard input, which is normally your terminal.  You may
+have to type <ctl-D> to tell `as' there is no more program to assemble.
+
+   Use `--' if you need to explicitly name the standard input file in
+your command line.
+
+   If the source is empty, `as' produces a small, empty object file.
+
+Filenames and Line-numbers
+--------------------------
+
+There are two ways of locating a line in the input file (or files) and
+either may be used in reporting error messages.  One way refers to a
+line number in a physical file; the other refers to a line number in a
+"logical" file.  *Note Error and Warning Messages: Errors.
+
+   "Physical files" are those files named in the command line given to
+`as'.
+
+   "Logical files" are simply names declared explicitly by assembler
+directives; they bear no relation to physical files.  Logical file
+names help error messages reflect the original source file, when `as'
+source is itself synthesized from other files.  `as' understands the
+`#' directives emitted by the `gcc' preprocessor.  See also *Note
+`.file': File.
+
+
+File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
+
+1.6 Output (Object) File
+========================
+
+Every time you run `as' it produces an output file, which is your
+assembly language program translated into numbers.  This file is the
+object file.  Its default name is `a.out'.  You can give it another
+name by using the `-o' option.  Conventionally, object file names end
+with `.o'.  The default name is used for historical reasons: older
+assemblers were capable of assembling self-contained programs directly
+into a runnable program.  (For some formats, this isn't currently
+possible, but it can be done for the `a.out' format.)
+
+   The object file is meant for input to the linker `ld'.  It contains
+assembled program code, information to help `ld' integrate the
+assembled program into a runnable file, and (optionally) symbolic
+information for the debugger.
+
+
+File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
+
+1.7 Error and Warning Messages
+==============================
+
+`as' may write warnings and error messages to the standard error file
+(usually your terminal).  This should not happen when  a compiler runs
+`as' automatically.  Warnings report an assumption made so that `as'
+could keep assembling a flawed program; errors report a grave problem
+that stops the assembly.
+
+   Warning messages have the format
+
+     file_name:NNN:Warning Message Text
+
+(where NNN is a line number).  If a logical file name has been given
+(*note `.file': File.) it is used for the filename, otherwise the name
+of the current input file is used.  If a logical line number was given
+(*note `.line': Line.)  then it is used to calculate the number printed,
+otherwise the actual line in the current source file is printed.  The
+message text is intended to be self explanatory (in the grand Unix
+tradition).
+
+   Error messages have the format
+     file_name:NNN:FATAL:Error Message Text
+   The file name and line number are derived as for warning messages.
+The actual message text may be rather less explanatory because many of
+them aren't supposed to happen.
+
+
+File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
+
+2 Command-Line Options
+**********************
+
+This chapter describes command-line options available in _all_ versions
+of the GNU assembler; *note Machine Dependencies::, for options specific
+to particular machine architectures.
+
+   If you are invoking `as' via the GNU C compiler, you can use the
+`-Wa' option to pass arguments through to the assembler.  The assembler
+arguments must be separated from each other (and the `-Wa') by commas.
+For example:
+
+     gcc -c -g -O -Wa,-alh,-L file.c
+
+This passes two options to the assembler: `-alh' (emit a listing to
+standard output with high-level and assembly source) and `-L' (retain
+local symbols in the symbol table).
+
+   Usually you do not need to use this `-Wa' mechanism, since many
+compiler command-line options are automatically passed to the assembler
+by the compiler.  (You can call the GNU compiler driver with the `-v'
+option to see precisely what options it passes to each compilation
+pass, including the assembler.)
+
+* Menu:
+
+* a::             -a[cdhlns] enable listings
+* alternate::     --alternate enable alternate macro syntax
+* D::             -D for compatibility
+* f::             -f to work faster
+* I::             -I for .include search path
+
+* K::             -K for difference tables
+
+* L::             -L to retain local labels
+* listing::       --listing-XXX to configure listing output
+* M::		  -M or --mri to assemble in MRI compatibility mode
+* MD::            --MD for dependency tracking
+* o::             -o to name the object file
+* R::             -R to join data and text sections
+* statistics::    --statistics to see statistics about assembly
+* traditional-format:: --traditional-format for compatible output
+* v::             -v to announce version
+* W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
+* Z::             -Z to make object file even after errors
+
+
+File: as.info,  Node: a,  Next: alternate,  Up: Invoking
+
+2.1 Enable Listings: `-a[cdhlns]'
+=================================
+
+These options enable listing output from the assembler.  By itself,
+`-a' requests high-level, assembly, and symbols listing.  You can use
+other letters to select specific options for the list: `-ah' requests a
+high-level language listing, `-al' requests an output-program assembly
+listing, and `-as' requests a symbol table listing.  High-level
+listings require that a compiler debugging option like `-g' be used,
+and that assembly listings (`-al') be requested also.
+
+   Use the `-ac' option to omit false conditionals from a listing.  Any
+lines which are not assembled because of a false `.if' (or `.ifdef', or
+any other conditional), or a true `.if' followed by an `.else', will be
+omitted from the listing.
+
+   Use the `-ad' option to omit debugging directives from the listing.
+
+   Once you have specified one of these options, you can further control
+listing output and its appearance using the directives `.list',
+`.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
+option turns off all forms processing.  If you do not request listing
+output with one of the `-a' options, the listing-control directives
+have no effect.
+
+   The letters after `-a' may be combined into one option, _e.g._,
+`-aln'.
+
+   Note if the assembler source is coming from the standard input (eg
+because it is being created by `gcc' and the `-pipe' command line switch
+is being used) then the listing will not contain any comments or
+preprocessor directives.  This is because the listing code buffers
+input source lines from stdin only after they have been preprocessed by
+the assembler.  This reduces memory usage and makes the code more
+efficient.
+
+
+File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
+
+2.2 `--alternate'
+=================
+
+Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
+
+
+File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
+
+2.3 `-D'
+========
+
+This option has no effect whatsoever, but it is accepted to make it more
+likely that scripts written for other assemblers also work with `as'.
+
+
+File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
+
+2.4 Work Faster: `-f'
+=====================
+
+`-f' should only be used when assembling programs written by a
+(trusted) compiler.  `-f' stops the assembler from doing whitespace and
+comment preprocessing on the input file(s) before assembling them.
+*Note Preprocessing: Preprocessing.
+
+     _Warning:_ if you use `-f' when the files actually need to be
+     preprocessed (if they contain comments, for example), `as' does
+     not work correctly.
+
+
+File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
+
+2.5 `.include' Search Path: `-I' PATH
+=====================================
+
+Use this option to add a PATH to the list of directories `as' searches
+for files specified in `.include' directives (*note `.include':
+Include.).  You may use `-I' as many times as necessary to include a
+variety of paths.  The current working directory is always searched
+first; after that, `as' searches any `-I' directories in the same order
+as they were specified (left to right) on the command line.
+
+
+File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
+
+2.6 Difference Tables: `-K'
+===========================
+
+`as' sometimes alters the code emitted for directives of the form
+`.word SYM1-SYM2'; *note `.word': Word.  You can use the `-K' option if
+you want a warning issued when this is done.
+
+
+File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
+
+2.7 Include Local Labels: `-L'
+==============================
+
+Labels beginning with `L' (upper case only) are called "local labels".
+*Note Symbol Names::.  Normally you do not see such labels when
+debugging, because they are intended for the use of programs (like
+compilers) that compose assembler programs, not for your notice.
+Normally both `as' and `ld' discard such labels, so you do not normally
+debug with them.
+
+   This option tells `as' to retain those `L...' symbols in the object
+file.  Usually if you do this you also tell the linker `ld' to preserve
+symbols whose names begin with `L'.
+
+   By default, a local label is any label beginning with `L', but each
+target is allowed to redefine the local label prefix.  On the HPPA
+local labels begin with `L$'.
+
+
+File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
+
+2.8 Configuring listing output: `--listing'
+===========================================
+
+The listing feature of the assembler can be enabled via the command
+line switch `-a' (*note a::).  This feature combines the input source
+file(s) with a hex dump of the corresponding locations in the output
+object file, and displays them as a listing file.  The format of this
+listing can be controlled by pseudo ops inside the assembler source
+(*note List:: *note Title:: *note Sbttl:: *note Psize:: *note Eject::)
+and also by the following switches:
+
+`--listing-lhs-width=`number''
+     Sets the maximum width, in words, of the first line of the hex
+     byte dump.  This dump appears on the left hand side of the listing
+     output.
+
+`--listing-lhs-width2=`number''
+     Sets the maximum width, in words, of any further lines of the hex
+     byte dump for a given input source line.  If this value is not
+     specified, it defaults to being the same as the value specified
+     for `--listing-lhs-width'.  If neither switch is used the default
+     is to one.
+
+`--listing-rhs-width=`number''
+     Sets the maximum width, in characters, of the source line that is
+     displayed alongside the hex dump.  The default value for this
+     parameter is 100.  The source line is displayed on the right hand
+     side of the listing output.
+
+`--listing-cont-lines=`number''
+     Sets the maximum number of continuation lines of hex dump that
+     will be displayed for a given single line of source input.  The
+     default value is 4.
+
+
+File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
+
+2.9 Assemble in MRI Compatibility Mode: `-M'
+============================================
+
+The `-M' or `--mri' option selects MRI compatibility mode.  This
+changes the syntax and pseudo-op handling of `as' to make it compatible
+with the `ASM68K' or the `ASM960' (depending upon the configured
+target) assembler from Microtec Research.  The exact nature of the MRI
+syntax will not be documented here; see the MRI manuals for more
+information.  Note in particular that the handling of macros and macro
+arguments is somewhat different.  The purpose of this option is to
+permit assembling existing MRI assembler code using `as'.
+
+   The MRI compatibility is not complete.  Certain operations of the
+MRI assembler depend upon its object file format, and can not be
+supported using other object file formats.  Supporting these would
+require enhancing each object file format individually.  These are:
+
+   * global symbols in common section
+
+     The m68k MRI assembler supports common sections which are merged
+     by the linker.  Other object file formats do not support this.
+     `as' handles common sections by treating them as a single common
+     symbol.  It permits local symbols to be defined within a common
+     section, but it can not support global symbols, since it has no
+     way to describe them.
+
+   * complex relocations
+
+     The MRI assemblers support relocations against a negated section
+     address, and relocations which combine the start addresses of two
+     or more sections.  These are not support by other object file
+     formats.
+
+   * `END' pseudo-op specifying start address
+
+     The MRI `END' pseudo-op permits the specification of a start
+     address.  This is not supported by other object file formats.  The
+     start address may instead be specified using the `-e' option to
+     the linker, or in a linker script.
+
+   * `IDNT', `.ident' and `NAME' pseudo-ops
+
+     The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
+     name to the output file.  This is not supported by other object
+     file formats.
+
+   * `ORG' pseudo-op
+
+     The m68k MRI `ORG' pseudo-op begins an absolute section at a given
+     address.  This differs from the usual `as' `.org' pseudo-op, which
+     changes the location within the current section.  Absolute
+     sections are not supported by other object file formats.  The
+     address of a section may be assigned within a linker script.
+
+   There are some other features of the MRI assembler which are not
+supported by `as', typically either because they are difficult or
+because they seem of little consequence.  Some of these may be
+supported in future releases.
+
+   * EBCDIC strings
+
+     EBCDIC strings are not supported.
+
+   * packed binary coded decimal
+
+     Packed binary coded decimal is not supported.  This means that the
+     `DC.P' and `DCB.P' pseudo-ops are not supported.
+
+   * `FEQU' pseudo-op
+
+     The m68k `FEQU' pseudo-op is not supported.
+
+   * `NOOBJ' pseudo-op
+
+     The m68k `NOOBJ' pseudo-op is not supported.
+
+   * `OPT' branch control options
+
+     The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
+     and `BRW'--are ignored.  `as' automatically relaxes all branches,
+     whether forward or backward, to an appropriate size, so these
+     options serve no purpose.
+
+   * `OPT' list control options
+
+     The following m68k `OPT' list control options are ignored: `C',
+     `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
+
+   * other `OPT' options
+
+     The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
+     `OP', `P', `PCO', `PCR', `PCS', `R'.
+
+   * `OPT' `D' option is default
+
+     The m68k `OPT' `D' option is the default, unlike the MRI assembler.
+     `OPT NOD' may be used to turn it off.
+
+   * `XREF' pseudo-op.
+
+     The m68k `XREF' pseudo-op is ignored.
+
+   * `.debug' pseudo-op
+
+     The i960 `.debug' pseudo-op is not supported.
+
+   * `.extended' pseudo-op
+
+     The i960 `.extended' pseudo-op is not supported.
+
+   * `.list' pseudo-op.
+
+     The various options of the i960 `.list' pseudo-op are not
+     supported.
+
+   * `.optimize' pseudo-op
+
+     The i960 `.optimize' pseudo-op is not supported.
+
+   * `.output' pseudo-op
+
+     The i960 `.output' pseudo-op is not supported.
+
+   * `.setreal' pseudo-op
+
+     The i960 `.setreal' pseudo-op is not supported.
+
+
+
+File: as.info,  Node: MD,  Next: o,  Prev: M,  Up: Invoking
+
+2.10 Dependency Tracking: `--MD'
+================================
+
+`as' can generate a dependency file for the file it creates.  This file
+consists of a single rule suitable for `make' describing the
+dependencies of the main source file.
+
+   The rule is written to the file named in its argument.
+
+   This feature is used in the automatic updating of makefiles.
+
+
+File: as.info,  Node: o,  Next: R,  Prev: MD,  Up: Invoking
+
+2.11 Name the Object File: `-o'
+===============================
+
+There is always one object file output when you run `as'.  By default
+it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
+use this option (which takes exactly one filename) to give the object
+file a different name.
+
+   Whatever the object file is called, `as' overwrites any existing
+file of the same name.
+
+
+File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
+
+2.12 Join Data and Text Sections: `-R'
+======================================
+
+`-R' tells `as' to write the object file as if all data-section data
+lives in the text section.  This is only done at the very last moment:
+your binary data are the same, but data section parts are relocated
+differently.  The data section part of your object file is zero bytes
+long because all its bytes are appended to the text section.  (*Note
+Sections and Relocation: Sections.)
+
+   When you specify `-R' it would be possible to generate shorter
+address displacements (because we do not have to cross between text and
+data section).  We refrain from doing this simply for compatibility with
+older versions of `as'.  In future, `-R' may work this way.
+
+   When `as' is configured for COFF or ELF output, this option is only
+useful if you use sections named `.text' and `.data'.
+
+   `-R' is not supported for any of the HPPA targets.  Using `-R'
+generates a warning from `as'.
+
+
+File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
+
+2.13 Display Assembly Statistics: `--statistics'
+================================================
+
+Use `--statistics' to display two statistics about the resources used by
+`as': the maximum amount of space allocated during the assembly (in
+bytes), and the total execution time taken for the assembly (in CPU
+seconds).
+
+
+File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
+
+2.14 Compatible Output: `--traditional-format'
+==============================================
+
+For some targets, the output of `as' is different in some ways from the
+output of some existing assembler.  This switch requests `as' to use
+the traditional format instead.
+
+   For example, it disables the exception frame optimizations which
+`as' normally does by default on `gcc' output.
+
+
+File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
+
+2.15 Announce Version: `-v'
+===========================
+
+You can find out what version of as is running by including the option
+`-v' (which you can also spell as `-version') on the command line.
+
+
+File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
+
+2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
+======================================================================
+
+`as' should never give a warning or error message when assembling
+compiler output.  But programs written by people often cause `as' to
+give a warning that a particular assumption was made.  All such
+warnings are directed to the standard error file.
+
+   If you use the `-W' and `--no-warn' options, no warnings are issued.
+This only affects the warning messages: it does not change any
+particular of how `as' assembles your file.  Errors, which stop the
+assembly, are still reported.
+
+   If you use the `--fatal-warnings' option, `as' considers files that
+generate warnings to be in error.
+
+   You can switch these options off again by specifying `--warn', which
+causes warnings to be output as usual.
+
+
+File: as.info,  Node: Z,  Prev: W,  Up: Invoking
+
+2.17 Generate Object File in Spite of Errors: `-Z'
+==================================================
+
+After an error message, `as' normally produces no output.  If for some
+reason you are interested in object file output even after `as' gives
+an error message on your program, use the `-Z' option.  If there are
+any errors, `as' continues anyways, and writes an object file after a
+final warning message of the form `N errors, M warnings, generating bad
+object file.'
+
+
+File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
+
+3 Syntax
+********
+
+This chapter describes the machine-independent syntax allowed in a
+source file.  `as' syntax is similar to what many other assemblers use;
+it is inspired by the BSD 4.2 assembler, except that `as' does not
+assemble Vax bit-fields.
+
+* Menu:
+
+* Preprocessing::              Preprocessing
+* Whitespace::                  Whitespace
+* Comments::                    Comments
+* Symbol Intro::                Symbols
+* Statements::                  Statements
+* Constants::                   Constants
+
+
+File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
+
+3.1 Preprocessing
+=================
+
+The `as' internal preprocessor:
+   * adjusts and removes extra whitespace.  It leaves one space or tab
+     before the keywords on a line, and turns any other whitespace on
+     the line into a single space.
+
+   * removes all comments, replacing them with a single space, or an
+     appropriate number of newlines.
+
+   * converts character constants into the appropriate numeric values.
+
+   It does not do macro processing, include file handling, or anything
+else you may get from your C compiler's preprocessor.  You can do
+include file processing with the `.include' directive (*note
+`.include': Include.).  You can use the GNU C compiler driver to get
+other "CPP" style preprocessing by giving the input file a `.S' suffix.
+*Note Options Controlling the Kind of Output: (gcc.info)Overall
+Options.
+
+   Excess whitespace, comments, and character constants cannot be used
+in the portions of the input text that are not preprocessed.
+
+   If the first line of an input file is `#NO_APP' or if you use the
+`-f' option, whitespace and comments are not removed from the input
+file.  Within an input file, you can ask for whitespace and comment
+removal in specific portions of the by putting a line that says `#APP'
+before the text that may contain whitespace or comments, and putting a
+line that says `#NO_APP' after this text.  This feature is mainly
+intend to support `asm' statements in compilers whose output is
+otherwise free of comments and whitespace.
+
+
+File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
+
+3.2 Whitespace
+==============
+
+"Whitespace" is one or more blanks or tabs, in any order.  Whitespace
+is used to separate symbols, and to make programs neater for people to
+read.  Unless within character constants (*note Character Constants:
+Characters.), any whitespace means the same as exactly one space.
+
+
+File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
+
+3.3 Comments
+============
+
+There are two ways of rendering comments to `as'.  In both cases the
+comment is equivalent to one space.
+
+   Anything from `/*' through the next `*/' is a comment.  This means
+you may not nest these comments.
+
+     /*
+       The only way to include a newline ('\n') in a comment
+       is to use this sort of comment.
+     */
+
+     /* This sort of comment does not nest. */
+
+   Anything from the "line comment" character to the next newline is
+considered a comment and is ignored.  The line comment character is `;'
+on the ARC; `@' on the ARM; `;' for the H8/300 family; `;' for the HPPA;
+`#' on the i386 and x86-64; `#' on the i960; `;' for the PDP-11; `;'
+for picoJava; `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH;
+`!' on the SPARC; `#' on the ip2k; `#' on the m32c; `#' on the m32r;
+`|' on the 680x0; `#' on the 68HC11 and 68HC12; `#' on the Vax; `;' for
+the Z80; `!' for the Z8000; `#' on the V850; `#' for Xtensa systems;
+see *Note Machine Dependencies::.
+
+   On some machines there are two different line comment characters.
+One character only begins a comment if it is the first non-whitespace
+character on a line, while the other always begins a comment.
+
+   The V850 assembler also supports a double dash as starting a comment
+that extends to the end of the line.
+
+   `--';
+
+   To be compatible with past assemblers, lines that begin with `#'
+have a special interpretation.  Following the `#' should be an absolute
+expression (*note Expressions::): the logical line number of the _next_
+line.  Then a string (*note Strings: Strings.) is allowed: if present
+it is a new logical file name.  The rest of the line, if any, should be
+whitespace.
+
+   If the first non-whitespace characters on the line are not numeric,
+the line is ignored.  (Just like a comment.)
+
+                               # This is an ordinary comment.
+     # 42-6 "new_file_name"    # New logical file name
+                               # This is logical line # 36.
+   This feature is deprecated, and may disappear from future versions
+of `as'.
+
+
+File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
+
+3.4 Symbols
+===========
+
+A "symbol" is one or more characters chosen from the set of all letters
+(both upper and lower case), digits and the three characters `_.$'.  On
+most machines, you can also use `$' in symbol names; exceptions are
+noted in *Note Machine Dependencies::.  No symbol may begin with a
+digit.  Case is significant.  There is no length limit: all characters
+are significant.  Symbols are delimited by characters not in that set,
+or by the beginning of a file (since the source program must end with a
+newline, the end of a file is not a possible symbol delimiter).  *Note
+Symbols::.  
+
+
+File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
+
+3.5 Statements
+==============
+
+A "statement" ends at a newline character (`\n') or line separator
+character.  (The line separator is usually `;', unless this conflicts
+with the comment character; *note Machine Dependencies::.)  The newline
+or separator character is considered part of the preceding statement.
+Newlines and separators within character constants are an exception:
+they do not end statements.
+
+It is an error to end any statement with end-of-file:  the last
+character of any input file should be a newline.
+
+   An empty statement is allowed, and may include whitespace.  It is
+ignored.
+
+   A statement begins with zero or more labels, optionally followed by a
+key symbol which determines what kind of statement it is.  The key
+symbol determines the syntax of the rest of the statement.  If the
+symbol begins with a dot `.' then the statement is an assembler
+directive: typically valid for any computer.  If the symbol begins with
+a letter the statement is an assembly language "instruction": it
+assembles into a machine language instruction.  Different versions of
+`as' for different computers recognize different instructions.  In
+fact, the same symbol may represent a different instruction in a
+different computer's assembly language.
+
+   A label is a symbol immediately followed by a colon (`:').
+Whitespace before a label or after a colon is permitted, but you may not
+have whitespace between a label's symbol and its colon. *Note Labels::.
+
+   For HPPA targets, labels need not be immediately followed by a
+colon, but the definition of a label must begin in column zero.  This
+also implies that only one label may be defined on each line.
+
+     label:     .directive    followed by something
+     another_label:           # This is an empty statement.
+                instruction   operand_1, operand_2, ...
+
+
+File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
+
+3.6 Constants
+=============
+
+A constant is a number, written so that its value is known by
+inspection, without knowing any context.  Like this:
+     .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
+     .ascii "Ring the bell\7"                  # A string constant.
+     .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
+     .float 0f-314159265358979323846264338327\
+     95028841971.693993751E-40                 # - pi, a flonum.
+
+* Menu:
+
+* Characters::                  Character Constants
+* Numbers::                     Number Constants
+
+
+File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
+
+3.6.1 Character Constants
+-------------------------
+
+There are two kinds of character constants.  A "character" stands for
+one character in one byte and its value may be used in numeric
+expressions.  String constants (properly called string _literals_) are
+potentially many bytes and their values may not be used in arithmetic
+expressions.
+
+* Menu:
+
+* Strings::                     Strings
+* Chars::                       Characters
+
+
+File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
+
+3.6.1.1 Strings
+...............
+
+A "string" is written between double-quotes.  It may contain
+double-quotes or null characters.  The way to get special characters
+into a string is to "escape" these characters: precede them with a
+backslash `\' character.  For example `\\' represents one backslash:
+the first `\' is an escape which tells `as' to interpret the second
+character literally as a backslash (which prevents `as' from
+recognizing the second `\' as an escape character).  The complete list
+of escapes follows.
+
+`\b'
+     Mnemonic for backspace; for ASCII this is octal code 010.
+
+`\f'
+     Mnemonic for FormFeed; for ASCII this is octal code 014.
+
+`\n'
+     Mnemonic for newline; for ASCII this is octal code 012.
+
+`\r'
+     Mnemonic for carriage-Return; for ASCII this is octal code 015.
+
+`\t'
+     Mnemonic for horizontal Tab; for ASCII this is octal code 011.
+
+`\ DIGIT DIGIT DIGIT'
+     An octal character code.  The numeric code is 3 octal digits.  For
+     compatibility with other Unix systems, 8 and 9 are accepted as
+     digits: for example, `\008' has the value 010, and `\009' the
+     value 011.
+
+`\`x' HEX-DIGITS...'
+     A hex character code.  All trailing hex digits are combined.
+     Either upper or lower case `x' works.
+
+`\\'
+     Represents one `\' character.
+
+`\"'
+     Represents one `"' character.  Needed in strings to represent this
+     character, because an unescaped `"' would end the string.
+
+`\ ANYTHING-ELSE'
+     Any other character when escaped by `\' gives a warning, but
+     assembles as if the `\' was not present.  The idea is that if you
+     used an escape sequence you clearly didn't want the literal
+     interpretation of the following character.  However `as' has no
+     other interpretation, so `as' knows it is giving you the wrong
+     code and warns you of the fact.
+
+   Which characters are escapable, and what those escapes represent,
+varies widely among assemblers.  The current set is what we think the
+BSD 4.2 assembler recognizes, and is a subset of what most C compilers
+recognize.  If you are in doubt, do not use an escape sequence.
+
+
+File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
+
+3.6.1.2 Characters
+..................
+
+A single character may be written as a single quote immediately
+followed by that character.  The same escapes apply to characters as to
+strings.  So if you want to write the character backslash, you must
+write `'\\' where the first `\' escapes the second `\'.  As you can
+see, the quote is an acute accent, not a grave accent.  A newline
+immediately following an acute accent is taken as a literal character
+and does not count as the end of a statement.  The value of a character
+constant in a numeric expression is the machine's byte-wide code for
+that character.  `as' assumes your character code is ASCII: `'A' means
+65, `'B' means 66, and so on.
+
+
+File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
+
+3.6.2 Number Constants
+----------------------
+
+`as' distinguishes three kinds of numbers according to how they are
+stored in the target machine.  _Integers_ are numbers that would fit
+into an `int' in the C language.  _Bignums_ are integers, but they are
+stored in more than 32 bits.  _Flonums_ are floating point numbers,
+described below.
+
+* Menu:
+
+* Integers::                    Integers
+* Bignums::                     Bignums
+* Flonums::                     Flonums
+
+
+File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
+
+3.6.2.1 Integers
+................
+
+A binary integer is `0b' or `0B' followed by zero or more of the binary
+digits `01'.
+
+   An octal integer is `0' followed by zero or more of the octal digits
+(`01234567').
+
+   A decimal integer starts with a non-zero digit followed by zero or
+more digits (`0123456789').
+
+   A hexadecimal integer is `0x' or `0X' followed by one or more
+hexadecimal digits chosen from `0123456789abcdefABCDEF'.
+
+   Integers have the usual values.  To denote a negative integer, use
+the prefix operator `-' discussed under expressions (*note Prefix
+Operators: Prefix Ops.).
+
+
+File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
+
+3.6.2.2 Bignums
+...............
+
+A "bignum" has the same syntax and semantics as an integer except that
+the number (or its negative) takes more than 32 bits to represent in
+binary.  The distinction is made because in some places integers are
+permitted while bignums are not.
+
+
+File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
+
+3.6.2.3 Flonums
+...............
+
+A "flonum" represents a floating point number.  The translation is
+indirect: a decimal floating point number from the text is converted by
+`as' to a generic binary floating point number of more than sufficient
+precision.  This generic floating point number is converted to a
+particular computer's floating point format (or formats) by a portion
+of `as' specialized to that computer.
+
+   A flonum is written by writing (in order)
+   * The digit `0'.  (`0' is optional on the HPPA.)
+
+   * A letter, to tell `as' the rest of the number is a flonum.  `e' is
+     recommended.  Case is not important.
+
+     On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the
+     letter must be one of the letters `DFPRSX' (in upper or lower
+     case).
+
+     On the ARC, the letter must be one of the letters `DFRS' (in upper
+     or lower case).
+
+     On the Intel 960 architecture, the letter must be one of the
+     letters `DFT' (in upper or lower case).
+
+     On the HPPA architecture, the letter must be `E' (upper case only).
+
+   * An optional sign: either `+' or `-'.
+
+   * An optional "integer part": zero or more decimal digits.
+
+   * An optional "fractional part": `.' followed by zero or more
+     decimal digits.
+
+   * An optional exponent, consisting of:
+
+        * An `E' or `e'.
+
+        * Optional sign: either `+' or `-'.
+
+        * One or more decimal digits.
+
+
+   At least one of the integer part or the fractional part must be
+present.  The floating point number has the usual base-10 value.
+
+   `as' does all processing using integers.  Flonums are computed
+independently of any floating point hardware in the computer running
+`as'.
+
+
+File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
+
+4 Sections and Relocation
+*************************
+
+* Menu:
+
+* Secs Background::             Background
+* Ld Sections::                 Linker Sections
+* As Sections::                 Assembler Internal Sections
+* Sub-Sections::                Sub-Sections
+* bss::                         bss Section
+
+
+File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
+
+4.1 Background
+==============
+
+Roughly, a section is a range of addresses, with no gaps; all data "in"
+those addresses is treated the same for some particular purpose.  For
+example there may be a "read only" section.
+
+   The linker `ld' reads many object files (partial programs) and
+combines their contents to form a runnable program.  When `as' emits an
+object file, the partial program is assumed to start at address 0.
+`ld' assigns the final addresses for the partial program, so that
+different partial programs do not overlap.  This is actually an
+oversimplification, but it suffices to explain how `as' uses sections.
+
+   `ld' moves blocks of bytes of your program to their run-time
+addresses.  These blocks slide to their run-time addresses as rigid
+units; their length does not change and neither does the order of bytes
+within them.  Such a rigid unit is called a _section_.  Assigning
+run-time addresses to sections is called "relocation".  It includes the
+task of adjusting mentions of object-file addresses so they refer to
+the proper run-time addresses.  For the H8/300, and for the Renesas /
+SuperH SH, `as' pads sections if needed to ensure they end on a word
+(sixteen bit) boundary.
+
+   An object file written by `as' has at least three sections, any of
+which may be empty.  These are named "text", "data" and "bss" sections.
+
+   When it generates COFF or ELF output, `as' can also generate
+whatever other named sections you specify using the `.section'
+directive (*note `.section': Section.).  If you do not use any
+directives that place output in the `.text' or `.data' sections, these
+sections still exist, but are empty.
+
+   When `as' generates SOM or ELF output for the HPPA, `as' can also
+generate whatever other named sections you specify using the `.space'
+and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
+Reference Manual' (HP 92432-90001) for details on the `.space' and
+`.subspace' assembler directives.
+
+   Additionally, `as' uses different names for the standard text, data,
+and bss sections when generating SOM output.  Program text is placed
+into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
+
+   Within the object file, the text section starts at address `0', the
+data section follows, and the bss section follows the data section.
+
+   When generating either SOM or ELF output files on the HPPA, the text
+section starts at address `0', the data section at address `0x4000000',
+and the bss section follows the data section.
+
+   To let `ld' know which data changes when the sections are relocated,
+and how to change that data, `as' also writes to the object file
+details of the relocation needed.  To perform relocation `ld' must
+know, each time an address in the object file is mentioned:
+   * Where in the object file is the beginning of this reference to an
+     address?
+
+   * How long (in bytes) is this reference?
+
+   * Which section does the address refer to?  What is the numeric
+     value of
+          (ADDRESS) - (START-ADDRESS OF SECTION)?
+
+   * Is the reference to an address "Program-Counter relative"?
+
+   In fact, every address `as' ever uses is expressed as
+     (SECTION) + (OFFSET INTO SECTION)
+   Further, most expressions `as' computes have this section-relative
+nature.  (For some object formats, such as SOM for the HPPA, some
+expressions are symbol-relative instead.)
+
+   In this manual we use the notation {SECNAME N} to mean "offset N
+into section SECNAME."
+
+   Apart from text, data and bss sections you need to know about the
+"absolute" section.  When `ld' mixes partial programs, addresses in the
+absolute section remain unchanged.  For example, address `{absolute 0}'
+is "relocated" to run-time address 0 by `ld'.  Although the linker
+never arranges two partial programs' data sections with overlapping
+addresses after linking, _by definition_ their absolute sections must
+overlap.  Address `{absolute 239}' in one part of a program is always
+the same address when the program is running as address `{absolute
+239}' in any other part of the program.
+
+   The idea of sections is extended to the "undefined" section.  Any
+address whose section is unknown at assembly time is by definition
+rendered {undefined U}--where U is filled in later.  Since numbers are
+always defined, the only way to generate an undefined address is to
+mention an undefined symbol.  A reference to a named common block would
+be such a symbol: its value is unknown at assembly time so it has
+section _undefined_.
+
+   By analogy the word _section_ is used to describe groups of sections
+in the linked program.  `ld' puts all partial programs' text sections
+in contiguous addresses in the linked program.  It is customary to
+refer to the _text section_ of a program, meaning all the addresses of
+all partial programs' text sections.  Likewise for data and bss
+sections.
+
+   Some sections are manipulated by `ld'; others are invented for use
+of `as' and have no meaning except during assembly.
+
+
+File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
+
+4.2 Linker Sections
+===================
+
+`ld' deals with just four kinds of sections, summarized below.
+
+*named sections*
+*text section*
+*data section*
+     These sections hold your program.  `as' and `ld' treat them as
+     separate but equal sections.  Anything you can say of one section
+     is true of another.  When the program is running, however, it is
+     customary for the text section to be unalterable.  The text
+     section is often shared among processes: it contains instructions,
+     constants and the like.  The data section of a running program is
+     usually alterable: for example, C variables would be stored in the
+     data section.
+
+*bss section*
+     This section contains zeroed bytes when your program begins
+     running.  It is used to hold uninitialized variables or common
+     storage.  The length of each partial program's bss section is
+     important, but because it starts out containing zeroed bytes there
+     is no need to store explicit zero bytes in the object file.  The
+     bss section was invented to eliminate those explicit zeros from
+     object files.
+
+*absolute section*
+     Address 0 of this section is always "relocated" to runtime address
+     0.  This is useful if you want to refer to an address that `ld'
+     must not change when relocating.  In this sense we speak of
+     absolute addresses being "unrelocatable": they do not change
+     during relocation.
+
+*undefined section*
+     This "section" is a catch-all for address references to objects
+     not in the preceding sections.
+
+   An idealized example of three relocatable sections follows.  The
+example uses the traditional section names `.text' and `.data'.  Memory
+addresses are on the horizontal axis.
+
+                           +-----+----+--+
+     partial program # 1:  |ttttt|dddd|00|
+                           +-----+----+--+
+
+                           text   data bss
+                           seg.   seg. seg.
+
+                           +---+---+---+
+     partial program # 2:  |TTT|DDD|000|
+                           +---+---+---+
+
+                           +--+---+-----+--+----+---+-----+~~
+     linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
+                           +--+---+-----+--+----+---+-----+~~
+
+         addresses:        0 ...
+
+
+File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
+
+4.3 Assembler Internal Sections
+===============================
+
+These sections are meant only for the internal use of `as'.  They have
+no meaning at run-time.  You do not really need to know about these
+sections for most purposes; but they can be mentioned in `as' warning
+messages, so it might be helpful to have an idea of their meanings to
+`as'.  These sections are used to permit the value of every expression
+in your assembly language program to be a section-relative address.
+
+ASSEMBLER-INTERNAL-LOGIC-ERROR!
+     An internal assembler logic error has been found.  This means
+     there is a bug in the assembler.
+
+expr section
+     The assembler stores complex expression internally as combinations
+     of symbols.  When it needs to represent an expression as a symbol,
+     it puts it in the expr section.
+
+
+File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
+
+4.4 Sub-Sections
+================
+
+Assembled bytes conventionally fall into two sections: text and data.
+You may have separate groups of data in named sections that you want to
+end up near to each other in the object file, even though they are not
+contiguous in the assembler source.  `as' allows you to use
+"subsections" for this purpose.  Within each section, there can be
+numbered subsections with values from 0 to 8192.  Objects assembled
+into the same subsection go into the object file together with other
+objects in the same subsection.  For example, a compiler might want to
+store constants in the text section, but might not want to have them
+interspersed with the program being assembled.  In this case, the
+compiler could issue a `.text 0' before each section of code being
+output, and a `.text 1' before each group of constants being output.
+
+Subsections are optional.  If you do not use subsections, everything
+goes in subsection number zero.
+
+   Each subsection is zero-padded up to a multiple of four bytes.
+(Subsections may be padded a different amount on different flavors of
+`as'.)
+
+   Subsections appear in your object file in numeric order, lowest
+numbered to highest.  (All this to be compatible with other people's
+assemblers.)  The object file contains no representation of
+subsections; `ld' and other programs that manipulate object files see
+no trace of them.  They just see all your text subsections as a text
+section, and all your data subsections as a data section.
+
+   To specify which subsection you want subsequent statements assembled
+into, use a numeric argument to specify it, in a `.text EXPRESSION' or
+a `.data EXPRESSION' statement.  When generating COFF output, you can
+also use an extra subsection argument with arbitrary named sections:
+`.section NAME, EXPRESSION'.  When generating ELF output, you can also
+use the `.subsection' directive (*note SubSection::) to specify a
+subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
+expression.  (*Note Expressions::.)  If you just say `.text' then
+`.text 0' is assumed.  Likewise `.data' means `.data 0'.  Assembly
+begins in `text 0'.  For instance:
+     .text 0     # The default subsection is text 0 anyway.
+     .ascii "This lives in the first text subsection. *"
+     .text 1
+     .ascii "But this lives in the second text subsection."
+     .data 0
+     .ascii "This lives in the data section,"
+     .ascii "in the first data subsection."
+     .text 0
+     .ascii "This lives in the first text section,"
+     .ascii "immediately following the asterisk (*)."
+
+   Each section has a "location counter" incremented by one for every
+byte assembled into that section.  Because subsections are merely a
+convenience restricted to `as' there is no concept of a subsection
+location counter.  There is no way to directly manipulate a location
+counter--but the `.align' directive changes it, and any label
+definition captures its current value.  The location counter of the
+section where statements are being assembled is said to be the "active"
+location counter.
+
+
+File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
+
+4.5 bss Section
+===============
+
+The bss section is used for local common variable storage.  You may
+allocate address space in the bss section, but you may not dictate data
+to load into it before your program executes.  When your program starts
+running, all the contents of the bss section are zeroed bytes.
+
+   The `.lcomm' pseudo-op defines a symbol in the bss section; see
+*Note `.lcomm': Lcomm.
+
+   The `.comm' pseudo-op may be used to declare a common symbol, which
+is another form of uninitialized symbol; see *Note `.comm': Comm.
+
+   When assembling for a target which supports multiple sections, such
+as ELF or COFF, you may switch into the `.bss' section and define
+symbols as usual; see *Note `.section': Section.  You may only assemble
+zero values into the section.  Typically the section will only contain
+symbol definitions and `.skip' directives (*note `.skip': Skip.).
+
+
+File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
+
+5 Symbols
+*********
+
+Symbols are a central concept: the programmer uses symbols to name
+things, the linker uses symbols to link, and the debugger uses symbols
+to debug.
+
+     _Warning:_ `as' does not place symbols in the object file in the
+     same order they were declared.  This may break some debuggers.
+
+* Menu:
+
+* Labels::                      Labels
+* Setting Symbols::             Giving Symbols Other Values
+* Symbol Names::                Symbol Names
+* Dot::                         The Special Dot Symbol
+* Symbol Attributes::           Symbol Attributes
+
+
+File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
+
+5.1 Labels
+==========
+
+A "label" is written as a symbol immediately followed by a colon `:'.
+The symbol then represents the current value of the active location
+counter, and is, for example, a suitable instruction operand.  You are
+warned if you use the same symbol to represent two different locations:
+the first definition overrides any other definitions.
+
+   On the HPPA, the usual form for a label need not be immediately
+followed by a colon, but instead must start in column zero.  Only one
+label may be defined on a single line.  To work around this, the HPPA
+version of `as' also provides a special directive `.label' for defining
+labels more flexibly.
+
+
+File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
+
+5.2 Giving Symbols Other Values
+===============================
+
+A symbol can be given an arbitrary value by writing a symbol, followed
+by an equals sign `=', followed by an expression (*note Expressions::).
+This is equivalent to using the `.set' directive.  *Note `.set': Set.
+In the same way, using a double equals sign `='`=' here represents an
+equivalent of the `.eqv' directive.  *Note `.eqv': Eqv.
+
+
+File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
+
+5.3 Symbol Names
+================
+
+Symbol names begin with a letter or with one of `._'.  On most
+machines, you can also use `$' in symbol names; exceptions are noted in
+*Note Machine Dependencies::.  That character may be followed by any
+string of digits, letters, dollar signs (unless otherwise noted in
+*Note Machine Dependencies::), and underscores.
+
+Case of letters is significant: `foo' is a different symbol name than
+`Foo'.
+
+   Each symbol has exactly one name.  Each name in an assembly language
+program refers to exactly one symbol.  You may use that symbol name any
+number of times in a program.
+
+Local Symbol Names
+------------------
+
+Local symbols help compilers and programmers use names temporarily.
+They create symbols which are guaranteed to be unique over the entire
+scope of the input source code and which can be referred to by a simple
+notation.  To define a local symbol, write a label of the form `N:'
+(where N represents any positive integer).  To refer to the most recent
+previous definition of that symbol write `Nb', using the same number as
+when you defined the label.  To refer to the next definition of a local
+label, write `Nf'-- The `b' stands for"backwards" and the `f' stands
+for "forwards".
+
+   There is no restriction on how you can use these labels, and you can
+reuse them too.  So that it is possible to repeatedly define the same
+local label (using the same number `N'), although you can only refer to
+the most recently defined local label of that number (for a backwards
+reference) or the next definition of a specific local label for a
+forward reference.  It is also worth noting that the first 10 local
+labels (`0:'...`9:') are implemented in a slightly more efficient
+manner than the others.
+
+   Here is an example:
+
+     1:        branch 1f
+     2:        branch 1b
+     1:        branch 2f
+     2:        branch 1b
+
+   Which is the equivalent of:
+
+     label_1:  branch label_3
+     label_2:  branch label_1
+     label_3:  branch label_4
+     label_4:  branch label_3
+
+   Local symbol names are only a notational device.  They are
+immediately transformed into more conventional symbol names before the
+assembler uses them.  The symbol names stored in the symbol table,
+appearing in error messages and optionally emitted to the object file.
+The names are constructed using these parts:
+
+`L'
+     All local labels begin with `L'. Normally both `as' and `ld'
+     forget symbols that start with `L'. These labels are used for
+     symbols you are never intended to see.  If you use the `-L' option
+     then `as' retains these symbols in the object file. If you also
+     instruct `ld' to retain these symbols, you may use them in
+     debugging.
+
+`NUMBER'
+     This is the number that was used in the local label definition.
+     So if the label is written `55:' then the number is `55'.
+
+`C-B'
+     This unusual character is included so you do not accidentally
+     invent a symbol of the same name.  The character has ASCII value
+     of `\002' (control-B).
+
+`_ordinal number_'
+     This is a serial number to keep the labels distinct.  The first
+     definition of `0:' gets the number `1'.  The 15th definition of
+     `0:' gets the number `15', and so on.  Likewise the first
+     definition of `1:' gets the number `1' and its 15th defintion gets
+     `15' as well.
+
+   So for example, the first `1:' is named `L1C-B1', the 44th `3:' is
+named `L3C-B44'.
+
+Dollar Local Labels
+-------------------
+
+`as' also supports an even more local form of local labels called
+dollar labels.  These labels go out of scope (ie they become undefined)
+as soon as a non-local label is defined.  Thus they remain valid for
+only a small region of the input source code.  Normal local labels, by
+contrast, remain in scope for the entire file, or until they are
+redefined by another occurrence of the same local label.
+
+   Dollar labels are defined in exactly the same way as ordinary local
+labels, except that instead of being terminated by a colon, they are
+terminated by a dollar sign.  eg `55$'.
+
+   They can also be distinguished from ordinary local labels by their
+transformed name which uses ASCII character `\001' (control-A) as the
+magic character to distinguish them from ordinary labels.  Thus the 5th
+defintion of `6$' is named `L6C-A5'.
+
+
+File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
+
+5.4 The Special Dot Symbol
+==========================
+
+The special symbol `.' refers to the current address that `as' is
+assembling into.  Thus, the expression `melvin: .long .' defines
+`melvin' to contain its own address.  Assigning a value to `.' is
+treated the same as a `.org' directive.  Thus, the expression `.=.+4'
+is the same as saying `.space 4'.
+
+
+File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
+
+5.5 Symbol Attributes
+=====================
+
+Every symbol has, as well as its name, the attributes "Value" and
+"Type".  Depending on output format, symbols can also have auxiliary
+attributes.
+
+   If you use a symbol without defining it, `as' assumes zero for all
+these attributes, and probably won't warn you.  This makes the symbol
+an externally defined symbol, which is generally what you would want.
+
+* Menu:
+
+* Symbol Value::                Value
+* Symbol Type::                 Type
+
+
+* a.out Symbols::               Symbol Attributes: `a.out'
+
+* COFF Symbols::                Symbol Attributes for COFF
+
+* SOM Symbols::                Symbol Attributes for SOM
+
+
+File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
+
+5.5.1 Value
+-----------
+
+The value of a symbol is (usually) 32 bits.  For a symbol which labels a
+location in the text, data, bss or absolute sections the value is the
+number of addresses from the start of that section to the label.
+Naturally for text, data and bss sections the value of a symbol changes
+as `ld' changes section base addresses during linking.  Absolute
+symbols' values do not change during linking: that is why they are
+called absolute.
+
+   The value of an undefined symbol is treated in a special way.  If it
+is 0 then the symbol is not defined in this assembler source file, and
+`ld' tries to determine its value from other files linked into the same
+program.  You make this kind of symbol simply by mentioning a symbol
+name without defining it.  A non-zero value represents a `.comm' common
+declaration.  The value is how much common storage to reserve, in bytes
+(addresses).  The symbol refers to the first address of the allocated
+storage.
+
+
+File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
+
+5.5.2 Type
+----------
+
+The type attribute of a symbol contains relocation (section)
+information, any flag settings indicating that a symbol is external, and
+(optionally), other information for linkers and debuggers.  The exact
+format depends on the object-code output format in use.
+
+
+File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
+
+5.5.3 Symbol Attributes: `a.out'
+--------------------------------
+
+* Menu:
+
+* Symbol Desc::                 Descriptor
+* Symbol Other::                Other
+
+
+File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
+
+5.5.3.1 Descriptor
+..................
+
+This is an arbitrary 16-bit value.  You may establish a symbol's
+descriptor value by using a `.desc' statement (*note `.desc': Desc.).
+A descriptor value means nothing to `as'.
+
+
+File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
+
+5.5.3.2 Other
+.............
+
+This is an arbitrary 8-bit value.  It means nothing to `as'.
+
+
+File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
+
+5.5.4 Symbol Attributes for COFF
+--------------------------------
+
+The COFF format supports a multitude of auxiliary symbol attributes;
+like the primary symbol attributes, they are set between `.def' and
+`.endef' directives.
+
+5.5.4.1 Primary Attributes
+..........................
+
+The symbol name is set with `.def'; the value and type, respectively,
+with `.val' and `.type'.
+
+5.5.4.2 Auxiliary Attributes
+............................
+
+The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
+`.weak' can generate auxiliary symbol table information for COFF.
+
+
+File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
+
+5.5.5 Symbol Attributes for SOM
+-------------------------------
+
+The SOM format for the HPPA supports a multitude of symbol attributes
+set with the `.EXPORT' and `.IMPORT' directives.
+
+   The attributes are described in `HP9000 Series 800 Assembly Language
+Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
+assembler directive documentation.
+
+
+File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
+
+6 Expressions
+*************
+
+An "expression" specifies an address or numeric value.  Whitespace may
+precede and/or follow an expression.
+
+   The result of an expression must be an absolute number, or else an
+offset into a particular section.  If an expression is not absolute,
+and there is not enough information when `as' sees the expression to
+know its section, a second pass over the source program might be
+necessary to interpret the expression--but the second pass is currently
+not implemented.  `as' aborts with an error message in this situation.
+
+* Menu:
+
+* Empty Exprs::                 Empty Expressions
+* Integer Exprs::               Integer Expressions
+
+
+File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
+
+6.1 Empty Expressions
+=====================
+
+An empty expression has no value: it is just whitespace or null.
+Wherever an absolute expression is required, you may omit the
+expression, and `as' assumes a value of (absolute) 0.  This is
+compatible with other assemblers.
+
+
+File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
+
+6.2 Integer Expressions
+=======================
+
+An "integer expression" is one or more _arguments_ delimited by
+_operators_.
+
+* Menu:
+
+* Arguments::                   Arguments
+* Operators::                   Operators
+* Prefix Ops::                  Prefix Operators
+* Infix Ops::                   Infix Operators
+
+
+File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
+
+6.2.1 Arguments
+---------------
+
+"Arguments" are symbols, numbers or subexpressions.  In other contexts
+arguments are sometimes called "arithmetic operands".  In this manual,
+to avoid confusing them with the "instruction operands" of the machine
+language, we use the term "argument" to refer to parts of expressions
+only, reserving the word "operand" to refer only to machine instruction
+operands.
+
+   Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
+text, data, bss, absolute, or undefined.  NNN is a signed, 2's
+complement 32 bit integer.
+
+   Numbers are usually integers.
+
+   A number can be a flonum or bignum.  In this case, you are warned
+that only the low order 32 bits are used, and `as' pretends these 32
+bits are an integer.  You may write integer-manipulating instructions
+that act on exotic constants, compatible with other assemblers.
+
+   Subexpressions are a left parenthesis `(' followed by an integer
+expression, followed by a right parenthesis `)'; or a prefix operator
+followed by an argument.
+
+
+File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
+
+6.2.2 Operators
+---------------
+
+"Operators" are arithmetic functions, like `+' or `%'.  Prefix
+operators are followed by an argument.  Infix operators appear between
+their arguments.  Operators may be preceded and/or followed by
+whitespace.
+
+
+File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
+
+6.2.3 Prefix Operator
+---------------------
+
+`as' has the following "prefix operators".  They each take one
+argument, which must be absolute.
+
+`-'
+     "Negation".  Two's complement negation.
+
+`~'
+     "Complementation".  Bitwise not.
+
+
+File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
+
+6.2.4 Infix Operators
+---------------------
+
+"Infix operators" take two arguments, one on either side.  Operators
+have precedence, but operations with equal precedence are performed left
+to right.  Apart from `+' or `-', both arguments must be absolute, and
+the result is absolute.
+
+  1. Highest Precedence
+
+    `*'
+          "Multiplication".
+
+    `/'
+          "Division".  Truncation is the same as the C operator `/'
+
+    `%'
+          "Remainder".
+
+    `<<'
+          "Shift Left".  Same as the C operator `<<'.
+
+    `>>'
+          "Shift Right".  Same as the C operator `>>'.
+
+  2. Intermediate precedence
+
+    `|'
+          "Bitwise Inclusive Or".
+
+    `&'
+          "Bitwise And".
+
+    `^'
+          "Bitwise Exclusive Or".
+
+    `!'
+          "Bitwise Or Not".
+
+  3. Low Precedence
+
+    `+'
+          "Addition".  If either argument is absolute, the result has
+          the section of the other argument.  You may not add together
+          arguments from different sections.
+
+    `-'
+          "Subtraction".  If the right argument is absolute, the result
+          has the section of the left argument.  If both arguments are
+          in the same section, the result is absolute.  You may not
+          subtract arguments from different sections.
+
+    `=='
+          "Is Equal To"
+
+    `<>'
+    `!='
+          "Is Not Equal To"
+
+    `<'
+          "Is Less Than"
+
+    `>'
+          "Is Greater Than"
+
+    `>='
+          "Is Greater Than Or Equal To"
+
+    `<='
+          "Is Less Than Or Equal To"
+
+          The comparison operators can be used as infix operators.  A
+          true results has a value of -1 whereas a false result has a
+          value of 0.   Note, these operators perform signed
+          comparisons.
+
+  4. Lowest Precedence
+
+    `&&'
+          "Logical And".
+
+    `||'
+          "Logical Or".
+
+          These two logical operations can be used to combine the
+          results of sub expressions.  Note, unlike the comparison
+          operators a true result returns a value of 1 but a false
+          results does still return 0.  Also note that the logical or
+          operator has a slightly lower precedence than logical and.
+
+
+   In short, it's only meaningful to add or subtract the _offsets_ in an
+address; you can only have a defined section in one of the two
+arguments.
+
+
+File: as.info,  Node: Pseudo Ops,  Next: Machine Dependencies,  Prev: Expressions,  Up: Top
+
+7 Assembler Directives
+**********************
+
+All assembler directives have names that begin with a period (`.').
+The rest of the name is letters, usually in lower case.
+
+   This chapter discusses directives that are available regardless of
+the target machine configuration for the GNU assembler.  Some machine
+configurations provide additional directives.  *Note Machine
+Dependencies::.
+
+* Menu:
+
+* Abort::                       `.abort'
+
+* ABORT::                       `.ABORT'
+
+* Align::                       `.align ABS-EXPR , ABS-EXPR'
+* Altmacro::                    `.altmacro'
+* Ascii::                       `.ascii "STRING"'...
+* Asciz::                       `.asciz "STRING"'...
+* Balign::                      `.balign ABS-EXPR , ABS-EXPR'
+* Byte::                        `.byte EXPRESSIONS'
+* Comm::                        `.comm SYMBOL , LENGTH '
+
+* CFI directives::		`.cfi_startproc', `.cfi_endproc', etc.
+
+* Data::                        `.data SUBSECTION'
+
+* Def::                         `.def NAME'
+
+* Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
+
+* Dim::                         `.dim'
+
+* Double::                      `.double FLONUMS'
+* Eject::                       `.eject'
+* Else::                        `.else'
+* Elseif::                      `.elseif'
+* End::				`.end'
+
+* Endef::                       `.endef'
+
+* Endfunc::                     `.endfunc'
+* Endif::                       `.endif'
+* Equ::                         `.equ SYMBOL, EXPRESSION'
+* Equiv::                       `.equiv SYMBOL, EXPRESSION'
+* Eqv::                         `.eqv SYMBOL, EXPRESSION'
+* Err::				`.err'
+* Error::			`.error STRING'
+* Exitm::			`.exitm'
+* Extern::                      `.extern'
+* Fail::			`.fail'
+
+* File::                        `.file STRING'
+
+* Fill::                        `.fill REPEAT , SIZE , VALUE'
+* Float::                       `.float FLONUMS'
+* Func::                        `.func'
+* Global::                      `.global SYMBOL', `.globl SYMBOL'
+
+* Hidden::                      `.hidden NAMES'
+
+* hword::                       `.hword EXPRESSIONS'
+* Ident::                       `.ident'
+* If::                          `.if ABSOLUTE EXPRESSION'
+* Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
+* Include::                     `.include "FILE"'
+* Int::                         `.int EXPRESSIONS'
+
+* Internal::                    `.internal NAMES'
+
+* Irp::				`.irp SYMBOL,VALUES'...
+* Irpc::			`.irpc SYMBOL,VALUES'...
+* Lcomm::                       `.lcomm SYMBOL , LENGTH'
+* Lflags::                      `.lflags'
+
+* Line::                        `.line LINE-NUMBER'
+
+* Linkonce::			`.linkonce [TYPE]'
+* List::                        `.list'
+* Ln::                          `.ln LINE-NUMBER'
+
+* LNS directives::              `.file', `.loc', etc.
+
+* Long::                        `.long EXPRESSIONS'
+
+* Macro::			`.macro NAME ARGS'...
+* MRI::				`.mri VAL'
+* Noaltmacro::                  `.noaltmacro'
+* Nolist::                      `.nolist'
+* Octa::                        `.octa BIGNUMS'
+* Org::                         `.org NEW-LC , FILL'
+* P2align::                     `.p2align ABS-EXPR , ABS-EXPR'
+
+* PopSection::                  `.popsection'
+* Previous::                    `.previous'
+
+* Print::			`.print STRING'
+
+* Protected::                   `.protected NAMES'
+
+* Psize::                       `.psize LINES, COLUMNS'
+* Purgem::			`.purgem NAME'
+
+* PushSection::                 `.pushsection NAME'
+
+* Quad::                        `.quad BIGNUMS'
+* Rept::			`.rept COUNT'
+* Sbttl::                       `.sbttl "SUBHEADING"'
+
+* Scl::                         `.scl CLASS'
+
+* Section::                     `.section NAME'
+
+* Set::                         `.set SYMBOL, EXPRESSION'
+* Short::                       `.short EXPRESSIONS'
+* Single::                      `.single FLONUMS'
+
+* Size::                        `.size [NAME , EXPRESSION]'
+
+* Skip::                        `.skip SIZE , FILL'
+* Sleb128::			`.sleb128 EXPRESSIONS'
+* Space::                       `.space SIZE , FILL'
+
+* Stab::                        `.stabd, .stabn, .stabs'
+
+* String::                      `.string "STR"'
+* Struct::			`.struct EXPRESSION'
+
+* SubSection::                  `.subsection'
+* Symver::                      `.symver NAME,NAME2 at NODENAME'
+
+
+* Tag::                         `.tag STRUCTNAME'
+
+* Text::                        `.text SUBSECTION'
+* Title::                       `.title "HEADING"'
+
+* Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
+
+* Uleb128::                     `.uleb128 EXPRESSIONS'
+
+* Val::                         `.val ADDR'
+
+
+* Version::                     `.version "STRING"'
+* VTableEntry::                 `.vtable_entry TABLE, OFFSET'
+* VTableInherit::               `.vtable_inherit CHILD, PARENT'
+
+* Warning::			`.warning STRING'
+* Weak::                        `.weak NAMES'
+* Weakref::                     `.weakref ALIAS, SYMBOL'
+* Word::                        `.word EXPRESSIONS'
+* Deprecated::                  Deprecated Directives
+
+
+File: as.info,  Node: Abort,  Next: ABORT,  Up: Pseudo Ops
+
+7.1 `.abort'
+============
+
+This directive stops the assembly immediately.  It is for compatibility
+with other assemblers.  The original idea was that the assembly
+language source would be piped into the assembler.  If the sender of
+the source quit, it could use this directive tells `as' to quit also.
+One day `.abort' will not be supported.
+
+
+File: as.info,  Node: ABORT,  Next: Align,  Prev: Abort,  Up: Pseudo Ops
+
+7.2 `.ABORT'
+============
+
+When producing COFF output, `as' accepts this directive as a synonym
+for `.abort'.
+
+
+File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT,  Up: Pseudo Ops
+
+7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
+=========================================
+
+Pad the location counter (in the current subsection) to a particular
+storage boundary.  The first expression (which must be absolute) is the
+alignment required, as described below.
+
+   The second expression (also absolute) gives the fill value to be
+stored in the padding bytes.  It (and the comma) may be omitted.  If it
+is omitted, the padding bytes are normally zero.  However, on some
+systems, if the section is marked as containing code and the fill value
+is omitted, the space is filled with no-op instructions.
+
+   The third expression is also absolute, and is also optional.  If it
+is present, it is the maximum number of bytes that should be skipped by
+this alignment directive.  If doing the alignment would require
+skipping more bytes than the specified maximum, then the alignment is
+not done at all.  You can omit the fill value (the second argument)
+entirely by simply using two commas after the required alignment; this
+can be useful if you want the alignment to be filled with no-op
+instructions when appropriate.
+
+   The way the required alignment is specified varies from system to
+system.  For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32,
+s390, sparc, tic4x, tic80 and xtensa, the first expression is the
+alignment request in bytes.  For example `.align 8' advances the
+location counter until it is a multiple of 8.  If the location counter
+is already a multiple of 8, no change is needed.  For the tic54x, the
+first expression is the alignment request in words.
+
+   For other systems, including the i386 using a.out format, and the
+arm and strongarm, it is the number of low-order zero bits the location
+counter must have after advancement.  For example `.align 3' advances
+the location counter until it a multiple of 8.  If the location counter
+is already a multiple of 8, no change is needed.
+
+   This inconsistency is due to the different behaviors of the various
+native assemblers for these systems which GAS must emulate.  GAS also
+provides `.balign' and `.p2align' directives, described later, which
+have a consistent behavior across all architectures (but are specific
+to GAS).
+
+
+File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
+
+7.4 `.ascii "STRING"'...
+========================
+
+`.ascii' expects zero or more string literals (*note Strings::)
+separated by commas.  It assembles each string (with no automatic
+trailing zero byte) into consecutive addresses.
+
+
+File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
+
+7.5 `.asciz "STRING"'...
+========================
+
+`.asciz' is just like `.ascii', but each string is followed by a zero
+byte.  The "z" in `.asciz' stands for "zero".
+
+
+File: as.info,  Node: Balign,  Next: Byte,  Prev: Asciz,  Up: Pseudo Ops
+
+7.6 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
+==============================================
+
+Pad the location counter (in the current subsection) to a particular
+storage boundary.  The first expression (which must be absolute) is the
+alignment request in bytes.  For example `.balign 8' advances the
+location counter until it is a multiple of 8.  If the location counter
+is already a multiple of 8, no change is needed.
+
+   The second expression (also absolute) gives the fill value to be
+stored in the padding bytes.  It (and the comma) may be omitted.  If it
+is omitted, the padding bytes are normally zero.  However, on some
+systems, if the section is marked as containing code and the fill value
+is omitted, the space is filled with no-op instructions.
+
+   The third expression is also absolute, and is also optional.  If it
+is present, it is the maximum number of bytes that should be skipped by
+this alignment directive.  If doing the alignment would require
+skipping more bytes than the specified maximum, then the alignment is
+not done at all.  You can omit the fill value (the second argument)
+entirely by simply using two commas after the required alignment; this
+can be useful if you want the alignment to be filled with no-op
+instructions when appropriate.
+
+   The `.balignw' and `.balignl' directives are variants of the
+`.balign' directive.  The `.balignw' directive treats the fill pattern
+as a two byte word value.  The `.balignl' directives treats the fill
+pattern as a four byte longword value.  For example, `.balignw
+4,0x368d' will align to a multiple of 4.  If it skips two bytes, they
+will be filled in with the value 0x368d (the exact placement of the
+bytes depends upon the endianness of the processor).  If it skips 1 or
+3 bytes, the fill value is undefined.
+
+
+File: as.info,  Node: Byte,  Next: Comm,  Prev: Balign,  Up: Pseudo Ops
+
+7.7 `.byte EXPRESSIONS'
+=======================
+
+`.byte' expects zero or more expressions, separated by commas.  Each
+expression is assembled into the next byte.
+
+
+File: as.info,  Node: Comm,  Next: CFI directives,  Prev: Byte,  Up: Pseudo Ops
+
+7.8 `.comm SYMBOL , LENGTH '
+============================
+
+`.comm' declares a common symbol named SYMBOL.  When linking, a common
+symbol in one object file may be merged with a defined or common symbol
+of the same name in another object file.  If `ld' does not see a
+definition for the symbol-just one or more common symbols-then it will
+allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
+absolute expression.  If `ld' sees multiple common symbols with the
+same name, and they do not all have the same size, it will allocate
+space using the largest size.
+
+   When using ELF, the `.comm' directive takes an optional third
+argument.  This is the desired alignment of the symbol, specified as a
+byte boundary (for example, an alignment of 16 means that the least
+significant 4 bits of the address should be zero).  The alignment must
+be an absolute expression, and it must be a power of two.  If `ld'
+allocates uninitialized memory for the common symbol, it will use the
+alignment when placing the symbol.  If no alignment is specified, `as'
+will set the alignment to the largest power of two less than or equal
+to the size of the symbol, up to a maximum of 16.
+
+   The syntax for `.comm' differs slightly on the HPPA.  The syntax is
+`SYMBOL .comm, LENGTH'; SYMBOL is optional.
+
+
+File: as.info,  Node: CFI directives,  Next: Data,  Prev: Comm,  Up: Pseudo Ops
+
+7.9 `.cfi_startproc'
+====================
+
+`.cfi_startproc' is used at the beginning of each function that should
+have an entry in `.eh_frame'. It initializes some internal data
+structures and emits architecture dependent initial CFI instructions.
+Don't forget to close the function by `.cfi_endproc'.
+
+7.10 `.cfi_endproc'
+===================
+
+`.cfi_endproc' is used at the end of a function where it closes its
+unwind entry previously opened by `.cfi_startproc'. and emits it to
+`.eh_frame'.
+
+7.11 `.cfi_def_cfa REGISTER, OFFSET'
+====================================
+
+`.cfi_def_cfa' defines a rule for computing CFA as: take address from
+REGISTER and add OFFSET to it.
+
+7.12 `.cfi_def_cfa_register REGISTER'
+=====================================
+
+`.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
+REGISTER will be used instead of the old one. Offset remains the same.
+
+7.13 `.cfi_def_cfa_offset OFFSET'
+=================================
+
+`.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
+remains the same, but OFFSET is new. Note that it is the absolute
+offset that will be added to a defined register to compute CFA address.
+
+7.14 `.cfi_adjust_cfa_offset OFFSET'
+====================================
+
+Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
+added/substracted from the previous offset.
+
+7.15 `.cfi_offset REGISTER, OFFSET'
+===================================
+
+Previous value of REGISTER is saved at offset OFFSET from CFA.
+
+7.16 `.cfi_rel_offset REGISTER, OFFSET'
+=======================================
+
+Previous value of REGISTER is saved at offset OFFSET from the current
+CFA register.  This is transformed to `.cfi_offset' using the known
+displacement of the CFA register from the CFA.  This is often easier to
+use, because the number will match the code it's annotating.
+
+7.17 `.cfi_signal_frame'
+========================
+
+Mark current function as signal trampoline.
+
+7.18 `.cfi_window_save'
+=======================
+
+SPARC register window has been saved.
+
+7.19 `.cfi_escape' EXPRESSION[, ...]
+====================================
+
+Allows the user to add arbitrary bytes to the unwind info.  One might
+use this to add OS-specific CFI opcodes, or generic CFI opcodes that
+GAS does not yet support.
+
+
+File: as.info,  Node: LNS directives,  Next: Long,  Prev: Ln,  Up: Pseudo Ops
+
+7.20 `.file FILENO FILENAME'
+============================
+
+When emitting dwarf2 line number information `.file' assigns filenames
+to the `.debug_line' file name table.  The FILENO operand should be a
+unique positive integer to use as the index of the entry in the table.
+The FILENAME operand is a C string literal.
+
+   The detail of filename indicies is exposed to the user because the
+filename table is shared with the `.debug_info' section of the dwarf2
+debugging information, and thus the user must know the exact indicies
+that table entries will have.
+
+7.21 `.loc FILENO LINENO [COLUMN] [OPTIONS]'
+============================================
+
+The `.loc' directive will add row to the `.debug_line' line number
+matrix corresponding to the immediately following assembly instruction.
+The FILENO, LINENO, and optional COLUMN arguments will be applied to
+the `.debug_line' state machine before the row is added.
+
+   The OPTIONS are a sequence of the following tokens in any order:
+
+`basic_block'
+     This option will set the `basic_block' register in the
+     `.debug_line' state machine to `true'.
+
+`prologue_end'
+     This option will set the `prologue_end' register in the
+     `.debug_line' state machine to `true'.
+
+`epilogue_begin'
+     This option will set the `epilogue_begin' register in the
+     `.debug_line' state machine to `true'.
+
+`is_stmt VALUE'
+     This option will set the `is_stmt' register in the `.debug_line'
+     state machine to `value', which must be either 0 or 1.
+
+`isa VALUE'
+     This directive will set the `isa' register in the `.debug_line'
+     state machine to VALUE, which must be an unsigned integer.
+
+
+7.22 `.loc_mark_blocks ENABLE'
+==============================
+
+The `.loc_mark_blocks' directive makes the assembler emit an entry to
+the `.debug_line' line number matrix with the `basic_block' register in
+the state machine set whenever a code label is seen.  The ENABLE
+argument should be either 1 or 0, to enable or disable this function
+respectively.
+
+
+File: as.info,  Node: Data,  Next: Def,  Prev: CFI directives,  Up: Pseudo Ops
+
+7.23 `.data SUBSECTION'
+=======================
+
+`.data' tells `as' to assemble the following statements onto the end of
+the data subsection numbered SUBSECTION (which is an absolute
+expression).  If SUBSECTION is omitted, it defaults to zero.
+
+
+File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
+
+7.24 `.def NAME'
+================
+
+Begin defining debugging information for a symbol NAME; the definition
+extends until the `.endef' directive is encountered.
+
+
+File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
+
+7.25 `.desc SYMBOL, ABS-EXPRESSION'
+===================================
+
+This directive sets the descriptor of the symbol (*note Symbol
+Attributes::) to the low 16 bits of an absolute expression.
+
+   The `.desc' directive is not available when `as' is configured for
+COFF output; it is only for `a.out' or `b.out' object format.  For the
+sake of compatibility, `as' accepts it, but produces no output, when
+configured for COFF.
+
+
+File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
+
+7.26 `.dim'
+===========
+
+This directive is generated by compilers to include auxiliary debugging
+information in the symbol table.  It is only permitted inside
+`.def'/`.endef' pairs.
+
+
+File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
+
+7.27 `.double FLONUMS'
+======================
+
+`.double' expects zero or more flonums, separated by commas.  It
+assembles floating point numbers.  The exact kind of floating point
+numbers emitted depends on how `as' is configured.  *Note Machine
+Dependencies::.
+
+
+File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
+
+7.28 `.eject'
+=============
+
+Force a page break at this point, when generating assembly listings.
+
+
+File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
+
+7.29 `.else'
+============
+
+`.else' is part of the `as' support for conditional assembly; *note
+`.if': If.  It marks the beginning of a section of code to be assembled
+if the condition for the preceding `.if' was false.
+
+
+File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
+
+7.30 `.elseif'
+==============
+
+`.elseif' is part of the `as' support for conditional assembly; *note
+`.if': If.  It is shorthand for beginning a new `.if' block that would
+otherwise fill the entire `.else' section.
+
+
+File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
+
+7.31 `.end'
+===========
+
+`.end' marks the end of the assembly file.  `as' does not process
+anything in the file past the `.end' directive.
+
+
+File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
+
+7.32 `.endef'
+=============
+
+This directive flags the end of a symbol definition begun with `.def'.
+
+
+File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
+
+7.33 `.endfunc'
+===============
+
+`.endfunc' marks the end of a function specified with `.func'.
+
+
+File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
+
+7.34 `.endif'
+=============
+
+`.endif' is part of the `as' support for conditional assembly; it marks
+the end of a block of code that is only assembled conditionally.  *Note
+`.if': If.
+
+
+File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
+
+7.35 `.equ SYMBOL, EXPRESSION'
+==============================
+
+This directive sets the value of SYMBOL to EXPRESSION.  It is
+synonymous with `.set'; *note `.set': Set.
+
+   The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
+
+   The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'.  On the
+Z80 it is an eror if SYMBOL is already defined, but the symbol is not
+protected from later redefinition, compare *Note Equiv::.
+
+
+File: as.info,  Node: Equiv,  Next: Eqv,  Prev: Equ,  Up: Pseudo Ops
+
+7.36 `.equiv SYMBOL, EXPRESSION'
+================================
+
+The `.equiv' directive is like `.equ' and `.set', except that the
+assembler will signal an error if SYMBOL is already defined.  Note a
+symbol which has been referenced but not actually defined is considered
+to be undefined.
+
+   Except for the contents of the error message, this is roughly
+equivalent to
+     .ifdef SYM
+     .err
+     .endif
+     .equ SYM,VAL
+   plus it protects the symbol from later redefinition.
+
+
+File: as.info,  Node: Eqv,  Next: Err,  Prev: Equiv,  Up: Pseudo Ops
+
+7.37 `.eqv SYMBOL, EXPRESSION'
+==============================
+
+The `.eqv' directive is like `.equiv', but no attempt is made to
+evaluate the expression or any part of it immediately.  Instead each
+time the resulting symbol is used in an expression, a snapshot of its
+current value is taken.
+
+
+File: as.info,  Node: Err,  Next: Error,  Prev: Eqv,  Up: Pseudo Ops
+
+7.38 `.err'
+===========
+
+If `as' assembles a `.err' directive, it will print an error message
+and, unless the `-Z' option was used, it will not generate an object
+file.  This can be used to signal an error in conditionally compiled
+code.
+
+
+File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
+
+7.39 `.error "STRING"'
+======================
+
+Similarly to `.err', this directive emits an error, but you can specify
+a string that will be emitted as the error message.  If you don't
+specify the message, it defaults to `".error directive invoked in
+source file"'.  *Note Error and Warning Messages: Errors.
+
+      .error "This code has not been assembled and tested."
+
+
+File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
+
+7.40 `.exitm'
+=============
+
+Exit early from the current macro definition.  *Note Macro::.
+
+
+File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
+
+7.41 `.extern'
+==============
+
+`.extern' is accepted in the source program--for compatibility with
+other assemblers--but it is ignored.  `as' treats all undefined symbols
+as external.
+
+
+File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
+
+7.42 `.fail EXPRESSION'
+=======================
+
+Generates an error or a warning.  If the value of the EXPRESSION is 500
+or more, `as' will print a warning message.  If the value is less than
+500, `as' will print an error message.  The message will include the
+value of EXPRESSION.  This can occasionally be useful inside complex
+nested macros or conditional assembly.
+
+
+File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
+
+7.43 `.file STRING'
+===================
+
+`.file' tells `as' that we are about to start a new logical file.
+STRING is the new file name.  In general, the filename is recognized
+whether or not it is surrounded by quotes `"'; but if you wish to
+specify an empty file name, you must give the quotes-`""'.  This
+statement may go away in future: it is only recognized to be compatible
+with old `as' programs.
+
+
+File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
+
+7.44 `.fill REPEAT , SIZE , VALUE'
+==================================
+
+REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
+copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
+more, but if it is more than 8, then it is deemed to have the value 8,
+compatible with other people's assemblers.  The contents of each REPEAT
+bytes is taken from an 8-byte number.  The highest order 4 bytes are
+zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
+an integer on the computer `as' is assembling for.  Each SIZE bytes in
+a repetition is taken from the lowest order SIZE bytes of this number.
+Again, this bizarre behavior is compatible with other people's
+assemblers.
+
+   SIZE and VALUE are optional.  If the second comma and VALUE are
+absent, VALUE is assumed zero.  If the first comma and following tokens
+are absent, SIZE is assumed to be 1.
+
+
+File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
+
+7.45 `.float FLONUMS'
+=====================
+
+This directive assembles zero or more flonums, separated by commas.  It
+has the same effect as `.single'.  The exact kind of floating point
+numbers emitted depends on how `as' is configured.  *Note Machine
+Dependencies::.
+
+
+File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
+
+7.46 `.func NAME[,LABEL]'
+=========================
+
+`.func' emits debugging information to denote function NAME, and is
+ignored unless the file is assembled with debugging enabled.  Only
+`--gstabs[+]' is currently supported.  LABEL is the entry point of the
+function and if omitted NAME prepended with the `leading char' is used.
+`leading char' is usually `_' or nothing, depending on the target.  All
+functions are currently defined to have `void' return type.  The
+function must be terminated with `.endfunc'.
+
+
+File: as.info,  Node: Global,  Next: Hidden,  Prev: Func,  Up: Pseudo Ops
+
+7.47 `.global SYMBOL', `.globl SYMBOL'
+======================================
+
+`.global' makes the symbol visible to `ld'.  If you define SYMBOL in
+your partial program, its value is made available to other partial
+programs that are linked with it.  Otherwise, SYMBOL takes its
+attributes from a symbol of the same name from another file linked into
+the same program.
+
+   Both spellings (`.globl' and `.global') are accepted, for
+compatibility with other assemblers.
+
+   On the HPPA, `.global' is not always enough to make it accessible to
+other partial programs.  You may need the HPPA-only `.EXPORT' directive
+as well.  *Note HPPA Assembler Directives: HPPA Directives.
+
+
+File: as.info,  Node: Hidden,  Next: hword,  Prev: Global,  Up: Pseudo Ops
+
+7.48 `.hidden NAMES'
+====================
+
+This is one of the ELF visibility directives.  The other two are
+`.internal' (*note `.internal': Internal.) and `.protected' (*note
+`.protected': Protected.).
+
+   This directive overrides the named symbols default visibility (which
+is set by their binding: local, global or weak).  The directive sets
+the visibility to `hidden' which means that the symbols are not visible
+to other components.  Such symbols are always considered to be
+`protected' as well.
+
+
+File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
+
+7.49 `.hword EXPRESSIONS'
+=========================
+
+This expects zero or more EXPRESSIONS, and emits a 16 bit number for
+each.
+
+   This directive is a synonym for `.short'; depending on the target
+architecture, it may also be a synonym for `.word'.
+
+
+File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
+
+7.50 `.ident'
+=============
+
+This directive is used by some assemblers to place tags in object
+files.  The behavior of this directive varies depending on the target.
+When using the a.out object file format, `as' simply accepts the
+directive for source-file compatibility with existing assemblers, but
+does not emit anything for it.  When using COFF, comments are emitted
+to the `.comment' or `.rdata' section, depending on the target.  When
+using ELF, comments are emitted to the `.comment' section.
+
+
+File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
+
+7.51 `.if ABSOLUTE EXPRESSION'
+==============================
+
+`.if' marks the beginning of a section of code which is only considered
+part of the source program being assembled if the argument (which must
+be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
+section of code must be marked by `.endif' (*note `.endif': Endif.);
+optionally, you may include code for the alternative condition, flagged
+by `.else' (*note `.else': Else.).  If you have several conditions to
+check, `.elseif' may be used to avoid nesting blocks if/else within
+each subsequent `.else' block.
+
+   The following variants of `.if' are also supported:
+`.ifdef SYMBOL'
+     Assembles the following section of code if the specified SYMBOL
+     has been defined.  Note a symbol which has been referenced but not
+     yet defined is considered to be undefined.
+
+`.ifb TEXT'
+     Assembles the following section of code if the operand is blank
+     (empty).
+
+`.ifc STRING1,STRING2'
+     Assembles the following section of code if the two strings are the
+     same.  The strings may be optionally quoted with single quotes.
+     If they are not quoted, the first string stops at the first comma,
+     and the second string stops at the end of the line.  Strings which
+     contain whitespace should be quoted.  The string comparison is
+     case sensitive.
+
+`.ifeq ABSOLUTE EXPRESSION'
+     Assembles the following section of code if the argument is zero.
+
+`.ifeqs STRING1,STRING2'
+     Another form of `.ifc'.  The strings must be quoted using double
+     quotes.
+
+`.ifge ABSOLUTE EXPRESSION'
+     Assembles the following section of code if the argument is greater
+     than or equal to zero.
+
+`.ifgt ABSOLUTE EXPRESSION'
+     Assembles the following section of code if the argument is greater
+     than zero.
+
+`.ifle ABSOLUTE EXPRESSION'
+     Assembles the following section of code if the argument is less
+     than or equal to zero.
+
+`.iflt ABSOLUTE EXPRESSION'
+     Assembles the following section of code if the argument is less
+     than zero.
+
+`.ifnb TEXT'
+     Like `.ifb', but the sense of the test is reversed: this assembles
+     the following section of code if the operand is non-blank
+     (non-empty).
+
+`.ifnc STRING1,STRING2.'
+     Like `.ifc', but the sense of the test is reversed: this assembles
+     the following section of code if the two strings are not the same.
+
+`.ifndef SYMBOL'
+`.ifnotdef SYMBOL'
+     Assembles the following section of code if the specified SYMBOL
+     has not been defined.  Both spelling variants are equivalent.
+     Note a symbol which has been referenced but not yet defined is
+     considered to be undefined.
+
+`.ifne ABSOLUTE EXPRESSION'
+     Assembles the following section of code if the argument is not
+     equal to zero (in other words, this is equivalent to `.if').
+
+`.ifnes STRING1,STRING2'
+     Like `.ifeqs', but the sense of the test is reversed: this
+     assembles the following section of code if the two strings are not
+     the same.
+
+
+File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
+
+7.52 `.incbin "FILE"[,SKIP[,COUNT]]'
+====================================
+
+The `incbin' directive includes FILE verbatim at the current location.
+You can control the search paths used with the `-I' command-line option
+(*note Command-Line Options: Invoking.).  Quotation marks are required
+around FILE.
+
+   The SKIP argument skips a number of bytes from the start of the
+FILE.  The COUNT argument indicates the maximum number of bytes to
+read.  Note that the data is not aligned in any way, so it is the user's
+responsibility to make sure that proper alignment is provided both
+before and after the `incbin' directive.
+
+
+File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
+
+7.53 `.include "FILE"'
+======================
+
+This directive provides a way to include supporting files at specified
+points in your source program.  The code from FILE is assembled as if
+it followed the point of the `.include'; when the end of the included
+file is reached, assembly of the original file continues.  You can
+control the search paths used with the `-I' command-line option (*note
+Command-Line Options: Invoking.).  Quotation marks are required around
+FILE.
+
+
+File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
+
+7.54 `.int EXPRESSIONS'
+=======================
+
+Expect zero or more EXPRESSIONS, of any section, separated by commas.
+For each expression, emit a number that, at run time, is the value of
+that expression.  The byte order and bit size of the number depends on
+what kind of target the assembly is for.
+
+
+File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
+
+7.55 `.internal NAMES'
+======================
+
+This is one of the ELF visibility directives.  The other two are
+`.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
+`.protected': Protected.).
+
+   This directive overrides the named symbols default visibility (which
+is set by their binding: local, global or weak).  The directive sets
+the visibility to `internal' which means that the symbols are
+considered to be `hidden' (i.e., not visible to other components), and
+that some extra, processor specific processing must also be performed
+upon the  symbols as well.
+
+
+File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
+
+7.56 `.irp SYMBOL,VALUES'...
+============================
+
+Evaluate a sequence of statements assigning different values to SYMBOL.
+The sequence of statements starts at the `.irp' directive, and is
+terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
+VALUE, and the sequence of statements is assembled.  If no VALUE is
+listed, the sequence of statements is assembled once, with SYMBOL set
+to the null string.  To refer to SYMBOL within the sequence of
+statements, use \SYMBOL.
+
+   For example, assembling
+
+             .irp    param,1,2,3
+             move    d\param,sp at -
+             .endr
+
+   is equivalent to assembling
+
+             move    d1,sp at -
+             move    d2,sp at -
+             move    d3,sp at -
+
+   For some caveats with the spelling of SYMBOL, see also the discussion
+at *Note Macro::.
+
+
+File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
+
+7.57 `.irpc SYMBOL,VALUES'...
+=============================
+
+Evaluate a sequence of statements assigning different values to SYMBOL.
+The sequence of statements starts at the `.irpc' directive, and is
+terminated by an `.endr' directive.  For each character in VALUE,
+SYMBOL is set to the character, and the sequence of statements is
+assembled.  If no VALUE is listed, the sequence of statements is
+assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
+within the sequence of statements, use \SYMBOL.
+
+   For example, assembling
+
+             .irpc    param,123
+             move    d\param,sp at -
+             .endr
+
+   is equivalent to assembling
+
+             move    d1,sp at -
+             move    d2,sp at -
+             move    d3,sp at -
+
+   For some caveats with the spelling of SYMBOL, see also the discussion
+at *Note Macro::.
+
+
+File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
+
+7.58 `.lcomm SYMBOL , LENGTH'
+=============================
+
+Reserve LENGTH (an absolute expression) bytes for a local common
+denoted by SYMBOL.  The section and value of SYMBOL are those of the
+new local common.  The addresses are allocated in the bss section, so
+that at run-time the bytes start off zeroed.  SYMBOL is not declared
+global (*note `.global': Global.), so is normally not visible to `ld'.
+
+   Some targets permit a third argument to be used with `.lcomm'.  This
+argument specifies the desired alignment of the symbol in the bss
+section.
+
+   The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
+`SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
+
+
+File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
+
+7.59 `.lflags'
+==============
+
+`as' accepts this directive, for compatibility with other assemblers,
+but ignores it.
+
+
+File: as.info,  Node: Line,  Next: Linkonce,  Prev: Lflags,  Up: Pseudo Ops
+
+7.60 `.line LINE-NUMBER'
+========================
+
+   Change the logical line number.  LINE-NUMBER must be an absolute
+expression.  The next line has that logical line number.  Therefore any
+other statements on the current line (after a statement separator
+character) are reported as on logical line number LINE-NUMBER - 1.  One
+day `as' will no longer support this directive: it is recognized only
+for compatibility with existing assembler programs.
+
+   Even though this is a directive associated with the `a.out' or
+`b.out' object-code formats, `as' still recognizes it when producing
+COFF output, and treats `.line' as though it were the COFF `.ln' _if_
+it is found outside a `.def'/`.endef' pair.
+
+   Inside a `.def', `.line' is, instead, one of the directives used by
+compilers to generate auxiliary symbol information for debugging.
+
+
+File: as.info,  Node: Linkonce,  Next: List,  Prev: Line,  Up: Pseudo Ops
+
+7.61 `.linkonce [TYPE]'
+=======================
+
+Mark the current section so that the linker only includes a single copy
+of it.  This may be used to include the same section in several
+different object files, but ensure that the linker will only include it
+once in the final output file.  The `.linkonce' pseudo-op must be used
+for each instance of the section.  Duplicate sections are detected
+based on the section name, so it should be unique.
+
+   This directive is only supported by a few object file formats; as of
+this writing, the only object file format which supports it is the
+Portable Executable format used on Windows NT.
+
+   The TYPE argument is optional.  If specified, it must be one of the
+following strings.  For example:
+     .linkonce same_size
+   Not all types may be supported on all object file formats.
+
+`discard'
+     Silently discard duplicate sections.  This is the default.
+
+`one_only'
+     Warn if there are duplicate sections, but still keep only one copy.
+
+`same_size'
+     Warn if any of the duplicates have different sizes.
+
+`same_contents'
+     Warn if any of the duplicates do not have exactly the same
+     contents.
+
+
+File: as.info,  Node: Ln,  Next: LNS directives,  Prev: List,  Up: Pseudo Ops
+
+7.62 `.ln LINE-NUMBER'
+======================
+
+`.ln' is a synonym for `.line'.
+
+
+File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
+
+7.63 `.mri VAL'
+===============
+
+If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
+this tells `as' to exit MRI mode.  This change affects code assembled
+until the next `.mri' directive, or until the end of the file.  *Note
+MRI mode: M.
+
+
+File: as.info,  Node: List,  Next: Ln,  Prev: Linkonce,  Up: Pseudo Ops
+
+7.64 `.list'
+============
+
+Control (in conjunction with the `.nolist' directive) whether or not
+assembly listings are generated.  These two directives maintain an
+internal counter (which is zero initially).   `.list' increments the
+counter, and `.nolist' decrements it.  Assembly listings are generated
+whenever the counter is greater than zero.
+
+   By default, listings are disabled.  When you enable them (with the
+`-a' command line option; *note Command-Line Options: Invoking.), the
+initial value of the listing counter is one.
+
+
+File: as.info,  Node: Long,  Next: Macro,  Prev: LNS directives,  Up: Pseudo Ops
+
+7.65 `.long EXPRESSIONS'
+========================
+
+`.long' is the same as `.int', *note `.int': Int.
+
+
+File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
+
+7.66 `.macro'
+=============
+
+The commands `.macro' and `.endm' allow you to define macros that
+generate assembly output.  For example, this definition specifies a
+macro `sum' that puts a sequence of numbers into memory:
+
+             .macro  sum from=0, to=5
+             .long   \from
+             .if     \to-\from
+             sum     "(\from+1)",\to
+             .endif
+             .endm
+
+With that definition, `SUM 0,5' is equivalent to this assembly input:
+
+             .long   0
+             .long   1
+             .long   2
+             .long   3
+             .long   4
+             .long   5
+
+`.macro MACNAME'
+`.macro MACNAME MACARGS ...'
+     Begin the definition of a macro called MACNAME.  If your macro
+     definition requires arguments, specify their names after the macro
+     name, separated by commas or spaces.  You can qualify the macro
+     argument to indicate whether all invocations must specify a
+     non-blank value (through `:`req''), or whether it takes all of the
+     remaining arguments (through `:`vararg'').  You can supply a
+     default value for any macro argument by following the name with
+     `=DEFLT'.  You cannot define two macros with the same MACNAME
+     unless it has been subject to the `.purgem' directive (*Note
+     Purgem::.) between the two definitions.  For example, these are
+     all valid `.macro' statements:
+
+    `.macro comm'
+          Begin the definition of a macro called `comm', which takes no
+          arguments.
+
+    `.macro plus1 p, p1'
+    `.macro plus1 p p1'
+          Either statement begins the definition of a macro called
+          `plus1', which takes two arguments; within the macro
+          definition, write `\p' or `\p1' to evaluate the arguments.
+
+    `.macro reserve_str p1=0 p2'
+          Begin the definition of a macro called `reserve_str', with two
+          arguments.  The first argument has a default value, but not
+          the second.  After the definition is complete, you can call
+          the macro either as `reserve_str A,B' (with `\p1' evaluating
+          to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
+          `\p1' evaluating as the default, in this case `0', and `\p2'
+          evaluating to B).
+
+`.macro m p1:req, p2=0, p3:vararg'
+     Begin the definition of a macro called `m', with at least three
+     arguments.  The first argument must always have a value specified,
+     but not the second, which instead has a default value. The third
+     formal will get assigned all remaining arguments specified at
+     invocation time.
+
+     When you call a macro, you can specify the argument values either
+     by position, or by keyword.  For example, `sum 9,17' is equivalent
+     to `sum to=17, from=9'.
+
+     Note that since each of the MACARGS can be an identifier exactly
+     as any other one permitted by the target architecture, there may be
+     occasional problems if the target hand-crafts special meanings to
+     certain characters when they occur in a special position.  For
+     example, if colon (`:') is generally permitted to be part of a
+     symbol name, but the architecture specific code special-cases it
+     when occuring as the final character of a symbol (to denote a
+     label), then the macro parameter replacement code will have no way
+     of knowing that and consider the whole construct (including the
+     colon) an identifier, and check only this identifier for being the
+     subject to parameter substitution.  In this example, besides the
+     potential of just separating identifier and colon by white space,
+     using alternate macro syntax (*Note Altmacro::.) and ampersand
+     (`&') as the character to separate literal text from macro
+     parameters (or macro parameters from one another) would provide a
+     way to achieve the same effect:
+
+          	.altmacro
+          	.macro label l
+          l&:
+          	.endm
+
+     This applies identically to the identifiers used in `.irp' (*Note
+     Irp::.)  and `.irpc' (*Note Irpc::.).
+
+`.endm'
+     Mark the end of a macro definition.
+
+`.exitm'
+     Exit early from the current macro definition.
+
+`\@'
+     `as' maintains a counter of how many macros it has executed in
+     this pseudo-variable; you can copy that number to your output with
+     `\@', but _only within a macro definition_.
+
+`LOCAL NAME [ , ... ]'
+     _Warning: `LOCAL' is only available if you select "alternate macro
+     syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
+     Altmacro.
+
+
+File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
+
+7.67 `.altmacro'
+================
+
+Enable alternate macro mode, enabling:
+
+`LOCAL NAME [ , ... ]'
+     One additional directive, `LOCAL', is available.  It is used to
+     generate a string replacement for each of the NAME arguments, and
+     replace any instances of NAME in each macro expansion.  The
+     replacement string is unique in the assembly, and different for
+     each separate macro expansion.  `LOCAL' allows you to write macros
+     that define symbols, without fear of conflict between separate
+     macro expansions.
+
+`String delimiters'
+     You can write strings delimited in these other ways besides
+     `"STRING"':
+
+    `'STRING''
+          You can delimit strings with single-quote charaters.
+
+    `<STRING>'
+          You can delimit strings with matching angle brackets.
+
+`single-character string escape'
+     To include any single character literally in a string (even if the
+     character would otherwise have some special meaning), you can
+     prefix the character with `!' (an exclamation mark).  For example,
+     you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
+     5.4!'.
+
+`Expression results as strings'
+     You can write `%EXPR' to evaluate the expression EXPR and use the
+     result as a string.
+
+
+File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
+
+7.68 `.noaltmacro'
+==================
+
+Disable alternate macro mode.  *Note Altmacro::
+
+
+File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
+
+7.69 `.nolist'
+==============
+
+Control (in conjunction with the `.list' directive) whether or not
+assembly listings are generated.  These two directives maintain an
+internal counter (which is zero initially).   `.list' increments the
+counter, and `.nolist' decrements it.  Assembly listings are generated
+whenever the counter is greater than zero.
+
+
+File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
+
+7.70 `.octa BIGNUMS'
+====================
+
+This directive expects zero or more bignums, separated by commas.  For
+each bignum, it emits a 16-byte integer.
+
+   The term "octa" comes from contexts in which a "word" is two bytes;
+hence _octa_-word for 16 bytes.
+
+
+File: as.info,  Node: Org,  Next: P2align,  Prev: Octa,  Up: Pseudo Ops
+
+7.71 `.org NEW-LC , FILL'
+=========================
+
+Advance the location counter of the current section to NEW-LC.  NEW-LC
+is either an absolute expression or an expression with the same section
+as the current subsection.  That is, you can't use `.org' to cross
+sections: if NEW-LC has the wrong section, the `.org' directive is
+ignored.  To be compatible with former assemblers, if the section of
+NEW-LC is absolute, `as' issues a warning, then pretends the section of
+NEW-LC is the same as the current subsection.
+
+   `.org' may only increase the location counter, or leave it
+unchanged; you cannot use `.org' to move the location counter backwards.
+
+   Because `as' tries to assemble programs in one pass, NEW-LC may not
+be undefined.  If you really detest this restriction we eagerly await a
+chance to share your improved assembler.
+
+   Beware that the origin is relative to the start of the section, not
+to the start of the subsection.  This is compatible with other people's
+assemblers.
+
+   When the location counter (of the current subsection) is advanced,
+the intervening bytes are filled with FILL which should be an absolute
+expression.  If the comma and FILL are omitted, FILL defaults to zero.
+
+
+File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
+
+7.72 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
+================================================
+
+Pad the location counter (in the current subsection) to a particular
+storage boundary.  The first expression (which must be absolute) is the
+number of low-order zero bits the location counter must have after
+advancement.  For example `.p2align 3' advances the location counter
+until it a multiple of 8.  If the location counter is already a
+multiple of 8, no change is needed.
+
+   The second expression (also absolute) gives the fill value to be
+stored in the padding bytes.  It (and the comma) may be omitted.  If it
+is omitted, the padding bytes are normally zero.  However, on some
+systems, if the section is marked as containing code and the fill value
+is omitted, the space is filled with no-op instructions.
+
+   The third expression is also absolute, and is also optional.  If it
+is present, it is the maximum number of bytes that should be skipped by
+this alignment directive.  If doing the alignment would require
+skipping more bytes than the specified maximum, then the alignment is
+not done at all.  You can omit the fill value (the second argument)
+entirely by simply using two commas after the required alignment; this
+can be useful if you want the alignment to be filled with no-op
+instructions when appropriate.
+
+   The `.p2alignw' and `.p2alignl' directives are variants of the
+`.p2align' directive.  The `.p2alignw' directive treats the fill
+pattern as a two byte word value.  The `.p2alignl' directives treats the
+fill pattern as a four byte longword value.  For example, `.p2alignw
+2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
+will be filled in with the value 0x368d (the exact placement of the
+bytes depends upon the endianness of the processor).  If it skips 1 or
+3 bytes, the fill value is undefined.
+
+
+File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
+
+7.73 `.previous'
+================
+
+This is one of the ELF section stack manipulation directives.  The
+others are `.section' (*note Section::), `.subsection' (*note
+SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
+(*note PopSection::).
+
+   This directive swaps the current section (and subsection) with most
+recently referenced section (and subsection) prior to this one.
+Multiple `.previous' directives in a row will flip between two sections
+(and their subsections).
+
+   In terms of the section stack, this directive swaps the current
+section with the top section on the section stack.
+
+
+File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
+
+7.74 `.popsection'
+==================
+
+This is one of the ELF section stack manipulation directives.  The
+others are `.section' (*note Section::), `.subsection' (*note
+SubSection::), `.pushsection' (*note PushSection::), and `.previous'
+(*note Previous::).
+
+   This directive replaces the current section (and subsection) with
+the top section (and subsection) on the section stack.  This section is
+popped off the stack.
+
+
+File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
+
+7.75 `.print STRING'
+====================
+
+`as' will print STRING on the standard output during assembly.  You
+must put STRING in double quotes.
+
+
+File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
+
+7.76 `.protected NAMES'
+=======================
+
+This is one of the ELF visibility directives.  The other two are
+`.hidden' (*note Hidden::) and `.internal' (*note Internal::).
+
+   This directive overrides the named symbols default visibility (which
+is set by their binding: local, global or weak).  The directive sets
+the visibility to `protected' which means that any references to the
+symbols from within the components that defines them must be resolved
+to the definition in that component, even if a definition in another
+component would normally preempt this.
+
+
+File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
+
+7.77 `.psize LINES , COLUMNS'
+=============================
+
+Use this directive to declare the number of lines--and, optionally, the
+number of columns--to use for each page, when generating listings.
+
+   If you do not use `.psize', listings use a default line-count of 60.
+You may omit the comma and COLUMNS specification; the default width is
+200 columns.
+
+   `as' generates formfeeds whenever the specified number of lines is
+exceeded (or whenever you explicitly request one, using `.eject').
+
+   If you specify LINES as `0', no formfeeds are generated save those
+explicitly specified with `.eject'.
+
+
+File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
+
+7.78 `.purgem NAME'
+===================
+
+Undefine the macro NAME, so that later uses of the string will not be
+expanded.  *Note Macro::.
+
+
+File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
+
+7.79 `.pushsection NAME , SUBSECTION'
+=====================================
+
+This is one of the ELF section stack manipulation directives.  The
+others are `.section' (*note Section::), `.subsection' (*note
+SubSection::), `.popsection' (*note PopSection::), and `.previous'
+(*note Previous::).
+
+   This directive pushes the current section (and subsection) onto the
+top of the section stack, and then replaces the current section and
+subsection with `name' and `subsection'.
+
+
+File: as.info,  Node: Quad,  Next: Rept,  Prev: PushSection,  Up: Pseudo Ops
+
+7.80 `.quad BIGNUMS'
+====================
+
+`.quad' expects zero or more bignums, separated by commas.  For each
+bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
+bytes, it prints a warning message; and just takes the lowest order 8
+bytes of the bignum.  
+
+   The term "quad" comes from contexts in which a "word" is two bytes;
+hence _quad_-word for 8 bytes.
+
+
+File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Quad,  Up: Pseudo Ops
+
+7.81 `.rept COUNT'
+==================
+
+Repeat the sequence of lines between the `.rept' directive and the next
+`.endr' directive COUNT times.
+
+   For example, assembling
+
+             .rept   3
+             .long   0
+             .endr
+
+   is equivalent to assembling
+
+             .long   0
+             .long   0
+             .long   0
+
+
+File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
+
+7.82 `.sbttl "SUBHEADING"'
+==========================
+
+Use SUBHEADING as the title (third line, immediately after the title
+line) when generating assembly listings.
+
+   This directive affects subsequent pages, as well as the current page
+if it appears within ten lines of the top of a page.
+
+
+File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
+
+7.83 `.scl CLASS'
+=================
+
+Set the storage-class value for a symbol.  This directive may only be
+used inside a `.def'/`.endef' pair.  Storage class may flag whether a
+symbol is static or external, or it may record further symbolic
+debugging information.
+
+
+File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
+
+7.84 `.section NAME'
+====================
+
+Use the `.section' directive to assemble the following code into a
+section named NAME.
+
+   This directive is only supported for targets that actually support
+arbitrarily named sections; on `a.out' targets, for example, it is not
+accepted, even with a standard `a.out' section name.
+
+COFF Version
+------------
+
+   For COFF targets, the `.section' directive is used in one of the
+following ways:
+
+     .section NAME[, "FLAGS"]
+     .section NAME[, SUBSEGMENT]
+
+   If the optional argument is quoted, it is taken as flags to use for
+the section.  Each flag is a single character.  The following flags are
+recognized:
+`b'
+     bss section (uninitialized data)
+
+`n'
+     section is not loaded
+
+`w'
+     writable section
+
+`d'
+     data section
+
+`r'
+     read-only section
+
+`x'
+     executable section
+
+`s'
+     shared section (meaningful for PE targets)
+
+`a'
+     ignored.  (For compatibility with the ELF version)
+
+   If no flags are specified, the default flags depend upon the section
+name.  If the section name is not recognized, the default will be for
+the section to be loaded and writable.  Note the `n' and `w' flags
+remove attributes from the section, rather than adding them, so if they
+are used on their own it will be as if no flags had been specified at
+all.
+
+   If the optional argument to the `.section' directive is not quoted,
+it is taken as a subsegment number (*note Sub-Sections::).
+
+ELF Version
+-----------
+
+   This is one of the ELF section stack manipulation directives.  The
+others are `.subsection' (*note SubSection::), `.pushsection' (*note
+PushSection::), `.popsection' (*note PopSection::), and `.previous'
+(*note Previous::).
+
+   For ELF targets, the `.section' directive is used like this:
+
+     .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
+
+   The optional FLAGS argument is a quoted string which may contain any
+combination of the following characters:
+`a'
+     section is allocatable
+
+`w'
+     section is writable
+
+`x'
+     section is executable
+
+`M'
+     section is mergeable
+
+`S'
+     section contains zero terminated strings
+
+`G'
+     section is a member of a section group
+
+`T'
+     section is used for thread-local-storage
+
+   The optional TYPE argument may contain one of the following
+constants:
+`@progbits'
+     section contains data
+
+`@nobits'
+     section does not contain data (i.e., section only occupies space)
+
+`@note'
+     section contains data which is used by things other than the
+     program
+
+`@init_array'
+     section contains an array of pointers to init functions
+
+`@fini_array'
+     section contains an array of pointers to finish functions
+
+`@preinit_array'
+     section contains an array of pointers to pre-init functions
+
+   Many targets only support the first three section types.
+
+   Note on targets where the `@' character is the start of a comment (eg
+ARM) then another character is used instead.  For example the ARM port
+uses the `%' character.
+
+   If FLAGS contains the `M' symbol then the TYPE argument must be
+specified as well as an extra argument - ENTSIZE - like this:
+
+     .section NAME , "FLAGS"M, @TYPE, ENTSIZE
+
+   Sections with the `M' flag but not `S' flag must contain fixed size
+constants, each ENTSIZE octets long. Sections with both `M' and `S'
+must contain zero terminated strings where each character is ENTSIZE
+bytes long. The linker may remove duplicates within sections with the
+same name, same entity size and same flags.  ENTSIZE must be an
+absolute expression.
+
+   If FLAGS contains the `G' symbol then the TYPE argument must be
+present along with an additional field like this:
+
+     .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
+
+   The GROUPNAME field specifies the name of the section group to which
+this particular section belongs.  The optional linkage field can
+contain:
+`comdat'
+     indicates that only one copy of this section should be retained
+
+`.gnu.linkonce'
+     an alias for comdat
+
+   Note - if both the M and G flags are present then the fields for the
+Merge flag should come first, like this:
+
+     .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
+
+   If no flags are specified, the default flags depend upon the section
+name.  If the section name is not recognized, the default will be for
+the section to have none of the above flags: it will not be allocated
+in memory, nor writable, nor executable.  The section will contain data.
+
+   For ELF targets, the assembler supports another type of `.section'
+directive for compatibility with the Solaris assembler:
+
+     .section "NAME"[, FLAGS...]
+
+   Note that the section name is quoted.  There may be a sequence of
+comma separated flags:
+`#alloc'
+     section is allocatable
+
+`#write'
+     section is writable
+
+`#execinstr'
+     section is executable
+
+`#tls'
+     section is used for thread local storage
+
+   This directive replaces the current section and subsection.  See the
+contents of the gas testsuite directory `gas/testsuite/gas/elf' for
+some examples of how this directive and the other section stack
+directives work.
+
+
+File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
+
+7.85 `.set SYMBOL, EXPRESSION'
+==============================
+
+Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
+type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
+remains flagged (*note Symbol Attributes::).
+
+   You may `.set' a symbol many times in the same assembly.
+
+   If you `.set' a global symbol, the value stored in the object file
+is the last value stored into it.
+
+   The syntax for `set' on the HPPA is `SYMBOL .set EXPRESSION'.
+
+   On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION'
+instead.
+
+
+File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
+
+7.86 `.short EXPRESSIONS'
+=========================
+
+`.short' is normally the same as `.word'.  *Note `.word': Word.
+
+   In some configurations, however, `.short' and `.word' generate
+numbers of different lengths; *note Machine Dependencies::.
+
+
+File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
+
+7.87 `.single FLONUMS'
+======================
+
+This directive assembles zero or more flonums, separated by commas.  It
+has the same effect as `.float'.  The exact kind of floating point
+numbers emitted depends on how `as' is configured.  *Note Machine
+Dependencies::.
+
+
+File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
+
+7.88 `.size'
+============
+
+This directive is used to set the size associated with a symbol.
+
+COFF Version
+------------
+
+   For COFF targets, the `.size' directive is only permitted inside
+`.def'/`.endef' pairs.  It is used like this:
+
+     .size EXPRESSION
+
+ELF Version
+-----------
+
+   For ELF targets, the `.size' directive is used like this:
+
+     .size NAME , EXPRESSION
+
+   This directive sets the size associated with a symbol NAME.  The
+size in bytes is computed from EXPRESSION which can make use of label
+arithmetic.  This directive is typically used to set the size of
+function symbols.
+
+
+File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
+
+7.89 `.sleb128 EXPRESSIONS'
+===========================
+
+SLEB128 stands for "signed little endian base 128."  This is a compact,
+variable length representation of numbers used by the DWARF symbolic
+debugging format.  *Note `.uleb128': Uleb128.
+
+
+File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
+
+7.90 `.skip SIZE , FILL'
+========================
+
+This directive emits SIZE bytes, each of value FILL.  Both SIZE and
+FILL are absolute expressions.  If the comma and FILL are omitted, FILL
+is assumed to be zero.  This is the same as `.space'.
+
+
+File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
+
+7.91 `.space SIZE , FILL'
+=========================
+
+This directive emits SIZE bytes, each of value FILL.  Both SIZE and
+FILL are absolute expressions.  If the comma and FILL are omitted, FILL
+is assumed to be zero.  This is the same as `.skip'.
+
+     _Warning:_ `.space' has a completely different meaning for HPPA
+     targets; use `.block' as a substitute.  See `HP9000 Series 800
+     Assembly Language Reference Manual' (HP 92432-90001) for the
+     meaning of the `.space' directive.  *Note HPPA Assembler
+     Directives: HPPA Directives, for a summary.
+
+
+File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
+
+7.92 `.stabd, .stabn, .stabs'
+=============================
+
+There are three directives that begin `.stab'.  All emit symbols (*note
+Symbols::), for use by symbolic debuggers.  The symbols are not entered
+in the `as' hash table: they cannot be referenced elsewhere in the
+source file.  Up to five fields are required:
+
+STRING
+     This is the symbol's name.  It may contain any character except
+     `\000', so is more general than ordinary symbol names.  Some
+     debuggers used to code arbitrarily complex structures into symbol
+     names using this field.
+
+TYPE
+     An absolute expression.  The symbol's type is set to the low 8
+     bits of this expression.  Any bit pattern is permitted, but `ld'
+     and debuggers choke on silly bit patterns.
+
+OTHER
+     An absolute expression.  The symbol's "other" attribute is set to
+     the low 8 bits of this expression.
+
+DESC
+     An absolute expression.  The symbol's descriptor is set to the low
+     16 bits of this expression.
+
+VALUE
+     An absolute expression which becomes the symbol's value.
+
+   If a warning is detected while reading a `.stabd', `.stabn', or
+`.stabs' statement, the symbol has probably already been created; you
+get a half-formed symbol in your object file.  This is compatible with
+earlier assemblers!
+
+`.stabd TYPE , OTHER , DESC'
+     The "name" of the symbol generated is not even an empty string.
+     It is a null pointer, for compatibility.  Older assemblers used a
+     null pointer so they didn't waste space in object files with empty
+     strings.
+
+     The symbol's value is set to the location counter, relocatably.
+     When your program is linked, the value of this symbol is the
+     address of the location counter when the `.stabd' was assembled.
+
+`.stabn TYPE , OTHER , DESC , VALUE'
+     The name of the symbol is set to the empty string `""'.
+
+`.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
+     All five fields are specified.
+
+
+File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
+
+7.93 `.string' "STR"
+====================
+
+Copy the characters in STR to the object file.  You may specify more
+than one string to copy, separated by commas.  Unless otherwise
+specified for a particular machine, the assembler marks the end of each
+string with a 0 byte.  You can use any of the escape sequences
+described in *Note Strings: Strings.
+
+
+File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
+
+7.94 `.struct EXPRESSION'
+=========================
+
+Switch to the absolute section, and set the section offset to
+EXPRESSION, which must be an absolute expression.  You might use this
+as follows:
+             .struct 0
+     field1:
+             .struct field1 + 4
+     field2:
+             .struct field2 + 4
+     field3:
+   This would define the symbol `field1' to have the value 0, the symbol
+`field2' to have the value 4, and the symbol `field3' to have the value
+8.  Assembly would be left in the absolute section, and you would need
+to use a `.section' directive of some sort to change to some other
+section before further assembly.
+
+
+File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
+
+7.95 `.subsection NAME'
+=======================
+
+This is one of the ELF section stack manipulation directives.  The
+others are `.section' (*note Section::), `.pushsection' (*note
+PushSection::), `.popsection' (*note PopSection::), and `.previous'
+(*note Previous::).
+
+   This directive replaces the current subsection with `name'.  The
+current section is not changed.  The replaced subsection is put onto
+the section stack in place of the then current top of stack subsection.
+
+
+File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
+
+7.96 `.symver'
+==============
+
+Use the `.symver' directive to bind symbols to specific version nodes
+within a source file.  This is only supported on ELF platforms, and is
+typically used when assembling files to be linked into a shared library.
+There are cases where it may make sense to use this in objects to be
+bound into an application itself so as to override a versioned symbol
+from a shared library.
+
+   For ELF targets, the `.symver' directive can be used like this:
+     .symver NAME, NAME2 at NODENAME
+   If the symbol NAME is defined within the file being assembled, the
+`.symver' directive effectively creates a symbol alias with the name
+NAME2 at NODENAME, and in fact the main reason that we just don't try and
+create a regular alias is that the @ character isn't permitted in
+symbol names.  The NAME2 part of the name is the actual name of the
+symbol by which it will be externally referenced.  The name NAME itself
+is merely a name of convenience that is used so that it is possible to
+have definitions for multiple versions of a function within a single
+source file, and so that the compiler can unambiguously know which
+version of a function is being mentioned.  The NODENAME portion of the
+alias should be the name of a node specified in the version script
+supplied to the linker when building a shared library.  If you are
+attempting to override a versioned symbol from a shared library, then
+NODENAME should correspond to the nodename of the symbol you are trying
+to override.
+
+   If the symbol NAME is not defined within the file being assembled,
+all references to NAME will be changed to NAME2 at NODENAME.  If no
+reference to NAME is made, NAME2 at NODENAME will be removed from the
+symbol table.
+
+   Another usage of the `.symver' directive is:
+     .symver NAME, NAME2@@NODENAME
+   In this case, the symbol NAME must exist and be defined within the
+file being assembled. It is similar to NAME2 at NODENAME. The difference
+is NAME2@@NODENAME will also be used to resolve references to NAME2 by
+the linker.
+
+   The third usage of the `.symver' directive is:
+     .symver NAME, NAME2@@@NODENAME
+   When NAME is not defined within the file being assembled, it is
+treated as NAME2 at NODENAME. When NAME is defined within the file being
+assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
+
+
+File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
+
+7.97 `.tag STRUCTNAME'
+======================
+
+This directive is generated by compilers to include auxiliary debugging
+information in the symbol table.  It is only permitted inside
+`.def'/`.endef' pairs.  Tags are used to link structure definitions in
+the symbol table with instances of those structures.
+
+
+File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
+
+7.98 `.text SUBSECTION'
+=======================
+
+Tells `as' to assemble the following statements onto the end of the
+text subsection numbered SUBSECTION, which is an absolute expression.
+If SUBSECTION is omitted, subsection number zero is used.
+
+
+File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
+
+7.99 `.title "HEADING"'
+=======================
+
+Use HEADING as the title (second line, immediately after the source
+file name and pagenumber) when generating assembly listings.
+
+   This directive affects subsequent pages, as well as the current page
+if it appears within ten lines of the top of a page.
+
+
+File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
+
+7.100 `.type'
+=============
+
+This directive is used to set the type of a symbol.
+
+COFF Version
+------------
+
+   For COFF targets, this directive is permitted only within
+`.def'/`.endef' pairs.  It is used like this:
+
+     .type INT
+
+   This records the integer INT as the type attribute of a symbol table
+entry.
+
+ELF Version
+-----------
+
+   For ELF targets, the `.type' directive is used like this:
+
+     .type NAME , TYPE DESCRIPTION
+
+   This sets the type of symbol NAME to be either a function symbol or
+an object symbol.  There are five different syntaxes supported for the
+TYPE DESCRIPTION field, in order to provide compatibility with various
+other assemblers.  The syntaxes supported are:
+
+       .type <name>,#function
+       .type <name>,#object
+
+       .type <name>, at function
+       .type <name>, at object
+
+       .type <name>,%function
+       .type <name>,%object
+
+       .type <name>,"function"
+       .type <name>,"object"
+
+       .type <name> STT_FUNCTION
+       .type <name> STT_OBJECT
+
+
+File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
+
+7.101 `.uleb128 EXPRESSIONS'
+============================
+
+ULEB128 stands for "unsigned little endian base 128."  This is a
+compact, variable length representation of numbers used by the DWARF
+symbolic debugging format.  *Note `.sleb128': Sleb128.
+
+
+File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
+
+7.102 `.val ADDR'
+=================
+
+This directive, permitted only within `.def'/`.endef' pairs, records
+the address ADDR as the value attribute of a symbol table entry.
+
+
+File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
+
+7.103 `.version "STRING"'
+=========================
+
+This directive creates a `.note' section and places into it an ELF
+formatted note of type NT_VERSION.  The note's name is set to `string'.
+
+
+File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
+
+7.104 `.vtable_entry TABLE, OFFSET'
+===================================
+
+This directive finds or creates a symbol `table' and creates a
+`VTABLE_ENTRY' relocation for it with an addend of `offset'.
+
+
+File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
+
+7.105 `.vtable_inherit CHILD, PARENT'
+=====================================
+
+This directive finds the symbol `child' and finds or creates the symbol
+`parent' and then creates a `VTABLE_INHERIT' relocation for the parent
+whose addend is the value of the child symbol.  As a special case the
+parent name of `0' is treated as refering the `*ABS*' section.
+
+
+File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
+
+7.106 `.warning "STRING"'
+=========================
+
+Similar to the directive `.error' (*note `.error "STRING"': Error.),
+but just emits a warning.
+
+
+File: as.info,  Node: Weak,  Next: Weakref,  Prev: Warning,  Up: Pseudo Ops
+
+7.107 `.weak NAMES'
+===================
+
+This directive sets the weak attribute on the comma separated list of
+symbol `names'.  If the symbols do not already exist, they will be
+created.
+
+   On COFF targets other than PE, weak symbols are a GNU extension.
+This directive sets the weak attribute on the comma separated list of
+symbol `names'.  If the symbols do not already exist, they will be
+created.
+
+   On the PE target, weak symbols are supported natively as weak
+aliases.  When a weak symbol is created that is not an alias, GAS
+creates an alternate symbol to hold the default value.
+
+
+File: as.info,  Node: Weakref,  Next: Word,  Prev: Weak,  Up: Pseudo Ops
+
+7.108 `.weakref ALIAS, TARGET'
+==============================
+
+This directive creates an alias to the target symbol that enables the
+symbol to be referenced with weak-symbol semantics, but without
+actually making it weak.  If direct references or definitions of the
+symbol are present, then the symbol will not be weak, but if all
+references to it are through weak references, the symbol will be marked
+as weak in the symbol table.
+
+   The effect is equivalent to moving all references to the alias to a
+separate assembly source file, renaming the alias to the symbol in it,
+declaring the symbol as weak there, and running a reloadable link to
+merge the object files resulting from the assembly of the new source
+file and the old source file that had the references to the alias
+removed.
+
+   The alias itself never makes to the symbol table, and is entirely
+handled within the assembler.
+
+
+File: as.info,  Node: Word,  Next: Deprecated,  Prev: Weakref,  Up: Pseudo Ops
+
+7.109 `.word EXPRESSIONS'
+=========================
+
+This directive expects zero or more EXPRESSIONS, of any section,
+separated by commas.
+
+   The size of the number emitted, and its byte order, depend on what
+target computer the assembly is for.
+
+     _Warning: Special Treatment to support Compilers_
+
+   Machines with a 32-bit address space, but that do less than 32-bit
+addressing, require the following special treatment.  If the machine of
+interest to you does 32-bit addressing (or doesn't require it; *note
+Machine Dependencies::), you can ignore this issue.
+
+   In order to assemble compiler output into something that works, `as'
+occasionally does strange things to `.word' directives.  Directives of
+the form `.word sym1-sym2' are often emitted by compilers as part of
+jump tables.  Therefore, when `as' assembles a directive of the form
+`.word sym1-sym2', and the difference between `sym1' and `sym2' does
+not fit in 16 bits, `as' creates a "secondary jump table", immediately
+before the next label.  This secondary jump table is preceded by a
+short-jump to the first byte after the secondary table.  This
+short-jump prevents the flow of control from accidentally falling into
+the new table.  Inside the table is a long-jump to `sym2'.  The
+original `.word' contains `sym1' minus the address of the long-jump to
+`sym2'.
+
+   If there were several occurrences of `.word sym1-sym2' before the
+secondary jump table, all of them are adjusted.  If there was a `.word
+sym3-sym4', that also did not fit in sixteen bits, a long-jump to
+`sym4' is included in the secondary jump table, and the `.word'
+directives are adjusted to contain `sym3' minus the address of the
+long-jump to `sym4'; and so on, for as many entries in the original
+jump table as necessary.
+
+
+File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
+
+7.110 Deprecated Directives
+===========================
+
+One day these directives won't work.  They are included for
+compatibility with older assemblers.
+.abort
+
+.line
+
+
+File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Pseudo Ops,  Up: Top
+
+8 Machine Dependent Features
+****************************
+
+The machine instruction sets are (almost by definition) different on
+each machine where `as' runs.  Floating point representations vary as
+well, and `as' often supports a few additional directives or
+command-line options for compatibility with other assemblers on a
+particular platform.  Finally, some versions of `as' support special
+pseudo-instructions for branch optimization.
+
+   This chapter discusses most of these differences, though it does not
+include details on any machine's instruction set.  For details on that
+subject, see the hardware manufacturer's manual.
+
+* Menu:
+
+
+* Alpha-Dependent::		Alpha Dependent Features
+
+* ARC-Dependent::               ARC Dependent Features
+
+* ARM-Dependent::               ARM Dependent Features
+
+* BFIN-Dependent::		BFIN Dependent Features
+
+* CRIS-Dependent::              CRIS Dependent Features
+
+* D10V-Dependent::              D10V Dependent Features
+
+* D30V-Dependent::              D30V Dependent Features
+
+* H8/300-Dependent::            Renesas H8/300 Dependent Features
+
+* HPPA-Dependent::              HPPA Dependent Features
+
+* ESA/390-Dependent::           IBM ESA/390 Dependent Features
+
+* i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
+
+* i860-Dependent::              Intel 80860 Dependent Features
+
+* i960-Dependent::              Intel 80960 Dependent Features
+
+* IA-64-Dependent::             Intel IA-64 Dependent Features
+
+* IP2K-Dependent::              IP2K Dependent Features
+
+* M32C-Dependent::              M32C Dependent Features
+
+* M32R-Dependent::              M32R Dependent Features
+
+* M68K-Dependent::              M680x0 Dependent Features
+
+* M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
+
+* MIPS-Dependent::              MIPS Dependent Features
+
+* MMIX-Dependent::              MMIX Dependent Features
+
+* MSP430-Dependent::		MSP430 Dependent Features
+
+* SH-Dependent::                Renesas / SuperH SH Dependent Features
+* SH64-Dependent::              SuperH SH64 Dependent Features
+
+* PDP-11-Dependent::            PDP-11 Dependent Features
+
+* PJ-Dependent::                picoJava Dependent Features
+
+* PPC-Dependent::               PowerPC Dependent Features
+
+* Sparc-Dependent::             SPARC Dependent Features
+
+* TIC54X-Dependent::            TI TMS320C54x Dependent Features
+
+* V850-Dependent::              V850 Dependent Features
+
+* Xtensa-Dependent::            Xtensa Dependent Features
+
+* Z80-Dependent::               Z80 Dependent Features
+
+* Z8000-Dependent::             Z8000 Dependent Features
+
+* Vax-Dependent::               VAX Dependent Features
+
+
+File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Up: Machine Dependencies
+
+8.1 Alpha Dependent Features
+============================
+
+* Menu:
+
+* Alpha Notes::                Notes
+* Alpha Options::              Options
+* Alpha Syntax::               Syntax
+* Alpha Floating Point::       Floating Point
+* Alpha Directives::           Alpha Machine Directives
+* Alpha Opcodes::              Opcodes
+
+
+File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
+
+8.1.1 Notes
+-----------
+
+The documentation here is primarily for the ELF object format.  `as'
+also supports the ECOFF and EVAX formats, but features specific to
+these formats are not yet documented.
+
+
+File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
+
+8.1.2 Options
+-------------
+
+`-mCPU'
+     This option specifies the target processor.  If an attempt is made
+     to assemble an instruction which will not execute on the target
+     processor, the assembler may either expand the instruction as a
+     macro or issue an error message.  This option is equivalent to the
+     `.arch' directive.
+
+     The following processor names are recognized: `21064', `21064a',
+     `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
+     `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
+     `ev67', `ev68'.  The special name `all' may be used to allow the
+     assembler to accept instructions valid for any Alpha processor.
+
+     In order to support existing practice in OSF/1 with respect to
+     `.arch', and existing practice within `MILO' (the Linux ARC
+     bootloader), the numbered processor names (e.g. 21064) enable the
+     processor-specific PALcode instructions, while the
+     "electro-vlasic" names (e.g. `ev4') do not.
+
+`-mdebug'
+`-no-mdebug'
+     Enables or disables the generation of `.mdebug' encapsulation for
+     stabs directives and procedure descriptors.  The default is to
+     automatically enable `.mdebug' when the first stabs directive is
+     seen.
+
+`-relax'
+     This option forces all relocations to be put into the object file,
+     instead of saving space and resolving some relocations at assembly
+     time.  Note that this option does not propagate all symbol
+     arithmetic into the object file, because not all symbol arithmetic
+     can be represented.  However, the option can still be useful in
+     specific applications.
+
+`-g'
+     This option is used when the compiler generates debug information.
+     When `gcc' is using `mips-tfile' to generate debug information
+     for ECOFF, local labels must be passed through to the object file.
+     Otherwise this option has no effect.
+
+`-GSIZE'
+     A local common symbol larger than SIZE is placed in `.bss', while
+     smaller symbols are placed in `.sbss'.
+
+`-F'
+`-32addr'
+     These options are ignored for backward compatibility.
+
+
+File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
+
+8.1.3 Syntax
+------------
+
+The assembler syntax closely follow the Alpha Reference Manual;
+assembler directives and general syntax closely follow the OSF/1 and
+OpenVMS syntax, with a few differences for ELF.
+
+* Menu:
+
+* Alpha-Chars::                Special Characters
+* Alpha-Regs::                 Register Names
+* Alpha-Relocs::               Relocations
+
+
+File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
+
+8.1.3.1 Special Characters
+..........................
+
+`#' is the line comment character.
+
+   `;' can be used instead of a newline to separate statements.
+
+
+File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
+
+8.1.3.2 Register Names
+......................
+
+The 32 integer registers are referred to as `$N' or `$rN'.  In
+addition, registers 15, 28, 29, and 30 may be referred to by the
+symbols `$fp', `$at', `$gp', and `$sp' respectively.
+
+   The 32 floating-point registers are referred to as `$fN'.
+
+
+File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
+
+8.1.3.3 Relocations
+...................
+
+Some of these relocations are available for ECOFF, but mostly only for
+ELF.  They are modeled after the relocation format introduced in
+Digital Unix 4.0, but there are additions.
+
+   The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
+relocation.  In some cases NUMBER is used to relate specific
+instructions.
+
+   The relocation is placed at the end of the instruction like so:
+
+     ldah  $0,a($29)    !gprelhigh
+     lda   $0,a($0)     !gprellow
+     ldq   $1,b($29)    !literal!100
+     ldl   $2,0($1)     !lituse_base!100
+
+`!literal'
+`!literal!N'
+     Used with an `ldq' instruction to load the address of a symbol
+     from the GOT.
+
+     A sequence number N is optional, and if present is used to pair
+     `lituse' relocations with this `literal' relocation.  The `lituse'
+     relocations are used by the linker to optimize the code based on
+     the final location of the symbol.
+
+     Note that these optimizations are dependent on the data flow of the
+     program.  Therefore, if _any_ `lituse' is paired with a `literal'
+     relocation, then _all_ uses of the register set by the `literal'
+     instruction must also be marked with `lituse' relocations.  This
+     is because the original `literal' instruction may be deleted or
+     transformed into another instruction.
+
+     Also note that there may be a one-to-many relationship between
+     `literal' and `lituse', but not a many-to-one.  That is, if there
+     are two code paths that load up the same address and feed the
+     value to a single use, then the use may not use a `lituse'
+     relocation.
+
+`!lituse_base!N'
+     Used with any memory format instruction (e.g. `ldl') to indicate
+     that the literal is used for an address load.  The offset field of
+     the instruction must be zero.  During relaxation, the code may be
+     altered to use a gp-relative load.
+
+`!lituse_jsr!N'
+     Used with a register branch format instruction (e.g. `jsr') to
+     indicate that the literal is used for a call.  During relaxation,
+     the code may be altered to use a direct branch (e.g. `bsr').
+
+`!lituse_jsrdirect!N'
+     Similar to `lituse_jsr', but also that this call cannot be vectored
+     through a PLT entry.  This is useful for functions with special
+     calling conventions which do not allow the normal call-clobbered
+     registers to be clobbered.
+
+`!lituse_bytoff!N'
+     Used with a byte mask instruction (e.g. `extbl') to indicate that
+     only the low 3 bits of the address are relevant.  During
+     relaxation, the code may be altered to use an immediate instead of
+     a register shift.
+
+`!lituse_addr!N'
+     Used with any other instruction to indicate that the original
+     address is in fact used, and the original `ldq' instruction may
+     not be altered or deleted.  This is useful in conjunction with
+     `lituse_jsr' to test whether a weak symbol is defined.
+
+          ldq  $27,foo($29)   !literal!1
+          beq  $27,is_undef   !lituse_addr!1
+          jsr  $26,($27),foo  !lituse_jsr!1
+
+`!lituse_tlsgd!N'
+     Used with a register branch format instruction to indicate that the
+     literal is the call to `__tls_get_addr' used to compute the
+     address of the thread-local storage variable whose descriptor was
+     loaded with `!tlsgd!N'.
+
+`!lituse_tlsldm!N'
+     Used with a register branch format instruction to indicate that the
+     literal is the call to `__tls_get_addr' used to compute the
+     address of the base of the thread-local storage block for the
+     current module.  The descriptor for the module must have been
+     loaded with `!tlsldm!N'.
+
+`!gpdisp!N'
+     Used with `ldah' and `lda' to load the GP from the current
+     address, a-la the `ldgp' macro.  The source register for the
+     `ldah' instruction must contain the address of the `ldah'
+     instruction.  There must be exactly one `lda' instruction paired
+     with the `ldah' instruction, though it may appear anywhere in the
+     instruction stream.  The immediate operands must be zero.
+
+          bsr  $26,foo
+          ldah $29,0($26)     !gpdisp!1
+          lda  $29,0($29)     !gpdisp!1
+
+`!gprelhigh'
+     Used with an `ldah' instruction to add the high 16 bits of a
+     32-bit displacement from the GP.
+
+`!gprellow'
+     Used with any memory format instruction to add the low 16 bits of a
+     32-bit displacement from the GP.
+
+`!gprel'
+     Used with any memory format instruction to add a 16-bit
+     displacement from the GP.
+
+`!samegp'
+     Used with any branch format instruction to skip the GP load at the
+     target address.  The referenced symbol must have the same GP as the
+     source object file, and it must be declared to either not use `$27'
+     or perform a standard GP load in the first two instructions via the
+     `.prologue' directive.
+
+`!tlsgd'
+`!tlsgd!N'
+     Used with an `lda' instruction to load the address of a TLS
+     descriptor for a symbol in the GOT.
+
+     The sequence number N is optional, and if present it used to pair
+     the descriptor load with both the `literal' loading the address of
+     the `__tls_get_addr' function and the `lituse_tlsgd' marking the
+     call to that function.
+
+     For proper relaxation, both the `tlsgd', `literal' and `lituse'
+     relocations must be in the same extended basic block.  That is,
+     the relocation with the lowest address must be executed first at
+     runtime.
+
+`!tlsldm'
+`!tlsldm!N'
+     Used with an `lda' instruction to load the address of a TLS
+     descriptor for the current module in the GOT.
+
+     Similar in other respects to `tlsgd'.
+
+`!gotdtprel'
+     Used with an `ldq' instruction to load the offset of the TLS
+     symbol within its module's thread-local storage block.  Also known
+     as the dynamic thread pointer offset or dtp-relative offset.
+
+`!dtprelhi'
+`!dtprello'
+`!dtprel'
+     Like `gprel' relocations except they compute dtp-relative offsets.
+
+`!gottprel'
+     Used with an `ldq' instruction to load the offset of the TLS
+     symbol from the thread pointer.  Also known as the tp-relative
+     offset.
+
+`!tprelhi'
+`!tprello'
+`!tprel'
+     Like `gprel' relocations except they compute tp-relative offsets.
+
+
+File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
+
+8.1.4 Floating Point
+--------------------
+
+The Alpha family uses both IEEE and VAX floating-point numbers.
+
+
+File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
+
+8.1.5 Alpha Assembler Directives
+--------------------------------
+
+`as' for the Alpha supports many additional directives for
+compatibility with the native assembler.  This section describes them
+only briefly.
+
+   These are the additional directives in `as' for the Alpha:
+
+`.arch CPU'
+     Specifies the target processor.  This is equivalent to the `-mCPU'
+     command-line option.  *Note Options: Alpha Options, for a list of
+     values for CPU.
+
+`.ent FUNCTION[, N]'
+     Mark the beginning of FUNCTION.  An optional number may follow for
+     compatibility with the OSF/1 assembler, but is ignored.  When
+     generating `.mdebug' information, this will create a procedure
+     descriptor for the function.  In ELF, it will mark the symbol as a
+     function a-la the generic `.type' directive.
+
+`.end FUNCTION'
+     Mark the end of FUNCTION.  In ELF, it will set the size of the
+     symbol a-la the generic `.size' directive.
+
+`.mask MASK, OFFSET'
+     Indicate which of the integer registers are saved in the current
+     function's stack frame.  MASK is interpreted a bit mask in which
+     bit N set indicates that register N is saved.  The registers are
+     saved in a block located OFFSET bytes from the "canonical frame
+     address" (CFA) which is the value of the stack pointer on entry to
+     the function.  The registers are saved sequentially, except that
+     the return address register (normally `$26') is saved first.
+
+     This and the other directives that describe the stack frame are
+     currently only used when generating `.mdebug' information.  They
+     may in the future be used to generate DWARF2 `.debug_frame' unwind
+     information for hand written assembly.
+
+`.fmask MASK, OFFSET'
+     Indicate which of the floating-point registers are saved in the
+     current stack frame.  The MASK and OFFSET parameters are
+     interpreted as with `.mask'.
+
+`.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
+     Describes the shape of the stack frame.  The frame pointer in use
+     is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
+     pointer is FRAMEOFFSET bytes below the CFA.  The return address is
+     initially located in RETREG until it is saved as indicated in
+     `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
+     parameter is accepted and ignored.  It is believed to indicate the
+     offset from the CFA to the saved argument registers.
+
+`.prologue N'
+     Indicate that the stack frame is set up and all registers have been
+     spilled.  The argument N indicates whether and how the function
+     uses the incoming "procedure vector" (the address of the called
+     function) in `$27'.  0 indicates that `$27' is not used; 1
+     indicates that the first two instructions of the function use `$27'
+     to perform a load of the GP register; 2 indicates that `$27' is
+     used in some non-standard way and so the linker cannot elide the
+     load of the procedure vector during relaxation.
+
+`.usepv FUNCTION, WHICH'
+     Used to indicate the use of the `$27' register, similar to
+     `.prologue', but without the other semantics of needing to be
+     inside an open `.ent'/`.end' block.
+
+     The WHICH argument should be either `no', indicating that `$27' is
+     not used, or `std', indicating that the first two instructions of
+     the function perform a GP load.
+
+     One might use this directive instead of `.prologue' if you are
+     also using dwarf2 CFI directives.
+
+`.gprel32 EXPRESSION'
+     Computes the difference between the address in EXPRESSION and the
+     GP for the current object file, and stores it in 4 bytes.  In
+     addition to being smaller than a full 8 byte address, this also
+     does not require a dynamic relocation when used in a shared
+     library.
+
+`.t_floating EXPRESSION'
+     Stores EXPRESSION as an IEEE double precision value.
+
+`.s_floating EXPRESSION'
+     Stores EXPRESSION as an IEEE single precision value.
+
+`.f_floating EXPRESSION'
+     Stores EXPRESSION as a VAX F format value.
+
+`.g_floating EXPRESSION'
+     Stores EXPRESSION as a VAX G format value.
+
+`.d_floating EXPRESSION'
+     Stores EXPRESSION as a VAX D format value.
+
+`.set FEATURE'
+     Enables or disables various assembler features.  Using the positive
+     name of the feature enables while using `noFEATURE' disables.
+
+    `at'
+          Indicates that macro expansions may clobber the "assembler
+          temporary" (`$at' or `$28') register.  Some macros may not be
+          expanded without this and will generate an error message if
+          `noat' is in effect.  When `at' is in effect, a warning will
+          be generated if `$at' is used by the programmer.
+
+    `macro'
+          Enables the expansion of macro instructions.  Note that
+          variants of real instructions, such as `br label' vs `br
+          $31,label' are considered alternate forms and not macros.
+
+    `move'
+    `reorder'
+    `volatile'
+          These control whether and how the assembler may re-order
+          instructions.  Accepted for compatibility with the OSF/1
+          assembler, but `as' does not do instruction scheduling, so
+          these features are ignored.
+
+   The following directives are recognized for compatibility with the
+OSF/1 assembler but are ignored.
+
+     .proc           .aproc
+     .reguse         .livereg
+     .option         .aent
+     .ugen           .eflag
+     .alias          .noalias
+
+
+File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
+
+8.1.6 Opcodes
+-------------
+
+For detailed information on the Alpha machine instruction set, see the
+Alpha Architecture Handbook
+(ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
+
+
+File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
+
+8.2 ARC Dependent Features
+==========================
+
+* Menu:
+
+* ARC Options::              Options
+* ARC Syntax::               Syntax
+* ARC Floating Point::       Floating Point
+* ARC Directives::           ARC Machine Directives
+* ARC Opcodes::              Opcodes
+
+
+File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
+
+8.2.1 Options
+-------------
+
+`-marc[5|6|7|8]'
+     This option selects the core processor variant.  Using `-marc' is
+     the same as `-marc6', which is also the default.
+
+    `arc5'
+          Base instruction set.
+
+    `arc6'
+          Jump-and-link (jl) instruction.  No requirement of an
+          instruction between setting flags and conditional jump.  For
+          example:
+
+                 mov.f r0,r1
+                 beq   foo
+
+    `arc7'
+          Break (brk) and sleep (sleep) instructions.
+
+    `arc8'
+          Software interrupt (swi) instruction.
+
+
+     Note: the `.option' directive can to be used to select a core
+     variant from within assembly code.
+
+`-EB'
+     This option specifies that the output generated by the assembler
+     should be marked as being encoded for a big-endian processor.
+
+`-EL'
+     This option specifies that the output generated by the assembler
+     should be marked as being encoded for a little-endian processor -
+     this is the default.
+
+
+
+File: as.info,  Node: ARC Syntax,  Next: ARC Floating Point,  Prev: ARC Options,  Up: ARC-Dependent
+
+8.2.2 Syntax
+------------
+
+* Menu:
+
+* ARC-Chars::                Special Characters
+* ARC-Regs::                 Register Names
+
+
+File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
+
+8.2.2.1 Special Characters
+..........................
+
+*TODO*
+
+
+File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
+
+8.2.2.2 Register Names
+......................
+
+*TODO*
+
+
+File: as.info,  Node: ARC Floating Point,  Next: ARC Directives,  Prev: ARC Syntax,  Up: ARC-Dependent
+
+8.2.3 Floating Point
+--------------------
+
+The ARC core does not currently have hardware floating point support.
+Software floating point support is provided by `GCC' and uses IEEE
+floating-point numbers.
+
+
+File: as.info,  Node: ARC Directives,  Next: ARC Opcodes,  Prev: ARC Floating Point,  Up: ARC-Dependent
+
+8.2.4 ARC Machine Directives
+----------------------------
+
+The ARC version of `as' supports the following additional machine
+directives:
+
+`.2byte EXPRESSIONS'
+     *TODO*
+
+`.3byte EXPRESSIONS'
+     *TODO*
+
+`.4byte EXPRESSIONS'
+     *TODO*
+
+`.extAuxRegister NAME,ADDRESS,MODE'
+     The ARCtangent A4 has extensible auxiliary register space.  The
+     auxiliary registers can be defined in the assembler source code by
+     using this directive.  The first parameter is the NAME of the new
+     auxiallry register.  The second parameter is the ADDRESS of the
+     register in the auxiliary register memory map for the variant of
+     the ARC.  The third parameter specifies the MODE in which the
+     register can be operated is and it can be one of:
+
+    `r          (readonly)'
+
+    `w          (write only)'
+
+    `r|w        (read or write)'
+
+     For example:
+
+            .extAuxRegister mulhi,0x12,w
+
+     This specifies an extension auxiliary register called _mulhi_
+     which is at address 0x12 in the memory space and which is only
+     writable.
+
+`.extCondCode SUFFIX,VALUE'
+     The condition codes on the ARCtangent A4 are extensible and can be
+     specified by means of this assembler directive.  They are specified
+     by the suffix and the value for the condition code.  They can be
+     used to specify extra condition codes with any values.  For
+     example:
+
+            .extCondCode is_busy,0x14
+
+             add.is_busy  r1,r2,r3
+             bis_busy     _main
+
+`.extCoreRegister NAME,REGNUM,MODE,SHORTCUT'
+     Specifies an extension core register NAME for the application.
+     This allows a register NAME with a valid REGNUM between 0 and 60,
+     with the following as valid values for MODE
+
+    `_r_   (readonly)'
+
+    `_w_   (write only)'
+
+    `_r|w_ (read or write)'
+
+     The other parameter gives a description of the register having a
+     SHORTCUT in the pipeline.  The valid values are:
+
+    `can_shortcut'
+
+    `cannot_shortcut'
+
+     For example:
+
+            .extCoreRegister mlo,57,r,can_shortcut
+
+     This defines an extension core register mlo with the value 57 which
+     can shortcut the pipeline.
+
+`.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS'
+     The ARCtangent A4 allows the user to specify extension
+     instructions.  The extension instructions are not macros.  The
+     assembler creates encodings for use of these instructions
+     according to the specification by the user.  The parameters are:
+
+    *NAME
+          Name of the extension instruction
+
+    *OPCODE
+          Opcode to be used. (Bits 27:31 in the encoding).  Valid values
+          0x10-0x1f or 0x03
+
+    *SUBOPCODE
+          Subopcode to be used.  Valid values are from 0x09-0x3f.
+          However the correct value also depends on SYNTAXCLASS
+
+    *SUFFIXCLASS
+          Determines the kinds of suffixes to be allowed.  Valid values
+          are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' which
+          indicates the absence or presence of conditional suffixes and
+          flag setting by the extension instruction.  It is also
+          possible to specify that an instruction sets the flags and is
+          conditional by using `SUFFIX_CODE' | `SUFFIX_FLAG'.
+
+    *SYNTAXCLASS
+          Determines the syntax class for the instruction.  It can have
+          the following values:
+
+         ``SYNTAX_2OP':'
+               2 Operand Instruction
+
+         ``SYNTAX_3OP':'
+               3 Operand Instruction
+
+          In addition there could be modifiers for the syntax class as
+          described below:
+
+               Syntax Class Modifiers are:
+
+             - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP,
+               specifying that the first operand of a three-operand
+               instruction must be an immediate (i.e. the result is
+               discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it
+               with SYNTAX_3OP as given in the example below.  This
+               could usually be used to set the flags using specific
+               instructions and not retain results.
+
+             - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it
+               specifies that there is an implied immediate destination
+               operand which does not appear in the syntax.  For
+               example, if the source code contains an instruction like:
+
+                    inst r1,r2
+
+               it really means that the first argument is an implied
+               immediate (that is, the result is discarded).  This is
+               the same as though the source code were: inst 0,r1,r2.
+               You use OP1_IMM_IMPLIED by bitwise ORing it with
+               SYNTAX_20P.
+
+
+     For example, defining 64-bit multiplier with immediate operands:
+
+          .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
+                          SYNTAX_3OP|OP1_MUST_BE_IMM
+
+     The above specifies an extension instruction called mp64 which has
+     3 operands, sets the flags, can be used with a condition code, for
+     which the first operand is an immediate.  (Equivalent to
+     discarding the result of the operation).
+
+           .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
+
+     This describes a 2 operand instruction with an implicit first
+     immediate operand.  The result of this operation would be
+     discarded.
+
+`.half EXPRESSIONS'
+     *TODO*
+
+`.long EXPRESSIONS'
+     *TODO*
+
+`.option ARC|ARC5|ARC6|ARC7|ARC8'
+     The `.option' directive must be followed by the desired core
+     version. Again `arc' is an alias for `arc6'.
+
+     Note: the `.option' directive overrides the command line option
+     `-marc'; a warning is emitted when the version is not consistent
+     between the two - even for the implicit default core version
+     (arc6).
+
+`.short EXPRESSIONS'
+     *TODO*
+
+`.word EXPRESSIONS'
+     *TODO*
+
+
+
+File: as.info,  Node: ARC Opcodes,  Prev: ARC Directives,  Up: ARC-Dependent
+
+8.2.5 Opcodes
+-------------
+
+For information on the ARC instruction set, see `ARC Programmers
+Reference Manual', ARC International (www.arc.com)
+
+
+File: as.info,  Node: ARM-Dependent,  Next: BFIN-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
+
+8.3 ARM Dependent Features
+==========================
+
+* Menu:
+
+* ARM Options::              Options
+* ARM Syntax::               Syntax
+* ARM Floating Point::       Floating Point
+* ARM Directives::           ARM Machine Directives
+* ARM Opcodes::              Opcodes
+* ARM Mapping Symbols::      Mapping Symbols
+
+
+File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
+
+8.3.1 Options
+-------------
+
+`-mcpu=PROCESSOR[+EXTENSION...]'
+     This option specifies the target processor.  The assembler will
+     issue an error message if an attempt is made to assemble an
+     instruction which will not execute on the target processor.  The
+     following processor names are recognized: `arm1', `arm2', `arm250',
+     `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
+     `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
+     `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
+     `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
+     `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
+     `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
+     `arm920t', `arm922t', `arm940t', `arm9tdmi', `arm9e', `arm926e',
+     `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s', `arm966e-r0',
+     `arm966e', `arm966e-s', `arm968e-s', `arm10t', `arm10tdmi',
+     `arm10e', `arm1020', `arm1020t', `arm1020e', `arm1022e',
+     `arm1026ej-s', `arm1136j-s', `arm1136jf-s', `arm1156t2-s',
+     `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s', `mpcore',
+     `mpcorenovfp', `cortex-a8', `cortex-r4', `cortex-m3', `ep9312'
+     (ARM920 with Cirrus Maverick coprocessor), `i80200' (Intel XScale
+     processor) `iwmmxt' (Intel(r) XScale processor with Wireless
+     MMX(tm) technology coprocessor) and `xscale'.  The special name
+     `all' may be used to allow the assembler to accept instructions
+     valid for any ARM processor.
+
+     In addition to the basic instruction set, the assembler can be
+     told to accept various extension mnemonics that extend the
+     processor using the co-processor instruction space.  For example,
+     `-mcpu=arm920+maverick' is equivalent to specifying
+     `-mcpu=ep9312'.  The following extensions are currently supported:
+     `+maverick' `+iwmmxt' and `+xscale'.
+
+`-march=ARCHITECTURE[+EXTENSION...]'
+     This option specifies the target architecture.  The assembler will
+     issue an error message if an attempt is made to assemble an
+     instruction which will not execute on the target architecture.
+     The following architecture names are recognized: `armv1', `armv2',
+     `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
+     `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
+     `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk',
+     `armv7', `armv7a', `armv7r', `armv7m', `iwmmxt' and `xscale'.  If
+     both `-mcpu' and `-march' are specified, the assembler will use
+     the setting for `-mcpu'.
+
+     The architecture option can be extended with the same instruction
+     set extension options as the `-mcpu' option.
+
+`-mfpu=FLOATING-POINT-FORMAT'
+     This option specifies the floating point format to assemble for.
+     The assembler will issue an error message if an attempt is made to
+     assemble an instruction which will not execute on the target
+     floating point unit.  The following format options are recognized:
+     `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
+     `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
+     `vfp9', `vfpxd', `arm1020t', `arm1020e', `arm1136jf-s' and
+     `maverick'.
+
+     In addition to determining which instructions are assembled, this
+     option also affects the way in which the `.double' assembler
+     directive behaves when assembling little-endian code.
+
+     The default is dependent on the processor selected.  For
+     Architecture 5 or later, the default is to assembler for VFP
+     instructions; for earlier architectures the default is to assemble
+     for FPA instructions.
+
+`-mthumb'
+     This option specifies that the assembler should start assembling
+     Thumb instructions; that is, it should behave as though the file
+     starts with a `.code 16' directive.
+
+`-mthumb-interwork'
+     This option specifies that the output generated by the assembler
+     should be marked as supporting interworking.
+
+`-mapcs `[26|32]''
+     This option specifies that the output generated by the assembler
+     should be marked as supporting the indicated version of the Arm
+     Procedure.  Calling Standard.
+
+`-matpcs'
+     This option specifies that the output generated by the assembler
+     should be marked as supporting the Arm/Thumb Procedure Calling
+     Standard.  If enabled this option will cause the assembler to
+     create an empty debugging section in the object file called
+     .arm.atpcs.  Debuggers can use this to determine the ABI being
+     used by.
+
+`-mapcs-float'
+     This indicates the floating point variant of the APCS should be
+     used.  In this variant floating point arguments are passed in FP
+     registers rather than integer registers.
+
+`-mapcs-reentrant'
+     This indicates that the reentrant variant of the APCS should be
+     used.  This variant supports position independent code.
+
+`-mfloat-abi=ABI'
+     This option specifies that the output generated by the assembler
+     should be marked as using specified floating point ABI.  The
+     following values are recognized: `soft', `softfp' and `hard'.
+
+`-meabi=VER'
+     This option specifies which EABI version the produced object files
+     should conform to.  The following values are recognised: `gnu', `4'
+     and `5'.
+
+`-EB'
+     This option specifies that the output generated by the assembler
+     should be marked as being encoded for a big-endian processor.
+
+`-EL'
+     This option specifies that the output generated by the assembler
+     should be marked as being encoded for a little-endian processor.
+
+`-k'
+     This option specifies that the output of the assembler should be
+     marked as position-independent code (PIC).
+
+
+
+File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
+
+8.3.2 Syntax
+------------
+
+* Menu:
+
+* ARM-Chars::                Special Characters
+* ARM-Regs::                 Register Names
+
+
+File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Up: ARM Syntax
+
+8.3.2.1 Special Characters
+..........................
+
+The presence of a `@' on a line indicates the start of a comment that
+extends to the end of the current line.  If a `#' appears as the first
+character of a line, the whole line is treated as a comment.
+
+   The `;' character can be used instead of a newline to separate
+statements.
+
+   Either `#' or `$' can be used to indicate immediate operands.
+
+   *TODO* Explain about /data modifier on symbols.
+
+
+File: as.info,  Node: ARM-Regs,  Prev: ARM-Chars,  Up: ARM Syntax
+
+8.3.2.2 Register Names
+......................
+
+*TODO* Explain about ARM register naming, and the predefined names.
+
+
+File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
+
+8.3.3 Floating Point
+--------------------
+
+The ARM family uses IEEE floating-point numbers.
+
+
+File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
+
+8.3.4 ARM Machine Directives
+----------------------------
+
+`.align EXPRESSION [, EXPRESSION]'
+     This is the generic .ALIGN directive.  For the ARM however if the
+     first argument is zero (ie no alignment is needed) the assembler
+     will behave as if the argument had been 2 (ie pad to the next four
+     byte boundary).  This is for compatibility with ARM's own
+     assembler.
+
+`NAME .req REGISTER NAME'
+     This creates an alias for REGISTER NAME called NAME.  For example:
+
+                  foo .req r0
+
+`.unreq ALIAS-NAME'
+     This undefines a register alias which was previously defined using
+     the `req' directive.  For example:
+
+                  foo .req r0
+                  .unreq foo
+
+     An error occurs if the name is undefined.  Note - this pseudo op
+     can be used to delete builtin in register name aliases (eg 'r0').
+     This should only be done if it is really necessary.
+
+`.code `[16|32]''
+     This directive selects the instruction set being generated. The
+     value 16 selects Thumb, with the value 32 selecting ARM.
+
+`.thumb'
+     This performs the same action as .CODE 16.
+
+`.arm'
+     This performs the same action as .CODE 32.
+
+`.force_thumb'
+     This directive forces the selection of Thumb instructions, even if
+     the target processor does not support those instructions
+
+`.thumb_func'
+     This directive specifies that the following symbol is the name of a
+     Thumb encoded function.  This information is necessary in order to
+     allow the assembler and linker to generate correct code for
+     interworking between Arm and Thumb instructions and should be used
+     even if interworking is not going to be performed.  The presence
+     of this directive also implies `.thumb'
+
+`.thumb_set'
+     This performs the equivalent of a `.set' directive in that it
+     creates a symbol which is an alias for another symbol (possibly
+     not yet defined).  This directive also has the added property in
+     that it marks the aliased symbol as being a thumb function entry
+     point, in the same way that the `.thumb_func' directive does.
+
+`.ltorg'
+     This directive causes the current contents of the literal pool to
+     be dumped into the current section (which is assumed to be the
+     .text section) at the current location (aligned to a word
+     boundary).  `GAS' maintains a separate literal pool for each
+     section and each sub-section.  The `.ltorg' directive will only
+     affect the literal pool of the current section and sub-section.
+     At the end of assembly all remaining, un-empty literal pools will
+     automatically be dumped.
+
+     Note - older versions of `GAS' would dump the current literal pool
+     any time a section change occurred.  This is no longer done, since
+     it prevents accurate control of the placement of literal pools.
+
+`.pool'
+     This is a synonym for .ltorg.
+
+`.unwind_fnstart'
+     Marks the start of a function with an unwind table entry.
+
+`.unwind_fnend'
+     Marks the end of a function with an unwind table entry.  The
+     unwind index table entry is created when this directive is
+     processed.
+
+     If no personality routine has been specified then standard
+     personality routine 0 or 1 will be used, depending on the number
+     of unwind opcodes required.
+
+`.cantunwind'
+     Prevents unwinding through the current function.  No personality
+     routine or exception table data is required or permitted.
+
+`.personality NAME'
+     Sets the personality routine for the current function to NAME.
+
+`.personalityindex INDEX'
+     Sets the personality routine for the current function to the EABI
+     standard routine number INDEX
+
+`.handlerdata'
+     Marks the end of the current function, and the start of the
+     exception table entry for that function.  Anything between this
+     directive and the `.fnend' directive will be added to the
+     exception table entry.
+
+     Must be preceded by a `.personality' or `.personalityindex'
+     directive.
+
+`.save REGLIST'
+     Generate unwinder annotations to restore the registers in REGLIST.
+     The format of REGLIST is the same as the corresponding
+     store-multiple instruction.
+
+     _core registers_
+            .save {r4, r5, r6, lr}
+            stmfd sp!, {r4, r5, r6, lr}
+     _FPA registers_
+            .save f4, 2
+            sfmfd f4, 2, [sp]!
+     _VFP registers_
+            .save {d8, d9, d10}
+            fstmdf sp!, {d8, d9, d10}
+     _iWMMXt registers_
+            .save {wr10, wr11}
+            wstrd wr11, [sp, #-8]!
+            wstrd wr10, [sp, #-8]!
+          or
+            .save wr11
+            wstrd wr11, [sp, #-8]!
+            .save wr10
+            wstrd wr10, [sp, #-8]!
+
+`.pad #COUNT'
+     Generate unwinder annotations for a stack adjustment of COUNT
+     bytes.  A positive value indicates the function prologue allocated
+     stack space by decrementing the stack pointer.
+
+`.movsp REG'
+     Tell the unwinder that REG contains the current stack pointer.
+
+`.setfp FPREG, SPREG [, #OFFSET]'
+     Make all unwinder annotations relaive to a frame pointer.  Without
+     this the unwinder will use offsets from the stack pointer.
+
+     The syntax of this directive is the same as the `sub' or `mov'
+     instruction used to set the frame pointer.  SPREG must be either
+     `sp' or mentioned in a previous `.movsp' directive.
+
+          .movsp ip
+          mov ip, sp
+          ...
+          .setfp fp, ip, #4
+          sub fp, ip, #4
+
+`.raw OFFSET, BYTE1, ...'
+     Insert one of more arbitary unwind opcode bytes, which are known
+     to adjust the stack pointer by OFFSET bytes.
+
+     For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
+     {r0}'
+
+`.cpu NAME'
+     Select the target processor.  Valid values for NAME are the same as
+     for the `-mcpu' commandline option.
+
+`.arch NAME'
+     Select the target architecture.  Valid values for NAME are the
+     same as for the `-march' commandline option.
+
+`.fpu NAME'
+     Select the floating point unit to assemble for.  Valid values for
+     NAME are the same as for the `-mfpu' commandline option.
+
+`.eabi_attribute TAG, VALUE'
+     Set the EABI object attribute number TAG to VALUE.  The value is
+     either a `number', `"string"', or `number, "string"' depending on
+     the tag.
+
+
+
+File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
+
+8.3.5 Opcodes
+-------------
+
+`as' implements all the standard ARM opcodes.  It also implements
+several pseudo opcodes, including several synthetic load instructions.
+
+`NOP'
+            nop
+
+     This pseudo op will always evaluate to a legal ARM instruction
+     that does nothing.  Currently it will evaluate to MOV r0, r0.
+
+`LDR'
+            ldr <register> , = <expression>
+
+     If expression evaluates to a numeric constant then a MOV or MVN
+     instruction will be used in place of the LDR instruction, if the
+     constant can be generated by either of these instructions.
+     Otherwise the constant will be placed into the nearest literal
+     pool (if it not already there) and a PC relative LDR instruction
+     will be generated.
+
+`ADR'
+            adr <register> <label>
+
+     This instruction will load the address of LABEL into the indicated
+     register.  The instruction will evaluate to a PC relative ADD or
+     SUB instruction depending upon where the label is located.  If the
+     label is out of range, or if it is not defined in the same file
+     (and section) as the ADR instruction, then an error will be
+     generated.  This instruction will not make use of the literal pool.
+
+`ADRL'
+            adrl <register> <label>
+
+     This instruction will load the address of LABEL into the indicated
+     register.  The instruction will evaluate to one or two PC relative
+     ADD or SUB instructions depending upon where the label is located.
+     If a second instruction is not needed a NOP instruction will be
+     generated in its place, so that this instruction is always 8 bytes
+     long.
+
+     If the label is out of range, or if it is not defined in the same
+     file (and section) as the ADRL instruction, then an error will be
+     generated.  This instruction will not make use of the literal pool.
+
+
+   For information on the ARM or Thumb instruction sets, see `ARM
+Software Development Toolkit Reference Manual', Advanced RISC Machines
+Ltd.
+
+
+File: as.info,  Node: ARM Mapping Symbols,  Prev: ARM Opcodes,  Up: ARM-Dependent
+
+8.3.6 Mapping Symbols
+---------------------
+
+The ARM ELF specification requires that special symbols be inserted
+into object files to mark certain features:
+
+`$a'
+     At the start of a region of code containing ARM instructions.
+
+`$t'
+     At the start of a region of code containing THUMB instructions.
+
+`$d'
+     At the start of a region of data.
+
+
+   The assembler will automatically insert these symbols for you - there
+is no need to code them yourself.  Support for tagging symbols ($b, $f,
+$p and $m) which is also mentioned in the current ARM ELF specification
+is not implemented.  This is because they have been dropped from the
+new EABI and so tools cannot rely upon their presence.
+
+
+File: as.info,  Node: BFIN-Dependent,  Next: CRIS-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
+
+8.4 Blackfin Dependent Features
+===============================
+
+* Menu:
+
+* BFIN Syntax::			BFIN Syntax
+* BFIN Directives::		BFIN Directives
+
+
+File: as.info,  Node: BFIN Syntax,  Next: BFIN Directives,  Up: BFIN-Dependent
+
+8.4.1 Syntax
+------------
+
+`Special Characters'
+     Assembler input is free format and may appear anywhere on the line.
+     One instruction may extend across multiple lines or more than one
+     instruction may appear on the same line.  White space (space, tab,
+     comments or newline) may appear anywhere between tokens.  A token
+     must not have embedded spaces.  Tokens include numbers, register
+     names, keywords, user identifiers, and also some multicharacter
+     special symbols like "+=", "/*" or "||".
+
+`Instruction Delimiting'
+     A semicolon must terminate every instruction.  Sometimes a complete
+     instruction will consist of more than one operation.  There are two
+     cases where this occurs.  The first is when two general operations
+     are combined.  Normally a comma separates the different parts, as
+     in
+
+          a0= r3.h * r2.l, a1 = r3.l * r2.h ;
+
+     The second case occurs when a general instruction is combined with
+     one or two memory references for joint issue.  The latter portions
+     are set off by a "||" token.
+
+          a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
+
+`Register Names'
+     The assembler treats register names and instruction keywords in a
+     case insensitive manner.  User identifiers are case sensitive.
+     Thus, R3.l, R3.L, r3.l and r3.L are all equivalent input to the
+     assembler.
+
+     Register names are reserved and may not be used as program
+     identifiers.
+
+     Some operations (such as "Move Register") require a register pair.
+     Register pairs are always data registers and are denoted using a
+     colon, eg., R3:2.  The larger number must be written firsts.  Note
+     that the hardware only supports odd-even pairs, eg., R7:6, R5:4,
+     R3:2, and R1:0.
+
+     Some instructions (such as -SP (Push Multiple)) require a group of
+     adjacent registers.  Adjacent registers are denoted in the syntax
+     by the range enclosed in parentheses and separated by a colon,
+     eg., (R7:3).  Again, the larger number appears first.
+
+     Portions of a particular register may be individually specified.
+     This is written with a dot (".") following the register name and
+     then a letter denoting the desired portion.  For 32-bit registers,
+     ".H" denotes the most significant ("High") portion.  ".L" denotes
+     the least-significant portion.  The subdivisions of the 40-bit
+     registers are described later.
+
+`Accumulators'
+     The set of 40-bit registers A1 and A0 that normally contain data
+     that is being manipulated.  Each accumulator can be accessed in
+     four ways.
+
+    `one 40-bit register'
+          The register will be referred to as A1 or A0.
+
+    `one 32-bit register'
+          The registers are designated as A1.W or A0.W.
+
+    `two 16-bit registers'
+          The registers are designated as A1.H, A1.L, A0.H or A0.L.
+
+    `one 8-bit register'
+          The registers are designated as A1.X or A0.X for the bits that
+          extend beyond bit 31.
+
+`Data Registers'
+     The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7)
+     that normally contain data for manipulation.  These are
+     abbreviated as D-register or Dreg.  Data registers can be accessed
+     as 32-bit registers or as two independent 16-bit registers.  The
+     least significant 16 bits of each register is called the "low"
+     half and is desginated with ".L" following the register name.  The
+     most significant 16 bits are called the "high" half and is
+     designated with ".H". following the name.
+
+             R7.L, r2.h, r4.L, R0.H
+
+`Pointer Registers'
+     The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP)
+     that normally contain byte addresses of data structures.  These are
+     abbreviated as P-register or Preg.
+
+          p2, p5, fp, sp
+
+`Stack Pointer SP'
+     The stack pointer contains the 32-bit address of the last occupied
+     byte location in the stack.  The stack grows by decrementing the
+     stack pointer.
+
+`Frame Pointer FP'
+     The frame pointer contains the 32-bit address of the previous frame
+     pointer in the stack.  It is located at the top of a frame.
+
+`Loop Top'
+     LT0 and LT1.  These registers contain the 32-bit address of the
+     top of a zero overhead loop.
+
+`Loop Count'
+     LC0 and LC1.  These registers contain the 32-bit counter of the
+     zero overhead loop executions.
+
+`Loop Bottom'
+     LB0 and LB1.  These registers contain the 32-bit address of the
+     bottom of a zero overhead loop.
+
+`Index Registers'
+     The set of 32-bit registers (I0, I1, I2, I3) that normally contain
+     byte addresses of data structures.  Abbreviated I-register or Ireg.
+
+`Modify Registers'
+     The set of 32-bit registers (M0, M1, M2, M3) that normally contain
+     offset values that are added and subracted to one of the index
+     registers.  Abbreviated as Mreg.
+
+`Length Registers'
+     The set of 32-bit registers (L0, L1, L2, L3) that normally contain
+     the length in bytes of the circular buffer.  Abbreviated as Lreg.
+     Clear the Lreg to disable circular addressing for the
+     corresponding Ireg.
+
+`Base Registers'
+     The set of 32-bit registers (B0, B1, B2, B3) that normally contain
+     the base address in bytes of the circular buffer.  Abbreviated as
+     Breg.
+
+`Floating Point'
+     The Blackfin family has no hardware floating point but the .float
+     directive generates ieee floating point numbers for use with
+     software floating point libraries.
+
+`Blackfin Opcodes'
+     For detailed information on the Blackfin machine instruction set,
+     see the Blackfin(r) Processor Instruction Set Reference.
+
+
+
+File: as.info,  Node: BFIN Directives,  Prev: BFIN Syntax,  Up: BFIN-Dependent
+
+8.4.2 Directives
+----------------
+
+The following directives are provided for compatibility with the VDSP
+assembler.
+
+`.byte2'
+     Initializes a four byte data object.
+
+`.byte4'
+     Initializes a two byte data object.
+
+`.db'
+     TBD
+
+`.dd'
+     TBD
+
+`.dw'
+     TBD
+
+`.var'
+     Define and initialize a 32 bit data object.
+
+
+File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: BFIN-Dependent,  Up: Machine Dependencies
+
+8.5 CRIS Dependent Features
+===========================
+
+* Menu:
+
+* CRIS-Opts::              Command-line Options
+* CRIS-Expand::            Instruction expansion
+* CRIS-Symbols::           Symbols
+* CRIS-Syntax::            Syntax
+
+
+File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
+
+8.5.1 Command-line Options
+--------------------------
+
+The CRIS version of `as' has these machine-dependent command-line
+options.
+
+   The format of the generated object files can be either ELF or a.out,
+specified by the command-line options `--emulation=crisaout' and
+`--emulation=criself'.  The default is ELF (criself), unless `as' has
+been configured specifically for a.out by using the configuration name
+`cris-axis-aout'.
+
+   There are two different link-incompatible ELF object file variants
+for CRIS, for use in environments where symbols are expected to be
+prefixed by a leading `_' character and for environments without such a
+symbol prefix.  The variant used for GNU/Linux port has no symbol
+prefix.  Which variant to produce is specified by either of the options
+`--underscore' and `--no-underscore'.  The default is `--underscore'.
+Since symbols in CRIS a.out objects are expected to have a `_' prefix,
+specifying `--no-underscore' when generating a.out objects is an error.
+Besides the object format difference, the effect of this option is to
+parse register names differently (*note crisnous::).  The
+`--no-underscore' option makes a `$' register prefix mandatory.
+
+   The option `--pic' must be passed to `as' in order to recognize the
+symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
+crispic::).  This will also affect expansion of instructions.  The
+expansion with `--pic' will use PC-relative rather than (slightly
+faster) absolute addresses in those expansions.
+
+   The option `--march=ARCHITECTURE' specifies the recognized
+instruction set and recognized register names.  It also controls the
+architecture type of the object file.  Valid values for ARCHITECTURE
+are:
+`v0_v10'
+     All instructions and register names for any architecture variant
+     in the set v0...v10 are recognized.  This is the default if the
+     target is configured as cris-*.
+
+`v10'
+     Only instructions and register names for CRIS v10 (as found in
+     ETRAX 100 LX) are recognized.  This is the default if the target
+     is configured as crisv10-*.
+
+`v32'
+     Only instructions and register names for CRIS v32 (code name
+     Guinness) are recognized.  This is the default if the target is
+     configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
+     (A subsequent `--mul-bug-abort' will turn it back on.)
+
+`common_v10_v32'
+     Only instructions with register names and addressing modes with
+     opcodes common to the v10 and v32 are recognized.
+
+   When `-N' is specified, `as' will emit a warning when a 16-bit
+branch instruction is expanded into a 32-bit multiple-instruction
+construct (*note CRIS-Expand::).
+
+   Some versions of the CRIS v10, for example in the Etrax 100 LX,
+contain a bug that causes destabilizing memory accesses when a multiply
+instruction is executed with certain values in the first operand just
+before a cache-miss.  When the `--mul-bug-abort' command line option is
+active (the default value), `as' will refuse to assemble a file
+containing a multiply instruction at a dangerous offset, one that could
+be the last on a cache-line, or is in a section with insufficient
+alignment.  This placement checking does not catch any case where the
+multiply instruction is dangerously placed because it is located in a
+delay-slot.  The `--mul-bug-abort' command line option turns off the
+checking.
+
+
+File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
+
+8.5.2 Instruction expansion
+---------------------------
+
+`as' will silently choose an instruction that fits the operand size for
+`[register+constant]' operands.  For example, the offset `127' in
+`move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
+Similarly, `move.d [r2+32767],r1' will generate an instruction using a
+16-bit offset.  For symbolic expressions and constants that do not fit
+in 16 bits including the sign bit, a 32-bit offset is generated.
+
+   For branches, `as' will expand from a 16-bit branch instruction into
+a sequence of instructions that can reach a full 32-bit address.  Since
+this does not correspond to a single instruction, such expansions can
+optionally be warned about.  *Note CRIS-Opts::.
+
+   If the operand is found to fit the range, a `lapc' mnemonic will
+translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
+`lapc' instruction.
+
+   Similarly, the `addo' mnemonic will translate to the shortest
+fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
+operand that is a constant known at assembly time.
+
+
+File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
+
+8.5.3 Symbols
+-------------
+
+Some symbols are defined by the assembler.  They're intended to be used
+in conditional assembly, for example:
+      .if ..asm.arch.cris.v32
+      CODE FOR CRIS V32
+      .elseif ..asm.arch.cris.common_v10_v32
+      CODE COMMON TO CRIS V32 AND CRIS V10
+      .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
+      CODE FOR V10
+      .else
+      .error "Code needs to be added here."
+      .endif
+
+   These symbols are defined in the assembler, reflecting command-line
+options, either when specified or the default.  They are always
+defined, to 0 or 1.
+`..asm.arch.cris.any_v0_v10'
+     This symbol is non-zero when `--march=v0_v10' is specified or the
+     default.
+
+`..asm.arch.cris.common_v10_v32'
+     Set according to the option `--march=common_v10_v32'.
+
+`..asm.arch.cris.v10'
+     Reflects the option `--march=v10'.
+
+`..asm.arch.cris.v32'
+     Corresponds to `--march=v10'.
+
+   Speaking of symbols, when a symbol is used in code, it can have a
+suffix modifying its value for use in position-independent code. *Note
+CRIS-Pic::.
+
+
+File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
+
+8.5.4 Syntax
+------------
+
+There are different aspects of the CRIS assembly syntax.
+
+* Menu:
+
+* CRIS-Chars::		        Special Characters
+* CRIS-Pic::			Position-Independent Code Symbols
+* CRIS-Regs::			Register Names
+* CRIS-Pseudos::		Assembler Directives
+
+
+File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
+
+8.5.4.1 Special Characters
+..........................
+
+The character `#' is a line comment character.  It starts a comment if
+and only if it is placed at the beginning of a line.
+
+   A `;' character starts a comment anywhere on the line, causing all
+characters up to the end of the line to be ignored.
+
+   A `@' character is handled as a line separator equivalent to a
+logical new-line character (except in a comment), so separate
+instructions can be specified on a single line.
+
+
+File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
+
+8.5.4.2 Symbols in position-independent code
+............................................
+
+When generating position-independent code (SVR4 PIC) for use in
+cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
+suffixes are used to specify what kind of run-time symbol lookup will
+be used, expressed in the object as different _relocation types_.
+Usually, all absolute symbol values must be located in a table, the
+_global offset table_, leaving the code position-independent;
+independent of values of global symbols and independent of the address
+of the code.  The suffix modifies the value of the symbol, into for
+example an index into the global offset table where the real symbol
+value is entered, or a PC-relative value, or a value relative to the
+start of the global offset table.  All symbol suffixes start with the
+character `:' (omitted in the list below).  Every symbol use in code or
+a read-only section must therefore have a PIC suffix to enable a useful
+shared library to be created.  Usually, these constructs must not be
+used with an additive constant offset as is usually allowed, i.e. no 4
+as in `symbol + 4' is allowed.  This restriction is checked at
+link-time, not at assembly-time.
+
+`GOT'
+     Attaching this suffix to a symbol in an instruction causes the
+     symbol to be entered into the global offset table.  The value is a
+     32-bit index for that symbol into the global offset table.  The
+     name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
+     `move.d [$r0+extsym:GOT],$r9'
+
+`GOT16'
+     Same as for `GOT', but the value is a 16-bit index into the global
+     offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
+     Example: `move.d [$r0+asymbol:GOT16],$r10'
+
+`PLT'
+     This suffix is used for function symbols.  It causes a _procedure
+     linkage table_, an array of code stubs, to be created at the time
+     the shared object is created or linked against, together with a
+     global offset table entry.  The value is a pc-relative offset to
+     the corresponding stub code in the procedure linkage table.  This
+     arrangement causes the run-time symbol resolver to be called to
+     look up and set the value of the symbol the first time the
+     function is called (at latest; depending environment variables).
+     It is only safe to leave the symbol unresolved this way if all
+     references are function calls.  The name of the relocation is
+     `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
+
+`PLTG'
+     Like PLT, but the value is relative to the beginning of the global
+     offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
+     `move.d fnname:PLTG,$r3'
+
+`GOTPLT'
+     Similar to `PLT', but the value of the symbol is a 32-bit index
+     into the global offset table.  This is somewhat of a mix between
+     the effect of the `GOT' and the `PLT' suffix; the difference to
+     `GOT' is that there will be a procedure linkage table entry
+     created, and that the symbol is assumed to be a function entry and
+     will be resolved by the run-time resolver as with `PLT'.  The
+     relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
+     [$r0+fnname:GOTPLT]'
+
+`GOTPLT16'
+     A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
+     is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
+
+`GOTOFF'
+     This suffix must only be attached to a local symbol, but may be
+     used in an expression adding an offset.  The value is the address
+     of the symbol relative to the start of the global offset table.
+     The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
+     [$r0+localsym:GOTOFF],r3'
+
+
+File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
+
+8.5.4.3 Register names
+......................
+
+A `$' character may always prefix a general or special register name in
+an instruction operand but is mandatory when the option
+`--no-underscore' is specified or when the `.syntax register_prefix'
+directive is in effect (*note crisnous::).  Register names are
+case-insensitive.
+
+
+File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
+
+8.5.4.4 Assembler Directives
+............................
+
+There are a few CRIS-specific pseudo-directives in addition to the
+generic ones.  *Note Pseudo Ops::.  Constants emitted by
+pseudo-directives are in little-endian order for CRIS.  There is no
+support for floating-point-specific directives for CRIS.
+
+`.dword EXPRESSIONS'
+     The `.dword' directive is a synonym for `.int', expecting zero or
+     more EXPRESSIONS, separated by commas.  For each expression, a
+     32-bit little-endian constant is emitted.
+
+`.syntax ARGUMENT'
+     The `.syntax' directive takes as ARGUMENT one of the following
+     case-sensitive choices.
+
+    `no_register_prefix'
+          The `.syntax no_register_prefix' directive makes a `$'
+          character prefix on all registers optional.  It overrides a
+          previous setting, including the corresponding effect of the
+          option `--no-underscore'.  If this directive is used when
+          ordinary symbols do not have a `_' character prefix, care
+          must be taken to avoid ambiguities whether an operand is a
+          register or a symbol; using symbols with names the same as
+          general or special registers then invoke undefined behavior.
+
+    `register_prefix'
+          This directive makes a `$' character prefix on all registers
+          mandatory.  It overrides a previous setting, including the
+          corresponding effect of the option `--underscore'.
+
+    `leading_underscore'
+          This is an assertion directive, emitting an error if the
+          `--no-underscore' option is in effect.
+
+    `no_leading_underscore'
+          This is the opposite of the `.syntax leading_underscore'
+          directive and emits an error if the option `--underscore' is
+          in effect.
+
+`.arch ARGUMENT'
+     This is an assertion directive, giving an error if the specified
+     ARGUMENT is not the same as the specified or default value for the
+     `--march=ARCHITECTURE' option (*note march-option::).
+
+
+
+File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
+
+8.6 D10V Dependent Features
+===========================
+
+* Menu:
+
+* D10V-Opts::                   D10V Options
+* D10V-Syntax::                 Syntax
+* D10V-Float::                  Floating Point
+* D10V-Opcodes::                Opcodes
+
+
+File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
+
+8.6.1 D10V Options
+------------------
+
+The Mitsubishi D10V version of `as' has a few machine dependent options.
+
+`-O'
+     The D10V can often execute two sub-instructions in parallel. When
+     this option is used, `as' will attempt to optimize its output by
+     detecting when instructions can be executed in parallel.
+
+`--nowarnswap'
+     To optimize execution performance, `as' will sometimes swap the
+     order of instructions. Normally this generates a warning. When
+     this option is used, no warning will be generated when
+     instructions are swapped.
+
+`--gstabs-packing'
+
+`--no-gstabs-packing'
+     `as' packs adjacent short instructions into a single packed
+     instruction. `--no-gstabs-packing' turns instruction packing off if
+     `--gstabs' is specified as well; `--gstabs-packing' (the default)
+     turns instruction packing on even when `--gstabs' is specified.
+
+
+File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
+
+8.6.2 Syntax
+------------
+
+The D10V syntax is based on the syntax in Mitsubishi's D10V
+architecture manual.  The differences are detailed below.
+
+* Menu:
+
+* D10V-Size::                 Size Modifiers
+* D10V-Subs::                 Sub-Instructions
+* D10V-Chars::                Special Characters
+* D10V-Regs::                 Register Names
+* D10V-Addressing::           Addressing Modes
+* D10V-Word::                 @WORD Modifier
+
+
+File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
+
+8.6.2.1 Size Modifiers
+......................
+
+The D10V version of `as' uses the instruction names in the D10V
+Architecture Manual.  However, the names in the manual are sometimes
+ambiguous.  There are instruction names that can assemble to a short or
+long form opcode.  How does the assembler pick the correct form?  `as'
+will always pick the smallest form if it can.  When dealing with a
+symbol that is not defined yet when a line is being assembled, it will
+always use the long form.  If you need to force the assembler to use
+either the short or long form of the instruction, you can append either
+`.s' (short) or `.l' (long) to it.  For example, if you are writing an
+assembly program and you want to do a branch to a symbol that is
+defined later in your program, you can write `bra.s   foo'.  Objdump
+and GDB will always append `.s' or `.l' to instructions which have both
+short and long forms.
+
+
+File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
+
+8.6.2.2 Sub-Instructions
+........................
+
+The D10V assembler takes as input a series of instructions, either
+one-per-line, or in the special two-per-line format described in the
+next section.  Some of these instructions will be short-form or
+sub-instructions.  These sub-instructions can be packed into a single
+instruction.  The assembler will do this automatically.  It will also
+detect when it should not pack instructions.  For example, when a label
+is defined, the next instruction will never be packaged with the
+previous one.  Whenever a branch and link instruction is called, it
+will not be packaged with the next instruction so the return address
+will be valid.  Nops are automatically inserted when necessary.
+
+   If you do not want the assembler automatically making these
+decisions, you can control the packaging and execution type (parallel
+or sequential) with the special execution symbols described in the next
+section.
+
+
+File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
+
+8.6.2.3 Special Characters
+..........................
+
+`;' and `#' are the line comment characters.  Sub-instructions may be
+executed in order, in reverse-order, or in parallel.  Instructions
+listed in the standard one-per-line format will be executed
+sequentially.  To specify the executing order, use the following
+symbols:
+`->'
+     Sequential with instruction on the left first.
+
+`<-'
+     Sequential with instruction on the right first.
+
+`||'
+     Parallel
+   The D10V syntax allows either one instruction per line, one
+instruction per line with the execution symbol, or two instructions per
+line.  For example
+`abs       a1      ->      abs     r0'
+     Execute these sequentially.  The instruction on the right is in
+     the right container and is executed second.
+
+`abs       r0      <-      abs     a1'
+     Execute these reverse-sequentially.  The instruction on the right
+     is in the right container, and is executed first.
+
+`ld2w    r2, at r8+         ||      mac     a0,r0,r7'
+     Execute these in parallel.
+
+`ld2w    r2, at r8+         ||'
+`mac     a0,r0,r7'
+     Two-line format. Execute these in parallel.
+
+`ld2w    r2, at r8+'
+`mac     a0,r0,r7'
+     Two-line format. Execute these sequentially.  Assembler will put
+     them in the proper containers.
+
+`ld2w    r2, at r8+         ->'
+`mac     a0,r0,r7'
+     Two-line format. Execute these sequentially.  Same as above but
+     second instruction will always go into right container.
+   Since `$' has no special meaning, you may use it in symbol names.
+
+
+File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
+
+8.6.2.4 Register Names
+......................
+
+You can use the predefined symbols `r0' through `r15' to refer to the
+D10V registers.  You can also use `sp' as an alias for `r15'.  The
+accumulators are `a0' and `a1'.  There are special register-pair names
+that may optionally be used in opcodes that require even-numbered
+registers. Register names are not case sensitive.
+
+   Register Pairs
+`r0-r1'
+
+`r2-r3'
+
+`r4-r5'
+
+`r6-r7'
+
+`r8-r9'
+
+`r10-r11'
+
+`r12-r13'
+
+`r14-r15'
+
+   The D10V also has predefined symbols for these control registers and
+status bits:
+`psw'
+     Processor Status Word
+
+`bpsw'
+     Backup Processor Status Word
+
+`pc'
+     Program Counter
+
+`bpc'
+     Backup Program Counter
+
+`rpt_c'
+     Repeat Count
+
+`rpt_s'
+     Repeat Start address
+
+`rpt_e'
+     Repeat End address
+
+`mod_s'
+     Modulo Start address
+
+`mod_e'
+     Modulo End address
+
+`iba'
+     Instruction Break Address
+
+`f0'
+     Flag 0
+
+`f1'
+     Flag 1
+
+`c'
+     Carry flag
+
+
+File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
+
+8.6.2.5 Addressing Modes
+........................
+
+`as' understands the following addressing modes for the D10V.  `RN' in
+the following refers to any of the numbered registers, but _not_ the
+control registers.
+`RN'
+     Register direct
+
+`@RN'
+     Register indirect
+
+`@RN+'
+     Register indirect with post-increment
+
+`@RN-'
+     Register indirect with post-decrement
+
+`@-SP'
+     Register indirect with pre-decrement
+
+`@(DISP, RN)'
+     Register indirect with displacement
+
+`ADDR'
+     PC relative address (for branch or rep).
+
+`#IMM'
+     Immediate data (the `#' is optional and ignored)
+
+
+File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
+
+8.6.2.6 @WORD Modifier
+......................
+
+Any symbol followed by `@word' will be replaced by the symbol's value
+shifted right by 2.  This is used in situations such as loading a
+register with the address of a function (or any other code fragment).
+For example, if you want to load a register with the location of the
+function `main' then jump to that function, you could do it as follows:
+     ldi     r2, main at word
+     jmp     r2
+
+
+File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
+
+8.6.3 Floating Point
+--------------------
+
+The D10V has no hardware floating point, but the `.float' and `.double'
+directives generates IEEE floating-point numbers for compatibility with
+other development tools.
+
+
+File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
+
+8.6.4 Opcodes
+-------------
+
+For detailed information on the D10V machine instruction set, see `D10V
+Architecture: A VLIW Microprocessor for Multimedia Applications'
+(Mitsubishi Electric Corp.).  `as' implements all the standard D10V
+opcodes.  The only changes are those described in the section on size
+modifiers
+
+
+File: as.info,  Node: D30V-Dependent,  Next: H8/300-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
+
+8.7 D30V Dependent Features
+===========================
+
+* Menu:
+
+* D30V-Opts::                   D30V Options
+* D30V-Syntax::                 Syntax
+* D30V-Float::                  Floating Point
+* D30V-Opcodes::                Opcodes
+
+
+File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
+
+8.7.1 D30V Options
+------------------
+
+The Mitsubishi D30V version of `as' has a few machine dependent options.
+
+`-O'
+     The D30V can often execute two sub-instructions in parallel. When
+     this option is used, `as' will attempt to optimize its output by
+     detecting when instructions can be executed in parallel.
+
+`-n'
+     When this option is used, `as' will issue a warning every time it
+     adds a nop instruction.
+
+`-N'
+     When this option is used, `as' will issue a warning if it needs to
+     insert a nop after a 32-bit multiply before a load or 16-bit
+     multiply instruction.
+
+
+File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
+
+8.7.2 Syntax
+------------
+
+The D30V syntax is based on the syntax in Mitsubishi's D30V
+architecture manual.  The differences are detailed below.
+
+* Menu:
+
+* D30V-Size::                 Size Modifiers
+* D30V-Subs::                 Sub-Instructions
+* D30V-Chars::                Special Characters
+* D30V-Guarded::              Guarded Execution
+* D30V-Regs::                 Register Names
+* D30V-Addressing::           Addressing Modes
+
+
+File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
+
+8.7.2.1 Size Modifiers
+......................
+
+The D30V version of `as' uses the instruction names in the D30V
+Architecture Manual.  However, the names in the manual are sometimes
+ambiguous.  There are instruction names that can assemble to a short or
+long form opcode.  How does the assembler pick the correct form?  `as'
+will always pick the smallest form if it can.  When dealing with a
+symbol that is not defined yet when a line is being assembled, it will
+always use the long form.  If you need to force the assembler to use
+either the short or long form of the instruction, you can append either
+`.s' (short) or `.l' (long) to it.  For example, if you are writing an
+assembly program and you want to do a branch to a symbol that is
+defined later in your program, you can write `bra.s foo'.  Objdump and
+GDB will always append `.s' or `.l' to instructions which have both
+short and long forms.
+
+
+File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
+
+8.7.2.2 Sub-Instructions
+........................
+
+The D30V assembler takes as input a series of instructions, either
+one-per-line, or in the special two-per-line format described in the
+next section.  Some of these instructions will be short-form or
+sub-instructions.  These sub-instructions can be packed into a single
+instruction.  The assembler will do this automatically.  It will also
+detect when it should not pack instructions.  For example, when a label
+is defined, the next instruction will never be packaged with the
+previous one.  Whenever a branch and link instruction is called, it
+will not be packaged with the next instruction so the return address
+will be valid.  Nops are automatically inserted when necessary.
+
+   If you do not want the assembler automatically making these
+decisions, you can control the packaging and execution type (parallel
+or sequential) with the special execution symbols described in the next
+section.
+
+
+File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
+
+8.7.2.3 Special Characters
+..........................
+
+`;' and `#' are the line comment characters.  Sub-instructions may be
+executed in order, in reverse-order, or in parallel.  Instructions
+listed in the standard one-per-line format will be executed
+sequentially unless you use the `-O' option.
+
+   To specify the executing order, use the following symbols:
+`->'
+     Sequential with instruction on the left first.
+
+`<-'
+     Sequential with instruction on the right first.
+
+`||'
+     Parallel
+
+   The D30V syntax allows either one instruction per line, one
+instruction per line with the execution symbol, or two instructions per
+line.  For example
+`abs r2,r3 -> abs r4,r5'
+     Execute these sequentially.  The instruction on the right is in
+     the right container and is executed second.
+
+`abs r2,r3 <- abs r4,r5'
+     Execute these reverse-sequentially.  The instruction on the right
+     is in the right container, and is executed first.
+
+`abs r2,r3 || abs r4,r5'
+     Execute these in parallel.
+
+`ldw r2,@(r3,r4) ||'
+`mulx r6,r8,r9'
+     Two-line format. Execute these in parallel.
+
+`mulx a0,r8,r9'
+`stw r2,@(r3,r4)'
+     Two-line format. Execute these sequentially unless `-O' option is
+     used.  If the `-O' option is used, the assembler will determine if
+     the instructions could be done in parallel (the above two
+     instructions can be done in parallel), and if so, emit them as
+     parallel instructions.  The assembler will put them in the proper
+     containers.  In the above example, the assembler will put the
+     `stw' instruction in left container and the `mulx' instruction in
+     the right container.
+
+`stw r2,@(r3,r4) ->'
+`mulx a0,r8,r9'
+     Two-line format.  Execute the `stw' instruction followed by the
+     `mulx' instruction sequentially.  The first instruction goes in the
+     left container and the second instruction goes into right
+     container.  The assembler will give an error if the machine
+     ordering constraints are violated.
+
+`stw r2,@(r3,r4) <-'
+`mulx a0,r8,r9'
+     Same as previous example, except that the `mulx' instruction is
+     executed before the `stw' instruction.
+
+   Since `$' has no special meaning, you may use it in symbol names.
+
+
+File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
+
+8.7.2.4 Guarded Execution
+.........................
+
+`as' supports the full range of guarded execution directives for each
+instruction.  Just append the directive after the instruction proper.
+The directives are:
+
+`/tx'
+     Execute the instruction if flag f0 is true.
+
+`/fx'
+     Execute the instruction if flag f0 is false.
+
+`/xt'
+     Execute the instruction if flag f1 is true.
+
+`/xf'
+     Execute the instruction if flag f1 is false.
+
+`/tt'
+     Execute the instruction if both flags f0 and f1 are true.
+
+`/tf'
+     Execute the instruction if flag f0 is true and flag f1 is false.
+
+
+File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
+
+8.7.2.5 Register Names
+......................
+
+You can use the predefined symbols `r0' through `r63' to refer to the
+D30V registers.  You can also use `sp' as an alias for `r63' and `link'
+as an alias for `r62'.  The accumulators are `a0' and `a1'.
+
+   The D30V also has predefined symbols for these control registers and
+status bits:
+`psw'
+     Processor Status Word
+
+`bpsw'
+     Backup Processor Status Word
+
+`pc'
+     Program Counter
+
+`bpc'
+     Backup Program Counter
+
+`rpt_c'
+     Repeat Count
+
+`rpt_s'
+     Repeat Start address
+
+`rpt_e'
+     Repeat End address
+
+`mod_s'
+     Modulo Start address
+
+`mod_e'
+     Modulo End address
+
+`iba'
+     Instruction Break Address
+
+`f0'
+     Flag 0
+
+`f1'
+     Flag 1
+
+`f2'
+     Flag 2
+
+`f3'
+     Flag 3
+
+`f4'
+     Flag 4
+
+`f5'
+     Flag 5
+
+`f6'
+     Flag 6
+
+`f7'
+     Flag 7
+
+`s'
+     Same as flag 4 (saturation flag)
+
+`v'
+     Same as flag 5 (overflow flag)
+
+`va'
+     Same as flag 6 (sticky overflow flag)
+
+`c'
+     Same as flag 7 (carry/borrow flag)
+
+`b'
+     Same as flag 7 (carry/borrow flag)
+
+
+File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
+
+8.7.2.6 Addressing Modes
+........................
+
+`as' understands the following addressing modes for the D30V.  `RN' in
+the following refers to any of the numbered registers, but _not_ the
+control registers.
+`RN'
+     Register direct
+
+`@RN'
+     Register indirect
+
+`@RN+'
+     Register indirect with post-increment
+
+`@RN-'
+     Register indirect with post-decrement
+
+`@-SP'
+     Register indirect with pre-decrement
+
+`@(DISP, RN)'
+     Register indirect with displacement
+
+`ADDR'
+     PC relative address (for branch or rep).
+
+`#IMM'
+     Immediate data (the `#' is optional and ignored)
+
+
+File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
+
+8.7.3 Floating Point
+--------------------
+
+The D30V has no hardware floating point, but the `.float' and `.double'
+directives generates IEEE floating-point numbers for compatibility with
+other development tools.
+
+
+File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
+
+8.7.4 Opcodes
+-------------
+
+For detailed information on the D30V machine instruction set, see `D30V
+Architecture: A VLIW Microprocessor for Multimedia Applications'
+(Mitsubishi Electric Corp.).  `as' implements all the standard D30V
+opcodes.  The only changes are those described in the section on size
+modifiers
+
+
+File: as.info,  Node: H8/300-Dependent,  Next: HPPA-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
+
+8.8 H8/300 Dependent Features
+=============================
+
+* Menu:
+
+* H8/300 Options::              Options
+* H8/300 Syntax::               Syntax
+* H8/300 Floating Point::       Floating Point
+* H8/300 Directives::           H8/300 Machine Directives
+* H8/300 Opcodes::              Opcodes
+
+
+File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
+
+8.8.1 Options
+-------------
+
+`as' has no additional command-line options for the Renesas (formerly
+Hitachi) H8/300 family.
+
+
+File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
+
+8.8.2 Syntax
+------------
+
+* Menu:
+
+* H8/300-Chars::                Special Characters
+* H8/300-Regs::                 Register Names
+* H8/300-Addressing::           Addressing Modes
+
+
+File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
+
+8.8.2.1 Special Characters
+..........................
+
+`;' is the line comment character.
+
+   `$' can be used instead of a newline to separate statements.
+Therefore _you may not use `$' in symbol names_ on the H8/300.
+
+
+File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
+
+8.8.2.2 Register Names
+......................
+
+You can use predefined symbols of the form `rNh' and `rNl' to refer to
+the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
+a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
+register names.
+
+   You can also use the eight predefined symbols `rN' to refer to the
+H8/300 registers as 16-bit registers (you must use this form for
+addressing).
+
+   On the H8/300H, you can also use the eight predefined symbols `erN'
+(`er0' ... `er7') to refer to the 32-bit general purpose registers.
+
+   The two control registers are called `pc' (program counter; a 16-bit
+register, except on the H8/300H where it is 24 bits) and `ccr'
+(condition code register; an 8-bit register).  `r7' is used as the
+stack pointer, and can also be called `sp'.
+
+
+File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
+
+8.8.2.3 Addressing Modes
+........................
+
+as understands the following addressing modes for the H8/300:
+`rN'
+     Register direct
+
+`@rN'
+     Register indirect
+
+`@(D, rN)'
+`@(D:16, rN)'
+`@(D:24, rN)'
+     Register indirect: 16-bit or 24-bit displacement D from register
+     N.  (24-bit displacements are only meaningful on the H8/300H.)
+
+`@rN+'
+     Register indirect with post-increment
+
+`@-rN'
+     Register indirect with pre-decrement
+
+``@'AA'
+``@'AA:8'
+``@'AA:16'
+``@'AA:24'
+     Absolute address `aa'.  (The address size `:24' only makes sense
+     on the H8/300H.)
+
+`#XX'
+`#XX:8'
+`#XX:16'
+`#XX:32'
+     Immediate data XX.  You may specify the `:8', `:16', or `:32' for
+     clarity, if you wish; but `as' neither requires this nor uses
+     it--the data size required is taken from context.
+
+``@'`@'AA'
+``@'`@'AA:8'
+     Memory indirect.  You may specify the `:8' for clarity, if you
+     wish; but `as' neither requires this nor uses it.
+
+
+File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
+
+8.8.3 Floating Point
+--------------------
+
+The H8/300 family has no hardware floating point, but the `.float'
+directive generates IEEE floating-point numbers for compatibility with
+other development tools.
+
+
+File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
+
+8.8.4 H8/300 Machine Directives
+-------------------------------
+
+`as' has the following machine-dependent directives for the H8/300:
+
+`.h8300h'
+     Recognize and emit additional instructions for the H8/300H
+     variant, and also make `.int' emit 32-bit numbers rather than the
+     usual (16-bit) for the H8/300 family.
+
+`.h8300s'
+     Recognize and emit additional instructions for the H8S variant, and
+     also make `.int' emit 32-bit numbers rather than the usual (16-bit)
+     for the H8/300 family.
+
+`.h8300hn'
+     Recognize and emit additional instructions for the H8/300H variant
+     in normal mode, and also make `.int' emit 32-bit numbers rather
+     than the usual (16-bit) for the H8/300 family.
+
+`.h8300sn'
+     Recognize and emit additional instructions for the H8S variant in
+     normal mode, and also make `.int' emit 32-bit numbers rather than
+     the usual (16-bit) for the H8/300 family.
+
+   On the H8/300 family (including the H8/300H) `.word' directives
+generate 16-bit numbers.
+
+
+File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
+
+8.8.5 Opcodes
+-------------
+
+For detailed information on the H8/300 machine instruction set, see
+`H8/300 Series Programming Manual'.  For information specific to the
+H8/300H, see `H8/300H Series Programming Manual' (Renesas).
+
+   `as' implements all the standard H8/300 opcodes.  No additional
+pseudo-instructions are needed on this family.
+
+   The following table summarizes the H8/300 opcodes, and their
+arguments.  Entries marked `*' are opcodes used only on the H8/300H.
+
+              Legend:
+                 Rs   source register
+                 Rd   destination register
+                 abs  absolute address
+                 imm  immediate data
+              disp:N  N-bit displacement from a register
+             pcrel:N  N-bit displacement relative to program counter
+
+        add.b #imm,rd              *  andc #imm,ccr
+        add.b rs,rd                   band #imm,rd
+        add.w rs,rd                   band #imm, at rd
+     *  add.w #imm,rd                 band #imm, at abs:8
+     *  add.l rs,rd                   bra  pcrel:8
+     *  add.l #imm,rd              *  bra  pcrel:16
+        adds #imm,rd                  bt   pcrel:8
+        addx #imm,rd               *  bt   pcrel:16
+        addx rs,rd                    brn  pcrel:8
+        and.b #imm,rd              *  brn  pcrel:16
+        and.b rs,rd                   bf   pcrel:8
+     *  and.w rs,rd                *  bf   pcrel:16
+     *  and.w #imm,rd                 bhi  pcrel:8
+     *  and.l #imm,rd              *  bhi  pcrel:16
+     *  and.l rs,rd                   bls  pcrel:8
+
+     *  bls  pcrel:16                 bld  #imm,rd
+        bcc  pcrel:8                  bld  #imm, at rd
+     *  bcc  pcrel:16                 bld  #imm, at abs:8
+        bhs  pcrel:8                  bnot #imm,rd
+     *  bhs  pcrel:16                 bnot #imm, at rd
+        bcs  pcrel:8                  bnot #imm, at abs:8
+     *  bcs  pcrel:16                 bnot rs,rd
+        blo  pcrel:8                  bnot rs, at rd
+     *  blo  pcrel:16                 bnot rs, at abs:8
+        bne  pcrel:8                  bor  #imm,rd
+     *  bne  pcrel:16                 bor  #imm, at rd
+        beq  pcrel:8                  bor  #imm, at abs:8
+     *  beq  pcrel:16                 bset #imm,rd
+        bvc  pcrel:8                  bset #imm, at rd
+     *  bvc  pcrel:16                 bset #imm, at abs:8
+        bvs  pcrel:8                  bset rs,rd
+     *  bvs  pcrel:16                 bset rs, at rd
+        bpl  pcrel:8                  bset rs, at abs:8
+     *  bpl  pcrel:16                 bsr  pcrel:8
+        bmi  pcrel:8                  bsr  pcrel:16
+     *  bmi  pcrel:16                 bst  #imm,rd
+        bge  pcrel:8                  bst  #imm, at rd
+     *  bge  pcrel:16                 bst  #imm, at abs:8
+        blt  pcrel:8                  btst #imm,rd
+     *  blt  pcrel:16                 btst #imm, at rd
+        bgt  pcrel:8                  btst #imm, at abs:8
+     *  bgt  pcrel:16                 btst rs,rd
+        ble  pcrel:8                  btst rs, at rd
+     *  ble  pcrel:16                 btst rs, at abs:8
+        bclr #imm,rd                  bxor #imm,rd
+        bclr #imm, at rd                 bxor #imm, at rd
+        bclr #imm, at abs:8              bxor #imm, at abs:8
+        bclr rs,rd                    cmp.b #imm,rd
+        bclr rs, at rd                   cmp.b rs,rd
+        bclr rs, at abs:8                cmp.w rs,rd
+        biand #imm,rd                 cmp.w rs,rd
+        biand #imm, at rd             *  cmp.w #imm,rd
+        biand #imm, at abs:8          *  cmp.l #imm,rd
+        bild #imm,rd               *  cmp.l rs,rd
+        bild #imm, at rd                 daa  rs
+        bild #imm, at abs:8              das  rs
+        bior #imm,rd                  dec.b rs
+        bior #imm, at rd              *  dec.w #imm,rd
+        bior #imm, at abs:8           *  dec.l #imm,rd
+        bist #imm,rd                  divxu.b rs,rd
+        bist #imm, at rd              *  divxu.w rs,rd
+        bist #imm, at abs:8           *  divxs.b rs,rd
+        bixor #imm,rd              *  divxs.w rs,rd
+        bixor #imm, at rd                eepmov
+        bixor #imm, at abs:8          *  eepmovw
+
+     *  exts.w rd                     mov.w rs, at abs:16
+     *  exts.l rd                  *  mov.l #imm,rd
+     *  extu.w rd                  *  mov.l rs,rd
+     *  extu.l rd                  *  mov.l @rs,rd
+        inc  rs                    *  mov.l @(disp:16,rs),rd
+     *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
+     *  inc.l #imm,rd              *  mov.l @rs+,rd
+        jmp  @rs                   *  mov.l @abs:16,rd
+        jmp  abs                   *  mov.l @abs:24,rd
+        jmp  @@abs:8               *  mov.l rs, at rd
+        jsr  @rs                   *  mov.l rs,@(disp:16,rd)
+        jsr  abs                   *  mov.l rs,@(disp:24,rd)
+        jsr  @@abs:8               *  mov.l rs, at -rd
+        ldc  #imm,ccr              *  mov.l rs, at abs:16
+        ldc  rs,ccr                *  mov.l rs, at abs:24
+     *  ldc  @abs:16,ccr              movfpe @abs:16,rd
+     *  ldc  @abs:24,ccr              movtpe rs, at abs:16
+     *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
+     *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
+     *  ldc  @rs+,ccr              *  mulxs.b rs,rd
+     *  ldc  @rs,ccr               *  mulxs.w rs,rd
+     *  mov.b @(disp:24,rs),rd        neg.b rs
+     *  mov.b rs,@(disp:24,rd)     *  neg.w rs
+        mov.b @abs:16,rd           *  neg.l rs
+        mov.b rs,rd                   nop
+        mov.b @abs:8,rd               not.b rs
+        mov.b rs, at abs:8            *  not.w rs
+        mov.b rs,rd                *  not.l rs
+        mov.b #imm,rd                 or.b #imm,rd
+        mov.b @rs,rd                  or.b rs,rd
+        mov.b @(disp:16,rs),rd     *  or.w #imm,rd
+        mov.b @rs+,rd              *  or.w rs,rd
+        mov.b @abs:8,rd            *  or.l #imm,rd
+        mov.b rs, at rd               *  or.l rs,rd
+        mov.b rs,@(disp:16,rd)        orc  #imm,ccr
+        mov.b rs, at -rd                 pop.w rs
+        mov.b rs, at abs:8            *  pop.l rs
+        mov.w rs, at rd                  push.w rs
+     *  mov.w @(disp:24,rs),rd     *  push.l rs
+     *  mov.w rs,@(disp:24,rd)        rotl.b rs
+     *  mov.w @abs:24,rd           *  rotl.w rs
+     *  mov.w rs, at abs:24           *  rotl.l rs
+        mov.w rs,rd                   rotr.b rs
+        mov.w #imm,rd              *  rotr.w rs
+        mov.w @rs,rd               *  rotr.l rs
+        mov.w @(disp:16,rs),rd        rotxl.b rs
+        mov.w @rs+,rd              *  rotxl.w rs
+        mov.w @abs:16,rd           *  rotxl.l rs
+        mov.w rs,@(disp:16,rd)        rotxr.b rs
+        mov.w rs, at -rd              *  rotxr.w rs
+
+     *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
+        bpt                        *  stc  ccr, at -rd
+        rte                        *  stc  ccr, at abs:16
+        rts                        *  stc  ccr, at abs:24
+        shal.b rs                     sub.b rs,rd
+     *  shal.w rs                     sub.w rs,rd
+     *  shal.l rs                  *  sub.w #imm,rd
+        shar.b rs                  *  sub.l rs,rd
+     *  shar.w rs                  *  sub.l #imm,rd
+     *  shar.l rs                     subs #imm,rd
+        shll.b rs                     subx #imm,rd
+     *  shll.w rs                     subx rs,rd
+     *  shll.l rs                  *  trapa #imm
+        shlr.b rs                     xor  #imm,rd
+     *  shlr.w rs                     xor  rs,rd
+     *  shlr.l rs                  *  xor.w #imm,rd
+        sleep                      *  xor.w rs,rd
+        stc  ccr,rd                *  xor.l #imm,rd
+     *  stc  ccr, at rs               *  xor.l rs,rd
+     *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
+
+   Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
+with variants using the suffixes `.b', `.w', and `.l' to specify the
+size of a memory operand.  `as' supports these suffixes, but does not
+require them; since one of the operands is always a register, `as' can
+deduce the correct size.
+
+   For example, since `r0' refers to a 16-bit register,
+     mov    r0, at foo
+is equivalent to
+     mov.w  r0, at foo
+
+   If you use the size suffixes, `as' issues a warning when the suffix
+and the register size do not match.
+
+
+File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
+
+8.9 HPPA Dependent Features
+===========================
+
+* Menu:
+
+* HPPA Notes::                Notes
+* HPPA Options::              Options
+* HPPA Syntax::               Syntax
+* HPPA Floating Point::       Floating Point
+* HPPA Directives::           HPPA Machine Directives
+* HPPA Opcodes::              Opcodes
+
+
+File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
+
+8.9.1 Notes
+-----------
+
+As a back end for GNU CC `as' has been throughly tested and should work
+extremely well.  We have tested it only minimally on hand written
+assembly code and no one has tested it much on the assembly output from
+the HP compilers.
+
+   The format of the debugging sections has changed since the original
+`as' port (version 1.3X) was released; therefore, you must rebuild all
+HPPA objects and libraries with the new assembler so that you can debug
+the final executable.
+
+   The HPPA `as' port generates a small subset of the relocations
+available in the SOM and ELF object file formats.  Additional relocation
+support will be added as it becomes necessary.
+
+
+File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
+
+8.9.2 Options
+-------------
+
+`as' has no machine-dependent command-line options for the HPPA.
+
+
+File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
+
+8.9.3 Syntax
+------------
+
+The assembler syntax closely follows the HPPA instruction set reference
+manual; assembler directives and general syntax closely follow the HPPA
+assembly language reference manual, with a few noteworthy differences.
+
+   First, a colon may immediately follow a label definition.  This is
+simply for compatibility with how most assembly language programmers
+write code.
+
+   Some obscure expression parsing problems may affect hand written
+code which uses the `spop' instructions, or code which makes significant
+use of the `!' line separator.
+
+   `as' is much less forgiving about missing arguments and other
+similar oversights than the HP assembler.  `as' notifies you of missing
+arguments as syntax errors; this is regarded as a feature, not a bug.
+
+   Finally, `as' allows you to use an external symbol without
+explicitly importing the symbol.  _Warning:_ in the future this will be
+an error for HPPA targets.
+
+   Special characters for HPPA targets include:
+
+   `;' is the line comment character.
+
+   `!' can be used instead of a newline to separate statements.
+
+   Since `$' has no special meaning, you may use it in symbol names.
+
+
+File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
+
+8.9.4 Floating Point
+--------------------
+
+The HPPA family uses IEEE floating-point numbers.
+
+
+File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
+
+8.9.5 HPPA Assembler Directives
+-------------------------------
+
+`as' for the HPPA supports many additional directives for compatibility
+with the native assembler.  This section describes them only briefly.
+For detailed information on HPPA-specific assembler directives, see
+`HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
+
+   `as' does _not_ support the following assembler directives described
+in the HP manual:
+
+     .endm           .liston
+     .enter          .locct
+     .leave          .macro
+     .listoff
+
+   Beyond those implemented for compatibility, `as' supports one
+additional assembler directive for the HPPA: `.param'.  It conveys
+register argument locations for static functions.  Its syntax closely
+follows the `.export' directive.
+
+   These are the additional directives in `as' for the HPPA:
+
+`.block N'
+`.blockz N'
+     Reserve N bytes of storage, and initialize them to zero.
+
+`.call'
+     Mark the beginning of a procedure call.  Only the special case
+     with _no arguments_ is allowed.
+
+`.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
+     Specify a number of parameters and flags that define the
+     environment for a procedure.
+
+     PARAM may be any of `frame' (frame size), `entry_gr' (end of
+     general register range), `entry_fr' (end of float register range),
+     `entry_sr' (end of space register range).
+
+     The values for FLAG are `calls' or `caller' (proc has
+     subroutines), `no_calls' (proc does not call subroutines),
+     `save_rp' (preserve return pointer), `save_sp' (proc preserves
+     stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
+     (proc is interrupt routine).
+
+`.code'
+     Assemble into the standard section called `$TEXT$', subsection
+     `$CODE$'.
+
+`.copyright "STRING"'
+     In the SOM object format, insert STRING into the object code,
+     marked as a copyright string.
+
+`.copyright "STRING"'
+     In the ELF object format, insert STRING into the object code,
+     marked as a version string.
+
+`.enter'
+     Not yet supported; the assembler rejects programs containing this
+     directive.
+
+`.entry'
+     Mark the beginning of a procedure.
+
+`.exit'
+     Mark the end of a procedure.
+
+`.export NAME [ ,TYP ]  [ ,PARAM=R ]'
+     Make a procedure NAME available to callers.  TYP, if present, must
+     be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
+     `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
+
+     PARAM, if present, provides either relocation information for the
+     procedure arguments and result, or a privilege level.  PARAM may be
+     `argwN' (where N ranges from `0' to `3', and indicates one of four
+     one-word arguments); `rtnval' (the procedure's result); or
+     `priv_lev' (privilege level).  For arguments or the result, R
+     specifies how to relocate, and must be one of `no' (not
+     relocatable), `gr' (argument is in general register), `fr' (in
+     floating point register), or `fu' (upper half of float register).
+     For `priv_lev', R is an integer.
+
+`.half N'
+     Define a two-byte integer constant N; synonym for the portable
+     `as' directive `.short'.
+
+`.import NAME [ ,TYP ]'
+     Converse of `.export'; make a procedure available to call.  The
+     arguments use the same conventions as the first two arguments for
+     `.export'.
+
+`.label NAME'
+     Define NAME as a label for the current assembly location.
+
+`.leave'
+     Not yet supported; the assembler rejects programs containing this
+     directive.
+
+`.origin LC'
+     Advance location counter to LC. Synonym for the `as' portable
+     directive `.org'.
+
+`.param NAME [ ,TYP ]  [ ,PARAM=R ]'
+     Similar to `.export', but used for static procedures.
+
+`.proc'
+     Use preceding the first statement of a procedure.
+
+`.procend'
+     Use following the last statement of a procedure.
+
+`LABEL .reg EXPR'
+     Synonym for `.equ'; define LABEL with the absolute expression EXPR
+     as its value.
+
+`.space SECNAME [ ,PARAMS ]'
+     Switch to section SECNAME, creating a new section by that name if
+     necessary.  You may only use PARAMS when creating a new section,
+     not when switching to an existing one.  SECNAME may identify a
+     section by number rather than by name.
+
+     If specified, the list PARAMS declares attributes of the section,
+     identified by keywords.  The keywords recognized are `spnum=EXP'
+     (identify this section by the number EXP, an absolute expression),
+     `sort=EXP' (order sections according to this sort key when linking;
+     EXP is an absolute expression), `unloadable' (section contains no
+     loadable data), `notdefined' (this section defined elsewhere), and
+     `private' (data in this section not available to other programs).
+
+`.spnum SECNAM'
+     Allocate four bytes of storage, and initialize them with the
+     section number of the section named SECNAM.  (You can define the
+     section number with the HPPA `.space' directive.)
+
+`.string "STR"'
+     Copy the characters in the string STR to the object file.  *Note
+     Strings: Strings, for information on escape sequences you can use
+     in `as' strings.
+
+     _Warning!_ The HPPA version of `.string' differs from the usual
+     `as' definition: it does _not_ write a zero byte after copying STR.
+
+`.stringz "STR"'
+     Like `.string', but appends a zero byte after copying STR to object
+     file.
+
+`.subspa NAME [ ,PARAMS ]'
+`.nsubspa NAME [ ,PARAMS ]'
+     Similar to `.space', but selects a subsection NAME within the
+     current section.  You may only specify PARAMS when you create a
+     subsection (in the first instance of `.subspa' for this NAME).
+
+     If specified, the list PARAMS declares attributes of the
+     subsection, identified by keywords.  The keywords recognized are
+     `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
+     (alignment for beginning of this subsection; a power of two),
+     `access=EXPR' (value for "access rights" field), `sort=EXPR'
+     (sorting order for this subspace in link), `code_only' (subsection
+     contains only code), `unloadable' (subsection cannot be loaded
+     into memory), `comdat' (subsection is comdat), `common'
+     (subsection is common block), `dup_comm' (subsection may have
+     duplicate names), or `zero' (subsection is all zeros, do not write
+     in object file).
+
+     `.nsubspa' always creates a new subspace with the given name, even
+     if one with the same name already exists.
+
+     `comdat', `common' and `dup_comm' can be used to implement various
+     flavors of one-only support when using the SOM linker.  The SOM
+     linker only supports specific combinations of these flags.  The
+     details are not documented.  A brief description is provided here.
+
+     `comdat' provides a form of linkonce support.  It is useful for
+     both code and data subspaces.  A `comdat' subspace has a key symbol
+     marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
+     subspace for any given key is selected.  The key symbol becomes
+     universal in shared links.  This is similar to the behavior of
+     `secondary_def' symbols.
+
+     `common' provides Fortran named common support.  It is only useful
+     for data subspaces.  Symbols with the flag `is_common' retain this
+     flag in shared links.  Referencing a `is_common' symbol in a shared
+     library from outside the library doesn't work.  Thus, `is_common'
+     symbols must be output whenever they are needed.
+
+     `common' and `dup_comm' together provide Cobol common support.
+     The subspaces in this case must all be the same length.
+     Otherwise, this support is similar to the Fortran common support.
+
+     `dup_comm' by itself provides a type of one-only support for code.
+     Only the first `dup_comm' subspace is selected.  There is a rather
+     complex algorithm to compare subspaces.  Code symbols marked with
+     the `dup_common' flag are hidden.  This support was intended for
+     "C++ duplicate inlines".
+
+     A simplified technique is used to mark the flags of symbols based
+     on the flags of their subspace.  A symbol with the scope
+     SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
+     the corresponding settings of `comdat', `common' and `dup_comm'
+     from the subspace, respectively.  This avoids having to introduce
+     additional directives to mark these symbols.  The HP assembler
+     sets `is_common' from `common'.  However, it doesn't set the
+     `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
+
+`.version "STR"'
+     Write STR as version identifier in object code.
+
+
+File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
+
+8.9.6 Opcodes
+-------------
+
+For detailed information on the HPPA machine instruction set, see
+`PA-RISC Architecture and Instruction Set Reference Manual' (HP
+09740-90039).
+
+
+File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
+
+8.10 ESA/390 Dependent Features
+===============================
+
+* Menu:
+
+* ESA/390 Notes::                Notes
+* ESA/390 Options::              Options
+* ESA/390 Syntax::               Syntax
+* ESA/390 Floating Point::       Floating Point
+* ESA/390 Directives::           ESA/390 Machine Directives
+* ESA/390 Opcodes::              Opcodes
+
+
+File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
+
+8.10.1 Notes
+------------
+
+The ESA/390 `as' port is currently intended to be a back-end for the
+GNU CC compiler.  It is not HLASM compatible, although it does support
+a subset of some of the HLASM directives.  The only supported binary
+file format is ELF; none of the usual MVS/VM/OE/USS object file
+formats, such as ESD or XSD, are supported.
+
+   When used with the GNU CC compiler, the ESA/390 `as' will produce
+correct, fully relocated, functional binaries, and has been used to
+compile and execute large projects.  However, many aspects should still
+be considered experimental; these include shared library support,
+dynamically loadable objects, and any relocation other than the 31-bit
+relocation.
+
+
+File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
+
+8.10.2 Options
+--------------
+
+`as' has no machine-dependent command-line options for the ESA/390.
+
+
+File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
+
+8.10.3 Syntax
+-------------
+
+The opcode/operand syntax follows the ESA/390 Principles of Operation
+manual; assembler directives and general syntax are loosely based on the
+prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
+are _not_ supported for the most part, with the exception of those
+described herein.
+
+   A leading dot in front of directives is optional, and the case of
+directives is ignored; thus for example, .using and USING have the same
+effect.
+
+   A colon may immediately follow a label definition.  This is simply
+for compatibility with how most assembly language programmers write
+code.
+
+   `#' is the line comment character.
+
+   `;' can be used instead of a newline to separate statements.
+
+   Since `$' has no special meaning, you may use it in symbol names.
+
+   Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
+fp6.  By using thesse symbolic names, `as' can detect simple syntax
+errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
+r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
+for r3 and rpgt or r.pgt for r4.
+
+   `*' is the current location counter.  Unlike `.' it is always
+relative to the last USING directive.  Note that this means that
+expressions cannot use multiplication, as any occurrence of `*' will be
+interpreted as a location counter.
+
+   All labels are relative to the last USING.  Thus, branches to a label
+always imply the use of base+displacement.
+
+   Many of the usual forms of address constants / address literals are
+supported.  Thus,
+     	.using	*,r3
+     	L	r15,=A(some_routine)
+     	LM	r6,r7,=V(some_longlong_extern)
+     	A	r1,=F'12'
+     	AH	r0,=H'42'
+     	ME	r6,=E'3.1416'
+     	MD	r6,=D'3.14159265358979'
+     	O	r6,=XL4'cacad0d0'
+     	.ltorg
+   should all behave as expected: that is, an entry in the literal pool
+will be created (or reused if it already exists), and the instruction
+operands will be the displacement into the literal pool using the
+current base register (as last declared with the `.using' directive).
+
+
+File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
+
+8.10.4 Floating Point
+---------------------
+
+The assembler generates only IEEE floating-point numbers.  The older
+floating point formats are not supported.
+
+
+File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
+
+8.10.5 ESA/390 Assembler Directives
+-----------------------------------
+
+`as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
+directives that are documented in the main part of this documentation.
+Several additional directives are supported in order to implement the
+ESA/390 addressing model.  The most important of these are `.using' and
+`.ltorg'
+
+   These are the additional directives in `as' for the ESA/390:
+
+`.dc'
+     A small subset of the usual DC directive is supported.
+
+`.drop REGNO'
+     Stop using REGNO as the base register.  The REGNO must have been
+     previously declared with a `.using' directive in the same section
+     as the current section.
+
+`.ebcdic STRING'
+     Emit the EBCDIC equivalent of the indicated string.  The emitted
+     string will be null terminated.  Note that the directives
+     `.string' etc. emit ascii strings by default.
+
+`EQU'
+     The standard HLASM-style EQU directive is not supported; however,
+     the standard `as' directive .equ can be used to the same effect.
+
+`.ltorg'
+     Dump the literal pool accumulated so far; begin a new literal pool.
+     The literal pool will be written in the current section; in order
+     to generate correct assembly, a `.using' must have been previously
+     specified in the same section.
+
+`.using EXPR,REGNO'
+     Use REGNO as the base register for all subsequent RX, RS, and SS
+     form instructions. The EXPR will be evaluated to obtain the base
+     address; usually, EXPR will merely be `*'.
+
+     This assembler allows two `.using' directives to be simultaneously
+     outstanding, one in the `.text' section, and one in another section
+     (typically, the `.data' section).  This feature allows dynamically
+     loaded objects to be implemented in a relatively straightforward
+     way.  A `.using' directive must always be specified in the `.text'
+     section; this will specify the base register that will be used for
+     branches in the `.text' section.  A second `.using' may be
+     specified in another section; this will specify the base register
+     that is used for non-label address literals.  When a second
+     `.using' is specified, then the subsequent `.ltorg' must be put in
+     the same section; otherwise an error will result.
+
+     Thus, for example, the following code uses `r3' to address branch
+     targets and `r4' to address the literal pool, which has been
+     written to the `.data' section.  The is, the constants
+     `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
+     the `.data' section.
+
+          .data
+          	.using  LITPOOL,r4
+          .text
+          	BASR	r3,0
+          	.using	*,r3
+                  B       START
+          	.long	LITPOOL
+          START:
+          	L	r4,4(,r3)
+          	L	r15,=A(some_routine)
+          	LTR	r15,r15
+          	BNE	LABEL
+          	AH	r0,=H'42'
+          LABEL:
+          	ME	r6,=E'3.1416'
+          .data
+          LITPOOL:
+          	.ltorg
+
+     Note that this dual-`.using' directive semantics extends and is
+     not compatible with HLASM semantics.  Note that this assembler
+     directive does not support the full range of HLASM semantics.
+
+
+
+File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
+
+8.10.6 Opcodes
+--------------
+
+For detailed information on the ESA/390 machine instruction set, see
+`ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
+
+
+File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
+
+8.11 80386 Dependent Features
+=============================
+
+   The i386 version `as' supports both the original Intel 386
+architecture in both 16 and 32-bit mode as well as AMD x86-64
+architecture extending the Intel architecture to 64-bits.
+
+* Menu:
+
+* i386-Options::                Options
+* i386-Syntax::                 AT&T Syntax versus Intel Syntax
+* i386-Mnemonics::              Instruction Naming
+* i386-Regs::                   Register Naming
+* i386-Prefixes::               Instruction Prefixes
+* i386-Memory::                 Memory References
+* i386-Jumps::                  Handling of Jump Instructions
+* i386-Float::                  Floating Point
+* i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
+* i386-16bit::                  Writing 16-bit Code
+* i386-Arch::                   Specifying an x86 CPU architecture
+* i386-Bugs::                   AT&T Syntax bugs
+* i386-Notes::                  Notes
+
+
+File: as.info,  Node: i386-Options,  Next: i386-Syntax,  Up: i386-Dependent
+
+8.11.1 Options
+--------------
+
+The i386 version of `as' has a few machine dependent options:
+
+`--32 | --64'
+     Select the word size, either 32 bits or 64 bits. Selecting 32-bit
+     implies Intel i386 architecture, while 64-bit implies AMD x86-64
+     architecture.
+
+     These options are only available with the ELF object file format,
+     and require that the necessary BFD support has been included (on a
+     32-bit platform you have to add -enable-64-bit-bfd to configure
+     enable 64-bit usage and use x86-64 as target platform).
+
+`-n'
+     By default, x86 GAS replaces multiple nop instructions used for
+     alignment within code sections with multi-byte nop instructions
+     such as leal 0(%esi,1),%esi.  This switch disables the
+     optimization.
+
+`--divide'
+     On SVR4-derived platforms, the character `/' is treated as a
+     comment character, which means that it cannot be used in
+     expressions.  The `--divide' option turns `/' into a normal
+     character.  This does not disable `/' at the beginning of a line
+     starting a comment, or affect using `#' for starting a comment.
+
+
+
+File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Options,  Up: i386-Dependent
+
+8.11.2 AT&T Syntax versus Intel Syntax
+--------------------------------------
+
+`as' now supports assembly using Intel assembler syntax.
+`.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
+the usual AT&T mode for compatibility with the output of `gcc'.  Either
+of these directives may have an optional argument, `prefix', or
+`noprefix' specifying whether registers require a `%' prefix.  AT&T
+System V/386 assembler syntax is quite different from Intel syntax.  We
+mention these differences because almost all 80386 documents use Intel
+syntax.  Notable differences between the two syntaxes are:
+
+   * AT&T immediate operands are preceded by `$'; Intel immediate
+     operands are undelimited (Intel `push 4' is AT&T `pushl $4').
+     AT&T register operands are preceded by `%'; Intel register operands
+     are undelimited.  AT&T absolute (as opposed to PC relative)
+     jump/call operands are prefixed by `*'; they are undelimited in
+     Intel syntax.
+
+   * AT&T and Intel syntax use the opposite order for source and
+     destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
+     `source, dest' convention is maintained for compatibility with
+     previous Unix assemblers.  Note that instructions with more than
+     one source operand, such as the `enter' instruction, do _not_ have
+     reversed order.  *Note i386-Bugs::.
+
+   * In AT&T syntax the size of memory operands is determined from the
+     last character of the instruction mnemonic.  Mnemonic suffixes of
+     `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
+     (32-bit) and quadruple word (64-bit) memory references.  Intel
+     syntax accomplishes this by prefixing memory operands (_not_ the
+     instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
+     and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
+     %al' in AT&T syntax.
+
+   * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
+     $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
+     SECTION:OFFSET'.  Also, the far return instruction is `lret
+     $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
+     STACK-ADJUST'.
+
+   * The AT&T assembler does not provide support for multiple section
+     programs.  Unix style systems expect all programs to be single
+     sections.
+
+
+File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
+
+8.11.3 Instruction Naming
+-------------------------
+
+Instruction mnemonics are suffixed with one character modifiers which
+specify the size of operands.  The letters `b', `w', `l' and `q'
+specify byte, word, long and quadruple word operands.  If no suffix is
+specified by an instruction then `as' tries to fill in the missing
+suffix based on the destination register operand (the last one by
+convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
+also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
+incompatible with the AT&T Unix assembler which assumes that a missing
+mnemonic suffix implies long operand size.  (This incompatibility does
+not affect compiler output since compilers always explicitly specify
+the mnemonic suffix.)
+
+   Almost all instructions have the same names in AT&T and Intel format.
+There are a few exceptions.  The sign extend and zero extend
+instructions need two sizes to specify them.  They need a size to
+sign/zero extend _from_ and a size to zero extend _to_.  This is
+accomplished by using two instruction mnemonic suffixes in AT&T syntax.
+Base names for sign extend and zero extend are `movs...' and `movz...'
+in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
+mnemonic suffixes are tacked on to this base name, the _from_ suffix
+before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
+"move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
+`bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
+long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
+word), and `lq' (from long to quadruple word).
+
+   The Intel-syntax conversion instructions
+
+   * `cbw' -- sign-extend byte in `%al' to word in `%ax',
+
+   * `cwde' -- sign-extend word in `%ax' to long in `%eax',
+
+   * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
+
+   * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
+
+   * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
+     only),
+
+   * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
+     (x86-64 only),
+
+are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
+naming.  `as' accepts either naming for these instructions.
+
+   Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
+but are `call far' and `jump far' in Intel convention.
+
+
+File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
+
+8.11.4 Register Naming
+----------------------
+
+Register operands are always prefixed with `%'.  The 80386 registers
+consist of
+
+   * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
+     `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
+     (the stack pointer).
+
+   * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
+     `%si', `%bp', and `%sp'.
+
+   * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
+     `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
+     `%bx', `%cx', and `%dx')
+
+   * the 6 section registers `%cs' (code section), `%ds' (data
+     section), `%ss' (stack section), `%es', `%fs', and `%gs'.
+
+   * the 3 processor control registers `%cr0', `%cr2', and `%cr3'.
+
+   * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
+     `%db7'.
+
+   * the 2 test registers `%tr6' and `%tr7'.
+
+   * the 8 floating point register stack `%st' or equivalently
+     `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
+     `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
+     registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
+     and `%mm7'.
+
+   * the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2', `%xmm3',
+     `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
+
+   The AMD x86-64 architecture extends the register set by:
+
+   * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
+     accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
+     frame pointer), `%rsp' (the stack pointer)
+
+   * the 8 extended registers `%r8'-`%r15'.
+
+   * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'
+
+   * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'
+
+   * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'
+
+   * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
+
+   * the 8 debug registers: `%db8'-`%db15'.
+
+   * the 8 SSE registers: `%xmm8'-`%xmm15'.
+
+
+File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
+
+8.11.5 Instruction Prefixes
+---------------------------
+
+Instruction prefixes are used to modify the following instruction.  They
+are used to repeat string instructions, to provide section overrides, to
+perform bus lock operations, and to change operand and address sizes.
+(Most instructions that normally operate on 32-bit operands will use
+16-bit operands if the instruction has an "operand size" prefix.)
+Instruction prefixes are best written on the same line as the
+instruction they act upon. For example, the `scas' (scan string)
+instruction is repeated with:
+
+             repne scas %es:(%edi),%al
+
+   You may also place prefixes on the lines immediately preceding the
+instruction, but this circumvents checks that `as' does with prefixes,
+and will not work with all prefixes.
+
+   Here is a list of instruction prefixes:
+
+   * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
+     These are automatically added by specifying using the
+     SECTION:MEMORY-OPERAND form for memory references.
+
+   * Operand/Address size prefixes `data16' and `addr16' change 32-bit
+     operands/addresses into 16-bit operands/addresses, while `data32'
+     and `addr32' change 16-bit ones (in a `.code16' section) into
+     32-bit operands/addresses.  These prefixes _must_ appear on the
+     same line of code as the instruction they modify. For example, in
+     a 16-bit `.code16' section, you might write:
+
+                  addr32 jmpl *(%ebx)
+
+   * The bus lock prefix `lock' inhibits interrupts during execution of
+     the instruction it precedes.  (This is only valid with certain
+     instructions; see a 80386 manual for details).
+
+   * The wait for coprocessor prefix `wait' waits for the coprocessor to
+     complete the current instruction.  This should never be needed for
+     the 80386/80387 combination.
+
+   * The `rep', `repe', and `repne' prefixes are added to string
+     instructions to make them repeat `%ecx' times (`%cx' times if the
+     current address size is 16-bits).  
+
+   * The `rex' family of prefixes is used by x86-64 to encode
+     extensions to i386 instruction set.  The `rex' prefix has four
+     bits -- an operand size overwrite (`64') used to change operand
+     size from 32-bit to 64-bit and X, Y and Z extensions bits used to
+     extend the register set.
+
+     You may write the `rex' prefixes directly. The `rex64xyz'
+     instruction emits `rex' prefix with all the bits set.  By omitting
+     the `64', `x', `y' or `z' you may write other prefixes as well.
+     Normally, there is no need to write the prefixes explicitly, since
+     gas will automatically generate them based on the instruction
+     operands.
+
+
+File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
+
+8.11.6 Memory References
+------------------------
+
+An Intel syntax indirect memory reference of the form
+
+     SECTION:[BASE + INDEX*SCALE + DISP]
+
+is translated into the AT&T syntax
+
+     SECTION:DISP(BASE, INDEX, SCALE)
+
+where BASE and INDEX are the optional 32-bit base and index registers,
+DISP is the optional displacement, and SCALE, taking the values 1, 2,
+4, and 8, multiplies INDEX to calculate the address of the operand.  If
+no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
+optional section register for the memory operand, and may override the
+default section register (see a 80386 manual for section register
+defaults). Note that section overrides in AT&T syntax _must_ be
+preceded by a `%'.  If you specify a section override which coincides
+with the default section register, `as' does _not_ output any section
+register override prefixes to assemble the given instruction.  Thus,
+section overrides can be specified to emphasize which section register
+is used for a given memory operand.
+
+   Here are some examples of Intel and AT&T style memory references:
+
+AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
+     BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
+     section is used (`%ss' for addressing with `%ebp' as the base
+     register).  INDEX, SCALE are both missing.
+
+AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
+     INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
+     fields are missing.  The section register here defaults to `%ds'.
+
+AT&T: `foo(,1)'; Intel `[foo]'
+     This uses the value pointed to by `foo' as a memory operand.  Note
+     that BASE and INDEX are both missing, but there is only _one_ `,'.
+     This is a syntactic exception.
+
+AT&T: `%gs:foo'; Intel `gs:foo'
+     This selects the contents of the variable `foo' with section
+     register SECTION being `%gs'.
+
+   Absolute (as opposed to PC relative) call and jump operands must be
+prefixed with `*'.  If no `*' is specified, `as' always chooses PC
+relative addressing for jump/call labels.
+
+   Any instruction that has a memory operand, but no register operand,
+_must_ specify its size (byte, word, long, or quadruple) with an
+instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
+
+   The x86-64 architecture adds an RIP (instruction pointer relative)
+addressing.  This addressing mode is specified by using `rip' as a base
+register.  Only constant offsets are valid. For example:
+
+AT&T: `1234(%rip)', Intel: `[rip + 1234]'
+     Points to the address 1234 bytes past the end of the current
+     instruction.
+
+AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
+     Points to the `symbol' in RIP relative way, this is shorter than
+     the default absolute addressing.
+
+   Other addressing modes remain unchanged in x86-64 architecture,
+except registers used are 64-bit instead of 32-bit.
+
+
+File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
+
+8.11.7 Handling of Jump Instructions
+------------------------------------
+
+Jump instructions are always optimized to use the smallest possible
+displacements.  This is accomplished by using byte (8-bit) displacement
+jumps whenever the target is sufficiently close.  If a byte displacement
+is insufficient a long displacement is used.  We do not support word
+(16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
+instruction with the `data16' instruction prefix), since the 80386
+insists upon masking `%eip' to 16 bits after the word displacement is
+added. (See also *note i386-Arch::)
+
+   Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
+and `loopne' instructions only come in byte displacements, so that if
+you use these instructions (`gcc' does not use them) you may get an
+error message (and incorrect code).  The AT&T 80386 assembler tries to
+get around this problem by expanding `jcxz foo' to
+
+              jcxz cx_zero
+              jmp cx_nonzero
+     cx_zero: jmp foo
+     cx_nonzero:
+
+
+File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
+
+8.11.8 Floating Point
+---------------------
+
+All 80387 floating point types except packed BCD are supported.  (BCD
+support may be added without much difficulty).  These data types are
+16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
+and extended (80-bit) precision floating point.  Each supported type
+has an instruction mnemonic suffix and a constructor associated with
+it.  Instruction mnemonic suffixes specify the operand's data type.
+Constructors build these data types into memory.
+
+   * Floating point constructors are `.float' or `.single', `.double',
+     and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
+     to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
+     80-bit (ten byte) real.  The 80387 only supports this format via
+     the `fldt' (load 80-bit real to stack top) and `fstpt' (store
+     80-bit real and pop stack) instructions.
+
+   * Integer constructors are `.word', `.long' or `.int', and `.quad'
+     for the 16-, 32-, and 64-bit integer formats.  The corresponding
+     instruction mnemonic suffixes are `s' (single), `l' (long), and
+     `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
+     is only present in the `fildq' (load quad integer to stack top)
+     and `fistpq' (store quad integer and pop stack) instructions.
+
+   Register to register operations should not use instruction mnemonic
+suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
+if you wrote `fst %st, %st(1)', since all register to register
+operations use 80-bit floating point operands. (Contrast this with
+`fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
+point format, then stores the result in the 4 byte location `mem')
+
+
+File: as.info,  Node: i386-SIMD,  Next: i386-16bit,  Prev: i386-Float,  Up: i386-Dependent
+
+8.11.9 Intel's MMX and AMD's 3DNow! SIMD Operations
+---------------------------------------------------
+
+`as' supports Intel's MMX instruction set (SIMD instructions for
+integer data), available on Intel's Pentium MMX processors and Pentium
+II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
+probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
+instructions for 32-bit floating point data) available on AMD's K6-2
+processor and possibly others in the future.
+
+   Currently, `as' does not support Intel's floating point SIMD, Katmai
+(KNI).
+
+   The eight 64-bit MMX operands, also used by 3DNow!, are called
+`%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
+16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
+floating point values.  The MMX registers cannot be used at the same
+time as the floating point stack.
+
+   See Intel and AMD documentation, keeping in mind that the operand
+order in instructions is reversed from the Intel syntax.
+
+
+File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-SIMD,  Up: i386-Dependent
+
+8.11.10 Writing 16-bit Code
+---------------------------
+
+While `as' normally writes only "pure" 32-bit i386 code or 64-bit
+x86-64 code depending on the default configuration, it also supports
+writing code to run in real mode or in 16-bit protected mode code
+segments.  To do this, put a `.code16' or `.code16gcc' directive before
+the assembly language instructions to be run in 16-bit mode.  You can
+switch `as' back to writing normal 32-bit code with the `.code32'
+directive.
+
+   `.code16gcc' provides experimental support for generating 16-bit
+code from gcc, and differs from `.code16' in that `call', `ret',
+`enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
+instructions default to 32-bit size.  This is so that the stack pointer
+is manipulated in the same way over function calls, allowing access to
+function parameters at the same stack offsets as in 32-bit mode.
+`.code16gcc' also automatically adds address size prefixes where
+necessary to use the 32-bit addressing modes that gcc generates.
+
+   The code which `as' generates in 16-bit mode will not necessarily
+run on a 16-bit pre-80386 processor.  To write code that runs on such a
+processor, you must refrain from using _any_ 32-bit constructs which
+require `as' to output address or operand size prefixes.
+
+   Note that writing 16-bit code instructions by explicitly specifying a
+prefix or an instruction mnemonic suffix within a 32-bit code section
+generates different machine instructions than those generated for a
+16-bit code segment.  In a 32-bit code section, the following code
+generates the machine opcode bytes `66 6a 04', which pushes the value
+`4' onto the stack, decrementing `%esp' by 2.
+
+             pushw $4
+
+   The same code in a 16-bit code section would generate the machine
+opcode bytes `6a 04' (ie. without the operand size prefix), which is
+correct since the processor default operand size is assumed to be 16
+bits in a 16-bit code section.
+
+
+File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
+
+8.11.11 AT&T Syntax bugs
+------------------------
+
+The UnixWare assembler, and probably other AT&T derived ix86 Unix
+assemblers, generate floating point instructions with reversed source
+and destination registers in certain cases.  Unfortunately, gcc and
+possibly many other programs use this reversed syntax, so we're stuck
+with it.
+
+   For example
+
+             fsub %st,%st(3)
+   results in `%st(3)' being updated to `%st - %st(3)' rather than the
+expected `%st(3) - %st'.  This happens with all the non-commutative
+arithmetic floating point operations with two register operands where
+the source register is `%st' and the destination register is `%st(i)'.
+
+
+File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
+
+8.11.12 Specifying CPU Architecture
+-----------------------------------
+
+`as' may be told to assemble for a particular CPU (sub-)architecture
+with the `.arch CPU_TYPE' directive.  This directive enables a warning
+when gas detects an instruction that is not supported on the CPU
+specified.  The choices for CPU_TYPE are:
+
+`i8086'        `i186'         `i286'         `i386'
+`i486'         `i586'         `i686'         `pentium'
+`pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
+`k6'           `athlon'                      
+               `sledgehammer'                
+`.mmx' `.sse'                                
+`.sse2'                                      
+`.sse3'                                      
+`.3dnow'                                     
+
+   Apart from the warning, there are only two other effects on `as'
+operation;  Firstly, if you specify a CPU other than `i486', then shift
+by one instructions such as `sarl $1, %eax' will automatically use a
+two byte opcode sequence.  The larger three byte opcode sequence is
+used on the 486 (and when no architecture is specified) because it
+executes faster on the 486.  Note that you can explicitly request the
+two byte opcode by writing `sarl %eax'.  Secondly, if you specify
+`i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
+offset conditional jumps will be promoted when necessary to a two
+instruction sequence consisting of a conditional jump of the opposite
+sense around an unconditional jump to the target.
+
+   Following the CPU architecture (but not a sub-architecture, which
+are those starting with a dot), you may specify `jumps' or `nojumps' to
+control automatic promotion of conditional jumps. `jumps' is the
+default, and enables jump promotion;  All external jumps will be of the
+long variety, and file-local jumps will be promoted as necessary.
+(*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
+byte offset jumps, and warns about file-local conditional jumps that
+`as' promotes.  Unconditional jumps are treated as for `jumps'.
+
+   For example
+
+      .arch i8086,nojumps
+
+
+File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
+
+8.11.13 Notes
+-------------
+
+There is some trickery concerning the `mul' and `imul' instructions
+that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
+multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
+can be output only in the one operand form.  Thus, `imul %ebx, %eax'
+does _not_ select the expanding multiply; the expanding multiply would
+clobber the `%edx' register, and this would confuse `gcc' output.  Use
+`imul %ebx' to get the 64-bit product in `%edx:%eax'.
+
+   We have added a two operand form of `imul' when the first operand is
+an immediate mode expression and the second operand is a register.
+This is just a shorthand, so that, multiplying `%eax' by 69, for
+example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
+%eax'.
+
+
+File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
+
+8.12 Intel i860 Dependent Features
+==================================
+
+* Menu:
+
+* Notes-i860::                  i860 Notes
+* Options-i860::                i860 Command-line Options
+* Directives-i860::             i860 Machine Directives
+* Opcodes for i860::            i860 Opcodes
+
+
+File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
+
+8.12.1 i860 Notes
+-----------------
+
+This is a fairly complete i860 assembler which is compatible with the
+UNIX System V/860 Release 4 assembler. However, it does not currently
+support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
+
+   Like the SVR4/860 assembler, the output object format is ELF32.
+Currently, this is the only supported object format. If there is
+sufficient interest, other formats such as COFF may be implemented.
+
+   Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
+being the default.  One difference is that AT&T syntax requires the '%'
+prefix on register names while Intel syntax does not.  Another
+difference is in the specification of relocatable expressions.  The
+Intel syntax is `ha%expression' whereas the SVR4 syntax is
+`[expression]@ha' (and similarly for the "l" and "h" selectors).
+
+
+File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
+
+8.12.2 i860 Command-line Options
+--------------------------------
+
+8.12.2.1 SVR4 compatibility options
+...................................
+
+`-V'
+     Print assembler version.
+
+`-Qy'
+     Ignored.
+
+`-Qn'
+     Ignored.
+
+8.12.2.2 Other options
+......................
+
+`-EL'
+     Select little endian output (this is the default).
+
+`-EB'
+     Select big endian output. Note that the i860 always reads
+     instructions as little endian data, so this option only effects
+     data and not instructions.
+
+`-mwarn-expand'
+     Emit a warning message if any pseudo-instruction expansions
+     occurred.  For example, a `or' instruction with an immediate
+     larger than 16-bits will be expanded into two instructions. This
+     is a very undesirable feature to rely on, so this flag can help
+     detect any code where it happens. One use of it, for instance, has
+     been to find and eliminate any place where `gcc' may emit these
+     pseudo-instructions.
+
+`-mxp'
+     Enable support for the i860XP instructions and control registers.
+     By default, this option is disabled so that only the base
+     instruction set (i.e., i860XR) is supported.
+
+`-mintel-syntax'
+     The i860 assembler defaults to AT&T/SVR4 syntax.  This option
+     enables the Intel syntax.
+
+
+File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
+
+8.12.3 i860 Machine Directives
+------------------------------
+
+`.dual'
+     Enter dual instruction mode. While this directive is supported, the
+     preferred way to use dual instruction mode is to explicitly code
+     the dual bit with the `d.' prefix.
+
+`.enddual'
+     Exit dual instruction mode. While this directive is supported, the
+     preferred way to use dual instruction mode is to explicitly code
+     the dual bit with the `d.' prefix.
+
+`.atmp'
+     Change the temporary register used when expanding pseudo
+     operations. The default register is `r31'.
+
+   The `.dual', `.enddual', and `.atmp' directives are available only
+in the Intel syntax mode.
+
+   Both syntaxes allow for the standard `.align' directive.  However,
+the Intel syntax additionally allows keywords for the alignment
+parameter: "`.align type'", where `type' is one of `.short', `.long',
+`.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
+and 8, respectively.
+
+
+File: as.info,  Node: Opcodes for i860,  Prev: Directives-i860,  Up: i860-Dependent
+
+8.12.4 i860 Opcodes
+-------------------
+
+All of the Intel i860XR and i860XP machine instructions are supported.
+Please see either _i860 Microprocessor Programmer's Reference Manual_
+or _i860 Microprocessor Architecture_ for more information.
+
+8.12.4.1 Other instruction support (pseudo-instructions)
+........................................................
+
+For compatibility with some other i860 assemblers, a number of
+pseudo-instructions are supported. While these are supported, they are
+a very undesirable feature that should be avoided - in particular, when
+they result in an expansion to multiple actual i860 instructions. Below
+are the pseudo-instructions that result in expansions.
+   * Load large immediate into general register:
+
+     The pseudo-instruction `mov imm,%rn' (where the immediate does not
+     fit within a signed 16-bit field) will be expanded into:
+          orh large_imm at h,%r0,%rn
+          or large_imm at l,%rn,%rn
+
+   * Load/store with relocatable address expression:
+
+     For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
+     be expanded into:
+          orh addr_exp at ha,%rx,%r31
+          ld.l addr_exp at l(%r31),%rn
+
+     The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
+     fst.x', and `pst.x' as well.
+
+   * Signed large immediate with add/subtract:
+
+     If any of the arithmetic operations `adds, addu, subs, subu' are
+     used with an immediate larger than 16-bits (signed), then they
+     will be expanded.  For instance, the pseudo-instruction `adds
+     large_imm,%rx,%rn' expands to:
+          orh large_imm at h,%r0,%r31
+          or large_imm at l,%r31,%r31
+          adds %r31,%rx,%rn
+
+   * Unsigned large immediate with logical operations:
+
+     Logical operations (`or, andnot, or, xor') also result in
+     expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
+     in:
+          orh large_imm at h,%rx,%r31
+          or large_imm at l,%r31,%rn
+
+     Similarly for the others, except for `and' which expands to:
+          andnot (-1 - large_imm)@h,%rx,%r31
+          andnot (-1 - large_imm)@l,%r31,%rn
+
+
+File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
+
+8.13 Intel 80960 Dependent Features
+===================================
+
+* Menu:
+
+* Options-i960::                i960 Command-line Options
+* Floating Point-i960::         Floating Point
+* Directives-i960::             i960 Machine Directives
+* Opcodes for i960::            i960 Opcodes
+
+
+File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
+
+8.13.1 i960 Command-line Options
+--------------------------------
+
+`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
+     Select the 80960 architecture.  Instructions or features not
+     supported by the selected architecture cause fatal errors.
+
+     `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
+     Synonyms are provided for compatibility with other tools.
+
+     If you do not specify any of these options, `as' generates code
+     for any instruction or feature that is supported by _some_ version
+     of the 960 (even if this means mixing architectures!).  In
+     principle, `as' attempts to deduce the minimal sufficient
+     processor type if none is specified; depending on the object code
+     format, the processor type may be recorded in the object file.  If
+     it is critical that the `as' output match a specific architecture,
+     specify that architecture explicitly.
+
+`-b'
+     Add code to collect information about conditional branches taken,
+     for later optimization using branch prediction bits.  (The
+     conditional branch instructions have branch prediction bits in the
+     CA, CB, and CC architectures.)  If BR represents a conditional
+     branch instruction, the following represents the code generated by
+     the assembler when `-b' is specified:
+
+                  call    INCREMENT ROUTINE
+                  .word   0       # pre-counter
+          Label:  BR
+                  call    INCREMENT ROUTINE
+                  .word   0       # post-counter
+
+     The counter following a branch records the number of times that
+     branch was _not_ taken; the differenc between the two counters is
+     the number of times the branch _was_ taken.
+
+     A table of every such `Label' is also generated, so that the
+     external postprocessor `gbr960' (supplied by Intel) can locate all
+     the counters.  This table is always labeled `__BRANCH_TABLE__';
+     this is a local symbol to permit collecting statistics for many
+     separate object files.  The table is word aligned, and begins with
+     a two-word header.  The first word, initialized to 0, is used in
+     maintaining linked lists of branch tables.  The second word is a
+     count of the number of entries in the table, which follow
+     immediately: each is a word, pointing to one of the labels
+     illustrated above.
+
+           +------------+------------+------------+ ... +------------+
+           |            |            |            |     |            |
+           |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
+           |            |            |            |     |            |
+           +------------+------------+------------+ ... +------------+
+
+                         __BRANCH_TABLE__ layout
+
+     The first word of the header is used to locate multiple branch
+     tables, since each object file may contain one. Normally the links
+     are maintained with a call to an initialization routine, placed at
+     the beginning of each function in the file.  The GNU C compiler
+     generates these calls automatically when you give it a `-b' option.
+     For further details, see the documentation of `gbr960'.
+
+`-no-relax'
+     Normally, Compare-and-Branch instructions with targets that require
+     displacements greater than 13 bits (or that have external targets)
+     are replaced with the corresponding compare (or `chkbit') and
+     branch instructions.  You can use the `-no-relax' option to
+     specify that `as' should generate errors instead, if the target
+     displacement is larger than 13 bits.
+
+     This option does not affect the Compare-and-Jump instructions; the
+     code emitted for them is _always_ adjusted when necessary
+     (depending on displacement size), regardless of whether you use
+     `-no-relax'.
+
+
+File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
+
+8.13.2 Floating Point
+---------------------
+
+`as' generates IEEE floating-point numbers for the directives `.float',
+`.double', `.extended', and `.single'.
+
+
+File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
+
+8.13.3 i960 Machine Directives
+------------------------------
+
+`.bss SYMBOL, LENGTH, ALIGN'
+     Reserve LENGTH bytes in the bss section for a local SYMBOL,
+     aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
+     must be positive absolute expressions.  This directive differs
+     from `.lcomm' only in that it permits you to specify an alignment.
+     *Note `.lcomm': Lcomm.
+
+`.extended FLONUMS'
+     `.extended' expects zero or more flonums, separated by commas; for
+     each flonum, `.extended' emits an IEEE extended-format (80-bit)
+     floating-point number.
+
+`.leafproc CALL-LAB, BAL-LAB'
+     You can use the `.leafproc' directive in conjunction with the
+     optimized `callj' instruction to enable faster calls of leaf
+     procedures.  If a procedure is known to call no other procedures,
+     you may define an entry point that skips procedure prolog code
+     (and that does not depend on system-supplied saved context), and
+     declare it as the BAL-LAB using `.leafproc'.  If the procedure
+     also has an entry point that goes through the normal prolog, you
+     can specify that entry point as CALL-LAB.
+
+     A `.leafproc' declaration is meant for use in conjunction with the
+     optimized call instruction `callj'; the directive records the data
+     needed later to choose between converting the `callj' into a `bal'
+     or a `call'.
+
+     CALL-LAB is optional; if only one argument is present, or if the
+     two arguments are identical, the single argument is assumed to be
+     the `bal' entry point.
+
+`.sysproc NAME, INDEX'
+     The `.sysproc' directive defines a name for a system procedure.
+     After you define it using `.sysproc', you can use NAME to refer to
+     the system procedure identified by INDEX when calling procedures
+     with the optimized call instruction `callj'.
+
+     Both arguments are required; INDEX must be between 0 and 31
+     (inclusive).
+
+
+File: as.info,  Node: Opcodes for i960,  Prev: Directives-i960,  Up: i960-Dependent
+
+8.13.4 i960 Opcodes
+-------------------
+
+All Intel 960 machine instructions are supported; *note i960
+Command-line Options: Options-i960. for a discussion of selecting the
+instruction subset for a particular 960 architecture.
+
+   Some opcodes are processed beyond simply emitting a single
+corresponding instruction: `callj', and Compare-and-Branch or
+Compare-and-Jump instructions with target displacements larger than 13
+bits.
+
+* Menu:
+
+* callj-i960::                  `callj'
+* Compare-and-branch-i960::     Compare-and-Branch
+
+
+File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
+
+8.13.4.1 `callj'
+................
+
+You can write `callj' to have the assembler or the linker determine the
+most appropriate form of subroutine call: `call', `bal', or `calls'.
+If the assembly source contains enough information--a `.leafproc' or
+`.sysproc' directive defining the operand--then `as' translates the
+`callj'; if not, it simply emits the `callj', leaving it for the linker
+to resolve.
+
+
+File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
+
+8.13.4.2 Compare-and-Branch
+...........................
+
+The 960 architectures provide combined Compare-and-Branch instructions
+that permit you to store the branch target in the lower 13 bits of the
+instruction word itself.  However, if you specify a branch target far
+enough away that its address won't fit in 13 bits, the assembler can
+either issue an error, or convert your Compare-and-Branch instruction
+into separate instructions to do the compare and the branch.
+
+   Whether `as' gives an error or expands the instruction depends on
+two choices you can make: whether you use the `-no-relax' option, and
+whether you use a "Compare and Branch" instruction or a "Compare and
+Jump" instruction.  The "Jump" instructions are _always_ expanded if
+necessary; the "Branch" instructions are expanded when necessary
+_unless_ you specify `-no-relax'--in which case `as' gives an error
+instead.
+
+   These are the Compare-and-Branch instructions, their "Jump" variants,
+and the instruction pairs they may expand into:
+
+             Compare and
+          Branch      Jump       Expanded to
+          ------    ------       ------------
+             bbc                 chkbit; bno
+             bbs                 chkbit; bo
+          cmpibe    cmpije       cmpi; be
+          cmpibg    cmpijg       cmpi; bg
+         cmpibge   cmpijge       cmpi; bge
+          cmpibl    cmpijl       cmpi; bl
+         cmpible   cmpijle       cmpi; ble
+         cmpibno   cmpijno       cmpi; bno
+         cmpibne   cmpijne       cmpi; bne
+          cmpibo    cmpijo       cmpi; bo
+          cmpobe    cmpoje       cmpo; be
+          cmpobg    cmpojg       cmpo; bg
+         cmpobge   cmpojge       cmpo; bge
+          cmpobl    cmpojl       cmpo; bl
+         cmpoble   cmpojle       cmpo; ble
+         cmpobne   cmpojne       cmpo; bne
+
+
+File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
+
+8.14 IA-64 Dependent Features
+=============================
+
+* Menu:
+
+* IA-64 Options::              Options
+* IA-64 Syntax::               Syntax
+* IA-64 Opcodes::              Opcodes
+
+
+File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
+
+8.14.1 Options
+--------------
+
+`-mconstant-gp'
+     This option instructs the assembler to mark the resulting object
+     file as using the "constant GP" model.  With this model, it is
+     assumed that the entire program uses a single global pointer (GP)
+     value.  Note that this option does not in any fashion affect the
+     machine code emitted by the assembler.  All it does is turn on the
+     EF_IA_64_CONS_GP flag in the ELF file header.
+
+`-mauto-pic'
+     This option instructs the assembler to mark the resulting object
+     file as using the "constant GP without function descriptor" data
+     model.  This model is like the "constant GP" model, except that it
+     additionally does away with function descriptors.  What this means
+     is that the address of a function refers directly to the
+     function's code entry-point.  Normally, such an address would
+     refer to a function descriptor, which contains both the code
+     entry-point and the GP-value needed by the function.  Note that
+     this option does not in any fashion affect the machine code
+     emitted by the assembler.  All it does is turn on the
+     EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
+
+`-milp32'
+
+`-milp64'
+
+`-mlp64'
+
+`-mp64'
+     These options select the data model.  The assembler defaults to
+     `-mlp64' (LP64 data model).
+
+`-mle'
+
+`-mbe'
+     These options select the byte order.  The `-mle' option selects
+     little-endian byte order (default) and `-mbe' selects big-endian
+     byte order.  Note that IA-64 machine code always uses
+     little-endian byte order.
+
+`-mtune=itanium1'
+
+`-mtune=itanium2'
+     Tune for a particular IA-64 CPU, ITANIUM1 or ITANIUM2. The default
+     is ITANIUM2.
+
+`-munwind-check=warning'
+
+`-munwind-check=error'
+     These options control what the assembler will do when performing
+     consistency checks on unwind directives.  `-munwind-check=warning'
+     will make the assembler issue a warning when an unwind directive
+     check fails.  This is the default.  `-munwind-check=error' will
+     make the assembler issue an error when an unwind directive check
+     fails.
+
+`-mhint.b=ok'
+
+`-mhint.b=warning'
+
+`-mhint.b=error'
+     These options control what the assembler will do when the `hint.b'
+     instruction is used.  `-mhint.b=ok' will make the assembler accept
+     `hint.b'.  `-mint.b=warning' will make the assembler issue a
+     warning when `hint.b' is used.  `-mhint.b=error' will make the
+     assembler treat `hint.b' as an error, which is the default.
+
+`-x'
+
+`-xexplicit'
+     These options turn on dependency violation checking.
+
+`-xauto'
+     This option instructs the assembler to automatically insert stop
+     bits where necessary to remove dependency violations.  This is the
+     default mode.
+
+`-xnone'
+     This option turns off dependency violation checking.
+
+`-xdebug'
+     This turns on debug output intended to help tracking down bugs in
+     the dependency violation checker.
+
+`-xdebugn'
+     This is a shortcut for -xnone -xdebug.
+
+`-xdebugx'
+     This is a shortcut for -xexplicit -xdebug.
+
+
+
+File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
+
+8.14.2 Syntax
+-------------
+
+The assembler syntax closely follows the IA-64 Assembly Language
+Reference Guide.
+
+* Menu:
+
+* IA-64-Chars::                Special Characters
+* IA-64-Regs::                 Register Names
+* IA-64-Bits::                 Bit Names
+
+
+File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
+
+8.14.2.1 Special Characters
+...........................
+
+`//' is the line comment token.
+
+   `;' can be used instead of a newline to separate statements.
+
+
+File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
+
+8.14.2.2 Register Names
+.......................
+
+The 128 integer registers are referred to as `rN'.  The 128
+floating-point registers are referred to as `fN'.  The 128 application
+registers are referred to as `arN'.  The 128 control registers are
+referred to as `crN'.  The 64 one-bit predicate registers are referred
+to as `pN'.  The 8 branch registers are referred to as `bN'.  In
+addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
+(`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
+`ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
+
+   For convenience, the assembler also defines aliases for all named
+application and control registers.  For example, `ar.bsp' refers to the
+register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
+the end-of-interrupt register (`cr67').
+
+
+File: as.info,  Node: IA-64-Bits,  Prev: IA-64-Regs,  Up: IA-64 Syntax
+
+8.14.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
+........................................................
+
+The assembler defines bit masks for each of the bits in the IA-64
+processor status register.  For example, `psr.ic' corresponds to a
+value of 0x2000.  These masks are primarily intended for use with the
+`ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
+else where an integer constant is expected.
+
+
+File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
+
+8.14.3 Opcodes
+--------------
+
+For detailed information on the IA-64 machine instruction set, see the
+IA-64 Architecture Handbook
+(http://developer.intel.com/design/itanium/arch_spec.htm).
+
+
+File: as.info,  Node: IP2K-Dependent,  Next: M32C-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
+
+8.15 IP2K Dependent Features
+============================
+
+* Menu:
+
+* IP2K-Opts::                   IP2K Options
+
+
+File: as.info,  Node: IP2K-Opts,  Up: IP2K-Dependent
+
+8.15.1 IP2K Options
+-------------------
+
+The Ubicom IP2K version of `as' has a few machine dependent options:
+
+`-mip2022ext'
+     `as' can assemble the extended IP2022 instructions, but it will
+     only do so if this is specifically allowed via this command line
+     option.
+
+`-mip2022'
+     This option restores the assembler's default behaviour of not
+     permitting the extended IP2022 instructions to be assembled.
+
+
+
+File: as.info,  Node: M32C-Dependent,  Next: M32R-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
+
+8.16 M32C Dependent Features
+============================
+
+   `as' can assemble code for several different members of the Renesas
+M32C family.  Normally the default is to assemble code for the M16C
+microprocessor.  The `-m32c' option may be used to change the default
+to the M32C microprocessor.
+
+* Menu:
+
+* M32C-Opts::                   M32C Options
+* M32C-Modifiers::              Symbolic Operand Modifiers
+
+
+File: as.info,  Node: M32C-Opts,  Next: M32C-Modifiers,  Up: M32C-Dependent
+
+8.16.1 M32C Options
+-------------------
+
+The Renesas M32C version of `as' has two machine-dependent options:
+
+`-m32c'
+     Assemble M32C instructions.
+
+`-m16c'
+     Assemble M16C instructions (default).
+
+
+
+File: as.info,  Node: M32C-Modifiers,  Prev: M32C-Opts,  Up: M32C-Dependent
+
+8.16.2 Symbolic Operand Modifiers
+---------------------------------
+
+The assembler supports several modifiers when using symbol addresses in
+M32C instruction operands.  The general syntax is the following:
+
+     %modifier(symbol)
+
+`%dsp8'
+`%dsp16'
+     These modifiers override the assembler's assumptions about how big
+     a symbol's address is.  Normally, when it sees an operand like
+     `sym[a0]' it assumes `sym' may require the widest displacement
+     field (16 bits for `-m16c', 24 bits for `-m32c').  These modifiers
+     tell it to assume the address will fit in an 8 or 16 bit
+     (respectively) unsigned displacement.  Note that, of course, if it
+     doesn't actually fit you will get linker errors.  Example:
+
+          mov.w %dsp8(sym)[a0],r1
+          mov.b #0,%dsp8(sym)[a0]
+
+`%hi8'
+     This modifier allows you to load bits 16 through 23 of a 24 bit
+     address into an 8 bit register.  This is useful with, for example,
+     the M16C `smovf' instruction, which expects a 20 bit address in
+     `r1h' and `a0'.  Example:
+
+          mov.b #%hi8(sym),r1h
+          mov.w #%lo16(sym),a0
+          smovf.b
+
+`%lo16'
+     Likewise, this modifier allows you to load bits 0 through 15 of a
+     24 bit address into a 16 bit register.
+
+`%hi16'
+     This modifier allows you to load bits 16 through 31 of a 32 bit
+     address into a 16 bit register.  While the M32C family only has 24
+     bits of address space, it does support addresses in pairs of 16 bit
+     registers (like `a1a0' for the `lde' instruction).  This modifier
+     is for loading the upper half in such cases.  Example:
+
+          mov.w #%hi16(sym),a1
+          mov.w #%lo16(sym),a0
+          ...
+          lde.w [a1a0],r1
+
+
+
+File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: M32C-Dependent,  Up: Machine Dependencies
+
+8.17 M32R Dependent Features
+============================
+
+* Menu:
+
+* M32R-Opts::                   M32R Options
+* M32R-Directives::             M32R Directives
+* M32R-Warnings::               M32R Warnings
+
+
+File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
+
+8.17.1 M32R Options
+-------------------
+
+The Renease M32R version of `as' has a few machine dependent options:
+
+`-m32rx'
+     `as' can assemble code for several different members of the
+     Renesas M32R family.  Normally the default is to assemble code for
+     the M32R microprocessor.  This option may be used to change the
+     default to the M32RX microprocessor, which adds some more
+     instructions to the basic M32R instruction set, and some
+     additional parameters to some of the original instructions.
+
+`-m32r2'
+     This option changes the target processor to the the M32R2
+     microprocessor.
+
+`-m32r'
+     This option can be used to restore the assembler's default
+     behaviour of assembling for the M32R microprocessor.  This can be
+     useful if the default has been changed by a previous command line
+     option.
+
+`-little'
+     This option tells the assembler to produce little-endian code and
+     data.  The default is dependent upon how the toolchain was
+     configured.
+
+`-EL'
+     This is a synonum for _-little_.
+
+`-big'
+     This option tells the assembler to produce big-endian code and
+     data.
+
+`-EB'
+     This is a synonum for _-big_.
+
+`-KPIC'
+     This option specifies that the output of the assembler should be
+     marked as position-independent code (PIC).
+
+`-parallel'
+     This option tells the assembler to attempts to combine two
+     sequential instructions into a single, parallel instruction, where
+     it is legal to do so.
+
+`-no-parallel'
+     This option disables a previously enabled _-parallel_ option.
+
+`-no-bitinst'
+     This option disables the support for the extended bit-field
+     instructions provided by the M32R2.  If this support needs to be
+     re-enabled the _-bitinst_ switch can be used to restore it.
+
+`-O'
+     This option tells the assembler to attempt to optimize the
+     instructions that it produces.  This includes filling delay slots
+     and converting sequential instructions into parallel ones.  This
+     option implies _-parallel_.
+
+`-warn-explicit-parallel-conflicts'
+     Instructs `as' to produce warning messages when questionable
+     parallel instructions are encountered.  This option is enabled by
+     default, but `gcc' disables it when it invokes `as' directly.
+     Questionable instructions are those whoes behaviour would be
+     different if they were executed sequentially.  For example the
+     code fragment `mv r1, r2 || mv r3, r1' produces a different result
+     from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
+     and then r2 into r1, whereas the later moves r2 into r1 and r3.
+
+`-Wp'
+     This is a shorter synonym for the
+     _-warn-explicit-parallel-conflicts_ option.
+
+`-no-warn-explicit-parallel-conflicts'
+     Instructs `as' not to produce warning messages when questionable
+     parallel instructions are encountered.
+
+`-Wnp'
+     This is a shorter synonym for the
+     _-no-warn-explicit-parallel-conflicts_ option.
+
+`-ignore-parallel-conflicts'
+     This option tells the assembler's to stop checking parallel
+     instructions for contraint violations.  This ability is provided
+     for hardware vendors testing chip designs and should not be used
+     under normal circumstances.
+
+`-no-ignore-parallel-conflicts'
+     This option restores the assembler's default behaviour of checking
+     parallel instructions to detect constraint violations.
+
+`-Ip'
+     This is a shorter synonym for the _-ignore-parallel-conflicts_
+     option.
+
+`-nIp'
+     This is a shorter synonym for the _-no-ignore-parallel-conflicts_
+     option.
+
+`-warn-unmatched-high'
+     This option tells the assembler to produce a warning message if a
+     `.high' pseudo op is encountered without a mathcing `.low' pseudo
+     op.  The presence of such an unmatches pseudo op usually indicates
+     a programming error.
+
+`-no-warn-unmatched-high'
+     Disables a previously enabled _-warn-unmatched-high_ option.
+
+`-Wuh'
+     This is a shorter synonym for the _-warn-unmatched-high_ option.
+
+`-Wnuh'
+     This is a shorter synonym for the _-no-warn-unmatched-high_ option.
+
+
+
+File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
+
+8.17.2 M32R Directives
+----------------------
+
+The Renease M32R version of `as' has a few architecture specific
+directives:
+
+`low EXPRESSION'
+     The `low' directive computes the value of its expression and
+     places the lower 16-bits of the result into the immediate-field of
+     the instruction.  For example:
+
+             or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
+             add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
+
+`high EXPRESSION'
+     The `high' directive computes the value of its expression and
+     places the upper 16-bits of the result into the immediate-field of
+     the instruction.  For example:
+
+             seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
+             seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
+
+`shigh EXPRESSION'
+     The `shigh' directive is very similar to the `high' directive.  It
+     also computes the value of its expression and places the upper
+     16-bits of the result into the immediate-field of the instruction.
+     The difference is that `shigh' also checks to see if the lower
+     16-bits could be interpreted as a signed number, and if so it
+     assumes that a borrow will occur from the upper-16 bits.  To
+     compensate for this the `shigh' directive pre-biases the upper 16
+     bit value by adding one to it.  For example:
+
+     For example:
+
+             seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
+             seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
+
+     In the second example the lower 16-bits are 0x8000.  If these are
+     treated as a signed value and sign extended to 32-bits then the
+     value becomes 0xffff8000.  If this value is then added to
+     0x00010000 then the result is 0x00008000.
+
+     This behaviour is to allow for the different semantics of the
+     `or3' and `add3' instructions.  The `or3' instruction treats its
+     16-bit immediate argument as unsigned whereas the `add3' treats
+     its 16-bit immediate as a signed value.  So for example:
+
+             seth  r0, #shigh(0x00008000)
+             add3  r0, r0, #low(0x00008000)
+
+     Produces the correct result in r0, whereas:
+
+             seth  r0, #shigh(0x00008000)
+             or3   r0, r0, #low(0x00008000)
+
+     Stores 0xffff8000 into r0.
+
+     Note - the `shigh' directive does not know where in the assembly
+     source code the lower 16-bits of the value are going set, so it
+     cannot check to make sure that an `or3' instruction is being used
+     rather than an `add3' instruction.  It is up to the programmer to
+     make sure that correct directives are used.
+
+`.m32r'
+     The directive performs a similar thing as the _-m32r_ command line
+     option.  It tells the assembler to only accept M32R instructions
+     from now on.  An instructions from later M32R architectures are
+     refused.
+
+`.m32rx'
+     The directive performs a similar thing as the _-m32rx_ command
+     line option.  It tells the assembler to start accepting the extra
+     instructions in the M32RX ISA as well as the ordinary M32R ISA.
+
+`.m32r2'
+     The directive performs a similar thing as the _-m32r2_ command
+     line option.  It tells the assembler to start accepting the extra
+     instructions in the M32R2 ISA as well as the ordinary M32R ISA.
+
+`.little'
+     The directive performs a similar thing as the _-little_ command
+     line option.  It tells the assembler to start producing
+     little-endian code and data.  This option should be used with care
+     as producing mixed-endian binary files is frought with danger.
+
+`.big'
+     The directive performs a similar thing as the _-big_ command line
+     option.  It tells the assembler to start producing big-endian code
+     and data.  This option should be used with care as producing
+     mixed-endian binary files is frought with danger.
+
+
+
+File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
+
+8.17.3 M32R Warnings
+--------------------
+
+There are several warning and error messages that can be produced by
+`as' which are specific to the M32R:
+
+`output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
+     This message is only produced if warnings for explicit parallel
+     conflicts have been enabled.  It indicates that the assembler has
+     encountered a parallel instruction in which the destination
+     register of the left hand instruction is used as an input register
+     in the right hand instruction.  For example in this code fragment
+     `mv r1, r2 || neg r3, r1' register r1 is the destination of the
+     move instruction and the input to the neg instruction.
+
+`output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
+     This message is only produced if warnings for explicit parallel
+     conflicts have been enabled.  It indicates that the assembler has
+     encountered a parallel instruction in which the destination
+     register of the right hand instruction is used as an input
+     register in the left hand instruction.  For example in this code
+     fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
+     of the neg instruction and the input to the move instruction.
+
+`instruction `...' is for the M32RX only'
+     This message is produced when the assembler encounters an
+     instruction which is only supported by the M32Rx processor, and
+     the `-m32rx' command line flag has not been specified to allow
+     assembly of such instructions.
+
+`unknown instruction `...''
+     This message is produced when the assembler encounters an
+     instruction which it does not recognise.
+
+`only the NOP instruction can be issued in parallel on the m32r'
+     This message is produced when the assembler encounters a parallel
+     instruction which does not involve a NOP instruction and the
+     `-m32rx' command line flag has not been specified.  Only the M32Rx
+     processor is able to execute two instructions in parallel.
+
+`instruction `...' cannot be executed in parallel.'
+     This message is produced when the assembler encounters a parallel
+     instruction which is made up of one or two instructions which
+     cannot be executed in parallel.
+
+`Instructions share the same execution pipeline'
+     This message is produced when the assembler encounters a parallel
+     instruction whoes components both use the same execution pipeline.
+
+`Instructions write to the same destination register.'
+     This message is produced when the assembler encounters a parallel
+     instruction where both components attempt to modify the same
+     register.  For example these code fragments will produce this
+     message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
+     @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
+     r3, r4' (Both write to the condition bit)
+
+
+
+File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
+
+8.18 M680x0 Dependent Features
+==============================
+
+* Menu:
+
+* M68K-Opts::                   M680x0 Options
+* M68K-Syntax::                 Syntax
+* M68K-Moto-Syntax::            Motorola Syntax
+* M68K-Float::                  Floating Point
+* M68K-Directives::             680x0 Machine Directives
+* M68K-opcodes::                Opcodes
+
+
+File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
+
+8.18.1 M680x0 Options
+---------------------
+
+The Motorola 680x0 version of `as' has a few machine dependent options:
+
+`-march=ARCHITECTURE'
+     This option specifies a target architecture.  The following
+     architectures are recognized: `68000', `68010', `68020', `68030',
+     `68040', `68060', `cpu32', `isaa', `isaaplus', `isab' and `cfv4e'.
+
+`-mcpu=CPU'
+     This option specifies a target cpu.  When used in conjunction with
+     the `-march' option, the cpu must be within the specified
+     architecture.  Also, the generic features of the architecture are
+     used for instruction generation, rather than those of the specific
+     chip.
+
+`-m[no-]68851'
+
+`-m[no-]68881'
+
+`-m[no-]div'
+
+`-m[no-]usp'
+
+`-m[no-]float'
+
+`-m[no-]mac'
+
+`-m[no-]emac'
+     Enable or disable various architecture specific features.  If a
+     chip or architecture by default supports an option (for instance
+     `-march=isaaplus' includes the `-mdiv' option), explicitly
+     disabling the option will override the default.
+
+`-l'
+     You can use the `-l' option to shorten the size of references to
+     undefined symbols.  If you do not use the `-l' option, references
+     to undefined symbols are wide enough for a full `long' (32 bits).
+     (Since `as' cannot know where these symbols end up, `as' can only
+     allocate space for the linker to fill in later.  Since `as' does
+     not know how far away these symbols are, it allocates as much
+     space as it can.)  If you use this option, the references are only
+     one word wide (16 bits).  This may be useful if you want the
+     object file to be as small as possible, and you know that the
+     relevant symbols are always less than 17 bits away.
+
+`--register-prefix-optional'
+     For some configurations, especially those where the compiler
+     normally does not prepend an underscore to the names of user
+     variables, the assembler requires a `%' before any use of a
+     register name.  This is intended to let the assembler distinguish
+     between C variables and functions named `a0' through `a7', and so
+     on.  The `%' is always accepted, but is not required for certain
+     configurations, notably `sun3'.  The `--register-prefix-optional'
+     option may be used to permit omitting the `%' even for
+     configurations for which it is normally required.  If this is
+     done, it will generally be impossible to refer to C variables and
+     functions with the same names as register names.
+
+`--bitwise-or'
+     Normally the character `|' is treated as a comment character, which
+     means that it can not be used in expressions.  The `--bitwise-or'
+     option turns `|' into a normal character.  In this mode, you must
+     either use C style comments, or start comments with a `#' character
+     at the beginning of a line.
+
+`--base-size-default-16  --base-size-default-32'
+     If you use an addressing mode with a base register without
+     specifying the size, `as' will normally use the full 32 bit value.
+     For example, the addressing mode `%a0@(%d0)' is equivalent to
+     `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
+     tell `as' to default to using the 16 bit value.  In this case,
+     `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
+     `--base-size-default-32' option to restore the default behaviour.
+
+`--disp-size-default-16  --disp-size-default-32'
+     If you use an addressing mode with a displacement, and the value
+     of the displacement is not known, `as' will normally assume that
+     the value is 32 bits.  For example, if the symbol `disp' has not
+     been defined, `as' will assemble the addressing mode
+     `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
+     the `--disp-size-default-16' option to tell `as' to instead assume
+     that the displacement is 16 bits.  In this case, `as' will
+     assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
+     may use the `--disp-size-default-32' option to restore the default
+     behaviour.
+
+`--pcrel'
+     Always keep branches PC-relative.  In the M680x0 architecture all
+     branches are defined as PC-relative.  However, on some processors
+     they are limited to word displacements maximum.  When `as' needs a
+     long branch that is not available, it normally emits an absolute
+     jump instead.  This option disables this substitution.  When this
+     option is given and no long branches are available, only word
+     branches will be emitted.  An error message will be generated if a
+     word branch cannot reach its target.  This option has no effect on
+     68020 and other processors that have long branches.  *note Branch
+     Improvement: M68K-Branch.
+
+`-m68000'
+     `as' can assemble code for several different members of the
+     Motorola 680x0 family.  The default depends upon how `as' was
+     configured when it was built; normally, the default is to assemble
+     code for the 68020 microprocessor.  The following options may be
+     used to change the default.  These options control which
+     instructions and addressing modes are permitted.  The members of
+     the 680x0 family are very similar.  For detailed information about
+     the differences, see the Motorola manuals.
+
+    `-m68000'
+    `-m68ec000'
+    `-m68hc000'
+    `-m68hc001'
+    `-m68008'
+    `-m68302'
+    `-m68306'
+    `-m68307'
+    `-m68322'
+    `-m68356'
+          Assemble for the 68000. `-m68008', `-m68302', and so on are
+          synonyms for `-m68000', since the chips are the same from the
+          point of view of the assembler.
+
+    `-m68010'
+          Assemble for the 68010.
+
+    `-m68020'
+    `-m68ec020'
+          Assemble for the 68020.  This is normally the default.
+
+    `-m68030'
+    `-m68ec030'
+          Assemble for the 68030.
+
+    `-m68040'
+    `-m68ec040'
+          Assemble for the 68040.
+
+    `-m68060'
+    `-m68ec060'
+          Assemble for the 68060.
+
+    `-mcpu32'
+    `-m68330'
+    `-m68331'
+    `-m68332'
+    `-m68333'
+    `-m68334'
+    `-m68336'
+    `-m68340'
+    `-m68341'
+    `-m68349'
+    `-m68360'
+          Assemble for the CPU32 family of chips.
+
+    `-m5200'
+
+    `-m5202'
+
+    `-m5204'
+
+    `-m5206'
+
+    `-m5206e'
+
+    `-m521x'
+
+    `-m5249'
+
+    `-m528x'
+
+    `-m5307'
+
+    `-m5407'
+
+    `-m547x'
+
+    `-m548x'
+
+    `-mcfv4'
+
+    `-mcfv4e'
+          Assemble for the ColdFire family of chips.
+
+    `-m68881'
+    `-m68882'
+          Assemble 68881 floating point instructions.  This is the
+          default for the 68020, 68030, and the CPU32.  The 68040 and
+          68060 always support floating point instructions.
+
+    `-mno-68881'
+          Do not assemble 68881 floating point instructions.  This is
+          the default for 68000 and the 68010.  The 68040 and 68060
+          always support floating point instructions, even if this
+          option is used.
+
+    `-m68851'
+          Assemble 68851 MMU instructions.  This is the default for the
+          68020, 68030, and 68060.  The 68040 accepts a somewhat
+          different set of MMU instructions; `-m68851' and `-m68040'
+          should not be used together.
+
+    `-mno-68851'
+          Do not assemble 68851 MMU instructions.  This is the default
+          for the 68000, 68010, and the CPU32.  The 68040 accepts a
+          somewhat different set of MMU instructions.
+
+
+File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
+
+8.18.2 Syntax
+-------------
+
+This syntax for the Motorola 680x0 was developed at MIT.
+
+   The 680x0 version of `as' uses instructions names and syntax
+compatible with the Sun assembler.  Intervening periods are ignored;
+for example, `movl' is equivalent to `mov.l'.
+
+   In the following table APC stands for any of the address registers
+(`%a0' through `%a7'), the program counter (`%pc'), the zero-address
+relative to the program counter (`%zpc'), a suppressed address register
+(`%za0' through `%za7'), or it may be omitted entirely.  The use of
+SIZE means one of `w' or `l', and it may be omitted, along with the
+leading colon, unless a scale is also specified.  The use of SCALE
+means one of `1', `2', `4', or `8', and it may always be omitted along
+with the leading colon.
+
+   The following addressing modes are understood:
+"Immediate"
+     `#NUMBER'
+
+"Data Register"
+     `%d0' through `%d7'
+
+"Address Register"
+     `%a0' through `%a7'
+     `%a7' is also known as `%sp', i.e. the Stack Pointer.  `%a6' is
+     also known as `%fp', the Frame Pointer.
+
+"Address Register Indirect"
+     `%a0@' through `%a7@'
+
+"Address Register Postincrement"
+     `%a0 at +' through `%a7 at +'
+
+"Address Register Predecrement"
+     `%a0 at -' through `%a7 at -'
+
+"Indirect Plus Offset"
+     `APC@(NUMBER)'
+
+"Index"
+     `APC@(NUMBER,REGISTER:SIZE:SCALE)'
+
+     The NUMBER may be omitted.
+
+"Postindex"
+     `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
+
+     The ONUMBER or the REGISTER, but not both, may be omitted.
+
+"Preindex"
+     `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
+
+     The NUMBER may be omitted.  Omitting the REGISTER produces the
+     Postindex addressing mode.
+
+"Absolute"
+     `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
+
+
+File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
+
+8.18.3 Motorola Syntax
+----------------------
+
+The standard Motorola syntax for this chip differs from the syntax
+already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
+Motorola syntax for operands, even if MIT syntax is used for other
+operands in the same instruction.  The two kinds of syntax are fully
+compatible.
+
+   In the following table APC stands for any of the address registers
+(`%a0' through `%a7'), the program counter (`%pc'), the zero-address
+relative to the program counter (`%zpc'), or a suppressed address
+register (`%za0' through `%za7').  The use of SIZE means one of `w' or
+`l', and it may always be omitted along with the leading dot.  The use
+of SCALE means one of `1', `2', `4', or `8', and it may always be
+omitted along with the leading asterisk.
+
+   The following additional addressing modes are understood:
+
+"Address Register Indirect"
+     `(%a0)' through `(%a7)'
+     `%a7' is also known as `%sp', i.e. the Stack Pointer.  `%a6' is
+     also known as `%fp', the Frame Pointer.
+
+"Address Register Postincrement"
+     `(%a0)+' through `(%a7)+'
+
+"Address Register Predecrement"
+     `-(%a0)' through `-(%a7)'
+
+"Indirect Plus Offset"
+     `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
+
+     The NUMBER may also appear within the parentheses, as in
+     `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
+     (with an address register, omitting the NUMBER produces Address
+     Register Indirect mode).
+
+"Index"
+     `NUMBER(APC,REGISTER.SIZE*SCALE)'
+
+     The NUMBER may be omitted, or it may appear within the
+     parentheses.  The APC may be omitted.  The REGISTER and the APC
+     may appear in either order.  If both APC and REGISTER are address
+     registers, and the SIZE and SCALE are omitted, then the first
+     register is taken as the base register, and the second as the
+     index register.
+
+"Postindex"
+     `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
+
+     The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
+     NUMBER or the APC may be omitted, but not both.
+
+"Preindex"
+     `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
+
+     The NUMBER, or the APC, or the REGISTER, or any two of them, may
+     be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
+     may appear in either order.  If both APC and REGISTER are address
+     registers, and the SIZE and SCALE are omitted, then the first
+     register is taken as the base register, and the second as the
+     index register.
+
+
+File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
+
+8.18.4 Floating Point
+---------------------
+
+Packed decimal (P) format floating literals are not supported.  Feel
+free to add the code!
+
+   The floating point formats generated by directives are these.
+
+`.float'
+     `Single' precision floating point constants.
+
+`.double'
+     `Double' precision floating point constants.
+
+`.extend'
+`.ldouble'
+     `Extended' precision (`long double') floating point constants.
+
+
+File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
+
+8.18.5 680x0 Machine Directives
+-------------------------------
+
+In order to be compatible with the Sun assembler the 680x0 assembler
+understands the following directives.
+
+`.data1'
+     This directive is identical to a `.data 1' directive.
+
+`.data2'
+     This directive is identical to a `.data 2' directive.
+
+`.even'
+     This directive is a special case of the `.align' directive; it
+     aligns the output to an even byte boundary.
+
+`.skip'
+     This directive is identical to a `.space' directive.
+
+`.arch NAME'
+     Select the target architecture and extension features.  Valid
+     valuse for NAME are the same as for the `-march' command line
+     option.  This directive cannot be specified after any instructions
+     have been assembled.  If it is given multiple times, or in
+     conjuction with the `-march' option, all uses must be for the same
+     architecture and extension set.
+
+`.cpu NAME'
+     Select the target cpu.  Valid valuse for NAME are the same as for
+     the `-mcpu' command line option.  This directive cannot be
+     specified after any instructions have been assembled.  If it is
+     given multiple times, or in conjuction with the `-mopt' option,
+     all uses must be for the same cpu.
+
+
+
+File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
+
+8.18.6 Opcodes
+--------------
+
+* Menu:
+
+* M68K-Branch::                 Branch Improvement
+* M68K-Chars::                  Special Characters
+
+
+File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
+
+8.18.6.1 Branch Improvement
+...........................
+
+Certain pseudo opcodes are permitted for branch instructions.  They
+expand to the shortest branch instruction that reach the target.
+Generally these mnemonics are made by substituting `j' for `b' at the
+start of a Motorola mnemonic.
+
+   The following table summarizes the pseudo-operations.  A `*' flags
+cases that are more fully described after the table:
+
+               Displacement
+               +------------------------------------------------------------
+               |                68020           68000/10, not PC-relative OK
+     Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
+               +------------------------------------------------------------
+          jbsr |bsrs    bsrw    bsrl            jsr
+           jra |bras    braw    bral            jmp
+     *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
+     *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
+          fjXX | N/A    fbXXw   fbXXl            N/A
+
+     XX: condition
+     NX: negative of condition XX
+                       `*'--see full description below
+         `**'--this expansion mode is disallowed by `--pcrel'
+
+`jbsr'
+`jra'
+     These are the simplest jump pseudo-operations; they always map to
+     one particular machine instruction, depending on the displacement
+     to the branch target.  This instruction will be a byte or word
+     branch is that is sufficient.  Otherwise, a long branch will be
+     emitted if available.  If no long branches are available and the
+     `--pcrel' option is not given, an absolute long jump will be
+     emitted instead.  If no long branches are available, the `--pcrel'
+     option is given, and a word branch cannot reach the target, an
+     error message is generated.
+
+     In addition to standard branch operands, `as' allows these
+     pseudo-operations to have all operands that are allowed for jsr
+     and jmp, substituting these instructions if the operand given is
+     not valid for a branch instruction.
+
+`jXX'
+     Here, `jXX' stands for an entire family of pseudo-operations,
+     where XX is a conditional branch or condition-code test.  The full
+     list of pseudo-ops in this family is:
+           jhi   jls   jcc   jcs   jne   jeq   jvc
+           jvs   jpl   jmi   jge   jlt   jgt   jle
+
+     Usually, each of these pseudo-operations expands to a single branch
+     instruction.  However, if a word branch is not sufficient, no long
+     branches are available, and the `--pcrel' option is not given, `as'
+     issues a longer code fragment in terms of NX, the opposite
+     condition to XX.  For example, under these conditions:
+              jXX foo
+     gives
+               bNXs oof
+               jmp foo
+           oof:
+
+`dbXX'
+     The full family of pseudo-operations covered here is
+           dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
+           dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
+           dbf    dbra   dbt
+
+     Motorola `dbXX' instructions allow word displacements only.  When
+     a word displacement is sufficient, each of these pseudo-operations
+     expands to the corresponding Motorola instruction.  When a word
+     displacement is not sufficient and long branches are available,
+     when the source reads `dbXX foo', `as' emits
+               dbXX oo1
+               bras oo2
+           oo1:bral foo
+           oo2:
+
+     If, however, long branches are not available and the `--pcrel'
+     option is not given, `as' emits
+               dbXX oo1
+               bras oo2
+           oo1:jmp foo
+           oo2:
+
+`fjXX'
+     This family includes
+           fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
+           fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
+           fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
+           fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
+           fjugt  fjule  fjult  fjun
+
+     Each of these pseudo-operations always expands to a single Motorola
+     coprocessor branch instruction, word or long.  All Motorola
+     coprocessor branch instructions allow both word and long
+     displacements.
+
+
+
+File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
+
+8.18.6.2 Special Characters
+...........................
+
+The immediate character is `#' for Sun compatibility.  The line-comment
+character is `|' (unless the `--bitwise-or' option is used).  If a `#'
+appears at the beginning of a line, it is treated as a comment unless
+it looks like `# line file', in which case it is treated normally.
+
+
+File: as.info,  Node: M68HC11-Dependent,  Next: MIPS-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
+
+8.19 M68HC11 and M68HC12 Dependent Features
+===========================================
+
+* Menu:
+
+* M68HC11-Opts::                   M68HC11 and M68HC12 Options
+* M68HC11-Syntax::                 Syntax
+* M68HC11-Modifiers::              Symbolic Operand Modifiers
+* M68HC11-Directives::             Assembler Directives
+* M68HC11-Float::                  Floating Point
+* M68HC11-opcodes::                Opcodes
+
+
+File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
+
+8.19.1 M68HC11 and M68HC12 Options
+----------------------------------
+
+The Motorola 68HC11 and 68HC12 version of `as' have a few machine
+dependent options.
+
+`-m68hc11'
+     This option switches the assembler in the M68HC11 mode. In this
+     mode, the assembler only accepts 68HC11 operands and mnemonics. It
+     produces code for the 68HC11.
+
+`-m68hc12'
+     This option switches the assembler in the M68HC12 mode. In this
+     mode, the assembler also accepts 68HC12 operands and mnemonics. It
+     produces code for the 68HC12. A few 68HC11 instructions are
+     replaced by some 68HC12 instructions as recommended by Motorola
+     specifications.
+
+`-m68hcs12'
+     This option switches the assembler in the M68HCS12 mode.  This
+     mode is similar to `-m68hc12' but specifies to assemble for the
+     68HCS12 series.  The only difference is on the assembling of the
+     `movb' and `movw' instruction when a PC-relative operand is used.
+
+`-mshort'
+     This option controls the ABI and indicates to use a 16-bit integer
+     ABI.  It has no effect on the assembled instructions.  This is the
+     default.
+
+`-mlong'
+     This option controls the ABI and indicates to use a 32-bit integer
+     ABI.
+
+`-mshort-double'
+     This option controls the ABI and indicates to use a 32-bit float
+     ABI.  This is the default.
+
+`-mlong-double'
+     This option controls the ABI and indicates to use a 64-bit float
+     ABI.
+
+`--strict-direct-mode'
+     You can use the `--strict-direct-mode' option to disable the
+     automatic translation of direct page mode addressing into extended
+     mode when the instruction does not support direct mode.  For
+     example, the `clr' instruction does not support direct page mode
+     addressing. When it is used with the direct page mode, `as' will
+     ignore it and generate an absolute addressing.  This option
+     prevents `as' from doing this, and the wrong usage of the direct
+     page mode will raise an error.
+
+`--short-branchs'
+     The `--short-branchs' option turns off the translation of relative
+     branches into absolute branches when the branch offset is out of
+     range. By default `as' transforms the relative branch (`bsr',
+     `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc', `bls',
+     `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch when
+     the offset is out of the -128 .. 127 range.  In that case, the
+     `bsr' instruction is translated into a `jsr', the `bra'
+     instruction is translated into a `jmp' and the conditional branchs
+     instructions are inverted and followed by a `jmp'. This option
+     disables these translations and `as' will generate an error if a
+     relative branch is out of range. This option does not affect the
+     optimization associated to the `jbra', `jbsr' and `jbXX' pseudo
+     opcodes.
+
+`--force-long-branchs'
+     The `--force-long-branchs' option forces the translation of
+     relative branches into absolute branches. This option does not
+     affect the optimization associated to the `jbra', `jbsr' and
+     `jbXX' pseudo opcodes.
+
+`--print-insn-syntax'
+     You can use the `--print-insn-syntax' option to obtain the syntax
+     description of the instruction when an error is detected.
+
+`--print-opcodes'
+     The `--print-opcodes' option prints the list of all the
+     instructions with their syntax. The first item of each line
+     represents the instruction name and the rest of the line indicates
+     the possible operands for that instruction. The list is printed in
+     alphabetical order. Once the list is printed `as' exits.
+
+`--generate-example'
+     The `--generate-example' option is similar to `--print-opcodes'
+     but it generates an example for each instruction instead.
+
+
+File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
+
+8.19.2 Syntax
+-------------
+
+In the M68HC11 syntax, the instruction name comes first and it may be
+followed by one or several operands (up to three). Operands are
+separated by comma (`,'). In the normal mode, `as' will complain if too
+many operands are specified for a given instruction. In the MRI mode
+(turned on with `-M' option), it will treat them as comments. Example:
+
+     inx
+     lda  #23
+     bset 2,x #4
+     brclr *bot #8 foo
+
+   The following addressing modes are understood for 68HC11 and 68HC12:
+"Immediate"
+     `#NUMBER'
+
+"Address Register"
+     `NUMBER,X', `NUMBER,Y'
+
+     The NUMBER may be omitted in which case 0 is assumed.
+
+"Direct Addressing mode"
+     `*SYMBOL', or `*DIGITS'
+
+"Absolute"
+     `SYMBOL', or `DIGITS'
+
+   The M68HC12 has other more complex addressing modes. All of them are
+supported and they are represented below:
+
+"Constant Offset Indexed Addressing Mode"
+     `NUMBER,REG'
+
+     The NUMBER may be omitted in which case 0 is assumed.  The
+     register can be either `X', `Y', `SP' or `PC'.  The assembler will
+     use the smaller post-byte definition according to the constant
+     value (5-bit constant offset, 9-bit constant offset or 16-bit
+     constant offset).  If the constant is not known by the assembler
+     it will use the 16-bit constant offset post-byte and the value
+     will be resolved at link time.
+
+"Offset Indexed Indirect"
+     `[NUMBER,REG]'
+
+     The register can be either `X', `Y', `SP' or `PC'.
+
+"Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
+     `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
+
+     The number must be in the range `-8'..`+8' and must not be 0.  The
+     register can be either `X', `Y', `SP' or `PC'.
+
+"Accumulator Offset"
+     `ACC,REG'
+
+     The accumulator register can be either `A', `B' or `D'.  The
+     register can be either `X', `Y', `SP' or `PC'.
+
+"Accumulator D offset indexed-indirect"
+     `[D,REG]'
+
+     The register can be either `X', `Y', `SP' or `PC'.
+
+
+   For example:
+
+     ldab 1024,sp
+     ldd [10,x]
+     orab 3,+x
+     stab -2,y-
+     ldx a,pc
+     sty [d,sp]
+
+
+File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
+
+8.19.3 Symbolic Operand Modifiers
+---------------------------------
+
+The assembler supports several modifiers when using symbol addresses in
+68HC11 and 68HC12 instruction operands.  The general syntax is the
+following:
+
+     %modifier(symbol)
+
+`%addr'
+     This modifier indicates to the assembler and linker to use the
+     16-bit physical address corresponding to the symbol.  This is
+     intended to be used on memory window systems to map a symbol in
+     the memory bank window.  If the symbol is in a memory expansion
+     part, the physical address corresponds to the symbol address
+     within the memory bank window.  If the symbol is not in a memory
+     expansion part, this is the symbol address (using or not using the
+     %addr modifier has no effect in that case).
+
+`%page'
+     This modifier indicates to use the memory page number corresponding
+     to the symbol.  If the symbol is in a memory expansion part, its
+     page number is computed by the linker as a number used to map the
+     page containing the symbol in the memory bank window.  If the
+     symbol is not in a memory expansion part, the page number is 0.
+
+`%hi'
+     This modifier indicates to use the 8-bit high part of the physical
+     address of the symbol.
+
+`%lo'
+     This modifier indicates to use the 8-bit low part of the physical
+     address of the symbol.
+
+
+   For example a 68HC12 call to a function `foo_example' stored in
+memory expansion part could be written as follows:
+
+     call %addr(foo_example),%page(foo_example)
+
+   and this is equivalent to
+
+     call foo_example
+
+   And for 68HC11 it could be written as follows:
+
+     ldab #%page(foo_example)
+     stab _page_switch
+     jsr  %addr(foo_example)
+
+
+File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
+
+8.19.4 Assembler Directives
+---------------------------
+
+The 68HC11 and 68HC12 version of `as' have the following specific
+assembler directives:
+
+`.relax'
+     The relax directive is used by the `GNU Compiler' to emit a
+     specific relocation to mark a group of instructions for linker
+     relaxation.  The sequence of instructions within the group must be
+     known to the linker so that relaxation can be performed.
+
+`.mode [mshort|mlong|mshort-double|mlong-double]'
+     This directive specifies the ABI.  It overrides the `-mshort',
+     `-mlong', `-mshort-double' and `-mlong-double' options.
+
+`.far SYMBOL'
+     This directive marks the symbol as a `far' symbol meaning that it
+     uses a `call/rtc' calling convention as opposed to `jsr/rts'.
+     During a final link, the linker will identify references to the
+     `far' symbol and will verify the proper calling convention.
+
+`.interrupt SYMBOL'
+     This directive marks the symbol as an interrupt entry point.  This
+     information is then used by the debugger to correctly unwind the
+     frame across interrupts.
+
+`.xrefb SYMBOL'
+     This directive is defined for compatibility with the
+     `Specification for Motorola 8 and 16-Bit Assembly Language Input
+     Standard' and is ignored.
+
+
+
+File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
+
+8.19.5 Floating Point
+---------------------
+
+Packed decimal (P) format floating literals are not supported.  Feel
+free to add the code!
+
+   The floating point formats generated by directives are these.
+
+`.float'
+     `Single' precision floating point constants.
+
+`.double'
+     `Double' precision floating point constants.
+
+`.extend'
+`.ldouble'
+     `Extended' precision (`long double') floating point constants.
+
+
+File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
+
+8.19.6 Opcodes
+--------------
+
+* Menu:
+
+* M68HC11-Branch::                 Branch Improvement
+
+
+File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
+
+8.19.6.1 Branch Improvement
+...........................
+
+Certain pseudo opcodes are permitted for branch instructions.  They
+expand to the shortest branch instruction that reach the target.
+Generally these mnemonics are made by prepending `j' to the start of
+Motorola mnemonic. These pseudo opcodes are not affected by the
+`--short-branchs' or `--force-long-branchs' options.
+
+   The following table summarizes the pseudo-operations.
+
+                             Displacement Width
+          +-------------------------------------------------------------+
+          |                     Options                                 |
+          |    --short-branchs            --force-long-branchs          |
+          +--------------------------+----------------------------------+
+       Op |BYTE             WORD     | BYTE          WORD               |
+          +--------------------------+----------------------------------+
+      bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
+      bra | bra <pc-rel>    <error>  |               jmp <abs>          |
+     jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
+     jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
+      bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
+     jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
+          |                jmp <abs> |                                  |
+          +--------------------------+----------------------------------+
+     XX: condition
+     NX: negative of condition XX
+
+`jbsr'
+`jbra'
+     These are the simplest jump pseudo-operations; they always map to
+     one particular machine instruction, depending on the displacement
+     to the branch target.
+
+`jbXX'
+     Here, `jbXX' stands for an entire family of pseudo-operations,
+     where XX is a conditional branch or condition-code test.  The full
+     list of pseudo-ops in this family is:
+           jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
+           jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
+
+     For the cases of non-PC relative displacements and long
+     displacements, `as' issues a longer code fragment in terms of NX,
+     the opposite condition to XX.  For example, for the non-PC
+     relative case:
+              jbXX foo
+     gives
+               bNXs oof
+               jmp foo
+           oof:
+
+
+
+File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
+
+8.20 MIPS Dependent Features
+============================
+
+   GNU `as' for MIPS architectures supports several different MIPS
+processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
+information about the MIPS instruction set, see `MIPS RISC
+Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
+of MIPS assembly conventions, see "Appendix D: Assembly Language
+Programming" in the same work.
+
+* Menu:
+
+* MIPS Opts::   	Assembler options
+* MIPS Object:: 	ECOFF object code
+* MIPS Stabs::  	Directives for debugging information
+* MIPS ISA::    	Directives to override the ISA level
+* MIPS symbol sizes::   Directives to override the size of symbols
+* MIPS autoextend::	Directives for extending MIPS 16 bit instructions
+* MIPS insn::		Directive to mark data as an instruction
+* MIPS option stack::	Directives to save and restore options
+* MIPS ASE instruction generation overrides:: Directives to control
+  			generation of MIPS ASE instructions
+
+
+File: as.info,  Node: MIPS Opts,  Next: MIPS Object,  Up: MIPS-Dependent
+
+8.20.1 Assembler options
+------------------------
+
+The MIPS configurations of GNU `as' support these special options:
+
+`-G NUM'
+     This option sets the largest size of an object that can be
+     referenced implicitly with the `gp' register.  It is only accepted
+     for targets that use ECOFF format.  The default value is 8.
+
+`-EB'
+`-EL'
+     Any MIPS configuration of `as' can select big-endian or
+     little-endian output at run time (unlike the other GNU development
+     tools, which must be configured for one or the other).  Use `-EB'
+     to select big-endian output, and `-EL' for little-endian.
+
+`-mips1'
+`-mips2'
+`-mips3'
+`-mips4'
+`-mips5'
+`-mips32'
+`-mips32r2'
+`-mips64'
+`-mips64r2'
+     Generate code for a particular MIPS Instruction Set Architecture
+     level.  `-mips1' corresponds to the R2000 and R3000 processors,
+     `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
+     and `-mips4' to the R8000 and R10000 processors.  `-mips5',
+     `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
+     generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
+     RELEASE 2 ISA processors, respectively.  You can also switch
+     instruction sets during the assembly; see *Note Directives to
+     override the ISA level: MIPS ISA.
+
+`-mgp32'
+`-mfp32'
+     Some macros have different expansions for 32-bit and 64-bit
+     registers.  The register sizes are normally inferred from the ISA
+     and ABI, but these flags force a certain group of registers to be
+     treated as 32 bits wide at all times.  `-mgp32' controls the size
+     of general-purpose registers and `-mfp32' controls the size of
+     floating-point registers.
+
+     On some MIPS variants there is a 32-bit mode flag; when this flag
+     is set, 64-bit instructions generate a trap.  Also, some 32-bit
+     OSes only save the 32-bit registers on a context switch, so it is
+     essential never to use the 64-bit registers.
+
+`-mgp64'
+     Assume that 64-bit general purpose registers are available.  This
+     is provided in the interests of symmetry with -gp32.
+
+`-mips16'
+`-no-mips16'
+     Generate code for the MIPS 16 processor.  This is equivalent to
+     putting `.set mips16' at the start of the assembly file.
+     `-no-mips16' turns off this option.
+
+`-mips3d'
+`-no-mips3d'
+     Generate code for the MIPS-3D Application Specific Extension.
+     This tells the assembler to accept MIPS-3D instructions.
+     `-no-mips3d' turns off this option.
+
+`-mdmx'
+`-no-mdmx'
+     Generate code for the MDMX Application Specific Extension.  This
+     tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
+     off this option.
+
+`-mdsp'
+`-mno-dsp'
+     Generate code for the DSP Application Specific Extension.  This
+     tells the assembler to accept DSP instructions.  `-mno-dsp' turns
+     off this option.
+
+`-mmt'
+`-mno-mt'
+     Generate code for the MT Application Specific Extension.  This
+     tells the assembler to accept MT instructions.  `-mno-mt' turns
+     off this option.
+
+`-mfix7000'
+`-mno-fix7000'
+     Cause nops to be inserted if the read of the destination register
+     of an mfhi or mflo instruction occurs in the following two
+     instructions.
+
+`-mfix-vr4120'
+`-no-mfix-vr4120'
+     Insert nops to work around certain VR4120 errata.  This option is
+     intended to be used on GCC-generated code: it is not designed to
+     catch all problems in hand-written assembler code.
+
+`-mfix-vr4130'
+`-no-mfix-vr4130'
+     Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
+
+`-m4010'
+`-no-m4010'
+     Generate code for the LSI R4010 chip.  This tells the assembler to
+     accept the R4010 specific instructions (`addciu', `ffc', etc.),
+     and to not schedule `nop' instructions around accesses to the `HI'
+     and `LO' registers.  `-no-m4010' turns off this option.
+
+`-m4650'
+`-no-m4650'
+     Generate code for the MIPS R4650 chip.  This tells the assembler
+     to accept the `mad' and `madu' instruction, and to not schedule
+     `nop' instructions around accesses to the `HI' and `LO' registers.
+     `-no-m4650' turns off this option.
+
+`-m3900'
+`-no-m3900'
+`-m4100'
+`-no-m4100'
+     For each option `-mNNNN', generate code for the MIPS RNNNN chip.
+     This tells the assembler to accept instructions specific to that
+     chip, and to schedule for that chip's hazards.
+
+`-march=CPU'
+     Generate code for a particular MIPS cpu.  It is exactly equivalent
+     to `-mCPU', except that there are more value of CPU understood.
+     Valid CPU value are:
+
+          2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
+          vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
+          rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
+          10000, 12000, mips32-4k, sb1
+
+`-mtune=CPU'
+     Schedule and tune for a particular MIPS cpu.  Valid CPU values are
+     identical to `-march=CPU'.
+
+`-mabi=ABI'
+     Record which ABI the source code uses.  The recognized arguments
+     are: `32', `n32', `o64', `64' and `eabi'.
+
+`-msym32'
+`-mno-sym32'
+     Equivalent to adding `.set sym32' or `.set nosym32' to the
+     beginning of the assembler input.  *Note MIPS symbol sizes::.
+
+`-nocpp'
+     This option is ignored.  It is accepted for command-line
+     compatibility with other assemblers, which use it to turn off C
+     style preprocessing.  With GNU `as', there is no need for
+     `-nocpp', because the GNU assembler itself never runs the C
+     preprocessor.
+
+`--construct-floats'
+`--no-construct-floats'
+     The `--no-construct-floats' option disables the construction of
+     double width floating point constants by loading the two halves of
+     the value into the two single width floating point registers that
+     make up the double width register.  This feature is useful if the
+     processor support the FR bit in its status  register, and this bit
+     is known (by the programmer) to be set.  This bit prevents the
+     aliasing of the double width register by the single width
+     registers.
+
+     By default `--construct-floats' is selected, allowing construction
+     of these floating point constants.
+
+`--trap'
+`--no-break'
+     `as' automatically macro expands certain division and
+     multiplication instructions to check for overflow and division by
+     zero.  This option causes `as' to generate code to take a trap
+     exception rather than a break exception when an error is detected.
+     The trap instructions are only supported at Instruction Set
+     Architecture level 2 and higher.
+
+`--break'
+`--no-trap'
+     Generate code to take a break exception rather than a trap
+     exception when an error is detected.  This is the default.
+
+`-mpdr'
+`-mno-pdr'
+     Control generation of `.pdr' sections.  Off by default on IRIX, on
+     elsewhere.
+
+`-mshared'
+`-mno-shared'
+     When generating code using the Unix calling conventions (selected
+     by `-KPIC' or `-mcall_shared'), gas will normally generate code
+     which can go into a shared library.  The `-mno-shared' option
+     tells gas to generate code which uses the calling convention, but
+     can not go into a shared library.  The resulting code is slightly
+     more efficient.  This option only affects the handling of the
+     `.cpload' and `.cpsetup' pseudo-ops.
+
+
+File: as.info,  Node: MIPS Object,  Next: MIPS Stabs,  Prev: MIPS Opts,  Up: MIPS-Dependent
+
+8.20.2 MIPS ECOFF object code
+-----------------------------
+
+Assembling for a MIPS ECOFF target supports some additional sections
+besides the usual `.text', `.data' and `.bss'.  The additional sections
+are `.rdata', used for read-only data, `.sdata', used for small data,
+and `.sbss', used for small common objects.
+
+   When assembling for ECOFF, the assembler uses the `$gp' (`$28')
+register to form the address of a "small object".  Any object in the
+`.sdata' or `.sbss' sections is considered "small" in this sense.  For
+external objects, or for objects in the `.bss' section, you can use the
+`gcc' `-G' option to control the size of objects addressed via `$gp';
+the default value is 8, meaning that a reference to any object eight
+bytes or smaller uses `$gp'.  Passing `-G 0' to `as' prevents it from
+using the `$gp' register on the basis of object size (but the assembler
+uses `$gp' for objects in `.sdata' or `sbss' in any case).  The size of
+an object in the `.bss' section is set by the `.comm' or `.lcomm'
+directive that defines it.  The size of an external object may be set
+with the `.extern' directive.  For example, `.extern sym,4' declares
+that the object at `sym' is 4 bytes in length, whie leaving `sym'
+otherwise undefined.
+
+   Using small ECOFF objects requires linker support, and assumes that
+the `$gp' register is correctly initialized (normally done
+automatically by the startup code).  MIPS ECOFF assembly code must not
+modify the `$gp' register.
+
+
+File: as.info,  Node: MIPS Stabs,  Next: MIPS ISA,  Prev: MIPS Object,  Up: MIPS-Dependent
+
+8.20.3 Directives for debugging information
+-------------------------------------------
+
+MIPS ECOFF `as' supports several directives used for generating
+debugging information which are not support by traditional MIPS
+assemblers.  These are `.def', `.endef', `.dim', `.file', `.scl',
+`.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
+The debugging information generated by the three `.stab' directives can
+only be read by GDB, not by traditional MIPS debuggers (this
+enhancement is required to fully support C++ debugging).  These
+directives are primarily used by compilers, not assembly language
+programmers!
+
+
+File: as.info,  Node: MIPS symbol sizes,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
+
+8.20.4 Directives to override the size of symbols
+-------------------------------------------------
+
+The n64 ABI allows symbols to have any 64-bit value.  Although this
+provides a great deal of flexibility, it means that some macros have
+much longer expansions than their 32-bit counterparts.  For example,
+the non-PIC expansion of `dla $4,sym' is usually:
+
+     lui     $4,%highest(sym)
+     lui     $1,%hi(sym)
+     daddiu  $4,$4,%higher(sym)
+     daddiu  $1,$1,%lo(sym)
+     dsll32  $4,$4,0
+     daddu   $4,$4,$1
+
+   whereas the 32-bit expansion is simply:
+
+     lui     $4,%hi(sym)
+     daddiu  $4,$4,%lo(sym)
+
+   n64 code is sometimes constructed in such a way that all symbolic
+constants are known to have 32-bit values, and in such cases, it's
+preferable to use the 32-bit expansion instead of the 64-bit expansion.
+
+   You can use the `.set sym32' directive to tell the assembler that,
+from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
+OFFSET' have 32-bit values.  For example:
+
+     .set sym32
+     dla     $4,sym
+     lw      $4,sym+16
+     sw      $4,sym+0x8000($4)
+
+   will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
+as 32-bit values.  The handling of non-symbolic addresses is not
+affected.
+
+   The directive `.set nosym32' ends a `.set sym32' block and reverts
+to the normal behavior.  It is also possible to change the symbol size
+using the command-line options `-msym32' and `-mno-sym32'.
+
+   These options and directives are always accepted, but at present,
+they have no effect for anything other than n64.
+
+
+File: as.info,  Node: MIPS ISA,  Next: MIPS symbol sizes,  Prev: MIPS Stabs,  Up: MIPS-Dependent
+
+8.20.5 Directives to override the ISA level
+-------------------------------------------
+
+GNU `as' supports an additional directive to change the MIPS
+Instruction Set Architecture level on the fly: `.set mipsN'.  N should
+be a number from 0 to 5, or 32, 32r2, 64 or 64r2.  The values other
+than 0 make the assembler accept instructions for the corresponding ISA
+level, from that point on in the assembly.  `.set mipsN' affects not
+only which instructions are permitted, but also how certain macros are
+expanded.  `.set mips0' restores the ISA level to its original level:
+either the level you selected with command line options, or the default
+for your configuration.  You can use this feature to permit specific
+R4000 instructions while assembling in 32 bit mode.  Use this directive
+with care!
+
+   The directive `.set mips16' puts the assembler into MIPS 16 mode, in
+which it will assemble instructions for the MIPS 16 processor.  Use
+`.set nomips16' to return to normal 32 bit mode.
+
+   Traditional MIPS assemblers do not support this directive.
+
+
+File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS symbol sizes,  Up: MIPS-Dependent
+
+8.20.6 Directives for extending MIPS 16 bit instructions
+--------------------------------------------------------
+
+By default, MIPS 16 instructions are automatically extended to 32 bits
+when necessary.  The directive `.set noautoextend' will turn this off.
+When `.set noautoextend' is in effect, any 32 bit instruction must be
+explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
+directive `.set autoextend' may be used to once again automatically
+extend instructions when necessary.
+
+   This directive is only meaningful when in MIPS 16 mode.  Traditional
+MIPS assemblers do not support this directive.
+
+
+File: as.info,  Node: MIPS insn,  Next: MIPS option stack,  Prev: MIPS autoextend,  Up: MIPS-Dependent
+
+8.20.7 Directive to mark data as an instruction
+-----------------------------------------------
+
+The `.insn' directive tells `as' that the following data is actually
+instructions.  This makes a difference in MIPS 16 mode: when loading
+the address of a label which precedes instructions, `as' automatically
+adds 1 to the value, so that jumping to the loaded address will do the
+right thing.
+
+
+File: as.info,  Node: MIPS option stack,  Next: MIPS ASE instruction generation overrides,  Prev: MIPS insn,  Up: MIPS-Dependent
+
+8.20.8 Directives to save and restore options
+---------------------------------------------
+
+The directives `.set push' and `.set pop' may be used to save and
+restore the current settings for all the options which are controlled
+by `.set'.  The `.set push' directive saves the current settings on a
+stack.  The `.set pop' directive pops the stack and restores the
+settings.
+
+   These directives can be useful inside an macro which must change an
+option such as the ISA level or instruction reordering but does not want
+to change the state of the code which invoked the macro.
+
+   Traditional MIPS assemblers do not support these directives.
+
+
+File: as.info,  Node: MIPS ASE instruction generation overrides,  Prev: MIPS option stack,  Up: MIPS-Dependent
+
+8.20.9 Directives to control generation of MIPS ASE instructions
+----------------------------------------------------------------
+
+The directive `.set mips3d' makes the assembler accept instructions
+from the MIPS-3D Application Specific Extension from that point on in
+the assembly.  The `.set nomips3d' directive prevents MIPS-3D
+instructions from being accepted.
+
+   The directive `.set mdmx' makes the assembler accept instructions
+from the MDMX Application Specific Extension from that point on in the
+assembly.  The `.set nomdmx' directive prevents MDMX instructions from
+being accepted.
+
+   The directive `.set dsp' makes the assembler accept instructions
+from the DSP Application Specific Extension from that point on in the
+assembly.  The `.set nodsp' directive prevents DSP instructions from
+being accepted.
+
+   The directive `.set mt' makes the assembler accept instructions from
+the MT Application Specific Extension from that point on in the
+assembly.  The `.set nomt' directive prevents MT instructions from
+being accepted.
+
+   Traditional MIPS assemblers do not support these directives.
+
+
+File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
+
+8.21 MMIX Dependent Features
+============================
+
+* Menu:
+
+* MMIX-Opts::              Command-line Options
+* MMIX-Expand::            Instruction expansion
+* MMIX-Syntax::            Syntax
+* MMIX-mmixal::		   Differences to `mmixal' syntax and semantics
+
+
+File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
+
+8.21.1 Command-line Options
+---------------------------
+
+The MMIX version of `as' has some machine-dependent options.
+
+   When `--fixed-special-register-names' is specified, only the register
+names specified in *Note MMIX-Regs:: are recognized in the instructions
+`PUT' and `GET'.
+
+   You can use the `--globalize-symbols' to make all symbols global.
+This option is useful when splitting up a `mmixal' program into several
+files.
+
+   The `--gnu-syntax' turns off most syntax compatibility with
+`mmixal'.  Its usability is currently doubtful.
+
+   The `--relax' option is not fully supported, but will eventually make
+the object file prepared for linker relaxation.
+
+   If you want to avoid inadvertently calling a predefined symbol and
+would rather get an error, for example when using `as' with a compiler
+or other machine-generated code, specify `--no-predefined-syms'.  This
+turns off built-in predefined definitions of all such symbols,
+including rounding-mode symbols, segment symbols, `BIT' symbols, and
+`TRAP' symbols used in `mmix' "system calls".  It also turns off
+predefined special-register names, except when used in `PUT' and `GET'
+instructions.
+
+   By default, some instructions are expanded to fit the size of the
+operand or an external symbol (*note MMIX-Expand::).  By passing
+`--no-expand', no such expansion will be done, instead causing errors
+at link time if the operand does not fit.
+
+   The `mmixal' documentation (*note mmixsite::) specifies that global
+registers allocated with the `GREG' directive (*note MMIX-greg::) and
+initialized to the same non-zero value, will refer to the same global
+register.  This isn't strictly enforceable in `as' since the final
+addresses aren't known until link-time, but it will do an effort unless
+the `--no-merge-gregs' option is specified.  (Register merging isn't
+yet implemented in `ld'.)
+
+   `as' will warn every time it expands an instruction to fit an
+operand unless the option `-x' is specified.  It is believed that this
+behaviour is more useful than just mimicking `mmixal''s behaviour, in
+which instructions are only expanded if the `-x' option is specified,
+and assembly fails otherwise, when an instruction needs to be expanded.
+It needs to be kept in mind that `mmixal' is both an assembler and
+linker, while `as' will expand instructions that at link stage can be
+contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
+The option `-x' also imples `--linker-allocated-gregs'.
+
+   If instruction expansion is enabled, `as' can expand a `PUSHJ'
+instruction into a series of instructions.  The shortest expansion is
+to not expand it, but just mark the call as redirectable to a stub,
+which `ld' creates at link-time, but only if the original `PUSHJ'
+instruction is found not to reach the target.  The stub consists of the
+necessary instructions to form a jump to the target.  This happens if
+`as' can assert that the `PUSHJ' instruction can reach such a stub.
+The option `--no-pushj-stubs' disables this shorter expansion, and the
+longer series of instructions is then created at assembly-time.  The
+option `--no-stubs' is a synonym, intended for compatibility with
+future releases, where generation of stubs for other instructions may
+be implemented.
+
+   Usually a two-operand-expression (*note GREG-base::) without a
+matching `GREG' directive is treated as an error by `as'.  When the
+option `--linker-allocated-gregs' is in effect, they are instead passed
+through to the linker, which will allocate as many global registers as
+is needed.
+
+
+File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
+
+8.21.2 Instruction expansion
+----------------------------
+
+When `as' encounters an instruction with an operand that is either not
+known or does not fit the operand size of the instruction, `as' (and
+`ld') will expand the instruction into a sequence of instructions
+semantically equivalent to the operand fitting the instruction.
+Expansion will take place for the following instructions:
+
+`GETA'
+     Expands to a sequence of four instructions: `SETL', `INCML',
+     `INCMH' and `INCH'.  The operand must be a multiple of four.
+
+Conditional branches
+     A branch instruction is turned into a branch with the complemented
+     condition and prediction bit over five instructions; four
+     instructions setting `$255' to the operand value, which like with
+     `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
+
+`PUSHJ'
+     Similar to expansion for conditional branches; four instructions
+     set `$255' to the operand value, followed by a `PUSHGO
+     $255,$255,0'.
+
+`JMP'
+     Similar to conditional branches and `PUSHJ'.  The final instruction
+     is `GO $255,$255,0'.
+
+   The linker `ld' is expected to shrink these expansions for code
+assembled with `--relax' (though not currently implemented).
+
+
+File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
+
+8.21.3 Syntax
+-------------
+
+The assembly syntax is supposed to be upward compatible with that
+described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
+Volume 1'.  Draft versions of those chapters as well as other MMIX
+information is located at
+`http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
+examples from the mmixal package located there should work unmodified
+when assembled and linked as single files, with a few noteworthy
+exceptions (*note MMIX-mmixal::).
+
+   Before an instruction is emitted, the current location is aligned to
+the next four-byte boundary.  If a label is defined at the beginning of
+the line, its value will be the aligned value.
+
+   In addition to the traditional hex-prefix `0x', a hexadecimal number
+can also be specified by the prefix character `#'.
+
+   After all operands to an MMIX instruction or directive have been
+specified, the rest of the line is ignored, treated as a comment.
+
+* Menu:
+
+* MMIX-Chars::		        Special Characters
+* MMIX-Symbols::		Symbols
+* MMIX-Regs::			Register Names
+* MMIX-Pseudos::		Assembler Directives
+
+
+File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
+
+8.21.3.1 Special Characters
+...........................
+
+The characters `*' and `#' are line comment characters; each start a
+comment at the beginning of a line, but only at the beginning of a
+line.  A `#' prefixes a hexadecimal number if found elsewhere on a line.
+
+   Two other characters, `%' and `!', each start a comment anywhere on
+the line.  Thus you can't use the `modulus' and `not' operators in
+expressions normally associated with these two characters.
+
+   A `;' is a line separator, treated as a new-line, so separate
+instructions can be specified on a single line.
+
+
+File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
+
+8.21.3.2 Symbols
+................
+
+The character `:' is permitted in identifiers.  There are two
+exceptions to it being treated as any other symbol character: if a
+symbol begins with `:', it means that the symbol is in the global
+namespace and that the current prefix should not be prepended to that
+symbol (*note MMIX-prefix::).  The `:' is then not considered part of
+the symbol.  For a symbol in the label position (first on a line), a `:'
+at the end of a symbol is silently stripped off.  A label is permitted,
+but not required, to be followed by a `:', as with many other assembly
+formats.
+
+   The character `@' in an expression, is a synonym for `.', the
+current location.
+
+   In addition to the common forward and backward local symbol formats
+(*note Symbol Names::), they can be specified with upper-case `B' and
+`F', as in `8B' and `9F'.  A local label defined for the current
+position is written with a `H' appended to the number:
+     3H LDB $0,$1,2
+   This and traditional local-label formats cannot be mixed: a label
+must be defined and referred to using the same format.
+
+   There's a minor caveat: just as for the ordinary local symbols, the
+local symbols are translated into ordinary symbols using control
+characters are to hide the ordinal number of the symbol.
+Unfortunately, these symbols are not translated back in error messages.
+Thus you may see confusing error messages when local symbols are used.
+Control characters `\003' (control-C) and `\004' (control-D) are used
+for the MMIX-specific local-symbol syntax.
+
+   The symbol `Main' is handled specially; it is always global.
+
+   By defining the symbols `__.MMIX.start..text' and
+`__.MMIX.start..data', the address of respectively the `.text' and
+`.data' segments of the final program can be defined, though when
+linking more than one object file, the code or data in the object file
+containing the symbol is not guaranteed to be start at that position;
+just the final executable.  *Note MMIX-loc::.
+
+
+File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
+
+8.21.3.3 Register names
+.......................
+
+Local and global registers are specified as `$0' to `$255'.  The
+recognized special register names are `rJ', `rA', `rB', `rC', `rD',
+`rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
+`rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
+`rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
+register names.
+
+   Local and global symbols can be equated to register names and used in
+place of ordinary registers.
+
+   Similarly for special registers, local and global symbols can be
+used.  Also, symbols equated from numbers and constant expressions are
+allowed in place of a special register, except when either of the
+options `--no-predefined-syms' and `--fixed-special-register-names' are
+specified.  Then only the special register names above are allowed for
+the instructions having a special register operand; `GET' and `PUT'.
+
+
+File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
+
+8.21.3.4 Assembler Directives
+.............................
+
+`LOC'
+     The `LOC' directive sets the current location to the value of the
+     operand field, which may include changing sections.  If the
+     operand is a constant, the section is set to either `.data' if the
+     value is `0x2000000000000000' or larger, else it is set to `.text'.
+     Within a section, the current location may only be changed to
+     monotonically higher addresses.  A LOC expression must be a
+     previously defined symbol or a "pure" constant.
+
+     An example, which sets the label PREV to the current location, and
+     updates the current location to eight bytes forward:
+          prev LOC @+8
+
+     When a LOC has a constant as its operand, a symbol
+     `__.MMIX.start..text' or `__.MMIX.start..data' is defined
+     depending on the address as mentioned above.  Each such symbol is
+     interpreted as special by the linker, locating the section at that
+     address.  Note that if multiple files are linked, the first object
+     file with that section will be mapped to that address (not
+     necessarily the file with the LOC definition).
+
+`LOCAL'
+     Example:
+           LOCAL external_symbol
+           LOCAL 42
+           .local asymbol
+
+     This directive-operation generates a link-time assertion that the
+     operand does not correspond to a global register.  The operand is
+     an expression that at link-time resolves to a register symbol or a
+     number.  A number is treated as the register having that number.
+     There is one restriction on the use of this directive: the
+     pseudo-directive must be placed in a section with contents, code
+     or data.
+
+`IS'
+     The `IS' directive:
+          asymbol IS an_expression
+     sets the symbol `asymbol' to `an_expression'.  A symbol may not be
+     set more than once using this directive.  Local labels may be set
+     using this directive, for example:
+          5H IS @+4
+
+`GREG'
+     This directive reserves a global register, gives it an initial
+     value and optionally gives it a symbolic name.  Some examples:
+
+          areg GREG
+          breg GREG data_value
+               GREG data_buffer
+               .greg creg, another_data_value
+
+     The symbolic register name can be used in place of a (non-special)
+     register.  If a value isn't provided, it defaults to zero.  Unless
+     the option `--no-merge-gregs' is specified, non-zero registers
+     allocated with this directive may be eliminated by `as'; another
+     register with the same value used in its place.  Any of the
+     instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
+     `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
+     `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
+     `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
+     have a value nearby an initial value in place of its second and
+     third operands.  Here, "nearby" is defined as within the range
+     0...255 from the initial value of such an allocated register.
+
+          buffer1 BYTE 0,0,0,0,0
+          buffer2 BYTE 0,0,0,0,0
+           ...
+           GREG buffer1
+           LDOU $42,buffer2
+     In the example above, the `Y' field of the `LDOUI' instruction
+     (LDOU with a constant Z) will be replaced with the global register
+     allocated for `buffer1', and the `Z' field will have the value 5,
+     the offset from `buffer1' to `buffer2'.  The result is equivalent
+     to this code:
+          buffer1 BYTE 0,0,0,0,0
+          buffer2 BYTE 0,0,0,0,0
+           ...
+          tmpreg GREG buffer1
+           LDOU $42,tmpreg,(buffer2-buffer1)
+
+     Global registers allocated with this directive are allocated in
+     order higher-to-lower within a file.  Other than that, the exact
+     order of register allocation and elimination is undefined.  For
+     example, the order is undefined when more than one file with such
+     directives are linked together.  With the options `-x' and
+     `--linker-allocated-gregs', `GREG' directives for two-operand
+     cases like the one mentioned above can be omitted.  Sufficient
+     global registers will then be allocated by the linker.
+
+`BYTE'
+     The `BYTE' directive takes a series of operands separated by a
+     comma.  If an operand is a string (*note Strings::), each
+     character of that string is emitted as a byte.  Other operands
+     must be constant expressions without forward references, in the
+     range 0...255.  If you need operands having expressions with
+     forward references, use `.byte' (*note Byte::).  An operand can be
+     omitted, defaulting to a zero value.
+
+`WYDE'
+`TETRA'
+`OCTA'
+     The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
+     four and eight bytes size respectively.  Before anything else
+     happens for the directive, the current location is aligned to the
+     respective constant-size boundary.  If a label is defined at the
+     beginning of the line, its value will be that after the alignment.
+     A single operand can be omitted, defaulting to a zero value
+     emitted for the directive.  Operands can be expressed as strings
+     (*note Strings::), in which case each character in the string is
+     emitted as a separate constant of the size indicated by the
+     directive.
+
+`PREFIX'
+     The `PREFIX' directive sets a symbol name prefix to be prepended to
+     all symbols (except local symbols, *note MMIX-Symbols::), that are
+     not prefixed with `:', until the next `PREFIX' directive.  Such
+     prefixes accumulate.  For example,
+           PREFIX a
+           PREFIX b
+          c IS 0
+     defines a symbol `abc' with the value 0.
+
+`BSPEC'
+`ESPEC'
+     A pair of `BSPEC' and `ESPEC' directives delimit a section of
+     special contents (without specified semantics).  Example:
+           BSPEC 42
+           TETRA 1,2,3
+           ESPEC
+     The single operand to `BSPEC' must be number in the range 0...255.
+     The `BSPEC' number 80 is used by the GNU binutils implementation.
+
+
+File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
+
+8.21.4 Differences to `mmixal'
+------------------------------
+
+The binutils `as' and `ld' combination has a few differences in
+function compared to `mmixal' (*note mmixsite::).
+
+   The replacement of a symbol with a GREG-allocated register (*note
+GREG-base::) is not handled the exactly same way in `as' as in
+`mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
+where different registers with different offsets, eventually yielding
+the same address, are used in the first instruction.  This type of
+difference should however not affect the function of any program unless
+it has specific assumptions about the allocated register number.
+
+   Line numbers (in the `mmo' object format) are currently not
+supported.
+
+   Expression operator precedence is not that of mmixal: operator
+precedence is that of the C programming language.  It's recommended to
+use parentheses to explicitly specify wanted operator precedence
+whenever more than one type of operators are used.
+
+   The serialize unary operator `&', the fractional division operator
+`//', the logical not operator `!' and the modulus operator `%' are not
+available.
+
+   Symbols are not global by default, unless the option
+`--globalize-symbols' is passed.  Use the `.global' directive to
+globalize symbols (*note Global::).
+
+   Operand syntax is a bit stricter with `as' than `mmixal'.  For
+example, you can't say `addu 1,2,3', instead you must write `addu
+$1,$2,3'.
+
+   You can't LOC to a lower address than those already visited (i.e.
+"backwards").
+
+   A LOC directive must come before any emitted code.
+
+   Predefined symbols are visible as file-local symbols after use.  (In
+the ELF file, that is--the linked mmo file has no notion of a file-local
+symbol.)
+
+   Some mapping of constant expressions to sections in LOC expressions
+is attempted, but that functionality is easily confused and should be
+avoided unless compatibility with `mmixal' is required.  A LOC
+expression to `0x2000000000000000' or higher, maps to the `.data'
+section and lower addresses map to the `.text' section (*note
+MMIX-loc::).
+
+   The code and data areas are each contiguous.  Sparse programs with
+far-away LOC directives will take up the same amount of space as a
+contiguous program with zeros filled in the gaps between the LOC
+directives.  If you need sparse programs, you might try and get the
+wanted effect with a linker script and splitting up the code parts into
+sections (*note Section::).  Assembly code for this, to be compatible
+with `mmixal', would look something like:
+      .if 0
+      LOC away_expression
+      .else
+      .section away,"ax"
+      .fi
+   `as' will not execute the LOC directive and `mmixal' ignores the
+lines with `.'.  This construct can be used generally to help
+compatibility.
+
+   Symbols can't be defined twice-not even to the same value.
+
+   Instruction mnemonics are recognized case-insensitive, though the
+`IS' and `GREG' pseudo-operations must be specified in upper-case
+characters.
+
+   There's no unicode support.
+
+   The following is a list of programs in `mmix.tar.gz', available at
+`http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
+checked with the version dated 2001-08-25 (md5sum
+c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
+not assemble with `as':
+
+`silly.mms'
+     LOC to a previous address.
+
+`sim.mms'
+     Redefines symbol `Done'.
+
+`test.mms'
+     Uses the serial operator `&'.
+
+
+File: as.info,  Node: MSP430-Dependent,  Next: SH-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
+
+8.22 MSP 430 Dependent Features
+===============================
+
+* Menu:
+
+* MSP430 Options::              Options
+* MSP430 Syntax::               Syntax
+* MSP430 Floating Point::       Floating Point
+* MSP430 Directives::           MSP 430 Machine Directives
+* MSP430 Opcodes::              Opcodes
+* MSP430 Profiling Capability::	Profiling Capability
+
+
+File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
+
+8.22.1 Options
+--------------
+
+`-m'
+     select the mpu arch. Currently has no effect.
+
+`-mP'
+     enables polymorph instructions handler.
+
+`-mQ'
+     enables relaxation at assembly time. DANGEROUS!
+
+
+
+File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
+
+8.22.2 Syntax
+-------------
+
+* Menu:
+
+* MSP430-Macros::		Macros
+* MSP430-Chars::                Special Characters
+* MSP430-Regs::                 Register Names
+* MSP430-Ext::			Assembler Extensions
+
+
+File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
+
+8.22.2.1 Macros
+...............
+
+The macro syntax used on the MSP 430 is like that described in the MSP
+430 Family Assembler Specification.  Normal `as' macros should still
+work.
+
+   Additional built-in macros are:
+
+`llo(exp)'
+     Extracts least significant word from 32-bit expression 'exp'.
+
+`lhi(exp)'
+     Extracts most significant word from 32-bit expression 'exp'.
+
+`hlo(exp)'
+     Extracts 3rd word from 64-bit expression 'exp'.
+
+`hhi(exp)'
+     Extracts 4rd word from 64-bit expression 'exp'.
+
+
+   They normally being used as an immediate source operand.
+         mov	#llo(1), r10	;	== mov	#1, r10
+         mov	#lhi(1), r10	;	== mov	#0, r10
+
+
+File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
+
+8.22.2.2 Special Characters
+...........................
+
+`;' is the line comment character.
+
+   The character `$' in jump instructions indicates current location and
+implemented only for TI syntax compatibility.
+
+
+File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
+
+8.22.2.3 Register Names
+.......................
+
+General-purpose registers are represented by predefined symbols of the
+form `rN' (for global registers), where N represents a number between
+`0' and `15'.  The leading letters may be in either upper or lower
+case; for example, `r13' and `R7' are both valid register names.
+
+   Register names `PC', `SP' and `SR' cannot be used as register names
+and will be treated as variables. Use `r0', `r1', and `r2' instead.
+
+
+File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
+
+8.22.2.4 Assembler Extensions
+.............................
+
+`@rN'
+     As destination operand being treated as `0(rn)'
+
+`0(rN)'
+     As source operand being treated as `@rn'
+
+`jCOND +N'
+     Skips next N bytes followed by jump instruction and equivalent to
+     `jCOND $+N+2'
+
+
+   Also, there are some instructions, which cannot be found in other
+assemblers.  These are branch instructions, which has different opcodes
+upon jump distance.  They all got PC relative addressing mode.
+
+`beq label'
+     A polymorph instruction which is `jeq label' in case if jump
+     distance within allowed range for cpu's jump instruction. If not,
+     this unrolls into a sequence of
+            jne $+6
+            br  label
+
+`bne label'
+     A polymorph instruction which is `jne label' or `jeq +4; br label'
+
+`blt label'
+     A polymorph instruction which is `jl label' or `jge +4; br label'
+
+`bltn label'
+     A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
+     label'
+
+`bltu label'
+     A polymorph instruction which is `jlo label' or `jhs +2; br label'
+
+`bge label'
+     A polymorph instruction which is `jge label' or `jl +4; br label'
+
+`bgeu label'
+     A polymorph instruction which is `jhs label' or `jlo +4; br label'
+
+`bgt label'
+     A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
+     jl  +4; br label'
+
+`bgtu label'
+     A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
+     jlo +4; br label'
+
+`bleu label'
+     A polymorph instruction which is `jeq label; jlo label' or `jeq
+     +2; jhs +4; br label'
+
+`ble label'
+     A polymorph instruction which is `jeq label; jl  label' or `jeq
+     +2; jge +4; br label'
+
+`jump label'
+     A polymorph instruction which is `jmp label' or `br label'
+
+
+File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
+
+8.22.3 Floating Point
+---------------------
+
+The MSP 430 family uses IEEE 32-bit floating-point numbers.
+
+
+File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
+
+8.22.4 MSP 430 Machine Directives
+---------------------------------
+
+`.file'
+     This directive is ignored; it is accepted for compatibility with
+     other MSP 430 assemblers.
+
+          _Warning:_ in other versions of the GNU assembler, `.file' is
+          used for the directive called `.app-file' in the MSP 430
+          support.
+
+`.line'
+     This directive is ignored; it is accepted for compatibility with
+     other MSP 430 assemblers.
+
+`.arch'
+     Currently this directive is ignored; it is accepted for
+     compatibility with other MSP 430 assemblers.
+
+`.profiler'
+     This directive instructs assembler to add new profile entry to the
+     object file.
+
+
+
+File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
+
+8.22.5 Opcodes
+--------------
+
+`as' implements all the standard MSP 430 opcodes.  No additional
+pseudo-instructions are needed on this family.
+
+   For information on the 430 machine instruction set, see `MSP430
+User's Manual, document slau049d', Texas Instrument, Inc.
+
+
+File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
+
+8.22.6 Profiling Capability
+---------------------------
+
+It is a performance hit to use gcc's profiling approach for this tiny
+target.  Even more - jtag hardware facility does not perform any
+profiling functions.  However we've got gdb's built-in simulator where
+we can do anything.
+
+   We define new section `.profiler' which holds all profiling
+information.  We define new pseudo operation `.profiler' which will
+instruct assembler to add new profile entry to the object file. Profile
+should take place at the present address.
+
+   Pseudo operation format:
+
+   `.profiler flags,function_to_profile [, cycle_corrector, extra]'
+
+   where:
+
+          `flags' is a combination of the following characters:
+
+    `s'
+          function entry
+
+    `x'
+          function exit
+
+    `i'
+          function is in init section
+
+    `f'
+          function is in fini section
+
+    `l'
+          library call
+
+    `c'
+          libc standard call
+
+    `d'
+          stack value demand
+
+    `I'
+          interrupt service routine
+
+    `P'
+          prologue start
+
+    `p'
+          prologue end
+
+    `E'
+          epilogue start
+
+    `e'
+          epilogue end
+
+    `j'
+          long jump / sjlj unwind
+
+    `a'
+          an arbitrary code fragment
+
+    `t'
+          extra parameter saved (a constant value like frame size)
+
+`function_to_profile'
+     a function address
+
+`cycle_corrector'
+     a value which should be added to the cycle counter, zero if
+     omitted.
+
+`extra'
+     any extra parameter, zero if omitted.
+
+
+   For example:
+     .global fxx
+     .type fxx, at function
+     fxx:
+     .LFrameOffset_fxx=0x08
+     .profiler "scdP", fxx     ; function entry.
+     			  ; we also demand stack value to be saved
+       push r11
+       push r10
+       push r9
+       push r8
+     .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
+     					  ; (this is a prologue end)
+     					  ; note, that spare var filled with
+     					  ; the farme size
+       mov r15,r8
+     ...
+     .profiler cdE,fxx         ; check stack
+       pop r8
+       pop r9
+       pop r10
+       pop r11
+     .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
+       ret                     ; cause 'ret' insn takes 3 cycles
+
+
+File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
+
+8.23 PDP-11 Dependent Features
+==============================
+
+* Menu:
+
+* PDP-11-Options::		Options
+* PDP-11-Pseudos::		Assembler Directives
+* PDP-11-Syntax::		DEC Syntax versus BSD Syntax
+* PDP-11-Mnemonics::		Instruction Naming
+* PDP-11-Synthetic::		Synthetic Instructions
+
+
+File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
+
+8.23.1 Options
+--------------
+
+The PDP-11 version of `as' has a rich set of machine dependent options.
+
+8.23.1.1 Code Generation Options
+................................
+
+`-mpic | -mno-pic'
+     Generate position-independent (or position-dependent) code.
+
+     The default is to generate position-independent code.
+
+8.23.1.2 Instruction Set Extension Options
+..........................................
+
+These options enables or disables the use of extensions over the base
+line instruction set as introduced by the first PDP-11 CPU: the KA11.
+Most options come in two variants: a `-m'EXTENSION that enables
+EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
+
+   The default is to enable all extensions.
+
+`-mall | -mall-extensions'
+     Enable all instruction set extensions.
+
+`-mno-extensions'
+     Disable all instruction set extensions.
+
+`-mcis | -mno-cis'
+     Enable (or disable) the use of the commercial instruction set,
+     which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
+     `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
+     `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
+     `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
+     `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
+     `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
+     `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
+     `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
+
+`-mcsm | -mno-csm'
+     Enable (or disable) the use of the `CSM' instruction.
+
+`-meis | -mno-eis'
+     Enable (or disable) the use of the extended instruction set, which
+     consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
+     `MUL', `RTT', `SOB' `SXT', and `XOR'.
+
+`-mfis | -mkev11'
+`-mno-fis | -mno-kev11'
+     Enable (or disable) the use of the KEV11 floating-point
+     instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
+
+`-mfpp | -mfpu | -mfp-11'
+`-mno-fpp | -mno-fpu | -mno-fp-11'
+     Enable (or disable) the use of FP-11 floating-point instructions:
+     `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
+     `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
+     `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
+     `SUBF', and `TSTF'.
+
+`-mlimited-eis | -mno-limited-eis'
+     Enable (or disable) the use of the limited extended instruction
+     set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
+
+     The -mno-limited-eis options also implies -mno-eis.
+
+`-mmfpt | -mno-mfpt'
+     Enable (or disable) the use of the `MFPT' instruction.
+
+`-mmultiproc | -mno-multiproc'
+     Enable (or disable) the use of multiprocessor instructions:
+     `TSTSET' and `WRTLCK'.
+
+`-mmxps | -mno-mxps'
+     Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
+
+`-mspl | -mno-spl'
+     Enable (or disable) the use of the `SPL' instruction.
+
+     Enable (or disable) the use of the microcode instructions: `LDUB',
+     `MED', and `XFC'.
+
+8.23.1.3 CPU Model Options
+..........................
+
+These options enable the instruction set extensions supported by a
+particular CPU, and disables all other extensions.
+
+`-mka11'
+     KA11 CPU.  Base line instruction set only.
+
+`-mkb11'
+     KB11 CPU.  Enable extended instruction set and `SPL'.
+
+`-mkd11a'
+     KD11-A CPU.  Enable limited extended instruction set.
+
+`-mkd11b'
+     KD11-B CPU.  Base line instruction set only.
+
+`-mkd11d'
+     KD11-D CPU.  Base line instruction set only.
+
+`-mkd11e'
+     KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
+
+`-mkd11f | -mkd11h | -mkd11q'
+     KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
+     instruction set, `MFPS', and `MTPS'.
+
+`-mkd11k'
+     KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
+     `MFPS', `MFPT', `MTPS', and `XFC'.
+
+`-mkd11z'
+     KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
+     `MFPT', `MTPS', and `SPL'.
+
+`-mf11'
+     F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
+     `MTPS'.
+
+`-mj11'
+     J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
+     `MTPS', `SPL', `TSTSET', and `WRTLCK'.
+
+`-mt11'
+     T11 CPU.  Enable limited extended instruction set, `MFPS', and
+     `MTPS'.
+
+8.23.1.4 Machine Model Options
+..............................
+
+These options enable the instruction set extensions supported by a
+particular machine model, and disables all other extensions.
+
+`-m11/03'
+     Same as `-mkd11f'.
+
+`-m11/04'
+     Same as `-mkd11d'.
+
+`-m11/05 | -m11/10'
+     Same as `-mkd11b'.
+
+`-m11/15 | -m11/20'
+     Same as `-mka11'.
+
+`-m11/21'
+     Same as `-mt11'.
+
+`-m11/23 | -m11/24'
+     Same as `-mf11'.
+
+`-m11/34'
+     Same as `-mkd11e'.
+
+`-m11/34a'
+     Ame as `-mkd11e' `-mfpp'.
+
+`-m11/35 | -m11/40'
+     Same as `-mkd11a'.
+
+`-m11/44'
+     Same as `-mkd11z'.
+
+`-m11/45 | -m11/50 | -m11/55 | -m11/70'
+     Same as `-mkb11'.
+
+`-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
+     Same as `-mj11'.
+
+`-m11/60'
+     Same as `-mkd11k'.
+
+
+File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
+
+8.23.2 Assembler Directives
+---------------------------
+
+The PDP-11 version of `as' has a few machine dependent assembler
+directives.
+
+`.bss'
+     Switch to the `bss' section.
+
+`.even'
+     Align the location counter to an even number.
+
+
+File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
+
+8.23.3 PDP-11 Assembly Language Syntax
+--------------------------------------
+
+`as' supports both DEC syntax and BSD syntax.  The only difference is
+that in DEC syntax, a `#' character is used to denote an immediate
+constants, while in BSD syntax the character for this purpose is `$'.
+
+   eneral-purpose registers are named `r0' through `r7'.  Mnemonic
+alternatives for `r6' and `r7' are `sp' and `pc', respectively.
+
+   Floating-point registers are named `ac0' through `ac3', or
+alternatively `fr0' through `fr3'.
+
+   Comments are started with a `#' or a `/' character, and extend to
+the end of the line.  (FIXME: clash with immediates?)
+
+
+File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
+
+8.23.4 Instruction Naming
+-------------------------
+
+Some instructions have alternative names.
+
+`BCC'
+     `BHIS'
+
+`BCS'
+     `BLO'
+
+`L2DR'
+     `L2D'
+
+`L3DR'
+     `L3D'
+
+`SYS'
+     `TRAP'
+
+
+File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
+
+8.23.5 Synthetic Instructions
+-----------------------------
+
+The `JBR' and `J'CC synthetic instructions are not supported yet.
+
+
+File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
+
+8.24 picoJava Dependent Features
+================================
+
+* Menu:
+
+* PJ Options::              Options
+
+
+File: as.info,  Node: PJ Options,  Up: PJ-Dependent
+
+8.24.1 Options
+--------------
+
+`as' has two additional command-line options for the picoJava
+architecture.
+`-ml'
+     This option selects little endian data output.
+
+`-mb'
+     This option selects big endian data output.
+
+
+File: as.info,  Node: PPC-Dependent,  Next: Sparc-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
+
+8.25 PowerPC Dependent Features
+===============================
+
+* Menu:
+
+* PowerPC-Opts::                Options
+* PowerPC-Pseudo::              PowerPC Assembler Directives
+
+
+File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
+
+8.25.1 Options
+--------------
+
+The PowerPC chip family includes several successive levels, using the
+same core instruction set, but including a few additional instructions
+at each level.  There are exceptions to this however.  For details on
+what instructions each variant supports, please see the chip's
+architecture reference manual.
+
+   The following table lists all available PowerPC options.
+
+`-mpwrx | -mpwr2'
+     Generate code for POWER/2 (RIOS2).
+
+`-mpwr'
+     Generate code for POWER (RIOS1)
+
+`-m601'
+     Generate code for PowerPC 601.
+
+`-mppc, -mppc32, -m603, -m604'
+     Generate code for PowerPC 603/604.
+
+`-m403, -m405'
+     Generate code for PowerPC 403/405.
+
+`-m440'
+     Generate code for PowerPC 440.  BookE and some 405 instructions.
+
+`-m7400, -m7410, -m7450, -m7455'
+     Generate code for PowerPC 7400/7410/7450/7455.
+
+`-mppc64, -m620'
+     Generate code for PowerPC 620/625/630.
+
+`-mppc64bridge'
+     Generate code for PowerPC 64, including bridge insns.
+
+`-mbooke64'
+     Generate code for 64-bit BookE.
+
+`-mbooke, mbooke32'
+     Generate code for 32-bit BookE.
+
+`-me300'
+     Generate code for PowerPC e300 family.
+
+`-maltivec'
+     Generate code for processors with AltiVec instructions.
+
+`-mpower4'
+     Generate code for Power4 architecture.
+
+`-mpower5'
+     Generate code for Power5 architecture.
+
+`-mcom'
+     Generate code Power/PowerPC common instructions.
+
+`-many'
+     Generate code for any architecture (PWR/PWRX/PPC).
+
+`-mregnames'
+     Allow symbolic names for registers.
+
+`-mno-regnames'
+     Do not allow symbolic names for registers.
+
+`-mrelocatable'
+     Support for GCC's -mrelocatble option.
+
+`-mrelocatable-lib'
+     Support for GCC's -mrelocatble-lib option.
+
+`-memb'
+     Set PPC_EMB bit in ELF flags.
+
+`-mlittle, -mlittle-endian'
+     Generate code for a little endian machine.
+
+`-mbig, -mbig-endian'
+     Generate code for a big endian machine.
+
+`-msolaris'
+     Generate code for Solaris.
+
+`-mno-solaris'
+     Do not generate code for Solaris.
+
+
+File: as.info,  Node: PowerPC-Pseudo,  Prev: PowerPC-Opts,  Up: PPC-Dependent
+
+8.25.2 PowerPC Assembler Directives
+-----------------------------------
+
+A number of assembler directives are available for PowerPC.  The
+following table is far from complete.
+
+`.machine "string"'
+     This directive allows you to change the machine for which code is
+     generated.  `"string"' may be any of the -m cpu selection options
+     (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
+     `.machine "push"' saves the currently selected cpu, which may be
+     restored with `.machine "pop"'.
+
+
+File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
+
+8.26 Renesas / SuperH SH Dependent Features
+===========================================
+
+* Menu:
+
+* SH Options::              Options
+* SH Syntax::               Syntax
+* SH Floating Point::       Floating Point
+* SH Directives::           SH Machine Directives
+* SH Opcodes::              Opcodes
+
+
+File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
+
+8.26.1 Options
+--------------
+
+`as' has following command-line options for the Renesas (formerly
+Hitachi) / SuperH SH family.
+
+`--little'
+     Generate little endian code.
+
+`--big'
+     Generate big endian code.
+
+`--relax'
+     Alter jump instructions for long displacements.
+
+`--small'
+     Align sections to 4 byte boundaries, not 16.
+
+`--dsp'
+     Enable sh-dsp insns, and disable sh3e / sh4 insns.
+
+`--renesas'
+     Disable optimization with section symbol for compatibility with
+     Renesas assembler.
+
+`--allow-reg-prefix'
+     Allow '$' as a register name prefix.
+
+`--isa=sh4 | sh4a'
+     Specify the sh4 or sh4a instruction set.
+
+`--isa=dsp'
+     Enable sh-dsp insns, and disable sh3e / sh4 insns.
+
+`--isa=fp'
+     Enable sh2e, sh3e, sh4, and sh4a insn sets.
+
+`--isa=all'
+     Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
+
+
+
+File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
+
+8.26.2 Syntax
+-------------
+
+* Menu:
+
+* SH-Chars::                Special Characters
+* SH-Regs::                 Register Names
+* SH-Addressing::           Addressing Modes
+
+
+File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
+
+8.26.2.1 Special Characters
+...........................
+
+`!' is the line comment character.
+
+   You can use `;' instead of a newline to separate statements.
+
+   Since `$' has no special meaning, you may use it in symbol names.
+
+
+File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
+
+8.26.2.2 Register Names
+.......................
+
+You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
+`r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
+refer to the SH registers.
+
+   The SH also has these control registers:
+
+`pr'
+     procedure register (holds return address)
+
+`pc'
+     program counter
+
+`mach'
+`macl'
+     high and low multiply accumulator registers
+
+`sr'
+     status register
+
+`gbr'
+     global base register
+
+`vbr'
+     vector base register (for interrupt vectors)
+
+
+File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
+
+8.26.2.3 Addressing Modes
+.........................
+
+`as' understands the following addressing modes for the SH.  `RN' in
+the following refers to any of the numbered registers, but _not_ the
+control registers.
+
+`RN'
+     Register direct
+
+`@RN'
+     Register indirect
+
+`@-RN'
+     Register indirect with pre-decrement
+
+`@RN+'
+     Register indirect with post-increment
+
+`@(DISP, RN)'
+     Register indirect with displacement
+
+`@(R0, RN)'
+     Register indexed
+
+`@(DISP, GBR)'
+     `GBR' offset
+
+`@(R0, GBR)'
+     GBR indexed
+
+`ADDR'
+`@(DISP, PC)'
+     PC relative address (for branch or for addressing memory).  The
+     `as' implementation allows you to use the simpler form ADDR
+     anywhere a PC relative address is called for; the alternate form
+     is supported for compatibility with other assemblers.
+
+`#IMM'
+     Immediate data
+
+
+File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
+
+8.26.3 Floating Point
+---------------------
+
+SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
+SH groups can use `.float' directive to generate IEEE floating-point
+numbers.
+
+   SH2E and SH3E support single-precision floating point calculations as
+well as entirely PCAPI compatible emulation of double-precision
+floating point calculations. SH2E and SH3E instructions are a subset of
+the floating point calculations conforming to the IEEE754 standard.
+
+   In addition to single-precision and double-precision floating-point
+operation capability, the on-chip FPU of SH4 has a 128-bit graphic
+engine that enables 32-bit floating-point data to be processed 128 bits
+at a time. It also supports 4 * 4 array operations and inner product
+operations. Also, a superscalar architecture is employed that enables
+simultaneous execution of two instructions (including FPU
+instructions), providing performance of up to twice that of
+conventional architectures at the same frequency.
+
+
+File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
+
+8.26.4 SH Machine Directives
+----------------------------
+
+`uaword'
+`ualong'
+     `as' will issue a warning when a misaligned `.word' or `.long'
+     directive is used.  You may use `.uaword' or `.ualong' to indicate
+     that the value is intentionally misaligned.
+
+
+File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
+
+8.26.5 Opcodes
+--------------
+
+For detailed information on the SH machine instruction set, see
+`SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
+Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
+
+   `as' implements all the standard SH opcodes.  No additional
+pseudo-instructions are needed on this family.  Note, however, that
+because `as' supports a simpler form of PC-relative addressing, you may
+simply write (for example)
+
+     mov.l  bar,r0
+
+where other assemblers might require an explicit displacement to `bar'
+from the program counter:
+
+     mov.l  @(DISP, PC)
+
+   Here is a summary of SH opcodes:
+
+     Legend:
+     Rn        a numbered register
+     Rm        another numbered register
+     #imm      immediate data
+     disp      displacement
+     disp8     8-bit displacement
+     disp12    12-bit displacement
+
+     add #imm,Rn                    lds.l @Rn+,PR
+     add Rm,Rn                      mac.w @Rm+, at Rn+
+     addc Rm,Rn                     mov #imm,Rn
+     addv Rm,Rn                     mov Rm,Rn
+     and #imm,R0                    mov.b Rm,@(R0,Rn)
+     and Rm,Rn                      mov.b Rm, at -Rn
+     and.b #imm,@(R0,GBR)           mov.b Rm, at Rn
+     bf disp8                       mov.b @(disp,Rm),R0
+     bra disp12                     mov.b @(disp,GBR),R0
+     bsr disp12                     mov.b @(R0,Rm),Rn
+     bt disp8                       mov.b @Rm+,Rn
+     clrmac                         mov.b @Rm,Rn
+     clrt                           mov.b R0,@(disp,Rm)
+     cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
+     cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
+     cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
+     cmp/gt Rm,Rn                   mov.l Rm, at -Rn
+     cmp/hi Rm,Rn                   mov.l Rm, at Rn
+     cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
+     cmp/pl Rn                      mov.l @(disp,GBR),R0
+     cmp/pz Rn                      mov.l @(disp,PC),Rn
+     cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
+     div0s Rm,Rn                    mov.l @Rm+,Rn
+     div0u                          mov.l @Rm,Rn
+     div1 Rm,Rn                     mov.l R0,@(disp,GBR)
+     exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
+     exts.w Rm,Rn                   mov.w Rm, at -Rn
+     extu.b Rm,Rn                   mov.w Rm, at Rn
+     extu.w Rm,Rn                   mov.w @(disp,Rm),R0
+     jmp @Rn                        mov.w @(disp,GBR),R0
+     jsr @Rn                        mov.w @(disp,PC),Rn
+     ldc Rn,GBR                     mov.w @(R0,Rm),Rn
+     ldc Rn,SR                      mov.w @Rm+,Rn
+     ldc Rn,VBR                     mov.w @Rm,Rn
+     ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
+     ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
+     ldc.l @Rn+,VBR                 mova @(disp,PC),R0
+     lds Rn,MACH                    movt Rn
+     lds Rn,MACL                    muls Rm,Rn
+     lds Rn,PR                      mulu Rm,Rn
+     lds.l @Rn+,MACH                neg Rm,Rn
+     lds.l @Rn+,MACL                negc Rm,Rn
+
+     nop                            stc VBR,Rn
+     not Rm,Rn                      stc.l GBR, at -Rn
+     or #imm,R0                     stc.l SR, at -Rn
+     or Rm,Rn                       stc.l VBR, at -Rn
+     or.b #imm,@(R0,GBR)            sts MACH,Rn
+     rotcl Rn                       sts MACL,Rn
+     rotcr Rn                       sts PR,Rn
+     rotl Rn                        sts.l MACH, at -Rn
+     rotr Rn                        sts.l MACL, at -Rn
+     rte                            sts.l PR, at -Rn
+     rts                            sub Rm,Rn
+     sett                           subc Rm,Rn
+     shal Rn                        subv Rm,Rn
+     shar Rn                        swap.b Rm,Rn
+     shll Rn                        swap.w Rm,Rn
+     shll16 Rn                      tas.b @Rn
+     shll2 Rn                       trapa #imm
+     shll8 Rn                       tst #imm,R0
+     shlr Rn                        tst Rm,Rn
+     shlr16 Rn                      tst.b #imm,@(R0,GBR)
+     shlr2 Rn                       xor #imm,R0
+     shlr8 Rn                       xor Rm,Rn
+     sleep                          xor.b #imm,@(R0,GBR)
+     stc GBR,Rn                     xtrct Rm,Rn
+     stc SR,Rn
+
+
+File: as.info,  Node: SH64-Dependent,  Next: PDP-11-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
+
+8.27 SuperH SH64 Dependent Features
+===================================
+
+* Menu:
+
+* SH64 Options::              Options
+* SH64 Syntax::               Syntax
+* SH64 Directives::           SH64 Machine Directives
+* SH64 Opcodes::              Opcodes
+
+
+File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
+
+8.27.1 Options
+--------------
+
+`-isa=sh4 | sh4a'
+     Specify the sh4 or sh4a instruction set.
+
+`-isa=dsp'
+     Enable sh-dsp insns, and disable sh3e / sh4 insns.
+
+`-isa=fp'
+     Enable sh2e, sh3e, sh4, and sh4a insn sets.
+
+`-isa=all'
+     Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
+
+`-isa=shmedia | -isa=shcompact'
+     Specify the default instruction set.  `SHmedia' specifies the
+     32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
+     compatible with previous SH families.  The default depends on the
+     ABI selected; the default for the 64-bit ABI is SHmedia, and the
+     default for the 32-bit ABI is SHcompact.  If neither the ABI nor
+     the ISA is specified, the default is 32-bit SHcompact.
+
+     Note that the `.mode' pseudo-op is not permitted if the ISA is not
+     specified on the command line.
+
+`-abi=32 | -abi=64'
+     Specify the default ABI.  If the ISA is specified and the ABI is
+     not, the default ABI depends on the ISA, with SHmedia defaulting
+     to 64-bit and SHcompact defaulting to 32-bit.
+
+     Note that the `.abi' pseudo-op is not permitted if the ABI is not
+     specified on the command line.  When the ABI is specified on the
+     command line, any `.abi' pseudo-ops in the source must match it.
+
+`-shcompact-const-crange'
+     Emit code-range descriptors for constants in SHcompact code
+     sections.
+
+`-no-mix'
+     Disallow SHmedia code in the same section as constants and
+     SHcompact code.
+
+`-no-expand'
+     Do not expand MOVI, PT, PTA or PTB instructions.
+
+`-expand-pt32'
+     With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
+
+
+
+File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
+
+8.27.2 Syntax
+-------------
+
+* Menu:
+
+* SH64-Chars::                Special Characters
+* SH64-Regs::                 Register Names
+* SH64-Addressing::           Addressing Modes
+
+
+File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
+
+8.27.2.1 Special Characters
+...........................
+
+`!' is the line comment character.
+
+   You can use `;' instead of a newline to separate statements.
+
+   Since `$' has no special meaning, you may use it in symbol names.
+
+
+File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
+
+8.27.2.2 Register Names
+.......................
+
+You can use the predefined symbols `r0' through `r63' to refer to the
+SH64 general registers, `cr0' through `cr63' for control registers,
+`tr0' through `tr7' for target address registers, `fr0' through `fr63'
+for single-precision floating point registers, `dr0' through `dr62'
+(even numbered registers only) for double-precision floating point
+registers, `fv0' through `fv60' (multiples of four only) for
+single-precision floating point vectors, `fp0' through `fp62' (even
+numbered registers only) for single-precision floating point pairs,
+`mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
+single-precision floating point registers, `pc' for the program
+counter, and `fpscr' for the floating point status and control register.
+
+   You can also refer to the control registers by the mnemonics `sr',
+`ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
+`resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
+
+
+File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
+
+8.27.2.3 Addressing Modes
+.........................
+
+SH64 operands consist of either a register or immediate value.  The
+immediate value can be a constant or label reference (or portion of a
+label reference), as in this example:
+
+     	movi	4,r2
+     	pt	function, tr4
+     	movi	(function >> 16) & 65535,r0
+     	shori	function & 65535, r0
+     	ld.l	r0,4,r0
+
+   Instruction label references can reference labels in either SHmedia
+or SHcompact.  To differentiate between the two, labels in SHmedia
+sections will always have the least significant bit set (i.e. they will
+be odd), which SHcompact labels will have the least significant bit
+reset (i.e. they will be even).  If you need to reference the actual
+address of a label, you can use the `datalabel' modifier, as in this
+example:
+
+     	.long	function
+     	.long	datalabel function
+
+   In that example, the first longword may or may not have the least
+significant bit set depending on whether the label is an SHmedia label
+or an SHcompact label.  The second longword will be the actual address
+of the label, regardless of what type of label it is.
+
+
+File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
+
+8.27.3 SH64 Machine Directives
+------------------------------
+
+In addition to the SH directives, the SH64 provides the following
+directives:
+
+`.mode [shmedia|shcompact]'
+`.isa [shmedia|shcompact]'
+     Specify the ISA for the following instructions (the two directives
+     are equivalent).  Note that programs such as `objdump' rely on
+     symbolic labels to determine when such mode switches occur (by
+     checking the least significant bit of the label's address), so
+     such mode/isa changes should always be followed by a label (in
+     practice, this is true anyway).  Note that you cannot use these
+     directives if you didn't specify an ISA on the command line.
+
+`.abi [32|64]'
+     Specify the ABI for the following instructions.  Note that you
+     cannot use this directive unless you specified an ABI on the
+     command line, and the ABIs specified must match.
+
+`.uaquad'
+     Like .uaword and .ualong, this allows you to specify an
+     intentionally unaligned quadword (64 bit word).
+
+
+
+File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
+
+8.27.4 Opcodes
+--------------
+
+For detailed information on the SH64 machine instruction set, see
+`SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
+
+   `as' implements all the standard SH64 opcodes.  In addition, the
+following pseudo-opcodes may be expanded into one or more alternate
+opcodes:
+
+`movi'
+     If the value doesn't fit into a standard `movi' opcode, `as' will
+     replace the `movi' with a sequence of `movi' and `shori' opcodes.
+
+`pt'
+     This expands to a sequence of `movi' and `shori' opcode, followed
+     by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
+     the label referenced.
+
+
+
+File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
+
+8.28 SPARC Dependent Features
+=============================
+
+* Menu:
+
+* Sparc-Opts::                  Options
+* Sparc-Aligned-Data::		Option to enforce aligned data
+* Sparc-Float::                 Floating Point
+* Sparc-Directives::            Sparc Machine Directives
+
+
+File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
+
+8.28.1 Options
+--------------
+
+The SPARC chip family includes several successive levels, using the same
+core instruction set, but including a few additional instructions at
+each level.  There are exceptions to this however.  For details on what
+instructions each variant supports, please see the chip's architecture
+reference manual.
+
+   By default, `as' assumes the core instruction set (SPARC v6), but
+"bumps" the architecture level as needed: it switches to successively
+higher architectures as it encounters instructions that only exist in
+the higher levels.
+
+   If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
+passed sparclite by default, an option must be passed to enable the v9
+instructions.
+
+   GAS treats sparclite as being compatible with v8, unless an
+architecture is explicitly requested.  SPARC v9 is always incompatible
+with sparclite.
+
+`-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
+`-Av8plus | -Av8plusa | -Av9 | -Av9a'
+     Use one of the `-A' options to select one of the SPARC
+     architectures explicitly.  If you select an architecture
+     explicitly, `as' reports a fatal error if it encounters an
+     instruction or feature requiring an incompatible or higher level.
+
+     `-Av8plus' and `-Av8plusa' select a 32 bit environment.
+
+     `-Av9' and `-Av9a' select a 64 bit environment and are not
+     available unless GAS is explicitly configured with 64 bit
+     environment support.
+
+     `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
+     UltraSPARC extensions.
+
+`-xarch=v8plus | -xarch=v8plusa'
+     For compatibility with the Solaris v9 assembler.  These options are
+     equivalent to -Av8plus and -Av8plusa, respectively.
+
+`-bump'
+     Warn whenever it is necessary to switch to another level.  If an
+     architecture level is explicitly requested, GAS will not issue
+     warnings until that level is reached, and will then bump the level
+     as required (except between incompatible levels).
+
+`-32 | -64'
+     Select the word size, either 32 bits or 64 bits.  These options
+     are only available with the ELF object file format, and require
+     that the necessary BFD support has been included.
+
+
+File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Float,  Prev: Sparc-Opts,  Up: Sparc-Dependent
+
+8.28.2 Enforcing aligned data
+-----------------------------
+
+SPARC GAS normally permits data to be misaligned.  For example, it
+permits the `.long' pseudo-op to be used on a byte boundary.  However,
+the native SunOS and Solaris assemblers issue an error when they see
+misaligned data.
+
+   You can use the `--enforce-aligned-data' option to make SPARC GAS
+also issue an error about misaligned data, just as the SunOS and Solaris
+assemblers do.
+
+   The `--enforce-aligned-data' option is not the default because gcc
+issues misaligned data pseudo-ops when it initializes certain packed
+data structures (structures defined using the `packed' attribute).  You
+may have to assemble with GAS in order to initialize packed data
+structures in your own code.
+
+
+File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
+
+8.28.3 Floating Point
+---------------------
+
+The Sparc uses IEEE floating-point numbers.
+
+
+File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
+
+8.28.4 Sparc Machine Directives
+-------------------------------
+
+The Sparc version of `as' supports the following additional machine
+directives:
+
+`.align'
+     This must be followed by the desired alignment in bytes.
+
+`.common'
+     This must be followed by a symbol name, a positive number, and
+     `"bss"'.  This behaves somewhat like `.comm', but the syntax is
+     different.
+
+`.half'
+     This is functionally identical to `.short'.
+
+`.nword'
+     On the Sparc, the `.nword' directive produces native word sized
+     value, ie. if assembling with -32 it is equivalent to `.word', if
+     assembling with -64 it is equivalent to `.xword'.
+
+`.proc'
+     This directive is ignored.  Any text following it on the same line
+     is also ignored.
+
+`.register'
+     This directive declares use of a global application or system
+     register.  It must be followed by a register name %g2, %g3, %g6 or
+     %g7, comma and the symbol name for that register.  If symbol name
+     is `#scratch', it is a scratch register, if it is `#ignore', it
+     just suppresses any errors about using undeclared global register,
+     but does not emit any information about it into the object file.
+     This can be useful e.g. if you save the register before use and
+     restore it after.
+
+`.reserve'
+     This must be followed by a symbol name, a positive number, and
+     `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
+     different.
+
+`.seg'
+     This must be followed by `"text"', `"data"', or `"data1"'.  It
+     behaves like `.text', `.data', or `.data 1'.
+
+`.skip'
+     This is functionally identical to the `.space' directive.
+
+`.word'
+     On the Sparc, the `.word' directive produces 32 bit values,
+     instead of the 16 bit values it produces on many other machines.
+
+`.xword'
+     On the Sparc V9 processor, the `.xword' directive produces 64 bit
+     values.
+
+
+File: as.info,  Node: TIC54X-Dependent,  Next: V850-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
+
+8.29 TIC54X Dependent Features
+==============================
+
+* Menu:
+
+* TIC54X-Opts::              Command-line Options
+* TIC54X-Block::             Blocking
+* TIC54X-Env::               Environment Settings
+* TIC54X-Constants::         Constants Syntax
+* TIC54X-Subsyms::           String Substitution
+* TIC54X-Locals::            Local Label Syntax
+* TIC54X-Builtins::          Builtin Assembler Math Functions
+* TIC54X-Ext::               Extended Addressing Support
+* TIC54X-Directives::        Directives
+* TIC54X-Macros::            Macro Features
+* TIC54X-MMRegs::            Memory-mapped Registers
+
+
+File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
+
+8.29.1 Options
+--------------
+
+The TMS320C54x version of `as' has a few machine-dependent options.
+
+   You can use the `-mfar-mode' option to enable extended addressing
+mode.  All addresses will be assumed to be > 16 bits, and the
+appropriate relocation types will be used.  This option is equivalent
+to using the `.far_mode' directive in the assembly code.  If you do not
+use the `-mfar-mode' option, all references will be assumed to be 16
+bits.  This option may be abbreviated to `-mf'.
+
+   You can use the `-mcpu' option to specify a particular CPU.  This
+option is equivalent to using the `.version' directive in the assembly
+code.  For recognized CPU codes, see *Note `.version':
+TIC54X-Directives.  The default CPU version is `542'.
+
+   You can use the `-merrors-to-file' option to redirect error output
+to a file (this provided for those deficient environments which don't
+provide adequate output redirection).  This option may be abbreviated to
+`-me'.
+
+
+File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
+
+8.29.2 Blocking
+---------------
+
+A blocked section or memory block is guaranteed not to cross the
+blocking boundary (usually a page, or 128 words) if it is smaller than
+the blocking size, or to start on a page boundary if it is larger than
+the blocking size.
+
+
+File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
+
+8.29.3 Environment Settings
+---------------------------
+
+`C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
+to the list of directories normally searched for source and include
+files.  `C54XDSP_DIR' will override `A_DIR'.
+
+
+File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
+
+8.29.4 Constants Syntax
+-----------------------
+
+The TIC54X version of `as' allows the following additional constant
+formats, using a suffix to indicate the radix:
+
+     Binary                  `000000B, 011000b'
+     Octal                   `10Q, 224q'
+     Hexadecimal             `45h, 0FH'
+
+
+File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
+
+8.29.5 String Substitution
+--------------------------
+
+A subset of allowable symbols (which we'll call subsyms) may be assigned
+arbitrary string values.  This is roughly equivalent to C preprocessor
+#define macros.  When `as' encounters one of these symbols, the symbol
+is replaced in the input stream by its string value.  Subsym names
+*must* begin with a letter.
+
+   Subsyms may be defined using the `.asg' and `.eval' directives
+(*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
+
+   Expansion is recursive until a previously encountered symbol is
+seen, at which point substitution stops.
+
+   In this example, x is replaced with SYM2; SYM2 is replaced with
+SYM1, and SYM1 is replaced with x.  At this point, x has already been
+encountered and the substitution stops.
+
+      .asg   "x",SYM1
+      .asg   "SYM1",SYM2
+      .asg   "SYM2",x
+      add    x,a             ; final code assembled is "add  x, a"
+
+   Macro parameters are converted to subsyms; a side effect of this is
+the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
+defined within a macro will have global scope, unless the `.var'
+directive is used to identify the subsym as a local macro variable
+*note `.var': TIC54X-Directives.
+
+   Substitution may be forced in situations where replacement might be
+ambiguous by placing colons on either side of the subsym.  The following
+code:
+
+      .eval  "10",x
+     LAB:X:  add     #x, a
+
+   When assembled becomes:
+
+     LAB10  add     #10, a
+
+   Smaller parts of the string assigned to a subsym may be accessed with
+the following syntax:
+
+``:SYMBOL(CHAR_INDEX):''
+     Evaluates to a single-character string, the character at
+     CHAR_INDEX.
+
+``:SYMBOL(START,LENGTH):''
+     Evaluates to a substring of SYMBOL beginning at START with length
+     LENGTH.
+
+
+File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
+
+8.29.6 Local Labels
+-------------------
+
+Local labels may be defined in two ways:
+
+   * $N, where N is a decimal number between 0 and 9
+
+   * LABEL?, where LABEL is any legal symbol name.
+
+   Local labels thus defined may be redefined or automatically
+generated.  The scope of a local label is based on when it may be
+undefined or reset.  This happens when one of the following situations
+is encountered:
+
+   * .newblock directive *note `.newblock': TIC54X-Directives.
+
+   * The current section is changed (.sect, .text, or .data)
+
+   * Entering or leaving an included file
+
+   * The macro scope where the label was defined is exited
+
+
+File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
+
+8.29.7 Math Builtins
+--------------------
+
+The following built-in functions may be used to generate a
+floating-point value.  All return a floating-point value except `$cvi',
+`$int', and `$sgn', which return an integer value.
+
+``$acos(EXPR)''
+     Returns the floating point arccosine of EXPR.
+
+``$asin(EXPR)''
+     Returns the floating point arcsine of EXPR.
+
+``$atan(EXPR)''
+     Returns the floating point arctangent of EXPR.
+
+``$atan2(EXPR1,EXPR2)''
+     Returns the floating point arctangent of EXPR1 / EXPR2.
+
+``$ceil(EXPR)''
+     Returns the smallest integer not less than EXPR as floating point.
+
+``$cosh(EXPR)''
+     Returns the floating point hyperbolic cosine of EXPR.
+
+``$cos(EXPR)''
+     Returns the floating point cosine of EXPR.
+
+``$cvf(EXPR)''
+     Returns the integer value EXPR converted to floating-point.
+
+``$cvi(EXPR)''
+     Returns the floating point value EXPR converted to integer.
+
+``$exp(EXPR)''
+     Returns the floating point value e ^ EXPR.
+
+``$fabs(EXPR)''
+     Returns the floating point absolute value of EXPR.
+
+``$floor(EXPR)''
+     Returns the largest integer that is not greater than EXPR as
+     floating point.
+
+``$fmod(EXPR1,EXPR2)''
+     Returns the floating point remainder of EXPR1 / EXPR2.
+
+``$int(EXPR)''
+     Returns 1 if EXPR evaluates to an integer, zero otherwise.
+
+``$ldexp(EXPR1,EXPR2)''
+     Returns the floating point value EXPR1 * 2 ^ EXPR2.
+
+``$log10(EXPR)''
+     Returns the base 10 logarithm of EXPR.
+
+``$log(EXPR)''
+     Returns the natural logarithm of EXPR.
+
+``$max(EXPR1,EXPR2)''
+     Returns the floating point maximum of EXPR1 and EXPR2.
+
+``$min(EXPR1,EXPR2)''
+     Returns the floating point minimum of EXPR1 and EXPR2.
+
+``$pow(EXPR1,EXPR2)''
+     Returns the floating point value EXPR1 ^ EXPR2.
+
+``$round(EXPR)''
+     Returns the nearest integer to EXPR as a floating point number.
+
+``$sgn(EXPR)''
+     Returns -1, 0, or 1 based on the sign of EXPR.
+
+``$sin(EXPR)''
+     Returns the floating point sine of EXPR.
+
+``$sinh(EXPR)''
+     Returns the floating point hyperbolic sine of EXPR.
+
+``$sqrt(EXPR)''
+     Returns the floating point square root of EXPR.
+
+``$tan(EXPR)''
+     Returns the floating point tangent of EXPR.
+
+``$tanh(EXPR)''
+     Returns the floating point hyperbolic tangent of EXPR.
+
+``$trunc(EXPR)''
+     Returns the integer value of EXPR truncated towards zero as
+     floating point.
+
+
+
+File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
+
+8.29.8 Extended Addressing
+--------------------------
+
+The `LDX' pseudo-op is provided for loading the extended addressing bits
+of a label or address.  For example, if an address `_label' resides in
+extended program memory, the value of `_label' may be loaded as follows:
+      ldx     #_label,16,a    ; loads extended bits of _label
+      or      #_label,a       ; loads lower 16 bits of _label
+      bacc    a               ; full address is in accumulator A
+
+
+File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
+
+8.29.9 Directives
+-----------------
+
+`.align [SIZE]'
+`.even'
+     Align the section program counter on the next boundary, based on
+     SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
+     `.align' with a SIZE of 2.
+    `1'
+          Align SPC to word boundary
+
+    `2'
+          Align SPC to longword boundary (same as .even)
+
+    `128'
+          Align SPC to page boundary
+
+`.asg STRING, NAME'
+     Assign NAME the string STRING.  String replacement is performed on
+     STRING before assignment.
+
+`.eval STRING, NAME'
+     Evaluate the contents of string STRING and assign the result as a
+     string to the subsym NAME.  String replacement is performed on
+     STRING before assignment.
+
+`.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
+     Reserve space for SYMBOL in the .bss section.  SIZE is in words.
+     If present, BLOCKING_FLAG indicates the allocated space should be
+     aligned on a page boundary if it would otherwise cross a page
+     boundary.  If present, ALIGNMENT_FLAG causes the assembler to
+     allocate SIZE on a long word boundary.
+
+`.byte VALUE [,...,VALUE_N]'
+`.ubyte VALUE [,...,VALUE_N]'
+`.char VALUE [,...,VALUE_N]'
+`.uchar VALUE [,...,VALUE_N]'
+     Place one or more bytes into consecutive words of the current
+     section.  The upper 8 bits of each word is zero-filled.  If a
+     label is used, it points to the word allocated for the first byte
+     encountered.
+
+`.clink ["SECTION_NAME"]'
+     Set STYP_CLINK flag for this section, which indicates to the
+     linker that if no symbols from this section are referenced, the
+     section should not be included in the link.  If SECTION_NAME is
+     omitted, the current section is used.
+
+`.c_mode'
+     TBD.
+
+`.copy "FILENAME" | FILENAME'
+`.include "FILENAME" | FILENAME'
+     Read source statements from FILENAME.  The normal include search
+     path is used.  Normally .copy will cause statements from the
+     included file to be printed in the assembly listing and .include
+     will not, but this distinction is not currently implemented.
+
+`.data'
+     Begin assembling code into the .data section.
+
+`.double VALUE [,...,VALUE_N]'
+`.ldouble VALUE [,...,VALUE_N]'
+`.float VALUE [,...,VALUE_N]'
+`.xfloat VALUE [,...,VALUE_N]'
+     Place an IEEE single-precision floating-point representation of
+     one or more floating-point values into the current section.  All
+     but `.xfloat' align the result on a longword boundary.  Values are
+     stored most-significant word first.
+
+`.drlist'
+`.drnolist'
+     Control printing of directives to the listing file.  Ignored.
+
+`.emsg STRING'
+`.mmsg STRING'
+`.wmsg STRING'
+     Emit a user-defined error, message, or warning, respectively.
+
+`.far_mode'
+     Use extended addressing when assembling statements.  This should
+     appear only once per file, and is equivalent to the -mfar-mode
+     option *note `-mfar-mode': TIC54X-Opts.
+
+`.fclist'
+`.fcnolist'
+     Control printing of false conditional blocks to the listing file.
+
+`.field VALUE [,SIZE]'
+     Initialize a bitfield of SIZE bits in the current section.  If
+     VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
+     bits.  If VALUE does not fit into SIZE bits, the value will be
+     truncated.  Successive `.field' directives will pack starting at
+     the current word, filling the most significant bits first, and
+     aligning to the start of the next word if the field size does not
+     fit into the space remaining in the current word.  A `.align'
+     directive with an operand of 1 will force the next `.field'
+     directive to begin packing into a new word.  If a label is used, it
+     points to the word that contains the specified field.
+
+`.global SYMBOL [,...,SYMBOL_N]'
+`.def SYMBOL [,...,SYMBOL_N]'
+`.ref SYMBOL [,...,SYMBOL_N]'
+     `.def' nominally identifies a symbol defined in the current file
+     and availalbe to other files.  `.ref' identifies a symbol used in
+     the current file but defined elsewhere.  Both map to the standard
+     `.global' directive.
+
+`.half VALUE [,...,VALUE_N]'
+`.uhalf VALUE [,...,VALUE_N]'
+`.short VALUE [,...,VALUE_N]'
+`.ushort VALUE [,...,VALUE_N]'
+`.int VALUE [,...,VALUE_N]'
+`.uint VALUE [,...,VALUE_N]'
+`.word VALUE [,...,VALUE_N]'
+`.uword VALUE [,...,VALUE_N]'
+     Place one or more values into consecutive words of the current
+     section.  If a label is used, it points to the word allocated for
+     the first value encountered.
+
+`.label SYMBOL'
+     Define a special SYMBOL to refer to the load time address of the
+     current section program counter.
+
+`.length'
+`.width'
+     Set the page length and width of the output listing file.  Ignored.
+
+`.list'
+`.nolist'
+     Control whether the source listing is printed.  Ignored.
+
+`.long VALUE [,...,VALUE_N]'
+`.ulong VALUE [,...,VALUE_N]'
+`.xlong VALUE [,...,VALUE_N]'
+     Place one or more 32-bit values into consecutive words in the
+     current section.  The most significant word is stored first.
+     `.long' and `.ulong' align the result on a longword boundary;
+     `xlong' does not.
+
+`.loop [COUNT]'
+`.break [CONDITION]'
+`.endloop'
+     Repeatedly assemble a block of code.  `.loop' begins the block, and
+     `.endloop' marks its termination.  COUNT defaults to 1024, and
+     indicates the number of times the block should be repeated.
+     `.break' terminates the loop so that assembly begins after the
+     `.endloop' directive.  The optional CONDITION will cause the loop
+     to terminate only if it evaluates to zero.
+
+`MACRO_NAME .macro [PARAM1][,...PARAM_N]'
+`[.mexit]'
+`.endm'
+     See the section on macros for more explanation (*Note
+     TIC54X-Macros::.
+
+`.mlib "FILENAME" | FILENAME'
+     Load the macro library FILENAME.  FILENAME must be an archived
+     library (BFD ar-compatible) of text files, expected to contain
+     only macro definitions.   The standard include search path is used.
+
+`.mlist'
+
+`.mnolist'
+     Control whether to include macro and loop block expansions in the
+     listing output.  Ignored.
+
+`.mmregs'
+     Define global symbolic names for the 'c54x registers.  Supposedly
+     equivalent to executing `.set' directives for each register with
+     its memory-mapped value, but in reality is provided only for
+     compatibility and does nothing.
+
+`.newblock'
+     This directive resets any TIC54X local labels currently defined.
+     Normal `as' local labels are unaffected.
+
+`.option OPTION_LIST'
+     Set listing options.  Ignored.
+
+`.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
+     Designate SECTION_NAME for blocking.  Blocking guarantees that a
+     section will start on a page boundary (128 words) if it would
+     otherwise cross a page boundary.  Only initialized sections may be
+     designated with this directive.  See also *Note TIC54X-Block::.
+
+`.sect "SECTION_NAME"'
+     Define a named initialized section and make it the current section.
+
+`SYMBOL .set "VALUE"'
+`SYMBOL .equ "VALUE"'
+     Equate a constant VALUE to a SYMBOL, which is placed in the symbol
+     table.  SYMBOL may not be previously defined.
+
+`.space SIZE_IN_BITS'
+`.bes SIZE_IN_BITS'
+     Reserve the given number of bits in the current section and
+     zero-fill them.  If a label is used with `.space', it points to the
+     *first* word reserved.  With `.bes', the label points to the
+     *last* word reserved.
+
+`.sslist'
+`.ssnolist'
+     Controls the inclusion of subsym replacement in the listing
+     output.  Ignored.
+
+`.string "STRING" [,...,"STRING_N"]'
+`.pstring "STRING" [,...,"STRING_N"]'
+     Place 8-bit characters from STRING into the current section.
+     `.string' zero-fills the upper 8 bits of each word, while
+     `.pstring' puts two characters into each word, filling the
+     most-significant bits first.  Unused space is zero-filled.  If a
+     label is used, it points to the first word initialized.
+
+`[STAG] .struct [OFFSET]'
+`[NAME_1] element [COUNT_1]'
+`[NAME_2] element [COUNT_2]'
+`[TNAME] .tag STAGX [TCOUNT]'
+`...'
+`[NAME_N] element [COUNT_N]'
+`[SSIZE] .endstruct'
+`LABEL .tag [STAG]'
+     Assign symbolic offsets to the elements of a structure.  STAG
+     defines a symbol to use to reference the structure.  OFFSET
+     indicates a starting value to use for the first element
+     encountered; otherwise it defaults to zero.  Each element can have
+     a named offset, NAME, which is a symbol assigned the value of the
+     element's offset into the structure.  If STAG is missing, these
+     become global symbols.  COUNT adjusts the offset that many times,
+     as if `element' were an array.  `element' may be one of `.byte',
+     `.word', `.long', `.float', or any equivalent of those, and the
+     structure offset is adjusted accordingly.  `.field' and `.string'
+     are also allowed; the size of `.field' is one bit, and `.string'
+     is considered to be one word in size.  Only element descriptors,
+     structure/union tags, `.align' and conditional assembly directives
+     are allowed within `.struct'/`.endstruct'.  `.align' aligns member
+     offsets to word boundaries only.  SSIZE, if provided, will always
+     be assigned the size of the structure.
+
+     The `.tag' directive, in addition to being used to define a
+     structure/union element within a structure, may be used to apply a
+     structure to a symbol.  Once applied to LABEL, the individual
+     structure elements may be applied to LABEL to produce the desired
+     offsets using LABEL as the structure base.
+
+`.tab'
+     Set the tab size in the output listing.  Ignored.
+
+`[UTAG] .union'
+`[NAME_1] element [COUNT_1]'
+`[NAME_2] element [COUNT_2]'
+`[TNAME] .tag UTAGX[,TCOUNT]'
+`...'
+`[NAME_N] element [COUNT_N]'
+`[USIZE] .endstruct'
+`LABEL .tag [UTAG]'
+     Similar to `.struct', but the offset after each element is reset to
+     zero, and the USIZE is set to the maximum of all defined elements.
+     Starting offset for the union is always zero.
+
+`[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
+     Reserve space for variables in a named, uninitialized section
+     (similar to .bss).  `.usect' allows definitions sections
+     independent of .bss.  SYMBOL points to the first location reserved
+     by this allocation.  The symbol may be used as a variable name.
+     SIZE is the allocated size in words.  BLOCKING_FLAG indicates
+     whether to block this section on a page boundary (128 words)
+     (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
+     section should be longword-aligned.
+
+`.var SYM[,..., SYM_N]'
+     Define a subsym to be a local variable within a macro.  See *Note
+     TIC54X-Macros::.
+
+`.version VERSION'
+     Set which processor to build instructions for.  Though the
+     following values are accepted, the op is ignored.
+    `541'
+    `542'
+    `543'
+    `545'
+    `545LP'
+    `546LP'
+    `548'
+    `549'
+
+
+File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
+
+8.29.10 Macros
+--------------
+
+Macros do not require explicit dereferencing of arguments (i.e. \ARG).
+
+   During macro expansion, the macro parameters are converted to
+subsyms.  If the number of arguments passed the macro invocation
+exceeds the number of parameters defined, the last parameter is
+assigned the string equivalent of all remaining arguments.  If fewer
+arguments are given than parameters, the missing parameters are
+assigned empty strings.  To include a comma in an argument, you must
+enclose the argument in quotes.
+
+   The following built-in subsym functions allow examination of the
+string value of subsyms (or ordinary strings).  The arguments are
+strings unless otherwise indicated (subsyms passed as args will be
+replaced by the strings they represent).
+``$symlen(STR)''
+     Returns the length of STR.
+
+``$symcmp(STR1,STR2)''
+     Returns 0 if STR1 == STR2, non-zero otherwise.
+
+``$firstch(STR,CH)''
+     Returns index of the first occurrence of character constant CH in
+     STR.
+
+``$lastch(STR,CH)''
+     Returns index of the last occurrence of character constant CH in
+     STR.
+
+``$isdefed(SYMBOL)''
+     Returns zero if the symbol SYMBOL is not in the symbol table,
+     non-zero otherwise.
+
+``$ismember(SYMBOL,LIST)''
+     Assign the first member of comma-separated string LIST to SYMBOL;
+     LIST is reassigned the remainder of the list.  Returns zero if
+     LIST is a null string.  Both arguments must be subsyms.
+
+``$iscons(EXPR)''
+     Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
+     4 if a character, 5 if decimal, and zero if not an integer.
+
+``$isname(NAME)''
+     Returns 1 if NAME is a valid symbol name, zero otherwise.
+
+``$isreg(REG)''
+     Returns 1 if REG is a valid predefined register name (AR0-AR7
+     only).
+
+``$structsz(STAG)''
+     Returns the size of the structure or union represented by STAG.
+
+``$structacc(STAG)''
+     Returns the reference point of the structure or union represented
+     by STAG.   Always returns zero.
+
+
+
+File: as.info,  Node: TIC54X-MMRegs,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
+
+8.29.11 Memory-mapped Registers
+-------------------------------
+
+The following symbols are recognized as memory-mapped registers:
+
+
+
+File: as.info,  Node: Z80-Dependent,  Next: Z8000-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
+
+8.30 Z80 Dependent Features
+===========================
+
+* Menu:
+
+* Z80 Options::              Options
+* Z80 Syntax::               Syntax
+* Z80 Floating Point::       Floating Point
+* Z80 Directives::           Z80 Machine Directives
+* Z80 Opcodes::              Opcodes
+
+
+File: as.info,  Node: Z80 Options,  Next: Z80 Syntax,  Up: Z80-Dependent
+
+8.30.1 Options
+--------------
+
+The Zilog Z80 and Ascii R800 version of `as' have a few machine
+dependent options.
+`-z80'
+     Produce code for the Z80 processor. There are additional options to
+     request warnings and error messages for undocumented instructions.
+
+`-ignore-undocumented-instructions'
+`-Wnud'
+     Silently assemble undocumented Z80-instructions that have been
+     adopted as documented R800-instructions.
+
+`-ignore-unportable-instructions'
+`-Wnup'
+     Silently assemble all undocumented Z80-instructions.
+
+`-warn-undocumented-instructions'
+`-Wud'
+     Issue warnings for undocumented Z80-instructions that work on
+     R800, do not assemble other undocumented instructions without
+     warning.
+
+`-warn-unportable-instructions'
+`-Wup'
+     Issue warnings for other undocumented Z80-instructions, do not
+     treat any undocumented instructions as errors.
+
+`-forbid-undocumented-instructions'
+`-Fud'
+     Treat all undocumented z80-instructions as errors.
+
+`-forbid-unportable-instructions'
+`-Fup'
+     Treat undocumented z80-instructions that do not work on R800 as
+     errors.
+
+`-r800'
+     Produce code for the R800 processor. The assembler does not support
+     undocumented instructions for the R800.  In line with common
+     practice, `as' uses Z80 instriction names for the R800 processor,
+     as far as they exist.
+
+
+File: as.info,  Node: Z80 Syntax,  Next: Z80 Floating Point,  Prev: Z80 Options,  Up: Z80-Dependent
+
+8.30.2 Syntax
+-------------
+
+The assembler syntax closely follows the 'Z80 family CPU User Manual' by
+Zilog.  In expressions a single `=' may be used as "is equal to"
+comparison operator.
+
+   Suffices can be used to indicate the radix of integer constants; `H'
+or `h' for hexadecimal, `D' or `d' for decimal, `Q', `O', `q' or `o'
+for octal, and `B' for binary.
+
+   The suffix `b' denotes a backreference to local label.
+
+* Menu:
+
+* Z80-Chars::                Special Characters
+* Z80-Regs::                 Register Names
+* Z80-Case::                 Case Sensitivity
+
+
+File: as.info,  Node: Z80-Chars,  Next: Z80-Regs,  Up: Z80 Syntax
+
+8.30.2.1 Special Characters
+...........................
+
+The semicolon `;' is the line comment character;
+
+   The dollar sign `$' can be used as a prefix for hexadecimal numbers
+and as a symbol denoting the current location counter.
+
+   A backslash `\' is an ordinary character for the Z80 assembler.
+
+   The single quote `'' must be followed by a closing quote. If there
+is one character inbetween, it is a character constant, otherwise it is
+a string constant.
+
+
+File: as.info,  Node: Z80-Regs,  Next: Z80-Case,  Prev: Z80-Chars,  Up: Z80 Syntax
+
+8.30.2.2 Register Names
+.......................
+
+The registers are referred to with the letters assigned to them by
+Zilog. In addition `as' recognises `ixl' and `ixh' as the least and
+most significant octet in `ix', and similarly `iyl' and  `iyh' as parts
+of `iy'.
+
+
+File: as.info,  Node: Z80-Case,  Prev: Z80-Regs,  Up: Z80 Syntax
+
+8.30.2.3 Case Sensitivity
+.........................
+
+Upper and lower case are equivalent in register names, opcodes,
+condition codes  and assembler directives.  The case of letters is
+significant in labels and symbol names. The case is also important to
+distinguish the suffix `b' for a backward reference to a local label
+from the suffix `B' for a number in binary notation.
+
+
+File: as.info,  Node: Z80 Floating Point,  Next: Z80 Directives,  Prev: Z80 Syntax,  Up: Z80-Dependent
+
+8.30.3 Floating Point
+---------------------
+
+Floating-point numbers are not supported.
+
+
+File: as.info,  Node: Z80 Directives,  Next: Z80 Opcodes,  Prev: Z80 Floating Point,  Up: Z80-Dependent
+
+8.30.4 Z80 Assembler Directives
+-------------------------------
+
+`as' for the Z80 supports some additional directives for compatibility
+with other assemblers.
+
+   These are the additional directives in `as' for the Z80:
+
+`db EXPRESSION|STRING[,EXPRESSION|STRING...]'
+`defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
+     For each STRING the characters are copied to the object file, for
+     each other EXPRESSION the value is stored in one byte.  A warning
+     is issued in case of an overflow.
+
+`dw EXPRESSION[,EXPRESSION...]'
+`defw EXPRESSION[,EXPRESSION...]'
+     For each EXPRESSION the value is stored in two bytes, ignoring
+     overflow.
+
+`d24 EXPRESSION[,EXPRESSION...]'
+`def24 EXPRESSION[,EXPRESSION...]'
+     For each EXPRESSION the value is stored in three bytes, ignoring
+     overflow.
+
+`d32 EXPRESSION[,EXPRESSION...]'
+`def32 EXPRESSION[,EXPRESSION...]'
+     For each EXPRESSION the value is stored in four bytes, ignoring
+     overflow.
+
+`ds COUNT[, VALUE]'
+`defs COUNT[, VALUE]'
+     Fill COUNT bytes in the object file with VALUE, if VALUE is
+     omitted it defaults to zero.
+
+`SYMBOL equ EXPRESSION'
+`SYMBOL defl EXPRESSION'
+     These directives set the value of SYMBOL to EXPRESSION. If `equ'
+     is used, it is an error if SYMBOL is already defined.  Symbols
+     defined with `equ' are not protected from redefinition.
+
+`set'
+     This is a normal instruction on Z80, and not an assembler
+     directive.
+
+`psect NAME'
+     A synonym for *Note Section::, no second argument should be given.
+
+
+
+File: as.info,  Node: Z80 Opcodes,  Prev: Z80 Directives,  Up: Z80-Dependent
+
+8.30.5 Opcodes
+--------------
+
+In line with commmon practice Z80 mnonics are used for both the Z80 and
+the R800.
+
+   In many instructions it is possible to use one of the half index
+registers (`ixl',`ixh',`iyl',`iyh') in stead of an 8-bit general
+purpose register. This yields instructions that are documented on the
+R800 and undocumented on the Z80.  Similarly `in f,(c)' is documented
+on the R800 and undocumented on the Z80.
+
+   The assembler also supports the following undocumented
+Z80-instructions, that have not been adopted in the R800 instruction
+set:
+`out (c),0'
+     Sends zero to the port pointed to by register c.
+
+`sli M'
+     Equivalent to `M = (M<<1)+1', the operand M can be any operand
+     that is valid for `sla'. One can use `sll' as a synonym for `sli'.
+
+`OP (ix+D), R'
+     This is equivalent to
+
+          ld R, (ix+D)
+          OPC R
+          ld (ix+D), R
+
+     The operation `OPC' may be any of `res B,', `set B,', `rl', `rlc',
+     `rr', `rrc', `sla', `sli', `sra' and `srl', and the register `R'
+     may be any of `a', `b', `c', `d', `e', `h' and `l'.
+
+`OPC (iy+D), R'
+     As above, but with `iy' instead of `ix'.
+
+   The web site at `http://www.z80.info' is a good starting place to
+find more information on programming the Z80.
+
+
+File: as.info,  Node: Z8000-Dependent,  Next: Vax-Dependent,  Prev: Z80-Dependent,  Up: Machine Dependencies
+
+8.31 Z8000 Dependent Features
+=============================
+
+   The Z8000 as supports both members of the Z8000 family: the
+unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
+24 bit addresses.
+
+   When the assembler is in unsegmented mode (specified with the
+`unsegm' directive), an address takes up one word (16 bit) sized
+register.  When the assembler is in segmented mode (specified with the
+`segm' directive), a 24-bit address takes up a long (32 bit) register.
+*Note Assembler Directives for the Z8000: Z8000 Directives, for a list
+of other Z8000 specific assembler directives.
+
+* Menu:
+
+* Z8000 Options::               Command-line options for the Z8000
+* Z8000 Syntax::                Assembler syntax for the Z8000
+* Z8000 Directives::            Special directives for the Z8000
+* Z8000 Opcodes::               Opcodes
+
+
+File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
+
+8.31.1 Options
+--------------
+
+`-z8001'
+     Generate segmented code by default.
+
+`-z8002'
+     Generate unsegmented code by default.
+
+
+File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
+
+8.31.2 Syntax
+-------------
+
+* Menu:
+
+* Z8000-Chars::                Special Characters
+* Z8000-Regs::                 Register Names
+* Z8000-Addressing::           Addressing Modes
+
+
+File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
+
+8.31.2.1 Special Characters
+...........................
+
+`!' is the line comment character.
+
+   You can use `;' instead of a newline to separate statements.
+
+
+File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
+
+8.31.2.2 Register Names
+.......................
+
+The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
+to different sized groups of registers by register number, with the
+prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
+64 bit registers.  You can also refer to the contents of the first
+eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
+and `rhN'.
+
+_byte registers_
+     rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
+     rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
+
+_word registers_
+     r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
+
+_long word registers_
+     rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
+
+_quad word registers_
+     rq0 rq4 rq8 rq12
+
+
+File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
+
+8.31.2.3 Addressing Modes
+.........................
+
+as understands the following addressing modes for the Z8000:
+
+`rlN'
+`rhN'
+`rN'
+`rrN'
+`rqN'
+     Register direct:  8bit, 16bit, 32bit, and 64bit registers.
+
+`@rN'
+`@rrN'
+     Indirect register:  @rrN in segmented mode, @rN in unsegmented
+     mode.
+
+`ADDR'
+     Direct: the 16 bit or 24 bit address (depending on whether the
+     assembler is in segmented or unsegmented mode) of the operand is
+     in the instruction.
+
+`address(rN)'
+     Indexed: the 16 or 24 bit address is added to the 16 bit register
+     to produce the final address in memory of the operand.
+
+`rN(#IMM)'
+`rrN(#IMM)'
+     Base Address: the 16 or 24 bit register is added to the 16 bit sign
+     extended immediate displacement to produce the final address in
+     memory of the operand.
+
+`rN(rM)'
+`rrN(rM)'
+     Base Index: the 16 or 24 bit register rN or rrN is added to the
+     sign extended 16 bit index register rM to produce the final
+     address in memory of the operand.
+
+`#XX'
+     Immediate data XX.
+
+
+File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
+
+8.31.3 Assembler Directives for the Z8000
+-----------------------------------------
+
+The Z8000 port of as includes additional assembler directives, for
+compatibility with other Z8000 assemblers.  These do not begin with `.'
+(unlike the ordinary as directives).
+
+`segm'
+`.z8001'
+     Generate code for the segmented Z8001.
+
+`unsegm'
+`.z8002'
+     Generate code for the unsegmented Z8002.
+
+`name'
+     Synonym for `.file'
+
+`global'
+     Synonym for `.global'
+
+`wval'
+     Synonym for `.word'
+
+`lval'
+     Synonym for `.long'
+
+`bval'
+     Synonym for `.byte'
+
+`sval'
+     Assemble a string.  `sval' expects one string literal, delimited by
+     single quotes.  It assembles each byte of the string into
+     consecutive addresses.  You can use the escape sequence `%XX'
+     (where XX represents a two-digit hexadecimal number) to represent
+     the character whose ASCII value is XX.  Use this feature to
+     describe single quote and other characters that may not appear in
+     string literals as themselves.  For example, the C statement
+     `char *a = "he said \"it's 50% off\"";' is represented in Z8000
+     assembly language (shown with the assembler output in hex at the
+     left) as
+
+          68652073    sval    'he said %22it%27s 50%25 off%22%00'
+          61696420
+          22697427
+          73203530
+          25206F66
+          662200
+
+`rsect'
+     synonym for `.section'
+
+`block'
+     synonym for `.space'
+
+`even'
+     special case of `.align'; aligns output to even byte boundary.
+
+
+File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
+
+8.31.4 Opcodes
+--------------
+
+For detailed information on the Z8000 machine instruction set, see
+`Z8000 Technical Manual'.
+
+   The following table summarizes the opcodes and their arguments:
+
+                 rs   16 bit source register
+                 rd   16 bit destination register
+                 rbs   8 bit source register
+                 rbd   8 bit destination register
+                 rrs   32 bit source register
+                 rrd   32 bit destination register
+                 rqs   64 bit source register
+                 rqd   64 bit destination register
+                 addr 16/24 bit address
+                 imm  immediate data
+
+     adc rd,rs               clrb addr               cpsir @rd, at rs,rr,cc
+     adcb rbd,rbs            clrb addr(rd)           cpsirb @rd, at rs,rr,cc
+     add rd, at rs              clrb rbd                dab rbd
+     add rd,addr             com @rd                 dbjnz rbd,disp7
+     add rd,addr(rs)         com addr                dec @rd,imm4m1
+     add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
+     add rd,rs               com rd                  dec addr,imm4m1
+     addb rbd, at rs            comb @rd                dec rd,imm4m1
+     addb rbd,addr           comb addr               decb @rd,imm4m1
+     addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
+     addb rbd,imm8           comb rbd                decb addr,imm4m1
+     addb rbd,rbs            comflg flags            decb rbd,imm4m1
+     addl rrd, at rs            cp @rd,imm16            di i2
+     addl rrd,addr           cp addr(rd),imm16       div rrd, at rs
+     addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
+     addl rrd,imm32          cp rd, at rs               div rrd,addr(rs)
+     addl rrd,rrs            cp rd,addr              div rrd,imm16
+     and rd, at rs              cp rd,addr(rs)          div rrd,rs
+     and rd,addr             cp rd,imm16             divl rqd, at rs
+     and rd,addr(rs)         cp rd,rs                divl rqd,addr
+     and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
+     and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
+     andb rbd, at rs            cpb addr,imm8           divl rqd,rrs
+     andb rbd,addr           cpb rbd, at rs             djnz rd,disp7
+     andb rbd,addr(rs)       cpb rbd,addr            ei i2
+     andb rbd,imm8           cpb rbd,addr(rs)        ex rd, at rs
+     andb rbd,rbs            cpb rbd,imm8            ex rd,addr
+     bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
+     bit addr(rd),imm4       cpd rd, at rs,rr,cc        ex rd,rs
+     bit addr,imm4           cpdb rbd, at rs,rr,cc      exb rbd, at rs
+     bit rd,imm4             cpdr rd, at rs,rr,cc       exb rbd,addr
+     bit rd,rs               cpdrb rbd, at rs,rr,cc     exb rbd,addr(rs)
+     bitb @rd,imm4           cpi rd, at rs,rr,cc        exb rbd,rbs
+     bitb addr(rd),imm4      cpib rbd, at rs,rr,cc      ext0e imm8
+     bitb addr,imm4          cpir rd, at rs,rr,cc       ext0f imm8
+     bitb rbd,imm4           cpirb rbd, at rs,rr,cc     ext8e imm8
+     bitb rbd,rs             cpl rrd, at rs             ext8f imm8
+     bpt                     cpl rrd,addr            exts rrd
+     call @rd                cpl rrd,addr(rs)        extsb rd
+     call addr               cpl rrd,imm32           extsl rqd
+     call addr(rd)           cpl rrd,rrs             halt
+     calr disp12             cpsd @rd, at rs,rr,cc      in rd, at rs
+     clr @rd                 cpsdb @rd, at rs,rr,cc     in rd,imm16
+     clr addr                cpsdr @rd, at rs,rr,cc     inb rbd, at rs
+     clr addr(rd)            cpsdrb @rd, at rs,rr,cc    inb rbd,imm16
+     clr rd                  cpsi @rd, at rs,rr,cc      inc @rd,imm4m1
+     clrb @rd                cpsib @rd, at rs,rr,cc     inc addr(rd),imm4m1
+     inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
+     inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
+     incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
+     incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd, at rs
+     incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
+     incb rbd,imm4m1         ldd @rs, at rd,rr          multl rqd,addr(rs)
+     ind @rd, at rs,ra          lddb @rs, at rd,rr         multl rqd,imm32
+     indb @rd, at rs,rba        lddr @rs, at rd,rr         multl rqd,rrs
+     inib @rd, at rs,ra         lddrb @rs, at rd,rr        neg @rd
+     inibr @rd, at rs,ra        ldi @rd, at rs,rr          neg addr
+     iret                    ldib @rd, at rs,rr         neg addr(rd)
+     jp cc, at rd               ldir @rd, at rs,rr         neg rd
+     jp cc,addr              ldirb @rd, at rs,rr        negb @rd
+     jp cc,addr(rd)          ldk rd,imm4             negb addr
+     jr cc,disp8             ldl @rd,rrs             negb addr(rd)
+     ld @rd,imm16            ldl addr(rd),rrs        negb rbd
+     ld @rd,rs               ldl addr,rrs            nop
+     ld addr(rd),imm16       ldl rd(imm16),rrs       or rd, at rs
+     ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
+     ld addr,imm16           ldl rrd, at rs             or rd,addr(rs)
+     ld addr,rs              ldl rrd,addr            or rd,imm16
+     ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
+     ld rd(rx),rs            ldl rrd,imm32           orb rbd, at rs
+     ld rd, at rs               ldl rrd,rrs             orb rbd,addr
+     ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
+     ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
+     ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
+     ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
+     ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
+     ld rd,rs(rx)            ldm rd, at rs,n            outb @rd,rbs
+     lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
+     lda rd,addr(rs)         ldm rd,addr,n           outd @rd, at rs,ra
+     lda rd,rs(imm16)        ldps @rs                outdb @rd, at rs,rba
+     lda rd,rs(rx)           ldps addr               outib @rd, at rs,ra
+     ldar rd,disp16          ldps addr(rs)           outibr @rd, at rs,ra
+     ldb @rd,imm8            ldr disp16,rs           pop @rd, at rs
+     ldb @rd,rbs             ldr rd,disp16           pop addr(rd), at rs
+     ldb addr(rd),imm8       ldrb disp16,rbs         pop addr, at rs
+     ldb addr(rd),rbs        ldrb rbd,disp16         pop rd, at rs
+     ldb addr,imm8           ldrl disp16,rrs         popl @rd, at rs
+     ldb addr,rbs            ldrl rrd,disp16         popl addr(rd), at rs
+     ldb rbd, at rs             mbit                    popl addr, at rs
+     ldb rbd,addr            mreq rd                 popl rrd, at rs
+     ldb rbd,addr(rs)        mres                    push @rd, at rs
+     ldb rbd,imm8            mset                    push @rd,addr
+     ldb rbd,rbs             mult rrd, at rs            push @rd,addr(rs)
+     ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
+     push @rd,rs             set addr,imm4           subl rrd,imm32
+     pushl @rd, at rs           set rd,imm4             subl rrd,rrs
+     pushl @rd,addr          set rd,rs               tcc cc,rd
+     pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
+     pushl @rd,rrs           setb addr(rd),imm4      test @rd
+     res @rd,imm4            setb addr,imm4          test addr
+     res addr(rd),imm4       setb rbd,imm4           test addr(rd)
+     res addr,imm4           setb rbd,rs             test rd
+     res rd,imm4             setflg imm4             testb @rd
+     res rd,rs               sinb rbd,imm16          testb addr
+     resb @rd,imm4           sinb rd,imm16           testb addr(rd)
+     resb addr(rd),imm4      sind @rd, at rs,ra         testb rbd
+     resb addr,imm4          sindb @rd, at rs,rba       testl @rd
+     resb rbd,imm4           sinib @rd, at rs,ra        testl addr
+     resb rbd,rs             sinibr @rd, at rs,ra       testl addr(rd)
+     resflg imm4             sla rd,imm8             testl rrd
+     ret cc                  slab rbd,imm8           trdb @rd, at rs,rba
+     rl rd,imm1or2           slal rrd,imm8           trdrb @rd, at rs,rba
+     rlb rbd,imm1or2         sll rd,imm8             trib @rd, at rs,rbr
+     rlc rd,imm1or2          sllb rbd,imm8           trirb @rd, at rs,rbr
+     rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra, at rb,rbr
+     rldb rbb,rba            sout imm16,rs           trtib @ra, at rb,rr
+     rr rd,imm1or2           soutb imm16,rbs         trtirb @ra, at rb,rbr
+     rrb rbd,imm1or2         soutd @rd, at rs,ra        trtrb @ra, at rb,rbr
+     rrc rd,imm1or2          soutdb @rd, at rs,rba      tset @rd
+     rrcb rbd,imm1or2        soutib @rd, at rs,ra       tset addr
+     rrdb rbb,rba            soutibr @rd, at rs,ra      tset addr(rd)
+     rsvd36                  sra rd,imm8             tset rd
+     rsvd38                  srab rbd,imm8           tsetb @rd
+     rsvd78                  sral rrd,imm8           tsetb addr
+     rsvd7e                  srl rd,imm8             tsetb addr(rd)
+     rsvd9d                  srlb rbd,imm8           tsetb rbd
+     rsvd9f                  srll rrd,imm8           xor rd, at rs
+     rsvdb9                  sub rd, at rs              xor rd,addr
+     rsvdbf                  sub rd,addr             xor rd,addr(rs)
+     sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
+     sbcb rbd,rbs            sub rd,imm16            xor rd,rs
+     sc imm8                 sub rd,rs               xorb rbd, at rs
+     sda rd,rs               subb rbd, at rs            xorb rbd,addr
+     sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
+     sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
+     sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
+     sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
+     sdll rrd,rs             subl rrd, at rs
+     set @rd,imm4            subl rrd,addr
+     set addr(rd),imm4       subl rrd,addr(rs)
+
+
+File: as.info,  Node: Vax-Dependent,  Prev: Z8000-Dependent,  Up: Machine Dependencies
+
+8.32 VAX Dependent Features
+===========================
+
+* Menu:
+
+* VAX-Opts::                    VAX Command-Line Options
+* VAX-float::                   VAX Floating Point
+* VAX-directives::              Vax Machine Directives
+* VAX-opcodes::                 VAX Opcodes
+* VAX-branch::                  VAX Branch Improvement
+* VAX-operands::                VAX Operands
+* VAX-no::                      Not Supported on VAX
+
+
+File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
+
+8.32.1 VAX Command-Line Options
+-------------------------------
+
+The Vax version of `as' accepts any of the following options, gives a
+warning message that the option was ignored and proceeds.  These
+options are for compatibility with scripts designed for other people's
+assemblers.
+
+``-D' (Debug)'
+``-S' (Symbol Table)'
+``-T' (Token Trace)'
+     These are obsolete options used to debug old assemblers.
+
+``-d' (Displacement size for JUMPs)'
+     This option expects a number following the `-d'.  Like options
+     that expect filenames, the number may immediately follow the `-d'
+     (old standard) or constitute the whole of the command line
+     argument that follows `-d' (GNU standard).
+
+``-V' (Virtualize Interpass Temporary File)'
+     Some other assemblers use a temporary file.  This option commanded
+     them to keep the information in active memory rather than in a
+     disk file.  `as' always does this, so this option is redundant.
+
+``-J' (JUMPify Longer Branches)'
+     Many 32-bit computers permit a variety of branch instructions to
+     do the same job.  Some of these instructions are short (and fast)
+     but have a limited range; others are long (and slow) but can
+     branch anywhere in virtual memory.  Often there are 3 flavors of
+     branch: short, medium and long.  Some other assemblers would emit
+     short and medium branches, unless told by this option to emit
+     short and long branches.
+
+``-t' (Temporary File Directory)'
+     Some other assemblers may use a temporary file, and this option
+     takes a filename being the directory to site the temporary file.
+     Since `as' does not use a temporary disk file, this option makes
+     no difference.  `-t' needs exactly one filename.
+
+   The Vax version of the assembler accepts additional options when
+compiled for VMS:
+
+`-h N'
+     External symbol or section (used for global variables) names are
+     not case sensitive on VAX/VMS and always mapped to upper case.
+     This is contrary to the C language definition which explicitly
+     distinguishes upper and lower case.  To implement a standard
+     conforming C compiler, names must be changed (mapped) to preserve
+     the case information.  The default mapping is to convert all lower
+     case characters to uppercase and adding an underscore followed by
+     a 6 digit hex value, representing a 24 digit binary value.  The
+     one digits in the binary value represent which characters are
+     uppercase in the original symbol name.
+
+     The `-h N' option determines how we map names.  This takes several
+     values.  No `-h' switch at all allows case hacking as described
+     above.  A value of zero (`-h0') implies names should be upper
+     case, and inhibits the case hack.  A value of 2 (`-h2') implies
+     names should be all lower case, with no case hack.  A value of 3
+     (`-h3') implies that case should be preserved.  The value 1 is
+     unused.  The `-H' option directs `as' to display every mapped
+     symbol during assembly.
+
+     Symbols whose names include a dollar sign `$' are exceptions to the
+     general name mapping.  These symbols are normally only used to
+     reference VMS library names.  Such symbols are always mapped to
+     upper case.
+
+`-+'
+     The `-+' option causes `as' to truncate any symbol name larger
+     than 31 characters.  The `-+' option also prevents some code
+     following the `_main' symbol normally added to make the object
+     file compatible with Vax-11 "C".
+
+`-1'
+     This option is ignored for backward compatibility with `as'
+     version 1.x.
+
+`-H'
+     The `-H' option causes `as' to print every symbol which was
+     changed by case mapping.
+
+
+File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
+
+8.32.2 VAX Floating Point
+-------------------------
+
+Conversion of flonums to floating point is correct, and compatible with
+previous assemblers.  Rounding is towards zero if the remainder is
+exactly half the least significant bit.
+
+   `D', `F', `G' and `H' floating point formats are understood.
+
+   Immediate floating literals (_e.g._ `S`$6.9') are rendered
+correctly.  Again, rounding is towards zero in the boundary case.
+
+   The `.float' directive produces `f' format numbers.  The `.double'
+directive produces `d' format numbers.
+
+
+File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
+
+8.32.3 Vax Machine Directives
+-----------------------------
+
+The Vax version of the assembler supports four directives for
+generating Vax floating point constants.  They are described in the
+table below.
+
+`.dfloat'
+     This expects zero or more flonums, separated by commas, and
+     assembles Vax `d' format 64-bit floating point constants.
+
+`.ffloat'
+     This expects zero or more flonums, separated by commas, and
+     assembles Vax `f' format 32-bit floating point constants.
+
+`.gfloat'
+     This expects zero or more flonums, separated by commas, and
+     assembles Vax `g' format 64-bit floating point constants.
+
+`.hfloat'
+     This expects zero or more flonums, separated by commas, and
+     assembles Vax `h' format 128-bit floating point constants.
+
+
+
+File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
+
+8.32.4 VAX Opcodes
+------------------
+
+All DEC mnemonics are supported.  Beware that `case...' instructions
+have exactly 3 operands.  The dispatch table that follows the `case...'
+instruction should be made with `.word' statements.  This is compatible
+with all unix assemblers we know of.
+
+
+File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
+
+8.32.5 VAX Branch Improvement
+-----------------------------
+
+Certain pseudo opcodes are permitted.  They are for branch
+instructions.  They expand to the shortest branch instruction that
+reaches the target.  Generally these mnemonics are made by substituting
+`j' for `b' at the start of a DEC mnemonic.  This feature is included
+both for compatibility and to help compilers.  If you do not need this
+feature, avoid these opcodes.  Here are the mnemonics, and the code
+they can expand into.
+
+`jbsb'
+     `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
+    (byte displacement)
+          `bsbb ...'
+
+    (word displacement)
+          `bsbw ...'
+
+    (long displacement)
+          `jsb ...'
+
+`jbr'
+`jr'
+     Unconditional branch.
+    (byte displacement)
+          `brb ...'
+
+    (word displacement)
+          `brw ...'
+
+    (long displacement)
+          `jmp ...'
+
+`jCOND'
+     COND may be any one of the conditional branches `neq', `nequ',
+     `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
+     `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
+     `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
+     `lbc'.  NOTCOND is the opposite condition to COND.
+    (byte displacement)
+          `bCOND ...'
+
+    (word displacement)
+          `bNOTCOND foo ; brw ... ; foo:'
+
+    (long displacement)
+          `bNOTCOND foo ; jmp ... ; foo:'
+
+`jacbX'
+     X may be one of `b d f g h l w'.
+    (word displacement)
+          `OPCODE ...'
+
+    (long displacement)
+               OPCODE ..., foo ;
+               brb bar ;
+               foo: jmp ... ;
+               bar:
+
+`jaobYYY'
+     YYY may be one of `lss leq'.
+
+`jsobZZZ'
+     ZZZ may be one of `geq gtr'.
+    (byte displacement)
+          `OPCODE ...'
+
+    (word displacement)
+               OPCODE ..., foo ;
+               brb bar ;
+               foo: brw DESTINATION ;
+               bar:
+
+    (long displacement)
+               OPCODE ..., foo ;
+               brb bar ;
+               foo: jmp DESTINATION ;
+               bar:
+
+`aobleq'
+`aoblss'
+`sobgeq'
+`sobgtr'
+
+    (byte displacement)
+          `OPCODE ...'
+
+    (word displacement)
+               OPCODE ..., foo ;
+               brb bar ;
+               foo: brw DESTINATION ;
+               bar:
+
+    (long displacement)
+               OPCODE ..., foo ;
+               brb bar ;
+               foo: jmp DESTINATION ;
+               bar:
+
+
+File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
+
+8.32.6 VAX Operands
+-------------------
+
+The immediate character is `$' for Unix compatibility, not `#' as DEC
+writes it.
+
+   The indirect character is `*' for Unix compatibility, not `@' as DEC
+writes it.
+
+   The displacement sizing character is ``' (an accent grave) for Unix
+compatibility, not `^' as DEC writes it.  The letter preceding ``' may
+have either case.  `G' is not understood, but all other letters (`b i l
+s w') are understood.
+
+   Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
+and lower case letters are equivalent.
+
+   For instance
+     tstb *w`$4(r5)
+
+   Any expression is permitted in an operand.  Operands are comma
+separated.
+
+
+File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
+
+8.32.7 Not Supported on VAX
+---------------------------
+
+Vax bit fields can not be assembled with `as'.  Someone can add the
+required code if they really need it.
+
+
+File: as.info,  Node: V850-Dependent,  Next: Xtensa-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
+
+8.33 v850 Dependent Features
+============================
+
+* Menu:
+
+* V850 Options::              Options
+* V850 Syntax::               Syntax
+* V850 Floating Point::       Floating Point
+* V850 Directives::           V850 Machine Directives
+* V850 Opcodes::              Opcodes
+
+
+File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
+
+8.33.1 Options
+--------------
+
+`as' supports the following additional command-line options for the
+V850 processor family:
+
+`-wsigned_overflow'
+     Causes warnings to be produced when signed immediate values
+     overflow the space available for then within their opcodes.  By
+     default this option is disabled as it is possible to receive
+     spurious warnings due to using exact bit patterns as immediate
+     constants.
+
+`-wunsigned_overflow'
+     Causes warnings to be produced when unsigned immediate values
+     overflow the space available for then within their opcodes.  By
+     default this option is disabled as it is possible to receive
+     spurious warnings due to using exact bit patterns as immediate
+     constants.
+
+`-mv850'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850 processor.  This allows the linker to detect
+     attempts to link such code with code assembled for other
+     processors.
+
+`-mv850e'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850E processor.  This allows the linker to detect
+     attempts to link such code with code assembled for other
+     processors.
+
+`-mv850e1'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850E1 processor.  This allows the linker to
+     detect attempts to link such code with code assembled for other
+     processors.
+
+`-mv850any'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850 processor but support instructions that are
+     specific to the extended variants of the process.  This allows the
+     production of binaries that contain target specific code, but
+     which are also intended to be used in a generic fashion.  For
+     example libgcc.a contains generic routines used by the code
+     produced by GCC for all versions of the v850 architecture,
+     together with support routines only used by the V850E architecture.
+
+`-mrelax'
+     Enables relaxation.  This allows the .longcall and .longjump pseudo
+     ops to be used in the assembler source code.  These ops label
+     sections of code which are either a long function call or a long
+     branch.  The assembler will then flag these sections of code and
+     the linker will attempt to relax them.
+
+
+
+File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
+
+8.33.2 Syntax
+-------------
+
+* Menu:
+
+* V850-Chars::                Special Characters
+* V850-Regs::                 Register Names
+
+
+File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
+
+8.33.2.1 Special Characters
+...........................
+
+`#' is the line comment character.
+
+
+File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
+
+8.33.2.2 Register Names
+.......................
+
+`as' supports the following names for registers:
+`general register 0'
+     r0, zero
+
+`general register 1'
+     r1
+
+`general register 2'
+     r2, hp 
+
+`general register 3'
+     r3, sp 
+
+`general register 4'
+     r4, gp 
+
+`general register 5'
+     r5, tp
+
+`general register 6'
+     r6
+
+`general register 7'
+     r7
+
+`general register 8'
+     r8
+
+`general register 9'
+     r9
+
+`general register 10'
+     r10
+
+`general register 11'
+     r11
+
+`general register 12'
+     r12
+
+`general register 13'
+     r13
+
+`general register 14'
+     r14
+
+`general register 15'
+     r15
+
+`general register 16'
+     r16
+
+`general register 17'
+     r17
+
+`general register 18'
+     r18
+
+`general register 19'
+     r19
+
+`general register 20'
+     r20
+
+`general register 21'
+     r21
+
+`general register 22'
+     r22
+
+`general register 23'
+     r23
+
+`general register 24'
+     r24
+
+`general register 25'
+     r25
+
+`general register 26'
+     r26
+
+`general register 27'
+     r27
+
+`general register 28'
+     r28
+
+`general register 29'
+     r29 
+
+`general register 30'
+     r30, ep 
+
+`general register 31'
+     r31, lp 
+
+`system register 0'
+     eipc 
+
+`system register 1'
+     eipsw 
+
+`system register 2'
+     fepc 
+
+`system register 3'
+     fepsw 
+
+`system register 4'
+     ecr 
+
+`system register 5'
+     psw 
+
+`system register 16'
+     ctpc 
+
+`system register 17'
+     ctpsw 
+
+`system register 18'
+     dbpc 
+
+`system register 19'
+     dbpsw 
+
+`system register 20'
+     ctbp
+
+
+File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
+
+8.33.3 Floating Point
+---------------------
+
+The V850 family uses IEEE floating-point numbers.
+
+
+File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
+
+8.33.4 V850 Machine Directives
+------------------------------
+
+`.offset <EXPRESSION>'
+     Moves the offset into the current section to the specified amount.
+
+`.section "name", <type>'
+     This is an extension to the standard .section directive.  It sets
+     the current section to be <type> and creates an alias for this
+     section called "name".
+
+`.v850'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850 processor.  This allows the linker to detect
+     attempts to link such code with code assembled for other
+     processors.
+
+`.v850e'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850E processor.  This allows the linker to detect
+     attempts to link such code with code assembled for other
+     processors.
+
+`.v850e1'
+     Specifies that the assembled code should be marked as being
+     targeted at the V850E1 processor.  This allows the linker to
+     detect attempts to link such code with code assembled for other
+     processors.
+
+
+
+File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
+
+8.33.5 Opcodes
+--------------
+
+`as' implements all the standard V850 opcodes.
+
+   `as' also implements the following pseudo ops:
+
+`hi0()'
+     Computes the higher 16 bits of the given expression and stores it
+     into the immediate operand field of the given instruction.  For
+     example:
+
+     `mulhi hi0(here - there), r5, r6'
+
+     computes the difference between the address of labels 'here' and
+     'there', takes the upper 16 bits of this difference, shifts it
+     down 16 bits and then mutliplies it by the lower 16 bits in
+     register 5, putting the result into register 6.
+
+`lo()'
+     Computes the lower 16 bits of the given expression and stores it
+     into the immediate operand field of the given instruction.  For
+     example:
+
+     `addi lo(here - there), r5, r6'
+
+     computes the difference between the address of labels 'here' and
+     'there', takes the lower 16 bits of this difference and adds it to
+     register 5, putting the result into register 6.
+
+`hi()'
+     Computes the higher 16 bits of the given expression and then adds
+     the value of the most significant bit of the lower 16 bits of the
+     expression and stores the result into the immediate operand field
+     of the given instruction.  For example the following code can be
+     used to compute the address of the label 'here' and store it into
+     register 6:
+
+     `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
+
+     The reason for this special behaviour is that movea performs a sign
+     extension on its immediate operand.  So for example if the address
+     of 'here' was 0xFFFFFFFF then without the special behaviour of the
+     hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
+     then the movea instruction would takes its immediate operand,
+     0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
+     into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
+     With the hi() pseudo op adding in the top bit of the lo() pseudo
+     op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
+     0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
+     the right value.
+
+`hilo()'
+     Computes the 32 bit value of the given expression and stores it
+     into the immediate operand field of the given instruction (which
+     must be a mov instruction).  For example:
+
+     `mov hilo(here), r6'
+
+     computes the absolute address of label 'here' and puts the result
+     into register 6.
+
+`sdaoff()'
+     Computes the offset of the named variable from the start of the
+     Small Data Area (whoes address is held in register 4, the GP
+     register) and stores the result as a 16 bit signed value in the
+     immediate operand field of the given instruction.  For example:
+
+     `ld.w sdaoff(_a_variable)[gp],r6'
+
+     loads the contents of the location pointed to by the label
+     '_a_variable' into register 6, provided that the label is located
+     somewhere within +/- 32K of the address held in the GP register.
+     [Note the linker assumes that the GP register contains a fixed
+     address set to the address of the label called '__gp'.  This can
+     either be set up automatically by the linker, or specifically set
+     by using the `--defsym __gp=<value>' command line option].
+
+`tdaoff()'
+     Computes the offset of the named variable from the start of the
+     Tiny Data Area (whoes address is held in register 30, the EP
+     register) and stores the result as a 4,5, 7 or 8 bit unsigned
+     value in the immediate operand field of the given instruction.
+     For example:
+
+     `sld.w tdaoff(_a_variable)[ep],r6'
+
+     loads the contents of the location pointed to by the label
+     '_a_variable' into register 6, provided that the label is located
+     somewhere within +256 bytes of the address held in the EP
+     register.  [Note the linker assumes that the EP register contains
+     a fixed address set to the address of the label called '__ep'.
+     This can either be set up automatically by the linker, or
+     specifically set by using the `--defsym __ep=<value>' command line
+     option].
+
+`zdaoff()'
+     Computes the offset of the named variable from address 0 and
+     stores the result as a 16 bit signed value in the immediate
+     operand field of the given instruction.  For example:
+
+     `movea zdaoff(_a_variable),zero,r6'
+
+     puts the address of the label '_a_variable' into register 6,
+     assuming that the label is somewhere within the first 32K of
+     memory.  (Strictly speaking it also possible to access the last
+     32K of memory as well, as the offsets are signed).
+
+`ctoff()'
+     Computes the offset of the named variable from the start of the
+     Call Table Area (whoes address is helg in system register 20, the
+     CTBP register) and stores the result a 6 or 16 bit unsigned value
+     in the immediate field of then given instruction or piece of data.
+     For example:
+
+     `callt ctoff(table_func1)'
+
+     will put the call the function whoes address is held in the call
+     table at the location labeled 'table_func1'.
+
+`.longcall `name''
+     Indicates that the following sequence of instructions is a long
+     call to function `name'.  The linker will attempt to shorten this
+     call sequence if `name' is within a 22bit offset of the call.  Only
+     valid if the `-mrelax' command line switch has been enabled.
+
+`.longjump `name''
+     Indicates that the following sequence of instructions is a long
+     jump to label `name'.  The linker will attempt to shorten this code
+     sequence if `name' is within a 22bit offset of the jump.  Only
+     valid if the `-mrelax' command line switch has been enabled.
+
+
+   For information on the V850 instruction set, see `V850 Family
+32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
+Ltd.
+
+
+File: as.info,  Node: Xtensa-Dependent,  Next: Z80-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
+
+8.34 Xtensa Dependent Features
+==============================
+
+   This chapter covers features of the GNU assembler that are specific
+to the Xtensa architecture.  For details about the Xtensa instruction
+set, please consult the `Xtensa Instruction Set Architecture (ISA)
+Reference Manual'.
+
+* Menu:
+
+* Xtensa Options::              Command-line Options.
+* Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
+* Xtensa Optimizations::        Assembler Optimizations.
+* Xtensa Relaxation::           Other Automatic Transformations.
+* Xtensa Directives::           Directives for Xtensa Processors.
+
+
+File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
+
+8.34.1 Command Line Options
+---------------------------
+
+The Xtensa version of the GNU assembler supports these special options:
+
+`--text-section-literals | --no-text-section-literals'
+     Control the treatment of literal pools.  The default is
+     `--no-text-section-literals', which places literals in a separate
+     section in the output file.  This allows the literal pool to be
+     placed in a data RAM/ROM.  With `--text-section-literals', the
+     literals are interspersed in the text section in order to keep
+     them as close as possible to their references.  This may be
+     necessary for large assembly files, where the literals would
+     otherwise be out of range of the `L32R' instructions in the text
+     section.  These options only affect literals referenced via
+     PC-relative `L32R' instructions; literals for absolute mode `L32R'
+     instructions are handled separately.
+
+`--absolute-literals | --no-absolute-literals'
+     Indicate to the assembler whether `L32R' instructions use absolute
+     or PC-relative addressing.  If the processor includes the absolute
+     addressing option, the default is to use absolute `L32R'
+     relocations.  Otherwise, only the PC-relative `L32R' relocations
+     can be used.
+
+`--target-align | --no-target-align'
+     Enable or disable automatic alignment to reduce branch penalties
+     at some expense in code size.  *Note Automatic Instruction
+     Alignment: Xtensa Automatic Alignment.  This optimization is
+     enabled by default.  Note that the assembler will always align
+     instructions like `LOOP' that have fixed alignment requirements.
+
+`--longcalls | --no-longcalls'
+     Enable or disable transformation of call instructions to allow
+     calls across a greater range of addresses.  *Note Function Call
+     Relaxation: Xtensa Call Relaxation.  This option should be used
+     when call targets can potentially be out of range.  It may degrade
+     both code size and performance, but the linker can generally
+     optimize away the unnecessary overhead when a call ends up within
+     range.  The default is `--no-longcalls'.
+
+`--transform | --no-transform'
+     Enable or disable all assembler transformations of Xtensa
+     instructions, including both relaxation and optimization.  The
+     default is `--transform'; `--no-transform' should only be used in
+     the rare cases when the instructions must be exactly as specified
+     in the assembly source.  Using `--no-transform' causes out of range
+     instruction operands to be errors.
+
+`--rename-section OLDNAME=NEWNAME'
+     Rename the OLDNAME section to NEWNAME.  This option can be used
+     multiple times to rename multiple sections.
+
+
+File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
+
+8.34.2 Assembler Syntax
+-----------------------
+
+Block comments are delimited by `/*' and `*/'.  End of line comments
+may be introduced with either `#' or `//'.
+
+   Instructions consist of a leading opcode or macro name followed by
+whitespace and an optional comma-separated list of operands:
+
+     OPCODE [OPERAND, ...]
+
+   Instructions must be separated by a newline or semicolon.
+
+   FLIX instructions, which bundle multiple opcodes together in a single
+instruction, are specified by enclosing the bundled opcodes inside
+braces:
+
+     {
+     [FORMAT]
+     OPCODE0 [OPERANDS]
+     OPCODE1 [OPERANDS]
+     OPCODE2 [OPERANDS]
+     ...
+     }
+
+   The opcodes in a FLIX instruction are listed in the same order as the
+corresponding instruction slots in the TIE format declaration.
+Directives and labels are not allowed inside the braces of a FLIX
+instruction.  A particular TIE format name can optionally be specified
+immediately after the opening brace, but this is usually unnecessary.
+The assembler will automatically search for a format that can encode the
+specified opcodes, so the format name need only be specified in rare
+cases where there is more than one applicable format and where it
+matters which of those formats is used.  A FLIX instruction can also be
+specified on a single line by separating the opcodes with semicolons:
+
+     { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
+
+   The assembler can automatically bundle opcodes into FLIX
+instructions.  It encodes the opcodes in order, one at a time, choosing
+the smallest format where each opcode can be encoded and filling unused
+instruction slots with no-ops.
+
+* Menu:
+
+* Xtensa Opcodes::              Opcode Naming Conventions.
+* Xtensa Registers::            Register Naming.
+
+
+File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
+
+8.34.2.1 Opcode Names
+.....................
+
+See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
+for a complete list of opcodes and descriptions of their semantics.
+
+   If an opcode name is prefixed with an underscore character (`_'),
+`as' will not transform that instruction in any way.  The underscore
+prefix disables both optimization (*note Xtensa Optimizations: Xtensa
+Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
+Relaxation.) for that particular instruction.  Only use the underscore
+prefix when it is essential to select the exact opcode produced by the
+assembler.  Using this feature unnecessarily makes the code less
+efficient by disabling assembler optimization and less flexible by
+disabling relaxation.
+
+   Note that this special handling of underscore prefixes only applies
+to Xtensa opcodes, not to either built-in macros or user-defined macros.
+When an underscore prefix is used with a macro (e.g., `_MOV'), it
+refers to a different macro.  The assembler generally provides built-in
+macros both with and without the underscore prefix, where the underscore
+versions behave as if the underscore carries through to the instructions
+in the macros.  For example, `_MOV' may expand to `_MOV.N'.
+
+   The underscore prefix only applies to individual instructions, not to
+series of instructions.  For example, if a series of instructions have
+underscore prefixes, the assembler will not transform the individual
+instructions, but it may insert other instructions between them (e.g.,
+to align a `LOOP' instruction).  To prevent the assembler from
+modifying a series of instructions as a whole, use the `no-transform'
+directive.  *Note transform: Transform Directive.
+
+
+File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
+
+8.34.2.2 Register Names
+.......................
+
+The assembly syntax for a register file entry is the "short" name for a
+TIE register file followed by the index into that register file.  For
+example, the general-purpose `AR' register file has a short name of
+`a', so these registers are named `a0'...`a15'.  As a special feature,
+`sp' is also supported as a synonym for `a1'.  Additional registers may
+be added by processor configuration options and by designer-defined TIE
+extensions.  An initial `$' character is optional in all register names.
+
+
+File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
+
+8.34.3 Xtensa Optimizations
+---------------------------
+
+The optimizations currently supported by `as' are generation of density
+instructions where appropriate and automatic branch target alignment.
+
+* Menu:
+
+* Density Instructions::        Using Density Instructions.
+* Xtensa Automatic Alignment::  Automatic Instruction Alignment.
+
+
+File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
+
+8.34.3.1 Using Density Instructions
+...................................
+
+The Xtensa instruction set has a code density option that provides
+16-bit versions of some of the most commonly used opcodes.  Use of these
+opcodes can significantly reduce code size.  When possible, the
+assembler automatically translates instructions from the core Xtensa
+instruction set into equivalent instructions from the Xtensa code
+density option.  This translation can be disabled by using underscore
+prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
+`--no-transform' command-line option (*note Command Line Options:
+Xtensa Options.), or by using the `no-transform' directive (*note
+transform: Transform Directive.).
+
+   It is a good idea _not_ to use the density instructions directly.
+The assembler will automatically select dense instructions where
+possible.  If you later need to use an Xtensa processor without the code
+density option, the same assembly code will then work without
+modification.
+
+
+File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
+
+8.34.3.2 Automatic Instruction Alignment
+........................................
+
+The Xtensa assembler will automatically align certain instructions, both
+to optimize performance and to satisfy architectural requirements.
+
+   As an optimization to improve performance, the assembler attempts to
+align branch targets so they do not cross instruction fetch boundaries.
+(Xtensa processors can be configured with either 32-bit or 64-bit
+instruction fetch widths.)  An instruction immediately following a call
+is treated as a branch target in this context, because it will be the
+target of a return from the call.  This alignment has the potential to
+reduce branch penalties at some expense in code size.  The assembler
+will not attempt to align labels with the prefixes `.Ln' and `.LM',
+since these labels are used for debugging information and are not
+typically branch targets.  This optimization is enabled by default.
+You can disable it with the `--no-target-align' command-line option
+(*note Command Line Options: Xtensa Options.).
+
+   The target alignment optimization is done without adding instructions
+that could increase the execution time of the program.  If there are
+density instructions in the code preceding a target, the assembler can
+change the target alignment by widening some of those instructions to
+the equivalent 24-bit instructions.  Extra bytes of padding can be
+inserted immediately following unconditional jump and return
+instructions.  This approach is usually successful in aligning many,
+but not all, branch targets.
+
+   The `LOOP' family of instructions must be aligned such that the
+first instruction in the loop body does not cross an instruction fetch
+boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
+on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
+this restriction and inserts the minimal number of 2 or 3 byte no-op
+instructions to satisfy it.  When no-op instructions are added, any
+label immediately preceding the original loop will be moved in order to
+refer to the loop instruction, not the newly generated no-op
+instruction.  To preserve binary compatibility across processors with
+different fetch widths, the assembler conservatively assumes a 32-bit
+fetch width when aligning `LOOP' instructions (except if the first
+instruction in the loop is a 64-bit instruction).
+
+   Similarly, the `ENTRY' instruction must be aligned on a 0 mod 4 byte
+boundary.  The assembler satisfies this requirement by inserting zero
+bytes when required.  In addition, labels immediately preceding the
+`ENTRY' instruction will be moved to the newly aligned instruction
+location.
+
+
+File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
+
+8.34.4 Xtensa Relaxation
+------------------------
+
+When an instruction operand is outside the range allowed for that
+particular instruction field, `as' can transform the code to use a
+functionally-equivalent instruction or sequence of instructions.  This
+process is known as "relaxation".  This is typically done for branch
+instructions because the distance of the branch targets is not known
+until assembly-time.  The Xtensa assembler offers branch relaxation and
+also extends this concept to function calls, `MOVI' instructions and
+other instructions with immediate fields.
+
+* Menu:
+
+* Xtensa Branch Relaxation::        Relaxation of Branches.
+* Xtensa Call Relaxation::          Relaxation of Function Calls.
+* Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
+
+
+File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
+
+8.34.4.1 Conditional Branch Relaxation
+......................................
+
+When the target of a branch is too far away from the branch itself,
+i.e., when the offset from the branch to the target is too large to fit
+in the immediate field of the branch instruction, it may be necessary to
+replace the branch with a branch around a jump.  For example,
+
+         beqz    a2, L
+
+   may result in:
+
+         bnez.n  a2, M
+         j L
+     M:
+
+   (The `BNEZ.N' instruction would be used in this example only if the
+density option is available.  Otherwise, `BNEZ' would be used.)
+
+   This relaxation works well because the unconditional jump instruction
+has a much larger offset range than the various conditional branches.
+However, an error will occur if a branch target is beyond the range of a
+jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
+an error will occur if the original input contains an unconditional
+jump to a target that is out of range.
+
+   Branch relaxation is enabled by default.  It can be disabled by using
+underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
+`--no-transform' command-line option (*note Command Line Options:
+Xtensa Options.), or the `no-transform' directive (*note transform:
+Transform Directive.).
+
+
+File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
+
+8.34.4.2 Function Call Relaxation
+.................................
+
+Function calls may require relaxation because the Xtensa immediate call
+instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
+PC-relative offset of only 512 Kbytes in either direction.  For larger
+programs, it may be necessary to use indirect calls (`CALLX0',
+`CALLX4', `CALLX8' and `CALLX12') where the target address is specified
+in a register.  The Xtensa assembler can automatically relax immediate
+call instructions into indirect call instructions.  This relaxation is
+done by loading the address of the called function into the callee's
+return address register and then using a `CALLX' instruction.  So, for
+example:
+
+         call8 func
+
+   might be relaxed to:
+
+         .literal .L1, func
+         l32r    a8, .L1
+         callx8  a8
+
+   Because the addresses of targets of function calls are not generally
+known until link-time, the assembler must assume the worst and relax all
+the calls to functions in other source files, not just those that really
+will be out of range.  The linker can recognize calls that were
+unnecessarily relaxed, and it will remove the overhead introduced by the
+assembler for those cases where direct calls are sufficient.
+
+   Call relaxation is disabled by default because it can have a negative
+effect on both code size and performance, although the linker can
+usually eliminate the unnecessary overhead.  If a program is too large
+and some of the calls are out of range, function call relaxation can be
+enabled using the `--longcalls' command-line option or the `longcalls'
+directive (*note longcalls: Longcalls Directive.).
+
+
+File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
+
+8.34.4.3 Other Immediate Field Relaxation
+.........................................
+
+The assembler normally performs the following other relaxations.  They
+can be disabled by using underscore prefixes (*note Opcode Names:
+Xtensa Opcodes.), the `--no-transform' command-line option (*note
+Command Line Options: Xtensa Options.), or the `no-transform' directive
+(*note transform: Transform Directive.).
+
+   The `MOVI' machine instruction can only materialize values in the
+range from -2048 to 2047.  Values outside this range are best
+materialized with `L32R' instructions.  Thus:
+
+         movi a0, 100000
+
+   is assembled into the following machine code:
+
+         .literal .L1, 100000
+         l32r a0, .L1
+
+   The `L8UI' machine instruction can only be used with immediate
+offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
+instructions can only be used with offsets from 0 to 510.  The `L32I'
+machine instruction can only be used with offsets from 0 to 1020.  A
+load offset outside these ranges can be materalized with an `L32R'
+instruction if the destination register of the load is different than
+the source address register.  For example:
+
+         l32i a1, a0, 2040
+
+   is translated to:
+
+         .literal .L1, 2040
+         l32r a1, .L1
+         addi a1, a0, a1
+         l32i a1, a1, 0
+
+If the load destination and source address register are the same, an
+out-of-range offset causes an error.
+
+   The Xtensa `ADDI' instruction only allows immediate operands in the
+range from -128 to 127.  There are a number of alternate instruction
+sequences for the `ADDI' operation.  First, if the immediate is 0, the
+`ADDI' will be turned into a `MOV.N' instruction (or the equivalent
+`OR' instruction if the code density option is not available).  If the
+`ADDI' immediate is outside of the range -128 to 127, but inside the
+range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
+sequence will be used.  Finally, if the immediate is outside of this
+range and a free register is available, an `L32R'/`ADD' sequence will
+be used with a literal allocated from the literal pool.
+
+   For example:
+
+         addi    a5, a6, 0
+         addi    a5, a6, 512
+         addi    a5, a6, 513
+         addi    a5, a6, 50000
+
+   is assembled into the following:
+
+         .literal .L1, 50000
+         mov.n   a5, a6
+         addmi   a5, a6, 0x200
+         addmi   a5, a6, 0x200
+         addi    a5, a5, 1
+         l32r    a5, .L1
+         add     a5, a6, a5
+
+
+File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
+
+8.34.5 Directives
+-----------------
+
+The Xtensa assember supports a region-based directive syntax:
+
+         .begin DIRECTIVE [OPTIONS]
+         ...
+         .end DIRECTIVE
+
+   All the Xtensa-specific directives that apply to a region of code use
+this syntax.
+
+   The directive applies to code between the `.begin' and the `.end'.
+The state of the option after the `.end' reverts to what it was before
+the `.begin'.  A nested `.begin'/`.end' region can further change the
+state of the directive without having to be aware of its outer state.
+For example, consider:
+
+         .begin no-transform
+     L:  add a0, a1, a2
+         .begin transform
+     M:  add a0, a1, a2
+         .end transform
+     N:  add a0, a1, a2
+         .end no-transform
+
+   The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
+both result in `ADD' machine instructions, but the assembler selects an
+`ADD.N' instruction for the `ADD' at `M' in the inner `transform'
+region.
+
+   The advantage of this style is that it works well inside macros
+which can preserve the context of their callers.
+
+   The following directives are available:
+
+* Menu:
+
+* Schedule Directive::         Enable instruction scheduling.
+* Longcalls Directive::        Use Indirect Calls for Greater Range.
+* Transform Directive::        Disable All Assembler Transformations.
+* Literal Directive::          Intermix Literals with Instructions.
+* Literal Position Directive:: Specify Inline Literal Pool Locations.
+* Literal Prefix Directive::   Specify Literal Section Name Prefix.
+* Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
+
+
+File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
+
+8.34.5.1 schedule
+.................
+
+The `schedule' directive is recognized only for compatibility with
+Tensilica's assembler.
+
+         .begin [no-]schedule
+         .end [no-]schedule
+
+   This directive is ignored and has no effect on `as'.
+
+
+File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
+
+8.34.5.2 longcalls
+..................
+
+The `longcalls' directive enables or disables function call relaxation.
+*Note Function Call Relaxation: Xtensa Call Relaxation.
+
+         .begin [no-]longcalls
+         .end [no-]longcalls
+
+   Call relaxation is disabled by default unless the `--longcalls'
+command-line option is specified.  The `longcalls' directive overrides
+the default determined by the command-line options.
+
+
+File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
+
+8.34.5.3 transform
+..................
+
+This directive enables or disables all assembler transformation,
+including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
+optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
+
+         .begin [no-]transform
+         .end [no-]transform
+
+   Transformations are enabled by default unless the `--no-transform'
+option is used.  The `transform' directive overrides the default
+determined by the command-line options.  An underscore opcode prefix,
+disabling transformation of that opcode, always takes precedence over
+both directives and command-line flags.
+
+
+File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
+
+8.34.5.4 literal
+................
+
+The `.literal' directive is used to define literal pool data, i.e.,
+read-only 32-bit data accessed via `L32R' instructions.
+
+         .literal LABEL, VALUE[, VALUE...]
+
+   This directive is similar to the standard `.word' directive, except
+that the actual location of the literal data is determined by the
+assembler and linker, not by the position of the `.literal' directive.
+Using this directive gives the assembler freedom to locate the literal
+data in the most appropriate place and possibly to combine identical
+literals.  For example, the code:
+
+         entry sp, 40
+         .literal .L1, sym
+         l32r    a4, .L1
+
+   can be used to load a pointer to the symbol `sym' into register
+`a4'.  The value of `sym' will not be placed between the `ENTRY' and
+`L32R' instructions; instead, the assembler puts the data in a literal
+pool.
+
+   Literal pools for absolute mode `L32R' instructions (*note Absolute
+Literals Directive::) are placed in a separate `.lit4' section.  By
+default literal pools for PC-relative mode `L32R' instructions are
+placed in a separate `.literal' section; however, when using the
+`--text-section-literals' option (*note Command Line Options: Xtensa
+Options.), the literal pools are placed in the current section.  These
+text section literal pools are created automatically before `ENTRY'
+instructions and manually after `.literal_position' directives (*note
+literal_position: Literal Position Directive.).  If there are no
+preceding `ENTRY' instructions, explicit `.literal_position' directives
+must be used to place the text section literal pools; otherwise, `as'
+will report an error.
+
+
+File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
+
+8.34.5.5 literal_position
+.........................
+
+When using `--text-section-literals' to place literals inline in the
+section being assembled, the `.literal_position' directive can be used
+to mark a potential location for a literal pool.
+
+         .literal_position
+
+   The `.literal_position' directive is ignored when the
+`--text-section-literals' option is not used or when `L32R'
+instructions use the absolute addressing mode.
+
+   The assembler will automatically place text section literal pools
+before `ENTRY' instructions, so the `.literal_position' directive is
+only needed to specify some other location for a literal pool.  You may
+need to add an explicit jump instruction to skip over an inline literal
+pool.
+
+   For example, an interrupt vector does not begin with an `ENTRY'
+instruction so the assembler will be unable to automatically find a good
+place to put a literal pool.  Moreover, the code for the interrupt
+vector must be at a specific starting address, so the literal pool
+cannot come before the start of the code.  The literal pool for the
+vector must be explicitly positioned in the middle of the vector (before
+any uses of the literals, due to the negative offsets used by
+PC-relative `L32R' instructions).  The `.literal_position' directive
+can be used to do this.  In the following code, the literal for `M'
+will automatically be aligned correctly and is placed after the
+unconditional jump.
+
+         .global M
+     code_start:
+         j continue
+         .literal_position
+         .align 4
+     continue:
+         movi    a4, M
+
+
+File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
+
+8.34.5.6 literal_prefix
+.......................
+
+The `literal_prefix' directive allows you to specify different sections
+to hold literals from different portions of an assembly file.  With
+this directive, a single assembly file can be used to generate code
+into multiple sections, including literals generated by the assembler.
+
+         .begin literal_prefix [NAME]
+         .end literal_prefix
+
+   By default the assembler places literal pools in sections separate
+from the instructions, using the default literal section names of
+`.literal' for PC-relative mode `L32R' instructions and `.lit4' for
+absolute mode `L32R' instructions (*note Absolute Literals
+Directive::).  The `literal_prefix' directive causes different literal
+sections to be used for the code inside the delimited region.  The new
+literal sections are determined by including NAME as a prefix to the
+default literal section names.  If the NAME argument is omitted, the
+literal sections revert to the defaults.  This directive has no effect
+when using the `--text-section-literals' option (*note Command Line
+Options: Xtensa Options.).
+
+   Except for two special cases, the assembler determines the new
+literal sections by simply prepending NAME to the default section names,
+resulting in `NAME.literal' and `NAME.lit4' sections.  The
+`literal_prefix' directive is often used with the name of the current
+text section as the prefix argument.  To facilitate this usage, the
+assembler uses special case rules when it recognizes NAME as a text
+section name.  First, if NAME ends with `.text', that suffix is not
+included in the literal section name.  For example, if NAME is
+`.iram0.text', then the literal sections will be `.iram0.literal' and
+`.iram0.lit4'.  Second, if NAME begins with `.gnu.linkonce.t.', then
+the literal section names are formed by replacing the `.t' substring
+with `.literal' and `.lit4'.  For example, if NAME is
+`.gnu.linkonce.t.func', the literal sections will be
+`.gnu.linkonce.literal.func' and `.gnu.linkonce.lit4.func'.
+
+
+File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
+
+8.34.5.7 absolute-literals
+..........................
+
+The `absolute-literals' and `no-absolute-literals' directives control
+the absolute vs. PC-relative mode for `L32R' instructions.  These are
+relevant only for Xtensa configurations that include the absolute
+addressing option for `L32R' instructions.
+
+         .begin [no-]absolute-literals
+         .end [no-]absolute-literals
+
+   These directives do not change the `L32R' mode--they only cause the
+assembler to emit the appropriate kind of relocation for `L32R'
+instructions and to place the literal values in the appropriate section.
+To change the `L32R' mode, the program must write the `LITBASE' special
+register.  It is the programmer's responsibility to keep track of the
+mode and indicate to the assembler which mode is used in each region of
+code.
+
+   If the Xtensa configuration includes the absolute `L32R' addressing
+option, the default is to assume absolute `L32R' addressing unless the
+`--no-absolute-literals' command-line option is specified.  Otherwise,
+the default is to assume PC-relative `L32R' addressing.  The
+`absolute-literals' directive can then be used to override the default
+determined by the command-line options.
+
+
+File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
+
+9 Reporting Bugs
+****************
+
+Your bug reports play an essential role in making `as' reliable.
+
+   Reporting a bug may help you by bringing a solution to your problem,
+or it may not.  But in any case the principal function of a bug report
+is to help the entire community by making the next version of `as' work
+better.  Bug reports are your contribution to the maintenance of `as'.
+
+   In order for a bug report to serve its purpose, you must include the
+information that enables us to fix the bug.
+
+* Menu:
+
+* Bug Criteria::                Have you found a bug?
+* Bug Reporting::               How to report bugs
+
+
+File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
+
+9.1 Have You Found a Bug?
+=========================
+
+If you are not sure whether you have found a bug, here are some
+guidelines:
+
+   * If the assembler gets a fatal signal, for any input whatever, that
+     is a `as' bug.  Reliable assemblers never crash.
+
+   * If `as' produces an error message for valid input, that is a bug.
+
+   * If `as' does not produce an error message for invalid input, that
+     is a bug.  However, you should note that your idea of "invalid
+     input" might be our idea of "an extension" or "support for
+     traditional practice".
+
+   * If you are an experienced user of assemblers, your suggestions for
+     improvement of `as' are welcome in any case.
+
+
+File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
+
+9.2 How to Report Bugs
+======================
+
+A number of companies and individuals offer support for GNU products.
+If you obtained `as' from a support organization, we recommend you
+contact that organization first.
+
+   You can find contact information for many support companies and
+individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
+
+   In any event, we also recommend that you send bug reports for `as'
+to `bug-binutils at gnu.org'.
+
+   The fundamental principle of reporting bugs usefully is this:
+*report all the facts*.  If you are not sure whether to state a fact or
+leave it out, state it!
+
+   Often people omit facts because they think they know what causes the
+problem and assume that some details do not matter.  Thus, you might
+assume that the name of a symbol you use in an example does not matter.
+Well, probably it does not, but one cannot be sure.  Perhaps the bug
+is a stray memory reference which happens to fetch from the location
+where that name is stored in memory; perhaps, if the name were
+different, the contents of that location would fool the assembler into
+doing the right thing despite the bug.  Play it safe and give a
+specific, complete example.  That is the easiest thing for you to do,
+and the most helpful.
+
+   Keep in mind that the purpose of a bug report is to enable us to fix
+the bug if it is new to us.  Therefore, always write your bug reports
+on the assumption that the bug has not been reported previously.
+
+   Sometimes people give a few sketchy facts and ask, "Does this ring a
+bell?"  This cannot help us fix a bug, so it is basically useless.  We
+respond by asking for enough details to enable us to investigate.  You
+might as well expedite matters by sending them to begin with.
+
+   To enable us to fix the bug, you should include all these things:
+
+   * The version of `as'.  `as' announces it if you start it with the
+     `--version' argument.
+
+     Without this, we will not know whether there is any point in
+     looking for the bug in the current version of `as'.
+
+   * Any patches you may have applied to the `as' source.
+
+   * The type of machine you are using, and the operating system name
+     and version number.
+
+   * What compiler (and its version) was used to compile `as'--e.g.
+     "`gcc-2.7'".
+
+   * The command arguments you gave the assembler to assemble your
+     example and observe the bug.  To guarantee you will not omit
+     something important, list them all.  A copy of the Makefile (or
+     the output from make) is sufficient.
+
+     If we were to try to guess the arguments, we would probably guess
+     wrong and then we might not encounter the bug.
+
+   * A complete input file that will reproduce the bug.  If the bug is
+     observed when the assembler is invoked via a compiler, send the
+     assembler source, not the high level language source.  Most
+     compilers will produce the assembler source when run with the `-S'
+     option.  If you are using `gcc', use the options `-v
+     --save-temps'; this will save the assembler source in a file with
+     an extension of `.s', and also show you exactly how `as' is being
+     run.
+
+   * A description of what behavior you observe that you believe is
+     incorrect.  For example, "It gets a fatal signal."
+
+     Of course, if the bug is that `as' gets a fatal signal, then we
+     will certainly notice it.  But if the bug is incorrect output, we
+     might not notice unless it is glaringly wrong.  You might as well
+     not give us a chance to make a mistake.
+
+     Even if the problem you experience is a fatal signal, you should
+     still say so explicitly.  Suppose something strange is going on,
+     such as, your copy of `as' is out of synch, or you have
+     encountered a bug in the C library on your system.  (This has
+     happened!)  Your copy might crash and ours would not.  If you told
+     us to expect a crash, then when ours fails to crash, we would know
+     that the bug was not happening for us.  If you had not told us to
+     expect a crash, then we would not be able to draw any conclusion
+     from our observations.
+
+   * If you wish to suggest changes to the `as' source, send us context
+     diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
+     Always send diffs from the old file to the new file.  If you even
+     discuss something in the `as' source, refer to it by context, not
+     by line number.
+
+     The line numbers in our development sources will not match those
+     in your sources.  Your line numbers would convey no useful
+     information to us.
+
+   Here are some things that are not necessary:
+
+   * A description of the envelope of the bug.
+
+     Often people who encounter a bug spend a lot of time investigating
+     which changes to the input file will make the bug go away and which
+     changes will not affect it.
+
+     This is often time consuming and not very useful, because the way
+     we will find the bug is by running a single example under the
+     debugger with breakpoints, not by pure deduction from a series of
+     examples.  We recommend that you save your time for something else.
+
+     Of course, if you can find a simpler example to report _instead_
+     of the original one, that is a convenience for us.  Errors in the
+     output will be easier to spot, running under the debugger will take
+     less time, and so on.
+
+     However, simplification is not vital; if you do not want to do
+     this, report the bug anyway and send us the entire test case you
+     used.
+
+   * A patch for the bug.
+
+     A patch for the bug does help us if it is a good one.  But do not
+     omit the necessary information, such as the test case, on the
+     assumption that a patch is all we need.  We might see problems
+     with your patch and decide to fix the problem another way, or we
+     might not understand it at all.
+
+     Sometimes with a program as complicated as `as' it is very hard to
+     construct an example that will make the program follow a certain
+     path through the code.  If you do not send us the example, we will
+     not be able to construct one, so we will not be able to verify
+     that the bug is fixed.
+
+     And if we cannot understand what bug you are trying to fix, or why
+     your patch should be an improvement, we will not install it.  A
+     test case will help us to understand.
+
+   * A guess about what the bug is or what it depends on.
+
+     Such guesses are usually wrong.  Even we cannot guess right about
+     such things without first using the debugger to find the facts.
+
+
+File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
+
+10 Acknowledgements
+*******************
+
+If you have contributed to GAS and your name isn't listed here, it is
+not meant as a slight.  We just don't know about it.  Send mail to the
+maintainer, and we'll correct the situation.  Currently the maintainer
+is Ken Raeburn (email address `raeburn at cygnus.com').
+
+   Dean Elsner wrote the original GNU assembler for the VAX.(1)
+
+   Jay Fenlason maintained GAS for a while, adding support for
+GDB-specific debug information and the 68k series machines, most of the
+preprocessing pass, and extensive changes in `messages.c',
+`input-file.c', `write.c'.
+
+   K. Richard Pixley maintained GAS for a while, adding various
+enhancements and many bug fixes, including merging support for several
+processors, breaking GAS up to handle multiple object file format back
+ends (including heavy rewrite, testing, an integration of the coff and
+b.out back ends), adding configuration including heavy testing and
+verification of cross assemblers and file splits and renaming,
+converted GAS to strictly ANSI C including full prototypes, added
+support for m680[34]0 and cpu32, did considerable work on i960
+including a COFF port (including considerable amounts of reverse
+engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
+hp300hpux host ports, updated "know" assertions and made them work,
+much other reorganization, cleanup, and lint.
+
+   Ken Raeburn wrote the high-level BFD interface code to replace most
+of the code in format-specific I/O modules.
+
+   The original VMS support was contributed by David L. Kashtan.  Eric
+Youngdale has done much work with it since.
+
+   The Intel 80386 machine description was written by Eliot Dresselhaus.
+
+   Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
+
+   The Motorola 88k machine description was contributed by Devon Bowen
+of Buffalo University and Torbjorn Granlund of the Swedish Institute of
+Computer Science.
+
+   Keith Knowles at the Open Software Foundation wrote the original
+MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
+support (which hasn't been merged in yet).  Ralph Campbell worked with
+the MIPS code to support a.out format.
+
+   Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
+tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
+Steve Chamberlain of Cygnus Support.  Steve also modified the COFF back
+end to use BFD for some low-level operations, for use with the H8/300
+and AMD 29k targets.
+
+   John Gilmore built the AMD 29000 support, added `.include' support,
+and simplified the configuration of which versions accept which
+directives.  He updated the 68k machine description so that Motorola's
+opcodes always produced fixed-size instructions (e.g., `jsr'), while
+synthetic instructions remained shrinkable (`jbsr').  John fixed many
+bugs, including true tested cross-compilation support, and one bug in
+relaxation that took a week and required the proverbial one-bit fix.
+
+   Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
+syntax for the 68k, completed support for some COFF targets (68k, i386
+SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
+wrote the initial RS/6000 and PowerPC assembler, and made a few other
+minor patches.
+
+   Steve Chamberlain made GAS able to generate listings.
+
+   Hewlett-Packard contributed support for the HP9000/300.
+
+   Jeff Law wrote GAS and BFD support for the native HPPA object format
+(SOM) along with a fairly extensive HPPA testsuite (for both SOM and
+ELF object formats).  This work was supported by both the Center for
+Software Science at the University of Utah and Cygnus Support.
+
+   Support for ELF format files has been worked on by Mark Eichin of
+Cygnus Support (original, incomplete implementation for SPARC), Pete
+Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
+Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
+Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
+
+   Linas Vepstas added GAS support for the ESA/390 "IBM 370"
+architecture.
+
+   Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
+GAS and BFD support for openVMS/Alpha.
+
+   Timothy Wall, Michael Hayes, and Greg Smart contributed to the
+various tic* flavors.
+
+   David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
+Tensilica, Inc. added support for Xtensa processors.
+
+   Several engineers at Cygnus Support have also provided many small
+bug fixes and configuration enhancements.
+
+   Many others have contributed large or small bugfixes and
+enhancements.  If you have contributed significant work and are not
+mentioned on this list, and want to be, let us know.  Some of the
+history has been lost; we are not intentionally leaving anyone out.
+
+   ---------- Footnotes ----------
+
+   (1) Any more details?
+
+
+File: as.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Acknowledgements,  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.
+
+
+File: as.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+ [index ]
+* Menu:
+
+* #:                                     Comments.            (line  38)
+* #APP:                                  Preprocessing.       (line  27)
+* #NO_APP:                               Preprocessing.       (line  27)
+* $ in symbol names <1>:                 SH64-Chars.          (line  10)
+* $ in symbol names <2>:                 SH-Chars.            (line  10)
+* $ in symbol names <3>:                 D30V-Chars.          (line  63)
+* $ in symbol names:                     D10V-Chars.          (line  46)
+* $a:                                    ARM Mapping Symbols. (line   9)
+* $acos math builtin, TIC54X:            TIC54X-Builtins.     (line  10)
+* $asin math builtin, TIC54X:            TIC54X-Builtins.     (line  13)
+* $atan math builtin, TIC54X:            TIC54X-Builtins.     (line  16)
+* $atan2 math builtin, TIC54X:           TIC54X-Builtins.     (line  19)
+* $ceil math builtin, TIC54X:            TIC54X-Builtins.     (line  22)
+* $cos math builtin, TIC54X:             TIC54X-Builtins.     (line  28)
+* $cosh math builtin, TIC54X:            TIC54X-Builtins.     (line  25)
+* $cvf math builtin, TIC54X:             TIC54X-Builtins.     (line  31)
+* $cvi math builtin, TIC54X:             TIC54X-Builtins.     (line  34)
+* $d:                                    ARM Mapping Symbols. (line  15)
+* $exp math builtin, TIC54X:             TIC54X-Builtins.     (line  37)
+* $fabs math builtin, TIC54X:            TIC54X-Builtins.     (line  40)
+* $firstch subsym builtin, TIC54X:       TIC54X-Macros.       (line  26)
+* $floor math builtin, TIC54X:           TIC54X-Builtins.     (line  43)
+* $fmod math builtin, TIC54X:            TIC54X-Builtins.     (line  47)
+* $int math builtin, TIC54X:             TIC54X-Builtins.     (line  50)
+* $iscons subsym builtin, TIC54X:        TIC54X-Macros.       (line  43)
+* $isdefed subsym builtin, TIC54X:       TIC54X-Macros.       (line  34)
+* $ismember subsym builtin, TIC54X:      TIC54X-Macros.       (line  38)
+* $isname subsym builtin, TIC54X:        TIC54X-Macros.       (line  47)
+* $isreg subsym builtin, TIC54X:         TIC54X-Macros.       (line  50)
+* $lastch subsym builtin, TIC54X:        TIC54X-Macros.       (line  30)
+* $ldexp math builtin, TIC54X:           TIC54X-Builtins.     (line  53)
+* $log math builtin, TIC54X:             TIC54X-Builtins.     (line  59)
+* $log10 math builtin, TIC54X:           TIC54X-Builtins.     (line  56)
+* $max math builtin, TIC54X:             TIC54X-Builtins.     (line  62)
+* $min math builtin, TIC54X:             TIC54X-Builtins.     (line  65)
+* $pow math builtin, TIC54X:             TIC54X-Builtins.     (line  68)
+* $round math builtin, TIC54X:           TIC54X-Builtins.     (line  71)
+* $sgn math builtin, TIC54X:             TIC54X-Builtins.     (line  74)
+* $sin math builtin, TIC54X:             TIC54X-Builtins.     (line  77)
+* $sinh math builtin, TIC54X:            TIC54X-Builtins.     (line  80)
+* $sqrt math builtin, TIC54X:            TIC54X-Builtins.     (line  83)
+* $structacc subsym builtin, TIC54X:     TIC54X-Macros.       (line  57)
+* $structsz subsym builtin, TIC54X:      TIC54X-Macros.       (line  54)
+* $symcmp subsym builtin, TIC54X:        TIC54X-Macros.       (line  23)
+* $symlen subsym builtin, TIC54X:        TIC54X-Macros.       (line  20)
+* $t:                                    ARM Mapping Symbols. (line  12)
+* $tan math builtin, TIC54X:             TIC54X-Builtins.     (line  86)
+* $tanh math builtin, TIC54X:            TIC54X-Builtins.     (line  89)
+* $trunc math builtin, TIC54X:           TIC54X-Builtins.     (line  92)
+* -+ option, VAX/VMS:                    VAX-Opts.            (line  71)
+* --:                                    Command Line.        (line  10)
+* --32 option, i386:                     i386-Options.        (line   8)
+* --32 option, x86-64:                   i386-Options.        (line   8)
+* --64 option, i386:                     i386-Options.        (line   8)
+* --64 option, x86-64:                   i386-Options.        (line   8)
+* --absolute-literals:                   Xtensa Options.      (line  22)
+* --allow-reg-prefix:                    SH Options.          (line   9)
+* --alternate:                           alternate.           (line   6)
+* --base-size-default-16:                M68K-Opts.           (line  70)
+* --base-size-default-32:                M68K-Opts.           (line  70)
+* --big:                                 SH Options.          (line   9)
+* --bitwise-or option, M680x0:           M68K-Opts.           (line  63)
+* --disp-size-default-16:                M68K-Opts.           (line  79)
+* --disp-size-default-32:                M68K-Opts.           (line  79)
+* --divide option, i386:                 i386-Options.        (line  24)
+* --dsp:                                 SH Options.          (line   9)
+* --emulation=crisaout command line option, CRIS: CRIS-Opts.  (line   9)
+* --emulation=criself command line option, CRIS: CRIS-Opts.   (line   9)
+* --enforce-aligned-data:                Sparc-Aligned-Data.  (line  11)
+* --fatal-warnings:                      W.                   (line  16)
+* --fixed-special-register-names command line option, MMIX: MMIX-Opts.
+                                                              (line   8)
+* --force-long-branchs:                  M68HC11-Opts.        (line  69)
+* --generate-example:                    M68HC11-Opts.        (line  86)
+* --globalize-symbols command line option, MMIX: MMIX-Opts.   (line  12)
+* --gnu-syntax command line option, MMIX: MMIX-Opts.          (line  16)
+* --hash-size=NUMBER:                    Overview.            (line 297)
+* --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
+                                                              (line  67)
+* --listing-cont-lines:                  listing.             (line  33)
+* --listing-lhs-width:                   listing.             (line  15)
+* --listing-lhs-width2:                  listing.             (line  20)
+* --listing-rhs-width:                   listing.             (line  27)
+* --little:                              SH Options.          (line   9)
+* --longcalls:                           Xtensa Options.      (line  36)
+* --march=ARCHITECTURE command line option, CRIS: CRIS-Opts.  (line  33)
+* --MD:                                  MD.                  (line   6)
+* --mul-bug-abort command line option, CRIS: CRIS-Opts.       (line  61)
+* --no-absolute-literals:                Xtensa Options.      (line  22)
+* --no-expand command line option, MMIX: MMIX-Opts.           (line  31)
+* --no-longcalls:                        Xtensa Options.      (line  36)
+* --no-merge-gregs command line option, MMIX: MMIX-Opts.      (line  36)
+* --no-mul-bug-abort command line option, CRIS: CRIS-Opts.    (line  61)
+* --no-predefined-syms command line option, MMIX: MMIX-Opts.  (line  22)
+* --no-pushj-stubs command line option, MMIX: MMIX-Opts.      (line  54)
+* --no-stubs command line option, MMIX:  MMIX-Opts.           (line  54)
+* --no-target-align:                     Xtensa Options.      (line  29)
+* --no-text-section-literals:            Xtensa Options.      (line   9)
+* --no-transform:                        Xtensa Options.      (line  45)
+* --no-underscore command line option, CRIS: CRIS-Opts.       (line  15)
+* --no-warn:                             W.                   (line  11)
+* --pcrel:                               M68K-Opts.           (line  91)
+* --pic command line option, CRIS:       CRIS-Opts.           (line  27)
+* --print-insn-syntax:                   M68HC11-Opts.        (line  75)
+* --print-opcodes:                       M68HC11-Opts.        (line  79)
+* --register-prefix-optional option, M680x0: M68K-Opts.       (line  50)
+* --relax:                               SH Options.          (line   9)
+* --relax command line option, MMIX:     MMIX-Opts.           (line  19)
+* --rename-section:                      Xtensa Options.      (line  53)
+* --renesas:                             SH Options.          (line   9)
+* --short-branchs:                       M68HC11-Opts.        (line  54)
+* --small:                               SH Options.          (line   9)
+* --statistics:                          statistics.          (line   6)
+* --strict-direct-mode:                  M68HC11-Opts.        (line  44)
+* --target-align:                        Xtensa Options.      (line  29)
+* --text-section-literals:               Xtensa Options.      (line   9)
+* --traditional-format:                  traditional-format.  (line   6)
+* --transform:                           Xtensa Options.      (line  45)
+* --underscore command line option, CRIS: CRIS-Opts.          (line  15)
+* --warn:                                W.                   (line  19)
+* -1 option, VAX/VMS:                    VAX-Opts.            (line  77)
+* -32addr command line option, Alpha:    Alpha Options.       (line  50)
+* -a:                                    a.                   (line   6)
+* -A options, i960:                      Options-i960.        (line   6)
+* -ac:                                   a.                   (line   6)
+* -ad:                                   a.                   (line   6)
+* -ah:                                   a.                   (line   6)
+* -al:                                   a.                   (line   6)
+* -an:                                   a.                   (line   6)
+* -as:                                   a.                   (line   6)
+* -Asparclet:                            Sparc-Opts.          (line  25)
+* -Asparclite:                           Sparc-Opts.          (line  25)
+* -Av6:                                  Sparc-Opts.          (line  25)
+* -Av8:                                  Sparc-Opts.          (line  25)
+* -Av9:                                  Sparc-Opts.          (line  25)
+* -Av9a:                                 Sparc-Opts.          (line  25)
+* -b option, i960:                       Options-i960.        (line  22)
+* -big option, M32R:                     M32R-Opts.           (line  35)
+* -construct-floats:                     MIPS Opts.           (line 157)
+* -D:                                    D.                   (line   6)
+* -D, ignored on VAX:                    VAX-Opts.            (line  11)
+* -d, VAX option:                        VAX-Opts.            (line  16)
+* -eabi= command line option, ARM:       ARM Options.         (line 107)
+* -EB command line option, ARC:          ARC Options.         (line  31)
+* -EB command line option, ARM:          ARM Options.         (line 112)
+* -EB option (MIPS):                     MIPS Opts.           (line  13)
+* -EB option, M32R:                      M32R-Opts.           (line  39)
+* -EL command line option, ARC:          ARC Options.         (line  35)
+* -EL command line option, ARM:          ARM Options.         (line 116)
+* -EL option (MIPS):                     MIPS Opts.           (line  13)
+* -EL option, M32R:                      M32R-Opts.           (line  32)
+* -f:                                    f.                   (line   6)
+* -F command line option, Alpha:         Alpha Options.       (line  50)
+* -G command line option, Alpha:         Alpha Options.       (line  46)
+* -g command line option, Alpha:         Alpha Options.       (line  40)
+* -G option (MIPS):                      MIPS Opts.           (line   8)
+* -H option, VAX/VMS:                    VAX-Opts.            (line  81)
+* -h option, VAX/VMS:                    VAX-Opts.            (line  45)
+* -I PATH:                               I.                   (line   6)
+* -ignore-parallel-conflicts option, M32RX: M32R-Opts.        (line  87)
+* -Ip option, M32RX:                     M32R-Opts.           (line  97)
+* -J, ignored on VAX:                    VAX-Opts.            (line  27)
+* -K:                                    K.                   (line   6)
+* -k command line option, ARM:           ARM Options.         (line 120)
+* -KPIC option, M32R:                    M32R-Opts.           (line  42)
+* -L:                                    L.                   (line   6)
+* -l option, M680x0:                     M68K-Opts.           (line  38)
+* -little option, M32R:                  M32R-Opts.           (line  27)
+* -M:                                    M.                   (line   6)
+* -m11/03:                               PDP-11-Options.      (line 140)
+* -m11/04:                               PDP-11-Options.      (line 143)
+* -m11/05:                               PDP-11-Options.      (line 146)
+* -m11/10:                               PDP-11-Options.      (line 146)
+* -m11/15:                               PDP-11-Options.      (line 149)
+* -m11/20:                               PDP-11-Options.      (line 149)
+* -m11/21:                               PDP-11-Options.      (line 152)
+* -m11/23:                               PDP-11-Options.      (line 155)
+* -m11/24:                               PDP-11-Options.      (line 155)
+* -m11/34:                               PDP-11-Options.      (line 158)
+* -m11/34a:                              PDP-11-Options.      (line 161)
+* -m11/35:                               PDP-11-Options.      (line 164)
+* -m11/40:                               PDP-11-Options.      (line 164)
+* -m11/44:                               PDP-11-Options.      (line 167)
+* -m11/45:                               PDP-11-Options.      (line 170)
+* -m11/50:                               PDP-11-Options.      (line 170)
+* -m11/53:                               PDP-11-Options.      (line 173)
+* -m11/55:                               PDP-11-Options.      (line 170)
+* -m11/60:                               PDP-11-Options.      (line 176)
+* -m11/70:                               PDP-11-Options.      (line 170)
+* -m11/73:                               PDP-11-Options.      (line 173)
+* -m11/83:                               PDP-11-Options.      (line 173)
+* -m11/84:                               PDP-11-Options.      (line 173)
+* -m11/93:                               PDP-11-Options.      (line 173)
+* -m11/94:                               PDP-11-Options.      (line 173)
+* -m16c option, M16C:                    M32C-Opts.           (line  12)
+* -m32c option, M32C:                    M32C-Opts.           (line   9)
+* -m32r option, M32R:                    M32R-Opts.           (line  21)
+* -m32rx option, M32R2:                  M32R-Opts.           (line  17)
+* -m32rx option, M32RX:                  M32R-Opts.           (line   9)
+* -m68000 and related options:           M68K-Opts.           (line 103)
+* -m68hc11:                              M68HC11-Opts.        (line   9)
+* -m68hc12:                              M68HC11-Opts.        (line  14)
+* -m68hcs12:                             M68HC11-Opts.        (line  21)
+* -m[no-]68851 command line option, M680x0: M68K-Opts.        (line  20)
+* -m[no-]68881 command line option, M680x0: M68K-Opts.        (line  20)
+* -m[no-]div command line option, M680x0: M68K-Opts.          (line  20)
+* -m[no-]emac command line option, M680x0: M68K-Opts.         (line  20)
+* -m[no-]float command line option, M680x0: M68K-Opts.        (line  20)
+* -m[no-]mac command line option, M680x0: M68K-Opts.          (line  20)
+* -m[no-]usp command line option, M680x0: M68K-Opts.          (line  20)
+* -mall:                                 PDP-11-Options.      (line  26)
+* -mall-extensions:                      PDP-11-Options.      (line  26)
+* -mapcs command line option, ARM:       ARM Options.         (line  80)
+* -mapcs-float command line option, ARM: ARM Options.         (line  93)
+* -mapcs-reentrant command line option, ARM: ARM Options.     (line  98)
+* -marc[5|6|7|8] command line option, ARC: ARC Options.       (line   6)
+* -march= command line option, ARM:      ARM Options.         (line  37)
+* -march= command line option, M680x0:   M68K-Opts.           (line   8)
+* -matpcs command line option, ARM:      ARM Options.         (line  85)
+* -mcis:                                 PDP-11-Options.      (line  32)
+* -mconstant-gp command line option, IA-64: IA-64 Options.    (line   6)
+* -mCPU command line option, Alpha:      Alpha Options.       (line   6)
+* -mcpu option, cpu:                     TIC54X-Opts.         (line  15)
+* -mcpu= command line option, ARM:       ARM Options.         (line   6)
+* -mcpu= command line option, M680x0:    M68K-Opts.           (line  13)
+* -mcsm:                                 PDP-11-Options.      (line  43)
+* -mdebug command line option, Alpha:    Alpha Options.       (line  25)
+* -me option, stderr redirect:           TIC54X-Opts.         (line  20)
+* -meis:                                 PDP-11-Options.      (line  46)
+* -merrors-to-file option, stderr redirect: TIC54X-Opts.      (line  20)
+* -mf option, far-mode:                  TIC54X-Opts.         (line   8)
+* -mf11:                                 PDP-11-Options.      (line 122)
+* -mfar-mode option, far-mode:           TIC54X-Opts.         (line   8)
+* -mfis:                                 PDP-11-Options.      (line  51)
+* -mfloat-abi= command line option, ARM: ARM Options.         (line 102)
+* -mfp-11:                               PDP-11-Options.      (line  56)
+* -mfpp:                                 PDP-11-Options.      (line  56)
+* -mfpu:                                 PDP-11-Options.      (line  56)
+* -mfpu= command line option, ARM:       ARM Options.         (line  52)
+* -mip2022 option, IP2K:                 IP2K-Opts.           (line  14)
+* -mip2022ext option, IP2022:            IP2K-Opts.           (line   9)
+* -mj11:                                 PDP-11-Options.      (line 126)
+* -mka11:                                PDP-11-Options.      (line  92)
+* -mkb11:                                PDP-11-Options.      (line  95)
+* -mkd11a:                               PDP-11-Options.      (line  98)
+* -mkd11b:                               PDP-11-Options.      (line 101)
+* -mkd11d:                               PDP-11-Options.      (line 104)
+* -mkd11e:                               PDP-11-Options.      (line 107)
+* -mkd11f:                               PDP-11-Options.      (line 110)
+* -mkd11h:                               PDP-11-Options.      (line 110)
+* -mkd11k:                               PDP-11-Options.      (line 114)
+* -mkd11q:                               PDP-11-Options.      (line 110)
+* -mkd11z:                               PDP-11-Options.      (line 118)
+* -mkev11:                               PDP-11-Options.      (line  51)
+* -mlimited-eis:                         PDP-11-Options.      (line  64)
+* -mlong:                                M68HC11-Opts.        (line  32)
+* -mlong-double:                         M68HC11-Opts.        (line  40)
+* -mmfpt:                                PDP-11-Options.      (line  70)
+* -mmicrocode:                           PDP-11-Options.      (line  83)
+* -mmutiproc:                            PDP-11-Options.      (line  73)
+* -mmxps:                                PDP-11-Options.      (line  77)
+* -mno-cis:                              PDP-11-Options.      (line  32)
+* -mno-csm:                              PDP-11-Options.      (line  43)
+* -mno-eis:                              PDP-11-Options.      (line  46)
+* -mno-extensions:                       PDP-11-Options.      (line  29)
+* -mno-fis:                              PDP-11-Options.      (line  51)
+* -mno-fp-11:                            PDP-11-Options.      (line  56)
+* -mno-fpp:                              PDP-11-Options.      (line  56)
+* -mno-fpu:                              PDP-11-Options.      (line  56)
+* -mno-kev11:                            PDP-11-Options.      (line  51)
+* -mno-limited-eis:                      PDP-11-Options.      (line  64)
+* -mno-mfpt:                             PDP-11-Options.      (line  70)
+* -mno-microcode:                        PDP-11-Options.      (line  83)
+* -mno-mutiproc:                         PDP-11-Options.      (line  73)
+* -mno-mxps:                             PDP-11-Options.      (line  77)
+* -mno-pic:                              PDP-11-Options.      (line  11)
+* -mno-spl:                              PDP-11-Options.      (line  80)
+* -mno-sym32:                            MIPS Opts.           (line 145)
+* -mpic:                                 PDP-11-Options.      (line  11)
+* -mrelax command line option, V850:     V850 Options.        (line  51)
+* -mshort:                               M68HC11-Opts.        (line  27)
+* -mshort-double:                        M68HC11-Opts.        (line  36)
+* -mspl:                                 PDP-11-Options.      (line  80)
+* -msym32:                               MIPS Opts.           (line 145)
+* -mt11:                                 PDP-11-Options.      (line 130)
+* -mthumb command line option, ARM:      ARM Options.         (line  71)
+* -mthumb-interwork command line option, ARM: ARM Options.    (line  76)
+* -mv850 command line option, V850:      V850 Options.        (line  23)
+* -mv850any command line option, V850:   V850 Options.        (line  41)
+* -mv850e command line option, V850:     V850 Options.        (line  29)
+* -mv850e1 command line option, V850:    V850 Options.        (line  35)
+* -N command line option, CRIS:          CRIS-Opts.           (line  57)
+* -nIp option, M32RX:                    M32R-Opts.           (line 101)
+* -no-bitinst, M32R2:                    M32R-Opts.           (line  54)
+* -no-construct-floats:                  MIPS Opts.           (line 157)
+* -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.     (line  93)
+* -no-mdebug command line option, Alpha: Alpha Options.       (line  25)
+* -no-parallel option, M32RX:            M32R-Opts.           (line  51)
+* -no-relax option, i960:                Options-i960.        (line  66)
+* -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
+                                                              (line  79)
+* -no-warn-unmatched-high option, M32R:  M32R-Opts.           (line 111)
+* -nocpp ignored (MIPS):                 MIPS Opts.           (line 148)
+* -o:                                    o.                   (line   6)
+* -O option, M32RX:                      M32R-Opts.           (line  59)
+* -parallel option, M32RX:               M32R-Opts.           (line  46)
+* -R:                                    R.                   (line   6)
+* -r800 command line option, Z80:        Z80 Options.         (line  41)
+* -relax command line option, Alpha:     Alpha Options.       (line  32)
+* -S, ignored on VAX:                    VAX-Opts.            (line  11)
+* -t, ignored on VAX:                    VAX-Opts.            (line  36)
+* -T, ignored on VAX:                    VAX-Opts.            (line  11)
+* -v:                                    v.                   (line   6)
+* -V, redundant on VAX:                  VAX-Opts.            (line  22)
+* -version:                              v.                   (line   6)
+* -W:                                    W.                   (line  11)
+* -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line  65)
+* -warn-unmatched-high option, M32R:     M32R-Opts.           (line 105)
+* -Wnp option, M32RX:                    M32R-Opts.           (line  83)
+* -Wnuh option, M32RX:                   M32R-Opts.           (line 117)
+* -Wp option, M32RX:                     M32R-Opts.           (line  75)
+* -wsigned_overflow command line option, V850: V850 Options.  (line   9)
+* -Wuh option, M32RX:                    M32R-Opts.           (line 114)
+* -wunsigned_overflow command line option, V850: V850 Options.
+                                                              (line  16)
+* -x command line option, MMIX:          MMIX-Opts.           (line  44)
+* -z80 command line option, Z80:         Z80 Options.         (line   8)
+* -z8001 command line option, Z8000:     Z8000 Options.       (line   6)
+* -z8002 command line option, Z8000:     Z8000 Options.       (line   9)
+* . (symbol):                            Dot.                 (line   6)
+* .arch directive, ARM:                  ARM Directives.      (line 164)
+* .big directive, M32RX:                 M32R-Directives.     (line  88)
+* .cantunwind directive, ARM:            ARM Directives.      (line  87)
+* .cpu directive, ARM:                   ARM Directives.      (line 160)
+* .eabi_attribute directive, ARM:        ARM Directives.      (line 172)
+* .fnend directive, ARM:                 ARM Directives.      (line  78)
+* .fnstart directive, ARM:               ARM Directives.      (line  75)
+* .fpu directive, ARM:                   ARM Directives.      (line 168)
+* .handlerdata directive, ARM:           ARM Directives.      (line  98)
+* .insn:                                 MIPS insn.           (line   6)
+* .little directive, M32RX:              M32R-Directives.     (line  82)
+* .ltorg directive, ARM:                 ARM Directives.      (line  58)
+* .m32r directive, M32R:                 M32R-Directives.     (line  66)
+* .m32r2 directive, M32R2:               M32R-Directives.     (line  77)
+* .m32rx directive, M32RX:               M32R-Directives.     (line  72)
+* .movsp directive, ARM:                 ARM Directives.      (line 136)
+* .o:                                    Object.              (line   6)
+* .pad directive, ARM:                   ARM Directives.      (line 131)
+* .param on HPPA:                        HPPA Directives.     (line  19)
+* .personality directive, ARM:           ARM Directives.      (line  91)
+* .personalityindex directive, ARM:      ARM Directives.      (line  94)
+* .pool directive, ARM:                  ARM Directives.      (line  72)
+* .save directive, ARM:                  ARM Directives.      (line 107)
+* .set autoextend:                       MIPS autoextend.     (line   6)
+* .set dsp:                              MIPS ASE instruction generation overrides.
+                                                              (line  16)
+* .set mdmx:                             MIPS ASE instruction generation overrides.
+                                                              (line  11)
+* .set mips3d:                           MIPS ASE instruction generation overrides.
+                                                              (line   6)
+* .set mipsN:                            MIPS ISA.            (line   6)
+* .set mt:                               MIPS ASE instruction generation overrides.
+                                                              (line  21)
+* .set noautoextend:                     MIPS autoextend.     (line   6)
+* .set nodsp:                            MIPS ASE instruction generation overrides.
+                                                              (line  16)
+* .set nomdmx:                           MIPS ASE instruction generation overrides.
+                                                              (line  11)
+* .set nomips3d:                         MIPS ASE instruction generation overrides.
+                                                              (line   6)
+* .set nomt:                             MIPS ASE instruction generation overrides.
+                                                              (line  21)
+* .set nosym32:                          MIPS symbol sizes.   (line   6)
+* .set pop:                              MIPS option stack.   (line   6)
+* .set push:                             MIPS option stack.   (line   6)
+* .set sym32:                            MIPS symbol sizes.   (line   6)
+* .setfp directive, ARM:                 ARM Directives.      (line 139)
+* .unwind_raw directive, ARM:            ARM Directives.      (line 153)
+* .v850 directive, V850:                 V850 Directives.     (line  14)
+* .v850e directive, V850:                V850 Directives.     (line  20)
+* .v850e1 directive, V850:               V850 Directives.     (line  26)
+* .z8001:                                Z8000 Directives.    (line  11)
+* .z8002:                                Z8000 Directives.    (line  15)
+* 16-bit code, i386:                     i386-16bit.          (line   6)
+* 2byte directive, ARC:                  ARC Directives.      (line   9)
+* 3byte directive, ARC:                  ARC Directives.      (line  12)
+* 3DNow!, i386:                          i386-SIMD.           (line   6)
+* 3DNow!, x86-64:                        i386-SIMD.           (line   6)
+* 430 support:                           MSP430-Dependent.    (line   6)
+* 4byte directive, ARC:                  ARC Directives.      (line  15)
+* : (label):                             Statements.          (line  30)
+* @word modifier, D10V:                  D10V-Word.           (line   6)
+* \" (doublequote character):            Strings.             (line  43)
+* \\ (\ character):                      Strings.             (line  40)
+* \b (backspace character):              Strings.             (line  15)
+* \DDD (octal character code):           Strings.             (line  30)
+* \f (formfeed character):               Strings.             (line  18)
+* \n (newline character):                Strings.             (line  21)
+* \r (carriage return character):        Strings.             (line  24)
+* \t (tab):                              Strings.             (line  27)
+* \XD... (hex character code):           Strings.             (line  36)
+* _ opcode prefix:                       Xtensa Opcodes.      (line   9)
+* a.out:                                 Object.              (line   6)
+* a.out symbol attributes:               a.out Symbols.       (line   6)
+* A_DIR environment variable, TIC54X:    TIC54X-Env.          (line   6)
+* ABI options, SH64:                     SH64 Options.        (line  29)
+* ABORT directive:                       ABORT.               (line   6)
+* abort directive:                       Abort.               (line   6)
+* absolute section:                      Ld Sections.         (line  29)
+* absolute-literals directive:           Absolute Literals Directive.
+                                                              (line   6)
+* ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
+                                                              (line  43)
+* addition, permitted arguments:         Infix Ops.           (line  44)
+* addresses:                             Expressions.         (line   6)
+* addresses, format of:                  Secs Background.     (line  68)
+* addressing modes, D10V:                D10V-Addressing.     (line   6)
+* addressing modes, D30V:                D30V-Addressing.     (line   6)
+* addressing modes, H8/300:              H8/300-Addressing.   (line   6)
+* addressing modes, M680x0:              M68K-Syntax.         (line  21)
+* addressing modes, M68HC11:             M68HC11-Syntax.      (line  17)
+* addressing modes, SH:                  SH-Addressing.       (line   6)
+* addressing modes, SH64:                SH64-Addressing.     (line   6)
+* addressing modes, Z8000:               Z8000-Addressing.    (line   6)
+* ADR reg,<label> pseudo op, ARM:        ARM Opcodes.         (line  25)
+* ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.         (line  35)
+* advancing location counter:            Org.                 (line   6)
+* align directive:                       Align.               (line   6)
+* align directive, ARM:                  ARM Directives.      (line   6)
+* align directive, SPARC:                Sparc-Directives.    (line   9)
+* align directive, TIC54X:               TIC54X-Directives.   (line   6)
+* alignment of branch targets:           Xtensa Automatic Alignment.
+                                                              (line   6)
+* alignment of ENTRY instructions:       Xtensa Automatic Alignment.
+                                                              (line   6)
+* alignment of LOOP instructions:        Xtensa Automatic Alignment.
+                                                              (line   6)
+* Alpha floating point (IEEE):           Alpha Floating Point.
+                                                              (line   6)
+* Alpha line comment character:          Alpha-Chars.         (line   6)
+* Alpha line separator:                  Alpha-Chars.         (line   8)
+* Alpha notes:                           Alpha Notes.         (line   6)
+* Alpha options:                         Alpha Options.       (line   6)
+* Alpha registers:                       Alpha-Regs.          (line   6)
+* Alpha relocations:                     Alpha-Relocs.        (line   6)
+* Alpha support:                         Alpha-Dependent.     (line   6)
+* Alpha Syntax:                          Alpha Options.       (line  54)
+* Alpha-only directives:                 Alpha Directives.    (line  10)
+* altered difference tables:             Word.                (line  12)
+* alternate syntax for the 680x0:        M68K-Moto-Syntax.    (line   6)
+* ARC floating point (IEEE):             ARC Floating Point.  (line   6)
+* ARC machine directives:                ARC Directives.      (line   6)
+* ARC opcodes:                           ARC Opcodes.         (line   6)
+* ARC options (none):                    ARC Options.         (line   6)
+* ARC register names:                    ARC-Regs.            (line   6)
+* ARC special characters:                ARC-Chars.           (line   6)
+* ARC support:                           ARC-Dependent.       (line   6)
+* arc5 arc5, ARC:                        ARC Options.         (line  10)
+* arc6 arc6, ARC:                        ARC Options.         (line  13)
+* arc7 arc7, ARC:                        ARC Options.         (line  21)
+* arc8 arc8, ARC:                        ARC Options.         (line  24)
+* arch directive, i386:                  i386-Arch.           (line   6)
+* arch directive, M680x0:                M68K-Directives.     (line  22)
+* arch directive, x86-64:                i386-Arch.           (line   6)
+* architecture options, i960:            Options-i960.        (line   6)
+* architecture options, IP2022:          IP2K-Opts.           (line   9)
+* architecture options, IP2K:            IP2K-Opts.           (line  14)
+* architecture options, M16C:            M32C-Opts.           (line  12)
+* architecture options, M32C:            M32C-Opts.           (line   9)
+* architecture options, M32R:            M32R-Opts.           (line  21)
+* architecture options, M32R2:           M32R-Opts.           (line  17)
+* architecture options, M32RX:           M32R-Opts.           (line   9)
+* architecture options, M680x0:          M68K-Opts.           (line 103)
+* Architecture variant option, CRIS:     CRIS-Opts.           (line  33)
+* architectures, PowerPC:                PowerPC-Opts.        (line   6)
+* architectures, SPARC:                  Sparc-Opts.          (line   6)
+* arguments for addition:                Infix Ops.           (line  44)
+* arguments for subtraction:             Infix Ops.           (line  49)
+* arguments in expressions:              Arguments.           (line   6)
+* arithmetic functions:                  Operators.           (line   6)
+* arithmetic operands:                   Arguments.           (line   6)
+* arm directive, ARM:                    ARM Directives.      (line  36)
+* ARM floating point (IEEE):             ARM Floating Point.  (line   6)
+* ARM identifiers:                       ARM-Chars.           (line  15)
+* ARM immediate character:               ARM-Chars.           (line  13)
+* ARM line comment character:            ARM-Chars.           (line   6)
+* ARM line separator:                    ARM-Chars.           (line  10)
+* ARM machine directives:                ARM Directives.      (line   6)
+* ARM opcodes:                           ARM Opcodes.         (line   6)
+* ARM options (none):                    ARM Options.         (line   6)
+* ARM register names:                    ARM-Regs.            (line   6)
+* ARM support:                           ARM-Dependent.       (line   6)
+* ascii directive:                       Ascii.               (line   6)
+* asciz directive:                       Asciz.               (line   6)
+* asg directive, TIC54X:                 TIC54X-Directives.   (line  20)
+* assembler bugs, reporting:             Bug Reporting.       (line   6)
+* assembler crash:                       Bug Criteria.        (line   9)
+* assembler directive .arch, CRIS:       CRIS-Pseudos.        (line  45)
+* assembler directive .dword, CRIS:      CRIS-Pseudos.        (line  12)
+* assembler directive .far, M68HC11:     M68HC11-Directives.  (line  20)
+* assembler directive .interrupt, M68HC11: M68HC11-Directives.
+                                                              (line  26)
+* assembler directive .mode, M68HC11:    M68HC11-Directives.  (line  16)
+* assembler directive .relax, M68HC11:   M68HC11-Directives.  (line  10)
+* assembler directive .syntax, CRIS:     CRIS-Pseudos.        (line  17)
+* assembler directive .xrefb, M68HC11:   M68HC11-Directives.  (line  31)
+* assembler directive BSPEC, MMIX:       MMIX-Pseudos.        (line 131)
+* assembler directive BYTE, MMIX:        MMIX-Pseudos.        (line  97)
+* assembler directive ESPEC, MMIX:       MMIX-Pseudos.        (line 131)
+* assembler directive GREG, MMIX:        MMIX-Pseudos.        (line  50)
+* assembler directive IS, MMIX:          MMIX-Pseudos.        (line  42)
+* assembler directive LOC, MMIX:         MMIX-Pseudos.        (line   7)
+* assembler directive LOCAL, MMIX:       MMIX-Pseudos.        (line  28)
+* assembler directive OCTA, MMIX:        MMIX-Pseudos.        (line 108)
+* assembler directive PREFIX, MMIX:      MMIX-Pseudos.        (line 120)
+* assembler directive TETRA, MMIX:       MMIX-Pseudos.        (line 108)
+* assembler directive WYDE, MMIX:        MMIX-Pseudos.        (line 108)
+* assembler directives, CRIS:            CRIS-Pseudos.        (line   6)
+* assembler directives, M68HC11:         M68HC11-Directives.  (line   6)
+* assembler directives, M68HC12:         M68HC11-Directives.  (line   6)
+* assembler directives, MMIX:            MMIX-Pseudos.        (line   6)
+* assembler internal logic error:        As Sections.         (line  13)
+* assembler version:                     v.                   (line   6)
+* assembler, and linker:                 Secs Background.     (line  10)
+* assembly listings, enabling:           a.                   (line   6)
+* assigning values to symbols <1>:       Equ.                 (line   6)
+* assigning values to symbols:           Setting Symbols.     (line   6)
+* atmp directive, i860:                  Directives-i860.     (line  16)
+* att_syntax pseudo op, i386:            i386-Syntax.         (line   6)
+* att_syntax pseudo op, x86-64:          i386-Syntax.         (line   6)
+* attributes, symbol:                    Symbol Attributes.   (line   6)
+* auxiliary attributes, COFF symbols:    COFF Symbols.        (line  19)
+* auxiliary symbol information, COFF:    Dim.                 (line   6)
+* Av7:                                   Sparc-Opts.          (line  25)
+* backslash (\\):                        Strings.             (line  40)
+* backspace (\b):                        Strings.             (line  15)
+* balign directive:                      Balign.              (line   6)
+* balignl directive:                     Balign.              (line  27)
+* balignw directive:                     Balign.              (line  27)
+* bes directive, TIC54X:                 TIC54X-Directives.   (line 197)
+* BFIN directives:                       BFIN Directives.     (line   6)
+* BFIN syntax:                           BFIN Syntax.         (line   6)
+* big endian output, MIPS:               Overview.            (line 606)
+* big endian output, PJ:                 Overview.            (line 513)
+* big-endian output, MIPS:               MIPS Opts.           (line  13)
+* bignums:                               Bignums.             (line   6)
+* binary constants, TIC54X:              TIC54X-Constants.    (line   8)
+* binary files, including:               Incbin.              (line   6)
+* binary integers:                       Integers.            (line   6)
+* bit names, IA-64:                      IA-64-Bits.          (line   6)
+* bitfields, not supported on VAX:       VAX-no.              (line   6)
+* Blackfin support:                      BFIN-Dependent.      (line   6)
+* block:                                 Z8000 Directives.    (line  55)
+* branch improvement, M680x0:            M68K-Branch.         (line   6)
+* branch improvement, M68HC11:           M68HC11-Branch.      (line   6)
+* branch improvement, VAX:               VAX-branch.          (line   6)
+* branch instructions, relaxation:       Xtensa Branch Relaxation.
+                                                              (line   6)
+* branch recording, i960:                Options-i960.        (line  22)
+* branch statistics table, i960:         Options-i960.        (line  40)
+* branch target alignment:               Xtensa Automatic Alignment.
+                                                              (line   6)
+* break directive, TIC54X:               TIC54X-Directives.   (line 143)
+* BSD syntax:                            PDP-11-Syntax.       (line   6)
+* bss directive, i960:                   Directives-i960.     (line   6)
+* bss directive, TIC54X:                 TIC54X-Directives.   (line  29)
+* bss section <1>:                       bss.                 (line   6)
+* bss section:                           Ld Sections.         (line  20)
+* bug criteria:                          Bug Criteria.        (line   6)
+* bug reports:                           Bug Reporting.       (line   6)
+* bugs in assembler:                     Reporting Bugs.      (line   6)
+* Built-in symbols, CRIS:                CRIS-Symbols.        (line   6)
+* builtin math functions, TIC54X:        TIC54X-Builtins.     (line   6)
+* builtin subsym functions, TIC54X:      TIC54X-Macros.       (line  16)
+* bus lock prefixes, i386:               i386-Prefixes.       (line  36)
+* bval:                                  Z8000 Directives.    (line  30)
+* byte directive:                        Byte.                (line   6)
+* byte directive, TIC54X:                TIC54X-Directives.   (line  36)
+* C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.       (line   6)
+* c_mode directive, TIC54X:              TIC54X-Directives.   (line  51)
+* call instructions, i386:               i386-Mnemonics.      (line  51)
+* call instructions, relaxation:         Xtensa Call Relaxation.
+                                                              (line   6)
+* call instructions, x86-64:             i386-Mnemonics.      (line  51)
+* callj, i960 pseudo-opcode:             callj-i960.          (line   6)
+* carriage return (\r):                  Strings.             (line  24)
+* case sensitivity, Z80:                 Z80-Case.            (line   6)
+* cfi_endproc directive:                 CFI directives.      (line  14)
+* cfi_startproc directive:               CFI directives.      (line   6)
+* char directive, TIC54X:                TIC54X-Directives.   (line  36)
+* character constant, Z80:               Z80-Chars.           (line  13)
+* character constants:                   Characters.          (line   6)
+* character escape codes:                Strings.             (line  15)
+* character escapes, Z80:                Z80-Chars.           (line  11)
+* character, single:                     Chars.               (line   6)
+* characters used in symbols:            Symbol Intro.        (line   6)
+* clink directive, TIC54X:               TIC54X-Directives.   (line  45)
+* code directive, ARM:                   ARM Directives.      (line  29)
+* code16 directive, i386:                i386-16bit.          (line   6)
+* code16gcc directive, i386:             i386-16bit.          (line   6)
+* code32 directive, i386:                i386-16bit.          (line   6)
+* code64 directive, i386:                i386-16bit.          (line   6)
+* code64 directive, x86-64:              i386-16bit.          (line   6)
+* COFF auxiliary symbol information:     Dim.                 (line   6)
+* COFF structure debugging:              Tag.                 (line   6)
+* COFF symbol attributes:                COFF Symbols.        (line   6)
+* COFF symbol descriptor:                Desc.                (line   6)
+* COFF symbol storage class:             Scl.                 (line   6)
+* COFF symbol type:                      Type.                (line  11)
+* COFF symbols, debugging:               Def.                 (line   6)
+* COFF value attribute:                  Val.                 (line   6)
+* COMDAT:                                Linkonce.            (line   6)
+* comm directive:                        Comm.                (line   6)
+* command line conventions:              Command Line.        (line   6)
+* command line options, V850:            V850 Options.        (line   9)
+* command-line options ignored, VAX:     VAX-Opts.            (line   6)
+* comments:                              Comments.            (line   6)
+* comments, M680x0:                      M68K-Chars.          (line   6)
+* comments, removed by preprocessor:     Preprocessing.       (line  11)
+* common directive, SPARC:               Sparc-Directives.    (line  12)
+* common sections:                       Linkonce.            (line   6)
+* common variable storage:               bss.                 (line   6)
+* compare and jump expansions, i960:     Compare-and-branch-i960.
+                                                              (line  13)
+* compare/branch instructions, i960:     Compare-and-branch-i960.
+                                                              (line   6)
+* comparison expressions:                Infix Ops.           (line  55)
+* conditional assembly:                  If.                  (line   6)
+* constant, single character:            Chars.               (line   6)
+* constants:                             Constants.           (line   6)
+* constants, bignum:                     Bignums.             (line   6)
+* constants, character:                  Characters.          (line   6)
+* constants, converted by preprocessor:  Preprocessing.       (line  14)
+* constants, floating point:             Flonums.             (line   6)
+* constants, integer:                    Integers.            (line   6)
+* constants, number:                     Numbers.             (line   6)
+* constants, string:                     Strings.             (line   6)
+* constants, TIC54X:                     TIC54X-Constants.    (line   6)
+* conversion instructions, i386:         i386-Mnemonics.      (line  32)
+* conversion instructions, x86-64:       i386-Mnemonics.      (line  32)
+* coprocessor wait, i386:                i386-Prefixes.       (line  40)
+* copy directive, TIC54X:                TIC54X-Directives.   (line  54)
+* cpu directive, M680x0:                 M68K-Directives.     (line  30)
+* crash of assembler:                    Bug Criteria.        (line   9)
+* CRIS --emulation=crisaout command line option: CRIS-Opts.   (line   9)
+* CRIS --emulation=criself command line option: CRIS-Opts.    (line   9)
+* CRIS --march=ARCHITECTURE command line option: CRIS-Opts.   (line  33)
+* CRIS --mul-bug-abort command line option: CRIS-Opts.        (line  61)
+* CRIS --no-mul-bug-abort command line option: CRIS-Opts.     (line  61)
+* CRIS --no-underscore command line option: CRIS-Opts.        (line  15)
+* CRIS --pic command line option:        CRIS-Opts.           (line  27)
+* CRIS --underscore command line option: CRIS-Opts.           (line  15)
+* CRIS -N command line option:           CRIS-Opts.           (line  57)
+* CRIS architecture variant option:      CRIS-Opts.           (line  33)
+* CRIS assembler directive .arch:        CRIS-Pseudos.        (line  45)
+* CRIS assembler directive .dword:       CRIS-Pseudos.        (line  12)
+* CRIS assembler directive .syntax:      CRIS-Pseudos.        (line  17)
+* CRIS assembler directives:             CRIS-Pseudos.        (line   6)
+* CRIS built-in symbols:                 CRIS-Symbols.        (line   6)
+* CRIS instruction expansion:            CRIS-Expand.         (line   6)
+* CRIS line comment characters:          CRIS-Chars.          (line   6)
+* CRIS options:                          CRIS-Opts.           (line   6)
+* CRIS position-independent code:        CRIS-Opts.           (line  27)
+* CRIS pseudo-op .arch:                  CRIS-Pseudos.        (line  45)
+* CRIS pseudo-op .dword:                 CRIS-Pseudos.        (line  12)
+* CRIS pseudo-op .syntax:                CRIS-Pseudos.        (line  17)
+* CRIS pseudo-ops:                       CRIS-Pseudos.        (line   6)
+* CRIS register names:                   CRIS-Regs.           (line   6)
+* CRIS support:                          CRIS-Dependent.      (line   6)
+* CRIS symbols in position-independent code: CRIS-Pic.        (line   6)
+* ctbp register, V850:                   V850-Regs.           (line 131)
+* ctoff pseudo-op, V850:                 V850 Opcodes.        (line 111)
+* ctpc register, V850:                   V850-Regs.           (line 119)
+* ctpsw register, V850:                  V850-Regs.           (line 122)
+* current address:                       Dot.                 (line   6)
+* current address, advancing:            Org.                 (line   6)
+* D10V @word modifier:                   D10V-Word.           (line   6)
+* D10V addressing modes:                 D10V-Addressing.     (line   6)
+* D10V floating point:                   D10V-Float.          (line   6)
+* D10V line comment character:           D10V-Chars.          (line   6)
+* D10V opcode summary:                   D10V-Opcodes.        (line   6)
+* D10V optimization:                     Overview.            (line 391)
+* D10V options:                          D10V-Opts.           (line   6)
+* D10V registers:                        D10V-Regs.           (line   6)
+* D10V size modifiers:                   D10V-Size.           (line   6)
+* D10V sub-instruction ordering:         D10V-Chars.          (line   6)
+* D10V sub-instructions:                 D10V-Subs.           (line   6)
+* D10V support:                          D10V-Dependent.      (line   6)
+* D10V syntax:                           D10V-Syntax.         (line   6)
+* D30V addressing modes:                 D30V-Addressing.     (line   6)
+* D30V floating point:                   D30V-Float.          (line   6)
+* D30V Guarded Execution:                D30V-Guarded.        (line   6)
+* D30V line comment character:           D30V-Chars.          (line   6)
+* D30V nops:                             Overview.            (line 399)
+* D30V nops after 32-bit multiply:       Overview.            (line 402)
+* D30V opcode summary:                   D30V-Opcodes.        (line   6)
+* D30V optimization:                     Overview.            (line 396)
+* D30V options:                          D30V-Opts.           (line   6)
+* D30V registers:                        D30V-Regs.           (line   6)
+* D30V size modifiers:                   D30V-Size.           (line   6)
+* D30V sub-instruction ordering:         D30V-Chars.          (line   6)
+* D30V sub-instructions:                 D30V-Subs.           (line   6)
+* D30V support:                          D30V-Dependent.      (line   6)
+* D30V syntax:                           D30V-Syntax.         (line   6)
+* data alignment on SPARC:               Sparc-Aligned-Data.  (line   6)
+* data and text sections, joining:       R.                   (line   6)
+* data directive:                        Data.                (line   6)
+* data directive, TIC54X:                TIC54X-Directives.   (line  61)
+* data section:                          Ld Sections.         (line   9)
+* data1 directive, M680x0:               M68K-Directives.     (line   9)
+* data2 directive, M680x0:               M68K-Directives.     (line  12)
+* datalabel, SH64:                       SH64-Addressing.     (line  16)
+* dbpc register, V850:                   V850-Regs.           (line 125)
+* dbpsw register, V850:                  V850-Regs.           (line 128)
+* debuggers, and symbol order:           Symbols.             (line  10)
+* debugging COFF symbols:                Def.                 (line   6)
+* DEC syntax:                            PDP-11-Syntax.       (line   6)
+* decimal integers:                      Integers.            (line  12)
+* def directive:                         Def.                 (line   6)
+* def directive, TIC54X:                 TIC54X-Directives.   (line 103)
+* density instructions:                  Density Instructions.
+                                                              (line   6)
+* dependency tracking:                   MD.                  (line   6)
+* deprecated directives:                 Deprecated.          (line   6)
+* desc directive:                        Desc.                (line   6)
+* descriptor, of a.out symbol:           Symbol Desc.         (line   6)
+* dfloat directive, VAX:                 VAX-directives.      (line  10)
+* difference tables altered:             Word.                (line  12)
+* difference tables, warning:            K.                   (line   6)
+* differences, mmixal:                   MMIX-mmixal.         (line   6)
+* dim directive:                         Dim.                 (line   6)
+* directives and instructions:           Statements.          (line  19)
+* directives for PowerPC:                PowerPC-Pseudo.      (line   6)
+* directives, BFIN:                      BFIN Directives.     (line   6)
+* directives, M32R:                      M32R-Directives.     (line   6)
+* directives, M680x0:                    M68K-Directives.     (line   6)
+* directives, machine independent:       Pseudo Ops.          (line   6)
+* directives, Xtensa:                    Xtensa Directives.   (line   6)
+* directives, Z8000:                     Z8000 Directives.    (line   6)
+* displacement sizing character, VAX:    VAX-operands.        (line  12)
+* dollar local symbols:                  Symbol Names.        (line  91)
+* dot (symbol):                          Dot.                 (line   6)
+* double directive:                      Double.              (line   6)
+* double directive, i386:                i386-Float.          (line  14)
+* double directive, M680x0:              M68K-Float.          (line  14)
+* double directive, M68HC11:             M68HC11-Float.       (line  14)
+* double directive, TIC54X:              TIC54X-Directives.   (line  64)
+* double directive, VAX:                 VAX-float.           (line  15)
+* double directive, x86-64:              i386-Float.          (line  14)
+* doublequote (\"):                      Strings.             (line  43)
+* drlist directive, TIC54X:              TIC54X-Directives.   (line  73)
+* drnolist directive, TIC54X:            TIC54X-Directives.   (line  73)
+* dual directive, i860:                  Directives-i860.     (line   6)
+* ECOFF sections:                        MIPS Object.         (line   6)
+* ecr register, V850:                    V850-Regs.           (line 113)
+* eight-byte integer:                    Quad.                (line   9)
+* eipc register, V850:                   V850-Regs.           (line 101)
+* eipsw register, V850:                  V850-Regs.           (line 104)
+* eject directive:                       Eject.               (line   6)
+* ELF symbol type:                       Type.                (line  22)
+* else directive:                        Else.                (line   6)
+* elseif directive:                      Elseif.              (line   6)
+* empty expressions:                     Empty Exprs.         (line   6)
+* emsg directive, TIC54X:                TIC54X-Directives.   (line  77)
+* emulation:                             Overview.            (line 697)
+* end directive:                         End.                 (line   6)
+* enddual directive, i860:               Directives-i860.     (line  11)
+* endef directive:                       Endef.               (line   6)
+* endfunc directive:                     Endfunc.             (line   6)
+* endianness, MIPS:                      Overview.            (line 606)
+* endianness, PJ:                        Overview.            (line 513)
+* endif directive:                       Endif.               (line   6)
+* endloop directive, TIC54X:             TIC54X-Directives.   (line 143)
+* endm directive:                        Macro.               (line  96)
+* endm directive, TIC54X:                TIC54X-Directives.   (line 153)
+* endstruct directive, TIC54X:           TIC54X-Directives.   (line 217)
+* endunion directive, TIC54X:            TIC54X-Directives.   (line 251)
+* ENTRY instructions, alignment:         Xtensa Automatic Alignment.
+                                                              (line   6)
+* environment settings, TIC54X:          TIC54X-Env.          (line   6)
+* EOF, newline must precede:             Statements.          (line  13)
+* ep register, V850:                     V850-Regs.           (line  95)
+* equ directive:                         Equ.                 (line   6)
+* equ directive, TIC54X:                 TIC54X-Directives.   (line 192)
+* equiv directive:                       Equiv.               (line   6)
+* eqv directive:                         Eqv.                 (line   6)
+* err directive:                         Err.                 (line   6)
+* error directive:                       Error.               (line   6)
+* error messages:                        Errors.              (line   6)
+* error on valid input:                  Bug Criteria.        (line  12)
+* errors, caused by warnings:            W.                   (line  16)
+* errors, continuing after:              Z.                   (line   6)
+* ESA/390 floating point (IEEE):         ESA/390 Floating Point.
+                                                              (line   6)
+* ESA/390 support:                       ESA/390-Dependent.   (line   6)
+* ESA/390 Syntax:                        ESA/390 Options.     (line   8)
+* ESA/390-only directives:               ESA/390 Directives.  (line  12)
+* escape codes, character:               Strings.             (line  15)
+* eval directive, TIC54X:                TIC54X-Directives.   (line  24)
+* even:                                  Z8000 Directives.    (line  58)
+* even directive, M680x0:                M68K-Directives.     (line  15)
+* even directive, TIC54X:                TIC54X-Directives.   (line   6)
+* exitm directive:                       Macro.               (line  99)
+* expr (internal section):               As Sections.         (line  17)
+* expression arguments:                  Arguments.           (line   6)
+* expressions:                           Expressions.         (line   6)
+* expressions, comparison:               Infix Ops.           (line  55)
+* expressions, empty:                    Empty Exprs.         (line   6)
+* expressions, integer:                  Integer Exprs.       (line   6)
+* extAuxRegister directive, ARC:         ARC Directives.      (line  18)
+* extCondCode directive, ARC:            ARC Directives.      (line  41)
+* extCoreRegister directive, ARC:        ARC Directives.      (line  53)
+* extend directive M680x0:               M68K-Float.          (line  17)
+* extend directive M68HC11:              M68HC11-Float.       (line  17)
+* extended directive, i960:              Directives-i960.     (line  13)
+* extern directive:                      Extern.              (line   6)
+* extInstruction directive, ARC:         ARC Directives.      (line  78)
+* fail directive:                        Fail.                (line   6)
+* far_mode directive, TIC54X:            TIC54X-Directives.   (line  82)
+* faster processing (-f):                f.                   (line   6)
+* fatal signal:                          Bug Criteria.        (line   9)
+* fclist directive, TIC54X:              TIC54X-Directives.   (line  87)
+* fcnolist directive, TIC54X:            TIC54X-Directives.   (line  87)
+* fepc register, V850:                   V850-Regs.           (line 107)
+* fepsw register, V850:                  V850-Regs.           (line 110)
+* ffloat directive, VAX:                 VAX-directives.      (line  14)
+* field directive, TIC54X:               TIC54X-Directives.   (line  91)
+* file directive <1>:                    File.                (line   6)
+* file directive:                        LNS directives.      (line   6)
+* file directive, MSP 430:               MSP430 Directives.   (line   6)
+* file name, logical:                    File.                (line   6)
+* files, including:                      Include.             (line   6)
+* files, input:                          Input Files.         (line   6)
+* fill directive:                        Fill.                (line   6)
+* filling memory <1>:                    Space.               (line   6)
+* filling memory:                        Skip.                (line   6)
+* FLIX syntax:                           Xtensa Syntax.       (line   6)
+* float directive:                       Float.               (line   6)
+* float directive, i386:                 i386-Float.          (line  14)
+* float directive, M680x0:               M68K-Float.          (line  11)
+* float directive, M68HC11:              M68HC11-Float.       (line  11)
+* float directive, TIC54X:               TIC54X-Directives.   (line  64)
+* float directive, VAX:                  VAX-float.           (line  15)
+* float directive, x86-64:               i386-Float.          (line  14)
+* floating point numbers:                Flonums.             (line   6)
+* floating point numbers (double):       Double.              (line   6)
+* floating point numbers (single) <1>:   Single.              (line   6)
+* floating point numbers (single):       Float.               (line   6)
+* floating point, Alpha (IEEE):          Alpha Floating Point.
+                                                              (line   6)
+* floating point, ARC (IEEE):            ARC Floating Point.  (line   6)
+* floating point, ARM (IEEE):            ARM Floating Point.  (line   6)
+* floating point, D10V:                  D10V-Float.          (line   6)
+* floating point, D30V:                  D30V-Float.          (line   6)
+* floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
+                                                              (line   6)
+* floating point, H8/300 (IEEE):         H8/300 Floating Point.
+                                                              (line   6)
+* floating point, HPPA (IEEE):           HPPA Floating Point. (line   6)
+* floating point, i386:                  i386-Float.          (line   6)
+* floating point, i960 (IEEE):           Floating Point-i960. (line   6)
+* floating point, M680x0:                M68K-Float.          (line   6)
+* floating point, M68HC11:               M68HC11-Float.       (line   6)
+* floating point, MSP 430 (IEEE):        MSP430 Floating Point.
+                                                              (line   6)
+* floating point, SH (IEEE):             SH Floating Point.   (line   6)
+* floating point, SPARC (IEEE):          Sparc-Float.         (line   6)
+* floating point, V850 (IEEE):           V850 Floating Point. (line   6)
+* floating point, VAX:                   VAX-float.           (line   6)
+* floating point, x86-64:                i386-Float.          (line   6)
+* floating point, Z80:                   Z80 Floating Point.  (line   6)
+* flonums:                               Flonums.             (line   6)
+* force_thumb directive, ARM:            ARM Directives.      (line  39)
+* format of error messages:              Errors.              (line  24)
+* format of warning messages:            Errors.              (line  12)
+* formfeed (\f):                         Strings.             (line  18)
+* func directive:                        Func.                (line   6)
+* functions, in expressions:             Operators.           (line   6)
+* gbr960, i960 postprocessor:            Options-i960.        (line  40)
+* gfloat directive, VAX:                 VAX-directives.      (line  18)
+* global:                                Z8000 Directives.    (line  21)
+* global directive:                      Global.              (line   6)
+* global directive, TIC54X:              TIC54X-Directives.   (line 103)
+* gp register, MIPS:                     MIPS Object.         (line  11)
+* gp register, V850:                     V850-Regs.           (line  17)
+* grouping data:                         Sub-Sections.        (line   6)
+* H8/300 addressing modes:               H8/300-Addressing.   (line   6)
+* H8/300 floating point (IEEE):          H8/300 Floating Point.
+                                                              (line   6)
+* H8/300 line comment character:         H8/300-Chars.        (line   6)
+* H8/300 line separator:                 H8/300-Chars.        (line   8)
+* H8/300 machine directives (none):      H8/300 Directives.   (line   6)
+* H8/300 opcode summary:                 H8/300 Opcodes.      (line   6)
+* H8/300 options (none):                 H8/300 Options.      (line   6)
+* H8/300 registers:                      H8/300-Regs.         (line   6)
+* H8/300 size suffixes:                  H8/300 Opcodes.      (line 163)
+* H8/300 support:                        H8/300-Dependent.    (line   6)
+* H8/300H, assembling for:               H8/300 Directives.   (line   8)
+* half directive, ARC:                   ARC Directives.      (line 156)
+* half directive, SPARC:                 Sparc-Directives.    (line  17)
+* half directive, TIC54X:                TIC54X-Directives.   (line 111)
+* hex character code (\XD...):           Strings.             (line  36)
+* hexadecimal integers:                  Integers.            (line  15)
+* hexadecimal prefix, Z80:               Z80-Chars.           (line   8)
+* hfloat directive, VAX:                 VAX-directives.      (line  22)
+* hi pseudo-op, V850:                    V850 Opcodes.        (line  33)
+* hi0 pseudo-op, V850:                   V850 Opcodes.        (line  10)
+* hidden directive:                      Hidden.              (line   6)
+* high directive, M32R:                  M32R-Directives.     (line  18)
+* hilo pseudo-op, V850:                  V850 Opcodes.        (line  55)
+* HPPA directives not supported:         HPPA Directives.     (line  11)
+* HPPA floating point (IEEE):            HPPA Floating Point. (line   6)
+* HPPA Syntax:                           HPPA Options.        (line   8)
+* HPPA-only directives:                  HPPA Directives.     (line  24)
+* hword directive:                       hword.               (line   6)
+* i370 support:                          ESA/390-Dependent.   (line   6)
+* i386 16-bit code:                      i386-16bit.          (line   6)
+* i386 arch directive:                   i386-Arch.           (line   6)
+* i386 att_syntax pseudo op:             i386-Syntax.         (line   6)
+* i386 conversion instructions:          i386-Mnemonics.      (line  32)
+* i386 floating point:                   i386-Float.          (line   6)
+* i386 immediate operands:               i386-Syntax.         (line  15)
+* i386 instruction naming:               i386-Mnemonics.      (line   6)
+* i386 instruction prefixes:             i386-Prefixes.       (line   6)
+* i386 intel_syntax pseudo op:           i386-Syntax.         (line   6)
+* i386 jump optimization:                i386-Jumps.          (line   6)
+* i386 jump, call, return:               i386-Syntax.         (line  38)
+* i386 jump/call operands:               i386-Syntax.         (line  15)
+* i386 memory references:                i386-Memory.         (line   6)
+* i386 mul, imul instructions:           i386-Notes.          (line   6)
+* i386 options:                          i386-Options.        (line   6)
+* i386 register operands:                i386-Syntax.         (line  15)
+* i386 registers:                        i386-Regs.           (line   6)
+* i386 sections:                         i386-Syntax.         (line  44)
+* i386 size suffixes:                    i386-Syntax.         (line  29)
+* i386 source, destination operands:     i386-Syntax.         (line  22)
+* i386 support:                          i386-Dependent.      (line   6)
+* i386 syntax compatibility:             i386-Syntax.         (line   6)
+* i80306 support:                        i386-Dependent.      (line   6)
+* i860 machine directives:               Directives-i860.     (line   6)
+* i860 opcodes:                          Opcodes for i860.    (line   6)
+* i860 support:                          i860-Dependent.      (line   6)
+* i960 architecture options:             Options-i960.        (line   6)
+* i960 branch recording:                 Options-i960.        (line  22)
+* i960 callj pseudo-opcode:              callj-i960.          (line   6)
+* i960 compare and jump expansions:      Compare-and-branch-i960.
+                                                              (line  13)
+* i960 compare/branch instructions:      Compare-and-branch-i960.
+                                                              (line   6)
+* i960 floating point (IEEE):            Floating Point-i960. (line   6)
+* i960 machine directives:               Directives-i960.     (line   6)
+* i960 opcodes:                          Opcodes for i960.    (line   6)
+* i960 options:                          Options-i960.        (line   6)
+* i960 support:                          i960-Dependent.      (line   6)
+* IA-64 line comment character:          IA-64-Chars.         (line   6)
+* IA-64 line separator:                  IA-64-Chars.         (line   8)
+* IA-64 options:                         IA-64 Options.       (line   6)
+* IA-64 Processor-status-Register bit names: IA-64-Bits.      (line   6)
+* IA-64 registers:                       IA-64-Regs.          (line   6)
+* IA-64 support:                         IA-64-Dependent.     (line   6)
+* IA-64 Syntax:                          IA-64 Options.       (line  96)
+* ident directive:                       Ident.               (line   6)
+* identifiers, ARM:                      ARM-Chars.           (line  15)
+* identifiers, MSP 430:                  MSP430-Chars.        (line   8)
+* if directive:                          If.                  (line   6)
+* ifb directive:                         If.                  (line  21)
+* ifc directive:                         If.                  (line  25)
+* ifdef directive:                       If.                  (line  16)
+* ifeq directive:                        If.                  (line  33)
+* ifeqs directive:                       If.                  (line  36)
+* ifge directive:                        If.                  (line  40)
+* ifgt directive:                        If.                  (line  44)
+* ifle directive:                        If.                  (line  48)
+* iflt directive:                        If.                  (line  52)
+* ifnb directive:                        If.                  (line  56)
+* ifnc directive:                        If.                  (line  61)
+* ifndef directive:                      If.                  (line  65)
+* ifne directive:                        If.                  (line  72)
+* ifnes directive:                       If.                  (line  76)
+* ifnotdef directive:                    If.                  (line  65)
+* immediate character, ARM:              ARM-Chars.           (line  13)
+* immediate character, M680x0:           M68K-Chars.          (line   6)
+* immediate character, VAX:              VAX-operands.        (line   6)
+* immediate fields, relaxation:          Xtensa Immediate Relaxation.
+                                                              (line   6)
+* immediate operands, i386:              i386-Syntax.         (line  15)
+* immediate operands, x86-64:            i386-Syntax.         (line  15)
+* imul instruction, i386:                i386-Notes.          (line   6)
+* imul instruction, x86-64:              i386-Notes.          (line   6)
+* incbin directive:                      Incbin.              (line   6)
+* include directive:                     Include.             (line   6)
+* include directive search path:         I.                   (line   6)
+* indirect character, VAX:               VAX-operands.        (line   9)
+* infix operators:                       Infix Ops.           (line   6)
+* inhibiting interrupts, i386:           i386-Prefixes.       (line  36)
+* input:                                 Input Files.         (line   6)
+* input file linenumbers:                Input Files.         (line  35)
+* instruction expansion, CRIS:           CRIS-Expand.         (line   6)
+* instruction expansion, MMIX:           MMIX-Expand.         (line   6)
+* instruction naming, i386:              i386-Mnemonics.      (line   6)
+* instruction naming, x86-64:            i386-Mnemonics.      (line   6)
+* instruction prefixes, i386:            i386-Prefixes.       (line   6)
+* instruction set, M680x0:               M68K-opcodes.        (line   6)
+* instruction set, M68HC11:              M68HC11-opcodes.     (line   6)
+* instruction summary, D10V:             D10V-Opcodes.        (line   6)
+* instruction summary, D30V:             D30V-Opcodes.        (line   6)
+* instruction summary, H8/300:           H8/300 Opcodes.      (line   6)
+* instruction summary, SH:               SH Opcodes.          (line   6)
+* instruction summary, SH64:             SH64 Opcodes.        (line   6)
+* instruction summary, Z8000:            Z8000 Opcodes.       (line   6)
+* instructions and directives:           Statements.          (line  19)
+* int directive:                         Int.                 (line   6)
+* int directive, H8/300:                 H8/300 Directives.   (line   6)
+* int directive, i386:                   i386-Float.          (line  21)
+* int directive, TIC54X:                 TIC54X-Directives.   (line 111)
+* int directive, x86-64:                 i386-Float.          (line  21)
+* integer expressions:                   Integer Exprs.       (line   6)
+* integer, 16-byte:                      Octa.                (line   6)
+* integer, 8-byte:                       Quad.                (line   9)
+* integers:                              Integers.            (line   6)
+* integers, 16-bit:                      hword.               (line   6)
+* integers, 32-bit:                      Int.                 (line   6)
+* integers, binary:                      Integers.            (line   6)
+* integers, decimal:                     Integers.            (line  12)
+* integers, hexadecimal:                 Integers.            (line  15)
+* integers, octal:                       Integers.            (line   9)
+* integers, one byte:                    Byte.                (line   6)
+* intel_syntax pseudo op, i386:          i386-Syntax.         (line   6)
+* intel_syntax pseudo op, x86-64:        i386-Syntax.         (line   6)
+* internal assembler sections:           As Sections.         (line   6)
+* internal directive:                    Internal.            (line   6)
+* invalid input:                         Bug Criteria.        (line  14)
+* invocation summary:                    Overview.            (line   6)
+* IP2K architecture options:             IP2K-Opts.           (line   9)
+* IP2K options:                          IP2K-Opts.           (line   6)
+* IP2K support:                          IP2K-Dependent.      (line   6)
+* irp directive:                         Irp.                 (line   6)
+* irpc directive:                        Irpc.                (line   6)
+* ISA options, SH64:                     SH64 Options.        (line   6)
+* joining text and data sections:        R.                   (line   6)
+* jump instructions, i386:               i386-Mnemonics.      (line  51)
+* jump instructions, x86-64:             i386-Mnemonics.      (line  51)
+* jump optimization, i386:               i386-Jumps.          (line   6)
+* jump optimization, x86-64:             i386-Jumps.          (line   6)
+* jump/call operands, i386:              i386-Syntax.         (line  15)
+* jump/call operands, x86-64:            i386-Syntax.         (line  15)
+* L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
+                                                              (line  23)
+* L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
+                                                              (line  23)
+* L32I instructions, relaxation:         Xtensa Immediate Relaxation.
+                                                              (line  23)
+* L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
+                                                              (line  23)
+* label (:):                             Statements.          (line  30)
+* label directive, TIC54X:               TIC54X-Directives.   (line 123)
+* labels:                                Labels.              (line   6)
+* lcomm directive:                       Lcomm.               (line   6)
+* ld:                                    Object.              (line  15)
+* ldouble directive M680x0:              M68K-Float.          (line  17)
+* ldouble directive M68HC11:             M68HC11-Float.       (line  17)
+* ldouble directive, TIC54X:             TIC54X-Directives.   (line  64)
+* LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.         (line  15)
+* leafproc directive, i960:              Directives-i960.     (line  18)
+* length directive, TIC54X:              TIC54X-Directives.   (line 127)
+* length of symbols:                     Symbol Intro.        (line  14)
+* lflags directive (ignored):            Lflags.              (line   6)
+* line comment character:                Comments.            (line  19)
+* line comment character, Alpha:         Alpha-Chars.         (line   6)
+* line comment character, ARM:           ARM-Chars.           (line   6)
+* line comment character, D10V:          D10V-Chars.          (line   6)
+* line comment character, D30V:          D30V-Chars.          (line   6)
+* line comment character, H8/300:        H8/300-Chars.        (line   6)
+* line comment character, IA-64:         IA-64-Chars.         (line   6)
+* line comment character, M680x0:        M68K-Chars.          (line   6)
+* line comment character, MSP 430:       MSP430-Chars.        (line   6)
+* line comment character, SH:            SH-Chars.            (line   6)
+* line comment character, SH64:          SH64-Chars.          (line   6)
+* line comment character, V850:          V850-Chars.          (line   6)
+* line comment character, Z80:           Z80-Chars.           (line   6)
+* line comment character, Z8000:         Z8000-Chars.         (line   6)
+* line comment characters, CRIS:         CRIS-Chars.          (line   6)
+* line comment characters, MMIX:         MMIX-Chars.          (line   6)
+* line directive:                        Line.                (line   6)
+* line directive, MSP 430:               MSP430 Directives.   (line  14)
+* line numbers, in input files:          Input Files.         (line  35)
+* line numbers, in warnings/errors:      Errors.              (line  16)
+* line separator character:              Statements.          (line   6)
+* line separator, Alpha:                 Alpha-Chars.         (line   8)
+* line separator, ARM:                   ARM-Chars.           (line  10)
+* line separator, H8/300:                H8/300-Chars.        (line   8)
+* line separator, IA-64:                 IA-64-Chars.         (line   8)
+* line separator, SH:                    SH-Chars.            (line   8)
+* line separator, SH64:                  SH64-Chars.          (line   8)
+* line separator, Z8000:                 Z8000-Chars.         (line   8)
+* lines starting with #:                 Comments.            (line  38)
+* linker:                                Object.              (line  15)
+* linker, and assembler:                 Secs Background.     (line  10)
+* linkonce directive:                    Linkonce.            (line   6)
+* list directive:                        List.                (line   6)
+* list directive, TIC54X:                TIC54X-Directives.   (line 131)
+* listing control, turning off:          Nolist.              (line   6)
+* listing control, turning on:           List.                (line   6)
+* listing control: new page:             Eject.               (line   6)
+* listing control: paper size:           Psize.               (line   6)
+* listing control: subtitle:             Sbttl.               (line   6)
+* listing control: title line:           Title.               (line   6)
+* listings, enabling:                    a.                   (line   6)
+* literal directive:                     Literal Directive.   (line   6)
+* literal_position directive:            Literal Position Directive.
+                                                              (line   6)
+* literal_prefix directive:              Literal Prefix Directive.
+                                                              (line   6)
+* little endian output, MIPS:            Overview.            (line 609)
+* little endian output, PJ:              Overview.            (line 516)
+* little-endian output, MIPS:            MIPS Opts.           (line  13)
+* ln directive:                          Ln.                  (line   6)
+* lo pseudo-op, V850:                    V850 Opcodes.        (line  22)
+* loc directive:                         LNS directives.      (line  19)
+* loc_mark_blocks directive:             LNS directives.      (line  50)
+* local common symbols:                  Lcomm.               (line   6)
+* local labels, retaining in output:     L.                   (line   6)
+* local symbol names:                    Symbol Names.        (line  22)
+* location counter:                      Dot.                 (line   6)
+* location counter, advancing:           Org.                 (line   6)
+* location counter, Z80:                 Z80-Chars.           (line   8)
+* logical file name:                     File.                (line   6)
+* logical line number:                   Line.                (line   6)
+* logical line numbers:                  Comments.            (line  38)
+* long directive:                        Long.                (line   6)
+* long directive, ARC:                   ARC Directives.      (line 159)
+* long directive, i386:                  i386-Float.          (line  21)
+* long directive, TIC54X:                TIC54X-Directives.   (line 135)
+* long directive, x86-64:                i386-Float.          (line  21)
+* longcall pseudo-op, V850:              V850 Opcodes.        (line 123)
+* longcalls directive:                   Longcalls Directive. (line   6)
+* longjump pseudo-op, V850:              V850 Opcodes.        (line 129)
+* loop directive, TIC54X:                TIC54X-Directives.   (line 143)
+* LOOP instructions, alignment:          Xtensa Automatic Alignment.
+                                                              (line   6)
+* low directive, M32R:                   M32R-Directives.     (line   9)
+* lp register, V850:                     V850-Regs.           (line  98)
+* lval:                                  Z8000 Directives.    (line  27)
+* M16C architecture option:              M32C-Opts.           (line  12)
+* M32C architecture option:              M32C-Opts.           (line   9)
+* M32C modifiers:                        M32C-Modifiers.      (line   6)
+* M32C options:                          M32C-Opts.           (line   6)
+* M32C support:                          M32C-Dependent.      (line   6)
+* M32R architecture options:             M32R-Opts.           (line   9)
+* M32R directives:                       M32R-Directives.     (line   6)
+* M32R options:                          M32R-Opts.           (line   6)
+* M32R support:                          M32R-Dependent.      (line   6)
+* M32R warnings:                         M32R-Warnings.       (line   6)
+* M680x0 addressing modes:               M68K-Syntax.         (line  21)
+* M680x0 architecture options:           M68K-Opts.           (line 103)
+* M680x0 branch improvement:             M68K-Branch.         (line   6)
+* M680x0 directives:                     M68K-Directives.     (line   6)
+* M680x0 floating point:                 M68K-Float.          (line   6)
+* M680x0 immediate character:            M68K-Chars.          (line   6)
+* M680x0 line comment character:         M68K-Chars.          (line   6)
+* M680x0 opcodes:                        M68K-opcodes.        (line   6)
+* M680x0 options:                        M68K-Opts.           (line   6)
+* M680x0 pseudo-opcodes:                 M68K-Branch.         (line   6)
+* M680x0 size modifiers:                 M68K-Syntax.         (line   8)
+* M680x0 support:                        M68K-Dependent.      (line   6)
+* M680x0 syntax:                         M68K-Syntax.         (line   8)
+* M68HC11 addressing modes:              M68HC11-Syntax.      (line  17)
+* M68HC11 and M68HC12 support:           M68HC11-Dependent.   (line   6)
+* M68HC11 assembler directive .far:      M68HC11-Directives.  (line  20)
+* M68HC11 assembler directive .interrupt: M68HC11-Directives. (line  26)
+* M68HC11 assembler directive .mode:     M68HC11-Directives.  (line  16)
+* M68HC11 assembler directive .relax:    M68HC11-Directives.  (line  10)
+* M68HC11 assembler directive .xrefb:    M68HC11-Directives.  (line  31)
+* M68HC11 assembler directives:          M68HC11-Directives.  (line   6)
+* M68HC11 branch improvement:            M68HC11-Branch.      (line   6)
+* M68HC11 floating point:                M68HC11-Float.       (line   6)
+* M68HC11 modifiers:                     M68HC11-Modifiers.   (line   6)
+* M68HC11 opcodes:                       M68HC11-opcodes.     (line   6)
+* M68HC11 options:                       M68HC11-Opts.        (line   6)
+* M68HC11 pseudo-opcodes:                M68HC11-Branch.      (line   6)
+* M68HC11 syntax:                        M68HC11-Syntax.      (line   6)
+* M68HC12 assembler directives:          M68HC11-Directives.  (line   6)
+* machine dependencies:                  Machine Dependencies.
+                                                              (line   6)
+* machine directives, ARC:               ARC Directives.      (line   6)
+* machine directives, ARM:               ARM Directives.      (line   6)
+* machine directives, H8/300 (none):     H8/300 Directives.   (line   6)
+* machine directives, i860:              Directives-i860.     (line   6)
+* machine directives, i960:              Directives-i960.     (line   6)
+* machine directives, MSP 430:           MSP430 Directives.   (line   6)
+* machine directives, SH:                SH Directives.       (line   6)
+* machine directives, SH64:              SH64 Directives.     (line   9)
+* machine directives, SPARC:             Sparc-Directives.    (line   6)
+* machine directives, TIC54X:            TIC54X-Directives.   (line   6)
+* machine directives, V850:              V850 Directives.     (line   6)
+* machine directives, VAX:               VAX-directives.      (line   6)
+* machine independent directives:        Pseudo Ops.          (line   6)
+* machine instructions (not covered):    Manual.              (line  14)
+* machine-independent syntax:            Syntax.              (line   6)
+* macro directive:                       Macro.               (line  28)
+* macro directive, TIC54X:               TIC54X-Directives.   (line 153)
+* macros:                                Macro.               (line   6)
+* macros, count executed:                Macro.               (line 101)
+* Macros, MSP 430:                       MSP430-Macros.       (line   6)
+* macros, TIC54X:                        TIC54X-Macros.       (line   6)
+* make rules:                            MD.                  (line   6)
+* manual, structure and purpose:         Manual.              (line   6)
+* math builtins, TIC54X:                 TIC54X-Builtins.     (line   6)
+* Maximum number of continuation lines:  listing.             (line  33)
+* memory references, i386:               i386-Memory.         (line   6)
+* memory references, x86-64:             i386-Memory.         (line   6)
+* memory-mapped registers, TIC54X:       TIC54X-MMRegs.       (line   6)
+* merging text and data sections:        R.                   (line   6)
+* messages from assembler:               Errors.              (line   6)
+* minus, permitted arguments:            Infix Ops.           (line  49)
+* MIPS architecture options:             MIPS Opts.           (line  20)
+* MIPS big-endian output:                MIPS Opts.           (line  13)
+* MIPS debugging directives:             MIPS Stabs.          (line   6)
+* MIPS DSP instruction generation override: MIPS ASE instruction generation overrides.
+                                                              (line  16)
+* MIPS ECOFF sections:                   MIPS Object.         (line   6)
+* MIPS endianness:                       Overview.            (line 606)
+* MIPS ISA:                              Overview.            (line 612)
+* MIPS ISA override:                     MIPS ISA.            (line   6)
+* MIPS little-endian output:             MIPS Opts.           (line  13)
+* MIPS MDMX instruction generation override: MIPS ASE instruction generation overrides.
+                                                              (line  11)
+* MIPS MIPS-3D instruction generation override: MIPS ASE instruction generation overrides.
+                                                              (line   6)
+* MIPS MT instruction generation override: MIPS ASE instruction generation overrides.
+                                                              (line  21)
+* MIPS option stack:                     MIPS option stack.   (line   6)
+* MIPS processor:                        MIPS-Dependent.      (line   6)
+* MIT:                                   M68K-Syntax.         (line   6)
+* mlib directive, TIC54X:                TIC54X-Directives.   (line 159)
+* mlist directive, TIC54X:               TIC54X-Directives.   (line 164)
+* MMIX assembler directive BSPEC:        MMIX-Pseudos.        (line 131)
+* MMIX assembler directive BYTE:         MMIX-Pseudos.        (line  97)
+* MMIX assembler directive ESPEC:        MMIX-Pseudos.        (line 131)
+* MMIX assembler directive GREG:         MMIX-Pseudos.        (line  50)
+* MMIX assembler directive IS:           MMIX-Pseudos.        (line  42)
+* MMIX assembler directive LOC:          MMIX-Pseudos.        (line   7)
+* MMIX assembler directive LOCAL:        MMIX-Pseudos.        (line  28)
+* MMIX assembler directive OCTA:         MMIX-Pseudos.        (line 108)
+* MMIX assembler directive PREFIX:       MMIX-Pseudos.        (line 120)
+* MMIX assembler directive TETRA:        MMIX-Pseudos.        (line 108)
+* MMIX assembler directive WYDE:         MMIX-Pseudos.        (line 108)
+* MMIX assembler directives:             MMIX-Pseudos.        (line   6)
+* MMIX line comment characters:          MMIX-Chars.          (line   6)
+* MMIX options:                          MMIX-Opts.           (line   6)
+* MMIX pseudo-op BSPEC:                  MMIX-Pseudos.        (line 131)
+* MMIX pseudo-op BYTE:                   MMIX-Pseudos.        (line  97)
+* MMIX pseudo-op ESPEC:                  MMIX-Pseudos.        (line 131)
+* MMIX pseudo-op GREG:                   MMIX-Pseudos.        (line  50)
+* MMIX pseudo-op IS:                     MMIX-Pseudos.        (line  42)
+* MMIX pseudo-op LOC:                    MMIX-Pseudos.        (line   7)
+* MMIX pseudo-op LOCAL:                  MMIX-Pseudos.        (line  28)
+* MMIX pseudo-op OCTA:                   MMIX-Pseudos.        (line 108)
+* MMIX pseudo-op PREFIX:                 MMIX-Pseudos.        (line 120)
+* MMIX pseudo-op TETRA:                  MMIX-Pseudos.        (line 108)
+* MMIX pseudo-op WYDE:                   MMIX-Pseudos.        (line 108)
+* MMIX pseudo-ops:                       MMIX-Pseudos.        (line   6)
+* MMIX register names:                   MMIX-Regs.           (line   6)
+* MMIX support:                          MMIX-Dependent.      (line   6)
+* mmixal differences:                    MMIX-mmixal.         (line   6)
+* mmregs directive, TIC54X:              TIC54X-Directives.   (line 170)
+* mmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
+* MMX, i386:                             i386-SIMD.           (line   6)
+* MMX, x86-64:                           i386-SIMD.           (line   6)
+* mnemonic suffixes, i386:               i386-Syntax.         (line  29)
+* mnemonic suffixes, x86-64:             i386-Syntax.         (line  29)
+* mnemonics for opcodes, VAX:            VAX-opcodes.         (line   6)
+* mnemonics, D10V:                       D10V-Opcodes.        (line   6)
+* mnemonics, D30V:                       D30V-Opcodes.        (line   6)
+* mnemonics, H8/300:                     H8/300 Opcodes.      (line   6)
+* mnemonics, SH:                         SH Opcodes.          (line   6)
+* mnemonics, SH64:                       SH64 Opcodes.        (line   6)
+* mnemonics, Z8000:                      Z8000 Opcodes.       (line   6)
+* mnolist directive, TIC54X:             TIC54X-Directives.   (line 164)
+* Motorola syntax for the 680x0:         M68K-Moto-Syntax.    (line   6)
+* MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
+                                                              (line  12)
+* MRI compatibility mode:                M.                   (line   6)
+* mri directive:                         MRI.                 (line   6)
+* MRI mode, temporarily:                 MRI.                 (line   6)
+* MSP 430 floating point (IEEE):         MSP430 Floating Point.
+                                                              (line   6)
+* MSP 430 identifiers:                   MSP430-Chars.        (line   8)
+* MSP 430 line comment character:        MSP430-Chars.        (line   6)
+* MSP 430 machine directives:            MSP430 Directives.   (line   6)
+* MSP 430 macros:                        MSP430-Macros.       (line   6)
+* MSP 430 opcodes:                       MSP430 Opcodes.      (line   6)
+* MSP 430 options (none):                MSP430 Options.      (line   6)
+* MSP 430 profiling capability:          MSP430 Profiling Capability.
+                                                              (line   6)
+* MSP 430 register names:                MSP430-Regs.         (line   6)
+* MSP 430 support:                       MSP430-Dependent.    (line   6)
+* MSP430 Assembler Extensions:           MSP430-Ext.          (line   6)
+* mul instruction, i386:                 i386-Notes.          (line   6)
+* mul instruction, x86-64:               i386-Notes.          (line   6)
+* name:                                  Z8000 Directives.    (line  18)
+* named section:                         Section.             (line   6)
+* named sections:                        Ld Sections.         (line   8)
+* names, symbol:                         Symbol Names.        (line   6)
+* naming object file:                    o.                   (line   6)
+* new page, in listings:                 Eject.               (line   6)
+* newblock directive, TIC54X:            TIC54X-Directives.   (line 176)
+* newline (\n):                          Strings.             (line  21)
+* newline, required at file end:         Statements.          (line  13)
+* no-absolute-literals directive:        Absolute Literals Directive.
+                                                              (line   6)
+* no-longcalls directive:                Longcalls Directive. (line   6)
+* no-schedule directive:                 Schedule Directive.  (line   6)
+* no-transform directive:                Transform Directive. (line   6)
+* nolist directive:                      Nolist.              (line   6)
+* nolist directive, TIC54X:              TIC54X-Directives.   (line 131)
+* NOP pseudo op, ARM:                    ARM Opcodes.         (line   9)
+* notes for Alpha:                       Alpha Notes.         (line   6)
+* null-terminated strings:               Asciz.               (line   6)
+* number constants:                      Numbers.             (line   6)
+* number of macros executed:             Macro.               (line 101)
+* numbered subsections:                  Sub-Sections.        (line   6)
+* numbers, 16-bit:                       hword.               (line   6)
+* numeric values:                        Expressions.         (line   6)
+* nword directive, SPARC:                Sparc-Directives.    (line  20)
+* object file:                           Object.              (line   6)
+* object file format:                    Object Formats.      (line   6)
+* object file name:                      o.                   (line   6)
+* object file, after errors:             Z.                   (line   6)
+* obsolescent directives:                Deprecated.          (line   6)
+* octa directive:                        Octa.                (line   6)
+* octal character code (\DDD):           Strings.             (line  30)
+* octal integers:                        Integers.            (line   9)
+* offset directive, V850:                V850 Directives.     (line   6)
+* opcode mnemonics, VAX:                 VAX-opcodes.         (line   6)
+* opcode names, Xtensa:                  Xtensa Opcodes.      (line   6)
+* opcode summary, D10V:                  D10V-Opcodes.        (line   6)
+* opcode summary, D30V:                  D30V-Opcodes.        (line   6)
+* opcode summary, H8/300:                H8/300 Opcodes.      (line   6)
+* opcode summary, SH:                    SH Opcodes.          (line   6)
+* opcode summary, SH64:                  SH64 Opcodes.        (line   6)
+* opcode summary, Z8000:                 Z8000 Opcodes.       (line   6)
+* opcodes for ARC:                       ARC Opcodes.         (line   6)
+* opcodes for ARM:                       ARM Opcodes.         (line   6)
+* opcodes for MSP 430:                   MSP430 Opcodes.      (line   6)
+* opcodes for V850:                      V850 Opcodes.        (line   6)
+* opcodes, i860:                         Opcodes for i860.    (line   6)
+* opcodes, i960:                         Opcodes for i960.    (line   6)
+* opcodes, M680x0:                       M68K-opcodes.        (line   6)
+* opcodes, M68HC11:                      M68HC11-opcodes.     (line   6)
+* operand delimiters, i386:              i386-Syntax.         (line  15)
+* operand delimiters, x86-64:            i386-Syntax.         (line  15)
+* operand notation, VAX:                 VAX-operands.        (line   6)
+* operands in expressions:               Arguments.           (line   6)
+* operator precedence:                   Infix Ops.           (line  11)
+* operators, in expressions:             Operators.           (line   6)
+* operators, permitted arguments:        Infix Ops.           (line   6)
+* optimization, D10V:                    Overview.            (line 391)
+* optimization, D30V:                    Overview.            (line 396)
+* optimizations:                         Xtensa Optimizations.
+                                                              (line   6)
+* option directive, ARC:                 ARC Directives.      (line 162)
+* option directive, TIC54X:              TIC54X-Directives.   (line 180)
+* option summary:                        Overview.            (line   6)
+* options for Alpha:                     Alpha Options.       (line   6)
+* options for ARC (none):                ARC Options.         (line   6)
+* options for ARM (none):                ARM Options.         (line   6)
+* options for i386:                      i386-Options.        (line   6)
+* options for IA-64:                     IA-64 Options.       (line   6)
+* options for MSP430 (none):             MSP430 Options.      (line   6)
+* options for PDP-11:                    PDP-11-Options.      (line   6)
+* options for PowerPC:                   PowerPC-Opts.        (line   6)
+* options for SPARC:                     Sparc-Opts.          (line   6)
+* options for V850 (none):               V850 Options.        (line   6)
+* options for VAX/VMS:                   VAX-Opts.            (line  42)
+* options for x86-64:                    i386-Options.        (line   6)
+* options for Z80:                       Z80 Options.         (line   6)
+* options, all versions of assembler:    Invoking.            (line   6)
+* options, command line:                 Command Line.        (line  13)
+* options, CRIS:                         CRIS-Opts.           (line   6)
+* options, D10V:                         D10V-Opts.           (line   6)
+* options, D30V:                         D30V-Opts.           (line   6)
+* options, H8/300 (none):                H8/300 Options.      (line   6)
+* options, i960:                         Options-i960.        (line   6)
+* options, IP2K:                         IP2K-Opts.           (line   6)
+* options, M32C:                         M32C-Opts.           (line   6)
+* options, M32R:                         M32R-Opts.           (line   6)
+* options, M680x0:                       M68K-Opts.           (line   6)
+* options, M68HC11:                      M68HC11-Opts.        (line   6)
+* options, MMIX:                         MMIX-Opts.           (line   6)
+* options, PJ:                           PJ Options.          (line   6)
+* options, SH:                           SH Options.          (line   6)
+* options, SH64:                         SH64 Options.        (line   6)
+* options, TIC54X:                       TIC54X-Opts.         (line   6)
+* options, Z8000:                        Z8000 Options.       (line   6)
+* org directive:                         Org.                 (line   6)
+* other attribute, of a.out symbol:      Symbol Other.        (line   6)
+* output file:                           Object.              (line   6)
+* p2align directive:                     P2align.             (line   6)
+* p2alignl directive:                    P2align.             (line  28)
+* p2alignw directive:                    P2align.             (line  28)
+* padding the location counter:          Align.               (line   6)
+* padding the location counter given a power of two: P2align. (line   6)
+* padding the location counter given number of bytes: Balign. (line   6)
+* page, in listings:                     Eject.               (line   6)
+* paper size, for listings:              Psize.               (line   6)
+* paths for .include:                    I.                   (line   6)
+* patterns, writing in memory:           Fill.                (line   6)
+* PDP-11 comments:                       PDP-11-Syntax.       (line  16)
+* PDP-11 floating-point register syntax: PDP-11-Syntax.       (line  13)
+* PDP-11 general-purpose register syntax: PDP-11-Syntax.      (line  10)
+* PDP-11 instruction naming:             PDP-11-Mnemonics.    (line   6)
+* PDP-11 support:                        PDP-11-Dependent.    (line   6)
+* PDP-11 syntax:                         PDP-11-Syntax.       (line   6)
+* PIC code generation for ARM:           ARM Options.         (line 120)
+* PIC code generation for M32R:          M32R-Opts.           (line  42)
+* PJ endianness:                         Overview.            (line 513)
+* PJ options:                            PJ Options.          (line   6)
+* PJ support:                            PJ-Dependent.        (line   6)
+* plus, permitted arguments:             Infix Ops.           (line  44)
+* popsection directive:                  PopSection.          (line   6)
+* Position-independent code, CRIS:       CRIS-Opts.           (line  27)
+* Position-independent code, symbols in, CRIS: CRIS-Pic.      (line   6)
+* PowerPC architectures:                 PowerPC-Opts.        (line   6)
+* PowerPC directives:                    PowerPC-Pseudo.      (line   6)
+* PowerPC options:                       PowerPC-Opts.        (line   6)
+* PowerPC support:                       PPC-Dependent.       (line   6)
+* precedence of operators:               Infix Ops.           (line  11)
+* precision, floating point:             Flonums.             (line   6)
+* prefix operators:                      Prefix Ops.          (line   6)
+* prefixes, i386:                        i386-Prefixes.       (line   6)
+* preprocessing:                         Preprocessing.       (line   6)
+* preprocessing, turning on and off:     Preprocessing.       (line  27)
+* previous directive:                    Previous.            (line   6)
+* primary attributes, COFF symbols:      COFF Symbols.        (line  13)
+* print directive:                       Print.               (line   6)
+* proc directive, SPARC:                 Sparc-Directives.    (line  25)
+* profiler directive, MSP 430:           MSP430 Directives.   (line  22)
+* profiling capability for MSP 430:      MSP430 Profiling Capability.
+                                                              (line   6)
+* protected directive:                   Protected.           (line   6)
+* pseudo-op .arch, CRIS:                 CRIS-Pseudos.        (line  45)
+* pseudo-op .dword, CRIS:                CRIS-Pseudos.        (line  12)
+* pseudo-op .syntax, CRIS:               CRIS-Pseudos.        (line  17)
+* pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.        (line 131)
+* pseudo-op BYTE, MMIX:                  MMIX-Pseudos.        (line  97)
+* pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.        (line 131)
+* pseudo-op GREG, MMIX:                  MMIX-Pseudos.        (line  50)
+* pseudo-op IS, MMIX:                    MMIX-Pseudos.        (line  42)
+* pseudo-op LOC, MMIX:                   MMIX-Pseudos.        (line   7)
+* pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.        (line  28)
+* pseudo-op OCTA, MMIX:                  MMIX-Pseudos.        (line 108)
+* pseudo-op PREFIX, MMIX:                MMIX-Pseudos.        (line 120)
+* pseudo-op TETRA, MMIX:                 MMIX-Pseudos.        (line 108)
+* pseudo-op WYDE, MMIX:                  MMIX-Pseudos.        (line 108)
+* pseudo-opcodes, M680x0:                M68K-Branch.         (line   6)
+* pseudo-opcodes, M68HC11:               M68HC11-Branch.      (line   6)
+* pseudo-ops for branch, VAX:            VAX-branch.          (line   6)
+* pseudo-ops, CRIS:                      CRIS-Pseudos.        (line   6)
+* pseudo-ops, machine independent:       Pseudo Ops.          (line   6)
+* pseudo-ops, MMIX:                      MMIX-Pseudos.        (line   6)
+* psize directive:                       Psize.               (line   6)
+* PSR bits:                              IA-64-Bits.          (line   6)
+* pstring directive, TIC54X:             TIC54X-Directives.   (line 209)
+* psw register, V850:                    V850-Regs.           (line 116)
+* purgem directive:                      Purgem.              (line   6)
+* purpose of GNU assembler:              GNU Assembler.       (line  12)
+* pushsection directive:                 PushSection.         (line   6)
+* quad directive:                        Quad.                (line   6)
+* quad directive, i386:                  i386-Float.          (line  21)
+* quad directive, x86-64:                i386-Float.          (line  21)
+* real-mode code, i386:                  i386-16bit.          (line   6)
+* ref directive, TIC54X:                 TIC54X-Directives.   (line 103)
+* register directive, SPARC:             Sparc-Directives.    (line  29)
+* register names, Alpha:                 Alpha-Regs.          (line   6)
+* register names, ARC:                   ARC-Regs.            (line   6)
+* register names, ARM:                   ARM-Regs.            (line   6)
+* register names, CRIS:                  CRIS-Regs.           (line   6)
+* register names, H8/300:                H8/300-Regs.         (line   6)
+* register names, IA-64:                 IA-64-Regs.          (line   6)
+* register names, MMIX:                  MMIX-Regs.           (line   6)
+* register names, MSP 430:               MSP430-Regs.         (line   6)
+* register names, V850:                  V850-Regs.           (line   6)
+* register names, VAX:                   VAX-operands.        (line  17)
+* register names, Xtensa:                Xtensa Registers.    (line   6)
+* register names, Z80:                   Z80-Regs.            (line   6)
+* register operands, i386:               i386-Syntax.         (line  15)
+* register operands, x86-64:             i386-Syntax.         (line  15)
+* registers, D10V:                       D10V-Regs.           (line   6)
+* registers, D30V:                       D30V-Regs.           (line   6)
+* registers, i386:                       i386-Regs.           (line   6)
+* registers, SH:                         SH-Regs.             (line   6)
+* registers, SH64:                       SH64-Regs.           (line   6)
+* registers, TIC54X memory-mapped:       TIC54X-MMRegs.       (line   6)
+* registers, x86-64:                     i386-Regs.           (line   6)
+* registers, Z8000:                      Z8000-Regs.          (line   6)
+* relaxation:                            Xtensa Relaxation.   (line   6)
+* relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
+                                                              (line  43)
+* relaxation of branch instructions:     Xtensa Branch Relaxation.
+                                                              (line   6)
+* relaxation of call instructions:       Xtensa Call Relaxation.
+                                                              (line   6)
+* relaxation of immediate fields:        Xtensa Immediate Relaxation.
+                                                              (line   6)
+* relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
+                                                              (line  23)
+* relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
+                                                              (line  23)
+* relaxation of L32I instructions:       Xtensa Immediate Relaxation.
+                                                              (line  23)
+* relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
+                                                              (line  23)
+* relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
+                                                              (line  12)
+* relocation:                            Sections.            (line   6)
+* relocation example:                    Ld Sections.         (line  40)
+* relocations, Alpha:                    Alpha-Relocs.        (line   6)
+* repeat prefixes, i386:                 i386-Prefixes.       (line  44)
+* reporting bugs in assembler:           Reporting Bugs.      (line   6)
+* rept directive:                        Rept.                (line   6)
+* req directive, ARM:                    ARM Directives.      (line  13)
+* reserve directive, SPARC:              Sparc-Directives.    (line  39)
+* return instructions, i386:             i386-Syntax.         (line  38)
+* return instructions, x86-64:           i386-Syntax.         (line  38)
+* REX prefixes, i386:                    i386-Prefixes.       (line  46)
+* rsect:                                 Z8000 Directives.    (line  52)
+* sblock directive, TIC54X:              TIC54X-Directives.   (line 183)
+* sbttl directive:                       Sbttl.               (line   6)
+* schedule directive:                    Schedule Directive.  (line   6)
+* scl directive:                         Scl.                 (line   6)
+* sdaoff pseudo-op, V850:                V850 Opcodes.        (line  65)
+* search path for .include:              I.                   (line   6)
+* sect directive, MSP 430:               MSP430 Directives.   (line  18)
+* sect directive, TIC54X:                TIC54X-Directives.   (line 189)
+* section directive (COFF version):      Section.             (line  16)
+* section directive (ELF version):       Section.             (line  67)
+* section directive, V850:               V850 Directives.     (line   9)
+* section override prefixes, i386:       i386-Prefixes.       (line  23)
+* Section Stack <1>:                     SubSection.          (line   6)
+* Section Stack <2>:                     Section.             (line  62)
+* Section Stack <3>:                     PushSection.         (line   6)
+* Section Stack <4>:                     PopSection.          (line   6)
+* Section Stack:                         Previous.            (line   6)
+* section-relative addressing:           Secs Background.     (line  68)
+* sections:                              Sections.            (line   6)
+* sections in messages, internal:        As Sections.         (line   6)
+* sections, i386:                        i386-Syntax.         (line  44)
+* sections, named:                       Ld Sections.         (line   8)
+* sections, x86-64:                      i386-Syntax.         (line  44)
+* seg directive, SPARC:                  Sparc-Directives.    (line  44)
+* segm:                                  Z8000 Directives.    (line  10)
+* set directive:                         Set.                 (line   6)
+* set directive, TIC54X:                 TIC54X-Directives.   (line 192)
+* SH addressing modes:                   SH-Addressing.       (line   6)
+* SH floating point (IEEE):              SH Floating Point.   (line   6)
+* SH line comment character:             SH-Chars.            (line   6)
+* SH line separator:                     SH-Chars.            (line   8)
+* SH machine directives:                 SH Directives.       (line   6)
+* SH opcode summary:                     SH Opcodes.          (line   6)
+* SH options:                            SH Options.          (line   6)
+* SH registers:                          SH-Regs.             (line   6)
+* SH support:                            SH-Dependent.        (line   6)
+* SH64 ABI options:                      SH64 Options.        (line  29)
+* SH64 addressing modes:                 SH64-Addressing.     (line   6)
+* SH64 ISA options:                      SH64 Options.        (line   6)
+* SH64 line comment character:           SH64-Chars.          (line   6)
+* SH64 line separator:                   SH64-Chars.          (line   8)
+* SH64 machine directives:               SH64 Directives.     (line   9)
+* SH64 opcode summary:                   SH64 Opcodes.        (line   6)
+* SH64 options:                          SH64 Options.        (line   6)
+* SH64 registers:                        SH64-Regs.           (line   6)
+* SH64 support:                          SH64-Dependent.      (line   6)
+* shigh directive, M32R:                 M32R-Directives.     (line  26)
+* short directive:                       Short.               (line   6)
+* short directive, ARC:                  ARC Directives.      (line 171)
+* short directive, TIC54X:               TIC54X-Directives.   (line 111)
+* SIMD, i386:                            i386-SIMD.           (line   6)
+* SIMD, x86-64:                          i386-SIMD.           (line   6)
+* single character constant:             Chars.               (line   6)
+* single directive:                      Single.              (line   6)
+* single directive, i386:                i386-Float.          (line  14)
+* single directive, x86-64:              i386-Float.          (line  14)
+* single quote, Z80:                     Z80-Chars.           (line  13)
+* sixteen bit integers:                  hword.               (line   6)
+* sixteen byte integer:                  Octa.                (line   6)
+* size directive (COFF version):         Size.                (line  11)
+* size directive (ELF version):          Size.                (line  19)
+* size modifiers, D10V:                  D10V-Size.           (line   6)
+* size modifiers, D30V:                  D30V-Size.           (line   6)
+* size modifiers, M680x0:                M68K-Syntax.         (line   8)
+* size prefixes, i386:                   i386-Prefixes.       (line  27)
+* size suffixes, H8/300:                 H8/300 Opcodes.      (line 163)
+* sizes operands, i386:                  i386-Syntax.         (line  29)
+* sizes operands, x86-64:                i386-Syntax.         (line  29)
+* skip directive:                        Skip.                (line   6)
+* skip directive, M680x0:                M68K-Directives.     (line  19)
+* skip directive, SPARC:                 Sparc-Directives.    (line  48)
+* sleb128 directive:                     Sleb128.             (line   6)
+* small objects, MIPS ECOFF:             MIPS Object.         (line  11)
+* SOM symbol attributes:                 SOM Symbols.         (line   6)
+* source program:                        Input Files.         (line   6)
+* source, destination operands; i386:    i386-Syntax.         (line  22)
+* source, destination operands; x86-64:  i386-Syntax.         (line  22)
+* sp register:                           Xtensa Registers.    (line   6)
+* sp register, V850:                     V850-Regs.           (line  14)
+* space directive:                       Space.               (line   6)
+* space directive, TIC54X:               TIC54X-Directives.   (line 197)
+* space used, maximum for assembly:      statistics.          (line   6)
+* SPARC architectures:                   Sparc-Opts.          (line   6)
+* SPARC data alignment:                  Sparc-Aligned-Data.  (line   6)
+* SPARC floating point (IEEE):           Sparc-Float.         (line   6)
+* SPARC machine directives:              Sparc-Directives.    (line   6)
+* SPARC options:                         Sparc-Opts.          (line   6)
+* SPARC support:                         Sparc-Dependent.     (line   6)
+* special characters, ARC:               ARC-Chars.           (line   6)
+* special characters, M680x0:            M68K-Chars.          (line   6)
+* special purpose registers, MSP 430:    MSP430-Regs.         (line  11)
+* sslist directive, TIC54X:              TIC54X-Directives.   (line 204)
+* ssnolist directive, TIC54X:            TIC54X-Directives.   (line 204)
+* stabd directive:                       Stab.                (line  38)
+* stabn directive:                       Stab.                (line  48)
+* stabs directive:                       Stab.                (line  51)
+* stabX directives:                      Stab.                (line   6)
+* standard assembler sections:           Secs Background.     (line  27)
+* standard input, as input file:         Command Line.        (line  10)
+* statement separator character:         Statements.          (line   6)
+* statement separator, Alpha:            Alpha-Chars.         (line   8)
+* statement separator, ARM:              ARM-Chars.           (line  10)
+* statement separator, H8/300:           H8/300-Chars.        (line   8)
+* statement separator, IA-64:            IA-64-Chars.         (line   8)
+* statement separator, SH:               SH-Chars.            (line   8)
+* statement separator, SH64:             SH64-Chars.          (line   8)
+* statement separator, Z8000:            Z8000-Chars.         (line   8)
+* statements, structure of:              Statements.          (line   6)
+* statistics, about assembly:            statistics.          (line   6)
+* stopping the assembly:                 Abort.               (line   6)
+* string constants:                      Strings.             (line   6)
+* string directive:                      String.              (line   6)
+* string directive on HPPA:              HPPA Directives.     (line 137)
+* string directive, TIC54X:              TIC54X-Directives.   (line 209)
+* string literals:                       Ascii.               (line   6)
+* string, copying to object file:        String.              (line   6)
+* struct directive:                      Struct.              (line   6)
+* struct directive, TIC54X:              TIC54X-Directives.   (line 217)
+* structure debugging, COFF:             Tag.                 (line   6)
+* sub-instruction ordering, D10V:        D10V-Chars.          (line   6)
+* sub-instruction ordering, D30V:        D30V-Chars.          (line   6)
+* sub-instructions, D10V:                D10V-Subs.           (line   6)
+* sub-instructions, D30V:                D30V-Subs.           (line   6)
+* subexpressions:                        Arguments.           (line  24)
+* subsection directive:                  SubSection.          (line   6)
+* subsym builtins, TIC54X:               TIC54X-Macros.       (line  16)
+* subtitles for listings:                Sbttl.               (line   6)
+* subtraction, permitted arguments:      Infix Ops.           (line  49)
+* summary of options:                    Overview.            (line   6)
+* support:                               HPPA-Dependent.      (line   6)
+* supporting files, including:           Include.             (line   6)
+* suppressing warnings:                  W.                   (line  11)
+* sval:                                  Z8000 Directives.    (line  33)
+* symbol attributes:                     Symbol Attributes.   (line   6)
+* symbol attributes, a.out:              a.out Symbols.       (line   6)
+* symbol attributes, COFF:               COFF Symbols.        (line   6)
+* symbol attributes, SOM:                SOM Symbols.         (line   6)
+* symbol descriptor, COFF:               Desc.                (line   6)
+* symbol modifiers <1>:                  M68HC11-Modifiers.   (line  12)
+* symbol modifiers:                      M32C-Modifiers.      (line  11)
+* symbol names:                          Symbol Names.        (line   6)
+* symbol names, $ in <1>:                SH64-Chars.          (line  10)
+* symbol names, $ in <2>:                SH-Chars.            (line  10)
+* symbol names, $ in <3>:                D30V-Chars.          (line  63)
+* symbol names, $ in:                    D10V-Chars.          (line  46)
+* symbol names, local:                   Symbol Names.        (line  22)
+* symbol names, temporary:               Symbol Names.        (line  22)
+* symbol storage class (COFF):           Scl.                 (line   6)
+* symbol type:                           Symbol Type.         (line   6)
+* symbol type, COFF:                     Type.                (line  11)
+* symbol type, ELF:                      Type.                (line  22)
+* symbol value:                          Symbol Value.        (line   6)
+* symbol value, setting:                 Set.                 (line   6)
+* symbol values, assigning:              Setting Symbols.     (line   6)
+* symbol versioning:                     Symver.              (line   6)
+* symbol, common:                        Comm.                (line   6)
+* symbol, making visible to linker:      Global.              (line   6)
+* symbolic debuggers, information for:   Stab.                (line   6)
+* symbols:                               Symbols.             (line   6)
+* Symbols in position-independent code, CRIS: CRIS-Pic.       (line   6)
+* symbols with uppercase, VAX/VMS:       VAX-Opts.            (line  42)
+* symbols, assigning values to:          Equ.                 (line   6)
+* Symbols, built-in, CRIS:               CRIS-Symbols.        (line   6)
+* Symbols, CRIS, built-in:               CRIS-Symbols.        (line   6)
+* symbols, local common:                 Lcomm.               (line   6)
+* symver directive:                      Symver.              (line   6)
+* syntax compatibility, i386:            i386-Syntax.         (line   6)
+* syntax compatibility, x86-64:          i386-Syntax.         (line   6)
+* syntax, BFIN:                          BFIN Syntax.         (line   6)
+* syntax, D10V:                          D10V-Syntax.         (line   6)
+* syntax, D30V:                          D30V-Syntax.         (line   6)
+* syntax, M32C:                          M32C-Modifiers.      (line   6)
+* syntax, M680x0:                        M68K-Syntax.         (line   8)
+* syntax, M68HC11 <1>:                   M68HC11-Modifiers.   (line   6)
+* syntax, M68HC11:                       M68HC11-Syntax.      (line   6)
+* syntax, machine-independent:           Syntax.              (line   6)
+* syntax, Xtensa assembler:              Xtensa Syntax.       (line   6)
+* sysproc directive, i960:               Directives-i960.     (line  37)
+* tab (\t):                              Strings.             (line  27)
+* tab directive, TIC54X:                 TIC54X-Directives.   (line 248)
+* tag directive:                         Tag.                 (line   6)
+* tag directive, TIC54X:                 TIC54X-Directives.   (line 217)
+* tdaoff pseudo-op, V850:                V850 Opcodes.        (line  81)
+* temporary symbol names:                Symbol Names.        (line  22)
+* text and data sections, joining:       R.                   (line   6)
+* text directive:                        Text.                (line   6)
+* text section:                          Ld Sections.         (line   9)
+* tfloat directive, i386:                i386-Float.          (line  14)
+* tfloat directive, x86-64:              i386-Float.          (line  14)
+* thumb directive, ARM:                  ARM Directives.      (line  33)
+* Thumb support:                         ARM-Dependent.       (line   6)
+* thumb_func directive, ARM:             ARM Directives.      (line  43)
+* thumb_set directive, ARM:              ARM Directives.      (line  51)
+* TIC54X builtin math functions:         TIC54X-Builtins.     (line   6)
+* TIC54X machine directives:             TIC54X-Directives.   (line   6)
+* TIC54X memory-mapped registers:        TIC54X-MMRegs.       (line   6)
+* TIC54X options:                        TIC54X-Opts.         (line   6)
+* TIC54X subsym builtins:                TIC54X-Macros.       (line  16)
+* TIC54X support:                        TIC54X-Dependent.    (line   6)
+* TIC54X-specific macros:                TIC54X-Macros.       (line   6)
+* time, total for assembly:              statistics.          (line   6)
+* title directive:                       Title.               (line   6)
+* tp register, V850:                     V850-Regs.           (line  20)
+* transform directive:                   Transform Directive. (line   6)
+* trusted compiler:                      f.                   (line   6)
+* turning preprocessing on and off:      Preprocessing.       (line  27)
+* type directive (COFF version):         Type.                (line  11)
+* type directive (ELF version):          Type.                (line  22)
+* type of a symbol:                      Symbol Type.         (line   6)
+* ualong directive, SH:                  SH Directives.       (line   6)
+* uaword directive, SH:                  SH Directives.       (line   6)
+* ubyte directive, TIC54X:               TIC54X-Directives.   (line  36)
+* uchar directive, TIC54X:               TIC54X-Directives.   (line  36)
+* uhalf directive, TIC54X:               TIC54X-Directives.   (line 111)
+* uint directive, TIC54X:                TIC54X-Directives.   (line 111)
+* uleb128 directive:                     Uleb128.             (line   6)
+* ulong directive, TIC54X:               TIC54X-Directives.   (line 135)
+* undefined section:                     Ld Sections.         (line  36)
+* union directive, TIC54X:               TIC54X-Directives.   (line 251)
+* unreq directive, ARM:                  ARM Directives.      (line  18)
+* unsegm:                                Z8000 Directives.    (line  14)
+* usect directive, TIC54X:               TIC54X-Directives.   (line 263)
+* ushort directive, TIC54X:              TIC54X-Directives.   (line 111)
+* uword directive, TIC54X:               TIC54X-Directives.   (line 111)
+* V850 command line options:             V850 Options.        (line   9)
+* V850 floating point (IEEE):            V850 Floating Point. (line   6)
+* V850 line comment character:           V850-Chars.          (line   6)
+* V850 machine directives:               V850 Directives.     (line   6)
+* V850 opcodes:                          V850 Opcodes.        (line   6)
+* V850 options (none):                   V850 Options.        (line   6)
+* V850 register names:                   V850-Regs.           (line   6)
+* V850 support:                          V850-Dependent.      (line   6)
+* val directive:                         Val.                 (line   6)
+* value attribute, COFF:                 Val.                 (line   6)
+* value of a symbol:                     Symbol Value.        (line   6)
+* var directive, TIC54X:                 TIC54X-Directives.   (line 273)
+* VAX bitfields not supported:           VAX-no.              (line   6)
+* VAX branch improvement:                VAX-branch.          (line   6)
+* VAX command-line options ignored:      VAX-Opts.            (line   6)
+* VAX displacement sizing character:     VAX-operands.        (line  12)
+* VAX floating point:                    VAX-float.           (line   6)
+* VAX immediate character:               VAX-operands.        (line   6)
+* VAX indirect character:                VAX-operands.        (line   9)
+* VAX machine directives:                VAX-directives.      (line   6)
+* VAX opcode mnemonics:                  VAX-opcodes.         (line   6)
+* VAX operand notation:                  VAX-operands.        (line   6)
+* VAX register names:                    VAX-operands.        (line  17)
+* VAX support:                           Vax-Dependent.       (line   6)
+* Vax-11 C compatibility:                VAX-Opts.            (line  42)
+* VAX/VMS options:                       VAX-Opts.            (line  42)
+* version directive:                     Version.             (line   6)
+* version directive, TIC54X:             TIC54X-Directives.   (line 277)
+* version of assembler:                  v.                   (line   6)
+* versions of symbols:                   Symver.              (line   6)
+* visibility <1>:                        Protected.           (line   6)
+* visibility <2>:                        Internal.            (line   6)
+* visibility:                            Hidden.              (line   6)
+* VMS (VAX) options:                     VAX-Opts.            (line  42)
+* vtable_entry directive:                VTableEntry.         (line   6)
+* vtable_inherit directive:              VTableInherit.       (line   6)
+* warning directive:                     Warning.             (line   6)
+* warning for altered difference tables: K.                   (line   6)
+* warning messages:                      Errors.              (line   6)
+* warnings, causing error:               W.                   (line  16)
+* warnings, M32R:                        M32R-Warnings.       (line   6)
+* warnings, suppressing:                 W.                   (line  11)
+* warnings, switching on:                W.                   (line  19)
+* weak directive:                        Weak.                (line   6)
+* weakref directive:                     Weakref.             (line   6)
+* whitespace:                            Whitespace.          (line   6)
+* whitespace, removed by preprocessor:   Preprocessing.       (line   7)
+* wide floating point directives, VAX:   VAX-directives.      (line  10)
+* width directive, TIC54X:               TIC54X-Directives.   (line 127)
+* Width of continuation lines of disassembly output: listing. (line  20)
+* Width of first line disassembly output: listing.            (line  15)
+* Width of source line output:           listing.             (line  27)
+* wmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
+* word directive:                        Word.                (line   6)
+* word directive, ARC:                   ARC Directives.      (line 174)
+* word directive, H8/300:                H8/300 Directives.   (line   6)
+* word directive, i386:                  i386-Float.          (line  21)
+* word directive, SPARC:                 Sparc-Directives.    (line  51)
+* word directive, TIC54X:                TIC54X-Directives.   (line 111)
+* word directive, x86-64:                i386-Float.          (line  21)
+* writing patterns in memory:            Fill.                (line   6)
+* wval:                                  Z8000 Directives.    (line  24)
+* x86-64 arch directive:                 i386-Arch.           (line   6)
+* x86-64 att_syntax pseudo op:           i386-Syntax.         (line   6)
+* x86-64 conversion instructions:        i386-Mnemonics.      (line  32)
+* x86-64 floating point:                 i386-Float.          (line   6)
+* x86-64 immediate operands:             i386-Syntax.         (line  15)
+* x86-64 instruction naming:             i386-Mnemonics.      (line   6)
+* x86-64 intel_syntax pseudo op:         i386-Syntax.         (line   6)
+* x86-64 jump optimization:              i386-Jumps.          (line   6)
+* x86-64 jump, call, return:             i386-Syntax.         (line  38)
+* x86-64 jump/call operands:             i386-Syntax.         (line  15)
+* x86-64 memory references:              i386-Memory.         (line   6)
+* x86-64 options:                        i386-Options.        (line   6)
+* x86-64 register operands:              i386-Syntax.         (line  15)
+* x86-64 registers:                      i386-Regs.           (line   6)
+* x86-64 sections:                       i386-Syntax.         (line  44)
+* x86-64 size suffixes:                  i386-Syntax.         (line  29)
+* x86-64 source, destination operands:   i386-Syntax.         (line  22)
+* x86-64 support:                        i386-Dependent.      (line   6)
+* x86-64 syntax compatibility:           i386-Syntax.         (line   6)
+* xfloat directive, TIC54X:              TIC54X-Directives.   (line  64)
+* xlong directive, TIC54X:               TIC54X-Directives.   (line 135)
+* Xtensa architecture:                   Xtensa-Dependent.    (line   6)
+* Xtensa assembler syntax:               Xtensa Syntax.       (line   6)
+* Xtensa directives:                     Xtensa Directives.   (line   6)
+* Xtensa opcode names:                   Xtensa Opcodes.      (line   6)
+* Xtensa register names:                 Xtensa Registers.    (line   6)
+* xword directive, SPARC:                Sparc-Directives.    (line  55)
+* Z80 $:                                 Z80-Chars.           (line   8)
+* Z80 ':                                 Z80-Chars.           (line  13)
+* Z80 floating point:                    Z80 Floating Point.  (line   6)
+* Z80 line comment character:            Z80-Chars.           (line   6)
+* Z80 options:                           Z80 Options.         (line   6)
+* Z80 registers:                         Z80-Regs.            (line   6)
+* Z80 support:                           Z80-Dependent.       (line   6)
+* Z80 Syntax:                            Z80 Options.         (line  47)
+* Z80, \:                                Z80-Chars.           (line  11)
+* Z80, case sensitivity:                 Z80-Case.            (line   6)
+* Z80-only directives:                   Z80 Directives.      (line   9)
+* Z800 addressing modes:                 Z8000-Addressing.    (line   6)
+* Z8000 directives:                      Z8000 Directives.    (line   6)
+* Z8000 line comment character:          Z8000-Chars.         (line   6)
+* Z8000 line separator:                  Z8000-Chars.         (line   8)
+* Z8000 opcode summary:                  Z8000 Opcodes.       (line   6)
+* Z8000 options:                         Z8000 Options.       (line   6)
+* Z8000 registers:                       Z8000-Regs.          (line   6)
+* Z8000 support:                         Z8000-Dependent.     (line   6)
+* zdaoff pseudo-op, V850:                V850 Opcodes.        (line  99)
+* zero register, V850:                   V850-Regs.           (line   7)
+* zero-terminated strings:               Asciz.               (line   6)
+
+
+
+Tag Table:
+Node: Top778
+Node: Overview1695
+Node: Manual28187
+Node: GNU Assembler29131
+Node: Object Formats30302
+Node: Command Line30754
+Node: Input Files31841
+Node: Object33822
+Node: Errors34718
+Node: Invoking35913
+Node: a37862
+Node: alternate39634
+Node: D39806
+Node: f40039
+Node: I40547
+Node: K41091
+Node: L41394
+Node: listing42231
+Node: M43823
+Node: MD48224
+Node: o48650
+Node: R49105
+Node: statistics50135
+Node: traditional-format50542
+Node: v51015
+Node: W51290
+Node: Z52197
+Node: Syntax52719
+Node: Preprocessing53310
+Node: Whitespace54873
+Node: Comments55269
+Node: Symbol Intro57422
+Node: Statements58112
+Node: Constants60028
+Node: Characters60659
+Node: Strings61161
+Node: Chars63327
+Node: Numbers64081
+Node: Integers64621
+Node: Bignums65277
+Node: Flonums65633
+Node: Sections67380
+Node: Secs Background67758
+Node: Ld Sections72797
+Node: As Sections75181
+Node: Sub-Sections76091
+Node: bss79238
+Node: Symbols80188
+Node: Labels80836
+Node: Setting Symbols81567
+Node: Symbol Names82063
+Node: Dot86428
+Node: Symbol Attributes86875
+Node: Symbol Value87612
+Node: Symbol Type88657
+Node: a.out Symbols89045
+Node: Symbol Desc89307
+Node: Symbol Other89602
+Node: COFF Symbols89771
+Node: SOM Symbols90444
+Node: Expressions90886
+Node: Empty Exprs91635
+Node: Integer Exprs91982
+Node: Arguments92377
+Node: Operators93483
+Node: Prefix Ops93818
+Node: Infix Ops94146
+Node: Pseudo Ops96536
+Node: Abort101731
+Node: ABORT102136
+Node: Align102323
+Node: Ascii104605
+Node: Asciz104914
+Node: Balign105159
+Node: Byte107022
+Node: Comm107260
+Node: CFI directives108634
+Node: LNS directives110986
+Node: Data113063
+Node: Def113390
+Node: Desc113622
+Node: Dim114122
+Node: Double114379
+Node: Eject114717
+Node: Else114892
+Node: Elseif115188
+Node: End115478
+Node: Endef115693
+Node: Endfunc115870
+Node: Endif116045
+Node: Equ116306
+Node: Equiv116815
+Node: Eqv117371
+Node: Err117735
+Node: Error118046
+Node: Exitm118491
+Node: Extern118660
+Node: Fail118921
+Node: File119366
+Node: Fill119843
+Node: Float120807
+Node: Func121149
+Node: Global121739
+Node: Hidden122489
+Node: hword123068
+Node: Ident123396
+Node: If123970
+Node: Incbin127029
+Node: Include127724
+Node: Int128275
+Node: Internal128656
+Node: Irp129304
+Node: Irpc130201
+Node: Lcomm131118
+Node: Lflags131866
+Node: Line132060
+Node: Linkonce132979
+Node: Ln134208
+Node: MRI134369
+Node: List134707
+Node: Long135315
+Node: Macro135501
+Node: Altmacro140064
+Node: Noaltmacro141394
+Node: Nolist141562
+Node: Octa141992
+Node: Org142326
+Node: P2align143609
+Node: Previous145537
+Node: PopSection146231
+Node: Print146739
+Node: Protected146968
+Node: Psize147615
+Node: Purgem148299
+Node: PushSection148520
+Node: Quad149077
+Node: Rept149532
+Node: Sbttl149945
+Node: Scl150310
+Node: Section150651
+Node: Set155791
+Node: Short156428
+Node: Single156748
+Node: Size157093
+Node: Sleb128157765
+Node: Skip158087
+Node: Space158409
+Node: Stab159048
+Node: String161050
+Node: Struct161476
+Node: SubSection162199
+Node: Symver162760
+Node: Tag165151
+Node: Text165531
+Node: Title165850
+Node: Type166229
+Node: Uleb128167306
+Node: Val167630
+Node: Version167880
+Node: VTableEntry168155
+Node: VTableInherit168445
+Node: Warning168891
+Node: Weak169125
+Node: Weakref169794
+Node: Word170759
+Node: Deprecated172605
+Node: Machine Dependencies172840
+Node: Alpha-Dependent175604
+Node: Alpha Notes176018
+Node: Alpha Options176299
+Node: Alpha Syntax178497
+Node: Alpha-Chars178966
+Node: Alpha-Regs179197
+Node: Alpha-Relocs179584
+Node: Alpha Floating Point185842
+Node: Alpha Directives186064
+Node: Alpha Opcodes191587
+Node: ARC-Dependent191882
+Node: ARC Options192265
+Node: ARC Syntax193334
+Node: ARC-Chars193566
+Node: ARC-Regs193698
+Node: ARC Floating Point193822
+Node: ARC Directives194133
+Node: ARC Opcodes200104
+Node: ARM-Dependent200330
+Node: ARM Options200757
+Node: ARM Syntax206551
+Node: ARM-Chars206783
+Node: ARM-Regs207307
+Node: ARM Floating Point207492
+Node: ARM Directives207691
+Node: ARM Opcodes214055
+Node: ARM Mapping Symbols216143
+Node: BFIN-Dependent216922
+Node: BFIN Syntax217176
+Node: BFIN Directives222873
+Node: CRIS-Dependent223280
+Node: CRIS-Opts223626
+Ref: march-option225244
+Node: CRIS-Expand227061
+Node: CRIS-Symbols228244
+Node: CRIS-Syntax229413
+Node: CRIS-Chars229749
+Node: CRIS-Pic230300
+Ref: crispic230496
+Node: CRIS-Regs234036
+Node: CRIS-Pseudos234453
+Ref: crisnous235229
+Node: D10V-Dependent236511
+Node: D10V-Opts236862
+Node: D10V-Syntax237825
+Node: D10V-Size238354
+Node: D10V-Subs239327
+Node: D10V-Chars240362
+Node: D10V-Regs241966
+Node: D10V-Addressing243011
+Node: D10V-Word243697
+Node: D10V-Float244212
+Node: D10V-Opcodes244523
+Node: D30V-Dependent244916
+Node: D30V-Opts245269
+Node: D30V-Syntax245944
+Node: D30V-Size246476
+Node: D30V-Subs247447
+Node: D30V-Chars248482
+Node: D30V-Guarded250780
+Node: D30V-Regs251460
+Node: D30V-Addressing252599
+Node: D30V-Float253267
+Node: D30V-Opcodes253578
+Node: H8/300-Dependent253971
+Node: H8/300 Options254381
+Node: H8/300 Syntax254590
+Node: H8/300-Chars254889
+Node: H8/300-Regs255186
+Node: H8/300-Addressing256103
+Node: H8/300 Floating Point257142
+Node: H8/300 Directives257467
+Node: H8/300 Opcodes258593
+Node: HPPA-Dependent266913
+Node: HPPA Notes267346
+Node: HPPA Options268102
+Node: HPPA Syntax268295
+Node: HPPA Floating Point269563
+Node: HPPA Directives269767
+Node: HPPA Opcodes278451
+Node: ESA/390-Dependent278708
+Node: ESA/390 Notes279168
+Node: ESA/390 Options279959
+Node: ESA/390 Syntax280169
+Node: ESA/390 Floating Point282342
+Node: ESA/390 Directives282621
+Node: ESA/390 Opcodes285910
+Node: i386-Dependent286172
+Node: i386-Options287240
+Node: i386-Syntax288430
+Node: i386-Mnemonics290844
+Node: i386-Regs293309
+Node: i386-Prefixes295354
+Node: i386-Memory298114
+Node: i386-Jumps301051
+Node: i386-Float302172
+Node: i386-SIMD304001
+Node: i386-16bit305110
+Node: i386-Bugs307148
+Node: i386-Arch307902
+Node: i386-Notes310083
+Node: i860-Dependent310941
+Node: Notes-i860311337
+Node: Options-i860312242
+Node: Directives-i860313605
+Node: Opcodes for i860314674
+Node: i960-Dependent316841
+Node: Options-i960317244
+Node: Floating Point-i960321128
+Node: Directives-i960321396
+Node: Opcodes for i960323430
+Node: callj-i960324047
+Node: Compare-and-branch-i960324536
+Node: IA-64-Dependent326440
+Node: IA-64 Options326741
+Node: IA-64 Syntax329901
+Node: IA-64-Chars330264
+Node: IA-64-Regs330494
+Node: IA-64-Bits331420
+Node: IA-64 Opcodes331929
+Node: IP2K-Dependent332201
+Node: IP2K-Opts332429
+Node: M32C-Dependent332909
+Node: M32C-Opts333433
+Node: M32C-Modifiers333717
+Node: M32R-Dependent335504
+Node: M32R-Opts335825
+Node: M32R-Directives339991
+Node: M32R-Warnings343966
+Node: M68K-Dependent346972
+Node: M68K-Opts347439
+Node: M68K-Syntax354818
+Node: M68K-Moto-Syntax356657
+Node: M68K-Float359246
+Node: M68K-Directives359766
+Node: M68K-opcodes361092
+Node: M68K-Branch361318
+Node: M68K-Chars365516
+Node: M68HC11-Dependent365929
+Node: M68HC11-Opts366460
+Node: M68HC11-Syntax370276
+Node: M68HC11-Modifiers372490
+Node: M68HC11-Directives374318
+Node: M68HC11-Float375694
+Node: M68HC11-opcodes376222
+Node: M68HC11-Branch376404
+Node: MIPS-Dependent378851
+Node: MIPS Opts379941
+Node: MIPS Object387268
+Node: MIPS Stabs388834
+Node: MIPS symbol sizes389556
+Node: MIPS ISA391225
+Node: MIPS autoextend392374
+Node: MIPS insn393104
+Node: MIPS option stack393601
+Node: MIPS ASE instruction generation overrides394375
+Node: MMIX-Dependent395592
+Node: MMIX-Opts395972
+Node: MMIX-Expand399576
+Node: MMIX-Syntax400891
+Ref: mmixsite401248
+Node: MMIX-Chars402089
+Node: MMIX-Symbols402743
+Node: MMIX-Regs404811
+Node: MMIX-Pseudos405836
+Ref: MMIX-loc405977
+Ref: MMIX-local407057
+Ref: MMIX-is407589
+Ref: MMIX-greg407860
+Ref: GREG-base408779
+Ref: MMIX-byte410096
+Ref: MMIX-constants410567
+Ref: MMIX-prefix411213
+Ref: MMIX-spec411587
+Node: MMIX-mmixal411921
+Node: MSP430-Dependent415418
+Node: MSP430 Options415884
+Node: MSP430 Syntax416170
+Node: MSP430-Macros416486
+Node: MSP430-Chars417217
+Node: MSP430-Regs417530
+Node: MSP430-Ext418090
+Node: MSP430 Floating Point419911
+Node: MSP430 Directives420135
+Node: MSP430 Opcodes420926
+Node: MSP430 Profiling Capability421321
+Node: PDP-11-Dependent423650
+Node: PDP-11-Options424039
+Node: PDP-11-Pseudos429110
+Node: PDP-11-Syntax429455
+Node: PDP-11-Mnemonics430206
+Node: PDP-11-Synthetic430508
+Node: PJ-Dependent430726
+Node: PJ Options430951
+Node: PPC-Dependent431228
+Node: PowerPC-Opts431515
+Node: PowerPC-Pseudo433590
+Node: SH-Dependent434189
+Node: SH Options434601
+Node: SH Syntax435529
+Node: SH-Chars435802
+Node: SH-Regs436096
+Node: SH-Addressing436710
+Node: SH Floating Point437619
+Node: SH Directives438713
+Node: SH Opcodes439083
+Node: SH64-Dependent443405
+Node: SH64 Options443768
+Node: SH64 Syntax445485
+Node: SH64-Chars445768
+Node: SH64-Regs446068
+Node: SH64-Addressing447164
+Node: SH64 Directives448347
+Node: SH64 Opcodes449457
+Node: Sparc-Dependent450173
+Node: Sparc-Opts450558
+Node: Sparc-Aligned-Data452815
+Node: Sparc-Float453670
+Node: Sparc-Directives453871
+Node: TIC54X-Dependent455831
+Node: TIC54X-Opts456557
+Node: TIC54X-Block457600
+Node: TIC54X-Env457960
+Node: TIC54X-Constants458308
+Node: TIC54X-Subsyms458710
+Node: TIC54X-Locals460619
+Node: TIC54X-Builtins461363
+Node: TIC54X-Ext463834
+Node: TIC54X-Directives464405
+Node: TIC54X-Macros475307
+Node: TIC54X-MMRegs477417
+Node: Z80-Dependent477633
+Node: Z80 Options478021
+Node: Z80 Syntax479444
+Node: Z80-Chars480116
+Node: Z80-Regs480649
+Node: Z80-Case481001
+Node: Z80 Floating Point481446
+Node: Z80 Directives481640
+Node: Z80 Opcodes483265
+Node: Z8000-Dependent484607
+Node: Z8000 Options485568
+Node: Z8000 Syntax485785
+Node: Z8000-Chars486075
+Node: Z8000-Regs486308
+Node: Z8000-Addressing487098
+Node: Z8000 Directives488215
+Node: Z8000 Opcodes489824
+Node: Vax-Dependent499766
+Node: VAX-Opts500283
+Node: VAX-float504018
+Node: VAX-directives504650
+Node: VAX-opcodes505511
+Node: VAX-branch505900
+Node: VAX-operands508407
+Node: VAX-no509170
+Node: V850-Dependent509407
+Node: V850 Options509805
+Node: V850 Syntax512194
+Node: V850-Chars512434
+Node: V850-Regs512599
+Node: V850 Floating Point514167
+Node: V850 Directives514373
+Node: V850 Opcodes515516
+Node: Xtensa-Dependent521408
+Node: Xtensa Options522137
+Node: Xtensa Syntax524908
+Node: Xtensa Opcodes526797
+Node: Xtensa Registers528591
+Node: Xtensa Optimizations529224
+Node: Density Instructions529676
+Node: Xtensa Automatic Alignment530778
+Node: Xtensa Relaxation533524
+Node: Xtensa Branch Relaxation534432
+Node: Xtensa Call Relaxation535804
+Node: Xtensa Immediate Relaxation537590
+Node: Xtensa Directives540164
+Node: Schedule Directive541872
+Node: Longcalls Directive542212
+Node: Transform Directive542756
+Node: Literal Directive543498
+Node: Literal Position Directive545283
+Node: Literal Prefix Directive546982
+Node: Absolute Literals Directive549145
+Node: Reporting Bugs550452
+Node: Bug Criteria551176
+Node: Bug Reporting551941
+Node: Acknowledgements558574
+Ref: Acknowledgements-Footnote-1563472
+Node: GNU Free Documentation License563498
+Node: Index583225
+
+End Tag Table

Modified: branches/binutils/package/gas/doc/as.texinfo
===================================================================
--- branches/binutils/package/gas/doc/as.texinfo	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/as.texinfo	2006-12-31 16:27:59 UTC (rev 19)
@@ -451,7 +451,7 @@
 @c man begin OPTIONS
 
 @table @gcctabopt
- at include @value{top_srcdir}/../libiberty/at-file.texi
+ at include at-file.texi
 
 @item -a[cdhlmns]
 Turn on listings, in any of a variety of ways:

Added: branches/binutils/package/gas/doc/asconfig.texi
===================================================================
--- branches/binutils/package/gas/doc/asconfig.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/asconfig.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,90 @@
+ at c Copyright 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002,
+ at c 2003, 2005
+ at c Free Software Foundation, Inc.
+ at c This file is part of the documentation for the GAS manual
+
+ at c Configuration settings for all-inclusive version of manual
+
+ at c switches:------------------------------------------------------------
+ at c Properties of the manual
+ at c ========================
+ at c Discuss all architectures?
+ at set ALL-ARCH
+ at c A generic form of manual (not tailored to specific target)?
+ at set GENERIC
+ at c Include text on assembler internals?
+ at clear INTERNALS
+ at c Many object formats supported in this config?
+ at set MULTI-OBJ
+
+ at c Object formats of interest
+ at c ==========================
+ at set AOUT
+ at set COFF
+ at set ELF
+ at set SOM
+
+ at c CPUs of interest
+ at c ================
+ at set ALPHA
+ at set ARC
+ at set ARM
+ at set BFIN
+ at set CRIS
+ at set D10V
+ at set D30V
+ at set H8/300
+ at set HPPA
+ at set I370
+ at set I80386
+ at set I860
+ at set I960
+ at set IA64
+ at set IP2K
+ at set M32C
+ at set M32R
+ at set xc16x
+ at set M68HC11
+ at set M680X0
+ at set MCORE
+ at set MIPS
+ at set MMIX
+ at set MS1
+ at set MSP430
+ at set PDP11
+ at set PJ
+ at set PPC
+ at set SH
+ at set SPARC
+ at set TIC54X
+ at set V850
+ at set VAX
+ at set XTENSA
+ at set Z80
+ at set Z8000
+
+ at c Does this version of the assembler use the difference-table kluge?
+ at set DIFF-TBL-KLUGE
+
+ at c Do all machines described use IEEE floating point?
+ at clear IEEEFLOAT
+
+ at c Is a word 32 bits, or 16?
+ at clear W32
+ at set W16
+
+ at c Do symbols have different characters than usual?
+ at clear SPECIAL-SYMS
+
+ at c strings:------------------------------------------------------------
+ at c Name of the assembler:
+ at set AS as
+ at c Name of C compiler:
+ at set GCC gcc
+ at c Name of linker:
+ at set LD ld
+ at c Text for target machine (best not used in generic case; but just in case...)
+ at set TARGET machine specific
+ at c Name of object format NOT SET in generic version
+ at clear OBJ-NAME
+ at set top_srcdir ../.././gas

Modified: branches/binutils/package/gas/doc/c-arc.texi
===================================================================
--- branches/binutils/package/gas/doc/c-arc.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/c-arc.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -49,7 +49,7 @@
 Jump-and-link (jl) instruction.  No requirement of an instruction between
 setting flags and conditional jump.  For example:
 
- at smallexample @ta
+ at smallexample
   mov.f r0,r1
   beq   foo
 @end smallexample

Added: branches/binutils/package/gas/doc/gasver.texi
===================================================================
--- branches/binutils/package/gas/doc/gasver.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/doc/gasver.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1 @@
+ at set VERSION 2.17

Modified: branches/binutils/package/gas/dwarf2dbg.c
===================================================================
--- branches/binutils/package/gas/dwarf2dbg.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/dwarf2dbg.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -209,21 +209,21 @@
   static subsegT last_subseg;
   static struct line_subseg *last_line_subseg;
 
-  struct line_seg *s;
+  struct line_seg **ps, *s;
   struct line_subseg **pss, *ss;
 
   if (seg == last_seg && subseg == last_subseg)
     return last_line_subseg;
 
-  for (s = all_segs; s; s = s->next)
+  for (ps = &all_segs; (s = *ps) != NULL; ps = &s->next)
     if (s->seg == seg)
       goto found_seg;
 
   s = (struct line_seg *) xmalloc (sizeof (*s));
-  s->next = all_segs;
+  s->next = NULL;
   s->seg = seg;
   s->head = NULL;
-  all_segs = s;
+  *ps = s;
 
  found_seg:
   for (pss = &s->head; (ss = *pss) != NULL ; pss = &ss->next)

Added: branches/binutils/package/gas/itbl-lex.c
===================================================================
--- branches/binutils/package/gas/itbl-lex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/itbl-lex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1713 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/gas/Attic/itbl-lex.c,v 1.1.16.1 2006/04/16 18:36:43 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 15
+#define YY_END_OF_BUFFER 16
+static yyconst short int yy_accept[60] =
+    {   0,
+        0,    0,   16,   14,   13,   12,   11,    8,    8,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,    8,    0,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,    7,    9,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+        5,    1,    2,    3,   10,    6,   10,    4,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    4,    1,    1,    5,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    6,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    1,    8,    1,
+        1,    1,    1,    1,    9,   10,   11,   12,   13,   10,
+       14,   15,   16,   15,   15,   15,   17,   18,   15,   15,
+       15,   19,   20,   15,   15,   15,   15,   15,   15,   15,
+        1,    1,    1,    1,   15,    1,   21,   10,   22,   23,
+
+       24,   10,   25,   15,   26,   15,   15,   15,   27,   28,
+       15,   29,   15,   30,   31,   15,   15,   15,   15,   32,
+       15,   15,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[33] =
+    {   0,
+        1,    1,    1,    1,    1,    2,    2,    1,    2,    2,
+        2,    2,    2,    3,    3,    3,    3,    3,    3,    3,
+        2,    2,    2,    2,    3,    3,    3,    3,    3,    3,
+        3,    3
+    } ;
+
+static yyconst short int yy_base[62] =
+    {   0,
+        0,    0,   83,   84,   84,   84,   84,   27,   29,   70,
+        0,   62,   61,   60,   20,   55,   47,   46,   45,   12,
+       35,   37,    0,    0,   62,   60,   59,   58,   53,   49,
+       45,   43,   42,   41,   37,   32,    0,    0,   43,   44,
+       43,   42,   42,   36,   23,   27,   26,   25,   25,   20,
+        0,    0,    0,    0,   35,    0,   23,    0,   84,   58,
+       43
+    } ;
+
+static yyconst short int yy_def[62] =
+    {   0,
+       59,    1,   59,   59,   59,   59,   59,   59,   59,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   59,   61,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   61,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,    0,   59,
+       59
+    } ;
+
+static yyconst short int yy_nxt[117] =
+    {   0,
+        4,    5,    6,    5,    7,    8,    9,    7,   10,   11,
+       12,   13,   11,   14,   11,   15,   11,   11,   11,   11,
+       16,   17,   18,   11,   19,   20,   11,   11,   21,   11,
+       11,   11,   22,   22,   22,   22,   29,   30,   35,   36,
+       37,   37,   22,   22,   38,   58,   58,   56,   57,   54,
+       53,   52,   51,   56,   55,   54,   53,   52,   23,   24,
+       24,   51,   50,   49,   48,   47,   46,   45,   44,   43,
+       42,   41,   40,   39,   34,   33,   32,   31,   28,   27,
+       26,   25,   59,    3,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+
+       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   59
+    } ;
+
+static yyconst short int yy_chk[117] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    8,    8,    9,    9,   15,   15,   20,   20,
+       21,   21,   22,   22,   61,   57,   55,   50,   49,   48,
+       47,   46,   45,   44,   43,   42,   41,   40,    8,   60,
+       60,   39,   36,   35,   34,   33,   32,   31,   30,   29,
+       28,   27,   26,   25,   19,   18,   17,   16,   14,   13,
+       12,   10,    3,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+
+       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   59
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "itbl-lex.l"
+#define INITIAL 0
+/* itbl-lex.l
+   Copyright 1997, 1998, 2001, 2002, 2005 Free Software Foundation, Inc.
+
+   This file is part of GAS, the GNU Assembler.
+
+   GAS 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.
+
+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+#line 22 "itbl-lex.l"
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "itbl-lex.h"
+#include <itbl-parse.h>
+
+#ifdef DEBUG
+#define DBG(x) printf x
+#define MDBG(x) printf x
+#else
+#define DBG(x)
+#define MDBG(x)
+#endif
+
+int insntbl_line = 1;
+#line 446 "itbl-lex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 45 "itbl-lex.l"
+
+
+#line 611 "itbl-lex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 60 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 84 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 47 "itbl-lex.l"
+{
+    return CREG;
+  }
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 50 "itbl-lex.l"
+{
+    return DREG;
+  }
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 53 "itbl-lex.l"
+{
+    return GREG;
+  }
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 56 "itbl-lex.l"
+{
+    return IMMED;
+  }
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 59 "itbl-lex.l"
+{
+    return ADDR;
+  }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 62 "itbl-lex.l"
+{
+    return INSN;
+  }
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 65 "itbl-lex.l"
+{
+    yytext[yyleng] = 0;
+    yylval.processor = strtoul (yytext+1, 0, 0);
+    return PNUM;
+  }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 70 "itbl-lex.l"
+{
+    yytext[yyleng] = 0;
+    yylval.num = strtoul (yytext, 0, 0);
+    return NUM;
+  }
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 75 "itbl-lex.l"
+{
+    yytext[yyleng] = 0;
+    yylval.num = strtoul (yytext, 0, 0);
+    return NUM;
+  }
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 80 "itbl-lex.l"
+{
+    yytext[yyleng] = 0;
+    yylval.str = strdup (yytext);
+    return ID;
+  }
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 85 "itbl-lex.l"
+{
+    int c;
+    while ((c = input ()) !=  EOF) 
+      {
+        if (c ==  '\n') 
+    	{
+    		unput (c);
+    		break;
+    	}
+      }
+  }
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 96 "itbl-lex.l"
+{ 
+    insntbl_line++; 
+    MDBG (("in lex, NL = %d (x%x)\n", NL, NL));
+    return NL; 
+  }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 101 "itbl-lex.l"
+{ 
+  }
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 103 "itbl-lex.l"
+{
+    MDBG (("char = %x, %d\n", yytext[0], yytext[0]));
+    return yytext[0];
+  }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 107 "itbl-lex.l"
+ECHO;
+	YY_BREAK
+#line 815 "itbl-lex.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 60 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 60 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 59);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 107 "itbl-lex.l"
+
+
+#ifndef yywrap
+int 
+yywrap () 
+  { 
+    return 1; 
+  }
+#endif

Added: branches/binutils/package/gas/itbl-parse.c
===================================================================
--- branches/binutils/package/gas/itbl-parse.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/itbl-parse.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1842 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     DREG = 258,
+     CREG = 259,
+     GREG = 260,
+     IMMED = 261,
+     ADDR = 262,
+     INSN = 263,
+     NUM = 264,
+     ID = 265,
+     NL = 266,
+     PNUM = 267
+   };
+#endif
+/* Tokens.  */
+#define DREG 258
+#define CREG 259
+#define GREG 260
+#define IMMED 261
+#define ADDR 262
+#define INSN 263
+#define NUM 264
+#define ID 265
+#define NL 266
+#define PNUM 267
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 21 "itbl-parse.y"
+
+
+/* 
+
+Yacc grammar for instruction table entries.
+
+=======================================================================
+Original Instruction table specification document:
+
+	    MIPS Coprocessor Table Specification
+	    ====================================
+
+This document describes the format of the MIPS coprocessor table.  The
+table specifies a list of valid functions, data registers and control
+registers that can be used in coprocessor instructions.  This list,
+together with the coprocessor instruction classes listed below,
+specifies the complete list of coprocessor instructions that will
+be recognized and assembled by the GNU assembler.  In effect,
+this makes the GNU assembler table-driven, where the table is
+specified by the programmer.
+
+The table is an ordinary text file that the GNU assembler reads when
+it starts.  Using the information in the table, the assembler
+generates an internal list of valid coprocessor registers and
+functions.  The assembler uses this internal list in addition to the
+standard MIPS registers and instructions which are built-in to the 
+assembler during code generation.
+
+To specify the coprocessor table when invoking the GNU assembler, use
+the command line option "--itbl file", where file is the
+complete name of the table, including path and extension.
+
+Examples:
+
+	    gas -t cop.tbl test.s -o test.o
+	    gas -t /usr/local/lib/cop.tbl test.s -o test.o
+	    gas --itbl d:\gnu\data\cop.tbl test.s -o test.o
+
+Only one table may be supplied during a single invocation of
+the assembler.
+
+
+Instruction classes
+===================
+
+Below is a list of the valid coprocessor instruction classes for
+any given coprocessor "z".  These instructions are already recognized
+by the assembler, and are listed here only for reference.
+
+Class   format	    	    	      instructions
+-------------------------------------------------
+Class1:
+	op base rt offset
+	    	    	    	    	    	    	    LWCz rt,offset (base)
+	    	    	    	    	    	    	    SWCz rt,offset (base)
+Class2:
+	COPz sub rt rd 0
+	    	    	    	    	    	    	    MTCz rt,rd
+	    	    	    	    	    	    	    MFCz rt,rd
+	    	    	    	    	    	    	    CTCz rt,rd
+	    	    	    	    	    	    	    CFCz rt,rd
+Class3:
+	COPz CO cofun
+	    	    	    	    	    	    	    COPz cofun
+Class4:
+	COPz BC br offset
+	    	    	    	    	    	    	    BCzT offset
+	    	    	    	    	    	    	    BCzF offset
+Class5:
+	COPz sub rt rd 0
+	    	    	    	    	    	    	    DMFCz rt,rd
+	    	    	    	    	    	    	    DMTCz rt,rd
+Class6:
+	op base rt offset
+	    	    	    	    	    	    	    LDCz rt,offset (base)
+	    	    	    	    	    	    	    SDCz rt,offset (base)
+Class7:
+	COPz BC br offset
+	    	    	    	    	    	    	    BCzTL offset
+	    	    	    	    	    	    	    BCzFL offset
+
+The coprocessor table defines coprocessor-specific registers that can
+be used with all of the above classes of instructions, where
+appropriate.  It also defines additional coprocessor-specific
+functions for Class3 (COPz cofun) instructions, Thus, the table allows
+the programmer to use convenient mnemonics and operands for these
+functions, instead of the COPz mmenmonic and cofun operand.
+
+The names of the MIPS general registers and their aliases are defined
+by the assembler and will be recognized as valid register names by the
+assembler when used (where allowed) in coprocessor instructions.
+However, the names and values of all coprocessor data and control
+register mnemonics must be specified in the coprocessor table.
+
+
+Table Grammar
+=============
+
+Here is the grammar for the coprocessor table:
+
+	    table -> entry*
+
+	    entry -> [z entrydef] [comment] '\n'
+
+	    entrydef -> type name val
+	    entrydef -> 'insn' name val funcdef ; type of entry (instruction)
+
+	    z -> 'p'['0'..'3']	    	     ; processor number 
+	    type -> ['dreg' | 'creg' | 'greg' ]	     ; type of entry (register)
+	; 'dreg', 'creg' or 'greg' specifies a data, control, or general
+	;	    register mnemonic, respectively
+	    name -> [ltr|dec]*	    	     ; mnemonic of register/function
+	    val -> [dec|hex]	    	     ; register/function number (integer constant)
+
+	    funcdef -> frange flags fields
+	    	    	    	; bitfield range for opcode
+	    	    	    	; list of fields' formats
+	    fields -> field*
+	    field -> [','] ftype frange flags
+	    flags -> ['*' flagexpr]
+	    flagexpr -> '[' flagexpr ']'
+	    flagexpr -> val '|' flagexpr 
+	    ftype -> [ type | 'immed' | 'addr' ]
+	; 'immed' specifies an immediate value; see grammar for "val" above
+	    	; 'addr' specifies a C identifier; name of symbol to be resolved at 
+	;	    link time
+	    frange -> ':' val '-' val	; starting to ending bit positions, where
+	    	    	    	; where 0 is least significant bit
+	    frange -> (null)	    	; default range of 31-0 will be assumed
+
+	    comment -> [';'|'#'] [char]*
+	    char -> any printable character
+	    ltr -> ['a'..'z'|'A'..'Z'] 
+	    dec -> ['0'..'9']*	    	    	    	    	     ; value in decimal
+	    hex -> '0x'['0'..'9' | 'a'..'f' | 'A'..'F']*	; value in hexadecimal 
+
+
+Examples
+========
+
+Example 1:
+
+The table:
+
+	    p1 dreg d1 1	     ; data register "d1" for COP1 has value 1
+	    p1 creg c3 3	     ; ctrl register "c3" for COP1 has value 3
+	    p3 func fill 0x1f:24-20	      ; function "fill" for COP3 has value 31 and 
+	    	    	; no fields
+
+will allow the assembler to accept the following coprocessor instructions:
+
+	    LWC1 d1,0x100 ($2)
+	    fill
+
+Here, the general purpose register "$2", and instruction "LWC1", are standard 
+mnemonics built-in to the MIPS assembler.  
+
+
+Example 2:
+
+The table:
+
+	    p3 dreg d3 3	     ; data register "d3" for COP3 has value 3
+	    p3 creg c2 22	     ; control register "c2" for COP3 has value 22
+	    p3 func fee 0x1f:24-20 dreg:17-13 creg:12-8 immed:7-0 
+	    	; function "fee" for COP3 has value 31, and 3 fields 
+	    	; consisting of a data register, a control register, 
+	    	; and an immediate value.
+
+will allow the assembler to accept the following coprocessor instruction:
+
+	    fee d3,c2,0x1
+
+and will emit the object code:
+
+	    31-26  25 24-20 19-18  17-13 12-8  7-0
+	    COPz   CO fun	    	      dreg  creg  immed
+	    010011 1  11111 00	     00011 10110 00000001 
+
+	    0x4ff07601
+
+
+Example 3:
+
+The table:
+
+	    p3 dreg d3 3	     ; data register "d3" for COP3 has value 3
+	    p3 creg c2 22	     ; control register "c2" for COP3 has value 22
+	    p3 func fuu 0x01f00001 dreg:17-13 creg:12-8
+
+will allow the assembler to accept the following coprocessor
+instruction:
+
+	    fuu d3,c2
+
+and will emit the object code:
+
+	    31-26  25 24-20 19-18  17-13 12-8  7-0
+	    COPz   CO fun	    	      dreg  creg  
+	    010011 1  11111 00	     00011 10110 00000001 
+
+	    0x4ff07601
+
+In this way, the programmer can force arbitrary bits of an instruction
+to have predefined values.
+
+=======================================================================
+Additional notes:
+
+Encoding of ranges:
+To handle more than one bit position range within an instruction,
+use 0s to mask out the ranges which don't apply.
+May decide to modify the syntax to allow commas separate multiple 
+ranges within an instruction (range','range).
+
+Changes in grammar:
+	The number of parms argument to the function entry
+was deleted from the original format such that we now count the fields.
+
+----
+FIXME! should really change lexical analyzer 
+to recognize 'dreg' etc. in context sensitive way.
+Currently function names or mnemonics may be incorrectly parsed as keywords
+
+FIXME! hex is ambiguous with any digit
+
+*/
+
+#include <stdio.h>
+#include "itbl-lex.h"
+#include "itbl-ops.h"
+
+/* #define DEBUG */
+
+#ifdef DEBUG
+#ifndef DBG_LVL
+#define DBG_LVL 1
+#endif
+#else
+#define DBG_LVL 0
+#endif
+
+#if DBG_LVL >= 1
+#define DBG(x) printf x
+#else
+#define DBG(x) 
+#endif
+
+#if DBG_LVL >= 2
+#define DBGL2(x) printf x
+#else
+#define DBGL2(x) 
+#endif
+
+static int sbit, ebit;
+static struct itbl_entry *insn=0;
+static int yyerror PARAMS ((const char *));
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 282 "itbl-parse.y"
+typedef union YYSTYPE {
+    char *str;
+    int num;
+    int processor;
+    unsigned long val;
+  } YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 376 "itbl-parse.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 388 "itbl-parse.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  9
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   46
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  20
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  15
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  29
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  51
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   267
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,    17,     2,    13,    19,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    18,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,    15,     2,    16,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    14,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned char yyprhs[] =
+{
+       0,     0,     3,     5,     8,     9,    15,    16,    26,    28,
+      31,    35,    38,    39,    41,    43,    45,    49,    53,    57,
+      59,    62,    63,    68,    69,    71,    73,    75,    77,    79
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      21,     0,    -1,    22,    -1,    23,    22,    -1,    -1,    31,
+      32,    33,    34,    11,    -1,    -1,    31,     8,    33,    34,
+      30,    29,    24,    25,    11,    -1,    11,    -1,     1,    11,
+      -1,    13,    27,    25,    -1,    27,    25,    -1,    -1,    32,
+      -1,     7,    -1,     6,    -1,    26,    30,    29,    -1,     9,
+      14,    28,    -1,    15,    28,    16,    -1,     9,    -1,    17,
+      28,    -1,    -1,    18,     9,    19,     9,    -1,    -1,    12,
+      -1,     3,    -1,     4,    -1,     5,    -1,    10,    -1,     9,
+      -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   299,   299,   303,   304,   308,   315,   314,   323,   324,
+     328,   329,   330,   334,   339,   344,   352,   361,   365,   369,
+     376,   382,   388,   395,   402,   410,   415,   420,   428,   444
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "DREG", "CREG", "GREG", "IMMED", "ADDR",
+  "INSN", "NUM", "ID", "NL", "PNUM", "','", "'|'", "'['", "']'", "'*'",
+  "':'", "'-'", "$accept", "insntbl", "entrys", "entry", "@1",
+  "fieldspecs", "ftype", "fieldspec", "flagexpr", "flags", "range", "pnum",
+  "regtype", "name", "value", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,    44,   124,    91,    93,    42,    58,    45
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    20,    21,    22,    22,    23,    24,    23,    23,    23,
+      25,    25,    25,    26,    26,    26,    27,    28,    28,    28,
+      29,    29,    30,    30,    31,    32,    32,    32,    33,    34
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     2,     0,     5,     0,     9,     1,     2,
+       3,     2,     0,     1,     1,     1,     3,     3,     3,     1,
+       2,     0,     4,     0,     1,     1,     1,     1,     1,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       0,     0,     8,    24,     0,     2,     0,     0,     9,     1,
+       3,    25,    26,    27,     0,     0,    28,     0,     0,    29,
+      23,     0,     0,    21,     5,     0,     0,     6,     0,    19,
+       0,    20,    12,    22,     0,     0,    15,    14,     0,     0,
+      23,    12,    13,    17,    18,    12,     7,    21,    11,    10,
+      16
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,     4,     5,     6,    32,    39,    40,    41,    31,    27,
+      23,     7,    42,    17,    20
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -16
+static const yysigned_char yypact[] =
+{
+       0,    -9,   -16,   -16,    10,   -16,     0,    12,   -16,   -16,
+     -16,   -16,   -16,   -16,     3,     3,   -16,     9,     9,   -16,
+      11,     8,    19,    15,   -16,    14,    -6,   -16,    25,    21,
+      -6,   -16,     1,   -16,    -6,    20,   -16,   -16,    18,    26,
+      11,     1,   -16,   -16,   -16,     1,   -16,    15,   -16,   -16,
+     -16
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yysigned_char yypgoto[] =
+{
+     -16,   -16,    32,   -16,   -16,   -15,   -16,     2,    -3,    -8,
+       4,   -16,    34,    27,    28
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -5
+static const yysigned_char yytable[] =
+{
+      -4,     1,     8,    29,    11,    12,    13,    36,    37,    30,
+       9,     2,     3,    16,    38,    11,    12,    13,    19,    24,
+      14,    11,    12,    13,    36,    37,    48,    35,    25,    22,
+      49,    43,    26,    28,    33,    34,    44,    46,    10,    50,
+      45,    15,    18,     0,    47,     0,    21
+};
+
+static const yysigned_char yycheck[] =
+{
+       0,     1,    11,     9,     3,     4,     5,     6,     7,    15,
+       0,    11,    12,    10,    13,     3,     4,     5,     9,    11,
+       8,     3,     4,     5,     6,     7,    41,    30,     9,    18,
+      45,    34,    17,    19,     9,    14,    16,    11,     6,    47,
+      38,     7,    15,    -1,    40,    -1,    18
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,     1,    11,    12,    21,    22,    23,    31,    11,     0,
+      22,     3,     4,     5,     8,    32,    10,    33,    33,     9,
+      34,    34,    18,    30,    11,     9,    17,    29,    19,     9,
+      15,    28,    24,     9,    14,    28,     6,     7,    13,    25,
+      26,    27,    32,    28,    16,    27,    11,    30,    25,    25,
+      29
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 5:
+#line 309 "itbl-parse.y"
+    {
+	    DBG (("line %d: entry pnum=%d type=%d name=%s value=x%x\n", 
+	    	    insntbl_line, (yyvsp[-4].num), (yyvsp[-3].num), (yyvsp[-2].str), (yyvsp[-1].val)));
+	    itbl_add_reg ((yyvsp[-4].num), (yyvsp[-3].num), (yyvsp[-2].str), (yyvsp[-1].val));
+	  }
+    break;
+
+  case 6:
+#line 315 "itbl-parse.y"
+    {
+	    DBG (("line %d: entry pnum=%d type=INSN name=%s value=x%x",
+	    	    insntbl_line, (yyvsp[-5].num), (yyvsp[-3].str), (yyvsp[-2].val)));
+	    DBG ((" sbit=%d ebit=%d flags=0x%x\n", sbit, ebit, (yyvsp[0].val)));
+	    insn=itbl_add_insn ((yyvsp[-5].num), (yyvsp[-3].str), (yyvsp[-2].val), sbit, ebit, (yyvsp[0].val));
+	  }
+    break;
+
+  case 7:
+#line 322 "itbl-parse.y"
+    {}
+    break;
+
+  case 13:
+#line 335 "itbl-parse.y"
+    {
+	    DBGL2 (("ftype\n"));
+	    (yyval.num) = (yyvsp[0].num);
+	  }
+    break;
+
+  case 14:
+#line 340 "itbl-parse.y"
+    {
+	    DBGL2 (("addr\n"));
+	    (yyval.num) = ADDR;
+	  }
+    break;
+
+  case 15:
+#line 345 "itbl-parse.y"
+    {
+	    DBGL2 (("immed\n"));
+	    (yyval.num) = IMMED;
+	  }
+    break;
+
+  case 16:
+#line 353 "itbl-parse.y"
+    {
+	    DBG (("line %d: field type=%d sbit=%d ebit=%d, flags=0x%x\n", 
+	    	    insntbl_line, (yyvsp[-2].num), sbit, ebit, (yyvsp[0].val)));
+	    itbl_add_operand (insn, (yyvsp[-2].num), sbit, ebit, (yyvsp[0].val));
+	  }
+    break;
+
+  case 17:
+#line 362 "itbl-parse.y"
+    {
+	    (yyval.val) = (yyvsp[-2].num) | (yyvsp[0].val);
+	  }
+    break;
+
+  case 18:
+#line 366 "itbl-parse.y"
+    {
+	    (yyval.val) = (yyvsp[-1].val);
+	  }
+    break;
+
+  case 19:
+#line 370 "itbl-parse.y"
+    {
+	    (yyval.val) = (yyvsp[0].num);
+	  }
+    break;
+
+  case 20:
+#line 377 "itbl-parse.y"
+    {
+	    DBGL2 (("flags=%d\n", (yyvsp[0].val)));
+	    (yyval.val) = (yyvsp[0].val);
+	  }
+    break;
+
+  case 21:
+#line 382 "itbl-parse.y"
+    {
+	    (yyval.val) = 0;
+	  }
+    break;
+
+  case 22:
+#line 389 "itbl-parse.y"
+    {
+	    DBGL2 (("range %d %d\n", (yyvsp[-2].num), (yyvsp[0].num)));
+	    sbit = (yyvsp[-2].num);
+	    ebit = (yyvsp[0].num);
+	  }
+    break;
+
+  case 23:
+#line 395 "itbl-parse.y"
+    {
+	    sbit = 31;
+	    ebit = 0;
+	  }
+    break;
+
+  case 24:
+#line 403 "itbl-parse.y"
+    {
+	    DBGL2 (("pnum=%d\n",(yyvsp[0].num)));
+	    (yyval.num) = (yyvsp[0].num);
+	  }
+    break;
+
+  case 25:
+#line 411 "itbl-parse.y"
+    {
+	    DBGL2 (("dreg\n"));
+	    (yyval.num) = DREG;
+	  }
+    break;
+
+  case 26:
+#line 416 "itbl-parse.y"
+    {
+	    DBGL2 (("creg\n"));
+	    (yyval.num) = CREG;
+	  }
+    break;
+
+  case 27:
+#line 421 "itbl-parse.y"
+    {
+	    DBGL2 (("greg\n"));
+	    (yyval.num) = GREG;
+	  }
+    break;
+
+  case 28:
+#line 429 "itbl-parse.y"
+    {
+	    DBGL2 (("name=%s\n",(yyvsp[0].str)));
+	    (yyval.str) = (yyvsp[0].str); 
+	  }
+    break;
+
+  case 29:
+#line 445 "itbl-parse.y"
+    {
+	    DBGL2 (("val=x%x\n",(yyvsp[0].num)));
+	    (yyval.val) = (yyvsp[0].num);
+	  }
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1565 "itbl-parse.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 450 "itbl-parse.y"
+
+
+static int
+yyerror (msg)
+     const char *msg;
+{
+  printf ("line %d: %s\n", insntbl_line, msg);
+  return 0;
+}
+

Added: branches/binutils/package/gas/itbl-parse.h
===================================================================
--- branches/binutils/package/gas/itbl-parse.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/itbl-parse.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,77 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     DREG = 258,
+     CREG = 259,
+     GREG = 260,
+     IMMED = 261,
+     ADDR = 262,
+     INSN = 263,
+     NUM = 264,
+     ID = 265,
+     NL = 266,
+     PNUM = 267
+   };
+#endif
+/* Tokens.  */
+#define DREG 258
+#define CREG 259
+#define GREG 260
+#define IMMED 261
+#define ADDR 262
+#define INSN 263
+#define NUM 264
+#define ID 265
+#define NL 266
+#define PNUM 267
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 282 "itbl-parse.y"
+typedef union YYSTYPE {
+    char *str;
+    int num;
+    int processor;
+    unsigned long val;
+  } YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 69 "itbl-parse.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Added: branches/binutils/package/gas/m68k-parse.c
===================================================================
--- branches/binutils/package/gas/m68k-parse.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/m68k-parse.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2672 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     DR = 258,
+     AR = 259,
+     FPR = 260,
+     FPCR = 261,
+     LPC = 262,
+     ZAR = 263,
+     ZDR = 264,
+     LZPC = 265,
+     CREG = 266,
+     INDEXREG = 267,
+     EXPR = 268
+   };
+#endif
+/* Tokens.  */
+#define DR 258
+#define AR 259
+#define FPR 260
+#define FPCR 261
+#define LPC 262
+#define ZAR 263
+#define ZDR 264
+#define LZPC 265
+#define CREG 266
+#define INDEXREG 267
+#define EXPR 268
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 28 "m68k-parse.y"
+
+
+#include "as.h"
+#include "tc-m68k.h"
+#include "m68k-parse.h"
+#include "safe-ctype.h"
+
+/* Remap normal yacc parser interface names (yyparse, yylex, yyerror,
+   etc), as well as gratuitously global symbol names If other parser
+   generators (bison, byacc, etc) produce additional global names that
+   conflict at link time, then those parser generators need to be
+   fixed instead of adding those names to this list.  */
+
+#define	yymaxdepth m68k_maxdepth
+#define	yyparse	m68k_parse
+#define	yylex	m68k_lex
+#define	yyerror	m68k_error
+#define	yylval	m68k_lval
+#define	yychar	m68k_char
+#define	yydebug	m68k_debug
+#define	yypact	m68k_pact	
+#define	yyr1	m68k_r1			
+#define	yyr2	m68k_r2			
+#define	yydef	m68k_def		
+#define	yychk	m68k_chk		
+#define	yypgo	m68k_pgo		
+#define	yyact	m68k_act		
+#define	yyexca	m68k_exca
+#define yyerrflag m68k_errflag
+#define yynerrs	m68k_nerrs
+#define	yyps	m68k_ps
+#define	yypv	m68k_pv
+#define	yys	m68k_s
+#define	yy_yys	m68k_yys
+#define	yystate	m68k_state
+#define	yytmp	m68k_tmp
+#define	yyv	m68k_v
+#define	yy_yyv	m68k_yyv
+#define	yyval	m68k_val
+#define	yylloc	m68k_lloc
+#define yyreds	m68k_reds		/* With YYDEBUG defined */
+#define yytoks	m68k_toks		/* With YYDEBUG defined */
+#define yylhs	m68k_yylhs
+#define yylen	m68k_yylen
+#define yydefred m68k_yydefred
+#define yydgoto	m68k_yydgoto
+#define yysindex m68k_yysindex
+#define yyrindex m68k_yyrindex
+#define yygindex m68k_yygindex
+#define yytable	 m68k_yytable
+#define yycheck	 m68k_yycheck
+
+#ifndef YYDEBUG
+#define YYDEBUG 1
+#endif
+
+/* Internal functions.  */
+
+static enum m68k_register m68k_reg_parse (char **);
+static int yylex (void);
+static void yyerror (const char *);
+
+/* The parser sets fields pointed to by this global variable.  */
+static struct m68k_op *op;
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 96 "m68k-parse.y"
+typedef union YYSTYPE {
+  struct m68k_indexreg indexreg;
+  enum m68k_register reg;
+  struct m68k_exp exp;
+  unsigned long mask;
+  int onereg;
+  int trailing_ampersand;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 187 "m68k-parse.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 199 "m68k-parse.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  44
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   215
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  27
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  21
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  89
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  180
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   268
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,    17,     2,     2,    14,     2,
+      18,    19,     2,    20,    22,    21,     2,    26,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      15,     2,    16,     2,    25,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,    23,     2,    24,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     5,     8,    11,    12,    14,    17,    20,
+      22,    24,    26,    28,    30,    32,    35,    38,    40,    44,
+      49,    54,    60,    66,    71,    75,    79,    83,    91,    99,
+     106,   112,   119,   125,   132,   138,   144,   149,   159,   167,
+     176,   183,   194,   203,   214,   223,   232,   235,   239,   243,
+     249,   256,   267,   277,   288,   290,   292,   294,   296,   298,
+     300,   302,   304,   306,   308,   310,   312,   314,   316,   317,
+     319,   321,   323,   324,   327,   328,   331,   332,   335,   337,
+     341,   345,   347,   349,   353,   357,   361,   363,   365,   367
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      28,     0,    -1,    30,    -1,    31,    29,    -1,    32,    29,
+      -1,    -1,    14,    -1,    15,    15,    -1,    16,    16,    -1,
+       3,    -1,     4,    -1,     5,    -1,     6,    -1,    11,    -1,
+      13,    -1,    17,    13,    -1,    14,    13,    -1,    44,    -1,
+      18,     4,    19,    -1,    18,     4,    19,    20,    -1,    21,
+      18,     4,    19,    -1,    18,    13,    22,    38,    19,    -1,
+      18,    38,    22,    13,    19,    -1,    13,    18,    38,    19,
+      -1,    18,     7,    19,    -1,    18,     8,    19,    -1,    18,
+      10,    19,    -1,    18,    13,    22,    38,    22,    33,    19,
+      -1,    18,    13,    22,    38,    22,    40,    19,    -1,    18,
+      13,    22,    34,    41,    19,    -1,    18,    34,    22,    13,
+      19,    -1,    13,    18,    38,    22,    33,    19,    -1,    18,
+      38,    22,    33,    19,    -1,    13,    18,    38,    22,    40,
+      19,    -1,    18,    38,    22,    40,    19,    -1,    13,    18,
+      34,    41,    19,    -1,    18,    34,    41,    19,    -1,    18,
+      23,    13,    41,    24,    22,    33,    42,    19,    -1,    18,
+      23,    13,    41,    24,    42,    19,    -1,    18,    23,    38,
+      24,    22,    33,    42,    19,    -1,    18,    23,    38,    24,
+      42,    19,    -1,    18,    23,    13,    22,    38,    22,    33,
+      24,    42,    19,    -1,    18,    23,    38,    22,    33,    24,
+      42,    19,    -1,    18,    23,    13,    22,    38,    22,    40,
+      24,    42,    19,    -1,    18,    23,    38,    22,    40,    24,
+      42,    19,    -1,    18,    23,    43,    34,    41,    24,    42,
+      19,    -1,    39,    25,    -1,    39,    25,    20,    -1,    39,
+      25,    21,    -1,    39,    25,    18,    13,    19,    -1,    39,
+      25,    18,    43,    33,    19,    -1,    39,    25,    18,    13,
+      19,    25,    18,    43,    33,    19,    -1,    39,    25,    18,
+      13,    19,    25,    18,    13,    19,    -1,    39,    25,    18,
+      43,    33,    19,    25,    18,    13,    19,    -1,    12,    -1,
+      35,    -1,    12,    -1,    36,    -1,    36,    -1,     4,    -1,
+       8,    -1,     3,    -1,     9,    -1,     4,    -1,     7,    -1,
+      37,    -1,    10,    -1,     8,    -1,    -1,    38,    -1,     7,
+      -1,    10,    -1,    -1,    22,    38,    -1,    -1,    22,    13,
+      -1,    -1,    13,    22,    -1,    46,    -1,    46,    26,    45,
+      -1,    47,    26,    45,    -1,    47,    -1,    46,    -1,    46,
+      26,    45,    -1,    47,    26,    45,    -1,    47,    21,    47,
+      -1,     3,    -1,     4,    -1,     5,    -1,     6,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   121,   121,   122,   126,   135,   136,   143,   148,   153,
+     158,   163,   168,   173,   178,   183,   188,   193,   206,   211,
+     216,   221,   231,   241,   251,   256,   261,   266,   273,   284,
+     291,   297,   304,   310,   321,   331,   338,   344,   352,   359,
+     366,   372,   380,   387,   399,   410,   423,   431,   439,   447,
+     457,   464,   472,   479,   493,   494,   507,   508,   520,   521,
+     522,   528,   529,   535,   536,   543,   544,   545,   552,   555,
+     561,   562,   569,   572,   582,   586,   596,   600,   609,   610,
+     614,   626,   630,   631,   635,   642,   652,   656,   660,   664
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "DR", "AR", "FPR", "FPCR", "LPC", "ZAR",
+  "ZDR", "LZPC", "CREG", "INDEXREG", "EXPR", "'&'", "'<'", "'>'", "'#'",
+  "'('", "')'", "'+'", "'-'", "','", "'['", "']'", "'@'", "'/'", "$accept",
+  "operand", "optional_ampersand", "generic_operand", "motorola_operand",
+  "mit_operand", "zireg", "zdireg", "zadr", "zdr", "apc", "zapc",
+  "optzapc", "zpc", "optczapc", "optcexpr", "optexprc", "reglist",
+  "ireglist", "reglistpair", "reglistreg", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,    38,    60,    62,    35,    40,    41,
+      43,    45,    44,    91,    93,    64,    47
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    27,    28,    28,    28,    29,    29,    30,    30,    30,
+      30,    30,    30,    30,    30,    30,    30,    30,    31,    31,
+      31,    31,    31,    31,    31,    31,    31,    31,    31,    31,
+      31,    31,    31,    31,    31,    31,    31,    31,    31,    31,
+      31,    31,    31,    31,    31,    31,    32,    32,    32,    32,
+      32,    32,    32,    32,    33,    33,    34,    34,    35,    35,
+      35,    36,    36,    37,    37,    38,    38,    38,    39,    39,
+      40,    40,    41,    41,    42,    42,    43,    43,    44,    44,
+      44,    45,    45,    45,    45,    46,    47,    47,    47,    47
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     2,     2,     0,     1,     2,     2,     1,
+       1,     1,     1,     1,     1,     2,     2,     1,     3,     4,
+       4,     5,     5,     4,     3,     3,     3,     7,     7,     6,
+       5,     6,     5,     6,     5,     5,     4,     9,     7,     8,
+       6,    10,     8,    10,     8,     8,     2,     3,     3,     5,
+       6,    10,     9,    10,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
+       1,     1,     0,     2,     0,     2,     0,     2,     1,     3,
+       3,     1,     1,     3,     3,     3,     1,     1,     1,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+      68,    86,    87,    88,    89,    64,    67,    66,    13,    14,
+       0,     0,     0,     0,     0,     0,     0,     2,     5,     5,
+      65,    69,     0,    17,    78,     0,     0,    16,     7,     8,
+      15,    61,    63,    64,    67,    62,    66,    56,     0,    76,
+      72,    57,     0,     0,     1,     6,     3,     4,    46,     0,
+       0,     0,    63,    72,     0,    18,    24,    25,    26,     0,
+      72,     0,     0,     0,     0,     0,     0,    76,    47,    48,
+      86,    87,    88,    89,    79,    82,    81,    85,    80,     0,
+       0,    23,     0,    19,    72,     0,    77,     0,     0,    74,
+      72,     0,    73,    36,    59,    70,    60,    71,    54,     0,
+       0,    55,    58,     0,    20,     0,     0,     0,     0,    35,
+       0,     0,     0,    21,     0,    73,    74,     0,     0,     0,
+       0,     0,    30,    22,    32,    34,    49,    77,     0,    83,
+      84,    31,    33,    29,     0,     0,     0,     0,     0,    74,
+      74,    75,    74,    40,    74,     0,    50,    27,    28,     0,
+       0,    74,    38,     0,     0,     0,     0,     0,    76,     0,
+      74,    74,     0,    42,    44,    39,    45,     0,     0,     0,
+       0,     0,    37,    52,     0,     0,    41,    43,    51,    53
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,    16,    46,    17,    18,    19,   100,    40,   101,   102,
+      20,    92,    22,   103,    64,   120,    62,    23,    74,    75,
+      76
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -98
+static const short int yypact[] =
+{
+      89,    14,     9,    31,    35,   -98,   -98,   -98,   -98,     0,
+      36,    42,    28,    56,    63,    67,    90,   -98,    75,    75,
+     -98,   -98,    86,   -98,    96,   -15,   123,   -98,   -98,   -98,
+     -98,   -98,    97,   115,   119,   -98,   120,   -98,   122,    16,
+     126,   -98,   127,   157,   -98,   -98,   -98,   -98,    19,   154,
+     154,   154,   -98,   140,    29,   144,   -98,   -98,   -98,   123,
+     141,    99,    18,    70,   147,   105,   148,   152,   -98,   -98,
+     -98,   -98,   -98,   -98,   -98,   142,   -13,   -98,   -98,   146,
+     150,   -98,   133,   -98,   140,    60,   146,   149,   133,   153,
+     140,   151,   -98,   -98,   -98,   -98,   -98,   -98,   -98,   155,
+     158,   -98,   -98,   159,   -98,    62,   143,   154,   154,   -98,
+     160,   161,   162,   -98,   133,   163,   164,   165,   166,   116,
+     168,   167,   -98,   -98,   -98,   -98,   169,   -98,   173,   -98,
+     -98,   -98,   -98,   -98,   174,   176,   133,   116,   177,   175,
+     175,   -98,   175,   -98,   175,   170,   178,   -98,   -98,   180,
+     181,   175,   -98,   171,   179,   182,   183,   187,   186,   189,
+     175,   175,   190,   -98,   -98,   -98,   -98,    79,   143,   195,
+     191,   192,   -98,   -98,   193,   194,   -98,   -98,   -98,   -98
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+     -98,   -98,   196,   -98,   -98,   -98,   -81,     6,   -98,    -9,
+     -98,     2,   -98,   -78,   -38,   -97,   -67,   -98,   -48,   172,
+      12
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -64
+static const short int yytable[] =
+{
+     106,   110,    21,    78,   111,    41,    50,   117,    50,   -10,
+     118,    51,    25,   108,    -9,    80,    42,    41,    26,   138,
+      52,    31,    87,     5,     6,   128,     7,    35,    54,    60,
+      37,   -11,    53,   134,   -63,   -12,   135,    67,   142,    68,
+      69,    61,   154,   155,    29,   156,   112,   157,    81,    27,
+      41,    82,   121,    41,   162,   149,   151,    28,   150,   129,
+     130,    85,    77,   170,   171,    84,    31,    32,    90,    30,
+      33,    34,    35,    36,    52,    37,    38,     5,     6,   113,
+       7,   126,   114,    91,   127,    43,    39,   174,   115,    45,
+      44,   168,     1,     2,     3,     4,     5,     6,   173,     7,
+       8,   127,     9,    10,    11,    12,    13,    14,    31,    94,
+      15,    48,    95,    96,    35,    97,    55,    98,    99,    31,
+      94,    88,    49,    89,    96,    35,    31,    52,    98,   141,
+       5,     6,    35,     7,    56,    37,    31,    94,    57,    58,
+      95,    96,    35,    97,    59,    98,    31,    94,    63,    65,
+      52,    96,    35,     5,     6,    98,     7,    70,    71,    72,
+      73,    66,    79,    86,    83,   105,    93,   104,   107,   109,
+     122,     0,    24,   116,   123,   119,     0,   124,   125,   131,
+     132,   133,     0,     0,   141,   136,   137,   143,   158,   139,
+     140,   144,   146,   147,   145,   148,   152,   153,   163,   167,
+       0,   164,   165,   159,   160,   161,   166,   169,   175,   172,
+     176,   177,   178,   179,     0,    47
+};
+
+static const short int yycheck[] =
+{
+      67,    82,     0,    51,    82,    14,    21,    88,    21,     0,
+      88,    26,     0,    26,     0,    53,    14,    26,    18,   116,
+       4,     3,    60,     7,     8,   106,    10,     9,    26,    13,
+      12,     0,    26,   114,    25,     0,   114,    18,   119,    20,
+      21,    39,   139,   140,    16,   142,    84,   144,    19,    13,
+      59,    22,    90,    62,   151,   136,   137,    15,   136,   107,
+     108,    59,    50,   160,   161,    59,     3,     4,    62,    13,
+       7,     8,     9,    10,     4,    12,    13,     7,     8,    19,
+      10,    19,    22,    13,    22,    18,    23,   168,    86,    14,
+       0,   158,     3,     4,     5,     6,     7,     8,    19,    10,
+      11,    22,    13,    14,    15,    16,    17,    18,     3,     4,
+      21,    25,     7,     8,     9,    10,    19,    12,    13,     3,
+       4,    22,    26,    24,     8,     9,     3,     4,    12,    13,
+       7,     8,     9,    10,    19,    12,     3,     4,    19,    19,
+       7,     8,     9,    10,    22,    12,     3,     4,    22,    22,
+       4,     8,     9,     7,     8,    12,    10,     3,     4,     5,
+       6,     4,    22,    22,    20,    13,    19,    19,    26,    19,
+      19,    -1,     0,    24,    19,    22,    -1,    19,    19,    19,
+      19,    19,    -1,    -1,    13,    22,    22,    19,    18,    24,
+      24,    24,    19,    19,    25,    19,    19,    22,    19,    13,
+      -1,    19,    19,    25,    24,    24,    19,    18,    13,    19,
+      19,    19,    19,    19,    -1,    19
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,     3,     4,     5,     6,     7,     8,    10,    11,    13,
+      14,    15,    16,    17,    18,    21,    28,    30,    31,    32,
+      37,    38,    39,    44,    46,    47,    18,    13,    15,    16,
+      13,     3,     4,     7,     8,     9,    10,    12,    13,    23,
+      34,    36,    38,    18,     0,    14,    29,    29,    25,    26,
+      21,    26,     4,    34,    38,    19,    19,    19,    19,    22,
+      13,    38,    43,    22,    41,    22,     4,    18,    20,    21,
+       3,     4,     5,     6,    45,    46,    47,    47,    45,    22,
+      41,    19,    22,    20,    34,    38,    22,    41,    22,    24,
+      34,    13,    38,    19,     4,     7,     8,    10,    12,    13,
+      33,    35,    36,    40,    19,    13,    43,    26,    26,    19,
+      33,    40,    41,    19,    22,    38,    24,    33,    40,    22,
+      42,    41,    19,    19,    19,    19,    19,    22,    33,    45,
+      45,    19,    19,    19,    33,    40,    22,    22,    42,    24,
+      24,    13,    33,    19,    24,    25,    19,    19,    19,    33,
+      40,    33,    19,    22,    42,    42,    42,    42,    18,    25,
+      24,    24,    42,    19,    19,    19,    19,    13,    43,    18,
+      42,    42,    19,    19,    33,    13,    19,    19,    19,    19
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 3:
+#line 123 "m68k-parse.y"
+    {
+		  op->trailing_ampersand = (yyvsp[0].trailing_ampersand);
+		}
+    break;
+
+  case 4:
+#line 127 "m68k-parse.y"
+    {
+		  op->trailing_ampersand = (yyvsp[0].trailing_ampersand);
+		}
+    break;
+
+  case 5:
+#line 135 "m68k-parse.y"
+    { (yyval.trailing_ampersand) = 0; }
+    break;
+
+  case 6:
+#line 137 "m68k-parse.y"
+    { (yyval.trailing_ampersand) = 1; }
+    break;
+
+  case 7:
+#line 144 "m68k-parse.y"
+    {
+		  op->mode = LSH;
+		}
+    break;
+
+  case 8:
+#line 149 "m68k-parse.y"
+    {
+		  op->mode = RSH;
+		}
+    break;
+
+  case 9:
+#line 154 "m68k-parse.y"
+    {
+		  op->mode = DREG;
+		  op->reg = (yyvsp[0].reg);
+		}
+    break;
+
+  case 10:
+#line 159 "m68k-parse.y"
+    {
+		  op->mode = AREG;
+		  op->reg = (yyvsp[0].reg);
+		}
+    break;
+
+  case 11:
+#line 164 "m68k-parse.y"
+    {
+		  op->mode = FPREG;
+		  op->reg = (yyvsp[0].reg);
+		}
+    break;
+
+  case 12:
+#line 169 "m68k-parse.y"
+    {
+		  op->mode = CONTROL;
+		  op->reg = (yyvsp[0].reg);
+		}
+    break;
+
+  case 13:
+#line 174 "m68k-parse.y"
+    {
+		  op->mode = CONTROL;
+		  op->reg = (yyvsp[0].reg);
+		}
+    break;
+
+  case 14:
+#line 179 "m68k-parse.y"
+    {
+		  op->mode = ABSL;
+		  op->disp = (yyvsp[0].exp);
+		}
+    break;
+
+  case 15:
+#line 184 "m68k-parse.y"
+    {
+		  op->mode = IMMED;
+		  op->disp = (yyvsp[0].exp);
+		}
+    break;
+
+  case 16:
+#line 189 "m68k-parse.y"
+    {
+		  op->mode = IMMED;
+		  op->disp = (yyvsp[0].exp);
+		}
+    break;
+
+  case 17:
+#line 194 "m68k-parse.y"
+    {
+		  op->mode = REGLST;
+		  op->mask = (yyvsp[0].mask);
+		}
+    break;
+
+  case 18:
+#line 207 "m68k-parse.y"
+    {
+		  op->mode = AINDR;
+		  op->reg = (yyvsp[-1].reg);
+		}
+    break;
+
+  case 19:
+#line 212 "m68k-parse.y"
+    {
+		  op->mode = AINC;
+		  op->reg = (yyvsp[-2].reg);
+		}
+    break;
+
+  case 20:
+#line 217 "m68k-parse.y"
+    {
+		  op->mode = ADEC;
+		  op->reg = (yyvsp[-1].reg);
+		}
+    break;
+
+  case 21:
+#line 222 "m68k-parse.y"
+    {
+		  op->reg = (yyvsp[-1].reg);
+		  op->disp = (yyvsp[-3].exp);
+		  if (((yyvsp[-1].reg) >= ZADDR0 && (yyvsp[-1].reg) <= ZADDR7)
+		      || (yyvsp[-1].reg) == ZPC)
+		    op->mode = BASE;
+		  else
+		    op->mode = DISP;
+		}
+    break;
+
+  case 22:
+#line 232 "m68k-parse.y"
+    {
+		  op->reg = (yyvsp[-3].reg);
+		  op->disp = (yyvsp[-1].exp);
+		  if (((yyvsp[-3].reg) >= ZADDR0 && (yyvsp[-3].reg) <= ZADDR7)
+		      || (yyvsp[-3].reg) == ZPC)
+		    op->mode = BASE;
+		  else
+		    op->mode = DISP;
+		}
+    break;
+
+  case 23:
+#line 242 "m68k-parse.y"
+    {
+		  op->reg = (yyvsp[-1].reg);
+		  op->disp = (yyvsp[-3].exp);
+		  if (((yyvsp[-1].reg) >= ZADDR0 && (yyvsp[-1].reg) <= ZADDR7)
+		      || (yyvsp[-1].reg) == ZPC)
+		    op->mode = BASE;
+		  else
+		    op->mode = DISP;
+		}
+    break;
+
+  case 24:
+#line 252 "m68k-parse.y"
+    {
+		  op->mode = DISP;
+		  op->reg = (yyvsp[-1].reg);
+		}
+    break;
+
+  case 25:
+#line 257 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		}
+    break;
+
+  case 26:
+#line 262 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		}
+    break;
+
+  case 27:
+#line 267 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-3].reg);
+		  op->disp = (yyvsp[-5].exp);
+		  op->index = (yyvsp[-1].indexreg);
+		}
+    break;
+
+  case 28:
+#line 274 "m68k-parse.y"
+    {
+		  if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC)
+		    yyerror (_("syntax error"));
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		  op->disp = (yyvsp[-5].exp);
+		  op->index.reg = (yyvsp[-3].reg);
+		  op->index.size = SIZE_UNSPEC;
+		  op->index.scale = 1;
+		}
+    break;
+
+  case 29:
+#line 285 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		  op->disp = (yyvsp[-4].exp);
+		  op->index = (yyvsp[-2].indexreg);
+		}
+    break;
+
+  case 30:
+#line 292 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->disp = (yyvsp[-1].exp);
+		  op->index = (yyvsp[-3].indexreg);
+		}
+    break;
+
+  case 31:
+#line 298 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-3].reg);
+		  op->disp = (yyvsp[-5].exp);
+		  op->index = (yyvsp[-1].indexreg);
+		}
+    break;
+
+  case 32:
+#line 305 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-3].reg);
+		  op->index = (yyvsp[-1].indexreg);
+		}
+    break;
+
+  case 33:
+#line 311 "m68k-parse.y"
+    {
+		  if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC)
+		    yyerror (_("syntax error"));
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		  op->disp = (yyvsp[-5].exp);
+		  op->index.reg = (yyvsp[-3].reg);
+		  op->index.size = SIZE_UNSPEC;
+		  op->index.scale = 1;
+		}
+    break;
+
+  case 34:
+#line 322 "m68k-parse.y"
+    {
+		  if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC)
+		    yyerror (_("syntax error"));
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		  op->index.reg = (yyvsp[-3].reg);
+		  op->index.size = SIZE_UNSPEC;
+		  op->index.scale = 1;
+		}
+    break;
+
+  case 35:
+#line 332 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		  op->disp = (yyvsp[-4].exp);
+		  op->index = (yyvsp[-2].indexreg);
+		}
+    break;
+
+  case 36:
+#line 339 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-1].reg);
+		  op->index = (yyvsp[-2].indexreg);
+		}
+    break;
+
+  case 37:
+#line 345 "m68k-parse.y"
+    {
+		  op->mode = POST;
+		  op->reg = (yyvsp[-5].reg);
+		  op->disp = (yyvsp[-6].exp);
+		  op->index = (yyvsp[-2].indexreg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 38:
+#line 353 "m68k-parse.y"
+    {
+		  op->mode = POST;
+		  op->reg = (yyvsp[-3].reg);
+		  op->disp = (yyvsp[-4].exp);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 39:
+#line 360 "m68k-parse.y"
+    {
+		  op->mode = POST;
+		  op->reg = (yyvsp[-5].reg);
+		  op->index = (yyvsp[-2].indexreg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 40:
+#line 367 "m68k-parse.y"
+    {
+		  op->mode = POST;
+		  op->reg = (yyvsp[-3].reg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 41:
+#line 373 "m68k-parse.y"
+    {
+		  op->mode = PRE;
+		  op->reg = (yyvsp[-5].reg);
+		  op->disp = (yyvsp[-7].exp);
+		  op->index = (yyvsp[-3].indexreg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 42:
+#line 381 "m68k-parse.y"
+    {
+		  op->mode = PRE;
+		  op->reg = (yyvsp[-5].reg);
+		  op->index = (yyvsp[-3].indexreg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 43:
+#line 388 "m68k-parse.y"
+    {
+		  if ((yyvsp[-5].reg) == PC || (yyvsp[-5].reg) == ZPC)
+		    yyerror (_("syntax error"));
+		  op->mode = PRE;
+		  op->reg = (yyvsp[-3].reg);
+		  op->disp = (yyvsp[-7].exp);
+		  op->index.reg = (yyvsp[-5].reg);
+		  op->index.size = SIZE_UNSPEC;
+		  op->index.scale = 1;
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 44:
+#line 400 "m68k-parse.y"
+    {
+		  if ((yyvsp[-5].reg) == PC || (yyvsp[-5].reg) == ZPC)
+		    yyerror (_("syntax error"));
+		  op->mode = PRE;
+		  op->reg = (yyvsp[-3].reg);
+		  op->index.reg = (yyvsp[-5].reg);
+		  op->index.size = SIZE_UNSPEC;
+		  op->index.scale = 1;
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 45:
+#line 411 "m68k-parse.y"
+    {
+		  op->mode = PRE;
+		  op->reg = (yyvsp[-3].reg);
+		  op->disp = (yyvsp[-5].exp);
+		  op->index = (yyvsp[-4].indexreg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 46:
+#line 424 "m68k-parse.y"
+    {
+		  /* We use optzapc to avoid a shift/reduce conflict.  */
+		  if ((yyvsp[-1].reg) < ADDR0 || (yyvsp[-1].reg) > ADDR7)
+		    yyerror (_("syntax error"));
+		  op->mode = AINDR;
+		  op->reg = (yyvsp[-1].reg);
+		}
+    break;
+
+  case 47:
+#line 432 "m68k-parse.y"
+    {
+		  /* We use optzapc to avoid a shift/reduce conflict.  */
+		  if ((yyvsp[-2].reg) < ADDR0 || (yyvsp[-2].reg) > ADDR7)
+		    yyerror (_("syntax error"));
+		  op->mode = AINC;
+		  op->reg = (yyvsp[-2].reg);
+		}
+    break;
+
+  case 48:
+#line 440 "m68k-parse.y"
+    {
+		  /* We use optzapc to avoid a shift/reduce conflict.  */
+		  if ((yyvsp[-2].reg) < ADDR0 || (yyvsp[-2].reg) > ADDR7)
+		    yyerror (_("syntax error"));
+		  op->mode = ADEC;
+		  op->reg = (yyvsp[-2].reg);
+		}
+    break;
+
+  case 49:
+#line 448 "m68k-parse.y"
+    {
+		  op->reg = (yyvsp[-4].reg);
+		  op->disp = (yyvsp[-1].exp);
+		  if (((yyvsp[-4].reg) >= ZADDR0 && (yyvsp[-4].reg) <= ZADDR7)
+		      || (yyvsp[-4].reg) == ZPC)
+		    op->mode = BASE;
+		  else
+		    op->mode = DISP;
+		}
+    break;
+
+  case 50:
+#line 458 "m68k-parse.y"
+    {
+		  op->mode = BASE;
+		  op->reg = (yyvsp[-5].reg);
+		  op->disp = (yyvsp[-2].exp);
+		  op->index = (yyvsp[-1].indexreg);
+		}
+    break;
+
+  case 51:
+#line 465 "m68k-parse.y"
+    {
+		  op->mode = POST;
+		  op->reg = (yyvsp[-9].reg);
+		  op->disp = (yyvsp[-6].exp);
+		  op->index = (yyvsp[-1].indexreg);
+		  op->odisp = (yyvsp[-2].exp);
+		}
+    break;
+
+  case 52:
+#line 473 "m68k-parse.y"
+    {
+		  op->mode = POST;
+		  op->reg = (yyvsp[-8].reg);
+		  op->disp = (yyvsp[-5].exp);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 53:
+#line 480 "m68k-parse.y"
+    {
+		  op->mode = PRE;
+		  op->reg = (yyvsp[-9].reg);
+		  op->disp = (yyvsp[-6].exp);
+		  op->index = (yyvsp[-5].indexreg);
+		  op->odisp = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 55:
+#line 495 "m68k-parse.y"
+    {
+		  (yyval.indexreg).reg = (yyvsp[0].reg);
+		  (yyval.indexreg).size = SIZE_UNSPEC;
+		  (yyval.indexreg).scale = 1;
+		}
+    break;
+
+  case 57:
+#line 509 "m68k-parse.y"
+    {
+		  (yyval.indexreg).reg = (yyvsp[0].reg);
+		  (yyval.indexreg).size = SIZE_UNSPEC;
+		  (yyval.indexreg).scale = 1;
+		}
+    break;
+
+  case 68:
+#line 552 "m68k-parse.y"
+    {
+		  (yyval.reg) = ZADDR0;
+		}
+    break;
+
+  case 72:
+#line 569 "m68k-parse.y"
+    {
+		  (yyval.reg) = ZADDR0;
+		}
+    break;
+
+  case 73:
+#line 573 "m68k-parse.y"
+    {
+		  (yyval.reg) = (yyvsp[0].reg);
+		}
+    break;
+
+  case 74:
+#line 582 "m68k-parse.y"
+    {
+		  (yyval.exp).exp.X_op = O_absent;
+		  (yyval.exp).size = SIZE_UNSPEC;
+		}
+    break;
+
+  case 75:
+#line 587 "m68k-parse.y"
+    {
+		  (yyval.exp) = (yyvsp[0].exp);
+		}
+    break;
+
+  case 76:
+#line 596 "m68k-parse.y"
+    {
+		  (yyval.exp).exp.X_op = O_absent;
+		  (yyval.exp).size = SIZE_UNSPEC;
+		}
+    break;
+
+  case 77:
+#line 601 "m68k-parse.y"
+    {
+		  (yyval.exp) = (yyvsp[-1].exp);
+		}
+    break;
+
+  case 79:
+#line 611 "m68k-parse.y"
+    {
+		  (yyval.mask) = (yyvsp[-2].mask) | (yyvsp[0].mask);
+		}
+    break;
+
+  case 80:
+#line 615 "m68k-parse.y"
+    {
+		  (yyval.mask) = (1 << (yyvsp[-2].onereg)) | (yyvsp[0].mask);
+		}
+    break;
+
+  case 81:
+#line 627 "m68k-parse.y"
+    {
+		  (yyval.mask) = 1 << (yyvsp[0].onereg);
+		}
+    break;
+
+  case 83:
+#line 632 "m68k-parse.y"
+    {
+		  (yyval.mask) = (yyvsp[-2].mask) | (yyvsp[0].mask);
+		}
+    break;
+
+  case 84:
+#line 636 "m68k-parse.y"
+    {
+		  (yyval.mask) = (1 << (yyvsp[-2].onereg)) | (yyvsp[0].mask);
+		}
+    break;
+
+  case 85:
+#line 643 "m68k-parse.y"
+    {
+		  if ((yyvsp[-2].onereg) <= (yyvsp[0].onereg))
+		    (yyval.mask) = (1 << ((yyvsp[0].onereg) + 1)) - 1 - ((1 << (yyvsp[-2].onereg)) - 1);
+		  else
+		    (yyval.mask) = (1 << ((yyvsp[-2].onereg) + 1)) - 1 - ((1 << (yyvsp[0].onereg)) - 1);
+		}
+    break;
+
+  case 86:
+#line 653 "m68k-parse.y"
+    {
+		  (yyval.onereg) = (yyvsp[0].reg) - DATA0;
+		}
+    break;
+
+  case 87:
+#line 657 "m68k-parse.y"
+    {
+		  (yyval.onereg) = (yyvsp[0].reg) - ADDR0 + 8;
+		}
+    break;
+
+  case 88:
+#line 661 "m68k-parse.y"
+    {
+		  (yyval.onereg) = (yyvsp[0].reg) - FP0 + 16;
+		}
+    break;
+
+  case 89:
+#line 665 "m68k-parse.y"
+    {
+		  if ((yyvsp[0].reg) == FPI)
+		    (yyval.onereg) = 24;
+		  else if ((yyvsp[0].reg) == FPS)
+		    (yyval.onereg) = 25;
+		  else
+		    (yyval.onereg) = 26;
+		}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1986 "m68k-parse.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 675 "m68k-parse.y"
+
+
+/* The string to parse is stored here, and modified by yylex.  */
+
+static char *str;
+
+/* The original string pointer.  */
+
+static char *strorig;
+
+/* If *CCP could be a register, return the register number and advance
+   *CCP.  Otherwise don't change *CCP, and return 0.  */
+
+static enum m68k_register
+m68k_reg_parse (ccp)
+     register char **ccp;
+{
+  char *start = *ccp;
+  char c;
+  char *p;
+  symbolS *symbolp;
+
+  if (flag_reg_prefix_optional)
+    {
+      if (*start == REGISTER_PREFIX)
+	start++;
+      p = start;
+    }
+  else
+    {
+      if (*start != REGISTER_PREFIX)
+	return 0;
+      p = start + 1;
+    }
+
+  if (! is_name_beginner (*p))
+    return 0;
+
+  p++;
+  while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*')
+    p++;
+
+  c = *p;
+  *p = 0;
+  symbolp = symbol_find (start);
+  *p = c;
+
+  if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section)
+    {
+      *ccp = p;
+      return S_GET_VALUE (symbolp);
+    }
+
+  /* In MRI mode, something like foo.bar can be equated to a register
+     name.  */
+  while (flag_mri && c == '.')
+    {
+      ++p;
+      while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*')
+	p++;
+      c = *p;
+      *p = '\0';
+      symbolp = symbol_find (start);
+      *p = c;
+      if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section)
+	{
+	  *ccp = p;
+	  return S_GET_VALUE (symbolp);
+	}
+    }
+
+  return 0;
+}
+
+/* The lexer.  */
+
+static int
+yylex ()
+{
+  enum m68k_register reg;
+  char *s;
+  int parens;
+  int c = 0;
+  int tail = 0;
+  char *hold;
+
+  if (*str == ' ')
+    ++str;
+
+  if (*str == '\0')
+    return 0;
+
+  /* Various special characters are just returned directly.  */
+  switch (*str)
+    {
+    case '@':
+      /* In MRI mode, this can be the start of an octal number.  */
+      if (flag_mri)
+	{
+	  if (ISDIGIT (str[1])
+	      || ((str[1] == '+' || str[1] == '-')
+		  && ISDIGIT (str[2])))
+	    break;
+	}
+      /* Fall through.  */
+    case '#':
+    case '&':
+    case ',':
+    case ')':
+    case '/':
+    case '[':
+    case ']':
+    case '<':
+    case '>':
+      return *str++;
+    case '+':
+      /* It so happens that a '+' can only appear at the end of an
+	 operand, or if it is trailed by an '&'(see mac load insn).
+	 If it appears anywhere else, it must be a unary.  */
+      if (str[1] == '\0' || (str[1] == '&' && str[2] == '\0'))
+	return *str++;
+      break;
+    case '-':
+      /* A '-' can only appear in -(ar), rn-rn, or ar at -.  If it
+         appears anywhere else, it must be a unary minus on an
+         expression, unless it it trailed by a '&'(see mac load insn).  */
+      if (str[1] == '\0' || (str[1] == '&' && str[2] == '\0'))
+	return *str++;
+      s = str + 1;
+      if (*s == '(')
+	++s;
+      if (m68k_reg_parse (&s) != 0)
+	return *str++;
+      break;
+    case '(':
+      /* A '(' can only appear in `(reg)', `(expr,...', `([', `@(', or
+         `)('.  If it appears anywhere else, it must be starting an
+         expression.  */
+      if (str[1] == '['
+	  || (str > strorig
+	      && (str[-1] == '@'
+		  || str[-1] == ')')))
+	return *str++;
+      s = str + 1;
+      if (m68k_reg_parse (&s) != 0)
+	return *str++;
+      /* Check for the case of '(expr,...' by scanning ahead.  If we
+         find a comma outside of balanced parentheses, we return '('.
+         If we find an unbalanced right parenthesis, then presumably
+         the '(' really starts an expression.  */
+      parens = 0;
+      for (s = str + 1; *s != '\0'; s++)
+	{
+	  if (*s == '(')
+	    ++parens;
+	  else if (*s == ')')
+	    {
+	      if (parens == 0)
+		break;
+	      --parens;
+	    }
+	  else if (*s == ',' && parens == 0)
+	    {
+	      /* A comma can not normally appear in an expression, so
+		 this is a case of '(expr,...'.  */
+	      return *str++;
+	    }
+	}
+    }
+
+  /* See if it's a register.  */
+
+  reg = m68k_reg_parse (&str);
+  if (reg != 0)
+    {
+      int ret;
+
+      yylval.reg = reg;
+
+      if (reg >= DATA0 && reg <= DATA7)
+	ret = DR;
+      else if (reg >= ADDR0 && reg <= ADDR7)
+	ret = AR;
+      else if (reg >= FP0 && reg <= FP7)
+	return FPR;
+      else if (reg == FPI
+	       || reg == FPS
+	       || reg == FPC)
+	return FPCR;
+      else if (reg == PC)
+	return LPC;
+      else if (reg >= ZDATA0 && reg <= ZDATA7)
+	ret = ZDR;
+      else if (reg >= ZADDR0 && reg <= ZADDR7)
+	ret = ZAR;
+      else if (reg == ZPC)
+	return LZPC;
+      else
+	return CREG;
+
+      /* If we get here, we have a data or address register.  We
+	 must check for a size or scale; if we find one, we must
+	 return INDEXREG.  */
+
+      s = str;
+
+      if (*s != '.' && *s != ':' && *s != '*')
+	return ret;
+
+      yylval.indexreg.reg = reg;
+
+      if (*s != '.' && *s != ':')
+	yylval.indexreg.size = SIZE_UNSPEC;
+      else
+	{
+	  ++s;
+	  switch (*s)
+	    {
+	    case 'w':
+	    case 'W':
+	      yylval.indexreg.size = SIZE_WORD;
+	      ++s;
+	      break;
+	    case 'l':
+	    case 'L':
+	      yylval.indexreg.size = SIZE_LONG;
+	      ++s;
+	      break;
+	    default:
+	      yyerror (_("illegal size specification"));
+	      yylval.indexreg.size = SIZE_UNSPEC;
+	      break;
+	    }
+	}
+
+      yylval.indexreg.scale = 1;
+
+      if (*s == '*' || *s == ':')
+	{
+	  expressionS scale;
+
+	  ++s;
+
+	  hold = input_line_pointer;
+	  input_line_pointer = s;
+	  expression (&scale);
+	  s = input_line_pointer;
+	  input_line_pointer = hold;
+
+	  if (scale.X_op != O_constant)
+	    yyerror (_("scale specification must resolve to a number"));
+	  else
+	    {
+	      switch (scale.X_add_number)
+		{
+		case 1:
+		case 2:
+		case 4:
+		case 8:
+		  yylval.indexreg.scale = scale.X_add_number;
+		  break;
+		default:
+		  yyerror (_("invalid scale value"));
+		  break;
+		}
+	    }
+	}
+
+      str = s;
+
+      return INDEXREG;
+    }
+
+  /* It must be an expression.  Before we call expression, we need to
+     look ahead to see if there is a size specification.  We must do
+     that first, because otherwise foo.l will be treated as the symbol
+     foo.l, rather than as the symbol foo with a long size
+     specification.  The grammar requires that all expressions end at
+     the end of the operand, or with ',', '(', ']', ')'.  */
+
+  parens = 0;
+  for (s = str; *s != '\0'; s++)
+    {
+      if (*s == '(')
+	{
+	  if (parens == 0
+	      && s > str
+	      && (s[-1] == ')' || ISALNUM (s[-1])))
+	    break;
+	  ++parens;
+	}
+      else if (*s == ')')
+	{
+	  if (parens == 0)
+	    break;
+	  --parens;
+	}
+      else if (parens == 0
+	       && (*s == ',' || *s == ']'))
+	break;
+    }
+
+  yylval.exp.size = SIZE_UNSPEC;
+  if (s <= str + 2
+      || (s[-2] != '.' && s[-2] != ':'))
+    tail = 0;
+  else
+    {
+      switch (s[-1])
+	{
+	case 's':
+	case 'S':
+	case 'b':
+	case 'B':
+	  yylval.exp.size = SIZE_BYTE;
+	  break;
+	case 'w':
+	case 'W':
+	  yylval.exp.size = SIZE_WORD;
+	  break;
+	case 'l':
+	case 'L':
+	  yylval.exp.size = SIZE_LONG;
+	  break;
+	default:
+	  break;
+	}
+      if (yylval.exp.size != SIZE_UNSPEC)
+	tail = 2;
+    }
+
+#ifdef OBJ_ELF
+  {
+    /* Look for @PLTPC, etc.  */
+    char *cp;
+
+    yylval.exp.pic_reloc = pic_none;
+    cp = s - tail;
+    if (cp - 6 > str && cp[-6] == '@')
+      {
+	if (strncmp (cp - 6, "@PLTPC", 6) == 0)
+	  {
+	    yylval.exp.pic_reloc = pic_plt_pcrel;
+	    tail += 6;
+	  }
+	else if (strncmp (cp - 6, "@GOTPC", 6) == 0)
+	  {
+	    yylval.exp.pic_reloc = pic_got_pcrel;
+	    tail += 6;
+	  }
+      }
+    else if (cp - 4 > str && cp[-4] == '@')
+      {
+	if (strncmp (cp - 4, "@PLT", 4) == 0)
+	  {
+	    yylval.exp.pic_reloc = pic_plt_off;
+	    tail += 4;
+	  }
+	else if (strncmp (cp - 4, "@GOT", 4) == 0)
+	  {
+	    yylval.exp.pic_reloc = pic_got_off;
+	    tail += 4;
+	  }
+      }
+  }
+#endif
+
+  if (tail != 0)
+    {
+      c = s[-tail];
+      s[-tail] = 0;
+    }
+
+  hold = input_line_pointer;
+  input_line_pointer = str;
+  expression (&yylval.exp.exp);
+  str = input_line_pointer;
+  input_line_pointer = hold;
+
+  if (tail != 0)
+    {
+      s[-tail] = c;
+      str = s;
+    }
+
+  return EXPR;
+}
+
+/* Parse an m68k operand.  This is the only function which is called
+   from outside this file.  */
+
+int
+m68k_ip_op (s, oparg)
+     char *s;
+     struct m68k_op *oparg;
+{
+  memset (oparg, 0, sizeof *oparg);
+  oparg->error = NULL;
+  oparg->index.reg = ZDATA0;
+  oparg->index.scale = 1;
+  oparg->disp.exp.X_op = O_absent;
+  oparg->odisp.exp.X_op = O_absent;
+
+  str = strorig = s;
+  op = oparg;
+
+  return yyparse ();
+}
+
+/* The error handler.  */
+
+static void
+yyerror (s)
+     const char *s;
+{
+  op->error = s;
+}
+
+

Deleted: branches/binutils/package/gas/po/.cvsignore
===================================================================
--- branches/binutils/package/gas/po/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/po/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1 +0,0 @@
-*.gmo

Modified: branches/binutils/package/gas/po/Make-in
===================================================================
--- branches/binutils/package/gas/po/Make-in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/po/Make-in	2006-12-31 16:27:59 UTC (rev 19)
@@ -186,7 +186,7 @@
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp

Modified: branches/binutils/package/gas/po/POTFILES.in
===================================================================
--- branches/binutils/package/gas/po/POTFILES.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/po/POTFILES.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -116,6 +116,8 @@
 config/tc-v850.h
 config/tc-vax.c
 config/tc-vax.h
+config/tc-xc16x.c
+config/tc-xc16x.h
 config/tc-xstormy16.c
 config/tc-xstormy16.h
 config/tc-xtensa.c

Added: branches/binutils/package/gas/po/es.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gas/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/gas/po/es.po
===================================================================
--- branches/binutils/package/gas/po/es.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/po/es.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,85 +1,77 @@
-# Mensajes en español para gas-2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para gas-2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gas 2.15.96\n"
+"Project-Id-Version: gas 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:33+1030\n"
-"PO-Revision-Date: 2005-03-14 17:12-0600\n"
+"POT-Creation-Date: 2005-10-25 08:41+0930\n"
+"PO-Revision-Date: 2006-05-26 15:10-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga at itam.mx>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: app.c:468 app.c:482
+#: app.c:470 app.c:484
 msgid "end of file in comment"
 msgstr "fin de fichero en el comentario"
 
-#: app.c:561
-msgid "end of file in string; inserted '\"'"
-msgstr "fin de fichero en la cadena; se insertó '\"'"
+#: app.c:560 app.c:605
+#, c-format
+msgid "end of file in string; '%c' inserted"
+msgstr "fin de fichero en la cadena; se insertó '%c'"
 
-#: app.c:606
-msgid "end of file in string; '\"' inserted"
-msgstr "fin de fichero en la cadena; se insertó '\"'"
-
-#: app.c:632
+#: app.c:631
 #, c-format
 msgid "unknown escape '\\%c' in string; ignored"
 msgstr "escape '\\%c' desconocido en la cadena; se ignora"
 
-#: app.c:788
+#: app.c:786
 msgid "end of file not at end of a line; newline inserted"
 msgstr "el fin de fichero no está al final de una línea: se insertó línea nueva"
 
-#: app.c:947
+#: app.c:945
 msgid "end of file in multiline comment"
 msgstr "fin de fichero en comentario multilíneas"
 
-#: app.c:1011
+#: app.c:1010
 msgid "end of file after a one-character quote; \\0 inserted"
 msgstr "fin de fichero después de una comilla de un carácter; se insertó \\0"
 
-#: app.c:1019
+#: app.c:1018
 msgid "end of file in escape character"
 msgstr "fin de fichero en carácter de escape"
 
-#: app.c:1031
+#: app.c:1030
 msgid "missing close quote; (assumed)"
 msgstr "falta la comilla que cierra; (se asume)"
 
-#: app.c:1099 app.c:1153 app.c:1164 app.c:1229
+#: app.c:1098 app.c:1152 app.c:1163 app.c:1228
 msgid "end of file in comment; newline inserted"
 msgstr "fin de fichero en comentario; se insertó una línea nueva"
 
-#: as.c:165
+#: as.c:161
 msgid "missing emulation mode name"
 msgstr "falta el nombre del modo de emulación"
 
-#: as.c:180
+#: as.c:176
 #, c-format
 msgid "unrecognized emulation name `%s'"
 msgstr "nombre de emulación `%s' no reconocido"
 
-#: as.c:228
+#: as.c:223
 #, c-format
-msgid "GNU assembler version %s (%s) using BFD version %s"
-msgstr "GNU ensamblador versión %s (%s) utilizando BFD versión %s"
+msgid "GNU assembler version %s (%s) using BFD version %s\n"
+msgstr "GNU ensamblador versión %s (%s) utilizando BFD versión %s\n"
 
-#: as.c:231
+#: as.c:230
 #, c-format
-msgid "GNU assembler version %s (%s)"
-msgstr "GNU ensamblador versión %s (%s)"
-
-#: as.c:239
-#, c-format
 msgid "Usage: %s [option...] [asmfile...]\n"
 msgstr "Modo de empleo: %s [opción...] [ficheroasm...]\n"
 
-#: as.c:241
+#: as.c:232
 #, c-format
 msgid ""
 "Options:\n"
@@ -106,152 +98,168 @@
 "                      \t  s      incluye símbolos\n"
 "                      \t  =FICH  listar a FICHero (debe ser la última sub-opción)\n"
 
-#: as.c:254
+#: as.c:245
 #, c-format
 msgid "  --alternate             initially turn on alternate macro syntax\n"
 msgstr "  --alternate             activa inicialmente la sintaxis alternativa de macros\n"
 
-#: as.c:256
+#: as.c:247
 #, c-format
 msgid "  -D                      produce assembler debugging messages\n"
 msgstr "  -D                      produce mensajes de depuración de ensamblador\n"
 
-#: as.c:258
+#: as.c:249
 #, c-format
 msgid "  --defsym SYM=VAL        define symbol SYM to given value\n"
 msgstr "  --defsym SIM=VAL        define el símbolo SIM al valor dado\n"
 
-#: as.c:274
+#: as.c:265
 #, c-format
 msgid "                          emulate output (default %s)\n"
 msgstr "                          emula la salida (por defecto %s)\n"
 
-#: as.c:279
+#: as.c:270
 #, c-format
 msgid "  --execstack             require executable stack for this object\n"
 msgstr "  --execstack             requiere pila ejecutable para este objeto\n"
 
-#: as.c:281
+#: as.c:272
 #, c-format
 msgid "  --noexecstack           don't require executable stack for this object\n"
 msgstr "  --noexecstack           no requiere pila ejecutable para este objeto\n"
 
-#: as.c:284
+#: as.c:275
 #, c-format
 msgid "  -f                      skip whitespace and comment preprocessing\n"
 msgstr "  -f                      salta espacios en blanco y comentarios de preprocesamiento\n"
 
-#: as.c:286
+#: as.c:277
 #, c-format
 msgid "  -g --gen-debug          generate debugging information\n"
 msgstr "  -g --gen-debug          genera información de depuración\n"
 
-#: as.c:288
+#: as.c:279
 #, c-format
 msgid "  --gstabs                generate STABS debugging information\n"
 msgstr "  --gstabs                genera información de depuración de STABS\n"
 
-#: as.c:290
+#: as.c:281
 #, c-format
 msgid "  --gstabs+               generate STABS debug info with GNU extensions\n"
 msgstr "  --gstabs+               genera información de depuración de STABS con extensiones GNU\n"
 
-#: as.c:292
+#: as.c:283
 #, c-format
 msgid "  --gdwarf-2              generate DWARF2 debugging information\n"
 msgstr "  --gdwarf-2              genera información de depuración DWARF2\n"
 
-#: as.c:294
+#: as.c:285
 #, c-format
+msgid "  --hash-size=<value>     set the hash table size close to <value>\n"
+msgstr "  --hash-size=<valor>     establece el tamaño de la tabla de dispersión cerca a <valor>\n"
+
+#: as.c:287
+#, c-format
 msgid "  --help                  show this message and exit\n"
 msgstr "  --help                  muestra este mensaje y termina\n"
 
-#: as.c:296
+#: as.c:289
 #, c-format
 msgid "  --target-help           show target specific options\n"
 msgstr "  --target-help           muestra las opciones específicas del objetivo\n"
 
-#: as.c:298
+#: as.c:291
 #, c-format
 msgid "  -I DIR                  add DIR to search list for .include directives\n"
 msgstr "  -I DIR                  agrega DIR a la lista de búsqueda para directivas .include\n"
 
-#: as.c:300
+#: as.c:293
 #, c-format
 msgid "  -J                      don't warn about signed overflow\n"
 msgstr "  -J                      no avisa sobre desbordamiento con signo\n"
 
-#: as.c:302
+#: as.c:295
 #, c-format
 msgid "  -K                      warn when differences altered for long displacements\n"
 msgstr "  -K                      avisa cuando hay diferencias alteradas por desubicaciones largas\n"
 
-#: as.c:304
+#: as.c:297
 #, c-format
 msgid "  -L,--keep-locals        keep local symbols (e.g. starting with `L')\n"
 msgstr "  -L,--keep-locals        conserva los símbolos locales (p.e. inician con `L')\n"
 
-#: as.c:306
+#: as.c:299
 #, c-format
 msgid "  -M,--mri                assemble in MRI compatibility mode\n"
 msgstr "  -M,--mri                ensambla en modo de compatibilidad MRI\n"
 
-#: as.c:308
+#: as.c:301
 #, c-format
 msgid "  --MD FILE               write dependency information in FILE (default none)\n"
 msgstr "  --MD FICHERO            escribe la información de dependencias en el FICHERO (por defecto ninguno)\n"
 
-#: as.c:310
+#: as.c:303
 #, c-format
 msgid "  -nocpp                  ignored\n"
 msgstr "  -nocpp                  ignorado\n"
 
-#: as.c:312
+#: as.c:305
 #, c-format
 msgid "  -o OBJFILE              name the object-file output OBJFILE (default a.out)\n"
 msgstr "  -o FICHOBJ              nombra la salida del objeto fichero FICHOBJ (por defecto a.out)\n"
 
-#: as.c:314
+#: as.c:307
 #, c-format
 msgid "  -R                      fold data section into text section\n"
 msgstr "  -R                      pliega la sección de datos en la sección de texto\n"
 
-#: as.c:316
+#: as.c:309
 #, c-format
+msgid ""
+"  --reduce-memory-overheads \n"
+"                          prefer smaller memory use at the cost of longer\n"
+"                          assembly times\n"
+msgstr ""
+"  --reduce-memory-overheads \n"
+"                          prefiere un menor uso de memoria al costo de\n"
+"                          tiempos de ensamblado más largos\n"
+
+#: as.c:313
+#, c-format
 msgid "  --statistics            print various measured statistics from execution\n"
 msgstr "  --statistics            muestra varias estadísticas medidas de la ejecución\n"
 
-#: as.c:318
+#: as.c:315
 #, c-format
 msgid "  --strip-local-absolute  strip local absolute symbols\n"
 msgstr "  --strip-local-absolute  remueve los símbolos locales absolutos\n"
 
-#: as.c:320
+#: as.c:317
 #, c-format
 msgid "  --traditional-format    Use same format as native assembler when possible\n"
 msgstr "  --traditional-format    Usa el mismo formato que el ensamblador nativo en lo posible\n"
 
-#: as.c:322
+#: as.c:319
 #, c-format
 msgid "  --version               print assembler version number and exit\n"
 msgstr "  --version               muestra el número de versión del ensamblador y termina\n"
 
-#: as.c:324
+#: as.c:321
 #, c-format
 msgid "  -W  --no-warn           suppress warnings\n"
 msgstr "  -W  --no-warn           suprime los avisos\n"
 
-#: as.c:326
+#: as.c:323
 #, c-format
 msgid "  --warn                  don't suppress warnings\n"
 msgstr "  --warn                  no suprime los avisos\n"
 
-#: as.c:328
+#: as.c:325
 #, c-format
 msgid "  --fatal-warnings        treat warnings as errors\n"
 msgstr "  --fatal-warnings        trata los avisos como errores\n"
 
-#: as.c:330
+#: as.c:327
 #, c-format
 msgid ""
 "  --itbl INSTTBL          extend instruction set to include instructions\n"
@@ -261,22 +269,22 @@
 "                          instrucciones que coincidan con las especificaciones\n"
 "                          definidas en el fichero INSTTBL\n"
 
-#: as.c:333
+#: as.c:330
 #, c-format
 msgid "  -w                      ignored\n"
 msgstr "  -w                      ignorado\n"
 
-#: as.c:335
+#: as.c:332
 #, c-format
 msgid "  -X                      ignored\n"
 msgstr "  -X                      ignorado\n"
 
-#: as.c:337
+#: as.c:334
 #, c-format
 msgid "  -Z                      generate object file even after errors\n"
 msgstr "  -Z                      genera el fichero objeto aún después de errores\n"
 
-#: as.c:339
+#: as.c:336
 #, c-format
 msgid ""
 "  --listing-lhs-width     set the width in words of the output data column of\n"
@@ -285,7 +293,7 @@
 "  --listing-lhs-width     establece la anchura en palabras de la columna de\n"
 "                          datos de salida en el listado\n"
 
-#: as.c:342
+#: as.c:339
 #, c-format
 msgid ""
 "  --listing-lhs-width2    set the width in words of the continuation lines\n"
@@ -297,7 +305,7 @@
 "                          ignora si es más pequeño que la anchura de la\n"
 "                          primera línea\n"
 
-#: as.c:346
+#: as.c:343
 #, c-format
 msgid ""
 "  --listing-rhs-width     set the max width in characters of the lines from\n"
@@ -306,7 +314,7 @@
 "  --listing-rhs-width     establece la anchura máxima en caracteres de las\n"
 "                          líneas del fichero fuente\n"
 
-#: as.c:349
+#: as.c:346
 #, c-format
 msgid ""
 "  --listing-cont-lines    set the maximum number of continuation lines used\n"
@@ -316,17 +324,18 @@
 "                          utilizadas para la columna de datos de salida del\n"
 "                          listado\n"
 
-#: as.c:356
+#: as.c:353
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
 
-#: as.c:549
+#: as.c:553
 #, c-format
 msgid "unrecognized option -%c%s"
 msgstr "opción -%c%s no reconocida"
 
-#: as.c:588 as.c:590
+#. This output is intended to follow the GNU standards document.
+#: as.c:591
 #, c-format
 msgid "GNU assembler %s\n"
 msgstr "GNU ensamblador %s\n"
@@ -387,36 +396,40 @@
 msgid "bad defsym; format is --defsym name=value"
 msgstr "defsym erróneo; el formato es --defsym nombre=valor"
 
-#: as.c:654
+#: as.c:650
 msgid "no file name following -t option"
 msgstr "no hay un nombre de fichero a continuación de la opción -t"
 
-#: as.c:669
+#: as.c:665
 #, c-format
 msgid "failed to read instruction table %s\n"
 msgstr "falló la lectura de la tabla de instrucciones %s\n"
 
-#: as.c:830
+#: as.c:832
 #, c-format
 msgid "invalid listing option `%c'"
 msgstr "opción de listado `%c' inválida"
 
-#: as.c:890
+#: as.c:885
+msgid "--hash-size needs a numeric argument"
+msgstr "--hash-size necesita un argumento numérico"
+
+#: as.c:910
 #, c-format
 msgid "%s: total time in assembly: %ld.%06ld\n"
 msgstr "%s: tiempo total en ensamblado: %ld.%06ld\n"
 
-#: as.c:893
+#: as.c:913
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr "%s: tamaño de datos %ld\n"
 
-#: as.c:1202
+#: as.c:1175
 #, c-format
 msgid "%d warnings, treating warnings as errors"
 msgstr "%d avisos, tratando los avisos como errores"
 
-#: as.h:199
+#: as.h:200
 #, c-format
 msgid "Case value %ld unexpected at line %d of file \"%s\"\n"
 msgstr "Valor de case %ld inesperado en la línea %d del fichero \"%s\"\n"
@@ -425,7 +438,7 @@
 #. * We have a GROSS internal error.
 #. * This should never happen.
 #.
-#: atof-generic.c:419 config/tc-m68k.c:3160
+#: atof-generic.c:419 config/tc-m68k.c:3118
 msgid "failed sanity check"
 msgstr "falló la prueba de sanidad"
 
@@ -437,428 +450,342 @@
 msgid "non-constant expression in \".if\" statement"
 msgstr "expresión no constante en la declaración \".if\""
 
-#: cond.c:242
+#: cond.c:276
 msgid "bad format for ifc or ifnc"
 msgstr "formato erróneo para ifc ó ifnc"
 
-#: cond.c:272
+#: cond.c:306
 msgid "\".elseif\" without matching \".if\""
 msgstr "\".elseif\" sin un \".if\" coincidente"
 
-#: cond.c:276
+#: cond.c:310
 msgid "\".elseif\" after \".else\""
 msgstr "\".elseif\" después de \".else\""
 
-#: cond.c:279 cond.c:385
+#: cond.c:313 cond.c:419
 msgid "here is the previous \"else\""
 msgstr "aquí está el \"else\" anterior"
 
-#: cond.c:282 cond.c:388
+#: cond.c:316 cond.c:422
 msgid "here is the previous \"if\""
 msgstr "aquí está el \"if\" anterior"
 
-#: cond.c:311
+#: cond.c:345
 msgid "non-constant expression in \".elseif\" statement"
 msgstr "expresión no constante en la declaración \".elseif\""
 
-#: cond.c:349
+#: cond.c:383
 msgid "\".endif\" without \".if\""
 msgstr "\".endif\" sin \".if\""
 
-#: cond.c:378
+#: cond.c:412
 msgid "\".else\" without matching \".if\""
 msgstr "\".else\" sin un \".if\" coincidente"
 
-#: cond.c:382
+#: cond.c:416
 msgid "duplicate \"else\""
 msgstr "\"else\" duplicado"
 
-#: cond.c:433
+#: cond.c:467
 msgid ".ifeqs syntax error"
 msgstr "error sintáctico .ifeqs"
 
-#: cond.c:514
+#: cond.c:548
 msgid "end of macro inside conditional"
 msgstr "fin de macro dentro de un condicional"
 
-#: cond.c:516
+#: cond.c:550
 msgid "end of file inside conditional"
 msgstr "fin de fichero dentro de un condicional"
 
-#: cond.c:519
+#: cond.c:553
 msgid "here is the start of the unterminated conditional"
 msgstr "aquí es el inicio del condicional sin terminar"
 
-#: cond.c:523
+#: cond.c:557
 msgid "here is the \"else\" of the unterminated conditional"
 msgstr "aquí está el \"else\" del condicional sin terminar"
 
-#: config/obj-aout.c:162
+#: config/obj-aout.c:85
 #, c-format
 msgid "Attempt to put a common symbol into set %s"
 msgstr "Se intentó poner un símbolo común en el conjunto %s"
 
-#: config/obj-aout.c:166
+#: config/obj-aout.c:89
 #, c-format
 msgid "Attempt to put an undefined symbol into set %s"
 msgstr "Se intentó poner un símbolo indefinido en el conjunto %s"
 
-#: config/obj-aout.c:197 config/obj-coff.c:1415
+#: config/obj-aout.c:116 config/obj-coff.c:1328
 #, c-format
 msgid "Symbol `%s' can not be both weak and common"
 msgstr "El símbolo `%s' no puede ser débil y común al mismo tiempo"
 
-#: config/obj-aout.c:255 config/obj-coff.c:2156
-msgid "unresolved relocation"
-msgstr "reubicación sin resolver"
-
-#: config/obj-aout.c:257 config/obj-coff.c:2158
+#: config/obj-coff.c:133
 #, c-format
-msgid "bad relocation: symbol `%s' not in symbol table"
-msgstr "reubicación errónea: el símbolo `%s' no está en la tabla de símbolos"
-
-#: config/obj-aout.c:353
-#, c-format
-msgid "%s: bad type for weak symbol"
-msgstr "%s: tipo erróneo para un símbolo débil"
-
-#: config/obj-aout.c:459 config/obj-coff.c:3076 write.c:1904
-#, c-format
-msgid "%s: global symbols not supported in common sections"
-msgstr "%s: los símbolos globales no tienen soporte en las secciones comunes"
-
-#: config/obj-aout.c:529
-#, c-format
-msgid "Local symbol %s never defined."
-msgstr "El símbolo local %s nunca se definió."
-
-#: config/obj-bout.c:312 config/obj-vms.c:449
-#, c-format
-msgid "Local symbol %s never defined"
-msgstr "El símbolo local %s nunca se definió"
-
-#: config/obj-coff.c:165
-#, c-format
 msgid "Inserting \"%s\" into structure table failed: %s"
 msgstr "Falló la inserción de \"%s\" en la tabla de estructuras: %s"
 
 #. Zero is used as an end marker in the file.
-#: config/obj-coff.c:426
+#: config/obj-coff.c:354
 msgid "Line numbers must be positive integers\n"
 msgstr "Los números de línea deben ser enteros positivos\n"
 
-#. Wrong context.
-#: config/obj-coff.c:460 config/obj-coff.c:2501
+#: config/obj-coff.c:386
 msgid ".ln pseudo-op inside .def/.endef: ignored."
 msgstr "pseudo-operador .ln dentro de .def/.endef: ignorado."
 
-#: config/obj-coff.c:503 ecoff.c:3240
+#: config/obj-coff.c:428 ecoff.c:3240
 msgid ".loc outside of .text"
 msgstr ".loc fuera de .text"
 
-#: config/obj-coff.c:510
+#: config/obj-coff.c:435
 msgid ".loc pseudo-op inside .def/.endef: ignored."
 msgstr "pseudo-operador .loc dentro de .def/.endef: ignorado."
 
-#: config/obj-coff.c:598 config/obj-coff.c:2553
+#: config/obj-coff.c:516
 msgid ".def pseudo-op used inside of .def/.endef: ignored."
 msgstr "pseudo-operador .def usado dentro de .def/.endef: ignorado."
 
-#: config/obj-coff.c:644 config/obj-coff.c:2605
+#: config/obj-coff.c:555
 msgid ".endef pseudo-op used outside of .def/.endef: ignored."
 msgstr "pseudo-operador .endef usado fuera de .def/.endef: ignorado."
 
-#: config/obj-coff.c:682
+#: config/obj-coff.c:594
 #, c-format
 msgid "`%s' symbol without preceding function"
 msgstr "símbolo `%s' sin una función precedente"
 
-#: config/obj-coff.c:769 config/obj-coff.c:2685
+#: config/obj-coff.c:681
 #, c-format
 msgid "unexpected storage class %d"
 msgstr "clase de almacenamiento %d inesperada"
 
-#: config/obj-coff.c:882 config/obj-coff.c:2792
+#: config/obj-coff.c:790
 msgid ".dim pseudo-op used outside of .def/.endef: ignored."
 msgstr "pseudo-operador .dim usado fuera de .def/.endef: ignorado."
 
-#: config/obj-coff.c:902 config/obj-coff.c:2812
+#: config/obj-coff.c:810
 msgid "badly formed .dim directive ignored"
 msgstr "directiva .dim formada erróneamente ignorada"
 
-#: config/obj-coff.c:953 config/obj-coff.c:2869
+#: config/obj-coff.c:859
 msgid ".size pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .size usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:969 config/obj-coff.c:2885
+#: config/obj-coff.c:874
 msgid ".scl pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .scl usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:987 config/obj-coff.c:2903
+#: config/obj-coff.c:891
 msgid ".tag pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .tag usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:1006 config/obj-coff.c:2920
+#: config/obj-coff.c:909
 #, c-format
 msgid "tag not found for .tag %s"
 msgstr "no se encontró una marca para .tag %s"
 
-#: config/obj-coff.c:1021 config/obj-coff.c:2934
+#: config/obj-coff.c:922
 msgid ".type pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .type usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:1043 config/obj-coff.c:2954
+#: config/obj-coff.c:941
 msgid ".val pseudo-op used outside of .def/.endef ignored."
 msgstr "pseudo-operador .val usado fuera de .def/.endef ignorado."
 
-#: config/obj-coff.c:1180
+#: config/obj-coff.c:1108
 msgid "badly formed .weak directive ignored"
 msgstr "directiva .weak formada erróneamente ignorada"
 
-#: config/obj-coff.c:1372 config/obj-coff.c:3147
+#: config/obj-coff.c:1286
 msgid "mismatched .eb"
 msgstr ".eb sin coincidencia"
 
-#: config/obj-coff.c:1393 config/obj-coff.c:3178
-msgid "C_EFCN symbol out of scope"
-msgstr "símbolo C_EFCN fuera de ámbito"
+#: config/obj-coff.c:1307
+#, c-format
+msgid "C_EFCN symbol for %s out of scope"
+msgstr "símbolo C_EFCN para %s fuera de ámbito"
 
 #. STYP_INFO
 #. STYP_LIB
 #. STYP_OVER
-#: config/obj-coff.c:1621
+#: config/obj-coff.c:1533
 #, c-format
 msgid "unsupported section attribute '%c'"
 msgstr "atributo de sección '%c' sin soporte"
 
-#: config/obj-coff.c:1626 config/obj-coff.c:3874 config/tc-ppc.c:4595
+#: config/obj-coff.c:1538 config/tc-ppc.c:4610
 #, c-format
 msgid "unknown section attribute '%c'"
 msgstr "atributo de sección '%c' desconocido"
 
-#: config/obj-coff.c:1656 config/tc-ppc.c:4613 config/tc-tic54x.c:4306
-#: read.c:2545
+#: config/obj-coff.c:1568 config/tc-ppc.c:4628 config/tc-tic54x.c:4287
+#: read.c:2551
 #, c-format
 msgid "error setting flags for \"%s\": %s"
 msgstr "error al establecer las opciones para \"%s\": %s"
 
-#: config/obj-coff.c:1667
+#: config/obj-coff.c:1579
 #, c-format
 msgid "Ignoring changed section attributes for %s"
 msgstr "Ignorando los atributos de sección cambiados para %s"
 
-#: config/obj-coff.c:1803
+#: config/obj-coff.c:1710
 #, c-format
 msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"
 msgstr "0x%lx: \"%s\" tipo = %ld, clase = %d, segmento = %d\n"
 
-#: config/obj-coff.c:1983 config/obj-ieee.c:69
-#, c-format
-msgid "Out of step\n"
-msgstr "Fuera del paso\n"
-
-#: config/obj-coff.c:2420
-msgid "bfd_coff_swap_scnhdr_out failed"
-msgstr "falló bfd_coff_swap_scnhdr_out"
-
-#: config/obj-coff.c:2641
-#, c-format
-msgid "`.bf' symbol without preceding function\n"
-msgstr "símbolo `.bf' sin una función precedente\n"
-
-#: config/obj-coff.c:3581 config/obj-ieee.c:511
-#, c-format
-msgid "FATAL: Can't create %s"
-msgstr "FATAL: No se puede crear %s"
-
-#: config/obj-coff.c:3784
-#, c-format
-msgid "Too many new sections; can't add \"%s\""
-msgstr "Demasiadas secciones nuevas; no se puede agregar \"%s\""
-
-#: config/obj-coff.c:4247 config/tc-i960.c:3222
-#, c-format
-msgid "No 'bal' entry point for leafproc %s"
-msgstr "No hay un punto de entrada 'bal' para el proceso hoja %s"
-
-#: config/obj-coff.c:4323
-#, c-format
-msgid "Negative of non-absolute symbol %s"
-msgstr "Negativo de un símbolo %s que no es absoluto"
-
-#: config/obj-coff.c:4343
-msgid "callj to difference of 2 symbols"
-msgstr "callj para diferenciar a 2 símbolos"
-
-#: config/obj-coff.c:4383
-#, c-format
-msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."
-msgstr "No se puede emitir la reubicación {- %s-seg símbolo \"%s\"} @ dirección del fichero %ld."
-
-#: config/obj-coff.c:4469 config/tc-i960.c:2849
-msgid "can't use COBR format with external label"
-msgstr "no se puede utilizar el formato COBR con una etiqueta externa"
-
-#: config/obj-coff.c:4542
-#, c-format
-msgid "Value of %ld too large for field of %d bytes at 0x%lx"
-msgstr "El valor de %ld es demasiado grande para el campo de %d bytes en 0x%lx"
-
-#: config/obj-coff.c:4556
-#, c-format
-msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx"
-msgstr "Desbordamiento con signo de .word; el interruptor puede ser demasiado grande; %ld en 0x%lx"
-
-#: config/obj-ecoff.c:192
+#: config/obj-ecoff.c:125
 msgid "Can't set GP value"
 msgstr "No se puede establecer el valor GP"
 
-#: config/obj-ecoff.c:199
+#: config/obj-ecoff.c:132
 msgid "Can't set register masks"
 msgstr "No se pueden establecer las máscaras de registro"
 
-#: config/obj-elf.c:307 config/tc-sparc.c:3976 config/tc-v850.c:461
+#: config/obj-elf.c:318 config/tc-sparc.c:3973 config/tc-v850.c:451
 #, c-format
 msgid "bad .common segment %s"
 msgstr "segmento .common %s erróneo"
 
-#: config/obj-elf.c:574
+#: config/obj-elf.c:596
 #, c-format
 msgid "setting incorrect section type for %s"
 msgstr "se establece un tipo de sección incorrecto para %s"
 
-#: config/obj-elf.c:579
+#: config/obj-elf.c:601
 #, c-format
 msgid "ignoring incorrect section type for %s"
 msgstr "se ignora un tipo de sección incorrecto para %s"
 
-#: config/obj-elf.c:616
+#: config/obj-elf.c:638
 #, c-format
 msgid "setting incorrect section attributes for %s"
 msgstr "se establecen atributos de sección incorrectos para %s"
 
-#: config/obj-elf.c:668
+#: config/obj-elf.c:690
 #, c-format
 msgid "ignoring changed section type for %s"
 msgstr "se ignoran el tipo de sección cambiado para %s"
 
-#: config/obj-elf.c:680
+#: config/obj-elf.c:702
 #, c-format
 msgid "ignoring changed section attributes for %s"
 msgstr "se ignoran los atributos de sección cambiados para %s"
 
-#: config/obj-elf.c:682
+#: config/obj-elf.c:704
 #, c-format
 msgid "ignoring changed section entity size for %s"
 msgstr "se ignoran el tamaño de entidad de sección cambiado para %s"
 
-#: config/obj-elf.c:735
+#: config/obj-elf.c:757
 msgid "unrecognized .section attribute: want a,w,x,M,S,G,T"
 msgstr "atributo de .section no reconocido: se quiere a,w,x,M,S,G,T"
 
-#: config/obj-elf.c:772
+#: config/obj-elf.c:794
 msgid "unrecognized section attribute"
 msgstr "atributo de sección no reconocido"
 
-#: config/obj-elf.c:800 read.c:2528
+#: config/obj-elf.c:822 read.c:2535
 msgid "unrecognized section type"
 msgstr "tipo de sección no reconocido"
 
-#: config/obj-elf.c:830
+#: config/obj-elf.c:852
 msgid "missing name"
 msgstr "falta un nombre"
 
-#: config/obj-elf.c:941
+#: config/obj-elf.c:963
 msgid "invalid merge entity size"
 msgstr "tamaño de entidad de mezcla inválido"
 
-#: config/obj-elf.c:948
+#: config/obj-elf.c:970
 msgid "entity size for SHF_MERGE not specified"
 msgstr "no se especificó el tamaño de entidad para SHF_MERGE"
 
-#: config/obj-elf.c:968
+#: config/obj-elf.c:990
 msgid "group name for SHF_GROUP not specified"
 msgstr "no se especificó el tamaño de entidad para SHF_GROUP"
 
-#: config/obj-elf.c:981
+#: config/obj-elf.c:1003
 msgid "character following name is not '#'"
 msgstr "el carácter a continuación del nombre no es '#'"
 
-#: config/obj-elf.c:1078
+#: config/obj-elf.c:1118
 msgid ".previous without corresponding .section; ignored"
 msgstr ".previous sin .section correspondiente; ignorado"
 
-#: config/obj-elf.c:1104
+#: config/obj-elf.c:1144
 msgid ".popsection without corresponding .pushsection; ignored"
 msgstr ".popsection sin .pushsection correspondiente; ignorado"
 
-#: config/obj-elf.c:1156
+#: config/obj-elf.c:1196
 msgid "expected comma after name in .symver"
 msgstr "se esperaba una coma después del nombre en .symver"
 
-#: config/obj-elf.c:1180
+#: config/obj-elf.c:1220
 #, c-format
 msgid "missing version name in `%s' for symbol `%s'"
 msgstr "falta el nombre de versión en `%s' para el símbolo `%s'"
 
-#: config/obj-elf.c:1191
+#: config/obj-elf.c:1231
 #, c-format
 msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
 msgstr "versiones múltiples [`%s'|`%s'] para el símbolo `%s'"
 
-#: config/obj-elf.c:1421
+#: config/obj-elf.c:1461
 msgid "expected quoted string"
 msgstr "se esperaba una cadena entre comillas"
 
-#: config/obj-elf.c:1441
+#: config/obj-elf.c:1481
 #, c-format
 msgid "expected comma after name `%s' in .size directive"
 msgstr "se esperaba una coma después del nombre `%s' en la directiva .size"
 
-#: config/obj-elf.c:1450
+#: config/obj-elf.c:1490
 msgid "missing expression in .size directive"
 msgstr "falta una expresión en la directiva .size"
 
-#: config/obj-elf.c:1537
+#: config/obj-elf.c:1577
 #, c-format
 msgid "unrecognized symbol type \"%s\""
 msgstr "tipo de símbolo \"%s\" no reconocido"
 
-#: config/obj-elf.c:1705
+#: config/obj-elf.c:1745
 msgid ".size expression too complicated to fix up"
 msgstr "la expresión .size es demasiado complicada para componerla"
 
-#: config/obj-elf.c:1737
+#: config/obj-elf.c:1777
 #, c-format
 msgid "invalid attempt to declare external version name as default in symbol `%s'"
 msgstr "intento inválido de declarar un nombre de versión externo como valor por defecto en el símbolo `%s'"
 
-#: config/obj-elf.c:1798 ecoff.c:3598
+#: config/obj-elf.c:1838 ecoff.c:3598
 #, c-format
 msgid "symbol `%s' can not be both weak and common"
 msgstr "el símbolo `%s' no puede ser débil y común al mismo tiempo"
 
-#: config/obj-elf.c:1905
+#: config/obj-elf.c:1945
 #, c-format
 msgid "assuming all members of group `%s' are COMDAT"
 msgstr "se asume que todos los miembros del grupo `%s' son COMDAT"
 
-#: config/obj-elf.c:1927
+#: config/obj-elf.c:1967
 #, c-format
 msgid "can't create group: %s"
 msgstr "no se puede crear un grupo: %s"
 
-#: config/obj-elf.c:2036
+#: config/obj-elf.c:2076
 #, c-format
 msgid "failed to set up debugging information: %s"
 msgstr "falló al establecer la información de depuración: %s"
 
-#: config/obj-elf.c:2056
+#: config/obj-elf.c:2096
 #, c-format
 msgid "can't start writing .mdebug section: %s"
 msgstr "no se puede iniciar la escritura de la sección .mdebug: %s"
 
-#: config/obj-elf.c:2064
+#: config/obj-elf.c:2104
 #, c-format
 msgid "could not write .mdebug section: %s"
 msgstr "no se puede escribir la sección .mdebug: %s"
@@ -868,2054 +795,1911 @@
 msgid "can't allocate ELF private section data: %s"
 msgstr "no se puede crear la sección de datos privados ELF: %s"
 
+#: config/obj-ieee.c:69
+#, c-format
+msgid "Out of step\n"
+msgstr "Fuera del paso\n"
+
 #: config/obj-ieee.c:449
 msgid "too many sections"
 msgstr "demasiadas secciones"
 
-#: config/obj-som.c:140
+#: config/obj-ieee.c:511
+#, c-format
+msgid "FATAL: Can't create %s"
+msgstr "FATAL: No se puede crear %s"
+
+#: config/obj-som.c:129
 msgid "Only one .version pseudo-op per file!"
 msgstr "¡Sólo un pseudo-operador .version por fichero!"
 
-#: config/obj-som.c:157 config/obj-som.c:203
+#: config/obj-som.c:146 config/obj-som.c:191
 msgid "Expected quoted string"
 msgstr "Se esperaba una cadena entre comillas"
 
-#: config/obj-som.c:166
+#: config/obj-som.c:155
 #, c-format
 msgid "FATAL: Attaching version header %s"
 msgstr "FATAL: Adjuntando el encabezado de versión %s"
 
-#: config/obj-som.c:186
+#: config/obj-som.c:174
 msgid "Only one .copyright pseudo-op per file!"
 msgstr "¡Sólo un pseudo-operador .copyright por fichero!"
 
-#: config/obj-som.c:212
+#: config/obj-som.c:200
 #, c-format
 msgid "FATAL: Attaching copyright header %s"
 msgstr "FATAL: Adjuntando el encabezado de copyright %s"
 
-#: config/obj-vms.c:367
+#: config/tc-alpha.c:592
 #, c-format
-msgid "compiler emitted zero-size common symbol `%s' already defined"
-msgstr "el símbolo común de tamaño cero emitido por el compilador `%s' ya está definido"
-
-#: config/obj-vms.c:375
-#, c-format
-msgid "compiler redefined zero-size common symbol `%s'"
-msgstr "símbolo común de tamaño cero `%s' redefinido por el compilador"
-
-#: config/obj-vms.c:482
-#, c-format
-msgid "Couldn't create VMS object file \"%s\""
-msgstr "No se puede crear el fichero objeto VMS \"%s\""
-
-#: config/obj-vms.c:507
-msgid "I/O error writing VMS object file (length prefix)"
-msgstr "Error de E/S al escribir el fichero objeto VMS (longitud del prefijo)"
-
-#: config/obj-vms.c:521
-msgid "I/O error writing VMS object file"
-msgstr "Error de E/S al escribir el fichero objeto VMS"
-
-#: config/obj-vms.c:1057
-#, c-format
-msgid "Couldn't find source file \"%s\", status=%%X%x"
-msgstr "No se puede encontrar el fichero fuente \"%s\", estado=%%X%x"
-
-#: config/obj-vms.c:1505 config/obj-vms.c:2677
-#, c-format
-msgid "debugger forward reference error, dbx type %d"
-msgstr "error de referencia hacia adelante del depurador, tipo dbx %d"
-
-#: config/obj-vms.c:1579
-#, c-format
-msgid "Variable descriptor %d too complicated.  Defined as `void *'."
-msgstr "El descriptor de variable %d es demasiado complicado.  Se define como `void *'."
-
-#: config/obj-vms.c:1894
-msgid ""
-"***Warning - the assembly code generated by the compiler has placed \n"
-" global constant(s) in the text psect.  These will not be available to \n"
-" other modules, since this is not the correct way to handle this. You \n"
-" have two options: 1) get a patched compiler that does not put global \n"
-" constants in the text psect, or 2) remove the 'const' keyword from \n"
-" definitions of global variables in your source module(s).  Don't say \n"
-" I didn't warn you! \n"
-msgstr ""
-"***Aviso - el código ensamblador generado por el compilador ha colocado \n"
-" constante(s) global(es) en la psect de texto.  Éstas no estarán disponibles \n"
-" para otros módulos, ya que no es la forma correcta de manejarlo. Tiene \n"
-" dos opciones: 1) obtener un compilador parchado que no coloque constantes \n"
-" globales en la psect de texto, o 2) quitar la palabra clave 'const' de \n"
-" las definiciones de las variables globales en el(los) módulo(s) fuente. \n"
-" ¡No diga que no se le advirtió! \n"
-
-#: config/obj-vms.c:2199
-#, c-format
-msgid "debugginer output: %d is an unknown untyped variable."
-msgstr "salida del depurador: %d es una variable sin tipo desconocido."
-
-#: config/obj-vms.c:2419
-#, c-format
-msgid "debugger output: structure element `%s' has undefined type"
-msgstr "salida del depurador: el elmento de la estructura `%s' tiene un tipo indefinido"
-
-#: config/obj-vms.c:2530
-#, c-format
-msgid "debugger output: %d is an unknown type of variable."
-msgstr "salida del depurador: %d es un tipo desconocido de variable."
-
-#: config/obj-vms.c:2666
-#, c-format
-msgid "debugger output: Unable to resolve %d circular references."
-msgstr "salida del depurador: No se pueden resolver %d referencias circulares."
-
-#: config/obj-vms.c:2854
-#, c-format
-msgid "Module name truncated: %s\n"
-msgstr "Nombre de módulo truncado: %s\n"
-
-#: config/obj-vms.c:3096
-#, c-format
-msgid "Symbol %s replaced by %s\n"
-msgstr "El símbolo %s se reemplazó por %s\n"
-
-#. impossible
-#: config/obj-vms.c:3322
-#, c-format
-msgid "Unknown VMS psect type (%ld)"
-msgstr "Tipo psect VMS desconocido (%ld)"
-
-#: config/obj-vms.c:3360
-#, c-format
-msgid "Globalsymbol attribute for symbol %s was unexpected."
-msgstr "El atributo de globalsymbol para el símbolo %s era inesperado."
-
-#: config/obj-vms.c:3484
-msgid "Invalid data type for globalvalue"
-msgstr "Tipo de dato inválido para globalvalue"
-
-#: config/obj-vms.c:3496
-#, c-format
-msgid "Invalid globalvalue of %s"
-msgstr "Globalvalue inválido de %s"
-
-#: config/obj-vms.c:3736
-msgid "Couldn't find fixup fragment when checking for indirect reference"
-msgstr "No se puede encontrar el fragmento de compostura al revisar por referencias indirectas"
-
-#: config/obj-vms.c:4014 config/obj-vms.c:4149
-msgid "Fixup data addsy and subsy don't have the same type"
-msgstr "Los datos de compostura addsy y subsy no tienen el mismo tipo"
-
-#: config/obj-vms.c:4018 config/obj-vms.c:4153
-msgid "Fixup data addsy and subsy don't have an appropriate type"
-msgstr "Los datos de compostura addsy y subsy no tienen un tipo apropiado"
-
-#: config/obj-vms.c:4021 config/obj-vms.c:4156
-msgid "Fixup data is erroneously \"pcrel\""
-msgstr "Los datos de compostura son \"pcrel\" erróneamente"
-
-#: config/obj-vms.c:4037 config/obj-vms.c:4173
-msgid "Fixup datum is not a longword"
-msgstr "El dato de compostura no es un longword"
-
-#: config/obj-vms.c:4041 config/obj-vms.c:4177
-msgid "Fixup datum is not \"fixP->fx_addsy\""
-msgstr "El dato de compostura no es \"fixP->fx_addsy\""
-
-#: config/obj-vms.c:4353
-msgid "Can't handle global xtors symbols yet."
-msgstr "No se pueden manejar símbolos xtors globales aún."
-
-#: config/obj-vms.c:4356
-#, c-format
-msgid "Unknown %s"
-msgstr "%s desconocido"
-
-#.
-#. *	Error otherwise.
-#.
-#: config/obj-vms.c:4441
-#, c-format
-msgid "unhandled stab type %d"
-msgstr "tipo de cabo %d sin manejar"
-
-#: config/tc-a29k.c:164 config/tc-sparc.c:4028
-msgid "Unknown segment type"
-msgstr "Tipo de segmento desconocido"
-
-#. Probably a memory allocation problem?  Give up now.
-#: config/tc-a29k.c:334 config/tc-dlx.c:331 config/tc-hppa.c:1480
-#: config/tc-mips.c:1152 config/tc-mips.c:1194 config/tc-or32.c:228
-#: config/tc-sparc.c:858
-msgid "Broken assembler.  No assembly attempted."
-msgstr "Ensamblador descompuesto.  No se intentó ensamblar."
-
-#: config/tc-a29k.c:379 config/tc-avr.c:1179 config/tc-d10v.c:545
-#: config/tc-d30v.c:552 config/tc-h8300.c:470 config/tc-h8500.c:283
-#: config/tc-mcore.c:608 config/tc-mmix.c:502 config/tc-mn10200.c:940
-#: config/tc-mn10300.c:1820 config/tc-msp430.c:407 config/tc-or32.c:334
-#: config/tc-or32.c:390 config/tc-ppc.c:2367 config/tc-s390.c:1218
-#: config/tc-sh64.c:2213 config/tc-sh.c:1240 config/tc-tic80.c:280
-#: config/tc-v850.c:2034 config/tc-w65.c:215 config/tc-z8k.c:331
-msgid "missing operand"
-msgstr "operando faltante"
-
-#: config/tc-a29k.c:418 config/tc-cris.c:1515 config/tc-cris.c:1523
-#: config/tc-crx.c:2028 config/tc-dlx.c:808 config/tc-hppa.c:1616
-#: config/tc-i860.c:492 config/tc-i860.c:509 config/tc-i860.c:989
-#: config/tc-sparc.c:1420 config/tc-sparc.c:1426
-#, c-format
-msgid "Unknown opcode: `%s'"
-msgstr "Código de operación desconocido: `%s'"
-
-#: config/tc-a29k.c:423 config/tc-dlx.c:826
-#, c-format
-msgid "Unknown opcode `%s'."
-msgstr "Código de operación desconocido `%s'."
-
-#: config/tc-a29k.c:455 config/tc-dlx.c:887
-#, c-format
-msgid "Too many operands: %s"
-msgstr "Demasiados operandos: %s"
-
-#: config/tc-a29k.c:477 config/tc-a29k.c:508
-#, c-format
-msgid "Immediate value of %ld is too large"
-msgstr "El valor inmediato de %ld es demasiado grande"
-
-#: config/tc-a29k.c:547 config/tc-i860.c:395 config/tc-i860.c:940
-#: config/tc-m68k.c:3485 config/tc-m68k.c:3517 config/tc-sparc.c:2658
-msgid "failed sanity check."
-msgstr "falló la prueba de sanidad."
-
-#: config/tc-a29k.c:891 config/tc-or32.c:1023 config/tc-or32.c:1147
-#, c-format
-msgid "bad relocation type: 0x%02x"
-msgstr "tipo de reubicación erróneo: 0x%02x"
-
-#: config/tc-a29k.c:918
-#, c-format
-msgid "need %o3\n"
-msgstr "se necesita %o3\n"
-
-#: config/tc-a29k.c:934
-msgid "a29k_convert_frag\n"
-msgstr "a29k_convert_frag\n"
-
-#: config/tc-a29k.c:943
-msgid "a29k_estimate_size_before_relax\n"
-msgstr "a29k_estimate_size_before_relax\n"
-
-#: config/tc-a29k.c:1037 config/tc-dlx.c:1251 config/tc-or32.c:1342
-#, c-format
-msgid "label \"$%d\" redefined"
-msgstr "se redefinió la etiqueta \"$%d\""
-
-#: config/tc-a29k.c:1110 config/tc-dlx.c:485 config/tc-or32.c:1435
-#, c-format
-msgid "Invalid expression after %%%%\n"
-msgstr "Expresión inválida después de %%%%\n"
-
-#: config/tc-a29k.c:1121
-msgid "Invalid register in & expression"
-msgstr "Registro inválido en la expresión &"
-
-#: config/tc-alpha.c:802
-#, c-format
-msgid "internal error: can't hash opcode `%s': %s"
-msgstr "error interno: no se puede dispersar el código de operación `%s': %s"
-
-#: config/tc-alpha.c:836
-#, c-format
-msgid "internal error: can't hash macro `%s': %s"
-msgstr "error interno: no se puede dispersar la macro `%s': %s"
-
-#: config/tc-alpha.c:919 config/tc-i960.c:2712 config/tc-xtensa.c:5191
-#: config/tc-xtensa.c:5260 config/tc-xtensa.c:5311
-msgid "syntax error"
-msgstr "error sintáctico"
-
-#: config/tc-alpha.c:993 config/tc-h8300.c:2092 config/tc-h8500.c:1204
-#: config/tc-hppa.c:4033 config/tc-i860.c:1059 config/tc-m68hc11.c:558
-#: config/tc-m68k.c:4576 config/tc-m88k.c:991 config/tc-ns32k.c:1689
-#: config/tc-or32.c:902 config/tc-sparc.c:2945 config/tc-z8k.c:1328
-msgid "Bad call to MD_ATOF()"
-msgstr "Llamada errónea a MD_ATOF()"
-
-#: config/tc-alpha.c:1043
-#, c-format
-msgid "Unknown CPU identifier `%s'"
-msgstr "Identificador de CPU `%s' desconocido"
-
-#: config/tc-alpha.c:1087
-msgid ""
-"Alpha options:\n"
-"-32addr\t\t\ttreat addresses as 32-bit values\n"
-"-F\t\t\tlack floating point instructions support\n"
-"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
-"\t\t\tspecify variant of Alpha architecture\n"
-"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
-"\t\t\tthese variants include PALcode opcodes\n"
-msgstr ""
-"Opciones Alpha:\n"
-"-32addr\t\t\ttrata direcciones como valores de 32-bit\n"
-"-F\t\t\tfalta el soporte de instrucciones de coma flotante\n"
-"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
-"\t\t\tespecifica variante de la arquitectura Alpha\n"
-"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
-"\t\t\testas variantes incluyen códigos de operación PALcode\n"
-
-#: config/tc-alpha.c:1097
-msgid ""
-"VMS options:\n"
-"-+\t\t\thash encode (don't truncate) names longer than 64 characters\n"
-"-H\t\t\tshow new symbol after hash truncation\n"
-msgstr ""
-"Opciones VMS:\n"
-"-+\t\t\tcodificar por dispersión (no truncar) nombres más largos que 64 caracteres\n"
-"-H\t\t\tmostrar el símbolo nuevo después del truncado por dispersión\n"
-
-#: config/tc-alpha.c:1274
-#, c-format
-msgid "unhandled relocation type %s"
-msgstr "tipo de reubicación %s sin manejar"
-
-#: config/tc-alpha.c:1287
-msgid "non-absolute expression in constant field"
-msgstr "expresión no absoluta en campo constante"
-
-#: config/tc-alpha.c:1301
-#, c-format
-msgid "type %d reloc done?\n"
-msgstr "¿tipo %d de reubicación hecha?\n"
-
-#: config/tc-alpha.c:1349 config/tc-alpha.c:1356 config/tc-mips.c:8442
-msgid "Used $at without \".set noat\""
-msgstr "Se usó $at sin \".set noat\""
-
-#: config/tc-alpha.c:1518
-#, c-format
-msgid "!samegp reloc against symbol without .prologue: %s"
-msgstr "reubicación !samegp contra un símbolo sin .prologue: %s"
-
-#: config/tc-alpha.c:1557 config/tc-xtensa.c:5831
-#, c-format
-msgid "cannot represent `%s' relocation in object file"
-msgstr "no se puede representar la reubicación `%s' en el fichero objeto"
-
-#: config/tc-alpha.c:1564 config/tc-xtensa.c:5839
-#, c-format
-msgid "internal error? cannot generate `%s' relocation"
-msgstr "¿error interno? no se puede generar la reubicación `%s'"
-
-#: config/tc-alpha.c:1618
-#, c-format
-msgid "frame reg expected, using $%d."
-msgstr "se esperaba un marco de registro, se usa $%d."
-
-#: config/tc-alpha.c:1719
-#, c-format
 msgid "No !literal!%ld was found"
 msgstr "No se encontró una !literal!%ld"
 
-#: config/tc-alpha.c:1726
+#: config/tc-alpha.c:599
 #, c-format
 msgid "No !tlsgd!%ld was found"
 msgstr "No se encontró un !tlsgd!%ld"
 
-#: config/tc-alpha.c:1733
+#: config/tc-alpha.c:606
 #, c-format
 msgid "No !tlsldm!%ld was found"
 msgstr "No se encontró un !tlsldm!%ld"
 
-#: config/tc-alpha.c:1742
+#: config/tc-alpha.c:615
 #, c-format
 msgid "No ldah !gpdisp!%ld was found"
 msgstr "No se encontró un ldah !gpdisp!%ld"
 
-#: config/tc-alpha.c:1792
+#: config/tc-alpha.c:665
 #, c-format
 msgid "too many !literal!%ld for %s"
 msgstr "demasiados !literal!%ld para %s"
 
-#: config/tc-alpha.c:1822
+#: config/tc-alpha.c:695
 #, c-format
 msgid "No lda !gpdisp!%ld was found"
 msgstr "No se encontró un lda !gpdisp!%ld"
 
 #. Only support one relocation op per insn.
-#: config/tc-alpha.c:1970
+#: config/tc-alpha.c:852
 msgid "More than one relocation op per insn"
 msgstr "Más de un operador de reubicación por insn"
 
-#: config/tc-alpha.c:1986
+#: config/tc-alpha.c:868
 msgid "No relocation operand"
 msgstr "No hay un operando de reubicación"
 
-#: config/tc-alpha.c:1996
+#: config/tc-alpha.c:878
 #, c-format
 msgid "Unknown relocation operand: !%s"
 msgstr "Operando de reubicación desconocido: !%s"
 
-#: config/tc-alpha.c:2006
+#: config/tc-alpha.c:888
 #, c-format
 msgid "no sequence number after !%s"
 msgstr "no hay un número de secuencia después de !%s"
 
-#: config/tc-alpha.c:2016
+#: config/tc-alpha.c:898
 #, c-format
 msgid "!%s does not use a sequence number"
 msgstr "!%s no utiliza un número de secuencia"
 
-#: config/tc-alpha.c:2026
+#: config/tc-alpha.c:908
 #, c-format
 msgid "Bad sequence number: !%s!%s"
 msgstr "Secuencia de números errónea: !%s!%s"
 
-#: config/tc-alpha.c:2352 config/tc-arc.c:331 config/tc-mn10200.c:1344
-#: config/tc-mn10300.c:2601 config/tc-ppc.c:1461 config/tc-s390.c:612
-#: config/tc-v850.c:1644
-msgid "operand"
-msgstr "operando"
+#: config/tc-alpha.c:1123 config/tc-alpha.c:3139
+#, c-format
+msgid "inappropriate arguments for opcode `%s'"
+msgstr "argumentos inapropiados para el código de operación `%s'"
 
-#: config/tc-alpha.c:2456 config/tc-alpha.c:2480 config/tc-d10v.c:634
-#: config/tc-d30v.c:640 config/tc-mn10200.c:995 config/tc-mn10300.c:1893
-#: config/tc-ppc.c:2333 config/tc-ppc.c:2550 config/tc-ppc.c:2562
-#: config/tc-s390.c:1228 config/tc-s390.c:1328 config/tc-s390.c:1424
-#: config/tc-v850.c:1821 config/tc-v850.c:1844 config/tc-v850.c:2057
-msgid "too many fixups"
-msgstr "demasiadas composturas"
+#: config/tc-alpha.c:1125 config/tc-alpha.c:3141
+#, c-format
+msgid "opcode `%s' not supported for target %s"
+msgstr "el código de operación `%s' no tiene soporte para el objetivo %s"
 
-#: config/tc-alpha.c:2492
-msgid "invalid relocation for instruction"
-msgstr "reubicación inválida para la instrucción"
+#: config/tc-alpha.c:1129 config/tc-alpha.c:3145 config/tc-avr.c:1221
+#: config/tc-msp430.c:1870
+#, c-format
+msgid "unknown opcode `%s'"
+msgstr "código de operación `%s' desconocido"
 
-#: config/tc-alpha.c:2503
-msgid "invalid relocation for field"
-msgstr "reubicación inválida para el campo"
+#: config/tc-alpha.c:1209 config/tc-alpha.c:1384
+msgid "overflow in literal (.lita) table"
+msgstr "desbordamiento en la tabla (.lita) literal"
 
-#: config/tc-alpha.c:2608
+#: config/tc-alpha.c:1216 config/tc-alpha.c:1240 config/tc-alpha.c:1397
+#: config/tc-alpha.c:2049 config/tc-alpha.c:2093 config/tc-alpha.c:2162
+#: config/tc-alpha.c:2245 config/tc-alpha.c:2470 config/tc-alpha.c:2568
+msgid "macro requires $at register while noat in effect"
+msgstr "la macro requiere el registro $at mientras noat está en efecto"
+
+#: config/tc-alpha.c:1218 config/tc-alpha.c:1242 config/tc-alpha.c:1399
+msgid "macro requires $at while $at in use"
+msgstr "la macro requiere $at mientras $at está en uso"
+
+#: config/tc-alpha.c:1346
+msgid "bignum invalid; zero assumed"
+msgstr "bignum inválido; se asume cero"
+
+#: config/tc-alpha.c:1348
+msgid "floating point number invalid; zero assumed"
+msgstr "número de coma flotante inválido; se asume cero"
+
+#: config/tc-alpha.c:1353
+msgid "can't handle expression"
+msgstr "no se puede manejar la expresión"
+
+#: config/tc-alpha.c:1390
+msgid "overflow in literal (.lit8) table"
+msgstr "desbordamiento en la tabla (.lit8) literal"
+
+#: config/tc-alpha.c:1674
 #, c-format
 msgid "too many ldah insns for !gpdisp!%ld"
 msgstr "demasiadas instrucciones ldah para !gpdisp!%ld"
 
-#: config/tc-alpha.c:2610 config/tc-alpha.c:2622
+#: config/tc-alpha.c:1676 config/tc-alpha.c:1688
 #, c-format
 msgid "both insns for !gpdisp!%ld must be in the same section"
 msgstr "ambas instrucciones para !gpdisp!%ld deben estar en la misma sección"
 
-#: config/tc-alpha.c:2620
+#: config/tc-alpha.c:1686
 #, c-format
 msgid "too many lda insns for !gpdisp!%ld"
 msgstr "demasiadas instrucciones lda para !gpdisp!%ld"
 
-#: config/tc-alpha.c:2673
+#: config/tc-alpha.c:1742
 #, c-format
 msgid "too many lituse insns for !lituse_tlsgd!%ld"
 msgstr "demasiadas instrucciones lituse para !lituse_tlsgd!%ld"
 
-#: config/tc-alpha.c:2676
+#: config/tc-alpha.c:1745
 #, c-format
 msgid "too many lituse insns for !lituse_tlsldm!%ld"
 msgstr "demasiadas instrucciones lituse para !lituse_tlsldm!%ld"
 
-#: config/tc-alpha.c:2693
+#: config/tc-alpha.c:1762
 #, c-format
 msgid "duplicate !tlsgd!%ld"
 msgstr "!tlsgd!%ld duplicado"
 
-#: config/tc-alpha.c:2695
+#: config/tc-alpha.c:1764
 #, c-format
 msgid "sequence number in use for !tlsldm!%ld"
 msgstr "número de secuencia en uso para !tlsldm!%ld"
 
-#: config/tc-alpha.c:2709
+#: config/tc-alpha.c:1778
 #, c-format
 msgid "duplicate !tlsldm!%ld"
 msgstr "!tlsldm!%ld duplicado"
 
-#: config/tc-alpha.c:2711
+#: config/tc-alpha.c:1780
 #, c-format
 msgid "sequence number in use for !tlsgd!%ld"
 msgstr "número de secuencia en uso para !tlsgd!%ld"
 
-#: config/tc-alpha.c:2756 config/tc-alpha.c:2829
-#, c-format
-msgid "inappropriate arguments for opcode `%s'"
-msgstr "argumentos inapropiados para el código de operación `%s'"
+#: config/tc-alpha.c:1823 config/tc-arc.c:294 config/tc-mn10200.c:889
+#: config/tc-mn10300.c:2600 config/tc-ppc.c:1476 config/tc-s390.c:614
+#: config/tc-v850.c:1573
+msgid "operand"
+msgstr "operando"
 
-#: config/tc-alpha.c:2758 config/tc-alpha.c:2831
-#, c-format
-msgid "opcode `%s' not supported for target %s"
-msgstr "el código de operación `%s' no tiene soporte para el objetivo %s"
+#: config/tc-alpha.c:1926 config/tc-alpha.c:1950 config/tc-d10v.c:585
+#: config/tc-d30v.c:573 config/tc-mn10200.c:1133 config/tc-mn10300.c:1893
+#: config/tc-ppc.c:2348 config/tc-ppc.c:2565 config/tc-ppc.c:2577
+#: config/tc-s390.c:1230 config/tc-s390.c:1330 config/tc-s390.c:1459
+#: config/tc-v850.c:1747 config/tc-v850.c:1770 config/tc-v850.c:1973
+msgid "too many fixups"
+msgstr "demasiadas composturas"
 
-#: config/tc-alpha.c:2762 config/tc-alpha.c:2835 config/tc-avr.c:1145
-#: config/tc-msp430.c:1777
-#, c-format
-msgid "unknown opcode `%s'"
-msgstr "código de operación `%s' desconocido"
+#: config/tc-alpha.c:1962
+msgid "invalid relocation for instruction"
+msgstr "reubicación inválida para la instrucción"
 
-#: config/tc-alpha.c:2882
+#: config/tc-alpha.c:1973
+msgid "invalid relocation for field"
+msgstr "reubicación inválida para el campo"
+
+#: config/tc-alpha.c:2760
 msgid "can not resolve expression"
 msgstr "no se puede resolver la expresión"
 
-#: config/tc-alpha.c:3026 config/tc-alpha.c:3205
-msgid "overflow in literal (.lita) table"
-msgstr "desbordamiento en la tabla (.lita) literal"
-
-#: config/tc-alpha.c:3033 config/tc-alpha.c:3056 config/tc-alpha.c:3218
-#: config/tc-alpha.c:3433 config/tc-alpha.c:3478 config/tc-alpha.c:3552
-#: config/tc-alpha.c:3644 config/tc-alpha.c:3892 config/tc-alpha.c:3991
-msgid "macro requires $at register while noat in effect"
-msgstr "la macro requiere el registro $at mientras noat está en efecto"
-
-#: config/tc-alpha.c:3035 config/tc-alpha.c:3058 config/tc-alpha.c:3220
-msgid "macro requires $at while $at in use"
-msgstr "la macro requiere $at mientras $at está en uso"
-
-#: config/tc-alpha.c:3166
-msgid "bignum invalid; zero assumed"
-msgstr "bignum inválido; se asume cero"
-
-#: config/tc-alpha.c:3168
-msgid "floating point number invalid; zero assumed"
-msgstr "número de coma flotante inválido; se asume cero"
-
-#: config/tc-alpha.c:3173
-msgid "can't handle expression"
-msgstr "no se puede manejar la expresión"
-
-#: config/tc-alpha.c:3211
-msgid "overflow in literal (.lit8) table"
-msgstr "desbordamiento en la tabla (.lit8) literal"
-
-#: config/tc-alpha.c:4228 config/tc-ppc.c:1766 config/tc-ppc.c:4358
+#: config/tc-alpha.c:3275 config/tc-ppc.c:1781 config/tc-ppc.c:4373
 #, c-format
 msgid ".COMMon length (%ld.) <0! Ignored."
 msgstr "¡longitud de .COMM (%ld.) <0! Ignorada."
 
-#: config/tc-alpha.c:4257 config/tc-sparc.c:3844 config/tc-v850.c:256
+#: config/tc-alpha.c:3304 config/tc-sparc.c:3843 config/tc-v850.c:246
 msgid "Ignoring attempt to re-define symbol"
 msgstr "Se ignora el intento de redefinir el símbolo"
 
-#: config/tc-alpha.c:4266 config/tc-alpha.c:4275 config/tc-ppc.c:4395
-#: config/tc-sparc.c:3852
+#: config/tc-alpha.c:3313 config/tc-alpha.c:3322 config/tc-ppc.c:4410
+#: config/tc-sparc.c:3851
 #, c-format
 msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
 msgstr "La longitud de .comm \"%s\" ya es %ld. No se cambia a %ld."
 
-#: config/tc-alpha.c:4396 ecoff.c:3054
+#: config/tc-alpha.c:3439 ecoff.c:3054
 msgid ".ent directive has no name"
 msgstr "la directiva .ent no tiene nombre"
 
-#: config/tc-alpha.c:4404
+#: config/tc-alpha.c:3447
 msgid "nested .ent directives"
 msgstr "directivas .ent anidadas"
 
-#: config/tc-alpha.c:4449 ecoff.c:3005
+#: config/tc-alpha.c:3491 ecoff.c:3005
 msgid ".end directive has no name"
 msgstr "la directiva .end no tiene nombre"
 
-#: config/tc-alpha.c:4458
+#: config/tc-alpha.c:3500
 msgid ".end directive without matching .ent"
 msgstr "directiva .end sin una directiva .ent coincidente"
 
-#: config/tc-alpha.c:4460
+#: config/tc-alpha.c:3502
 msgid ".end directive names different symbol than .ent"
 msgstr "la directiva .end nombra un símbolo diferente de .ent"
 
-#: config/tc-alpha.c:4504 ecoff.c:3140
+#: config/tc-alpha.c:3545 ecoff.c:3140
 msgid ".fmask outside of .ent"
 msgstr ".fmask fuera de .ent"
 
-#: config/tc-alpha.c:4506 ecoff.c:3204
+#: config/tc-alpha.c:3547 ecoff.c:3204
 msgid ".mask outside of .ent"
 msgstr ".mask fuera de .ent"
 
-#: config/tc-alpha.c:4514 ecoff.c:3147
+#: config/tc-alpha.c:3555 ecoff.c:3147
 msgid "bad .fmask directive"
 msgstr "directiva .fmask errónea"
 
-#: config/tc-alpha.c:4516 ecoff.c:3211
+#: config/tc-alpha.c:3557 ecoff.c:3211
 msgid "bad .mask directive"
 msgstr "directiva .mask errónea"
 
-#: config/tc-alpha.c:4550 config/tc-mips.c:13757 ecoff.c:3168
+#: config/tc-alpha.c:3590 config/tc-mips.c:14022 ecoff.c:3168
 msgid ".frame outside of .ent"
 msgstr ".frame fuera de .ent"
 
-#: config/tc-alpha.c:4561 ecoff.c:3179
+#: config/tc-alpha.c:3601 ecoff.c:3179
 msgid "bad .frame directive"
 msgstr "directiva .frame errónea"
 
-#: config/tc-alpha.c:4594
+#: config/tc-alpha.c:3633
 msgid ".prologue directive without a preceding .ent directive"
 msgstr "directiva .prolog sin una directiva .ent precedente"
 
-#: config/tc-alpha.c:4612
+#: config/tc-alpha.c:3651
 #, c-format
 msgid "Invalid argument %d to .prologue."
 msgstr "Argumento inválido %d para .prologue."
 
-#: config/tc-alpha.c:4707
+#: config/tc-alpha.c:3742
 msgid "ECOFF debugging is disabled."
 msgstr "La depuración ECOFF está desactivada."
 
-#: config/tc-alpha.c:4721
+#: config/tc-alpha.c:3756
 msgid ".ent directive without matching .end"
 msgstr "directiva .ent sin una directiva .end coincidente"
 
-#: config/tc-alpha.c:4806
+#: config/tc-alpha.c:3841
 msgid ".usepv directive has no name"
 msgstr "la directiva .usepv no tiene nombre"
 
-#: config/tc-alpha.c:4817
+#: config/tc-alpha.c:3852
 msgid ".usepv directive has no type"
 msgstr "la directiva .usepv no tiene tipo"
 
-#: config/tc-alpha.c:4832
+#: config/tc-alpha.c:3867
 msgid "unknown argument for .usepv"
 msgstr "argumento desconocido para .usepv"
 
-#: config/tc-alpha.c:4866
+#: config/tc-alpha.c:3900
 msgid "Unknown section directive"
 msgstr "Directiva de sección desconocida"
 
-#: config/tc-alpha.c:4902
+#: config/tc-alpha.c:3935
 msgid ".ent directive has no symbol"
 msgstr "la directiva .ent no tiene símbolo"
 
-#: config/tc-alpha.c:4928
+#: config/tc-alpha.c:3960
 msgid "Bad .frame directive 1./2. param"
 msgstr "Parámetro 1./2. de directiva .frame erróneo"
 
-#: config/tc-alpha.c:4940
+#: config/tc-alpha.c:3972
 msgid "Bad .frame directive 3./4. param"
 msgstr "Parámetro 3./4. de directiva .frame erróneo"
 
-#: config/tc-alpha.c:4963
+#: config/tc-alpha.c:3994
 msgid ".pdesc directive not in link (.link) section"
 msgstr "la directiva .pdesc no está en la sección de enlace (.link)"
 
-#: config/tc-alpha.c:4971
+#: config/tc-alpha.c:4002
 msgid ".pdesc has no matching .ent"
 msgstr ".pdesc no tiene un .ent coincidente"
 
-#: config/tc-alpha.c:4982
+#: config/tc-alpha.c:4013
 msgid ".pdesc directive has no entry symbol"
 msgstr "la directiva .pdesc no tiene un símbolo de entrada"
 
-#: config/tc-alpha.c:4995
+#: config/tc-alpha.c:4026
 msgid "No comma after .pdesc <entryname>"
 msgstr "No hay una coma después de .pdesc <nombreentrada>"
 
-#: config/tc-alpha.c:5018
+#: config/tc-alpha.c:4046
 msgid "unknown procedure kind"
 msgstr "tipo de procedimiento desconocido"
 
-#: config/tc-alpha.c:5109
+#: config/tc-alpha.c:4136
 msgid ".name directive not in link (.link) section"
 msgstr "la directiva .name no está en la sección de enlace (.link)"
 
-#: config/tc-alpha.c:5117
+#: config/tc-alpha.c:4144
 msgid ".name directive has no symbol"
 msgstr "la directiva .name no tiene símbolo"
 
-#: config/tc-alpha.c:5149
+#: config/tc-alpha.c:4175
 msgid "No symbol after .linkage"
 msgstr "No hay un símbolo después de .linkage"
 
-#: config/tc-alpha.c:5175
+#: config/tc-alpha.c:4199
 msgid "No symbol after .code_address"
 msgstr "No hay un símbolo después de .code_address"
 
-#: config/tc-alpha.c:5205
+#: config/tc-alpha.c:4226
 msgid "Bad .mask directive"
 msgstr "Directiva .mask errónea"
 
-#: config/tc-alpha.c:5224
+#: config/tc-alpha.c:4244
 msgid "Bad .fmask directive"
 msgstr "Directiva .fmask errónea"
 
-#: config/tc-alpha.c:5386
+#: config/tc-alpha.c:4401
 #, c-format
 msgid "Expected comma after name \"%s\""
 msgstr "Se esperaba una coma después del nombre \"%s\""
 
 #. *symbol_get_obj (symbolP) = (signed char) temp;
-#: config/tc-alpha.c:5397
+#: config/tc-alpha.c:4412
 #, c-format
 msgid "unhandled: .proc %s,%d"
 msgstr "sin manejar: .proc %s,%d"
 
-#: config/tc-alpha.c:5432
+#: config/tc-alpha.c:4446
 #, c-format
 msgid "Tried to .set unrecognized mode `%s'"
 msgstr "Se intento hacer .set del modo `%s' no reconocido"
 
-#: config/tc-alpha.c:5457
+#: config/tc-alpha.c:4472
 #, c-format
 msgid "Bad base register, using $%d."
 msgstr "Registro base erróneo, utilizando $%d."
 
-#: config/tc-alpha.c:5479
+#: config/tc-alpha.c:4493
 #, c-format
 msgid "Alignment too large: %d. assumed"
 msgstr "Alineación demasiado grande: se asume %d."
 
-#: config/tc-alpha.c:5483 config/tc-d30v.c:2183
+#: config/tc-alpha.c:4497 config/tc-d30v.c:2083
 msgid "Alignment negative: 0 assumed"
 msgstr "Alineación negativa: se asume 0"
 
-#: config/tc-alpha.c:5790
+#: config/tc-alpha.c:4775
 #, c-format
 msgid "Chose GP value of %lx\n"
 msgstr "Valor GP escogido de %lx\n"
 
-#: config/tc-alpha.c:5806
+#: config/tc-alpha.c:4789
 msgid "Bad .section directive: want a,s,w,x,M,S,G,T in string"
 msgstr "Directiva .section errónea: se quiere a,s,w,x,M,S,G,T en la cadena"
 
-#: config/tc-arc.c:1574 config/tc-arm.c:12232 config/tc-ip2k.c:219
+#: config/tc-alpha.c:4878
+#, c-format
+msgid "internal error: can't hash opcode `%s': %s"
+msgstr "error interno: no se puede dispersar el código de operación `%s': %s"
+
+#: config/tc-alpha.c:4914
+#, c-format
+msgid "internal error: can't hash macro `%s': %s"
+msgstr "error interno: no se puede dispersar la macro `%s': %s"
+
+#: config/tc-alpha.c:4998 config/tc-i960.c:710 config/tc-xtensa.c:5112
+#: config/tc-xtensa.c:5181 config/tc-xtensa.c:5227
+msgid "syntax error"
+msgstr "error sintáctico"
+
+#: config/tc-alpha.c:5067 config/tc-h8300.c:2055 config/tc-hppa.c:4041
+#: config/tc-i860.c:1059 config/tc-m68hc11.c:558 config/tc-m68k.c:4524
+#: config/tc-ns32k.c:1945 config/tc-or32.c:579 config/tc-sparc.c:2944
+#: config/tc-z8k.c:1310
+msgid "Bad call to MD_ATOF()"
+msgstr "Llamada errónea a MD_ATOF()"
+
+#: config/tc-alpha.c:5116
+#, c-format
+msgid "Unknown CPU identifier `%s'"
+msgstr "Identificador de CPU `%s' desconocido"
+
+#: config/tc-alpha.c:5159
+msgid ""
+"Alpha options:\n"
+"-32addr\t\t\ttreat addresses as 32-bit values\n"
+"-F\t\t\tlack floating point instructions support\n"
+"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
+"\t\t\tspecify variant of Alpha architecture\n"
+"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
+"\t\t\tthese variants include PALcode opcodes\n"
+msgstr ""
+"Opciones Alpha:\n"
+"-32addr\t\t\ttrata direcciones como valores de 32-bit\n"
+"-F\t\t\tfalta el soporte de instrucciones de coma flotante\n"
+"-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mev67 | -mev68 | -mall\n"
+"\t\t\tespecifica variante de la arquitectura Alpha\n"
+"-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264 | -m21264a | -m21264b\n"
+"\t\t\testas variantes incluyen códigos de operación PALcode\n"
+
+#: config/tc-alpha.c:5169
+msgid ""
+"VMS options:\n"
+"-+\t\t\thash encode (don't truncate) names longer than 64 characters\n"
+"-H\t\t\tshow new symbol after hash truncation\n"
+msgstr ""
+"Opciones VMS:\n"
+"-+\t\t\tcodificar por dispersión (no truncar) nombres más largos que 64 caracteres\n"
+"-H\t\t\tmostrar el símbolo nuevo después del truncado por dispersión\n"
+
+#: config/tc-alpha.c:5346
+#, c-format
+msgid "unhandled relocation type %s"
+msgstr "tipo de reubicación %s sin manejar"
+
+#: config/tc-alpha.c:5359
+msgid "non-absolute expression in constant field"
+msgstr "expresión no absoluta en campo constante"
+
+#: config/tc-alpha.c:5373
+#, c-format
+msgid "type %d reloc done?\n"
+msgstr "¿tipo %d de reubicación hecha?\n"
+
+#: config/tc-alpha.c:5420 config/tc-alpha.c:5427 config/tc-mips.c:8657
+msgid "Used $at without \".set noat\""
+msgstr "Se usó $at sin \".set noat\""
+
+#: config/tc-alpha.c:5589
+#, c-format
+msgid "!samegp reloc against symbol without .prologue: %s"
+msgstr "reubicación !samegp contra un símbolo sin .prologue: %s"
+
+#: config/tc-alpha.c:5626 config/tc-xtensa.c:5739
+#, c-format
+msgid "cannot represent `%s' relocation in object file"
+msgstr "no se puede representar la reubicación `%s' en el fichero objeto"
+
+#: config/tc-alpha.c:5632 config/tc-xtensa.c:5747
+#, c-format
+msgid "internal error? cannot generate `%s' relocation"
+msgstr "¿error interno? no se puede generar la reubicación `%s'"
+
+#: config/tc-alpha.c:5683
+#, c-format
+msgid "frame reg expected, using $%d."
+msgstr "se esperaba un marco de registro, se usa $%d."
+
+#: config/tc-arc.c:1077 config/tc-ip2k.c:249
 msgid "md_estimate_size_before_relax\n"
 msgstr "md_estimate_size_before_relax\n"
 
-#: config/tc-arc.c:1586
+#: config/tc-arc.c:1088
 msgid "md_convert_frag\n"
 msgstr "md_convert_frag\n"
 
 #. We can't actually support subtracting a symbol.
-#: config/tc-arc.c:1856 config/tc-arm.c:6622 config/tc-arm.c:9378
-#: config/tc-arm.c:9470 config/tc-avr.c:891 config/tc-cris.c:3999
-#: config/tc-d10v.c:1708 config/tc-d30v.c:1836 config/tc-mips.c:3835
-#: config/tc-mips.c:4949 config/tc-mips.c:5881 config/tc-mips.c:6469
-#: config/tc-msp430.c:1871 config/tc-ppc.c:5542 config/tc-v850.c:2367
-#: config/tc-xstormy16.c:499
+#: config/tc-arc.c:1288 config/tc-arm.c:1021 config/tc-arm.c:5764
+#: config/tc-arm.c:5815 config/tc-arm.c:6614 config/tc-arm.c:7256
+#: config/tc-arm.c:7284 config/tc-arm.c:7536 config/tc-arm.c:7553
+#: config/tc-arm.c:7674 config/tc-avr.c:970 config/tc-cris.c:3928
+#: config/tc-d10v.c:1539 config/tc-d30v.c:1938 config/tc-mips.c:3794
+#: config/tc-mips.c:4902 config/tc-mips.c:5834 config/tc-mips.c:6428
+#: config/tc-msp430.c:1979 config/tc-ppc.c:5562 config/tc-v850.c:2274
+#: config/tc-xstormy16.c:484
 msgid "expression too complex"
 msgstr "expresión demasiado compleja"
 
-#: config/tc-arm.c:758 config/tc-arm.c:14522
+#: config/tc-arm.c:352
 msgid "ARM register expected"
 msgstr "se esperaba un registro ARM"
 
-#: config/tc-arm.c:759
+#: config/tc-arm.c:353
 msgid "bad or missing co-processor number"
 msgstr "número de co-procesador erróneo o faltante"
 
-#: config/tc-arm.c:760
+#: config/tc-arm.c:354
 msgid "co-processor register expected"
 msgstr "se esperaba un registro de co-procesador"
 
-#: config/tc-arm.c:761
+#: config/tc-arm.c:355
 msgid "FPA register expected"
 msgstr "se esperaba un registro FPA"
 
-#: config/tc-arm.c:762
+#: config/tc-arm.c:356
 msgid "VFP single precision register expected"
 msgstr "Se esperaba un registro de precisión simple VFP"
 
-#: config/tc-arm.c:763
+#: config/tc-arm.c:357
 msgid "VFP double precision register expected"
 msgstr "Se esperaba un registro de precisión doble VFP"
 
-#: config/tc-arm.c:764
+#: config/tc-arm.c:358
+msgid "VFP system register expected"
+msgstr "se esperaba un registro de sistema VFP"
+
+#: config/tc-arm.c:359
 msgid "Maverick MVF register expected"
 msgstr "se esperaba un registro Maverick MVF"
 
-#: config/tc-arm.c:765
+#: config/tc-arm.c:360
 msgid "Maverick MVD register expected"
 msgstr "se esperaba un registro Maverick MVD"
 
-#: config/tc-arm.c:766
+#: config/tc-arm.c:361
 msgid "Maverick MVFX register expected"
 msgstr "se esperaba un registro Maverick MVFX"
 
-#: config/tc-arm.c:767
+#: config/tc-arm.c:362
 msgid "Maverick MVDX register expected"
 msgstr "se esperaba un registro Maverick MVDX"
 
-#: config/tc-arm.c:768
+#: config/tc-arm.c:363
 msgid "Maverick MVAX register expected"
 msgstr "se esperaba un registro Maverick MVAX"
 
-#: config/tc-arm.c:769
+#: config/tc-arm.c:364
 msgid "Maverick DSPSC register expected"
 msgstr "se esperaba un registro Maverick DSPSC"
 
-#: config/tc-arm.c:770
-msgid "Intel Wireless MMX technology register expected"
-msgstr "se esperaba un registro de tecnología Intel Inalámbrico MMX"
+#: config/tc-arm.c:365
+msgid "iWMMXt data register expected"
+msgstr "se esperaba un registro de datos iWMMXt"
 
-#: config/tc-arm.c:964
+#: config/tc-arm.c:366
+msgid "iWMMXt control register expected"
+msgstr "se esperaba un registro de control iWMMXt"
+
+#: config/tc-arm.c:367
+msgid "iWMMXt scalar register expected"
+msgstr "se esperaba un registro escalar iWMMXt"
+
+#: config/tc-arm.c:368
+msgid "XScale accumulator register expected"
+msgstr "se esperaba un registro acumulador XScale"
+
+#: config/tc-arm.c:499
 msgid "bad arguments to instruction"
 msgstr "argumentos erróneos para la instrucción"
 
-#: config/tc-arm.c:965
+#: config/tc-arm.c:500
 msgid "r15 not allowed here"
 msgstr "no se permite r15 aquí"
 
-#: config/tc-arm.c:966
-msgid "instruction is not conditional"
-msgstr "la instrucción no es condicional"
+#: config/tc-arm.c:501
+msgid "instruction cannot be conditional"
+msgstr "la instrucción no puede ser condicional"
 
-#: config/tc-arm.c:967
-msgid "acc0 expected"
-msgstr "se esperaba acc0"
+#: config/tc-arm.c:502
+msgid "registers may not be the same"
+msgstr "los registros no pueden ser el mismo"
 
-#: config/tc-arm.c:1100
-msgid "literal pool overflow"
-msgstr "desbordamiento de conjunto literal"
+#: config/tc-arm.c:503
+msgid "lo register required"
+msgstr "se requiere el registro lo"
 
-#: config/tc-arm.c:1475
-msgid "selected processor does not support THUMB opcodes"
-msgstr "el procesador seleccionado no tiene soporte para códigos de operación THUMB"
+#: config/tc-arm.c:504
+msgid "instruction not supported in Thumb16 mode"
+msgstr "la instrucción no tiene soporte en modo Thumb16"
 
-#: config/tc-arm.c:1489
-msgid "selected processor does not support ARM opcodes"
-msgstr "el procesador seleccionado no tiene soporte para códigos de operación ARM"
+#: config/tc-arm.c:640
+msgid "immediate expression requires a # prefix"
+msgstr "la expresión inmediata requiere un prefijo #"
 
-#: config/tc-arm.c:1502
+#: config/tc-arm.c:666 expr.c:1302 read.c:2228
+msgid "bad expression"
+msgstr "expresión errónea"
+
+#: config/tc-arm.c:677 config/tc-i860.c:1005 config/tc-sparc.c:2844
+msgid "bad segment"
+msgstr "segmento erróneo"
+
+#: config/tc-arm.c:693 config/tc-arm.c:3230 config/tc-i960.c:1302
+msgid "invalid constant"
+msgstr "constante inválida"
+
+#: config/tc-arm.c:754
+msgid "bad call to MD_ATOF()"
+msgstr "llamada errónea a MD_ATOF()"
+
+#: config/tc-arm.c:821
+msgid "expected #constant"
+msgstr "se esperaba #constant"
+
+#: config/tc-arm.c:953
+msgid "bad range in register list"
+msgstr "rango erróneo en la lista de registros"
+
+#: config/tc-arm.c:961 config/tc-arm.c:970 config/tc-arm.c:1011
 #, c-format
-msgid "invalid instruction size selected (%d)"
-msgstr "tamaño de instrucción seleccionado inválido (%d)"
+msgid "Warning: duplicated register (r%d) in register list"
+msgstr "Aviso: registro duplicado (r%d) en la lista de registros"
 
-#: config/tc-arm.c:1509
-msgid "invalid syntax for .req directive"
-msgstr "sintaxis inválida para la directiva .req."
+#: config/tc-arm.c:973
+msgid "Warning: register range not in ascending order"
+msgstr "Aviso: el rango de registros no está en orden ascendente"
 
-#: config/tc-arm.c:1552
+#: config/tc-arm.c:984
+msgid "missing `}'"
+msgstr "falta un `}'"
+
+#: config/tc-arm.c:1000
+msgid "invalid register mask"
+msgstr "máscara de registro inválida"
+
+#: config/tc-arm.c:1091 config/tc-arm.c:1126 config/tc-h8300.c:991
+#: config/tc-mips.c:9797 config/tc-mips.c:9827
+msgid "invalid register list"
+msgstr "lista de registros inválida"
+
+#: config/tc-arm.c:1097 config/tc-arm.c:2402 config/tc-arm.c:2535
+msgid "register list not in ascending order"
+msgstr "la lista de registros no está en orden ascendente"
+
+#: config/tc-arm.c:1118
+msgid "register range not in ascending order"
+msgstr "el rango de registros no está en orden ascendente"
+
+#: config/tc-arm.c:1151
+msgid "non-contiguous register range"
+msgstr "el rango de registro no es contiguo"
+
+#: config/tc-arm.c:1199
 #, c-format
-msgid "unreq: missing hash entry for \"%s\""
-msgstr "unreq: falta la entrada de hash para \"%s\""
+msgid "ignoring attempt to redefine built-in register '%s'"
+msgstr "se ignora el intento de redefinir el símbolo interno '%s'"
 
-#: config/tc-arm.c:1571 config/tc-arm.c:1574
+#: config/tc-arm.c:1204
 #, c-format
-msgid ".unreq: unrecognized symbol \"%s\""
-msgstr ".unreq: símbolo \"%s\" no reconocido"
+msgid "ignoring redefinition of register alias '%s'"
+msgstr "se ignora la redefinición del alias de registro '%s'"
 
-#: config/tc-arm.c:1577
+#: config/tc-arm.c:1248
+#, c-format
+msgid "unknown register '%s' -- .req ignored"
+msgstr "registro '%s' desconocido -- se ignora .req"
+
+#: config/tc-arm.c:1291
+msgid "invalid syntax for .req directive"
+msgstr "sintaxis inválida para la directiva .req."
+
+#: config/tc-arm.c:1317
 msgid "invalid syntax for .unreq directive"
 msgstr "sintaxis inválida para la directiva .unreq"
 
-#: config/tc-arm.c:1659
+#: config/tc-arm.c:1323
 #, c-format
-msgid "alignment too large: %d assumed"
-msgstr "alineación demasiado grande: se asume %d"
+msgid "unknown register alias '%s'"
+msgstr "alias de registro '%s' desconocido"
 
-#: config/tc-arm.c:1662
-msgid "alignment negative. 0 assumed."
-msgstr "alineación negativa. Se asume 0."
+#: config/tc-arm.c:1325
+#, c-format
+msgid "ignoring attempt to undefine built-in register '%s'"
+msgstr "se ignora el intento de eliminar la definición del símbolo interno '%s'"
 
-#: config/tc-arm.c:1743
+#: config/tc-arm.c:1456
+msgid "selected processor does not support THUMB opcodes"
+msgstr "el procesador seleccionado no tiene soporte para códigos de operación THUMB"
+
+#: config/tc-arm.c:1470
+msgid "selected processor does not support ARM opcodes"
+msgstr "el procesador seleccionado no tiene soporte para códigos de operación ARM"
+
+#: config/tc-arm.c:1483
 #, c-format
+msgid "invalid instruction size selected (%d)"
+msgstr "tamaño de instrucción seleccionado inválido (%d)"
+
+#: config/tc-arm.c:1515
+#, c-format
+msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
+msgstr "operando inválido para la directiva .code (%d) (se esperaba 16 o 32)"
+
+#: config/tc-arm.c:1571
+#, c-format
 msgid "expected comma after name \"%s\""
 msgstr "se esperaba una coma después del nombre \"%s\""
 
-#: config/tc-arm.c:1793 config/tc-m32r.c:617
+#: config/tc-arm.c:1621 config/tc-m32r.c:589
 #, c-format
 msgid "symbol `%s' already defined"
 msgstr "el símbolo `%s' ya está definido"
 
-#: config/tc-arm.c:1836
+#: config/tc-arm.c:1655
 #, c-format
-msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
-msgstr "operando inválido para la directiva .code (%d) (se esperaba 16 o 32)"
+msgid "unrecognized syntax mode \"%s\""
+msgstr "modo de sintaxis \"%s\" no reconocido"
 
-#: config/tc-arm.c:1846
-msgid "garbage following instruction"
-msgstr "basura a continuación de la instrucción"
+#: config/tc-arm.c:1675
+#, c-format
+msgid "alignment too large: %d assumed"
+msgstr "alineación demasiado grande: se asume %d"
 
-#: config/tc-arm.c:1916
-msgid "bad_segment"
-msgstr "segmento_erróneo"
+#: config/tc-arm.c:1678
+msgid "alignment negative. 0 assumed."
+msgstr "alineación negativa. Se asume 0."
 
-#: config/tc-arm.c:1932 config/tc-arm.c:2699 config/tc-arm.c:3889
-#: config/tc-arm.c:5841 config/tc-arm.c:5861 config/tc-i960.c:1940
-msgid "invalid constant"
-msgstr "constante inválida"
+#: config/tc-arm.c:1816
+msgid "literal pool overflow"
+msgstr "desbordamiento de conjunto literal"
 
-#. In the few cases where we might be able to accept something else
-#. this error can be overridden.
-#: config/tc-arm.c:1967
-#, c-format
-msgid "register expected, not '%.100s'"
-msgstr "se esperaba un registro, no '%.100s'"
+#: config/tc-arm.c:1972 config/tc-arm.c:3888
+msgid "unrecognized relocation suffix"
+msgstr "sufijo de reubicación no reconocido"
 
-#. In the few cases where we might be able to accept
-#. something else this error can be overridden.
-#: config/tc-arm.c:2017
+#: config/tc-arm.c:1985
+msgid "(plt) is only valid on branch targets"
+msgstr "(plt) sólo es válido en objetivos ramas"
+
+#: config/tc-arm.c:1991 config/tc-s390.c:1128 config/tc-s390.c:1742
+#: config/tc-xtensa.c:1601
 #, c-format
-msgid "Intel Wireless MMX technology register expected, not '%.100s'"
-msgstr "se esperaba un registro de tecnología Intel Inalámbrica MMX, no '%.100s'"
+msgid "%s relocations do not fit in %d bytes"
+msgstr "%s reubicaciones no caben en %d bytes"
 
-#. In the few cases where we might be able to accept
-#. something else this error can be overridden.
-#: config/tc-arm.c:2087
-msgid "flag for {c}psr instruction expected"
-msgstr "se esperaba una opción para la instrucción {c}psr"
+#: config/tc-arm.c:2039 dwarf2dbg.c:659
+msgid "expected 0 or 1"
+msgstr "se esperaba 0 ó 1"
 
-#: config/tc-arm.c:2120
-msgid "illegal co-processor number"
-msgstr "número de co-procesador ilegal"
+#: config/tc-arm.c:2043
+msgid "missing comma"
+msgstr "falta una coma"
 
-#: config/tc-arm.c:2149 config/tc-arm.c:5101
-msgid "bad or missing expression"
-msgstr "expresión errónea o faltante"
+#: config/tc-arm.c:2098
+msgid "dupicate .handlerdata directive"
+msgstr "directiva .handlerdata duplicada"
 
-#: config/tc-arm.c:2155
-msgid "immediate co-processor expression too large"
-msgstr "expresión de co-procesador inmediata demasiado grande"
+#: config/tc-arm.c:2169
+msgid "personality routine specified for cantunwind frame"
+msgstr "se especificó una rutina personality para el marco cantunwind"
 
-#: config/tc-arm.c:2214 config/tc-arm.c:2427 config/tc-arm.c:3718
-#: config/tc-arm.c:3804 config/tc-arm.c:3868 config/tc-arm.c:4106
-#: config/tc-arm.c:4208
-msgid "immediate expression expected"
-msgstr "se esperaba una expresión inmediata"
+#: config/tc-arm.c:2183
+msgid "duplicate .personalityindex directive"
+msgstr "directiva .personalityindex duplicada"
 
-#: config/tc-arm.c:2229
-msgid "co-processor address must be word aligned"
-msgstr "la dirección del co-procesador debe ser alineada con word"
+#: config/tc-arm.c:2190
+msgid "bad personality routine number"
+msgstr "número de rutina personality erróneo"
 
-#: config/tc-arm.c:2235 config/tc-arm.c:2442 config/tc-mips.c:5037
-msgid "offset too large"
-msgstr "desplazamiento demasiado grande"
+#: config/tc-arm.c:2209
+msgid "duplicate .personality directive"
+msgstr "directiva .personality duplicada"
 
-#: config/tc-arm.c:2290
-msgid "comma expected after closing square bracket"
-msgstr "se esperaba una coma después del paréntesis cuadrado que cierra"
+#: config/tc-arm.c:2232 config/tc-arm.c:2354
+msgid "expected register list"
+msgstr "se esperaba una lista de registros"
 
-#: config/tc-arm.c:2305 config/tc-arm.c:2489
-msgid "pc may not be used in post-increment"
-msgstr "el pc no se puede usar en post-incremento"
+#: config/tc-arm.c:2310
+msgid "expected , <constant>"
+msgstr "se esperaba , <constante>"
 
-#: config/tc-arm.c:2333
-msgid "'option' field too large"
-msgstr "campo 'option' demasiado grande"
+#: config/tc-arm.c:2319
+msgid "number of registers must be in the range [1:4]"
+msgstr "el número de registros debe estar en el rango [1:4]"
 
-#: config/tc-arm.c:2341
-msgid "'}' expected at end of 'option' field"
-msgstr "se esperaba '}' al final del campo 'option'"
+#: config/tc-arm.c:2416 config/tc-arm.c:2549
+msgid "bad register range"
+msgstr "rango de registro erróneo"
 
-#: config/tc-arm.c:2353
-msgid "non-constant expressions for 'option' field not supported"
-msgstr "no hay soporte para expresiones no constantes para el campo 'option'"
+#: config/tc-arm.c:2602
+msgid "register expected"
+msgstr "se esperaba un registro"
 
-#: config/tc-arm.c:2359
-msgid "# or { expected after comma"
-msgstr "se esperaba # o { después de la coma"
+#: config/tc-arm.c:2612
+msgid "FPA .unwind_save does not take a register list"
+msgstr ".unwind_save de FPA no toma una lista de registros"
 
-#: config/tc-arm.c:2369 config/tc-arm.c:2505 config/tc-arm.c:3020
-#: config/tc-arm.c:5530 config/tc-arm.c:6134 config/tc-arm.c:6405
-msgid "pre-indexed expression expected"
-msgstr "se esperaba una expresión pre-indizada"
+#: config/tc-arm.c:2625
+msgid ".unwind_save does not support this kind of register"
+msgstr ".unwind_save no tiene soporte para este tipo de registro"
 
-#: config/tc-arm.c:2382 config/tc-arm.c:2518 config/tc-arm.c:3033
-#: config/tc-arm.c:5541 config/tc-arm.c:6146 config/tc-arm.c:6417
-#: config/tc-arm.c:6800 config/tc-arm.c:9110 config/tc-arm.c:9125
-msgid "missing ]"
-msgstr "falta un ]"
+#: config/tc-arm.c:2650
+msgid "SP and PC not permitted in .unwind_movsp directive"
+msgstr "no se permiten SP y PC en la directiva .unwind_movsp"
 
-#: config/tc-arm.c:2392 config/tc-arm.c:2528
-msgid "pc may not be used with write-back"
-msgstr "el pc no se puede usar con escritura hacia atrás"
+#: config/tc-arm.c:2655
+msgid "unexpected .unwind_movsp directive"
+msgstr "directiva .unwind_movsp inesperada"
 
-#: config/tc-arm.c:2577
-msgid "Invalid NOP hint"
-msgstr "Pista NOP inválida"
+#: config/tc-arm.c:2679
+msgid "stack increment must be multiple of 4"
+msgstr "el operando de pila debe ser un múltiplo de 4"
 
-#: config/tc-arm.c:2612
-msgid "comma expected after register name"
-msgstr "se esperaba una coma después del nombre de registro"
+#: config/tc-arm.c:2708
+msgid "expected <reg>, <reg>"
+msgstr "se esperaba <reg>, <reg>"
 
-#: config/tc-arm.c:2631
-msgid "CPSR or SPSR expected"
-msgstr "se esperaba CPSR ó SPSR"
+#: config/tc-arm.c:2726
+msgid "register must be either sp or set by a previousunwind_movsp directive"
+msgstr "el registro debe ser sp o establecido por una directiva previousunwind_movsp"
 
-#: config/tc-arm.c:2656
-msgid "comma missing after psr flags"
-msgstr "falta una coma después de las opciones psr"
+#: config/tc-arm.c:2762
+msgid "expected <offset>, <opcode>"
+msgstr "se esperaba <desplazamiento>, <códigoop>"
 
-#: config/tc-arm.c:2672 config/tc-arm.c:2682
-msgid "only a register or immediate value can follow a psr flag"
-msgstr "sólo un registro o un valor inmediato puede seguir a una opción psr"
+#: config/tc-arm.c:2774
+msgid "unwind opcode too long"
+msgstr "código de operación de desenredo demasiado largo"
 
-#: config/tc-arm.c:2746
-msgid "rdhi, rdlo and rm must all be different"
-msgstr "rdhi, rdlo y rm deben ser todos diferentes"
+#: config/tc-arm.c:2779
+msgid "invalid unwind opcode"
+msgstr "código de operación de desenredo inválido"
 
-#: config/tc-arm.c:2798
-msgid "rd and rm should be different in mul"
-msgstr "rd y rm deben ser diferentes en mul"
+#: config/tc-arm.c:2829
+msgid "expected numeric constant"
+msgstr "se esperaba una constante numérica"
 
-#: config/tc-arm.c:2850
-msgid "rd and rm should be different in mla"
-msgstr "rd y rm deben ser diferentes en mla"
+#: config/tc-arm.c:2838
+msgid "expected comma"
+msgstr "se esperaba una coma"
 
-#: config/tc-arm.c:2896
-#, c-format
-msgid "acc0 expected, not '%.100s'"
-msgstr "se esperaba acc0, no '%.100s'"
+#: config/tc-arm.c:2877
+msgid "bad string constant"
+msgstr "constante de cadena errónea"
 
-#: config/tc-arm.c:2925 config/tc-arm.c:5439
-msgid "address offset too large"
-msgstr "dirección de desplazamiento demasiado grande"
+#: config/tc-arm.c:2881
+msgid "expected <tag> , <value>"
+msgstr "se esperaba <etiq> , <valor>"
 
-#: config/tc-arm.c:3130
-msgid "rdhi and rdlo must be different"
-msgstr "rdhi y rdlo deben ser diferentes"
+#: config/tc-arm.c:2957
+msgid "constant expression required"
+msgstr "se requiere una expresión constante"
 
-#: config/tc-arm.c:3235
-msgid "Warning: instruction unpredictable when using r15"
-msgstr "Aviso: la instrucción es impredecible cuando se utiliza r15"
+#: config/tc-arm.c:2963 config/tc-arm.c:6472 config/tc-arm.c:11799
+#: config/tc-arm.c:11824 config/tc-arm.c:11832 config/tc-z8k.c:1122
+#: config/tc-z8k.c:1132
+msgid "immediate value out of range"
+msgstr "valor inmediato fuera de rango"
 
-#: config/tc-arm.c:3444
-msgid "use of r15 in bx in ARM mode is not really useful"
-msgstr "el uso de r15 en bx en modo ARM no es realmente útil"
+#: config/tc-arm.c:3058
+msgid "invalid FPA immediate expression"
+msgstr "expresión inmediata FPA inválida"
 
-#: config/tc-arm.c:3466
-msgid "use of r15 in bxj is not really useful"
-msgstr "el uso de r15 en bxj no es realmente útil"
-
-#: config/tc-arm.c:3524 config/tc-arm.c:3548
-msgid "Rd equal to Rm or Rn yields unpredictable results"
-msgstr "Rd igual a Rm o Rn produce resultados impredecibles"
-
-#: config/tc-arm.c:3577 config/tc-arm.c:3588
+#: config/tc-arm.c:3108 config/tc-arm.c:3116
 msgid "shift expression expected"
 msgstr "se esperaba una expresión de desplazamiento"
 
-#: config/tc-arm.c:3598
+#: config/tc-arm.c:3130
 msgid "'LSL' or 'ASR' required"
 msgstr "se requiere 'LSL' o 'ASR'"
 
-#: config/tc-arm.c:3604
+#: config/tc-arm.c:3138
 msgid "'LSL' required"
 msgstr "se requiere 'LSL'"
 
-#: config/tc-arm.c:3610
+#: config/tc-arm.c:3146
 msgid "'ASR' required"
 msgstr "se requiere 'ASR'"
 
-#: config/tc-arm.c:3632
-msgid "shift requires register or #expression"
-msgstr "el desplazamiento requiere un registro o una #expresión"
+#: config/tc-arm.c:3218 config/tc-arm.c:4349 config/tc-v850.c:1844
+#: config/tc-v850.c:1865
+msgid "constant expression expected"
+msgstr "se esperaba una expresión constante"
 
-#: config/tc-arm.c:3633
-msgid "shift requires #expression"
-msgstr "el desplazamiento requiere una #expresión"
+#: config/tc-arm.c:3225
+msgid "invalid rotation"
+msgstr "rotación inválida"
 
-#: config/tc-arm.c:3663
-msgid "shift of 0 ignored."
-msgstr "se ignora un desplazamiento de 0."
+#: config/tc-arm.c:3340 config/tc-arm.c:3640
+msgid "']' expected"
+msgstr "se esperaba ']'"
 
-#: config/tc-arm.c:3669
-msgid "invalid immediate shift"
-msgstr "desplazamiento inmediato inválido"
+#: config/tc-arm.c:3358
+msgid "'}' expected at end of 'option' field"
+msgstr "se esperaba '}' al final del campo 'option'"
 
-#: config/tc-arm.c:3723 config/tc-arm.c:3809 config/tc-arm.c:3875
-#: config/tc-arm.c:4112 config/tc-arm.c:4214 config/tc-arm.c:4536
-#: config/tc-arm.c:4760 config/tc-arm.c:5698 expr.c:1332 read.c:2198
-msgid "bad expression"
-msgstr "expresión errónea"
+#: config/tc-arm.c:3363
+msgid "cannot combine index with option"
+msgstr "no se puede combinar index con option"
 
-#: config/tc-arm.c:3728 config/tc-arm.c:3814 config/tc-arm.c:3881
-#: config/tc-arm.c:4118 config/tc-arm.c:4220 config/tc-arm.c:5832
-#: config/tc-arm.c:6182 config/tc-arm.c:6454 config/tc-arm.c:7063
-#: config/tc-v850.c:1924 config/tc-v850.c:1945
-msgid "constant expression expected"
-msgstr "se esperaba una expresión constante"
+#: config/tc-arm.c:3376
+msgid "cannot combine pre- and post-indexing"
+msgstr "no se puede combinar pre y post-indizado"
 
-#: config/tc-arm.c:3734 config/tc-arm.c:3820 config/tc-arm.c:4545
-#: config/tc-arm.c:4769 config/tc-arm.c:5109 config/tc-arm.c:8198
-#: config/tc-arm.c:8233 config/tc-arm.c:8243 config/tc-z8k.c:1125
-#: config/tc-z8k.c:1137
-msgid "immediate value out of range"
-msgstr "valor inmediato fuera de rango"
+#: config/tc-arm.c:3472
+msgid "flag for {c}psr instruction expected"
+msgstr "se esperaba una opción para la instrucción {c}psr"
 
-#: config/tc-arm.c:4020
-msgid "missing endian specifier"
-msgstr "falta el especificador endian"
+#: config/tc-arm.c:3497
+msgid "unrecognized CPS flag"
+msgstr "opción CPS no reconocida"
 
-#: config/tc-arm.c:4029
+#: config/tc-arm.c:3504
+msgid "missing CPS flags"
+msgstr "faltan las opciones CPS"
+
+#: config/tc-arm.c:3527 config/tc-arm.c:3533
 msgid "valid endian specifiers are be or le"
 msgstr "los especificadores endian válidos son be o le"
 
-#: config/tc-arm.c:4096 config/tc-arm.c:4198
+#: config/tc-arm.c:3555
 msgid "missing rotation field after comma"
 msgstr "falta el campo rotation después de la coma"
 
-#: config/tc-arm.c:4140 config/tc-arm.c:4243
-msgid "rotation can be 8, 16, 24 or 0 when field is ommited"
-msgstr "rotation puede ser 8, 16, 24 o 0 cuando se omite el campo"
+#: config/tc-arm.c:3570
+msgid "rotation can only be 0, 8, 16, or 24"
+msgstr "la rotación sólo puede ser 0, 8 , 16 o 24"
 
-#: config/tc-arm.c:4492
-msgid "unrecognized flag"
-msgstr "opción no reconocida"
+#: config/tc-arm.c:3590
+msgid "condition required"
+msgstr "se requiere una condición"
 
-#: config/tc-arm.c:4499
-msgid "no 'a', 'i', or 'f' flags for 'cps'"
-msgstr "no hay opciones 'a', 'i', o 'f' para 'cps'"
+#: config/tc-arm.c:3632
+msgid "invalid shift"
+msgstr "desplazamiento inválido"
 
-#: config/tc-arm.c:4810
-msgid "lo register required"
-msgstr "se requiere el registro lo"
+#: config/tc-arm.c:3929
+msgid "iWMMXt data or control register expected"
+msgstr "se esperaba un registro de datos o control iWMMXt"
 
-#: config/tc-arm.c:4818
-msgid "hi register required"
-msgstr "se requiere el registro hi"
+#: config/tc-arm.c:4051
+msgid "garbage following instruction"
+msgstr "basura a continuación de la instrucción"
 
-#: config/tc-arm.c:4886
-msgid "only lo regs allowed with immediate"
-msgstr "sólo se permiten registros lo con inmediatos"
+#: config/tc-arm.c:4185
+msgid "instruction does not accept preindexed addressing"
+msgstr "la instrucción no acepta el direccionamiento preindizado"
 
-#: config/tc-arm.c:4905 config/tc-xtensa.c:4123
-msgid "invalid immediate"
-msgstr "inmediato inválido"
+#. unindexed - only for coprocessor
+#: config/tc-arm.c:4201 config/tc-arm.c:5857
+msgid "instruction does not accept unindexed addressing"
+msgstr "la instrucción no acepta el direccionamiento sin indizar"
 
-#: config/tc-arm.c:5141 config/tc-arm.c:5285
-msgid "non-word size not supported with control register"
-msgstr "un tamaño diferente de palabra no tiene soporte con un registro de control"
+#: config/tc-arm.c:4209
+msgid "destination register same as write-back base"
+msgstr "el registro destino es el mismo que la base de escritura-hacia-atrás"
 
-#: config/tc-arm.c:5155
-msgid "only r15 allowed here"
-msgstr "sólo se permite r15 aquí"
+#: config/tc-arm.c:4210
+msgid "source register same as write-back base"
+msgstr "el registro fuente es el mismo que la base de escritura-hacia-atrás"
 
-#: config/tc-arm.c:5283
-msgid "conditional execution not supported with control register"
-msgstr "la ejecución condicional no tiene soporte con un registro de control"
+#: config/tc-arm.c:4256
+msgid "instruction does not accept scaled register index"
+msgstr "la instrucción no acepta el índice de registro escalado"
 
-#: config/tc-arm.c:5493
-msgid "'[' expected after PLD mnemonic"
-msgstr "se esperaba '[' después del mnemónico PLD"
+#: config/tc-arm.c:4295
+msgid "instruction does not support unindexed addressing"
+msgstr "la instrucción no acepta el direccionamiento sin indizar"
 
-#: config/tc-arm.c:5515
-msgid "post-indexed expression used in preload instruction"
-msgstr "se usó una expresión post-indizada en la instrucción de precarga"
+#: config/tc-arm.c:4310
+msgid "pc may not be used with write-back"
+msgstr "el pc no se puede usar con escritura hacia atrás"
 
-#: config/tc-arm.c:5520 config/tc-arm.c:5550
-msgid "writeback used in preload instruction"
-msgstr "se usó escritura hacia atrás en la instrucción de precarga"
+#: config/tc-arm.c:4315
+msgid "instruction does not support writeback"
+msgstr "la instrucción no tiene soporte para escritura hacia atrás"
 
-#: config/tc-arm.c:5591
-msgid "destination register must be even"
-msgstr "el registro de destino debe ser par"
+#: config/tc-arm.c:4344
+msgid "invalid pseudo operation"
+msgstr "pseudo operación inválida"
 
-#: config/tc-arm.c:5597
-msgid "r14 not allowed here"
-msgstr "no se permite r14 aquí"
+#: config/tc-arm.c:4390
+msgid "literal pool insertion failed"
+msgstr "falló la inserción en el conjunto de literales"
 
-#: config/tc-arm.c:5604
-msgid "pre/post-indexing used when modified address register is destination"
-msgstr "se usó pre/post-indizado cuando el registro de dirección modificado es el destino"
+#: config/tc-arm.c:4448
+msgid "Rn must not overlap other operands"
+msgstr "Rn no debe sobreescribir otros operandos"
 
-#: config/tc-arm.c:5614
-msgid "ldrd destination registers must not overlap index register"
-msgstr "los registros destino ldrd no deben quedar sobre el registro índice"
+#: config/tc-arm.c:4534 config/tc-arm.c:4553 config/tc-arm.c:4566
+#: config/tc-arm.c:6360 config/tc-arm.c:6380 config/tc-arm.c:6394
+msgid "bit-field extends past end of register"
+msgstr "el campo de bits se extiende más allá del final del registro"
 
-#: config/tc-arm.c:5874
-msgid "register or shift expression expected"
-msgstr "se esperaba un registro o una expresión de desplazamiento"
+#: config/tc-arm.c:4595
+msgid "the only suffix valid here is '(plt)'"
+msgstr "el único sufijo válido aquí es '(plt)'"
 
-#: config/tc-arm.c:5926
-msgid "invalid floating point immediate expression"
-msgstr "expresión inmediata de coma flotante inválida"
+#: config/tc-arm.c:4627
+msgid "use of r15 in blx in ARM mode is not really useful"
+msgstr "el uso de r15 en blx en modo ARM no es realmente útil"
 
-#: config/tc-arm.c:5930
-msgid "floating point register or immediate expression expected"
-msgstr "se esperaba un registro de coma flotante o una expresión inmediata"
+#: config/tc-arm.c:4645
+msgid "use of r15 in bx in ARM mode is not really useful"
+msgstr "el uso de r15 en bx en modo ARM no es realmente útil"
 
-#: config/tc-arm.c:6076 config/tc-arm.c:6264 config/tc-arm.c:6345
-msgid "address expected"
-msgstr "se esperaba una dirección"
+#: config/tc-arm.c:4657 config/tc-arm.c:6508
+msgid "use of r15 in bxj is not really useful"
+msgstr "el uso de r15 en bxj no es realmente útil"
 
-#: config/tc-arm.c:6106 config/tc-arm.c:6118 config/tc-arm.c:6155
-#: config/tc-arm.c:6282 config/tc-arm.c:6375 config/tc-arm.c:6389
-#: config/tc-arm.c:6426
-#, c-format
-msgid "%s register same as write-back base"
-msgstr "el registro %s es el mismo que la base de escritura-hacia-atrás"
+#: config/tc-arm.c:4761 config/tc-arm.c:4770
+msgid "writeback of base register is UNPREDICTABLE"
+msgstr "la escritura hacia atrás del registro base es IMPREDECIBLE"
 
-#: config/tc-arm.c:6108 config/tc-arm.c:6120 config/tc-arm.c:6157
-#: config/tc-arm.c:6284 config/tc-arm.c:6377 config/tc-arm.c:6391
-#: config/tc-arm.c:6428
-msgid "destination"
-msgstr "destino"
+#: config/tc-arm.c:4764
+msgid "writeback of base register when in register list is UNPREDICTABLE"
+msgstr "la escritura hacia atrás del registro base cuando está en la lista de registros es IMPREDECIBLE"
 
-#: config/tc-arm.c:6108 config/tc-arm.c:6120 config/tc-arm.c:6157
-#: config/tc-arm.c:6284 config/tc-arm.c:6377 config/tc-arm.c:6391
-#: config/tc-arm.c:6428
-msgid "source"
-msgstr "fuente"
+#: config/tc-arm.c:4774
+msgid "if writeback register is in list, it must be the lowest reg in the list"
+msgstr "si el registro de escritura hacia atrás está en la lista, debe ser el registro más bajo en la lista"
 
-#: config/tc-arm.c:6167 config/tc-arm.c:6438 config/tc-arm.c:8411
-msgid "invalid pseudo operation"
-msgstr "pseudo operación inválida"
+#: config/tc-arm.c:4789
+msgid "first destination register must be even"
+msgstr "el primer registro de destino debe ser par"
 
-#: config/tc-arm.c:6219 config/tc-arm.c:6489
-msgid "literal pool insertion failed"
-msgstr "falló la inserción en el conjunto de literales"
+#: config/tc-arm.c:4792 config/tc-arm.c:4849
+msgid "can only load two consecutive registers"
+msgstr "solamente se pueden cargar dos registros consecutivos"
 
-#: config/tc-arm.c:6312 config/tc-arm.c:6318
-msgid "post-indexed expression expected"
-msgstr "se esperaba una expresión post-indizada"
+#. If op 1 were present and equal to PC, this function wouldn't
+#. have been called in the first place.
+#. If op 2 were present and equal to PC, this function wouldn't
+#. have been called in the first place.
+#: config/tc-arm.c:4793 config/tc-arm.c:4852 config/tc-arm.c:5299
+#: config/tc-arm.c:6886
+msgid "r14 not allowed here"
+msgstr "no se permite r14 aquí"
 
-#: config/tc-arm.c:6553
-msgid "bad range in register list"
-msgstr "rango erróneo en la lista de registros"
+#: config/tc-arm.c:4794
+msgid "'[' expected"
+msgstr "se esperaba '['"
 
-#: config/tc-arm.c:6561 config/tc-arm.c:6570 config/tc-arm.c:6612
-#, c-format
-msgid "Warning: duplicated register (r%d) in register list"
-msgstr "Aviso: registro duplicado (r%d) en la lista de registros"
+#: config/tc-arm.c:4807
+msgid "base register written back, and overlaps second destination register"
+msgstr "el registro base se escribió hacia atrás, y sobreescribe el segundo registro de destino"
 
-#: config/tc-arm.c:6573
-msgid "Warning: register range not in ascending order"
-msgstr "Aviso: el rango de registros no está en orden ascendente"
+#: config/tc-arm.c:4815
+msgid "index register overlaps destination register"
+msgstr "el registro índice sobreescribe el registro destino"
 
-#: config/tc-arm.c:6585
-msgid "missing `}'"
-msgstr "falta un `}'"
+#: config/tc-arm.c:4829 config/tc-arm.c:5272 config/tc-arm.c:6706
+#: config/tc-arm.c:7581
+msgid "instruction does not accept this addressing mode"
+msgstr "la instrucción no acepta este modo de direccionamiento"
 
-#: config/tc-arm.c:6601
-msgid "invalid register mask"
-msgstr "máscara de registro inválida"
+#: config/tc-arm.c:4835 config/tc-arm.c:5281
+msgid "offset must be zero in ARM encoding"
+msgstr "el desplazamiento debe ser cero en codificación ARM"
 
-#: config/tc-arm.c:6659
-msgid "r15 not allowed as base register"
-msgstr "no se permite r15 como registro base"
+#: config/tc-arm.c:4846 config/tc-arm.c:5293
+msgid "even register required"
+msgstr "se requiere un registro par"
 
-#: config/tc-arm.c:6693 config/tc-arm.c:6702
-msgid "writeback of base register is UNPREDICTABLE"
-msgstr "la escritura hacia atrás del registro base es IMPREDECIBLE"
+#: config/tc-arm.c:4877 config/tc-arm.c:4908
+msgid "this instruction requires a post-indexed address"
+msgstr "esta instrucción requiere una dirección post-indizada"
 
-#: config/tc-arm.c:6696
-msgid "writeback of base register when in register list is UNPREDICTABLE"
-msgstr "la escritura hacia atrás del registro base cuando está en la lista de registros es IMPREDECIBLE"
+#: config/tc-arm.c:4935
+msgid "rd and rm should be different in mla"
+msgstr "rd y rm deben ser diferentes en mla"
 
-#: config/tc-arm.c:6706
-msgid "if writeback register is in list, it must be the lowest reg in the list"
-msgstr "si el registro de escritura hacia atrás está en la lista, debe ser el registro más bajo en la lista"
+#: config/tc-arm.c:4967 config/tc-arm.c:7121
+msgid "'CPSR' or 'SPSR' expected"
+msgstr "se esperaba 'CPSR' o 'SPSR'"
 
-#: config/tc-arm.c:6760 config/tc-arm.c:6774
-msgid "r15 not allowed in swap"
-msgstr "no se permite r15 en el intercambio"
+#: config/tc-arm.c:5000
+msgid "rd and rm should be different in mul"
+msgstr "rd y rm deben ser diferentes en mul"
 
-#: config/tc-arm.c:7069
-msgid "constant value required for number of registers"
-msgstr "se requiere un valor constante para el número de registros"
+#: config/tc-arm.c:5021
+msgid "rdhi, rdlo and rm must all be different"
+msgstr "rdhi, rdlo y rm deben ser todos diferentes"
 
-#: config/tc-arm.c:7077 config/tc-arm.c:14226
-msgid "number of registers must be in the range [1:4]"
-msgstr "el número de registros debe estar en el rango [1:4]"
+#: config/tc-arm.c:5083
+msgid "'[' expected after PLD mnemonic"
+msgstr "se esperaba '[' después del mnemónico PLD"
 
-#: config/tc-arm.c:7138
-msgid "r15 not allowed as base register with write-back"
-msgstr "no se permite r15 como registro base con escritura-hacia-atrás"
+#: config/tc-arm.c:5085
+msgid "post-indexed expression used in preload instruction"
+msgstr "se usó una expresión post-indizada en la instrucción de precarga"
 
-#: config/tc-arm.c:7533 config/tc-arm.c:7572 config/tc-h8300.c:1010
-#: config/tc-mips.c:9585 config/tc-mips.c:9615
-msgid "invalid register list"
-msgstr "lista de registros inválida"
+#: config/tc-arm.c:5087
+msgid "writeback used in preload instruction"
+msgstr "se usó escritura hacia atrás en la instrucción de precarga"
 
-#: config/tc-arm.c:7539 config/tc-arm.c:14310 config/tc-arm.c:14317
-msgid "register list not in ascending order"
-msgstr "la lista de registros no está en orden ascendente"
+#: config/tc-arm.c:5089
+msgid "unindexed addressing used in preload instruction"
+msgstr "se usó un direccionamiento sin indizar en la instrucción de precarga"
 
-#: config/tc-arm.c:7564
-msgid "register range not in ascending order"
-msgstr "el rango de registros no está en orden ascendente"
+#: config/tc-arm.c:5188 config/tc-arm.c:7492
+msgid "source1 and dest must be same register"
+msgstr "source1 y dest debe ser el mismo registro"
 
-#: config/tc-arm.c:7597
-msgid "non-contiguous register range"
-msgstr "el rango de registro no es contiguo"
+#: config/tc-arm.c:5238 config/tc-arm.c:7178
+msgid "rdhi and rdlo must be different"
+msgstr "rdhi y rdlo deben ser diferentes"
 
-#: config/tc-arm.c:7626 config/tc-arm.c:7663
+#: config/tc-arm.c:5296
+msgid "can only store two consecutive registers"
+msgstr "solamente se pueden almacenar dos registros consecutivos"
+
+#: config/tc-arm.c:5391 config/tc-arm.c:5408
 msgid "only two consecutive VFP SP registers allowed here"
 msgstr "solamente se permiten dos registros SP VFP consecutivos aquí"
 
-#: config/tc-arm.c:7810
-msgid "VFP system register expected"
-msgstr "se esperaba un registro de sistema VFP"
-
-#: config/tc-arm.c:7921 config/tc-arm.c:7958
+#: config/tc-arm.c:5436 config/tc-arm.c:5451
 msgid "this addressing mode requires base-register writeback"
 msgstr "este modo de direccionamiento requiere escritura hacia atrás del registro-base"
 
-#: config/tc-arm.c:8140 config/tc-arm.c:9219
+#: config/tc-arm.c:5529
+msgid "this instruction does not support indexing"
+msgstr "esta instrucción no tiene soporte para indizado"
+
+#: config/tc-arm.c:5552
+msgid "only r15 allowed here"
+msgstr "sólo se permite r15 aquí"
+
+#: config/tc-arm.c:5757
+msgid "shift by register not allowed in thumb mode"
+msgstr "no se permite desplazar por registro en modo thumb"
+
+#: config/tc-arm.c:5769 config/tc-arm.c:11339
+msgid "shift expression is too large"
+msgstr "la expresión de desplazamiento es demasiado grande"
+
+#: config/tc-arm.c:5795
+msgid "Thumb does not support the ldr =N pseudo-operation"
+msgstr "Thumb no tiene soporte para la pseudo-operación ldr =N"
+
+#: config/tc-arm.c:5800
+msgid "cannot use register index with PC-relative addressing"
+msgstr "no se puede usar el índice de registro con direccionamiento relativo al PC"
+
+#: config/tc-arm.c:5801
+msgid "cannot use register index with this instruction"
+msgstr "no se puede usar el índice de registro con esta instrucción"
+
+#: config/tc-arm.c:5803
+msgid "Thumb does not support negative register indexing"
+msgstr "Thumb no tiene soporte para indizado negativo de registro"
+
+#: config/tc-arm.c:5805
+msgid "Thumb does not support register post-indexing"
+msgstr "Thumb no tiene soporte para post-indizado de registro"
+
+#: config/tc-arm.c:5807
+msgid "Thumb does not support register indexing with writeback"
+msgstr "Thumb no tiene soporte para indizado de registro con escritura hacia atrás"
+
+#: config/tc-arm.c:5809
+msgid "Thumb supports only LSL in shifted register indexing"
+msgstr "Thumb sólo da soporte a LSL en inidizado desplazado de registro"
+
+#: config/tc-arm.c:5818
+msgid "shift out of range"
+msgstr "desplazamiento fuera de rango"
+
+#: config/tc-arm.c:5826
+msgid "cannot use writeback with PC-relative addressing"
+msgstr "no se puede usar escritura hacia atrás con el direccionamiento relativo al PC"
+
+#: config/tc-arm.c:5828
+msgid "cannot use writeback with this instruction"
+msgstr "no se puede usar escritura hacia atrás con esta instrucción"
+
+#: config/tc-arm.c:5847
+msgid "cannot use post-indexing with PC-relative addressing"
+msgstr "no se puede usar post-indizado con el direccionamiento relativo al PC"
+
+#: config/tc-arm.c:5848
+msgid "cannot use post-indexing with this instruction"
+msgstr "no se puede usar post-indizado con esta instrucción"
+
+#: config/tc-arm.c:5975
+msgid "PC not allowed as destination"
+msgstr "no se permite PC como destino"
+
+#: config/tc-arm.c:6093 config/tc-arm.c:6234 config/tc-arm.c:6326
+#: config/tc-arm.c:7092
+msgid "shift must be constant"
+msgstr "el desplazamiento debe ser constante"
+
+#: config/tc-arm.c:6120 config/tc-arm.c:6249 config/tc-arm.c:6341
+#: config/tc-arm.c:7105
+msgid "unshifted register required"
+msgstr "se requiere un registro sin desplazar"
+
+#: config/tc-arm.c:6135 config/tc-arm.c:6352 config/tc-arm.c:7165
+msgid "dest must overlap one source register"
+msgstr "dest debe sobreescribir un registro fuente"
+
+#: config/tc-arm.c:6252
 msgid "dest and source1 must be the same register"
 msgstr "dest y source1 debe ser el mismo registro"
 
-#: config/tc-arm.c:8147
-msgid "subtract valid only on lo regs"
-msgstr "subtract válido sólo en registros lo"
+#: config/tc-arm.c:6537
+msgid "Thumb does not support the 2-argument form of this instruction"
+msgstr "Thumb no tiene soporte para la forma con 2 argumentos de esta instrucción"
 
-#: config/tc-arm.c:8171
-msgid "invalid Hi register with immediate"
-msgstr "registro Hi inválido con el inmediato"
+#: config/tc-arm.c:6616
+msgid "Thumb load/store multiple does not support {reglist}^"
+msgstr "load/store Thumb múltiples no tienen soporte para {reglist}^"
 
-#: config/tc-arm.c:8211
-msgid "invalid immediate value for stack adjust"
-msgstr "valor inmediato inválido para el ajuste de la pila"
+#: config/tc-arm.c:6633 config/tc-arm.c:6649 config/tc-arm.c:6680
+#, c-format
+msgid "value stored for r%d is UNPREDICTABLE"
+msgstr "el valor almacenado para r%d es IMPREDECIBLE"
 
-#: config/tc-arm.c:8222
-msgid "invalid immediate for address calculation"
-msgstr "inmediato inválido para el cálculo de dirección"
+#: config/tc-arm.c:6643
+msgid "SP should not be in register list"
+msgstr "SP no debe estar en la lista de registros"
 
-#: config/tc-arm.c:8307
-msgid "source1 and dest must be same register"
-msgstr "source1 y dest debe ser el mismo registro"
+#: config/tc-arm.c:6647
+msgid "PC should not be in register list"
+msgstr "PC no debe estar en la lista de registros"
 
-#: config/tc-arm.c:8341
-msgid "invalid immediate for shift"
-msgstr "inmediato inválido para el desplazamiento"
+#: config/tc-arm.c:6656 config/tc-arm.c:7311
+msgid "LR and PC should not both be in register list"
+msgstr "tanto LR como PC no deben estar en la lista de registros"
 
-#: config/tc-arm.c:8402
-msgid "expected ']'"
-msgstr "se esperaba ']'"
+#: config/tc-arm.c:6659
+msgid "base register should not be in register list when written back"
+msgstr "el registro base no debe estar en la lista de registros cuando se escribe hacia atrás"
 
-#: config/tc-arm.c:8475
+#: config/tc-arm.c:6677 config/tc-arm.c:6687
+msgid "this instruction will write back the base register"
+msgstr "esta instrucción escribirá hacia atrás el registro base"
+
+#: config/tc-arm.c:6690
+msgid "this instruction will not write back the base register"
+msgstr "esta instrucción no escribirá hacia atrás el registro base"
+
+#: config/tc-arm.c:6719
+msgid "r14 not allowed as first register when second register is omitted"
+msgstr "no se permite r14 como primer registro cuando se omite el segundo registro"
+
+#: config/tc-arm.c:6809 config/tc-arm.c:6822 config/tc-arm.c:6858
+msgid "Thumb does not support this addressing mode"
+msgstr "Thumb no tiene soporte para este modo de direccionamiento"
+
+#: config/tc-arm.c:6826
 msgid "byte or halfword not valid for base register"
 msgstr "byte o halfword no válido para el registro base"
 
-#: config/tc-arm.c:8480
+#: config/tc-arm.c:6829
 msgid "r15 based store not allowed"
 msgstr "no se permite el almacenamiento basado en r15"
 
-#: config/tc-arm.c:8485
+#: config/tc-arm.c:6831
 msgid "invalid base register for register offset"
 msgstr "registro base inválido para el desplazamiento del registro"
 
-#: config/tc-arm.c:8503 config/tc-arm.c:8538
-msgid "invalid offset"
-msgstr "desplazamiento inválido"
+#: config/tc-arm.c:7032
+msgid "only lo regs allowed with immediate"
+msgstr "sólo se permiten registros lo con inmediatos"
 
-#: config/tc-arm.c:8514
-msgid "invalid base register in load/store"
-msgstr "registro base inválido en carga/almacenamiento"
+#: config/tc-arm.c:7130
+msgid "Thumb encoding does not support an immediate here"
+msgstr "la codificación Thumb no tiene soporte para un inmediato aquí"
 
-#: config/tc-arm.c:8990
-msgid "expecting immediate, 7bit operand"
-msgstr "se espera un operando inmediato de 7 bits"
+#: config/tc-arm.c:7200
+msgid "Thumb does not support NOP with hints"
+msgstr "Thumb no tiene soporte para NOP con pistas"
 
-#: config/tc-arm.c:9005
-msgid "immediate out of range"
-msgstr "inmediato fuera de rango"
+#: config/tc-arm.c:7282
+msgid "push/pop do not support {reglist}^"
+msgstr "push/pop no tienen soporte para {reglist}^"
 
-#: config/tc-arm.c:9058
-msgid "offset expected"
-msgstr "se esperaba un desplazamiento"
+#: config/tc-arm.c:7301
+msgid "SP not allowed in register list"
+msgstr "no se permite SP en la lista de registros"
 
-#: config/tc-arm.c:9067 config/tc-pj.c:536 config/tc-sh.c:4107
-msgid "offset out of range"
-msgstr "desplazamiento fuera de rango"
+#: config/tc-arm.c:7305
+msgid "PC not allowed in register list"
+msgstr "no se permite PC en la lista de registros"
 
-#: config/tc-arm.c:9072
-msgid "offset not a multiple of 4"
-msgstr "el desplazamiento no es un múltiplo de 4"
+#: config/tc-arm.c:7328
+msgid "invalid register list to push/pop instruction"
+msgstr "lista de registros inválida para la instrucción push/pop"
 
-#: config/tc-arm.c:9227
-msgid "Rs and Rd must be different in MUL"
-msgstr "Rs y Rd deben ser diferentes en MUL"
+#: config/tc-arm.c:7513
+msgid "ror #imm not supported"
+msgstr "ror #imm no tiene soporte"
 
-#: config/tc-arm.c:9362
-msgid "inserted missing '!': load/store multiple always writes back base register"
-msgstr "se insertó un '!' faltante: los load/store múltiples siempre escribe hacia atrás el registro base"
+#: config/tc-arm.c:7638
+msgid "Thumb encoding does not support rotation"
+msgstr "la codificación Thumb no tiene soporte para rotación"
 
-#: config/tc-arm.c:9384
-msgid "only lo-regs valid in load/store multiple"
-msgstr "sólo los registros lo son válidos en carga/almacenamiento múltiple"
+#: config/tc-arm.c:7656
+msgid "PC is not a valid index register"
+msgstr "PC no es un registro índice válido"
 
-#: config/tc-arm.c:9426
-msgid "syntax: ldrs[b] Rd, [Rb, Ro]"
-msgstr "sintaxis: ldrs[b] Rd, [Rb, Ro]"
+#: config/tc-arm.c:7658
+msgid "instruction does not allow shifted index"
+msgstr "la instrucción no permite un índice desplazado"
 
-#: config/tc-arm.c:9486
-msgid "invalid register list to push/pop instruction"
-msgstr "lista de registros inválida para la instrucción push/pop"
+#: config/tc-arm.c:7660
+msgid "instruction requires shifted index"
+msgstr "la instrucción requiere un índice desplazado"
 
-#: config/tc-arm.c:9589 config/tc-arm.c:10966
-msgid "virtual memory exhausted"
-msgstr "memoria agotada"
+#: config/tc-arm.c:7943 config/tc-arm.c:8015
+msgid "conditional infixes are deprecated in unified syntax"
+msgstr "los infijos condicionales son obsoletos en la sintaxis unificada"
 
-#: config/tc-arm.c:9613
+#: config/tc-arm.c:8047
 #, c-format
-msgid "failed to create an alias for %s, reason: %s"
-msgstr "falló la creación de un alias para %s, razón: %s"
+msgid "bad instruction `%s'"
+msgstr "instrucción `%s' errónea"
 
-#: config/tc-arm.c:9677
+#: config/tc-arm.c:8063 config/tc-arm.c:8126
 #, c-format
-msgid "register '%s' does not exist\n"
-msgstr "el registro '%s' no existe\n"
+msgid "selected processor does not support `%s'"
+msgstr "el procesador seleccionado no tiene soporte para `%s'"
 
-#: config/tc-arm.c:9681
+#: config/tc-arm.c:8069
+msgid "Thumb does not support conditional execution"
+msgstr "Thumb no tiene soporte para la ejecución condicional"
+
+#: config/tc-arm.c:8080
+msgid "incorrect condition in IT block"
+msgstr "condición incorrecta en el bloque IT"
+
+#: config/tc-arm.c:8088
+msgid "thumb conditional instrunction not in IT block"
+msgstr "la instrucción condicional thumb no está en el bloque IT"
+
+#: config/tc-arm.c:8108
 #, c-format
-msgid "ignoring redefinition of register alias '%s' to non-existant register '%s'"
-msgstr "se ignora la redefinición del alias de registro '%s' al registro no existente '%s'"
+msgid "cannot honor width suffix -- `%s'"
+msgstr "no se puede honrar el sufijo de anchura -- `%s'"
 
-#: config/tc-arm.c:9690
+#: config/tc-arm.c:8131
 #, c-format
-msgid "ignoring redefinition of register alias '%s'"
-msgstr "se ignora la redefinición del alias de registro '%s'"
+msgid "width suffixes are invalid in ARM mode -- `%s'"
+msgstr "los sufijos de anchura son inválidos en modo ARM -- `%s'"
 
-#: config/tc-arm.c:9696
-msgid "ignoring incomplete .req pseuso op"
-msgstr "se ignora el pseudo operador incompleto .req"
+#: config/tc-arm.c:10340
+msgid "alignments greater than 32 bytes not supported in .text sections."
+msgstr "las alineaciones más grandes que 32 bytes no tienen soporte en la sección text."
 
-#: config/tc-arm.c:10990
-msgid "use of old and new-style options to set CPU type"
-msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de CPU"
+#: config/tc-arm.c:10634
+msgid "handerdata in cantunwind frame"
+msgstr "handerdata en un marco cantunwind"
 
-#: config/tc-arm.c:11000
-msgid "use of old and new-style options to set FPU type"
-msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de FPU"
+#: config/tc-arm.c:10651
+msgid "too many unwind opcodes for personality routine 0"
+msgstr "demasiados códigos de operación de desenredo para la rutina personality 0"
 
-#: config/tc-arm.c:11062
-msgid "hard-float conflicts with specified fpu"
-msgstr "hard-float tiene conflictos con la unidad de coma flotante (fpu) especificada"
+#: config/tc-arm.c:10683
+msgid "too many unwind opcodes"
+msgstr "demasiados códigos de operación de desenredo"
 
-#: config/tc-arm.c:11246
-msgid "bad call to MD_ATOF()"
-msgstr "llamada errónea a MD_ATOF()"
-
-#: config/tc-arm.c:11402
+#: config/tc-arm.c:11085 config/tc-arm.c:11365
 #, c-format
 msgid "undefined symbol %s used as an immediate value"
 msgstr "se usa el símbolo %s indefinido como un valor inmediato"
 
-#: config/tc-arm.c:11416
+#: config/tc-arm.c:11099 config/tc-arm.c:11394
 #, c-format
 msgid "invalid constant (%lx) after fixup"
 msgstr "constante inválidoa (%lx) después de la compostura"
 
-#: config/tc-arm.c:11453
+#: config/tc-arm.c:11136
 #, c-format
 msgid "unable to compute ADRL instructions for PC offset of 0x%lx"
 msgstr "no se pueden calcular las instrucciones ADRL para el desplazamiento de PC de 0x%lx"
 
-#: config/tc-arm.c:11483
+#: config/tc-arm.c:11168 config/tc-arm.c:11193
+msgid "invalid literal constant: pool needs to be closer"
+msgstr "constante literal inválida: el conjunto necesita estar más cerca"
+
+#: config/tc-arm.c:11171 config/tc-arm.c:11209
 #, c-format
 msgid "bad immediate value for offset (%ld)"
 msgstr "valor inmediato erróneo para el desplazamiento (%ld)"
 
-#: config/tc-arm.c:11505 config/tc-arm.c:11527
-msgid "invalid literal constant: pool needs to be closer"
-msgstr "constante literal inválida: el conjunto necesita estar más cerca"
-
-#: config/tc-arm.c:11507
+#: config/tc-arm.c:11195
 #, c-format
 msgid "bad immediate value for half-word offset (%ld)"
 msgstr "valor inmediato erróneo para el desplazamiento half-word (%ld)"
 
-#: config/tc-arm.c:11544
-msgid "shift expression is too large"
-msgstr "la expresión de desplazamiento es demasiado grande"
+#: config/tc-arm.c:11250
+msgid "offset not a multiple of 4"
+msgstr "el desplazamiento no es un múltiplo de 4"
 
-#: config/tc-arm.c:11561
-msgid "invalid smi expression"
-msgstr "expresión smi inválida"
+#: config/tc-arm.c:11257 config/tc-arm.c:11272 config/tc-arm.c:11287
+#: config/tc-arm.c:11298 config/tc-arm.c:11321 config/tc-pj.c:499
+#: config/tc-sh.c:4084
+msgid "offset out of range"
+msgstr "desplazamiento fuera de rango"
 
-#: config/tc-arm.c:11572 config/tc-arm.c:11581
+#: config/tc-arm.c:11410
+msgid "invalid smc expression"
+msgstr "expresión smc inválida"
+
+#: config/tc-arm.c:11421 config/tc-arm.c:11430
 msgid "invalid swi expression"
 msgstr "expresión swi inválida"
 
-#: config/tc-arm.c:11591
+#: config/tc-arm.c:11440
 msgid "invalid expression in load/store multiple"
 msgstr "expresión inválida en load/store múltiples"
 
-#: config/tc-arm.c:11641
-msgid "GAS can't handle same-section branch dest >= 0x04000000"
-msgstr "GAS no puede manejar un destino de ramificación en la misma sección >= 0x04000000"
+#: config/tc-arm.c:11455
+msgid "misaligned branch destination"
+msgstr "destinaciones ramificadas desalineadas"
 
-#: config/tc-arm.c:11650
-msgid "out of range branch"
-msgstr "ramificación fuera de rango"
-
-#: config/tc-arm.c:11707 config/tc-arm.c:11732
+#: config/tc-arm.c:11459 config/tc-arm.c:11479 config/tc-arm.c:11497
+#: config/tc-arm.c:11510 config/tc-arm.c:11523 config/tc-arm.c:11562
+#: config/tc-arm.c:11587
 msgid "branch out of range"
 msgstr "ramificación fuera de rango"
 
-#: config/tc-arm.c:11765
-msgid "branch with link out of range"
-msgstr "ramificación con enlace fuera de rango"
+#: config/tc-arm.c:11475
+msgid "misaligned BLX destination"
+msgstr "destino BLX desalineado"
 
-#: config/tc-arm.c:11858
+#: config/tc-arm.c:11536
+msgid "conditional branch out of range"
+msgstr "ramificación condicional fuera de rango"
+
+#: config/tc-arm.c:11657
 msgid "rel31 relocation overflow"
 msgstr "desbordamiento de reubicación rel31"
 
-#: config/tc-arm.c:11874
-msgid "illegal value for co-processor offset"
-msgstr "valor ilegal para el desplazamiento del co-procesador"
+#: config/tc-arm.c:11669 config/tc-arm.c:11694
+msgid "co-processor offset out of range"
+msgstr "desplazamiento de coprocesador fuera de rango"
 
-#: config/tc-arm.c:11886
-msgid "Illegal value for co-processor offset"
-msgstr "Valor ilegal para el desplazamiento del co-procesador"
-
-#: config/tc-arm.c:11910
+#: config/tc-arm.c:11710
 #, c-format
-msgid "invalid offset, target not word aligned (0x%08X)"
-msgstr "desplazamiento inválido, el objetivo no está alineado a word (0x%08X)"
+msgid "invalid offset, target not word aligned (0x%08lX)"
+msgstr "desplazamiento inválido, el objetivo no está alineado a word (0x%08lX)"
 
-#: config/tc-arm.c:11916 config/tc-arm.c:11926 config/tc-arm.c:11934
-#: config/tc-arm.c:11942 config/tc-arm.c:11950
+#: config/tc-arm.c:11716 config/tc-arm.c:11725 config/tc-arm.c:11733
+#: config/tc-arm.c:11741 config/tc-arm.c:11749
 #, c-format
 msgid "invalid offset, value too big (0x%08lX)"
 msgstr "desplazamiento inválido, valor demasiado grande (0x%08lX)"
 
-#: config/tc-arm.c:11990
+#: config/tc-arm.c:11790
+msgid "invalid Hi register with immediate"
+msgstr "registro Hi inválido con el inmediato"
+
+#: config/tc-arm.c:11806
 msgid "invalid immediate for stack address calculation"
 msgstr "inmediato inválido para el cálculo de la dirección de la pila"
 
-#: config/tc-arm.c:11999
+#: config/tc-arm.c:11814
 #, c-format
 msgid "invalid immediate for address calculation (value = 0x%08lX)"
 msgstr "inmediato inválido para el cálculo de la dirección (valor = 0x%08lX)"
 
-#: config/tc-arm.c:12009
-msgid "invalid 8bit immediate"
-msgstr "inmediato de 8bit inválido"
-
-#: config/tc-arm.c:12017
-msgid "invalid 3bit immediate"
-msgstr "inmediato de 3bit inválido"
-
-#: config/tc-arm.c:12033
+#: config/tc-arm.c:11844
 #, c-format
 msgid "invalid immediate: %ld is too large"
 msgstr "inmediato inválido: %ld es demasiado grande"
 
-#: config/tc-arm.c:12048
+#: config/tc-arm.c:11856
 #, c-format
-msgid "illegal Thumb shift value: %ld"
-msgstr "valor de desplazamiento Thumb ilegal: %ld"
+msgid "invalid shift value: %ld"
+msgstr "valor de desplazamiento inválid: %ld"
 
-#: config/tc-arm.c:12062
+#: config/tc-arm.c:11875
 #, c-format
 msgid "bad relocation fixup type (%d)"
 msgstr "tipo de compostura de reubicación inválido (%d)"
 
-#: config/tc-arm.c:12133
+#: config/tc-arm.c:11943
 msgid "literal referenced across section boundary"
 msgstr "se referencía una literal a través de un límite de sección"
 
-#: config/tc-arm.c:12151
+#: config/tc-arm.c:11973
 msgid "internal relocation (type: IMMEDIATE) not fixed up"
 msgstr "reubicación interna (tipo: IMMEDIATE) no compuesta"
 
-#: config/tc-arm.c:12156
+#: config/tc-arm.c:11978
 msgid "ADRL used for a symbol not defined in the same file"
 msgstr "se utiliza ADRL para un símbolo que no está definido en el mismo fichero"
 
-#: config/tc-arm.c:12165
+#: config/tc-arm.c:11987
 #, c-format
 msgid "undefined local label `%s'"
 msgstr "etiqueta local `%s' sin definir"
 
-#: config/tc-arm.c:12171
+#: config/tc-arm.c:11993
 msgid "internal_relocation (type: OFFSET_IMM) not fixed up"
 msgstr "reubicación_interna (tipo OFFSET_IMM) no compuesta"
 
-#: config/tc-arm.c:12191 config/tc-cris.c:3936 config/tc-mcore.c:2053
-#: config/tc-mmix.c:2930 config/tc-ns32k.c:2393
+#: config/tc-arm.c:12014 config/tc-cris.c:3869 config/tc-mcore.c:1995
+#: config/tc-mmix.c:2888 config/tc-ns32k.c:2284
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: config/tc-arm.c:12194 config/tc-arm.c:12215
+#: config/tc-arm.c:12017 config/tc-arm.c:12038
 #, c-format
 msgid "cannot represent %s relocation in this object file format"
 msgstr "no se puede representar la reubicación %s en este formato de fichero objeto"
 
-#: config/tc-arm.c:12342
+#: config/tc-arm.c:12254
 #, c-format
-msgid "no operator -- statement `%s'\n"
-msgstr "no hay operador -- declaración `%s'\n"
+msgid "%s: unexpected function type: %d"
+msgstr "%s: tipo de función inesperado: %d"
 
-#: config/tc-arm.c:12360 config/tc-arm.c:12386
-#, c-format
-msgid "selected processor does not support `%s'"
-msgstr "el procesador seleccionado no tiene soporte para `%s'"
+#: config/tc-arm.c:12331
+msgid "virtual memory exhausted"
+msgstr "memoria agotada"
 
-#: config/tc-arm.c:12404
-#, c-format
-msgid "bad instruction `%s'"
-msgstr "instrucción `%s' errónea"
+#: config/tc-arm.c:12357
+msgid "use of old and new-style options to set CPU type"
+msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de CPU"
 
-#: config/tc-arm.c:12505
+#: config/tc-arm.c:12367
+msgid "use of old and new-style options to set FPU type"
+msgstr "se utilizan opciones de estilo antiguo y nuevo para establecer el tipo de FPU"
+
+#: config/tc-arm.c:12441
+msgid "hard-float conflicts with specified fpu"
+msgstr "hard-float tiene conflictos con la unidad de coma flotante (fpu) especificada"
+
+#: config/tc-arm.c:12633
 msgid "generate PIC code"
 msgstr "genera código PIC"
 
-#: config/tc-arm.c:12506
+#: config/tc-arm.c:12634
 msgid "assemble Thumb code"
 msgstr "ensambla código Thumb"
 
-#: config/tc-arm.c:12507
+#: config/tc-arm.c:12635
 msgid "support ARM/Thumb interworking"
 msgstr "soporta la interoperación ARM/Thumb"
 
-#: config/tc-arm.c:12509
+#: config/tc-arm.c:12637
 msgid "code uses 32-bit program counter"
 msgstr "el código utiliza un contador de programa de 32-bit"
 
-#: config/tc-arm.c:12510
+#: config/tc-arm.c:12638
 msgid "code uses 26-bit program counter"
 msgstr "el código utiliza un contador de programa de 26-bit"
 
-#: config/tc-arm.c:12511
+#: config/tc-arm.c:12639
 msgid "floating point args are in fp regs"
 msgstr "los argumentos de coma flotante están en los registros de coma flotante"
 
-#: config/tc-arm.c:12513
+#: config/tc-arm.c:12641
 msgid "re-entrant code"
 msgstr "código reentrante"
 
-#: config/tc-arm.c:12514
+#: config/tc-arm.c:12642
 msgid "code is ATPCS conformant"
 msgstr "el código es conforme a ATPCS"
 
-#: config/tc-arm.c:12515
+#: config/tc-arm.c:12643
 msgid "assemble for big-endian"
 msgstr "ensamblar para big-endian"
 
-#: config/tc-arm.c:12516
+#: config/tc-arm.c:12644
 msgid "assemble for little-endian"
 msgstr "ensamblar para little-endian"
 
 #. These are recognized by the assembler, but have no affect on code.
-#: config/tc-arm.c:12520
+#: config/tc-arm.c:12648
 msgid "use frame pointer"
 msgstr "usar puntero de marco"
 
-#: config/tc-arm.c:12521
+#: config/tc-arm.c:12649
 msgid "use stack size checking"
 msgstr "usar revisión del tamaño de la pila"
 
 #. DON'T add any new processors to this list -- we want the whole list
 #. to go away...  Add them to the processors table instead.
-#: config/tc-arm.c:12525 config/tc-arm.c:12526
+#: config/tc-arm.c:12653 config/tc-arm.c:12654
 msgid "use -mcpu=arm1"
 msgstr "usar -mcpu=arm1"
 
-#: config/tc-arm.c:12527 config/tc-arm.c:12528
+#: config/tc-arm.c:12655 config/tc-arm.c:12656
 msgid "use -mcpu=arm2"
 msgstr "usar -mcpu=arm2"
 
-#: config/tc-arm.c:12529 config/tc-arm.c:12530
+#: config/tc-arm.c:12657 config/tc-arm.c:12658
 msgid "use -mcpu=arm250"
 msgstr "usar -mcpu=arm250"
 
-#: config/tc-arm.c:12531 config/tc-arm.c:12532
+#: config/tc-arm.c:12659 config/tc-arm.c:12660
 msgid "use -mcpu=arm3"
 msgstr "usar -mcpu=arm3"
 
-#: config/tc-arm.c:12533 config/tc-arm.c:12534
+#: config/tc-arm.c:12661 config/tc-arm.c:12662
 msgid "use -mcpu=arm6"
 msgstr "usar -mcpu=arm6"
 
-#: config/tc-arm.c:12535 config/tc-arm.c:12536
+#: config/tc-arm.c:12663 config/tc-arm.c:12664
 msgid "use -mcpu=arm600"
 msgstr "usar -mcpu=arm600"
 
-#: config/tc-arm.c:12537 config/tc-arm.c:12538
+#: config/tc-arm.c:12665 config/tc-arm.c:12666
 msgid "use -mcpu=arm610"
 msgstr "usar -mcpu=arm610"
 
-#: config/tc-arm.c:12539 config/tc-arm.c:12540
+#: config/tc-arm.c:12667 config/tc-arm.c:12668
 msgid "use -mcpu=arm620"
 msgstr "usar -mcpu=arm620"
 
-#: config/tc-arm.c:12541 config/tc-arm.c:12542
+#: config/tc-arm.c:12669 config/tc-arm.c:12670
 msgid "use -mcpu=arm7"
 msgstr "usar -mcpu=arm7"
 
-#: config/tc-arm.c:12543 config/tc-arm.c:12544
+#: config/tc-arm.c:12671 config/tc-arm.c:12672
 msgid "use -mcpu=arm70"
 msgstr "usar -mcpu=arm70"
 
-#: config/tc-arm.c:12545 config/tc-arm.c:12546
+#: config/tc-arm.c:12673 config/tc-arm.c:12674
 msgid "use -mcpu=arm700"
 msgstr "usar -mcpu=arm700"
 
-#: config/tc-arm.c:12547 config/tc-arm.c:12548
+#: config/tc-arm.c:12675 config/tc-arm.c:12676
 msgid "use -mcpu=arm700i"
 msgstr "usar -mcpu=arm700i"
 
-#: config/tc-arm.c:12549 config/tc-arm.c:12550
+#: config/tc-arm.c:12677 config/tc-arm.c:12678
 msgid "use -mcpu=arm710"
 msgstr "usar -mcpu=arm710"
 
-#: config/tc-arm.c:12551 config/tc-arm.c:12552
+#: config/tc-arm.c:12679 config/tc-arm.c:12680
 msgid "use -mcpu=arm710c"
 msgstr "usar -mcpu=arm710c"
 
-#: config/tc-arm.c:12553 config/tc-arm.c:12554
+#: config/tc-arm.c:12681 config/tc-arm.c:12682
 msgid "use -mcpu=arm720"
 msgstr "usar -mcpu=arm720"
 
-#: config/tc-arm.c:12555 config/tc-arm.c:12556
+#: config/tc-arm.c:12683 config/tc-arm.c:12684
 msgid "use -mcpu=arm7d"
 msgstr "usar -mcpu=arm7d"
 
-#: config/tc-arm.c:12557 config/tc-arm.c:12558
+#: config/tc-arm.c:12685 config/tc-arm.c:12686
 msgid "use -mcpu=arm7di"
 msgstr "usar -mcpu=arm7di"
 
-#: config/tc-arm.c:12559 config/tc-arm.c:12560
+#: config/tc-arm.c:12687 config/tc-arm.c:12688
 msgid "use -mcpu=arm7m"
 msgstr "usar -mcpu=arm7m"
 
-#: config/tc-arm.c:12561 config/tc-arm.c:12562
+#: config/tc-arm.c:12689 config/tc-arm.c:12690
 msgid "use -mcpu=arm7dm"
 msgstr "usar -mcpu=arm7dm"
 
-#: config/tc-arm.c:12563 config/tc-arm.c:12564
+#: config/tc-arm.c:12691 config/tc-arm.c:12692
 msgid "use -mcpu=arm7dmi"
 msgstr "usar -mcpu=arm7dmi"
 
-#: config/tc-arm.c:12565 config/tc-arm.c:12566
+#: config/tc-arm.c:12693 config/tc-arm.c:12694
 msgid "use -mcpu=arm7100"
 msgstr "usar -mcpu=arm7100"
 
-#: config/tc-arm.c:12567 config/tc-arm.c:12568
+#: config/tc-arm.c:12695 config/tc-arm.c:12696
 msgid "use -mcpu=arm7500"
 msgstr "usar -mcpu=arm7500"
 
-#: config/tc-arm.c:12569 config/tc-arm.c:12570
+#: config/tc-arm.c:12697 config/tc-arm.c:12698
 msgid "use -mcpu=arm7500fe"
 msgstr "usar -mcpu=arm7500fe"
 
-#: config/tc-arm.c:12571 config/tc-arm.c:12572 config/tc-arm.c:12573
-#: config/tc-arm.c:12574
+#: config/tc-arm.c:12699 config/tc-arm.c:12700 config/tc-arm.c:12701
+#: config/tc-arm.c:12702
 msgid "use -mcpu=arm7tdmi"
 msgstr "usar -mcpu=arm7tdmi"
 
-#: config/tc-arm.c:12575 config/tc-arm.c:12576
+#: config/tc-arm.c:12703 config/tc-arm.c:12704
 msgid "use -mcpu=arm710t"
 msgstr "usar -mcpu=arm710t"
 
-#: config/tc-arm.c:12577 config/tc-arm.c:12578
+#: config/tc-arm.c:12705 config/tc-arm.c:12706
 msgid "use -mcpu=arm720t"
 msgstr "usar -mcpu=arm720t"
 
-#: config/tc-arm.c:12579 config/tc-arm.c:12580
+#: config/tc-arm.c:12707 config/tc-arm.c:12708
 msgid "use -mcpu=arm740t"
 msgstr "usar -mcpu=arm740t"
 
-#: config/tc-arm.c:12581 config/tc-arm.c:12582
+#: config/tc-arm.c:12709 config/tc-arm.c:12710
 msgid "use -mcpu=arm8"
 msgstr "usar -mcpu=arm8"
 
-#: config/tc-arm.c:12583 config/tc-arm.c:12584
+#: config/tc-arm.c:12711 config/tc-arm.c:12712
 msgid "use -mcpu=arm810"
 msgstr "usar -mcpu=arm810"
 
-#: config/tc-arm.c:12585 config/tc-arm.c:12586
+#: config/tc-arm.c:12713 config/tc-arm.c:12714
 msgid "use -mcpu=arm9"
 msgstr "usar -mcpu=arm9"
 
-#: config/tc-arm.c:12587 config/tc-arm.c:12588
+#: config/tc-arm.c:12715 config/tc-arm.c:12716
 msgid "use -mcpu=arm9tdmi"
 msgstr "usar -mcpu=arm9tdmi"
 
-#: config/tc-arm.c:12589 config/tc-arm.c:12590
+#: config/tc-arm.c:12717 config/tc-arm.c:12718
 msgid "use -mcpu=arm920"
 msgstr "usar -mcpu=arm920"
 
-#: config/tc-arm.c:12591 config/tc-arm.c:12592
+#: config/tc-arm.c:12719 config/tc-arm.c:12720
 msgid "use -mcpu=arm940"
 msgstr "usar -mcpu=arm940"
 
-#: config/tc-arm.c:12593
+#: config/tc-arm.c:12721
 msgid "use -mcpu=strongarm"
 msgstr "usar -mcpu=strongarm"
 
-#: config/tc-arm.c:12595
+#: config/tc-arm.c:12723
 msgid "use -mcpu=strongarm110"
 msgstr "usar -mcpu=strongarm110"
 
-#: config/tc-arm.c:12597
+#: config/tc-arm.c:12725
 msgid "use -mcpu=strongarm1100"
 msgstr "usar -mcpu=strongarm1100"
 
-#: config/tc-arm.c:12599
+#: config/tc-arm.c:12727
 msgid "use -mcpu=strongarm1110"
 msgstr "usar -mcpu=strongarm1110"
 
-#: config/tc-arm.c:12600
+#: config/tc-arm.c:12728
 msgid "use -mcpu=xscale"
 msgstr "usar -mcpu=xscale"
 
-#: config/tc-arm.c:12601
+#: config/tc-arm.c:12729
 msgid "use -mcpu=iwmmxt"
 msgstr "usar -mcpu=iwmmxt"
 
-#: config/tc-arm.c:12602
+#: config/tc-arm.c:12730
 msgid "use -mcpu=all"
 msgstr "usar -mcpu=all"
 
 #. Architecture variants -- don't add any more to this list either.
-#: config/tc-arm.c:12605 config/tc-arm.c:12606
+#: config/tc-arm.c:12733 config/tc-arm.c:12734
 msgid "use -march=armv2"
 msgstr "usar -march=armv2"
 
-#: config/tc-arm.c:12607 config/tc-arm.c:12608
+#: config/tc-arm.c:12735 config/tc-arm.c:12736
 msgid "use -march=armv2a"
 msgstr "usar -march=armv2a"
 
-#: config/tc-arm.c:12609 config/tc-arm.c:12610
+#: config/tc-arm.c:12737 config/tc-arm.c:12738
 msgid "use -march=armv3"
 msgstr "usar -march=armv3"
 
-#: config/tc-arm.c:12611 config/tc-arm.c:12612
+#: config/tc-arm.c:12739 config/tc-arm.c:12740
 msgid "use -march=armv3m"
 msgstr "usar -march=armv3m"
 
-#: config/tc-arm.c:12613 config/tc-arm.c:12614
+#: config/tc-arm.c:12741 config/tc-arm.c:12742
 msgid "use -march=armv4"
 msgstr "usar -march=armv4"
 
-#: config/tc-arm.c:12615 config/tc-arm.c:12616
+#: config/tc-arm.c:12743 config/tc-arm.c:12744
 msgid "use -march=armv4t"
 msgstr "usar -march=armv4t"
 
-#: config/tc-arm.c:12617 config/tc-arm.c:12618
+#: config/tc-arm.c:12745 config/tc-arm.c:12746
 msgid "use -march=armv5"
 msgstr "usar -march=armv5"
 
-#: config/tc-arm.c:12619 config/tc-arm.c:12620
+#: config/tc-arm.c:12747 config/tc-arm.c:12748
 msgid "use -march=armv5t"
 msgstr "usar -march=armv5t"
 
-#: config/tc-arm.c:12621 config/tc-arm.c:12622
+#: config/tc-arm.c:12749 config/tc-arm.c:12750
 msgid "use -march=armv5te"
 msgstr "usar -march=armv5te"
 
 #. Floating point variants -- don't add any more to this list either.
-#: config/tc-arm.c:12625
+#: config/tc-arm.c:12753
 msgid "use -mfpu=fpe"
 msgstr "usar -mfpu=fpe"
 
-#: config/tc-arm.c:12626
+#: config/tc-arm.c:12754
 msgid "use -mfpu=fpa10"
 msgstr "usar -mfpu=fpa10"
 
-#: config/tc-arm.c:12627
+#: config/tc-arm.c:12755
 msgid "use -mfpu=fpa11"
 msgstr "usar -mfpu=fpa11"
 
-#: config/tc-arm.c:12629
+#: config/tc-arm.c:12757
 msgid "use either -mfpu=softfpa or -mfpu=softvfp"
 msgstr "usar -mfpu=softfpa ó -mfpu=softvfp"
 
-#: config/tc-arm.c:12862
+#: config/tc-arm.c:12986
 msgid "invalid architectural extension"
 msgstr "extensión de arquitectura inválida"
 
-#: config/tc-arm.c:12876
+#: config/tc-arm.c:13000
 msgid "missing architectural extension"
 msgstr "falta la extensión de la arquitectura"
 
-#: config/tc-arm.c:12889
+#: config/tc-arm.c:13013
 #, c-format
 msgid "unknown architectural extnsion `%s'"
 msgstr "extensión de arquitectura `%s' desconocida"
 
-#: config/tc-arm.c:12913
+#: config/tc-arm.c:13037
 #, c-format
 msgid "missing cpu name `%s'"
 msgstr "falta el nombre de cpu `%s'"
 
-#: config/tc-arm.c:12929
+#: config/tc-arm.c:13062 config/tc-arm.c:13389
 #, c-format
 msgid "unknown cpu `%s'"
 msgstr "cpu `%s' desconocido"
 
-#: config/tc-arm.c:12947
+#: config/tc-arm.c:13080
 #, c-format
 msgid "missing architecture name `%s'"
 msgstr "falta el nombre de arquitectura `%s'"
 
-#: config/tc-arm.c:12964
+#: config/tc-arm.c:13097 config/tc-arm.c:13423
 #, c-format
 msgid "unknown architecture `%s'\n"
 msgstr "arquitectura `%s' desconocida\n"
 
-#: config/tc-arm.c:12980
+#: config/tc-arm.c:13113 config/tc-arm.c:13454
 #, c-format
 msgid "unknown floating point format `%s'\n"
 msgstr "formato de coma flotante `%s' desconocido\n"
 
-#: config/tc-arm.c:12996
+#: config/tc-arm.c:13129
 #, c-format
 msgid "unknown floating point abi `%s'\n"
 msgstr "abi de coma flotante `%s' desconocida\n"
 
-#: config/tc-arm.c:13012
+#: config/tc-arm.c:13145
 #, c-format
 msgid "unknown EABI `%s'\n"
 msgstr "EABI `%s' desconocida\n"
 
-#: config/tc-arm.c:13019
+#: config/tc-arm.c:13152
 msgid "<cpu name>\t  assemble for CPU <cpu name>"
 msgstr "<nombre cpu>\t  ensamblar para el CPU <nombre cpu>"
 
-#: config/tc-arm.c:13021
+#: config/tc-arm.c:13154
 msgid "<arch name>\t  assemble for architecture <arch name>"
 msgstr "<nombre arq>\t  ensamblar para la arquitectura <nombre arq>"
 
-#: config/tc-arm.c:13023
+#: config/tc-arm.c:13156
 msgid "<fpu name>\t  assemble for FPU architecture <fpu name>"
 msgstr "<nombre fpu>\t  ensamblar para la arquitectura de Unidad de Coma Flotante <nombre fpu>"
 
-#: config/tc-arm.c:13025
+#: config/tc-arm.c:13158
 msgid "<abi>\t  assemble for floating point ABI <abi>"
 msgstr "<abi>\t  ensamblar para la ABI de coma flotante <abi>"
 
-#: config/tc-arm.c:13028
+#: config/tc-arm.c:13161
 msgid "<ver>\t  assemble for eabi version <ver>"
 msgstr "<ver>\t  ensamblar para la eabi versión <ver>"
 
-#: config/tc-arm.c:13069 config/tc-arm.c:13091
+#: config/tc-arm.c:13202 config/tc-arm.c:13224
 #, c-format
 msgid "option `-%c%s' is deprecated: %s"
 msgstr "la opción `-%c%s' es obsoleta: %s"
 
-#: config/tc-arm.c:13112
+#: config/tc-arm.c:13245
 #, c-format
 msgid " ARM-specific assembler options:\n"
 msgstr "Opciones de ensamblador específicas de ARM:\n"
 
-#: config/tc-arm.c:13123
+#: config/tc-arm.c:13256
 #, c-format
 msgid "  -EB                     assemble code for a big-endian cpu\n"
 msgstr "  -EB                     ensambla código para un cpu big-endian\n"
 
-#: config/tc-arm.c:13128
+#: config/tc-arm.c:13261
 #, c-format
 msgid "  -EL                     assemble code for a little-endian cpu\n"
 msgstr "  -EL                     ensambla código para un cpu little-endian\n"
 
-#: config/tc-arm.c:13270
+#: config/tc-avr.c:209
 #, c-format
-msgid "%s: unexpected function type: %d"
-msgstr "%s: tipo de función inesperado: %d"
-
-#: config/tc-arm.c:13540
-msgid "expected 0 or 1"
-msgstr "se esperaba 0 ó 1"
-
-#: config/tc-arm.c:13545
-msgid "missing comma"
-msgstr "falta una coma"
-
-#: config/tc-arm.c:13838
-msgid "handerdata in cantunwind frame"
-msgstr "handerdata en un marco cantunwind"
-
-#: config/tc-arm.c:13855
-msgid "too many unwind opcodes for personality routine 0"
-msgstr "demasiados códigos de operación de desenredo para la rutina personality 0"
-
-#: config/tc-arm.c:13887
-msgid "too many unwind opcodes"
-msgstr "demasiados códigos de operación de desenredo"
-
-#: config/tc-arm.c:14017
-msgid "dupicate .handlerdata directive"
-msgstr "directiva .handlerdata duplicada"
-
-#: config/tc-arm.c:14071
-msgid "personality routine specified for cantunwind frame"
-msgstr "se especificó una rutina personality para el marco cantunwind"
-
-#: config/tc-arm.c:14085
-msgid "duplicate .personalityindex directive"
-msgstr "directiva .personalityindex duplicada"
-
-#: config/tc-arm.c:14094
-msgid "bad personality routine number"
-msgstr "número de rutina personality erróneo"
-
-#: config/tc-arm.c:14113
-msgid "duplicate .personality directive"
-msgstr "directiva .personality duplicada"
-
-#: config/tc-arm.c:14139 config/tc-arm.c:14261
-msgid "expected register list"
-msgstr "se esperaba una lista de registros"
-
-#: config/tc-arm.c:14217
-msgid "expected , <constant>"
-msgstr "se esperaba , <constante>"
-
-#: config/tc-arm.c:14322
-msgid "expected wr or wcgr"
-msgstr "se esperaba wr o wcgr"
-
-#: config/tc-arm.c:14343
-msgid "bad register range"
-msgstr "rango de registro erróneo"
-
-#: config/tc-arm.c:14358
-msgid "inconsistent register types"
-msgstr "tipos de registro inconsistentes"
-
-#. TODO: Maverick registers.
-#: config/tc-arm.c:14506
-msgid "unrecognised register"
-msgstr "registro no reconocido"
-
-#: config/tc-arm.c:14529
-#, c-format
-msgid "r%d not permitted in .unwind_movsp directive"
-msgstr "no se permite r%d en la directiva .unwind_movsp"
-
-#: config/tc-arm.c:14535
-msgid "unexpected .unwind_movsp directive"
-msgstr "directiva .unwind_movsp inesperada"
-
-#: config/tc-arm.c:14567
-msgid "expected #constant"
-msgstr "se esperaba #constant"
-
-#: config/tc-arm.c:14587
-msgid "stack increment must be multiple of 4"
-msgstr "el operando de pila debe ser un múltiplo de 4"
-
-#: config/tc-arm.c:14616
-msgid "expected <reg>, <reg>"
-msgstr "se esperaba <reg>, <reg>"
-
-#: config/tc-arm.c:14634
-msgid "register must be either sp or set by a previousunwind_movsp directive"
-msgstr "el registro debe ser sp o establecido por una directiva previousunwind_movsp"
-
-#: config/tc-arm.c:14671
-msgid "expected <offset>, <opcode>"
-msgstr "se esperaba <desplazamiento>, <códigoop>"
-
-#: config/tc-arm.c:14683
-msgid "unwind opcode too long"
-msgstr "código de operación de desenredo demasiado largo"
-
-#: config/tc-arm.c:14688
-msgid "invalid unwind opcode"
-msgstr "código de operación de desenredo inválido"
-
-#: config/tc-arm.c:14783
-msgid "alignments greater than 32 bytes not supported in .text sections."
-msgstr "las alineaciones más grandes que 32 bytes no tienen soporte en la sección text."
-
-#: config/tc-arm.h:84
-msgid "arm convert_frag\n"
-msgstr "convert_frag de arm\n"
-
-#: config/tc-avr.c:215
-#, c-format
 msgid "Known MCU names:"
 msgstr "Nombres MCU conocidos:"
 
-#: config/tc-avr.c:284
+#: config/tc-avr.c:275
 #, c-format
 msgid ""
 "AVR options:\n"
@@ -2938,7 +2722,7 @@
 "                   avr5 - ATmega161, ATmega163, ATmega32, AT94K\n"
 "                   o el nombre inmediato del microcontrolador.\n"
 
-#: config/tc-avr.c:294
+#: config/tc-avr.c:285
 #, c-format
 msgid ""
 "  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU\n"
@@ -2954,413 +2738,442 @@
 "  -mno-wrap        rechaza las instrucciones rjmp/rcall con envoltura de 8K\n"
 "                   (por defecto para avr3, avr5)\n"
 
-#: config/tc-avr.c:342 config/tc-msp430.c:697
+#: config/tc-avr.c:329 config/tc-msp430.c:749
 #, c-format
 msgid "unknown MCU: %s\n"
 msgstr "MCU desconocido: %s\n"
 
-#: config/tc-avr.c:351
+#: config/tc-avr.c:338
 #, c-format
 msgid "redefinition of mcu type `%s' to `%s'"
 msgstr "redefinición del tipo de mcu `%s' a `%s'"
 
-#: config/tc-avr.c:402 config/tc-crx.c:490 config/tc-d10v.c:319
-#: config/tc-d30v.c:366 config/tc-mips.c:10029 config/tc-mmix.c:2297
-#: config/tc-mn10200.c:361 config/tc-msp430.c:805 config/tc-pj.c:373
-#: config/tc-ppc.c:5192 config/tc-sh.c:2972 config/tc-v850.c:1242
+#: config/tc-avr.c:385 config/tc-crx.c:491 config/tc-d10v.c:278
+#: config/tc-d30v.c:312 config/tc-mips.c:10241 config/tc-mmix.c:2264
+#: config/tc-mn10200.c:342 config/tc-msp430.c:873 config/tc-pj.c:342
+#: config/tc-ppc.c:5211 config/tc-sh.c:2986 config/tc-v850.c:1199
 msgid "bad call to md_atof"
 msgstr "llamada errónea a md_atof"
 
-#: config/tc-avr.c:465
+#: config/tc-avr.c:447
 msgid "constant value required"
 msgstr "se requiere un valor constante"
 
-#: config/tc-avr.c:468
+#: config/tc-avr.c:450
 #, c-format
 msgid "number must be less than %d"
 msgstr "el número debe ser menor que %d"
 
-#: config/tc-avr.c:520
-msgid "`,' required"
-msgstr "se requiere `,'"
-
-#: config/tc-avr.c:539
-msgid "undefined combination of operands"
-msgstr "combinación indefinida de operandos"
-
-#: config/tc-avr.c:549
-msgid "skipping two-word instruction"
-msgstr "instrucción que salta dos palabras"
-
-#: config/tc-avr.c:582 config/tc-avr.c:1274
+#: config/tc-avr.c:476 config/tc-avr.c:583
 #, c-format
 msgid "constant out of 8-bit range: %d"
 msgstr "constante fuera del rango de 8-bit: %d"
 
-#: config/tc-avr.c:636
+#: config/tc-avr.c:488 config/tc-d10v.c:498 config/tc-d30v.c:490
+#: config/tc-h8300.c:451 config/tc-mcore.c:665 config/tc-mmix.c:489
+#: config/tc-mn10200.c:1078 config/tc-mn10300.c:1820 config/tc-msp430.c:457
+#: config/tc-or32.c:306 config/tc-ppc.c:2382 config/tc-s390.c:1220
+#: config/tc-sh64.c:2213 config/tc-sh.c:1272 config/tc-v850.c:1952
+#: config/tc-z8k.c:328
+msgid "missing operand"
+msgstr "operando faltante"
+
+#: config/tc-avr.c:536 read.c:3345
+msgid "illegal expression"
+msgstr "expresión ilegal"
+
+#: config/tc-avr.c:562 config/tc-avr.c:1282
+msgid "`)' required"
+msgstr "se requiere `)'"
+
+#: config/tc-avr.c:638
 msgid "register r16-r23 required"
 msgstr "se requiere los registros r16-r23"
 
-#: config/tc-avr.c:642
+#: config/tc-avr.c:644
 msgid "register number above 15 required"
 msgstr "se requiere un número de registro superior a 15"
 
-#: config/tc-avr.c:648
+#: config/tc-avr.c:650
 msgid "even register number required"
 msgstr "se requieren números de registro par"
 
-#: config/tc-avr.c:654
+#: config/tc-avr.c:656
 msgid "register r24, r26, r28 or r30 required"
 msgstr "se requieren los registros r24, r26, r28 o r30"
 
-#: config/tc-avr.c:660
+#: config/tc-avr.c:662
 msgid "register name or number from 0 to 31 required"
 msgstr "se requiere un nombre de registro o un número del 0 al 31"
 
-#: config/tc-avr.c:678
+#: config/tc-avr.c:680
 msgid "pointer register (X, Y or Z) required"
 msgstr "se requiere un registro puntero (X, Y o Z)"
 
-#: config/tc-avr.c:685
+#: config/tc-avr.c:687
 msgid "cannot both predecrement and postincrement"
 msgstr "no se puede predecrementar y postincrementar"
 
-#: config/tc-avr.c:693
+#: config/tc-avr.c:695
 msgid "addressing mode not supported"
 msgstr "el modo de direccionamiento no tiene soporte"
 
-#: config/tc-avr.c:699
+#: config/tc-avr.c:701
 msgid "can't predecrement"
 msgstr "no se puede predecrementar"
 
-#: config/tc-avr.c:702
+#: config/tc-avr.c:704
 msgid "pointer register Z required"
 msgstr "se requiere el registro puntero Z"
 
-#: config/tc-avr.c:720
+#: config/tc-avr.c:722
 msgid "pointer register (Y or Z) required"
 msgstr "se requiere un registro puntero (Y o Z)"
 
-#: config/tc-avr.c:824
+#: config/tc-avr.c:826
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "restricción `%c' desconocida"
 
-#: config/tc-avr.c:918 config/tc-avr.c:934 config/tc-avr.c:1056
-#: config/tc-msp430.c:1899 config/tc-msp430.c:1917
+#: config/tc-avr.c:878
+msgid "`,' required"
+msgstr "se requiere `,'"
+
+#: config/tc-avr.c:896
+msgid "undefined combination of operands"
+msgstr "combinación indefinida de operandos"
+
+#: config/tc-avr.c:905
+msgid "skipping two-word instruction"
+msgstr "instrucción que salta dos palabras"
+
+#: config/tc-avr.c:997 config/tc-avr.c:1013 config/tc-avr.c:1135
+#: config/tc-msp430.c:2012 config/tc-msp430.c:2030
 #, c-format
 msgid "odd address operand: %ld"
 msgstr "operando de direccón impar: %ld"
 
-#: config/tc-avr.c:926 config/tc-avr.c:945 config/tc-avr.c:967
-#: config/tc-avr.c:974 config/tc-avr.c:981 config/tc-d10v.c:586
-#: config/tc-d30v.c:656 config/tc-msp430.c:1907 config/tc-msp430.c:1922
-#: config/tc-msp430.c:1932
+#: config/tc-avr.c:1005 config/tc-avr.c:1024 config/tc-avr.c:1046
+#: config/tc-avr.c:1053 config/tc-avr.c:1060 config/tc-d10v.c:538
+#: config/tc-d30v.c:589 config/tc-msp430.c:2020 config/tc-msp430.c:2035
+#: config/tc-msp430.c:2045
 #, c-format
 msgid "operand out of range: %ld"
 msgstr "operando fuera de rango: %ld"
 
-#: config/tc-avr.c:1065 config/tc-d10v.c:1791 config/tc-d30v.c:1958
-#: config/tc-msp430.c:1950
+#: config/tc-avr.c:1144 config/tc-d10v.c:1622 config/tc-d30v.c:2060
+#: config/tc-msp430.c:2063
 #, c-format
 msgid "line %d: unknown relocation type: 0x%x"
 msgstr "línea %d: tipo de reubicación desconocido: 0x%x"
 
-#: config/tc-avr.c:1079
+#: config/tc-avr.c:1158
 msgid "only constant expression allowed"
 msgstr "sólo se permite una expresión constante"
 
-#: config/tc-avr.c:1115 config/tc-d10v.c:1657 config/tc-d30v.c:1791
-#: config/tc-mn10200.c:1262 config/tc-mn10300.c:2308 config/tc-msp430.c:1986
-#: config/tc-or32.c:1587 config/tc-ppc.c:6013 config/tc-v850.c:2274
+#. xgettext:c-format.
+#: config/tc-avr.c:1192 config/tc-bfin.c:689 config/tc-d10v.c:1494
+#: config/tc-d30v.c:1804 config/tc-mn10200.c:814 config/tc-mn10300.c:2308
+#: config/tc-msp430.c:2098 config/tc-or32.c:1019 config/tc-ppc.c:6064
+#: config/tc-v850.c:2190
 #, c-format
 msgid "reloc %d not supported by object file format"
 msgstr "la reubicación %d no tiene soporte por el formato del fichero objeto"
 
-#: config/tc-avr.c:1139 config/tc-d10v.c:1248 config/tc-d10v.c:1262
-#: config/tc-h8300.c:1887 config/tc-h8500.c:1106 config/tc-mcore.c:939
-#: config/tc-msp430.c:1769 config/tc-pj.c:282 config/tc-sh.c:2425
-#: config/tc-z8k.c:1200
+#: config/tc-avr.c:1215 config/tc-d10v.c:1782 config/tc-d10v.c:1796
+#: config/tc-h8300.c:1868 config/tc-mcore.c:884 config/tc-msp430.c:1862
+#: config/tc-pj.c:254 config/tc-sh.c:2457 config/tc-z8k.c:1194
 msgid "can't find opcode "
 msgstr "no se puede encontrar el código de operación "
 
-#: config/tc-avr.c:1156
+#: config/tc-avr.c:1232
 #, c-format
 msgid "illegal opcode %s for mcu %s"
 msgstr "código de operación %s ilegal para el mcu %s"
 
-#: config/tc-avr.c:1164
+#: config/tc-avr.c:1241
 msgid "garbage at end of line"
 msgstr "basura al final de la línea"
 
-#: config/tc-avr.c:1228 read.c:3203
-msgid "illegal expression"
-msgstr "expresión ilegal"
-
-#: config/tc-avr.c:1254 config/tc-avr.c:1318
-msgid "`)' required"
-msgstr "se requiere `)'"
-
-#: config/tc-avr.c:1346 config/tc-avr.c:1353
+#: config/tc-avr.c:1309 config/tc-avr.c:1316
 #, c-format
 msgid "illegal %srelocation size: %d"
 msgstr "%s ilegal tamaño de reubicación: %d"
 
-#: config/tc-cris.c:540 config/tc-m68hc11.c:2794
+#: config/tc-bfin.c:263
 #, c-format
+msgid " BFIN specific command line options:\n"
+msgstr " Opciones de línea de comando específicas de BFIN:\n"
+
+#: config/tc-bfin.c:646 config/tc-fr30.c:358 config/tc-frv.c:1600
+#: config/tc-i960.c:1756 config/tc-ip2k.c:371 config/tc-m32c.c:912
+#: config/tc-m32r.c:2143 config/tc-openrisc.c:376 config/tc-xstormy16.c:631
+msgid "Bad call to md_atof()"
+msgstr "Llamada errónea a md_atof()"
+
+#: config/tc-cris.c:532 config/tc-m68hc11.c:2794
+#, c-format
 msgid "internal inconsistency problem in %s: fr_symbol %lx"
 msgstr "problema de inconsistencia interna en %s: fr_symbol %lx"
 
-#: config/tc-cris.c:544 config/tc-m68hc11.c:2798 config/tc-msp430.c:2177
+#: config/tc-cris.c:536 config/tc-m68hc11.c:2798 config/tc-msp430.c:2289
 #, c-format
 msgid "internal inconsistency problem in %s: resolved symbol"
 msgstr "problema de inconsistencia interna en %s: símbolo resuelto"
 
-#: config/tc-cris.c:554 config/tc-m68hc11.c:2804
+#: config/tc-cris.c:546 config/tc-m68hc11.c:2804
 #, c-format
 msgid "internal inconsistency problem in %s: fr_subtype %d"
 msgstr "problema de inconsistencia interna en %s: fr_subtype %d"
 
-#: config/tc-cris.c:885
+#: config/tc-cris.c:872
 msgid "Relaxation to long branches for .arch common_v10_v32 not implemented"
 msgstr "La relajación a grandes ramificaciones para .arch common_v10_v32 no está implementada"
 
-#: config/tc-cris.c:915
+#: config/tc-cris.c:902
 msgid "Complicated LAPC target operand is not a multiple of two.  Use LAPC.D"
 msgstr "El operando de objetivo complicado LAPC no es un múltiplo de dos.  Use LAPC.D"
 
-#: config/tc-cris.c:920
+#: config/tc-cris.c:907
 #, c-format
 msgid "Internal error found in md_convert_frag: offset %ld.  Please report this."
 msgstr "Se encontró un error interno en md_convert_frag: desplazamiento %ld.  Por favor repórtelo."
 
-#: config/tc-cris.c:945
+#: config/tc-cris.c:932
 #, c-format
 msgid "internal inconsistency in %s: bdapq no symbol"
 msgstr "inconsistencia interna en %s: bdapq no es un símbolo"
 
-#: config/tc-cris.c:958
+#: config/tc-cris.c:945
 #, c-format
 msgid "internal inconsistency in %s: bdap.w with no symbol"
 msgstr "inconsistencia interna en %s: bdap.w sin algún símbolo"
 
-#: config/tc-cris.c:982
+#: config/tc-cris.c:969
 msgid "section alignment must be >= 4 bytes to check MULS/MULU safeness"
 msgstr "la alineación de la sección debe ser >= 4 bytes para revisar la seguridad de MULS/MULU"
 
-#: config/tc-cris.c:991
+#: config/tc-cris.c:978
 msgid "dangerous MULS/MULU location; give it higher alignment"
 msgstr "ubicación de MULS/MULU peligrosa; déles una alineación superior"
 
-#: config/tc-cris.c:1103
+#: config/tc-cris.c:1083
 msgid "Out-of-range .word offset handling is not implemented for .arch common_v10_v32"
 msgstr "El manejo del desplazamiento .word fuera de rango no está implementado para .arch common_v10_v32"
 
-#: config/tc-cris.c:1168 config/tc-crx.c:581 config/tc-crx.c:608
-#: config/tc-crx.c:626
+#: config/tc-cris.c:1148 config/tc-crx.c:582 config/tc-crx.c:609
+#: config/tc-crx.c:627
 msgid "Virtual memory exhausted"
 msgstr "Memoria agotada"
 
-#: config/tc-cris.c:1201 config/tc-crx.c:591
+#: config/tc-cris.c:1182 config/tc-crx.c:592
 #, c-format
 msgid "Can't hash `%s': %s\n"
 msgstr "No se puede dispersar `%s': %s\n"
 
-#: config/tc-cris.c:1202 config/tc-crx.c:592
+#: config/tc-cris.c:1183 config/tc-crx.c:593
 msgid "(unknown reason)"
 msgstr "(razón desconocida)"
 
-#: config/tc-cris.c:1206
+#: config/tc-cris.c:1187
 #, c-format
 msgid "Buggy opcode: `%s' \"%s\"\n"
 msgstr "Código de operación defectuoso: `%s' \"%s\"\n"
 
-#: config/tc-cris.c:1621
+#: config/tc-cris.c:1493 config/tc-cris.c:1501 config/tc-crx.c:2029
+#: config/tc-dlx.c:685 config/tc-hppa.c:1625 config/tc-i860.c:492
+#: config/tc-i860.c:509 config/tc-i860.c:989 config/tc-sparc.c:1417
+#: config/tc-sparc.c:1425
 #, c-format
+msgid "Unknown opcode: `%s'"
+msgstr "Código de operación desconocido: `%s'"
+
+#: config/tc-cris.c:1599
+#, c-format
 msgid "Immediate value not in 5 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 5 bit sin signo: %ld"
 
-#: config/tc-cris.c:1637
+#: config/tc-cris.c:1615
 #, c-format
 msgid "Immediate value not in 4 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 4 bit sin signo: %ld"
 
-#: config/tc-cris.c:1689
+#: config/tc-cris.c:1667
 #, c-format
 msgid "Immediate value not in 6 bit range: %ld"
 msgstr "El valor inmediato no está en el rango de 6 bit: %ld"
 
-#: config/tc-cris.c:1704
+#: config/tc-cris.c:1682
 #, c-format
 msgid "Immediate value not in 6 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 6 bit sin signo: %ld"
 
 #. Others have a generic warning.
-#: config/tc-cris.c:1812
+#: config/tc-cris.c:1790
 #, c-format
 msgid "Unimplemented register `%s' specified"
 msgstr "Se especificó el registro sin implementar `%s'"
 
 #. We've come to the end of instructions with this
 #. opcode, so it must be an error.
-#: config/tc-cris.c:2055
+#: config/tc-cris.c:2033
 msgid "Illegal operands"
 msgstr "Operandos ilegales"
 
-#: config/tc-cris.c:2096 config/tc-cris.c:2136
+#: config/tc-cris.c:2074 config/tc-cris.c:2114
 #, c-format
 msgid "Immediate value not in 8 bit range: %ld"
 msgstr "El valor inmediato no está en el rango de 8 bit: %ld"
 
-#: config/tc-cris.c:2106 config/tc-cris.c:2157
+#: config/tc-cris.c:2084 config/tc-cris.c:2135
 #, c-format
 msgid "Immediate value not in 16 bit range: %ld"
 msgstr "El valor inmediato no está en el rango de 16 bit: %ld"
 
-#: config/tc-cris.c:2141
+#: config/tc-cris.c:2119
 #, c-format
 msgid "Immediate value not in 8 bit signed range: %ld"
 msgstr "El valor inmediato no está en el rango de 8 bit con signo: %ld"
 
-#: config/tc-cris.c:2146
+#: config/tc-cris.c:2124
 #, c-format
 msgid "Immediate value not in 8 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 8 bit sin signo: %ld"
 
-#: config/tc-cris.c:2162
+#: config/tc-cris.c:2140
 #, c-format
 msgid "Immediate value not in 16 bit signed range: %ld"
 msgstr "El valor inmediato no está en el rango de 16 bit con signo: %ld"
 
-#: config/tc-cris.c:2167
+#: config/tc-cris.c:2145
 #, c-format
 msgid "Immediate value not in 16 bit unsigned range: %ld"
 msgstr "El valor inmediato no está en el rango de 16 bit sin signo: %ld"
 
-#: config/tc-cris.c:2189
+#: config/tc-cris.c:2167
 msgid "PIC relocation size does not match operand size"
 msgstr "el tamaño de la reubicación PIC no coincide con el tamaño del operando"
 
-#: config/tc-cris.c:3355
+#: config/tc-cris.c:3304
 msgid "Calling gen_cond_branch_32 for .arch common_v10_v32\n"
 msgstr "Se llama a gen_cond_branch_32 para .arch common_v10_v32\n"
 
-#: config/tc-cris.c:3359
+#: config/tc-cris.c:3308
 msgid "32-bit conditional branch generated"
 msgstr "se generó una ramificación condicional de 32-bit"
 
-#: config/tc-cris.c:3418
+#: config/tc-cris.c:3367
 msgid "Complex expression not supported"
 msgstr "Las expresiones complejas no tienen soporte"
 
 #. FIXME:  Is this function mentioned in the internals.texi manual?  If
 #. not, add it.
-#: config/tc-cris.c:3546
+#: config/tc-cris.c:3490
 msgid "Bad call to md_atof () - floating point formats are not supported"
 msgstr "Llamada errónea a md_atof () - no tienen soporte los formatos de coma flotante"
 
-#: config/tc-cris.c:3592
+#: config/tc-cris.c:3531
 msgid "PC-relative relocation must be trivially resolved"
 msgstr "La reubicación relativa al PC debe ser resuelta trivialmente"
 
-#: config/tc-cris.c:3645
+#: config/tc-cris.c:3584
 #, c-format
 msgid "Value not in 16 bit range: %ld"
 msgstr "El valor no está en el rango de 16 bit: %ld"
 
-#: config/tc-cris.c:3656
+#: config/tc-cris.c:3595
 #, c-format
 msgid "Value not in 16 bit signed range: %ld"
 msgstr "El valor no está en el rango de 16 bit con signo: %ld"
 
-#: config/tc-cris.c:3667
+#: config/tc-cris.c:3606
 #, c-format
 msgid "Value not in 8 bit range: %ld"
 msgstr "El valor no está en el rango de 8 bit: %ld"
 
-#: config/tc-cris.c:3675
+#: config/tc-cris.c:3614
 #, c-format
 msgid "Value not in 8 bit signed range: %ld"
 msgstr "El valor no está en el rango de 8 bit con signo: %ld"
 
-#: config/tc-cris.c:3686
+#: config/tc-cris.c:3625
 #, c-format
 msgid "Value not in 4 bit unsigned range: %ld"
 msgstr "El valor no está en el rango de 4 bit sin signo: %ld"
 
-#: config/tc-cris.c:3694
+#: config/tc-cris.c:3633
 #, c-format
 msgid "Value not in 5 bit unsigned range: %ld"
 msgstr "El valor no está en el rango de 5 bit sin signo: %ld"
 
-#: config/tc-cris.c:3702
+#: config/tc-cris.c:3641
 #, c-format
 msgid "Value not in 6 bit range: %ld"
 msgstr "El valor no está en el rango de 6 bit: %ld"
 
-#: config/tc-cris.c:3710
+#: config/tc-cris.c:3649
 #, c-format
 msgid "Value not in 6 bit unsigned range: %ld"
 msgstr "El valor no está en el rango de 6 bit sin signo: %ld"
 
-#: config/tc-cris.c:3758
+#: config/tc-cris.c:3695
 #, c-format
 msgid "Please use --help to see usage and options for this assembler.\n"
 msgstr "Por favor utilice --help para ver el modo de empleo y opciones para este ensamblador.\n"
 
-#: config/tc-cris.c:3770
+#: config/tc-cris.c:3707
 msgid "--no-underscore is invalid with a.out format"
 msgstr "--no-underscore es inválido con el formato a.out"
 
-#: config/tc-cris.c:3790
+#: config/tc-cris.c:3727
 #, c-format
 msgid "invalid <arch> in --march=<arch>: %s"
 msgstr "arquitectura <arq> en --march=<arq> inválida: %s"
 
-#: config/tc-cris.c:3888
+#: config/tc-cris.c:3821
 msgid "Semantics error.  This type of operand can not be relocated, it must be an assembly-time constant"
 msgstr "Error de semántica. Este tipo de operando no se puede reubicar, debe ser una constante en el momento de ensamblado"
 
-#: config/tc-cris.c:3937
+#: config/tc-cris.c:3870
 #, c-format
 msgid "Cannot generate relocation type for symbol %s, code %s"
 msgstr "No se puede generar el tipo de reubicación para el símbolo %s, código %s"
 
 #. The messages are formatted to line up with the generic options.
-#: config/tc-cris.c:3951
+#: config/tc-cris.c:3883
 #, c-format
 msgid "CRIS-specific options:\n"
 msgstr "Opciones específicas de CRIS:\n"
 
-#: config/tc-cris.c:3953
+#: config/tc-cris.c:3885
 msgid "  -h, -H                  Don't execute, print this help text.  Deprecated.\n"
 msgstr "  -h, -H                  No ejecutar, muestra este texto de ayuda.  Deprecado.\n"
 
-#: config/tc-cris.c:3955
+#: config/tc-cris.c:3887
 msgid "  -N                      Warn when branches are expanded to jumps.\n"
 msgstr "  -N                      Avisar cuando las ramificaciones se expanden a saltos.\n"
 
-#: config/tc-cris.c:3957
+#: config/tc-cris.c:3889
 msgid "  --underscore            User symbols are normally prepended with underscore.\n"
 msgstr "  --underscore            Los símbolos de usuario generalmente se preceden con subrayado.\n"
 
-#: config/tc-cris.c:3959
+#: config/tc-cris.c:3891
 msgid "                          Registers will not need any prefix.\n"
 msgstr "                          Los registros no necesitarán ningún prefijo.\n"
 
-#: config/tc-cris.c:3961
+#: config/tc-cris.c:3893
 msgid "  --no-underscore         User symbols do not have any prefix.\n"
 msgstr "  --no-underscore         Los símbolos de usuario no tienen ningún prefijo.\n"
 
-#: config/tc-cris.c:3963
+#: config/tc-cris.c:3895
 msgid "                          Registers will require a `$'-prefix.\n"
 msgstr "                          Los registros requerirán un prefijo `$'.\n"
 
-#: config/tc-cris.c:3965
+#: config/tc-cris.c:3897
 msgid "  --pic\t\t\tEnable generation of position-independent code.\n"
 msgstr "  --pic\t\t\tActiva la generación de código independiente de posición.\n"
 
-#: config/tc-cris.c:3967
+#: config/tc-cris.c:3899
 msgid ""
 "  --march=<arch>\t\tGenerate code for <arch>.  Valid choices for <arch>\n"
 "\t\t\t\tare v0_v10, v10, v32 and common_v10_v32.\n"
@@ -3368,227 +3181,227 @@
 "  --march=<arq>\t\tGenera código para <arq>.  Las opciones válidas para <arq>\n"
 "\t\t\t\tson v0_v10, v10, v32 y common_v10_v32.\n"
 
-#: config/tc-cris.c:3991
+#: config/tc-cris.c:3920
 msgid "Invalid relocation"
 msgstr "Reubicación inválida"
 
-#: config/tc-cris.c:4029
+#: config/tc-cris.c:3957
 msgid "Invalid pc-relative relocation"
 msgstr "Reubicación relativa a pc inválida"
 
-#: config/tc-cris.c:4078
+#: config/tc-cris.c:4002
 #, c-format
 msgid "Adjusted signed .word (%ld) overflows: `switch'-statement too large."
 msgstr "El .word (%ld) con signo ajustado se desborda: la sentencia `switch' es demasiado grande."
 
-#: config/tc-cris.c:4105
+#: config/tc-cris.c:4032
 #, c-format
 msgid ".syntax %s requires command-line option `--underscore'"
 msgstr ".syntax %s requiere de la opción de línea de comandos `--underscore'"
 
-#: config/tc-cris.c:4114
+#: config/tc-cris.c:4041
 #, c-format
 msgid ".syntax %s requires command-line option `--no-underscore'"
 msgstr ".syntax %s requiere de la opción de línea de comandos `--no-underscore'"
 
-#: config/tc-cris.c:4152
+#: config/tc-cris.c:4078
 msgid "Unknown .syntax operand"
 msgstr "Operando .syntax inválido"
 
-#: config/tc-cris.c:4163
+#: config/tc-cris.c:4088
 msgid "Pseudodirective .file is only valid when generating ELF"
 msgstr "La pseudodirectiva .file es válida solamente cuando se genera ELF"
 
-#: config/tc-cris.c:4176
+#: config/tc-cris.c:4100
 msgid "Pseudodirective .loc is only valid when generating ELF"
 msgstr "La pseudodirectiva .loc es válida solamente cuando se genera ELF"
 
-#: config/tc-cris.c:4322
+#: config/tc-cris.c:4243
 msgid "unknown operand to .arch"
 msgstr "operando desconocido para .arch"
 
-#: config/tc-cris.c:4331
+#: config/tc-cris.c:4252
 msgid ".arch <arch> requires a matching --march=... option"
 msgstr ".arch <arq> requiere una opción --march=... coincidente"
 
-#: config/tc-crx.c:343 config/tc-mn10200.c:1249 write.c:2649
+#: config/tc-crx.c:344 config/tc-mn10200.c:801 write.c:2209
 #, c-format
 msgid "can't resolve `%s' {%s section} - `%s' {%s section}"
 msgstr "no se puede resolver `%s' {sección %s} - `%s' {sección %s}"
 
-#: config/tc-crx.c:359
+#: config/tc-crx.c:360
 #, c-format
 msgid "internal error: reloc %d (`%s') not supported by object file format"
 msgstr "error interno: la reubicación %d (`%s') no tiene soporte por el formato del fichero objeto"
 
-#: config/tc-crx.c:618 config/tc-crx.c:636 config/tc-i386.c:938
-#: config/tc-i386.c:961 config/tc-m68k.c:4193
+#: config/tc-crx.c:619 config/tc-crx.c:637 config/tc-i386.c:953
+#: config/tc-i386.c:976 config/tc-m68k.c:4149
 #, c-format
 msgid "Internal Error:  Can't hash %s: %s"
 msgstr "Error Interno:  No se puede dispersar %s: %s"
 
 #. Missing or bad expr becomes absolute 0.
-#: config/tc-crx.c:664 config/tc-i386.c:4111
+#: config/tc-crx.c:665 config/tc-i386.c:4259
 #, c-format
 msgid "missing or invalid displacement expression `%s' taken as 0"
 msgstr "la expresión de desubicación faltante o inválida `%s' se toma como 0"
 
-#: config/tc-crx.c:802 config/tc-crx.c:822 config/tc-crx.c:837
+#: config/tc-crx.c:803 config/tc-crx.c:823 config/tc-crx.c:838
 #, c-format
 msgid "Illegal register `%s' in Instruction `%s'"
 msgstr "Registro `%s' ilegal en la Instruction `%s'"
 
-#: config/tc-crx.c:865
+#: config/tc-crx.c:866
 #, c-format
 msgid "Illegal Scale - `%d'"
 msgstr "Scale ilegal - `%d'"
 
-#: config/tc-crx.c:981
+#: config/tc-crx.c:982
 #, c-format
 msgid "Illegal operands (whitespace): `%s'"
 msgstr "Operandos ilegales (espacios en blanco): `%s'"
 
-#: config/tc-crx.c:993 config/tc-crx.c:1000 config/tc-crx.c:1017
-#: config/tc-crx.c:1803
+#: config/tc-crx.c:994 config/tc-crx.c:1001 config/tc-crx.c:1018
+#: config/tc-crx.c:1804
 #, c-format
 msgid "Missing matching brackets : `%s'"
 msgstr "Faltan las llaves coincidentes : `%s'"
 
-#: config/tc-crx.c:1043
+#: config/tc-crx.c:1044
 #, c-format
 msgid "Unknown exception: `%s'"
 msgstr "Excepción desconocida: `%s'"
 
-#: config/tc-crx.c:1139
+#: config/tc-crx.c:1140
 #, c-format
 msgid "Illegal `cinv' parameter: `%c'"
 msgstr "Parámetro `cinv' ilegal: `%c'"
 
-#: config/tc-crx.c:1172
+#: config/tc-crx.c:1173
 #, c-format
 msgid "Unknown register: `%d'"
-msgstr "Registro desconicido: `%d'"
+msgstr "Registro desconocido: `%d'"
 
 #. Issue a error message when register is illegal.
-#: config/tc-crx.c:1180
+#: config/tc-crx.c:1181
 #, c-format
 msgid "Illegal register (`%s') in Instruction: `%s'"
 msgstr "Registro ilegal (`%s') en Instruction: `%s'"
 
-#: config/tc-crx.c:1309
+#: config/tc-crx.c:1310
 #, c-format
 msgid "Illegal Co-processor register in Instruction `%s' "
 msgstr "Registro de co-procesador ilegal en Instruction `%s'"
 
-#: config/tc-crx.c:1316
+#: config/tc-crx.c:1317
 #, c-format
 msgid "Illegal Co-processor special register in Instruction `%s' "
 msgstr "Registro especial de co-procesador ilegal en Instruction `%s'"
 
-#: config/tc-crx.c:1615
+#: config/tc-crx.c:1616
 msgid "Incorrect number of operands"
 msgstr "Número incorrecto de operandos"
 
-#: config/tc-crx.c:1617
+#: config/tc-crx.c:1618
 #, c-format
 msgid "Illegal type of operand (arg %d)"
 msgstr "Tipo de operando ilegal (arg %d)"
 
-#: config/tc-crx.c:1623
+#: config/tc-crx.c:1624
 #, c-format
 msgid "Operand out of range (arg %d)"
 msgstr "Operando fuera de rango (arg %d)"
 
-#: config/tc-crx.c:1626
+#: config/tc-crx.c:1627
 #, c-format
 msgid "Operand has odd displacement (arg %d)"
 msgstr "El operando tiene un desplazamiento impar (arg %d)"
 
-#: config/tc-crx.c:1629
+#: config/tc-crx.c:1630
 #, c-format
 msgid "Invalid DISPU4 operand value (arg %d)"
 msgstr "Valor de operando DISPU4 inválido (arg %d)"
 
-#: config/tc-crx.c:1632
+#: config/tc-crx.c:1633
 #, c-format
 msgid "Invalid CST4 operand value (arg %d)"
 msgstr "Valor de operando CST4 inválido (arg %d)"
 
-#: config/tc-crx.c:1635
+#: config/tc-crx.c:1636
 #, c-format
 msgid "Operand value is not within upper 64 KB (arg %d)"
 msgstr "El valor del operando no está en los 64 KB superiores (arg %d)"
 
-#: config/tc-crx.c:1639 config/tc-crx.c:1670
+#: config/tc-crx.c:1640 config/tc-crx.c:1671
 #, c-format
 msgid "Illegal operand (arg %d)"
 msgstr "Operando ilegal (arg %d)"
 
-#: config/tc-crx.c:1701 config/tc-crx.c:1718
+#: config/tc-crx.c:1702 config/tc-crx.c:1719
 #, c-format
 msgid "Same src/dest register is used (`r%d'), result is undefined"
 msgstr "Se usa el mismo registro fuente/destino (`r%d'), el resultado es indefinido"
 
-#: config/tc-crx.c:1710
+#: config/tc-crx.c:1711
 #, c-format
 msgid "`%s' has undefined result"
 msgstr "`%s' tiene un resultado indefinido"
 
-#: config/tc-crx.c:1772
+#: config/tc-crx.c:1773
 msgid "Invalid Register in Register List"
 msgstr "Registro inválido en la Lista de Registros"
 
-#: config/tc-crx.c:1826
+#: config/tc-crx.c:1827
 #, c-format
 msgid "Illegal register `%s' in cop-register list"
 msgstr "Registro ilegal `%s' en la lista de registros de coprocesador"
 
-#: config/tc-crx.c:1834
+#: config/tc-crx.c:1835
 #, c-format
 msgid "Illegal register `%s' in cop-special-register list"
 msgstr "Registro ilegal `%s' en la lista especial de registros de coprocesador"
 
-#: config/tc-crx.c:1853
+#: config/tc-crx.c:1854
 #, c-format
 msgid "Illegal register `%s' in user register list"
 msgstr "Registro ilegal `%s' en la lista de registros de usuario"
 
-#: config/tc-crx.c:1872
+#: config/tc-crx.c:1873
 #, c-format
 msgid "Illegal register `%s' in register list"
 msgstr "Registro ilegal `%s' en la lista de registros"
 
-#: config/tc-crx.c:1878
+#: config/tc-crx.c:1879
 #, c-format
 msgid "Maximum %d bits may be set in `mask16' operand"
 msgstr "Se pueden establecer %d bits como máximo en el operando mask16"
 
-#: config/tc-crx.c:1887
+#: config/tc-crx.c:1888
 #, c-format
 msgid "rest of line ignored; first ignored character is `%c'"
 msgstr "se ignora el resto de la línea; el primer carácter ignorado es `%c'"
 
-#: config/tc-crx.c:1895
+#: config/tc-crx.c:1896
 #, c-format
 msgid "Illegal `mask16' operand, operation is undefined - `%s'"
 msgstr "Operando `mask16' ilegal, la operación está indefinida - `%s'"
 
 #. HI can't be specified without LO (and vise-versa).
-#: config/tc-crx.c:1901
+#: config/tc-crx.c:1902
 msgid "HI/LO registers should be specified together"
 msgstr "Los registros HI/LO se deben especificar juntos"
 
-#: config/tc-crx.c:1907
+#: config/tc-crx.c:1908
 msgid "HI/LO registers should be specified without additional registers"
 msgstr "Los registros HI/LO se deben especificar sin registros adicionales"
 
 #. Give an error if a frag containing code is not aligned to a 2-byte
 #. boundary.
-#: config/tc-crx.c:1992 config/tc-crx.h:78
+#: config/tc-crx.c:1993 config/tc-crx.h:76
 msgid "instruction address is not a multiple of 2"
 msgstr "la dirección de la instrucción no es un múltiplo de 2"
 
-#: config/tc-d10v.c:252
+#: config/tc-d10v.c:217
 #, c-format
 msgid ""
 "D10V options:\n"
@@ -3605,140 +3418,140 @@
 "--no-gstabs-packing     Si se especifica --gstabs, no empaqueta juntas\n"
 "                        las instrucciones adjacentes.\n"
 
-#: config/tc-d10v.c:543 config/tc-d30v.c:550 config/tc-mn10200.c:937
-#: config/tc-mn10300.c:1817 config/tc-ppc.c:2365 config/tc-s390.c:1216
-#: config/tc-tic80.c:276 config/tc-v850.c:2031
+#: config/tc-d10v.c:496 config/tc-d30v.c:488 config/tc-mn10200.c:1075
+#: config/tc-mn10300.c:1817 config/tc-ppc.c:2380 config/tc-s390.c:1218
+#: config/tc-v850.c:1949
 msgid "illegal operand"
 msgstr "operando ilegal"
 
-#: config/tc-d10v.c:657
+#: config/tc-d10v.c:608
 msgid "operand is not an immediate"
 msgstr "el operando no es un inmediato"
 
-#: config/tc-d10v.c:675
+#: config/tc-d10v.c:626
 #, c-format
 msgid "operand out of range: %lu"
 msgstr "operando fuera de rango: %lu"
 
-#: config/tc-d10v.c:736
+#: config/tc-d10v.c:684
 msgid "Instruction must be executed in parallel with another instruction."
 msgstr "La instrucción debe ser ejecutada en paralelo con otra instrucción."
 
-#: config/tc-d10v.c:792
+#: config/tc-d10v.c:738 config/tc-d10v.c:746
+#, c-format
+msgid "packing conflict: %s must dispatch sequentially"
+msgstr "conflicto de empaquetado: %s debe despachar secuencialmente"
+
+#: config/tc-d10v.c:845
+#, c-format
+msgid "resource conflict (R%d)"
+msgstr "conflicto de recurso (R%d)"
+
+#: config/tc-d10v.c:848
+#, c-format
+msgid "resource conflict (A%d)"
+msgstr "conflicto de recurso (A%d)"
+
+#: config/tc-d10v.c:850
+msgid "resource conflict (PSW)"
+msgstr "conflicto de recurso (PSW)"
+
+#: config/tc-d10v.c:852
+msgid "resource conflict (C flag)"
+msgstr "conflicto de recurso (opción C)"
+
+#: config/tc-d10v.c:854
+msgid "resource conflict (F flag)"
+msgstr "conflicto de recurso (opción F)"
+
+#: config/tc-d10v.c:1004
 msgid "Instruction must be executed in parallel"
 msgstr "La instrucción debe ser ejecutada en paralelo"
 
-#: config/tc-d10v.c:795
+#: config/tc-d10v.c:1007
 msgid "Long instructions may not be combined."
 msgstr "Las instrucciones long no se pueden combinar."
 
-#: config/tc-d10v.c:828
+#: config/tc-d10v.c:1040
 msgid "One of these instructions may not be executed in parallel."
 msgstr "Una de estas instrucciones no se puede ejecutar en paralelo."
 
-#: config/tc-d10v.c:832 config/tc-d30v.c:877
+#: config/tc-d10v.c:1044 config/tc-d30v.c:1071
 msgid "Two IU instructions may not be executed in parallel"
 msgstr "Dos instrucciones IU no se pueden ejecutar en paralelo"
 
-#: config/tc-d10v.c:834 config/tc-d10v.c:842 config/tc-d10v.c:856
-#: config/tc-d10v.c:871 config/tc-d30v.c:878 config/tc-d30v.c:887
+#: config/tc-d10v.c:1046 config/tc-d10v.c:1054 config/tc-d10v.c:1068
+#: config/tc-d10v.c:1083 config/tc-d30v.c:1072 config/tc-d30v.c:1081
 msgid "Swapping instruction order"
 msgstr "Intercambiando el orden de la instrucción"
 
-#: config/tc-d10v.c:840 config/tc-d30v.c:884
+#: config/tc-d10v.c:1052 config/tc-d30v.c:1078
 msgid "Two MU instructions may not be executed in parallel"
 msgstr "Dos instrucciones MU no se pueden ejecutar en paralelo"
 
-#: config/tc-d10v.c:860 config/tc-d30v.c:904
+#: config/tc-d10v.c:1072 config/tc-d30v.c:1098
 msgid "IU instruction may not be in the left container"
 msgstr "Una instrucción IU no puede estar en el contenedor izquierdo"
 
 # Parece que R es 'right' y L es 'left'. Revisar el código para comprobar
 # y mejorar esta traducción. cfuga
-#: config/tc-d10v.c:862 config/tc-d10v.c:877
+#: config/tc-d10v.c:1074 config/tc-d10v.c:1089
 msgid "Instruction in R container is squashed by flow control instruction in L container."
 msgstr "La instrucción en el contenedor R es aplastada por la instrucción de control de flujo en el contenedor L."
 
-#: config/tc-d10v.c:875 config/tc-d30v.c:915
+#: config/tc-d10v.c:1087 config/tc-d30v.c:1109
 msgid "MU instruction may not be in the right container"
 msgstr "Una instrucción MU no puede estar en el contenedor derecho"
 
-#: config/tc-d10v.c:881 config/tc-d30v.c:927
+#: config/tc-d10v.c:1093 config/tc-d30v.c:1121
 msgid "unknown execution type passed to write_2_short()"
 msgstr "tipo de ejecución desconocido pasado a write_2_short()"
 
-#: config/tc-d10v.c:1072 config/tc-d10v.c:1080
-#, c-format
-msgid "packing conflict: %s must dispatch sequentially"
-msgstr "conflicto de empaquetado: %s debe despachar secuencialmente"
-
-#: config/tc-d10v.c:1179
-#, c-format
-msgid "resource conflict (R%d)"
-msgstr "conflicto de recurso (R%d)"
-
-#: config/tc-d10v.c:1182
-#, c-format
-msgid "resource conflict (A%d)"
-msgstr "conflicto de recurso (A%d)"
-
-#: config/tc-d10v.c:1184
-msgid "resource conflict (PSW)"
-msgstr "conflicto de recurso (PSW)"
-
-#: config/tc-d10v.c:1186
-msgid "resource conflict (C flag)"
-msgstr "conflicto de recurso (opción C)"
-
-#: config/tc-d10v.c:1188
-msgid "resource conflict (F flag)"
-msgstr "conflicto de recurso (opción F)"
-
-#: config/tc-d10v.c:1276 config/tc-d10v.c:1298 config/tc-d30v.c:1408
-msgid "Unable to mix instructions as specified"
-msgstr "No se pueden mezclar las instrucciones como se especificó"
-
-#: config/tc-d10v.c:1343 config/tc-d30v.c:1538
-#, c-format
-msgid "unknown opcode: %s"
-msgstr "código de operación desconocido: %s"
-
-#: config/tc-d10v.c:1426 config/tc-d10v.c:1601
+#: config/tc-d10v.c:1221 config/tc-d10v.c:1394
 msgid "bad opcode or operands"
 msgstr "código de operación u operandos erróneos"
 
-#: config/tc-d10v.c:1501 config/tc-m68k.c:4679
+#: config/tc-d10v.c:1296 config/tc-m68k.c:4625
 msgid "value out of range"
 msgstr "valor fuera de rango"
 
-#: config/tc-d10v.c:1577
+#: config/tc-d10v.c:1370
 msgid "illegal operand - register name found where none expected"
 msgstr "operando ilegal - se encontró un nombre de registro donde no se esperaba ninguno"
 
-#: config/tc-d10v.c:1612
+#: config/tc-d10v.c:1405
 msgid "Register number must be EVEN"
 msgstr "El número de registro debe ser PAR"
 
-#: config/tc-d10v.c:1615
+#: config/tc-d10v.c:1408
 msgid "Unsupported use of sp"
 msgstr "Uso sin soporte de sp"
 
-#: config/tc-d10v.c:1634
+#: config/tc-d10v.c:1427
 #, c-format
 msgid "cr%ld is a reserved control register"
 msgstr "cr%ld es un registro de control reservado"
 
-#: config/tc-d10v.c:1771
+#: config/tc-d10v.c:1466 config/tc-d30v.c:1430
 #, c-format
+msgid "unknown opcode: %s"
+msgstr "código de operación desconocido: %s"
+
+#: config/tc-d10v.c:1602
+#, c-format
 msgid "line %d: rep or repi must include at least 4 instructions"
 msgstr "línea %d: rep o repi debe incluir por lo menos 4 instrucciones"
 
-#: config/tc-d30v.c:193
+#: config/tc-d10v.c:1810 config/tc-d10v.c:1832 config/tc-d30v.c:1777
+msgid "Unable to mix instructions as specified"
+msgstr "No se pueden mezclar las instrucciones como se especificó"
+
+#: config/tc-d30v.c:150
 #, c-format
 msgid "Register name %s conflicts with symbol of the same name"
 msgstr "El nombre de registro %s tiene conflictos con el símbolo del mismo nombre"
 
-#: config/tc-d30v.c:288
+#: config/tc-d30v.c:240
 #, c-format
 msgid ""
 "\n"
@@ -3757,195 +3570,215 @@
 "-c                      Avisar sobre los símbolos cuyos nombres coincidan con nombres de registros.\n"
 "-C                      Opuesto de -C.  -c es por defecto.\n"
 
-#: config/tc-d30v.c:462
+#: config/tc-d30v.c:402
 msgid "unexpected 12-bit reloc type"
 msgstr "tipo de reubicación de 12-bit inesperado"
 
-#: config/tc-d30v.c:469
+#: config/tc-d30v.c:409
 msgid "unexpected 18-bit reloc type"
 msgstr "tipo de reubicación de 18-bit inesperado"
 
-#: config/tc-d30v.c:720
+#: config/tc-d30v.c:659
 #, c-format
 msgid "%s NOP inserted"
 msgstr "%s NOP insertados"
 
-#: config/tc-d30v.c:721
+#: config/tc-d30v.c:660
 msgid "sequential"
 msgstr "secuencial"
 
-#: config/tc-d30v.c:721
+#: config/tc-d30v.c:660
 msgid "parallel"
 msgstr "paralelo"
 
-#: config/tc-d30v.c:873
+#: config/tc-d30v.c:1067
 msgid "Instructions may not be executed in parallel"
 msgstr "Las instrucciones no se pueden ejecutar en paralelo"
 
-#: config/tc-d30v.c:886
+#: config/tc-d30v.c:1080
 #, c-format
 msgid "Executing %s in IU may not work"
 msgstr "Ejecutar %s en IU podría no funcionar"
 
-#: config/tc-d30v.c:893
+#: config/tc-d30v.c:1087
 #, c-format
 msgid "Executing %s in IU may not work in parallel execution"
 msgstr "Ejecutar %s en IU podría no funcionar en ejecución paralela"
 
-#: config/tc-d30v.c:906
+#: config/tc-d30v.c:1100
 #, c-format
 msgid "special left instruction `%s' kills instruction `%s' in right container"
 msgstr "la instrucción especial izquierda `%s' mata a la instrucción `%s' en el contenedor derecho"
 
-#: config/tc-d30v.c:917
+#: config/tc-d30v.c:1111
 #, c-format
 msgid "Executing %s in reverse serial with %s may not work"
 msgstr "Ejecutar %s en serie reversa con %s podría no funcionar"
 
-#: config/tc-d30v.c:920
+#: config/tc-d30v.c:1114
 #, c-format
 msgid "Executing %s in IU in reverse serial may not work"
 msgstr "Ejecutar %s en IU en serie reversa podría no funcionar"
 
-#: config/tc-d30v.c:1287 config/tc-d30v.c:1304
+#: config/tc-d30v.c:1303
+msgid "Odd numbered register used as target of multi-register instruction"
+msgstr "Los registros numerados nones se usan como objetivo para una instrucción multi-registro"
+
+#: config/tc-d30v.c:1367 config/tc-d30v.c:1402
+#, c-format
+msgid "unknown condition code: %s"
+msgstr "código de condición desconocido: %s"
+
+#: config/tc-d30v.c:1395
+#, c-format
+msgid "cmpu doesn't support condition code %s"
+msgstr "cmpu no tiene soporte para el código de condición %s"
+
+#: config/tc-d30v.c:1441
+#, c-format
+msgid "operands for opcode `%s' do not match any valid format"
+msgstr "los operandos para el código de operación `%s' no coincide con ningún formato válido"
+
+#: config/tc-d30v.c:1656 config/tc-d30v.c:1673
 msgid "Cannot assemble instruction"
 msgstr "No se puede ensamblar la instrucción"
 
-#: config/tc-d30v.c:1289
+#: config/tc-d30v.c:1658
 msgid "First opcode is long.  Unable to mix instructions as specified."
 msgstr "El primer código de operación es long.  No se pueden mezclar las instrucciones como se especificó."
 
-#: config/tc-d30v.c:1358
+#: config/tc-d30v.c:1727
 msgid "word of NOPs added between word multiply and load"
 msgstr "word de NOPs agregados entre múltiplos de word y load"
 
-#: config/tc-d30v.c:1360
+#: config/tc-d30v.c:1729
 msgid "word of NOPs added between word multiply and 16-bit multiply"
 msgstr "word de NOPs agregados entre múltiplos de word y múltiplos de 16-bit"
 
-#: config/tc-d30v.c:1392
+#: config/tc-d30v.c:1761
 msgid "Instruction uses long version, so it cannot be mixed as specified"
 msgstr "La instrucción usa una versión long, así que no se puede mezclar como se especificó"
 
-#: config/tc-d30v.c:1475 config/tc-d30v.c:1510
+#: config/tc-d30v.c:1888
 #, c-format
-msgid "unknown condition code: %s"
-msgstr "código de condición desconocido: %s"
+msgid "value too large to fit in %d bits"
+msgstr "valor demasiado grande para caber en %d bits"
 
-#: config/tc-d30v.c:1503
+#: config/tc-d30v.c:1949
 #, c-format
-msgid "cmpu doesn't support condition code %s"
-msgstr "cmpu no tiene soporte para el código de condición %s"
-
-#: config/tc-d30v.c:1549
-#, c-format
-msgid "operands for opcode `%s' do not match any valid format"
-msgstr "los operandos para el código de operación `%s' no coincide con ningún formato válido"
-
-#: config/tc-d30v.c:1764
-msgid "Odd numbered register used as target of multi-register instruction"
-msgstr "Los registros numerados nones se usan como objetivo para una instrucción multi-registro"
-
-#: config/tc-d30v.c:1847
-#, c-format
 msgid "line %d: unable to place address of symbol '%s' into a byte"
 msgstr "línea %d: no se puede colocar la dirección del símbolo '%s' en un byte"
 
-#: config/tc-d30v.c:1850
+#: config/tc-d30v.c:1952
 #, c-format
 msgid "line %d: unable to place value %lx into a byte"
 msgstr "línea %d: no se puede colocar el valor %lx en un byte"
 
-#: config/tc-d30v.c:1858
+#: config/tc-d30v.c:1960
 #, c-format
 msgid "line %d: unable to place address of symbol '%s' into a short"
 msgstr "línea %d: no se puede colocar la dirección del símbolo '%s' en un short"
 
-#: config/tc-d30v.c:1861
+#: config/tc-d30v.c:1963
 #, c-format
 msgid "line %d: unable to place value %lx into a short"
 msgstr "línea %d: no se puede colocar el valor %lx en un short"
 
-#: config/tc-d30v.c:1869
+#: config/tc-d30v.c:1971
 #, c-format
 msgid "line %d: unable to place address of symbol '%s' into a quad"
 msgstr "línea %d: no se puede colocar la dirección del símbolo '%s' en un quad"
 
-#: config/tc-d30v.c:2038
+#: config/tc-d30v.c:2079
 #, c-format
-msgid "value too large to fit in %d bits"
-msgstr "valor demasiado grande para caber en %d bits"
-
-#: config/tc-d30v.c:2179
-#, c-format
 msgid "Alignment too large: %d assumed"
 msgstr "Alineación demasiado grande: se asume %d"
 
-#: config/tc-dlx.c:245
+#: config/tc-dlx.c:211
 msgid "missing .proc"
 msgstr "falta un .proc"
 
-#: config/tc-dlx.c:262
+#: config/tc-dlx.c:228
 msgid ".endfunc missing for previous .proc"
 msgstr "falta un .endfunc para el .proc previo"
 
-#: config/tc-dlx.c:472
-#, c-format
-msgid "Expression Error for operand modifier %%hi/%%lo\n"
-msgstr "Error de Expresión para el modificador de operando %%hi/%%lo\n"
+#. Probably a memory allocation problem?  Give up now.
+#: config/tc-dlx.c:297 config/tc-hppa.c:1489 config/tc-mips.c:1415
+#: config/tc-mips.c:1467 config/tc-or32.c:210 config/tc-sparc.c:855
+msgid "Broken assembler.  No assembly attempted."
+msgstr "Ensamblador descompuesto.  No se intentó ensamblar."
 
-#: config/tc-dlx.c:526
+#: config/tc-dlx.c:327
 #, c-format
 msgid "Bad operand for a load instruction: <%s>"
 msgstr "Operando erróneo para una instrucción load <%s>"
 
-#: config/tc-dlx.c:641
+#: config/tc-dlx.c:441
 #, c-format
 msgid "Bad operand for a store instruction: <%s>"
 msgstr "Operando erróneo para una instrucción store <%s>"
 
-#: config/tc-dlx.c:839
+#: config/tc-dlx.c:621
+#, c-format
+msgid "Expression Error for operand modifier %%hi/%%lo\n"
+msgstr "Error de Expresión para el modificador de operando %%hi/%%lo\n"
+
+#: config/tc-dlx.c:634 config/tc-or32.c:873
+#, c-format
+msgid "Invalid expression after %%%%\n"
+msgstr "Expresión inválida después de %%%%\n"
+
+#: config/tc-dlx.c:703
+#, c-format
+msgid "Unknown opcode `%s'."
+msgstr "Código de operación desconocido `%s'."
+
+#: config/tc-dlx.c:716
 msgid "Can not set dlx_skip_hi16_flag"
 msgstr "No se puede establecer dlx_skip_hi16_flag"
 
-#: config/tc-dlx.c:853
+#: config/tc-dlx.c:730
 #, c-format
 msgid "Missing arguments for opcode <%s>."
 msgstr "Faltan argumentos para el código de operación <%s>"
 
-#: config/tc-dlx.c:924
+#: config/tc-dlx.c:764
 #, c-format
+msgid "Too many operands: %s"
+msgstr "Demasiados operandos: %s"
+
+#: config/tc-dlx.c:801
+#, c-format
 msgid "Both the_insn.HI and the_insn.LO are set : %s"
 msgstr "Tanto the_insn.HI como the_insn.LO están activados: %s"
 
-#: config/tc-dlx.c:994
+#: config/tc-dlx.c:871
 msgid "failed regnum sanity check."
 msgstr "falló la prueba de sanidad regnum."
 
-#: config/tc-dlx.c:1007
+#: config/tc-dlx.c:884
 msgid "failed general register sanity check."
 msgstr "falló la prueba de sanidad de registro general."
 
-#: config/tc-dlx.c:1292
+#: config/tc-dlx.c:1175 config/tc-or32.c:835
+#, c-format
+msgid "label \"$%d\" redefined"
+msgstr "se redefinió la etiqueta \"$%d\""
+
+#: config/tc-dlx.c:1213
 msgid "Invalid expression after # number\n"
 msgstr "Expresión inválida después de # number\n"
 
-#: config/tc-fr30.c:85
+#: config/tc-fr30.c:83
 #, c-format
 msgid " FR30 specific command line options:\n"
 msgstr " Opciones de línea de comando específicas de FR30:\n"
 
-#: config/tc-fr30.c:139
+#: config/tc-fr30.c:136
 #, c-format
 msgid "Instruction %s not allowed in a delay slot."
 msgstr "No se permite la instrucción %s en una ranura de retardo."
 
-#: config/tc-fr30.c:378 config/tc-frv.c:1600 config/tc-i960.c:798
-#: config/tc-ip2k.c:350 config/tc-m32r.c:2205 config/tc-openrisc.c:401
-#: config/tc-xstormy16.c:654
-msgid "Bad call to md_atof()"
-msgstr "Llamada errónea a md_atof()"
-
 #: config/tc-frv.c:461
 #, c-format
 msgid "FRV specific command line options:\n"
@@ -4078,1011 +3911,972 @@
 msgid "Relocation %s is not safe for %s"
 msgstr "La reubicación %s no es segura para %s"
 
-#: config/tc-h8300.c:82 config/tc-h8300.c:93 config/tc-h8300.c:105
-#: config/tc-h8300.c:117 config/tc-h8300.c:129 config/tc-h8300.c:142
-#: config/tc-h8300.c:213 config/tc-hppa.c:1440 config/tc-hppa.c:6925
-#: config/tc-hppa.c:6931 config/tc-hppa.c:6937 config/tc-hppa.c:6943
-#: config/tc-mn10300.c:1223 config/tc-mn10300.c:1228 config/tc-mn10300.c:2726
+#: config/tc-h8300.c:78 config/tc-h8300.c:87 config/tc-h8300.c:97
+#: config/tc-h8300.c:107 config/tc-h8300.c:117 config/tc-h8300.c:128
+#: config/tc-h8300.c:195 config/tc-hppa.c:1449 config/tc-hppa.c:6926
+#: config/tc-hppa.c:6932 config/tc-hppa.c:6938 config/tc-hppa.c:6944
+#: config/tc-mn10300.c:1223 config/tc-mn10300.c:1228 config/tc-mn10300.c:2725
 msgid "could not set architecture and machine"
 msgstr "no se pueden establecer la arquitectura y la máquina"
 
-#: config/tc-h8300.c:416 config/tc-h8300.c:424
+#: config/tc-h8300.c:397 config/tc-h8300.c:405
 msgid "Reg not valid for H8/300"
 msgstr "El registro no es válido para H8/300"
 
-#: config/tc-h8300.c:505
+#: config/tc-h8300.c:486
 msgid "invalid operand size requested"
 msgstr "se solicitó un tamaño de operando inválido"
 
-#: config/tc-h8300.c:604
+#: config/tc-h8300.c:585
 msgid "Invalid register list for ldm/stm\n"
 msgstr "Lista de registros inválida para ldm/stm\n"
 
-#: config/tc-h8300.c:630 config/tc-h8300.c:635 config/tc-h8300.c:642
+#: config/tc-h8300.c:611 config/tc-h8300.c:616 config/tc-h8300.c:623
 msgid "mismatch between register and suffix"
 msgstr "no hay coincidencia entre el registro y el sufijo"
 
-#: config/tc-h8300.c:669
+#: config/tc-h8300.c:650
 msgid "address too high for vector table jmp/jsr"
 msgstr "dirección demasiado alta para la tabla de vectores jmp/jsr"
 
-#: config/tc-h8300.c:696 config/tc-h8300.c:808 config/tc-h8300.c:818
+#: config/tc-h8300.c:677 config/tc-h8300.c:789 config/tc-h8300.c:799
 msgid "Wrong size pointer register for architecture."
 msgstr "Tamaño de puntero a registro erróneo para la arquitectura."
 
-#: config/tc-h8300.c:755 config/tc-h8300.c:763 config/tc-h8300.c:792
+#: config/tc-h8300.c:736 config/tc-h8300.c:744 config/tc-h8300.c:773
 msgid "expected @(exp, reg16)"
 msgstr "se esperaba @(exp, reg16)"
 
-#: config/tc-h8300.c:781
+#: config/tc-h8300.c:762
 msgid "expected .L, .W or .B for register in indexed addressing mode"
 msgstr "se esperaba .L, .W ó .B para el registro en modo de direccionamiento indizado"
 
-#: config/tc-h8300.c:975
+#: config/tc-h8300.c:956
 msgid "expected valid addressing mode for mova: \"@(disp, ea.sz),ERn\""
 msgstr "se pesperaba un modo de direccionamiento válido para mova: \"@(disp, ea.sz),ERn\""
 
-#: config/tc-h8300.c:993 config/tc-h8300.c:1002
+#: config/tc-h8300.c:974 config/tc-h8300.c:983
 msgid "expected register"
 msgstr "se esperaba un registro"
 
-#: config/tc-h8300.c:1018
+#: config/tc-h8300.c:999
 msgid "expected closing paren"
 msgstr "se esperaba un paréntesis que cierra"
 
-#: config/tc-h8300.c:1077
+#: config/tc-h8300.c:1058
 #, c-format
 msgid "can't use high part of register in operand %d"
 msgstr "no se puede usar la parte alta del registro en el operando %d"
 
-#: config/tc-h8300.c:1234
+#: config/tc-h8300.c:1215
 #, c-format
 msgid "Opcode `%s' with these operand types not available in %s mode"
 msgstr "El código de operación `%s' con esos tipos de operando no está disponible en el modo %s"
 
-#: config/tc-h8300.c:1243
+#: config/tc-h8300.c:1224
 msgid "mismatch between opcode size and operand size"
 msgstr "no hay coincidencia entre el tamaño del código de operación y el tamaño del operando"
 
-#: config/tc-h8300.c:1279
+#: config/tc-h8300.c:1260
 #, c-format
 msgid "operand %s0x%lx out of range."
 msgstr "operando %s0x%lx fuera de rango."
 
-#: config/tc-h8300.c:1375
+#: config/tc-h8300.c:1356
 msgid "Can't work out size of operand.\n"
 msgstr "No se puede obtener el tamaño del operando.\n"
 
-#: config/tc-h8300.c:1424
+#: config/tc-h8300.c:1405
 #, c-format
 msgid "Opcode `%s' with these operand types not available in H8/300 mode"
 msgstr "El código de operación `%s' con esos tipos de operandos no están disponibles en el modo H8/300"
 
-#: config/tc-h8300.c:1429
+#: config/tc-h8300.c:1410
 #, c-format
 msgid "Opcode `%s' with these operand types not available in H8/300H mode"
 msgstr "El código de operación `%s' con esos tipos de operandos no está disponible en el modo H8/300H"
 
-#: config/tc-h8300.c:1435
+#: config/tc-h8300.c:1416
 #, c-format
 msgid "Opcode `%s' with these operand types not available in H8/300S mode"
 msgstr "El código de operación `%s' con esos tipos de operandos no está disponible en el modo H8/300S"
 
-#: config/tc-h8300.c:1496 config/tc-h8300.c:1516
+#: config/tc-h8300.c:1477 config/tc-h8300.c:1497
 msgid "Need #1 or #2 here"
 msgstr "Se necesita #1 ó #2 aquí"
 
-#: config/tc-h8300.c:1511
+#: config/tc-h8300.c:1492
 msgid "#4 not valid on H8/300."
 msgstr "#4 no es válido en H8/300"
 
-#: config/tc-h8300.c:1617 config/tc-h8300.c:1699
+#: config/tc-h8300.c:1598 config/tc-h8300.c:1680
 #, c-format
 msgid "branch operand has odd offset (%lx)\n"
 msgstr "el operando de ramificación tiene un desplazamiento non (%lx)\n"
 
-#: config/tc-h8300.c:1737
+#: config/tc-h8300.c:1718
 msgid "destination operand must be 16 bit register"
 msgstr "el operando de destino debe ser un registro de 16 bit"
 
-#: config/tc-h8300.c:1746
+#: config/tc-h8300.c:1727
 msgid "source operand must be 8 bit register"
 msgstr "el operando de origen debe ser un registro de 8 bit"
 
-#: config/tc-h8300.c:1754
+#: config/tc-h8300.c:1735
 msgid "destination operand must be 16bit absolute address"
 msgstr "el operando de destino debe ser una dirección absoluta de 16bit"
 
-#: config/tc-h8300.c:1761
+#: config/tc-h8300.c:1742
 msgid "destination operand must be 8 bit register"
 msgstr "el operando de destino debe ser un registro de 8 bit"
 
-#: config/tc-h8300.c:1769
+#: config/tc-h8300.c:1750
 msgid "source operand must be 16bit absolute address"
 msgstr "el operando de origen debe ser una dirección absoluta de 16bit"
 
 #. This seems more sane than saying "too many operands".  We'll
 #. get here only if the trailing trash starts with a comma.
 #. Types or values of args don't match.
-#: config/tc-h8300.c:1777 config/tc-mmix.c:486 config/tc-mmix.c:498
-#: config/tc-mmix.c:2564 config/tc-mmix.c:2588 config/tc-mmix.c:2865
-#: config/tc-or32.c:636 config/tc-or32.c:846
+#: config/tc-h8300.c:1758 config/tc-mmix.c:473 config/tc-mmix.c:485
+#: config/tc-mmix.c:2526 config/tc-mmix.c:2550 config/tc-mmix.c:2823
+#: config/tc-or32.c:527
 msgid "invalid operands"
 msgstr "operandos inválidos"
 
-#: config/tc-h8300.c:1808
+#: config/tc-h8300.c:1789
 msgid "operand/size mis-match"
 msgstr "no coinciden los operandos/tamaños"
 
-#: config/tc-h8300.c:1904 config/tc-h8500.c:1112 config/tc-mips.c:9141
-#: config/tc-sh64.c:2795 config/tc-sh.c:2806 config/tc-w65.c:688
-#: config/tc-z8k.c:1210
+#: config/tc-h8300.c:1885 config/tc-mips.c:9358 config/tc-sh64.c:2795
+#: config/tc-sh.c:2838 config/tc-z8k.c:1204
 msgid "unknown opcode"
 msgstr "código de operación desconocido"
 
-#: config/tc-h8300.c:1937
+#: config/tc-h8300.c:1918
 msgid "invalid operand in ldm"
 msgstr "operando inválido en ldm"
 
-#: config/tc-h8300.c:1946
+#: config/tc-h8300.c:1927
 msgid "invalid operand in stm"
 msgstr "operando inválido en stm"
 
-#: config/tc-h8300.c:2029 config/tc-h8500.c:1139 config/tc-sh.c:2931
-#: config/tc-z8k.c:1266
+#: config/tc-h8300.c:2093
 #, c-format
-msgid "call to tc_crawl_symbol_chain \n"
-msgstr "llamada a tc_crawl_symbol_chain \n"
-
-#: config/tc-h8300.c:2043 config/tc-h8500.c:1153 config/tc-sh.c:2937
-#: config/tc-z8k.c:1280
-#, c-format
-msgid "call to tc_headers_hook \n"
-msgstr "llamada a tc_headers_hook \n"
-
-#: config/tc-h8300.c:2130
-#, c-format
 msgid "call to tc_aout_fix_to_chars \n"
 msgstr "llamada a tc_aout_fix_to_chars \n"
 
-#: config/tc-h8300.c:2144
+#: config/tc-h8300.c:2102
 #, c-format
 msgid "call to md_convert_frag \n"
 msgstr "llamada a md_convert_frag \n"
 
-#: config/tc-h8300.c:2198
+#: config/tc-h8300.c:2146
 #, c-format
 msgid "call tomd_estimate_size_before_relax \n"
 msgstr "llamada a tomd_estimate_size_before_relax \n"
 
-#: config/tc-h8300.c:2309 config/tc-mcore.c:2356 config/tc-pj.c:580
-#: config/tc-sh.c:4455
+#: config/tc-h8300.c:2197 config/tc-mcore.c:2282 config/tc-pj.c:538
+#: config/tc-sh.c:4270
 #, c-format
 msgid "Cannot represent relocation type %s"
 msgstr "No se puede representar el tipo de reubicación %s"
 
-#: config/tc-h8500.c:325
-msgid ":24 not valid for this opcode"
-msgstr ":24 no es válido para este código de operación"
-
-#: config/tc-h8500.c:332
-msgid "expect :8,:16 or :24"
-msgstr "se esperaba :8,:16 ó :24"
-
-#: config/tc-h8500.c:391
-msgid "syntax error in reg list"
-msgstr "error sintáctico en la lista de registros"
-
-#: config/tc-h8500.c:409
-msgid "missing final register in range"
-msgstr "falta el registro final en el rango"
-
-#: config/tc-h8500.c:498 config/tc-h8500.c:505 config/tc-h8500.c:511
-msgid "expected @(exp, Rn)"
-msgstr "se esperaba @(exp, Rn)"
-
-#: config/tc-h8500.c:527
-msgid "@Rn+ needs word register"
-msgstr "@Rn+ necesita un registro word"
-
-#: config/tc-h8500.c:537
-msgid "@Rn needs word register"
-msgstr "@Rn necesita un registro word"
-
-#: config/tc-h8500.c:838 config/tc-sh.c:2083
-#, c-format
-msgid "unhandled %d\n"
-msgstr "%d sin manejar\n"
-
-#: config/tc-h8500.c:868
-#, c-format
-msgid "operand must be absolute in range %d..%d"
-msgstr "el operando debe ser absoluto en el rango %d..%d"
-
-#: config/tc-h8500.c:963 config/tc-sh.c:2353
-#, c-format
-msgid "failed for %d\n"
-msgstr "falló para %d\n"
-
-#: config/tc-h8500.c:1128 config/tc-sh.c:2466 config/tc-sh.c:2862
-#: config/tc-w65.c:707
-msgid "invalid operands for opcode"
-msgstr "operandos inválidos para el código de operación"
-
 #. Simple range checking for FIELD against HIGH and LOW bounds.
 #. IGNORE is used to suppress the error message.
-#. Variant of CHECK_FIELD for use in md_apply_fix3 and other places where
+#. Variant of CHECK_FIELD for use in md_apply_fix and other places where
 #. the current file and line number are not valid.
-#: config/tc-hppa.c:1171 config/tc-hppa.c:1185
+#: config/tc-hppa.c:1176 config/tc-hppa.c:1190
 #, c-format
 msgid "Field out of range [%d..%d] (%d)."
 msgstr "Campo fuera de rango [%d..%d] (%d)."
 
 #. Simple alignment checking for FIELD against ALIGN (a power of two).
 #. IGNORE is used to suppress the error message.
-#: config/tc-hppa.c:1199
+#: config/tc-hppa.c:1204
 #, c-format
 msgid "Field not properly aligned [%d] (%d)."
 msgstr "Campo no alineado adecuadamente [%d] (%d)."
 
-#: config/tc-hppa.c:1228
+#: config/tc-hppa.c:1233
 msgid "Missing .exit\n"
 msgstr "Falta un .exit\n"
 
-#: config/tc-hppa.c:1231
+#: config/tc-hppa.c:1236
 msgid "Missing .procend\n"
 msgstr "Falta un .procend\n"
 
-#: config/tc-hppa.c:1413
+#: config/tc-hppa.c:1422
 #, c-format
 msgid "Invalid field selector.  Assuming F%%."
 msgstr "Selector de campo inválido.  Se asume F%%."
 
-#: config/tc-hppa.c:1446
+#: config/tc-hppa.c:1455
 msgid "-R option not supported on this target."
 msgstr "la opción -R no tiene soporte en este objetivo."
 
-#: config/tc-hppa.c:1462 config/tc-sparc.c:814 config/tc-sparc.c:850
+#: config/tc-hppa.c:1471 config/tc-sparc.c:811 config/tc-sparc.c:847
 #, c-format
 msgid "Internal error: can't hash `%s': %s\n"
 msgstr "Error interno: no se puede dispersar `%s': %s\n"
 
-#: config/tc-hppa.c:1470 config/tc-i860.c:238
+#: config/tc-hppa.c:1479 config/tc-i860.c:238
 #, c-format
 msgid "internal error: losing opcode: `%s' \"%s\"\n"
 msgstr "error interno: se pierde el código de operación: `%s' \"%s\"\n"
 
-#: config/tc-hppa.c:1541 config/tc-hppa.c:7064 config/tc-hppa.c:7121
+#: config/tc-hppa.c:1550 config/tc-hppa.c:7065 config/tc-hppa.c:7122
 msgid "Missing function name for .PROC (corrupted label chain)"
 msgstr "Falta el nombre de función para .PROC (cadena de etiquetas corrupta)"
 
-#: config/tc-hppa.c:1544 config/tc-hppa.c:7124
+#: config/tc-hppa.c:1553 config/tc-hppa.c:7125
 msgid "Missing function name for .PROC"
 msgstr "Falta el nombre de función para .PROC"
 
-#: config/tc-hppa.c:1651 config/tc-hppa.c:4920
-msgid "could not update architecture and machine"
-msgstr "no se puede actualizar la arquitectura y la máquina"
-
-#: config/tc-hppa.c:1859
+#: config/tc-hppa.c:1857
 msgid "Invalid Indexed Load Completer."
 msgstr "Completador de Carga Indizado Inválido."
 
-#: config/tc-hppa.c:1864
+#: config/tc-hppa.c:1862
 msgid "Invalid Indexed Load Completer Syntax."
 msgstr "Sintaxis de Completador de Carga Indizado Inválido."
 
-#: config/tc-hppa.c:1901
+#: config/tc-hppa.c:1896
 msgid "Invalid Short Load/Store Completer."
 msgstr "Completador Short de Load/Store Inválido."
 
-#: config/tc-hppa.c:1961 config/tc-hppa.c:1966
+#: config/tc-hppa.c:1956 config/tc-hppa.c:1961
 msgid "Invalid Store Bytes Short Completer"
 msgstr "Completador de Store Bytes Short Inválido."
 
-#: config/tc-hppa.c:2277 config/tc-hppa.c:2283
+#: config/tc-hppa.c:2272 config/tc-hppa.c:2278
 msgid "Invalid left/right combination completer"
 msgstr "Completador de combinación derecha/izquierda inválido"
 
-#: config/tc-hppa.c:2332 config/tc-hppa.c:2339
+#: config/tc-hppa.c:2327 config/tc-hppa.c:2334
 msgid "Invalid permutation completer"
 msgstr "Completador de permutación inválido"
 
-#: config/tc-hppa.c:2439
+#: config/tc-hppa.c:2434
 #, c-format
 msgid "Invalid Add Condition: %s"
 msgstr "Condición de Adición Inválida: %s"
 
-#: config/tc-hppa.c:2450 config/tc-hppa.c:2460
+#: config/tc-hppa.c:2445 config/tc-hppa.c:2455
 msgid "Invalid Add and Branch Condition"
 msgstr "Condición de Adición y Ramificación Inválida"
 
-#: config/tc-hppa.c:2481 config/tc-hppa.c:2618
+#: config/tc-hppa.c:2476 config/tc-hppa.c:2613
 msgid "Invalid Compare/Subtract Condition"
 msgstr "Condición de Comparación/Sustracción Inválida"
 
-#: config/tc-hppa.c:2521
+#: config/tc-hppa.c:2516
 #, c-format
 msgid "Invalid Bit Branch Condition: %c"
 msgstr "Condición de Ramificación de Bit Inválida: %c"
 
-#: config/tc-hppa.c:2606
+#: config/tc-hppa.c:2601
 #, c-format
 msgid "Invalid Compare/Subtract Condition: %s"
 msgstr "Condición de Comparación/Sustracción Inválida: %s"
 
-#: config/tc-hppa.c:2633
+#: config/tc-hppa.c:2628
 msgid "Invalid Compare and Branch Condition"
 msgstr "Condición de Comparación y Ramificación Inválida"
 
-#: config/tc-hppa.c:2729
+#: config/tc-hppa.c:2724
 msgid "Invalid Logical Instruction Condition."
 msgstr "Condición de Instrucción Lógica Inválida."
 
-#: config/tc-hppa.c:2784
+#: config/tc-hppa.c:2779
 msgid "Invalid Shift/Extract/Deposit Condition."
 msgstr "Condición Desplazar/Extraer/Depositar Inválida."
 
-#: config/tc-hppa.c:2896
+#: config/tc-hppa.c:2891
 msgid "Invalid Unit Instruction Condition."
 msgstr "Condición de Instrucción Unit Inválida."
 
-#: config/tc-hppa.c:3273 config/tc-hppa.c:3305 config/tc-hppa.c:3336
-#: config/tc-hppa.c:3366
+#: config/tc-hppa.c:3270 config/tc-hppa.c:3302 config/tc-hppa.c:3333
+#: config/tc-hppa.c:3363
 msgid "Branch to unaligned address"
 msgstr "Ramificación a dirección sin alinear"
 
-#: config/tc-hppa.c:3544
+#: config/tc-hppa.c:3541
 msgid "Invalid SFU identifier"
 msgstr "Identificador SFU inválido"
 
-#: config/tc-hppa.c:3594
+#: config/tc-hppa.c:3591
 msgid "Invalid COPR identifier"
 msgstr "Identificador COPR inválido"
 
-#: config/tc-hppa.c:3723
+#: config/tc-hppa.c:3720
 msgid "Invalid Floating Point Operand Format."
 msgstr "Formato de Operando de Coma Flotante Inválido."
 
-#: config/tc-hppa.c:3840 config/tc-hppa.c:3860 config/tc-hppa.c:3880
-#: config/tc-hppa.c:3900 config/tc-hppa.c:3920
+#: config/tc-hppa.c:3837 config/tc-hppa.c:3857 config/tc-hppa.c:3877
+#: config/tc-hppa.c:3897 config/tc-hppa.c:3917
 msgid "Invalid register for single precision fmpyadd or fmpysub"
 msgstr "Registro inválido para fmpyadd ó fmpysub de precisión simple"
 
-#: config/tc-hppa.c:3977
+#: config/tc-hppa.c:3968 config/tc-hppa.c:4928
+msgid "could not update architecture and machine"
+msgstr "no se puede actualizar la arquitectura y la máquina"
+
+#: config/tc-hppa.c:3985
 #, c-format
 msgid "Invalid operands %s"
 msgstr "Operandos inválidos %s"
 
-#: config/tc-hppa.c:4095
+#: config/tc-hppa.c:4103
 msgid "Cannot handle fixup"
 msgstr "No se puede manejar la compostura"
 
-#: config/tc-hppa.c:4396
+#: config/tc-hppa.c:4404
 #, c-format
 msgid "  -Q                      ignored\n"
 msgstr "  -Q                      ignorado\n"
 
-#: config/tc-hppa.c:4400
+#: config/tc-hppa.c:4408
 #, c-format
 msgid "  -c                      print a warning if a comment is found\n"
 msgstr "  -c                      mostrar un aviso si se encuentra un comentario\n"
 
-#: config/tc-hppa.c:4471
+#: config/tc-hppa.c:4479
 #, c-format
 msgid "no hppa_fixup entry for fixup type 0x%x"
 msgstr "no hay una entrada hppa_fixup para el tipo de compostura 0x%x"
 
-#: config/tc-hppa.c:4642
+#: config/tc-hppa.c:4650
 msgid "Unknown relocation encountered in md_apply_fix."
 msgstr "Se encontró una reubicación desconocida en md_apply_fix."
 
-#: config/tc-hppa.c:4784 config/tc-hppa.c:4809
+#: config/tc-hppa.c:4792 config/tc-hppa.c:4817
 #, c-format
 msgid "Undefined register: '%s'."
 msgstr "Registro indefinido: '%s'."
 
-#: config/tc-hppa.c:4843
+#: config/tc-hppa.c:4851
 #, c-format
 msgid "Non-absolute symbol: '%s'."
 msgstr "Símbolo no absoluto: '%s'."
 
-#: config/tc-hppa.c:4858
+#: config/tc-hppa.c:4866
 #, c-format
 msgid "Undefined absolute constant: '%s'."
 msgstr "Constante absoluta indefinida: '%s'."
 
-#: config/tc-hppa.c:4959
+#: config/tc-hppa.c:4967
 #, c-format
 msgid "Invalid FP Compare Condition: %s"
 msgstr "Condición de Comparación de FP Inválida: %s"
 
-#: config/tc-hppa.c:5015
+#: config/tc-hppa.c:5023
 #, c-format
 msgid "Invalid FTEST completer: %s"
 msgstr "Completador FTEST inválido: %s"
 
-#: config/tc-hppa.c:5082 config/tc-hppa.c:5120
+#: config/tc-hppa.c:5090 config/tc-hppa.c:5128
 #, c-format
 msgid "Invalid FP Operand Format: %3s"
 msgstr "Formato de Operando FP Inválido: %3s"
 
-#: config/tc-hppa.c:5199
+#: config/tc-hppa.c:5207
 msgid "Bad segment in expression."
 msgstr "Segmento erróneo en la expresión."
 
-#: config/tc-hppa.c:5258
+#: config/tc-hppa.c:5266
 msgid "Bad segment (should be absolute)."
 msgstr "Segmento erróneo (debe ser absoluto)."
 
-#: config/tc-hppa.c:5301
+#: config/tc-hppa.c:5309
 #, c-format
 msgid "Invalid argument location: %s\n"
 msgstr "Ubicación de argumento inválida: %s\n"
 
-#: config/tc-hppa.c:5332
+#: config/tc-hppa.c:5340
 #, c-format
 msgid "Invalid argument description: %d"
 msgstr "Descripción de argumento inválida: %d"
 
-#: config/tc-hppa.c:5355
+#: config/tc-hppa.c:5363
 #, c-format
 msgid "Invalid Nullification: (%c)"
 msgstr "Nulificación Inválida: (%c)"
 
-#: config/tc-hppa.c:6075
+#: config/tc-hppa.c:5960
+msgid "Argument to .BLOCK/.BLOCKZ must be between 0 and 0x3fffffff"
+msgstr "El argumento para .BLOCK/.BLOCKZ debe estar entre 0 y 0x3fffffff"
+
+#: config/tc-hppa.c:6076
 #, c-format
 msgid "Invalid .CALL argument: %s"
 msgstr "Argumento de .CALL inválido: %s"
 
-#: config/tc-hppa.c:6197
+#: config/tc-hppa.c:6198
 msgid ".callinfo is not within a procedure definition"
 msgstr ".callinfo no está dentro de una definición de procedimiento"
 
-#: config/tc-hppa.c:6217
+#: config/tc-hppa.c:6218
 #, c-format
 msgid "FRAME parameter must be a multiple of 8: %d\n"
 msgstr "El parámetro FRAM debe ser un múltiplo de 8: %d\n"
 
-#: config/tc-hppa.c:6236
+#: config/tc-hppa.c:6237
 msgid "Value for ENTRY_GR must be in the range 3..18\n"
 msgstr "El valor para ENTRY_GR debe estar en el rango 3..18\n"
 
-#: config/tc-hppa.c:6248
+#: config/tc-hppa.c:6249
 msgid "Value for ENTRY_FR must be in the range 12..21\n"
 msgstr "El valor para ENTRY_FR debe estar en el rango 12..21\n"
 
-#: config/tc-hppa.c:6258
+#: config/tc-hppa.c:6259
 msgid "Value for ENTRY_SR must be 3\n"
 msgstr "El valor para ENTRY_SR debe ser 3\n"
 
-#: config/tc-hppa.c:6314
+#: config/tc-hppa.c:6315
 #, c-format
 msgid "Invalid .CALLINFO argument: %s"
 msgstr "Argumento de .CALLINFO inválido: %s"
 
-#: config/tc-hppa.c:6426
+#: config/tc-hppa.c:6427
 msgid "The .ENTER pseudo-op is not supported"
 msgstr "El pseudo-operador .ENTER no tiene soporte"
 
-#: config/tc-hppa.c:6442
+#: config/tc-hppa.c:6443
 msgid "Misplaced .entry. Ignored."
 msgstr ".entry mal colocado. Ignorado."
 
-#: config/tc-hppa.c:6446
+#: config/tc-hppa.c:6447
 msgid "Missing .callinfo."
 msgstr "Falta un .callinfo."
 
-#: config/tc-hppa.c:6512
+#: config/tc-hppa.c:6513
 msgid ".REG expression must be a register"
 msgstr "la expresión .REG debe ser un registro"
 
-#: config/tc-hppa.c:6528
+#: config/tc-hppa.c:6529
 msgid "bad or irreducible absolute expression; zero assumed"
 msgstr "expresión absoluta errónea o irreducible; se asume cero"
 
-#: config/tc-hppa.c:6539
+#: config/tc-hppa.c:6540
 msgid ".REG must use a label"
 msgstr ".REG debe usar una etiqueta"
 
-#: config/tc-hppa.c:6541
+#: config/tc-hppa.c:6542
 msgid ".EQU must use a label"
 msgstr ".EQU debe usar una etiqueta"
 
-#: config/tc-hppa.c:6594
+#: config/tc-hppa.c:6595
 msgid ".EXIT must appear within a procedure"
 msgstr ".EXIT debe aparecer dentro de un procedimiento"
 
-#: config/tc-hppa.c:6598
+#: config/tc-hppa.c:6599
 msgid "Missing .callinfo"
 msgstr "Falta un .callinfo"
 
-#: config/tc-hppa.c:6602
+#: config/tc-hppa.c:6603
 msgid "No .ENTRY for this .EXIT"
 msgstr "No hay .ENTRY para este .EXIT"
 
-#: config/tc-hppa.c:6629
+#: config/tc-hppa.c:6630
 #, c-format
 msgid "Cannot define export symbol: %s\n"
 msgstr "No se puede definir el símbolo de exportación: %s\n"
 
-#: config/tc-hppa.c:6687
+#: config/tc-hppa.c:6688
 #, c-format
 msgid "Using ENTRY rather than CODE in export directive for %s"
 msgstr "Utilizando ENTRY en lugar de CODE en la directiva de exportación para %s"
 
-#: config/tc-hppa.c:6804
+#: config/tc-hppa.c:6805
 #, c-format
 msgid "Undefined .EXPORT/.IMPORT argument (ignored): %s"
 msgstr "Argumento de .EXPORT/.IMPORT indefinido (ignorado): %s"
 
-#: config/tc-hppa.c:6886
+#: config/tc-hppa.c:6887
 msgid "Missing label name on .LABEL"
 msgstr "Falta el nombre de etiqueta en .LABEL"
 
-#: config/tc-hppa.c:6891
+#: config/tc-hppa.c:6892
 msgid "extra .LABEL arguments ignored."
 msgstr "se ignoran los argumentos extra de .LABEL."
 
-#: config/tc-hppa.c:6908
+#: config/tc-hppa.c:6909
 msgid "The .LEAVE pseudo-op is not supported"
 msgstr "El pseudo-operador .LEAVE no tiene soporte"
 
-#: config/tc-hppa.c:6947
+#: config/tc-hppa.c:6948
 msgid "Unrecognized .LEVEL argument\n"
 msgstr "No se reconoce el argumento de .LEVEL\n"
 
-#: config/tc-hppa.c:6983
+#: config/tc-hppa.c:6984
 #, c-format
 msgid "Cannot define static symbol: %s\n"
 msgstr "No se puede definir el símbolo estático: %s\n"
 
-#: config/tc-hppa.c:7018
+#: config/tc-hppa.c:7019
 msgid "Nested procedures"
 msgstr "Procedimientos anidados"
 
-#: config/tc-hppa.c:7028
+#: config/tc-hppa.c:7029
 msgid "Cannot allocate unwind descriptor\n"
 msgstr "No se puede asignar un descriptor de desenredo\n"
 
-#: config/tc-hppa.c:7128
+#: config/tc-hppa.c:7129
 msgid "misplaced .procend"
 msgstr ".procend mal colocado"
 
-#: config/tc-hppa.c:7131
+#: config/tc-hppa.c:7132
 msgid "Missing .callinfo for this procedure"
 msgstr "Falta un .callinfo para este procedimiento"
 
-#: config/tc-hppa.c:7134
+#: config/tc-hppa.c:7135
 msgid "Missing .EXIT for a .ENTRY"
 msgstr "Falta un .EXIT para un .ENTRY"
 
-#: config/tc-hppa.c:7172
+#: config/tc-hppa.c:7173
 msgid "Not in a space.\n"
 msgstr "No está en un espacio.\n"
 
-#: config/tc-hppa.c:7175
+#: config/tc-hppa.c:7176
 msgid "Not in a subspace.\n"
 msgstr "No está en un subespacio.\n"
 
-#: config/tc-hppa.c:7266
+#: config/tc-hppa.c:7267
 msgid "Invalid .SPACE argument"
 msgstr "Argumento de .SPACE inválido"
 
-#: config/tc-hppa.c:7313
+#: config/tc-hppa.c:7314
 msgid "Can't change spaces within a procedure definition. Ignored"
 msgstr "No se pueden cambiar espacios dentro de una definición de procedimiento. Ignorado"
 
-#: config/tc-hppa.c:7442
+#: config/tc-hppa.c:7443
 #, c-format
 msgid "Undefined space: '%s' Assuming space number = 0."
 msgstr "Espacio indefinido: '%s' Se asume que el número de espacio = 0."
 
-#: config/tc-hppa.c:7466
+#: config/tc-hppa.c:7467
 msgid "Must be in a space before changing or declaring subspaces.\n"
 msgstr "Debe estar en un espacio antes de cambiar o declarar subespacios.\n"
 
-#: config/tc-hppa.c:7470
+#: config/tc-hppa.c:7471
 msgid "Can't change subspaces within a procedure definition. Ignored"
 msgstr "No se pueden cambiar subespacios dentro de una definición de procedimiento. Ignorado"
 
-#: config/tc-hppa.c:7506
+#: config/tc-hppa.c:7507
 msgid "Parameters of an existing subspace can't be modified"
 msgstr "No se pueden modificar los parámetros de un subespacio existente"
 
-#: config/tc-hppa.c:7558
+#: config/tc-hppa.c:7559
 msgid "Alignment must be a power of 2"
 msgstr "La alineación debe ser una potencia de 2"
 
-#: config/tc-hppa.c:7605
+#: config/tc-hppa.c:7606
 msgid "FIRST not supported as a .SUBSPACE argument"
 msgstr "FIRST no tiene soporte como un argumento de .SUBSPACE"
 
-#: config/tc-hppa.c:7607
+#: config/tc-hppa.c:7608
 msgid "Invalid .SUBSPACE argument"
 msgstr "Argumento de .SUBSPACE inválido"
 
-#: config/tc-hppa.c:7796
+#: config/tc-hppa.c:7797
 #, c-format
 msgid "Internal error: Unable to find containing space for %s."
 msgstr "Error interno: No se puede encontrar el espacio contenedor para %s."
 
-#: config/tc-hppa.c:7836
+#: config/tc-hppa.c:7837
 #, c-format
 msgid "Out of memory: could not allocate new space chain entry: %s\n"
 msgstr "Memoria agotada: no se puede asignar una nueva entrada de cadena de espacio: %s\n"
 
-#: config/tc-hppa.c:7925
+#: config/tc-hppa.c:7926
 #, c-format
 msgid "Out of memory: could not allocate new subspace chain entry: %s\n"
 msgstr "Memoria agotada: no se puede asignar una nueva entrada de cadena de subespacio: %s\n"
 
-#: config/tc-hppa.c:8661
+#: config/tc-hppa.c:8662
 #, c-format
 msgid "Symbol '%s' could not be created."
 msgstr "No se puede crear el símbolo '%s'."
 
-#: config/tc-hppa.c:8665
+#: config/tc-hppa.c:8666
 msgid "No memory for symbol name."
 msgstr "No hay memoria para el nombre del símbolo."
 
-#: config/tc-i386.c:706
+#: config/tc-i386.c:721
 #, c-format
 msgid "%s shortened to %s"
 msgstr "%s reducido a %s"
 
-#: config/tc-i386.c:762
+#: config/tc-i386.c:777
 msgid "same type of prefix used twice"
 msgstr "se utilizó dos veces el mismo tipo de prefijo"
 
-#: config/tc-i386.c:780
+#: config/tc-i386.c:795
 msgid "64bit mode not supported on this CPU."
 msgstr "el modo de 64bit no tiene soporte en este CPU."
 
-#: config/tc-i386.c:784
+#: config/tc-i386.c:799
 msgid "32bit mode not supported on this CPU."
 msgstr "el modo de 32bit no tiene soporte en este CPU."
 
-#: config/tc-i386.c:817
+#: config/tc-i386.c:832
 msgid "bad argument to syntax directive."
 msgstr "argumento erróneo para la directiva de sintaxis."
 
-#: config/tc-i386.c:869
+#: config/tc-i386.c:884
 #, c-format
 msgid "no such architecture: `%s'"
 msgstr "no hay tal arquitectura: `%s'"
 
-#: config/tc-i386.c:874
+#: config/tc-i386.c:889
 msgid "missing cpu architecture"
 msgstr "falta la arquitectura de cpu"
 
-#: config/tc-i386.c:888
+#: config/tc-i386.c:903
 #, c-format
 msgid "no such architecture modifier: `%s'"
 msgstr "no hay tal modificador de arquitectura: `%s'"
 
-#: config/tc-i386.c:904 config/tc-i386.c:5169
+#: config/tc-i386.c:919 config/tc-i386.c:5342
 msgid "Unknown architecture"
 msgstr "Arquitectura desconocida"
 
-#: config/tc-i386.c:1218
-msgid "There are no unsigned pc-relative relocations"
-msgstr "No hay reubicaciones relativas a pc sin signo"
+#: config/tc-i386.c:1247
+#, c-format
+msgid "unknown relocation (%u)"
+msgstr "reubicación desconocida (%u)"
 
-#: config/tc-i386.c:1225 config/tc-i386.c:5379
+#: config/tc-i386.c:1249
 #, c-format
-msgid "can not do %d byte pc-relative relocation"
-msgstr "no se puede hacer la reubicación relativa a pc de %d bytes"
+msgid "%u-byte relocation cannot be applied to %u-byte field"
+msgstr "la reubicación de %u-bytes no se puede aplicar al campo %u-bytes"
 
-#: config/tc-i386.c:1242
+#: config/tc-i386.c:1253
+msgid "non-pc-relative relocation for pc-relative field"
+msgstr "reubicación no relativa al para el campo relativo al pc"
+
+#: config/tc-i386.c:1258
+msgid "relocated field and relocation type differ in signedness"
+msgstr "el campo reubicado y el tipo de reubicación difieren en signo"
+
+#: config/tc-i386.c:1267
+msgid "there are no unsigned pc-relative relocations"
+msgstr "no hay reubicaciones relativas a pc sin signo"
+
+#: config/tc-i386.c:1275
 #, c-format
-msgid "can not do %s %d byte relocation"
-msgstr "no se puede hacer la reubicación %s de %d byte"
+msgid "cannot do %u byte pc-relative relocation"
+msgstr "no se puede hacer la reubicación relativa a pc de %u bytes"
 
-#: config/tc-i386.c:1438 config/tc-i386.c:2416
+#: config/tc-i386.c:1292
 #, c-format
+msgid "cannot do %s %u byte relocation"
+msgstr "no se puede hacer la reubicación %s de %u bytes"
+
+#: config/tc-i386.c:1496 config/tc-i386.c:2527
+#, c-format
 msgid "ambiguous operand size for `%s'"
 msgstr "Tamaño de operando ambiguo para `%s'"
 
-#: config/tc-i386.c:1486
+#: config/tc-i386.c:1544
 #, c-format
 msgid "can't use register '%%%s' as operand %d in '%s'."
 msgstr "no se puede utilizar el registro '%%%s' como operando %d en '%s'."
 
 #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:1515
+#: config/tc-i386.c:1573
 #, c-format
 msgid "translating to `%sp'"
 msgstr "traduciendo a `%sp'"
 
-#: config/tc-i386.c:1560
+#: config/tc-i386.c:1618
 #, c-format
 msgid "can't encode register '%%%s' in an instruction requiring REX prefix."
 msgstr "no se pueden codificar el registro '%%%s' en una instrucción que requiere el prefijo REX."
 
-#: config/tc-i386.c:1601 config/tc-i386.c:1699
+#: config/tc-i386.c:1659 config/tc-i386.c:1767
 #, c-format
 msgid "no such instruction: `%s'"
 msgstr "no hay tal instrucción: `%s'"
 
-#: config/tc-i386.c:1611 config/tc-i386.c:1731
+#: config/tc-i386.c:1670 config/tc-i386.c:1799
 #, c-format
 msgid "invalid character %s in mnemonic"
 msgstr "carácter inválido %s en el mnemónico"
 
-#: config/tc-i386.c:1618
+#: config/tc-i386.c:1677
 msgid "expecting prefix; got nothing"
 msgstr "se esperaba un prefijo; se obtuvo nada"
 
-#: config/tc-i386.c:1620
+#: config/tc-i386.c:1679
 msgid "expecting mnemonic; got nothing"
 msgstr "se esperaba un mnemónico; se obtuvo nada"
 
-#: config/tc-i386.c:1639
+#: config/tc-i386.c:1695 config/tc-i386.c:1818
 #, c-format
-msgid "redundant %s prefix"
-msgstr "prefijo %s redundante"
+msgid "`%s' is only supported in 64-bit mode"
+msgstr "`%s' sólo tiene soporte en modo de 64-bit"
 
-#: config/tc-i386.c:1749
+#: config/tc-i386.c:1696 config/tc-i386.c:1817
 #, c-format
 msgid "`%s' is not supported in 64-bit mode"
 msgstr "`%s' no tiene soporte en modo de 64-bit"
 
-#: config/tc-i386.c:1750
+#: config/tc-i386.c:1707
 #, c-format
-msgid "`%s' is only supported in 64-bit mode"
-msgstr "`%s' sólo tiene soporte en modo de 64-bit"
+msgid "redundant %s prefix"
+msgstr "prefijo %s redundante"
 
-#: config/tc-i386.c:1756
+#: config/tc-i386.c:1824
 #, c-format
 msgid "`%s' is not supported on `%s%s'"
 msgstr "`%s' no tiene soporte en `%s%s'"
 
-#: config/tc-i386.c:1763
+#: config/tc-i386.c:1831
 msgid "use .code16 to ensure correct addressing mode"
 msgstr "use .code16 para asegurar el modo de direccionamiento correcto"
 
-#: config/tc-i386.c:1770
+#: config/tc-i386.c:1844
 #, c-format
 msgid "expecting string instruction after `%s'"
 msgstr "se espera una instrucción de cadena después de `%s'"
 
-#: config/tc-i386.c:1798
+#: config/tc-i386.c:1878
 #, c-format
 msgid "invalid character %s before operand %d"
 msgstr "caracter inválido %s antes del operando %d"
 
-#: config/tc-i386.c:1812
+#: config/tc-i386.c:1892
 #, c-format
 msgid "unbalanced parenthesis in operand %d."
 msgstr "paréntesis sin balancear en el operando %d."
 
-#: config/tc-i386.c:1815
+#: config/tc-i386.c:1895
 #, c-format
 msgid "unbalanced brackets in operand %d."
 msgstr "llaves sin balancear en el operando %d."
 
-#: config/tc-i386.c:1824
+#: config/tc-i386.c:1904
 #, c-format
 msgid "invalid character %s in operand %d"
 msgstr "carácter inválido %s en el operando %d"
 
-#: config/tc-i386.c:1851
+#: config/tc-i386.c:1931
 #, c-format
 msgid "spurious operands; (%d operands/instruction max)"
 msgstr "operandos espurios; (%d operandos/instrucción máximo)"
 
-#: config/tc-i386.c:1874
+#: config/tc-i386.c:1954
 msgid "expecting operand after ','; got nothing"
 msgstr "se esperaba un operando después de ','; se obtuvo nada"
 
-#: config/tc-i386.c:1879
+#: config/tc-i386.c:1959
 msgid "expecting operand before ','; got nothing"
 msgstr "se esperaba un operando antes de ','; se obtuvo nada"
 
 #. We found no match.
-#: config/tc-i386.c:2225
+#: config/tc-i386.c:2336
 #, c-format
 msgid "suffix or operands invalid for `%s'"
 msgstr "sufijo u operandos inválidos para `%s'"
 
-#: config/tc-i386.c:2236
+#: config/tc-i386.c:2347
 #, c-format
 msgid "indirect %s without `*'"
 msgstr "%s indirecto sin `*'"
 
 #. Warn them that a data or address size prefix doesn't
 #. affect assembly of the next line of code.
-#: config/tc-i386.c:2244
+#: config/tc-i386.c:2355
 #, c-format
 msgid "stand-alone `%s' prefix"
 msgstr "prefijo `%s' por sí solo"
 
-#: config/tc-i386.c:2273 config/tc-i386.c:2288
+#: config/tc-i386.c:2384 config/tc-i386.c:2399
 #, c-format
 msgid "`%s' operand %d must use `%%es' segment"
 msgstr "`%s' operando %d debe usar el segmento `%%es'"
 
-#: config/tc-i386.c:2398
+#: config/tc-i386.c:2509
 msgid "no instruction mnemonic suffix given and no register operands; can't size instruction"
 msgstr "no se dio un sufijo mnemónico de instrucción y ningún operando de registro; no se puede determinar el tamaño de la instrucción"
 
 #. Prohibit these changes in the 64bit mode, since the
 #. lowering is more complicated.
-#: config/tc-i386.c:2499 config/tc-i386.c:2558 config/tc-i386.c:2575
-#: config/tc-i386.c:2607 config/tc-i386.c:2640
+#: config/tc-i386.c:2610 config/tc-i386.c:2669 config/tc-i386.c:2686
+#: config/tc-i386.c:2718 config/tc-i386.c:2751
 #, c-format
 msgid "Incorrect register `%%%s' used with `%c' suffix"
 msgstr "Se utilizó el registro incorrecto `%%%s' con el sufijo `%c'"
 
-#: config/tc-i386.c:2507 config/tc-i386.c:2565 config/tc-i386.c:2647
+#: config/tc-i386.c:2618 config/tc-i386.c:2676 config/tc-i386.c:2758
 #, c-format
 msgid "using `%%%s' instead of `%%%s' due to `%c' suffix"
 msgstr "utilizando `%%%s' en lugar de `%%%s' debido al sufijo `%c'"
 
-#: config/tc-i386.c:2522 config/tc-i386.c:2543 config/tc-i386.c:2594
-#: config/tc-i386.c:2625
+#: config/tc-i386.c:2633 config/tc-i386.c:2654 config/tc-i386.c:2705
+#: config/tc-i386.c:2736
 #, c-format
 msgid "`%%%s' not allowed with `%s%c'"
 msgstr "no se permite `%%%s' con `%s%c'"
 
-#: config/tc-i386.c:2688
+#: config/tc-i386.c:2799
 msgid "no instruction mnemonic suffix given; can't determine immediate size"
 msgstr "no se dio un sufijo mnemónico de instrucción; no se puede determinar el tamaño inmediato"
 
-#: config/tc-i386.c:2721
+#: config/tc-i386.c:2832
 #, c-format
 msgid "no instruction mnemonic suffix given; can't determine immediate size %x %c"
 msgstr "no se dio un sufijo mnemónico de instrucción; no se puede determinar el tamaño inmediato %x %c"
 
 #. Reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:2770
+#: config/tc-i386.c:2881
 #, c-format
 msgid "translating to `%s %%%s,%%%s'"
 msgstr "traduciendo a `%s %%%s,%%%s'"
 
 #. Extraneous `l' suffix on fp insn.
-#: config/tc-i386.c:2777
+#: config/tc-i386.c:2888
 #, c-format
 msgid "translating to `%s %%%s'"
 msgstr "traduciendo a `%s %%%s'"
 
-#: config/tc-i386.c:2795
+#: config/tc-i386.c:2906
 #, c-format
 msgid "you can't `pop %%cs'"
 msgstr "no se puede hacer `pop %%cs'"
 
-#. lea
-#: config/tc-i386.c:2814
-msgid "segment override on `lea' is ineffectual"
-msgstr "la anulación del segmento en `lea' no tiene efecto"
+#: config/tc-i386.c:2927
+#, c-format
+msgid "segment override on `%s' is ineffectual"
+msgstr "la anulación del segmento en `%s' no tiene efecto"
 
-#: config/tc-i386.c:3123 config/tc-i386.c:3217 config/tc-i386.c:3262
+#: config/tc-i386.c:3236 config/tc-i386.c:3330 config/tc-i386.c:3375
 msgid "skipping prefixes on this instruction"
 msgstr "saltando los prefijos en esta instrucción"
 
-#: config/tc-i386.c:3282
+#: config/tc-i386.c:3395
 msgid "16-bit jump out of range"
 msgstr "salto de 16-bit fuera de rango"
 
-#: config/tc-i386.c:3291
+#: config/tc-i386.c:3404
 #, c-format
 msgid "can't handle non absolute segment in `%s'"
 msgstr "no se puede manejar un segmento no absoluto en `%s'"
 
-#: config/tc-i386.c:3749
+#: config/tc-i386.c:3897
 #, c-format
-msgid "@%s reloc is not supported in %s bit mode"
-msgstr "las reubicaciones @%s no tienen soporte en modo de %s bits"
+msgid "@%s reloc is not supported with %d-bit output format"
+msgstr "las reubicaciones @%s no tienen soporte con el formato de salida de %d bits"
 
-#: config/tc-i386.c:3867
+#: config/tc-i386.c:3986
 msgid "only 1 or 2 immediate operands are allowed"
 msgstr "sólo se permiten 1 ó dos operandos inmediatos"
 
-#: config/tc-i386.c:3890 config/tc-i386.c:4071
+#: config/tc-i386.c:4007 config/tc-i386.c:4218
 #, c-format
 msgid "junk `%s' after expression"
 msgstr "basura `%s' después de la expresión"
 
 #. Missing or bad expr becomes absolute 0.
-#: config/tc-i386.c:3901
+#: config/tc-i386.c:4016
 #, c-format
 msgid "missing or invalid immediate expression `%s' taken as 0"
 msgstr "la expresión inmediata faltante o inválida `%s' se toma como 0"
 
-#: config/tc-i386.c:3926 config/tc-i386.c:4129
+#: config/tc-i386.c:4041 config/tc-i386.c:4277
 #, c-format
 msgid "unimplemented segment %s in operand"
 msgstr "segmento %s sin implementar en el operando"
 
-#: config/tc-i386.c:3968 config/tc-i386.c:6264
+#: config/tc-i386.c:4088
 #, c-format
 msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
 msgstr "se esperaba un factor de escala de 1, 2, 4, u 8: se obtuvo `%s'"
 
-#: config/tc-i386.c:3975
+#: config/tc-i386.c:4097
 #, c-format
 msgid "scale factor of %d without an index register"
 msgstr "factor de escala de %d sin un registro índice"
 
-#: config/tc-i386.c:4090
+#: config/tc-i386.c:4236
 #, c-format
 msgid "bad expression used with @%s"
 msgstr "se utilizó una expresión errónea con @%s"
 
-#: config/tc-i386.c:4213
+#: config/tc-i386.c:4386
 #, c-format
 msgid "`%s' is not a valid base/index expression"
 msgstr "`%s' no es una expresión base/índice válida"
 
-#: config/tc-i386.c:4217
+#: config/tc-i386.c:4390
 #, c-format
 msgid "`%s' is not a valid %s bit base/index expression"
 msgstr "`%s' no es una expresión de %s bit base/índice válida"
 
-#: config/tc-i386.c:4291
+#: config/tc-i386.c:4464
 #, c-format
 msgid "bad memory operand `%s'"
 msgstr "operando de memoria `%s' erróneo"
 
-#: config/tc-i386.c:4306
+#: config/tc-i386.c:4479
 #, c-format
 msgid "junk `%s' after register"
 msgstr "basura `%s' después del registro"
 
-#: config/tc-i386.c:4315 config/tc-i386.c:4430 config/tc-i386.c:4468
+#: config/tc-i386.c:4488 config/tc-i386.c:4603 config/tc-i386.c:4641
 #, c-format
 msgid "bad register name `%s'"
 msgstr "nombre de registro `%s' erróneo"
 
-#: config/tc-i386.c:4323
+#: config/tc-i386.c:4496
 msgid "immediate operand illegal with absolute jump"
 msgstr "operando inmediato ilegal con salto absoluto"
 
-#: config/tc-i386.c:4345
+#: config/tc-i386.c:4518
 #, c-format
 msgid "too many memory references for `%s'"
 msgstr "demasiadas referencias a memoria para `%s'"
 
-#: config/tc-i386.c:4423
+#: config/tc-i386.c:4596
 #, c-format
 msgid "expecting `,' or `)' after index register in `%s'"
 msgstr "se esperaba `,' ó `)' después del registro índice en `%s'"
 
-#: config/tc-i386.c:4447
+#: config/tc-i386.c:4620
 #, c-format
 msgid "expecting `)' after scale factor in `%s'"
 msgstr "se esperaba `)' después del factor de escala en `%s'"
 
-#: config/tc-i386.c:4454
+#: config/tc-i386.c:4627
 #, c-format
 msgid "expecting index register or scale factor after `,'; got '%c'"
 msgstr "se esperaba un registro índice o un factor de escala después de `,'; se obtuvo '%c'"
 
-#: config/tc-i386.c:4461
+#: config/tc-i386.c:4634
 #, c-format
 msgid "expecting `,' or `)' after base register in `%s'"
 msgstr "se esperaba `,' ó `)' después del registro base en `%s'"
 
 #. It's not a memory operand; argh!
-#: config/tc-i386.c:4502
+#: config/tc-i386.c:4675
 #, c-format
 msgid "invalid char %s beginning operand %d `%s'"
 msgstr "caracter inválido %s al inicio del operando %d `%s'"
 
-#: config/tc-i386.c:4677
+#: config/tc-i386.c:4850
 msgid "long jump required"
 msgstr "se requiere un salto largo"
 
-#: config/tc-i386.c:4954
+#: config/tc-i386.c:5127
 msgid "Bad call to md_atof ()"
 msgstr "Llamada errónea a md_atof ()"
 
-#: config/tc-i386.c:5121
+#: config/tc-i386.c:5294
 msgid "No compiled in support for x86_64"
 msgstr "No se compiló el soporte para x86_64"
 
-#: config/tc-i386.c:5142
+#: config/tc-i386.c:5315
 #, c-format
 msgid ""
 "  -Q                      ignored\n"
@@ -5099,7 +4893,7 @@
 "  -q                      omite algunos avisos\n"
 "  -s                      ignorado\n"
 
-#: config/tc-i386.c:5150
+#: config/tc-i386.c:5323
 #, c-format
 msgid ""
 "  -n                      Do not optimize code alignment\n"
@@ -5108,72 +4902,120 @@
 "  -n                      No optimiza la alineación de código\n"
 "  -q                      omite algunos avisos\n"
 
-#: config/tc-i386.c:5250 config/tc-s390.c:1826
+#: config/tc-i386.c:5425 config/tc-s390.c:1861
 msgid "GOT already in symbol table"
 msgstr "GOT ya está en la tabla de símbolos"
 
-#: config/tc-i386.c:5394
+#: config/tc-i386.c:5568
 #, c-format
+msgid "can not do %d byte pc-relative relocation"
+msgstr "no se puede hacer la reubicación relativa a pc de %d bytes"
+
+#: config/tc-i386.c:5586
+#, c-format
 msgid "can not do %d byte relocation"
 msgstr "no se puede hacer la reubicación de %d bytes"
 
-#: config/tc-i386.c:5463 config/tc-s390.c:2272
+#: config/tc-i386.c:5657 config/tc-s390.c:2307
 #, c-format
 msgid "cannot represent relocation type %s"
 msgstr "no se puede representar el tipo de reubicación %s"
 
-#: config/tc-i386.c:5709
+#: config/tc-i386.c:5912
 #, c-format
 msgid "invalid operand for '%s' ('%s' unexpected)"
 msgstr "operando inválido para '%s' ('%s' inesperado)"
 
-#: config/tc-i386.c:5721
+#: config/tc-i386.c:5924
 #, c-format
 msgid "too many memory references for '%s'"
 msgstr "demasiadas referencias a memoria para '%s'"
 
-#: config/tc-i386.c:5996
+#. See the comments in intel_bracket_expr.
+#: config/tc-i386.c:5935
 #, c-format
+msgid "Treating `%s' as memory reference"
+msgstr "Se trata `%s' como una referencia de memoria"
+
+#: config/tc-i386.c:6247
+#, c-format
 msgid "Unknown operand modifier `%s'"
 msgstr "Modificador de operando `%s' desconocido"
 
-#: config/tc-i386.c:6006
+#: config/tc-i386.c:6262
 msgid "Conflicting operand modifiers"
 msgstr "Modificadores de operando en conflicto"
 
-#: config/tc-i386.c:6236
+#: config/tc-i386.c:6311
+msgid "Invalid operand to `OFFSET'"
+msgstr "Operando inválido para `OFFSET'"
+
+#: config/tc-i386.c:6384
 #, c-format
+msgid "`[%.*s]' taken to mean just `%.*s'"
+msgstr "se toma `[%.*s]' y sólo signifiqua `%.*s'"
+
+#: config/tc-i386.c:6474
+#, c-format
 msgid "`%s' is not a valid segment register"
 msgstr "`%s' no es un registro de segmento válido"
 
-#: config/tc-i386.c:6246 config/tc-i386.c:6373
-msgid "Register scaling only allowed in memory operands."
-msgstr "El escalamiento de registros sólo se permite en operandos de memoria."
+#: config/tc-i386.c:6478
+msgid "Extra segment override ignored"
+msgstr "Se ignora la sobreescritura de segmento extra"
 
-#: config/tc-i386.c:6277
-msgid "Too many register references in memory operand."
-msgstr "Demasiadas referencias a registros en un operando de memoria."
+#: config/tc-i386.c:6512 config/tc-i386.c:6681
+msgid "Register scaling only allowed in memory operands"
+msgstr "El escalamiento de registros sólo se permite en operandos de memoria"
 
-#: config/tc-i386.c:6352
+#: config/tc-i386.c:6534 config/tc-i386.c:6658
 #, c-format
-msgid "Syntax error. Expecting a constant. Got `%s'."
-msgstr "Error sintáctico. Se esperaba una constante. Se obtuvo `%s'."
+msgid "Syntax error: Expecting a constant, got `%s'"
+msgstr "Error sintáctico: Se esperaba una constante, se obtuvo `%s'"
 
-#: config/tc-i386.c:6422
+#: config/tc-i386.c:6562
+msgid "Too many register references in memory operand"
+msgstr "Demasiadas referencias a registros en un operando de memoria"
+
+#: config/tc-i386.c:6573
+msgid "Using register names in OFFSET expressions is deprecated"
+msgstr "El uso de nombres de registro en expresiones OFFSET es obsoleto"
+
+#: config/tc-i386.c:6586
+msgid "Invalid use of register"
+msgstr "Uso inválido de registro"
+
+#: config/tc-i386.c:6731
 #, c-format
 msgid "Unrecognized token '%s'"
 msgstr "Elemento '%s' no reconocido"
 
-#: config/tc-i386.c:6439
+#: config/tc-i386.c:6748
 #, c-format
 msgid "Unexpected token `%s'"
 msgstr "Elemento `%s' inesperado"
 
-#: config/tc-i386.c:6622
+#: config/tc-i386.c:6910
+msgid "`:' expected"
+msgstr "se esperaba `:'"
+
+#: config/tc-i386.c:6935
 #, c-format
 msgid "Unrecognized token `%s'"
 msgstr "Elemento `%s' no reconocido"
 
+#: config/tc-i386.c:7070
+msgid "Bad .section directive: want a,l,w,x,M,S,G,T in string"
+msgstr "Directiva .section errónea: se quiere a,l,w,x,M,S,G,T en la cadena"
+
+#: config/tc-i386.c:7073
+msgid "Bad .section directive: want a,w,x,M,S,G,T in string"
+msgstr "Directiva .section errónea: se quiere a,w,x,M,S,G,T en la cadena"
+
+#: config/tc-i386.c:7092
+msgid ".largecomm supported only in 64bit mode, producing .comm"
+msgstr ".largecomm sólo tiene soporte en modo de 64bit, se produce .comm"
+
 #: config/tc-i860.c:124
 msgid "Directive .dual available only with -mintel-syntax option"
 msgstr "La directiva .dual sólo está disponible con la opción -mintel-syntax"
@@ -5190,7 +5032,7 @@
 msgid "Unknown temporary pseudo register"
 msgstr "Pseudo registro temporal desconocido"
 
-#: config/tc-i860.c:229 config/tc-mips.c:1149
+#: config/tc-i860.c:229 config/tc-mips.c:1412
 #, c-format
 msgid "internal error: can't hash `%s': %s\n"
 msgstr "error interno: no se puede dispersar `%s': %s\n"
@@ -5199,6 +5041,11 @@
 msgid "Defective assembler.  No assembly attempted."
 msgstr "Ensamblador defectuoso.  No se intentó ensamblar."
 
+#: config/tc-i860.c:395 config/tc-i860.c:940 config/tc-m68k.c:3443
+#: config/tc-m68k.c:3475 config/tc-sparc.c:2657
+msgid "failed sanity check."
+msgstr "falló la prueba de sanidad."
+
 #: config/tc-i860.c:402
 #, c-format
 msgid "Expanded opcode after delayed branch: `%s'"
@@ -5238,10 +5085,6 @@
 msgid "Prefix 'd.' invalid for instruction `%s'"
 msgstr "Prefijo 'd.' inválido para la instrucción `%s'"
 
-#: config/tc-i860.c:1005 config/tc-sparc.c:2845
-msgid "bad segment"
-msgstr "segmento erróneo"
-
 #: config/tc-i860.c:1088
 msgid "i860_estimate_size_before_relax\n"
 msgstr "i860_estimate_size_before_relax\n"
@@ -5304,46 +5147,99 @@
 msgid "Unrecognized fix-up (0x%08lx)"
 msgstr "Compostura no reconocida (0x%08lx)"
 
-#: config/tc-i860.h:80
+#: config/tc-i860.h:76
 msgid "i860_convert_frag\n"
 msgstr "i860_convert_frag\n"
 
-#: config/tc-i960.c:574
+#: config/tc-i960.c:488
 #, c-format
 msgid "Hashing returned \"%s\"."
 msgstr "La dispersión devolvió \"%s\"."
 
-#. Offset of last character in opcode mnemonic
-#: config/tc-i960.c:608
+#: config/tc-i960.c:584 config/tc-i960.c:1114
+msgid "expression syntax error"
+msgstr "error sintáctico en la expresión"
+
+#: config/tc-i960.c:620
+msgid "attempt to branch into different segment"
+msgstr "se intentó ramificar en un segmento diferente"
+
+#: config/tc-i960.c:624
+#, c-format
+msgid "target of %s instruction must be a label"
+msgstr "el objetivo de la instrucción %s debe ser una etiqueta"
+
+#: config/tc-i960.c:734
+msgid "unaligned register"
+msgstr "registro sin alinear"
+
+#: config/tc-i960.c:756
+msgid "no such sfr in this architecture"
+msgstr "no hay un sfr en esta arquitectura"
+
+#: config/tc-i960.c:794
+msgid "illegal literal"
+msgstr "literal ilegal"
+
+#: config/tc-i960.c:837
+msgid "unmatched '['"
+msgstr "'[' desemparejado"
+
+#: config/tc-i960.c:844
+msgid "garbage after index spec ignored"
+msgstr "se ignora la basura después de la especificación del índice"
+
+#: config/tc-i960.c:944
+msgid "invalid index register"
+msgstr "registro índice inválido"
+
+#: config/tc-i960.c:967
+msgid "invalid scale factor"
+msgstr "factor de escala inválido"
+
+#: config/tc-i960.c:1191
+msgid "architecture of opcode conflicts with that of earlier instruction(s)"
+msgstr "la arquitectura del código de operación tiene conflictos con alguno de una(s) instrucción(es) anterior(es)"
+
+#: config/tc-i960.c:1425 config/tc-xtensa.c:11295
+msgid "too many operands"
+msgstr "demasiados operandos"
+
+#. We never moved: there was no opcode either!
+#: config/tc-i960.c:1473
+msgid "missing opcode"
+msgstr "falta el código de operación"
+
+#: config/tc-i960.c:1613
 msgid "branch prediction invalid on this opcode"
 msgstr "predicción de ramificación inválida en este código de operación"
 
-#: config/tc-i960.c:648
+#: config/tc-i960.c:1651
 #, c-format
 msgid "invalid opcode, \"%s\"."
 msgstr "código de operación inválido, \"%s\"."
 
-#: config/tc-i960.c:653
+#: config/tc-i960.c:1653
 #, c-format
 msgid "improper number of operands.  expecting %d, got %d"
 msgstr "número impropio de operandos.  se esperaban %d, se obtuvieron %d"
 
-#: config/tc-i960.c:877
+#: config/tc-i960.c:1810
 #, c-format
 msgid "Fixup of %ld too large for field width of %d"
 msgstr "La compostura de %ld es demasiado grande para el campo de anchura %d"
 
-#: config/tc-i960.c:994
+#: config/tc-i960.c:1920
 #, c-format
 msgid "invalid architecture %s"
 msgstr "arquitectura %s inválida"
 
-#: config/tc-i960.c:1014
+#: config/tc-i960.c:1940
 #, c-format
 msgid "I960 options:\n"
 msgstr "opciones de I960:\n"
 
-#: config/tc-i960.c:1017
+#: config/tc-i960.c:1943
 #, c-format
 msgid ""
 "\n"
@@ -5362,208 +5258,153 @@
 "-no-relax\t\tno alterar las instrucciones comparar-y-ramificar para\n"
 "\t\t\tdesubicaciones largas\n"
 
-#: config/tc-i960.c:1424 config/tc-xtensa.c:11516
-msgid "too many operands"
-msgstr "demasiados operandos"
-
-#: config/tc-i960.c:1482 config/tc-i960.c:1707
-msgid "expression syntax error"
-msgstr "error sintáctico en la expresión"
-
-#: config/tc-i960.c:1520
-msgid "attempt to branch into different segment"
-msgstr "se intentó ramificar en un segmento diferente"
-
-#: config/tc-i960.c:1524
-#, c-format
-msgid "target of %s instruction must be a label"
-msgstr "el objetivo de la instrucción %s debe ser una etiqueta"
-
-#: config/tc-i960.c:1562
-msgid "unmatched '['"
-msgstr "'[' desemparejado"
-
-#: config/tc-i960.c:1573
-msgid "garbage after index spec ignored"
-msgstr "se ignora la basura después de la especificación del índice"
-
-#. We never moved: there was no opcode either!
-#: config/tc-i960.c:1638
-msgid "missing opcode"
-msgstr "falta el código de operación"
-
-#: config/tc-i960.c:2051
-msgid "invalid index register"
-msgstr "registro índice inválido"
-
-#: config/tc-i960.c:2074
-msgid "invalid scale factor"
-msgstr "factor de escala inválido"
-
-#: config/tc-i960.c:2255
-msgid "unaligned register"
-msgstr "registro sin alinear"
-
-#: config/tc-i960.c:2278
-msgid "no such sfr in this architecture"
-msgstr "no hay un sfr en esta arquitectura"
-
-#: config/tc-i960.c:2316
-msgid "illegal literal"
-msgstr "literal ilegal"
-
-#. Should not happen: see block comment above
-#: config/tc-i960.c:2544
-#, c-format
-msgid "Trying to 'bal' to %s"
-msgstr "Tratando de hacer 'bal' a %s"
-
-#: config/tc-i960.c:2555
-msgid "Looks like a proc, but can't tell what kind.\n"
-msgstr "Se ve como un proc, no se puede saber de qué tipo.\n"
-
-#: config/tc-i960.c:2587
+#: config/tc-i960.c:2207
 msgid "should have 1 or 2 operands"
 msgstr "debe tener 1 o 2 operandos"
 
-#: config/tc-i960.c:2596 config/tc-i960.c:2615
+#: config/tc-i960.c:2215 config/tc-i960.c:2230
 #, c-format
 msgid "Redefining leafproc %s"
 msgstr "Redefiniendo el proceso hoja %s"
 
-#: config/tc-i960.c:2646
+#: config/tc-i960.c:2260
 msgid "should have two operands"
 msgstr "debe tener dos operandos"
 
-#: config/tc-i960.c:2656
+#: config/tc-i960.c:2270
 msgid "'entry_num' must be absolute number in [0,31]"
 msgstr "'entry_num' debe ser un número absoluto en [0,31]"
 
-#: config/tc-i960.c:2665
+#: config/tc-i960.c:2278
 #, c-format
 msgid "Redefining entrynum for sysproc %s"
 msgstr "Redefiniendo el número de entrada para el proceso del sistema %s"
 
-#: config/tc-i960.c:2769
-msgid "architecture of opcode conflicts with that of earlier instruction(s)"
-msgstr "la arquitectura del código de operación tiene conflictos con alguno de una(s) instrucción(es) anterior(es)"
+#. Should not happen: see block comment above.
+#: config/tc-i960.c:2378
+#, c-format
+msgid "Trying to 'bal' to %s"
+msgstr "Tratando de hacer 'bal' a %s"
 
-#: config/tc-i960.c:2790
+#: config/tc-i960.c:2388
+msgid "Looks like a proc, but can't tell what kind.\n"
+msgstr "Se ve como un proc, no se puede saber de qué tipo.\n"
+
+#: config/tc-i960.c:2407
 msgid "big endian mode is not supported"
 msgstr "el modo big endian no tiene soporte"
 
-#: config/tc-i960.c:2792
+#: config/tc-i960.c:2409
 #, c-format
 msgid "ignoring unrecognized .endian type `%s'"
 msgstr "se ignora el tipo .endian `%s' no reconocido"
 
-#: config/tc-i960.c:3076
-#, c-format
-msgid "leafproc symbol '%s' undefined"
-msgstr "símolo de proceso hoja '%s' indefinido"
+#: config/tc-i960.c:2454
+msgid "can't use COBR format with external label"
+msgstr "no se puede utilizar el formato COBR con una etiqueta externa"
 
-#: config/tc-i960.c:3086
-#, c-format
-msgid "Warning: making leafproc entries %s and %s both global\n"
-msgstr "Aviso: haciendo globales las entradas de proceso hoja %s y %s\n"
-
-#: config/tc-i960.c:3191
+#: config/tc-i960.c:2629
 msgid "option --link-relax is only supported in b.out format"
 msgstr "la opción --link-relax solamente tiene soporte en el formato b.out"
 
-#: config/tc-ia64.c:982
+#: config/tc-i960.c:2656
+#, c-format
+msgid "No 'bal' entry point for leafproc %s"
+msgstr "No hay un punto de entrada 'bal' para el proceso hoja %s"
+
+#: config/tc-ia64.c:1008
 msgid "Bad .section directive: want a,o,s,w,x,M,S,G,T in string"
 msgstr "Directiva .section errónea: se quiere a,o,s,w,x,M,S,G,T en la cadena"
 
-#: config/tc-ia64.c:1119
+#: config/tc-ia64.c:1151
 msgid "Unwind directive not followed by an instruction."
 msgstr "La directiva de desenredo no está seguida por una instrucción."
 
-#: config/tc-ia64.c:4930
+#: config/tc-ia64.c:5114
 msgid "Register name expected"
 msgstr "Se esperaba un nombre de registro"
 
-#: config/tc-ia64.c:4935 config/tc-ia64.c:5251
+#: config/tc-ia64.c:5119 config/tc-ia64.c:5435
 msgid "Comma expected"
 msgstr "Se esperaba una coma"
 
-#: config/tc-ia64.c:4943
+#: config/tc-ia64.c:5127
 msgid "Register value annotation ignored"
 msgstr "Se ignora la anotación del valor del registro"
 
-#: config/tc-ia64.c:4984
+#: config/tc-ia64.c:5168
 msgid "Directive invalid within a bundle"
 msgstr "Directiva inválida dentro de una agrupación"
 
-#: config/tc-ia64.c:5077
+#: config/tc-ia64.c:5261
 msgid "Missing predicate relation type"
 msgstr "Falta el tipo de relación del predicado"
 
-#: config/tc-ia64.c:5083
+#: config/tc-ia64.c:5267
 msgid "Unrecognized predicate relation type"
 msgstr "Tipo de relación de predicado no reconocido"
 
-#: config/tc-ia64.c:5130
+#: config/tc-ia64.c:5314
 msgid "Bad register range"
 msgstr "Rango de registro erróneo"
 
-#: config/tc-ia64.c:5139
+#: config/tc-ia64.c:5323
 msgid "Predicate register expected"
 msgstr "Se esperaba un registro de predicado"
 
-#: config/tc-ia64.c:5144
+#: config/tc-ia64.c:5328
 msgid "Duplicate predicate register ignored"
 msgstr "Se ignora el registro de predicado duplicado"
 
-#: config/tc-ia64.c:5162
+#: config/tc-ia64.c:5346
 msgid "Predicate source and target required"
 msgstr "Se requiere el predicado fuente y destino"
 
-#: config/tc-ia64.c:5164 config/tc-ia64.c:5176
+#: config/tc-ia64.c:5348 config/tc-ia64.c:5360
 msgid "Use of p0 is not valid in this context"
 msgstr "El uso de p0 no es válido en este contexto"
 
-#: config/tc-ia64.c:5171
+#: config/tc-ia64.c:5355
 msgid "At least two PR arguments expected"
 msgstr "Se esperaban al menos dos argumentos PR"
 
-#: config/tc-ia64.c:5185
+#: config/tc-ia64.c:5369
 msgid "At least one PR argument expected"
 msgstr "Se esperaba al menos un argumento PR"
 
-#: config/tc-ia64.c:5221
+#: config/tc-ia64.c:5405
 #, c-format
 msgid "Inserting \"%s\" into entry hint table failed: %s"
 msgstr "Falló la inserción de \"%s\" en la tabla de entrada de pistas: %s"
 
 #. FIXME -- need 62-bit relocation type
-#: config/tc-ia64.c:5697
+#: config/tc-ia64.c:5881
 msgid "62-bit relocation not yet implemented"
 msgstr "la reubicación de 62-bits aún no está implementada"
 
 #. XXX technically, this is wrong: we should not be issuing warning
 #. messages until we're sure this instruction pattern is going to
 #. be used!
-#: config/tc-ia64.c:5770
+#: config/tc-ia64.c:5954
 msgid "lower 16 bits of mask ignored"
 msgstr "se ignoran los 16 bits inferiores de la máscara"
 
-#: config/tc-ia64.c:6389
+#: config/tc-ia64.c:6569
 msgid "Value truncated to 62 bits"
 msgstr "Valor truncado a 62 bits"
 
 #. Give an error if a frag containing code is not aligned to a 16 byte
 #. boundary.
-#: config/tc-ia64.c:6527 config/tc-ia64.h:171
+#: config/tc-ia64.c:6707 config/tc-ia64.h:171
 msgid "instruction address is not a multiple of 16"
 msgstr "la dirección de la instrucción no es un múltiplo de 16"
 
-#: config/tc-ia64.c:7049
+#: config/tc-ia64.c:7249
 #, c-format
 msgid "Unrecognized option '-x%s'"
 msgstr "Opción '-x%s' no reconocida"
 
-#: config/tc-ia64.c:7077
+#: config/tc-ia64.c:7277
 msgid ""
 "IA-64 options:\n"
 "  --mconstant-gp\t  mark output file as using the constant-GP model\n"
@@ -5573,6 +5414,8 @@
 "\t\t\t  EF_IA_64_NOFUNCDESC_CONS_GP)\n"
 "  -milp32|-milp64|-mlp64|-mp64\tselect data model (default -mlp64)\n"
 "  -mle | -mbe\t\t  select little- or big-endian byte order (default -mle)\n"
+"  -mtune=[itanium1|itanium2]\n"
+"\t\t\t  tune for a specific CPU (default -mtune=itanium2)\n"
 "  -munwind-check=[warning|error]\n"
 "\t\t\t  unwind directive check (default -munwind-check=warning)\n"
 "  -mhint.b=[ok|warning|error]\n"
@@ -5598,6 +5441,9 @@
 "                              \t(-mlp64 por defecto)\n"
 "  -mle | -mbe\t\t  selecciona el orden de bytes little- o big-endian\n"
 "             \t\t  (-mle por defecto)\n"
+"  -mtune=[itanium1|itanium2]\n"
+"\t\t\t  optimiza para un CPU específico\n"
+"\t\t\t  (por defecto -mtune=itanium2)\n"
 "  -munwind-check=[warning|error]\n"
 "\t\t\t  revisión de directiva de desenredo\n"
 "\t\t\t  (-munwind-check=warning por defecto)\n"
@@ -5614,343 +5460,349 @@
 "  -xdebugx\t\t  depura el revisor de violaciones de dependencias y\n"
 "\t\t\t  activa la revisión de violaciones de dependencias\n"
 
-#: config/tc-ia64.c:7105
+#: config/tc-ia64.c:7307
 msgid "--gstabs is not supported for ia64"
 msgstr "--gstabs no tiene soporte para ia64"
 
-#: config/tc-ia64.c:7408 config/tc-mips.c:1138
+#: config/tc-ia64.c:7641 config/tc-mips.c:1401
 msgid "Could not set architecture and machine"
 msgstr "No se pueden establecer la arquitectura y la máquina"
 
-#: config/tc-ia64.c:7524
+#: config/tc-ia64.c:7767
 msgid "Explicit stops are ignored in auto mode"
 msgstr "Se ignoran las paradas explícitas en modo automático"
 
-#: config/tc-ia64.c:7576
+#: config/tc-ia64.c:7789
 msgid "Found '{' after explicit switch to automatic mode"
 msgstr "Se encontró '{' después del cambio explícito al modo automático"
 
-#: config/tc-ia64.c:8142
+#: config/tc-ia64.c:8392
 #, c-format
 msgid "Unhandled dependency %s for %s (%s), note %d"
 msgstr "Dependencia sin manejar %s para %s (%s), nota %d"
 
-#: config/tc-ia64.c:9417
+#: config/tc-ia64.c:9667
 #, c-format
 msgid "Unrecognized dependency specifier %d\n"
 msgstr "Especificador de dependencia %d no reconocido\n"
 
-#: config/tc-ia64.c:10311
+#: config/tc-ia64.c:10561
 msgid "Only the first path encountering the conflict is reported"
 msgstr "Solamente se reporta la primera ruta donde se encuentra el conflicto"
 
-#: config/tc-ia64.c:10314
+#: config/tc-ia64.c:10564
 msgid "This is the location of the conflicting usage"
 msgstr "Esta es la ubicación del uso conflictivo"
 
-#: config/tc-ia64.c:11528
+#: config/tc-ia64.c:11788
 msgid "Can't add stop bit to mark end of instruction group"
 msgstr "No se puede agregar el bit de parada para marcar el fin del grupo de instrucciones"
 
-#: config/tc-ia64.c:11628 read.c:1411 read.c:2176 read.c:2772
+#: config/tc-ia64.c:11888 read.c:1440 read.c:2206 read.c:2846 read.c:3173
+#: read.c:3204
 msgid "expected symbol name"
 msgstr "se esperaba un nombre de símbolo"
 
-#: config/tc-ia64.c:11638 read.c:2186 read.c:2782 stabs.c:471
+#: config/tc-ia64.c:11898 read.c:2216 read.c:2856 read.c:3188 stabs.c:466
 #, c-format
 msgid "expected comma after \"%s\""
 msgstr "se esperaba una coma después de \"%s\""
 
-#: config/tc-ia64.c:11680
+#: config/tc-ia64.c:11940
 #, c-format
 msgid "`%s' is already the alias of %s `%s'"
 msgstr "el símbolo `%s' ya es el alias de %s `%s'"
 
-#: config/tc-ia64.c:11690
+#: config/tc-ia64.c:11950
 #, c-format
 msgid "%s `%s' already has an alias `%s'"
 msgstr "%s `%s' ya tiene un alias `%s'"
 
-#: config/tc-ia64.c:11701
+#: config/tc-ia64.c:11961
 #, c-format
 msgid "inserting \"%s\" into %s alias hash table failed: %s"
 msgstr "falló la inserción de \"%s\" en la tabla de dispersión de alias %s: %s"
 
-#: config/tc-ia64.c:11709
+#: config/tc-ia64.c:11969
 #, c-format
 msgid "inserting \"%s\" into %s name hash table failed: %s"
 msgstr "falló la inserción de \"%s\" en la tabla de dispersión de nombres %s: %s"
 
-#: config/tc-ia64.c:11728
+#: config/tc-ia64.c:11988
 #, c-format
 msgid "symbol `%s' aliased to `%s' is not used"
 msgstr "el símbolo `%s' que es alias de `%s' no se utiliza"
 
-#: config/tc-ia64.c:11750
+#: config/tc-ia64.c:12010
 #, c-format
 msgid "section `%s' aliased to `%s' is not used"
 msgstr "la sección `%s' que es alias de `%s' no se utiliza"
 
-#: config/tc-ip2k.c:123
+#: config/tc-ip2k.c:158
 #, c-format
 msgid "IP2K specific command line options:\n"
 msgstr "Opciones de la línea de comandos específicas de IP2K:\n"
 
-#: config/tc-ip2k.c:124
+#: config/tc-ip2k.c:159
 #, c-format
 msgid "  -mip2022               restrict to IP2022 insns \n"
 msgstr "  -mip2022               restringe a insns de IP2022 \n"
 
-#: config/tc-ip2k.c:125
+#: config/tc-ip2k.c:160
 #, c-format
 msgid "  -mip2022ext            permit extended IP2022 insn\n"
 msgstr "  -mip2022ext            permite insns extendidas de IP2022\n"
 
-#: config/tc-ip2k.c:246
+#: config/tc-ip2k.c:274
 msgid "md_pcrel_from\n"
 msgstr "md_pcrel_from\n"
 
+#: config/tc-m32c.c:128
+#, c-format
+msgid " M32C specific command line options:\n"
+msgstr "Opciones de la línea de comandos específicas de M32C:\n"
+
 #. Pretend that we do not recognise this option.
-#: config/tc-m32r.c:334
+#: config/tc-m32r.c:332
 msgid "Unrecognised option: -hidden"
 msgstr "Opción no reconocida: -hidden"
 
-#: config/tc-m32r.c:361 config/tc-sparc.c:596
+#: config/tc-m32r.c:359 config/tc-sparc.c:593
 msgid "Unrecognized option following -K"
 msgstr "Opción no reconocida a continuación de -K"
 
-#: config/tc-m32r.c:377
+#: config/tc-m32r.c:374
 #, c-format
 msgid " M32R specific command line options:\n"
 msgstr "Opciones de la línea de comandos específicas de M32R:\n"
 
-#: config/tc-m32r.c:379
+#: config/tc-m32r.c:376
 #, c-format
 msgid "  -m32r                   disable support for the m32rx instruction set\n"
 msgstr "  -m32r                   desactiva el soporte para el conjunto de instrucciones m32rx\n"
 
-#: config/tc-m32r.c:381
+#: config/tc-m32r.c:378
 #, c-format
 msgid "  -m32rx                  support the extended m32rx instruction set\n"
 msgstr "  -m32rx                  da soporte al conjunto extendido de instrucciones m32rx\n"
 
-#: config/tc-m32r.c:383
+#: config/tc-m32r.c:380
 #, c-format
 msgid "  -m32r2                  support the extended m32r2 instruction set\n"
 msgstr "  -m32r2                  da soporte al conjunto extendido de instrucciones m32r2\n"
 
-#: config/tc-m32r.c:385
+#: config/tc-m32r.c:382
 #, c-format
 msgid "  -EL,-little             produce little endian code and data\n"
 msgstr "  -EL,-little             produce código y datos little endian\n"
 
-#: config/tc-m32r.c:387
+#: config/tc-m32r.c:384
 #, c-format
 msgid "  -EB,-big                produce big endian code and data\n"
 msgstr "  -EB,-big                produce código y datos big endian\n"
 
-#: config/tc-m32r.c:389
+#: config/tc-m32r.c:386
 #, c-format
 msgid "  -parallel               try to combine instructions in parallel\n"
 msgstr "  -parallel               intenta combinar instrucciones en paralelo\n"
 
-#: config/tc-m32r.c:391
+#: config/tc-m32r.c:388
 #, c-format
 msgid "  -no-parallel            disable -parallel\n"
 msgstr "  -no-parallel            desactiva -parallel.\n"
 
-#: config/tc-m32r.c:393
+#: config/tc-m32r.c:390
 #, c-format
 msgid "  -no-bitinst             disallow the M32R2's extended bit-field instructions\n"
 msgstr "  -no-bitinst             desactiva las instrucciones extendidas de campos de bit de M32R2\n"
 
-#: config/tc-m32r.c:395
+#: config/tc-m32r.c:392
 #, c-format
 msgid "  -O                      try to optimize code.  Implies -parallel\n"
 msgstr "  -O                      intenta optimizar código.  Implica -parallel\n"
 
-#: config/tc-m32r.c:398
+#: config/tc-m32r.c:395
 #, c-format
 msgid "  -warn-explicit-parallel-conflicts     warn when parallel instructions\n"
 msgstr "  -warn-explicit-parallel-conflicts     avisa cuando hay instrucciones paralelas\n"
 
-#: config/tc-m32r.c:400
+#: config/tc-m32r.c:397
 #, c-format
 msgid "                                         might violate contraints\n"
 msgstr "                                         que pueden violar las restricciones\n"
 
-#: config/tc-m32r.c:402
+#: config/tc-m32r.c:399
 #, c-format
 msgid "  -no-warn-explicit-parallel-conflicts  do not warn when parallel\n"
 msgstr "  -no-warn-explicit-parallel-conflicts  no avisa cuando las instrucciones\n"
 
-#: config/tc-m32r.c:404
+#: config/tc-m32r.c:401
 #, c-format
 msgid "                                         instructions might violate contraints\n"
 msgstr "                                         paralelas pueden violar restricciones\n"
 
-#: config/tc-m32r.c:406
+#: config/tc-m32r.c:403
 #, c-format
 msgid "  -Wp                     synonym for -warn-explicit-parallel-conflicts\n"
 msgstr "  -Wp                     sinónimo para -warn-explicit-parallel-conflicts\n"
 
-#: config/tc-m32r.c:408
+#: config/tc-m32r.c:405
 #, c-format
 msgid "  -Wnp                    synonym for -no-warn-explicit-parallel-conflicts\n"
 msgstr "  -Wnp                    sinónimo para -no-warn-explicit-parallel-conflicts\n"
 
-#: config/tc-m32r.c:410
+#: config/tc-m32r.c:407
 #, c-format
 msgid "  -ignore-parallel-conflicts            do not check parallel instructions\n"
 msgstr "  -ignore-parallel-conflicts            no revisar cuando hay instrucciones paralelas\n"
 
-#: config/tc-m32r.c:412
+#: config/tc-m32r.c:409
 #, c-format
 msgid "                                         fo contraint violations\n"
 msgstr "                                         que violan las restricciones\n"
 
-#: config/tc-m32r.c:414
+#: config/tc-m32r.c:411
 #, c-format
 msgid "  -no-ignore-parallel-conflicts         check parallel instructions for\n"
 msgstr "  -no-ignore-parallel-conflicts         revisar cuando hay instrucciones paralelas\n"
 
-#: config/tc-m32r.c:416
+#: config/tc-m32r.c:413
 #, c-format
 msgid "                                         contraint violations\n"
 msgstr "                                         que violan las restricciones\n"
 
-#: config/tc-m32r.c:418
+#: config/tc-m32r.c:415
 #, c-format
 msgid "  -Ip                     synonym for -ignore-parallel-conflicts\n"
 msgstr "  -Ip                     sinónimo para -ignore-parallel-conflicts\n"
 
-#: config/tc-m32r.c:420
+#: config/tc-m32r.c:417
 #, c-format
 msgid "  -nIp                    synonym for -no-ignore-parallel-conflicts\n"
 msgstr "  -nIp                    sinónimo para -no-ignore-parallel-conflicts\n"
 
-#: config/tc-m32r.c:423
+#: config/tc-m32r.c:420
 #, c-format
 msgid "  -warn-unmatched-high    warn when an (s)high reloc has no matching low reloc\n"
 msgstr "  -warn-unmatched-high    avisa cundo una reubicación (s)high no tiene una reubicación low correspondiente\n"
 
-#: config/tc-m32r.c:425
+#: config/tc-m32r.c:422
 #, c-format
 msgid "  -no-warn-unmatched-high do not warn about missing low relocs\n"
 msgstr "  -no-warn-unmatched-high no avisa cuando faltan reubicaciones low\n"
 
-#: config/tc-m32r.c:427
+#: config/tc-m32r.c:424
 #, c-format
 msgid "  -Wuh                    synonym for -warn-unmatched-high\n"
 msgstr "  -Wuh                    sinónimo para -warn-unmatched-high\n"
 
-#: config/tc-m32r.c:429
+#: config/tc-m32r.c:426
 #, c-format
 msgid "  -Wnuh                   synonym for -no-warn-unmatched-high\n"
 msgstr "  -Wnuh                   sinónimo para -no-warn-unmatched-high\n"
 
-#: config/tc-m32r.c:432
+#: config/tc-m32r.c:429
 #, c-format
 msgid "  -KPIC                   generate PIC\n"
 msgstr "  -KPIC                   genera PIC\n"
 
-#: config/tc-m32r.c:892
+#: config/tc-m32r.c:850
 msgid "instructions write to the same destination register."
 msgstr "las instrucciones escriben al mismo registro de destino."
 
-#: config/tc-m32r.c:900
+#: config/tc-m32r.c:858
 msgid "Instructions do not use parallel execution pipelines."
 msgstr "Las instrucciones no usan tuberías de ejecución paralela."
 
-#: config/tc-m32r.c:908
+#: config/tc-m32r.c:866
 msgid "Instructions share the same execution pipeline"
 msgstr "Las instrucciones comparten la misma tubería de ejecución"
 
-#: config/tc-m32r.c:984 config/tc-m32r.c:1098
+#: config/tc-m32r.c:931 config/tc-m32r.c:1045
 #, c-format
 msgid "not a 16 bit instruction '%s'"
 msgstr "no hay una instrucción 16 bit '%s'"
 
-#: config/tc-m32r.c:996 config/tc-m32r.c:1110 config/tc-m32r.c:1295
+#: config/tc-m32r.c:943 config/tc-m32r.c:1057 config/tc-m32r.c:1241
 #, c-format
 msgid "instruction '%s' is for the M32R2 only"
 msgstr "la instrucción '%s' sólo es para el M32R2"
 
-#: config/tc-m32r.c:1009 config/tc-m32r.c:1123 config/tc-m32r.c:1308
+#: config/tc-m32r.c:956 config/tc-m32r.c:1070 config/tc-m32r.c:1254
 #, c-format
 msgid "unknown instruction '%s'"
 msgstr "instrucción '%s' desconocida"
 
-#: config/tc-m32r.c:1018 config/tc-m32r.c:1130 config/tc-m32r.c:1315
+#: config/tc-m32r.c:965 config/tc-m32r.c:1077 config/tc-m32r.c:1261
 #, c-format
 msgid "instruction '%s' is for the M32RX only"
 msgstr "la instrucción '%s' sólo es para el M32RX"
 
-#: config/tc-m32r.c:1027 config/tc-m32r.c:1139
+#: config/tc-m32r.c:974 config/tc-m32r.c:1086
 #, c-format
 msgid "instruction '%s' cannot be executed in parallel."
 msgstr "la instrucción '%s' no se puede ejecutar en paralelo."
 
-#: config/tc-m32r.c:1082 config/tc-m32r.c:1164 config/tc-m32r.c:1372
+#: config/tc-m32r.c:1029 config/tc-m32r.c:1111 config/tc-m32r.c:1318
 msgid "internal error: lookup/get operands failed"
 msgstr "error interno: los operandos lookup/get fallaron."
 
-#: config/tc-m32r.c:1149
+#: config/tc-m32r.c:1096
 #, c-format
 msgid "'%s': only the NOP instruction can be issued in parallel on the m32r"
 msgstr "'%s': solamente las instrucciones NOP se puede ejecutar en paralelo en el m32r"
 
-#: config/tc-m32r.c:1178
+#: config/tc-m32r.c:1125
 #, c-format
 msgid "%s: output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?"
 msgstr "%s: la salida de la 1a instrucción es la misma que una entrada a la 2a instrucción - ¿Esto es intencional?"
 
-#: config/tc-m32r.c:1182
+#: config/tc-m32r.c:1129
 #, c-format
 msgid "%s: output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?"
 msgstr "%s: la salida de la 2a instrucción es la misma que una entrada a la 1a instrucción - ¿Esto es intencional?"
 
-#: config/tc-m32r.c:1551 config/tc-ppc.c:1758 config/tc-ppc.c:4350
+#: config/tc-m32r.c:1493 config/tc-ppc.c:1773 config/tc-ppc.c:4365
 msgid "Expected comma after symbol-name: rest of line ignored."
 msgstr "Se esperaba coma después del nombre del símbolo: se ingnora el resto de la línea."
 
-#: config/tc-m32r.c:1561
+#: config/tc-m32r.c:1503
 #, c-format
 msgid ".SCOMMon length (%ld.) <0! Ignored."
 msgstr "longitud SCOMMon (%ld.) <0!. Se ignora."
 
-#: config/tc-m32r.c:1575 config/tc-ppc.c:1780 config/tc-ppc.c:2937
-#: config/tc-ppc.c:4374
+#: config/tc-m32r.c:1517 config/tc-ppc.c:1795 config/tc-ppc.c:2952
+#: config/tc-ppc.c:4389
 msgid "ignoring bad alignment"
 msgstr "se ignora la alineación errónea"
 
-#: config/tc-m32r.c:1587 config/tc-ppc.c:1817 config/tc-v850.c:335
+#: config/tc-m32r.c:1529 config/tc-ppc.c:1832 config/tc-v850.c:323
 msgid "Common alignment not a power of 2"
 msgstr "La alineación común no es una potencia de 2"
 
-#: config/tc-m32r.c:1602 config/tc-ppc.c:1791 config/tc-ppc.c:4386
+#: config/tc-m32r.c:1544 config/tc-ppc.c:1806 config/tc-ppc.c:4401
 #, c-format
 msgid "Ignoring attempt to re-define symbol `%s'."
 msgstr "Se ignora el intento de redefinir el símbolo `%s'."
 
-#: config/tc-m32r.c:1611
+#: config/tc-m32r.c:1553
 #, c-format
 msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld."
 msgstr "La longitud de .scomm \"%s\" ya está %ld. No ha cambiado a %ld."
 
-#: config/tc-m32r.c:1839
+#: config/tc-m32r.c:1789
 msgid "Addend to unresolved symbol not on word boundary."
 msgstr "La adición para un símbolo sin resolver no está en un límite de word."
 
-#: config/tc-m32r.c:1988 config/tc-m32r.c:2038 config/tc-sh.c:747
+#: config/tc-m32r.c:1930 config/tc-m32r.c:1983 config/tc-sh.c:749
 msgid "Invalid PIC expression."
 msgstr "Expresión PIC inválida."
 
-#: config/tc-m32r.c:2129
+#: config/tc-m32r.c:2074
 msgid "Unmatched high/shigh reloc"
 msgstr "Reubicación high/shigh sin coincidencia"
 
-#: config/tc-m32r.c:2380 config/tc-sparc.c:3525
+#: config/tc-m32r.c:2334 config/tc-sparc.c:3524
 #, c-format
 msgid "internal error: can't export reloc type %d (`%s')"
 msgstr "error interno: no se puede exportar el tipo de reubicación %d (`%s')"
@@ -6310,404 +6162,400 @@
 msgid "Line %d: unknown relocation type: 0x%x."
 msgstr "Línea %d: tipo de reubicación desconocido: 0x%x."
 
-#: config/tc-m68k.c:693
+#: config/tc-m68k.c:696
 msgid "no matching ColdFire architectures found"
 msgstr "no se encontraron arquitecturas ColdFire coincidentes"
 
-#: config/tc-m68k.c:707
+#: config/tc-m68k.c:710
 msgid " or "
 msgstr " o "
 
-#: config/tc-m68k.c:712
+#: config/tc-m68k.c:715
 msgid ", or "
 msgstr ", o "
 
-#: config/tc-m68k.c:729
+#: config/tc-m68k.c:732
 msgid ", or aliases"
 msgstr ", o los aliases"
 
-#: config/tc-m68k.c:753 config/tc-m68k.c:4765 config/tc-m68k.c:5156
-msgid "Tried to convert PC relative branch to absolute jump"
-msgstr "Se trató de convertir una ramificación relativa al PC a un salto absoluto"
-
-#: config/tc-m68k.c:760 config/tc-m68k.c:4755
-msgid "Tried to convert PC relative BSR to absolute JSR"
-msgstr "Se intentó convertir un BSR relativo al PC a un JSR absoluto"
-
-#: config/tc-m68k.c:765
-msgid "Unknown PC relative instruction"
-msgstr "Instrucción relativa al PC desconocida"
-
-#: config/tc-m68k.c:897
+#: config/tc-m68k.c:843
 #, c-format
 msgid "Can not do %d byte pc-relative relocation"
 msgstr "No se puede hacer la reubicación relativa al pc de %d bytes"
 
-#: config/tc-m68k.c:899
+#: config/tc-m68k.c:845
 #, c-format
 msgid "Can not do %d byte pc-relative pic relocation"
 msgstr "No se puede hacer la reubicación pic relativa al pc de %d bytes"
 
-#: config/tc-m68k.c:904
+#: config/tc-m68k.c:850
 #, c-format
 msgid "Can not do %d byte relocation"
 msgstr "No se puede hacer la reubicación de %d byres"
 
-#: config/tc-m68k.c:906
+#: config/tc-m68k.c:852
 #, c-format
 msgid "Can not do %d byte pic relocation"
 msgstr "No se puede hacer la reubicación pic de %d bytes"
 
-#: config/tc-m68k.c:971
+#: config/tc-m68k.c:915
 #, c-format
 msgid "Unable to produce reloc against symbol '%s'"
 msgstr "No se puede producir una reubicación contra el símbolo '%s'"
 
-#: config/tc-m68k.c:1015 config/tc-vax.c:3456
+#: config/tc-m68k.c:959 config/tc-vax.c:3435
 #, c-format
 msgid "Cannot make %s relocation PC relative"
 msgstr "No se puede hacer la reubicación relativa al PC %s"
 
-#: config/tc-m68k.c:1107 config/tc-tahoe.c:1495 config/tc-vax.c:1895
+#: config/tc-m68k.c:1050 config/tc-vax.c:1890
 msgid "No operator"
 msgstr "No hay operador"
 
-#: config/tc-m68k.c:1137 config/tc-tahoe.c:1512 config/tc-vax.c:1912
+#: config/tc-m68k.c:1080 config/tc-vax.c:1907
 msgid "Unknown operator"
 msgstr "Operador desconocido"
 
-#: config/tc-m68k.c:1990
+#: config/tc-m68k.c:1944
 msgid "invalid instruction for this architecture; needs "
 msgstr "instrucción inválida para esta arquitectura; necesita "
 
-#: config/tc-m68k.c:1996
+#: config/tc-m68k.c:1950
 msgid "ColdFire ISA_A"
 msgstr "ISA_A de ColdFire"
 
-#: config/tc-m68k.c:2004
+#: config/tc-m68k.c:1958
 msgid "ColdFire hardware divide"
 msgstr "divide por hardware de ColdFire"
 
-#: config/tc-m68k.c:2012
+#: config/tc-m68k.c:1966
 msgid "ColdFire ISA_A+"
 msgstr "ISA_A+ de ColdFire"
 
-#: config/tc-m68k.c:2020
+#: config/tc-m68k.c:1974
 msgid "ColdFire ISA_B"
 msgstr "ISA_B de ColdFire"
 
-#: config/tc-m68k.c:2028
+#: config/tc-m68k.c:1982
 msgid "ColdFire fpu"
 msgstr "unidad de coma flotante de ColdFire"
 
-#: config/tc-m68k.c:2035
+#: config/tc-m68k.c:1989
 msgid "fpu (68040, 68060 or 68881/68882)"
 msgstr "fpu (68040, 68060 o 68881/68882)"
 
-#: config/tc-m68k.c:2038
+#: config/tc-m68k.c:1992
 msgid "mmu (68030 or 68851)"
 msgstr "mmu (68030 o 68851)"
 
-#: config/tc-m68k.c:2041
+#: config/tc-m68k.c:1995
 msgid "68020 or higher"
 msgstr "68020 o superior"
 
-#: config/tc-m68k.c:2044
+#: config/tc-m68k.c:1998
 msgid "68000 or higher"
 msgstr "68000 o superior"
 
-#: config/tc-m68k.c:2047
+#: config/tc-m68k.c:2001
 msgid "68010 or higher"
 msgstr "68010 o superior"
 
-#: config/tc-m68k.c:2075
+#: config/tc-m68k.c:2029
 msgid "operands mismatch"
 msgstr "no coinciden los operandos"
 
-#: config/tc-m68k.c:2136 config/tc-m68k.c:2142 config/tc-m68k.c:2148
-#: config/tc-mmix.c:2526 config/tc-mmix.c:2550
+#: config/tc-m68k.c:2090 config/tc-m68k.c:2096 config/tc-m68k.c:2102
+#: config/tc-mmix.c:2488 config/tc-mmix.c:2512
 msgid "operand out of range"
 msgstr "operando fuera de rango"
 
-#: config/tc-m68k.c:2205
+#: config/tc-m68k.c:2159
 #, c-format
 msgid "Bignum too big for %c format; truncated"
 msgstr "Número grande demasiado grande para el formato %c; truncado"
 
-#: config/tc-m68k.c:2286
+#: config/tc-m68k.c:2236
 msgid "displacement too large for this architecture; needs 68020 or higher"
 msgstr "desubicación demasiado grande para esta arquitectura; necesita 68020 o superior"
 
-#: config/tc-m68k.c:2397
+#: config/tc-m68k.c:2347
 msgid "scale factor invalid on this architecture; needs cpu32 or 68020 or higher"
 msgstr "factor de escala inválido en esta arquitectura; necesita cpu32 o 68020 o superior"
 
-#: config/tc-m68k.c:2402
+#: config/tc-m68k.c:2352
 msgid "invalid index size for coldfire"
 msgstr "tamaño de índice inválido para coldfire"
 
-#: config/tc-m68k.c:2455
+#: config/tc-m68k.c:2405
 msgid "Forcing byte displacement"
 msgstr "Forzando la desubicación de byte"
 
-#: config/tc-m68k.c:2457
+#: config/tc-m68k.c:2407
 msgid "byte displacement out of range"
 msgstr "Desubicación de byte fuera de rango"
 
-#: config/tc-m68k.c:2504 config/tc-m68k.c:2542
+#: config/tc-m68k.c:2455 config/tc-m68k.c:2493
 msgid "invalid operand mode for this architecture; needs 68020 or higher"
 msgstr "modo de operando inválido para esta arquitectura; necesita 68020 o superior"
 
-#: config/tc-m68k.c:2528 config/tc-m68k.c:2562
+#: config/tc-m68k.c:2479 config/tc-m68k.c:2513
 msgid ":b not permitted; defaulting to :w"
 msgstr "no se permite :b; cambiando por defecto a :w"
 
-#: config/tc-m68k.c:2639
+#: config/tc-m68k.c:2590
 msgid "unsupported byte value; use a different suffix"
 msgstr "valor de byte sin soporte; utilice un sufijo diferente"
 
-#: config/tc-m68k.c:2654
+#: config/tc-m68k.c:2605
 msgid "unknown/incorrect operand"
 msgstr "operando desconocido/incorrecto"
 
-#: config/tc-m68k.c:2697 config/tc-m68k.c:2705 config/tc-m68k.c:2712
-#: config/tc-m68k.c:2719
+#: config/tc-m68k.c:2648 config/tc-m68k.c:2656 config/tc-m68k.c:2663
+#: config/tc-m68k.c:2670
 msgid "out of range"
 msgstr "fuera de rango"
 
-#: config/tc-m68k.c:2765
+#: config/tc-m68k.c:2716
 msgid "Can't use long branches on 68000/68010/5200"
 msgstr "No se pueden usar ramificaciones long en 68000/68010/5200"
 
-#: config/tc-m68k.c:2875
+#: config/tc-m68k.c:2833
 msgid "Expression out of range, using 0"
 msgstr "Expresión fuera de rango, utilizando 0"
 
-#: config/tc-m68k.c:3056 config/tc-m68k.c:3072
+#: config/tc-m68k.c:3014 config/tc-m68k.c:3030
 msgid "Floating point register in register list"
 msgstr "Registro de coma flotante en la lista de registros"
 
-#: config/tc-m68k.c:3062
+#: config/tc-m68k.c:3020
 msgid "Wrong register in floating-point reglist"
 msgstr "Registro erróneo en la lista de registros de coma flotante"
 
-#: config/tc-m68k.c:3078
+#: config/tc-m68k.c:3036
 msgid "incorrect register in reglist"
 msgstr "registro incorrecto en la lista de registros"
 
-#: config/tc-m68k.c:3084
+#: config/tc-m68k.c:3042
 msgid "wrong register in floating-point reglist"
 msgstr "registro erróneo en la lista de registros de coma flotante"
 
 #. ERROR.
-#: config/tc-m68k.c:3547
+#: config/tc-m68k.c:3505
 msgid "Extra )"
 msgstr ") extra"
 
 #. ERROR.
-#: config/tc-m68k.c:3558
+#: config/tc-m68k.c:3516
 msgid "Missing )"
 msgstr "Falta )"
 
-#: config/tc-m68k.c:3575
+#: config/tc-m68k.c:3533
 msgid "Missing operand"
 msgstr "Falta un operando"
 
-#: config/tc-m68k.c:3937
+#: config/tc-m68k.c:3890
 #, c-format
 msgid "%s -- statement `%s' ignored"
 msgstr "%s -- se ignora la declaración `%s'"
 
-#: config/tc-m68k.c:3986
+#: config/tc-m68k.c:3939
 #, c-format
 msgid "Don't know how to figure width of %c in md_assemble()"
 msgstr "No se sabe comó reconocer la anchura de %c en md_assemble()"
 
-#: config/tc-m68k.c:4152
+#: config/tc-m68k.c:4108
 #, c-format
 msgid "Internal Error:  Can't allocate m68k_sorted_opcodes of size %d"
 msgstr "Error Interno:  No se puede alojar m68k_sorted_opcodes de tamaño %d"
 
-#: config/tc-m68k.c:4203 config/tc-m68k.c:4242
+#: config/tc-m68k.c:4159 config/tc-m68k.c:4198
 #, c-format
 msgid "Internal Error: Can't find %s in hash table"
 msgstr "Error Interno: No se puede encontrar %s en la tabla de dispersión"
 
-#: config/tc-m68k.c:4206 config/tc-m68k.c:4245
+#: config/tc-m68k.c:4162 config/tc-m68k.c:4201
 #, c-format
 msgid "Internal Error: Can't hash %s: %s"
 msgstr "Error Interno: No se puede dispersar %s: %s"
 
-#: config/tc-m68k.c:4326
+#: config/tc-m68k.c:4282
 msgid "architecture not yet selected: defaulting to 68020"
 msgstr "no se ha seleccionado una arquitectura: cambiando por defecto a 68020"
 
-#: config/tc-m68k.c:4386
+#: config/tc-m68k.c:4342
 #, c-format
 msgid "unrecognized default cpu `%s' ???"
 msgstr "¿¿¿ cpu por defecto `%s' no reconocido ???"
 
-#: config/tc-m68k.c:4397
+#: config/tc-m68k.c:4353
 msgid "68040 and 68851 specified; mmu instructions may assemble incorrectly"
 msgstr "se especificaron 68040 y 68851; las instrucciones mmu podrían ensamblar incorrectamente"
 
-#: config/tc-m68k.c:4414
+#: config/tc-m68k.c:4370
 msgid "options for 68881 and no-68881 both given"
 msgstr "se dieron opciones para 68881 y para no-68881"
 
-#: config/tc-m68k.c:4417
+#: config/tc-m68k.c:4373
 msgid "options for 68851 and no-68851 both given"
 msgstr "se dieron opciones para 68851 y para no-68851"
 
-#: config/tc-m68k.c:4486
+#: config/tc-m68k.c:4434
 #, c-format
 msgid "text label `%s' aligned to odd boundary"
 msgstr "la etiqueta de texto `%s' está alineada a un límite impar"
 
-#: config/tc-m68k.c:4695
+#: config/tc-m68k.c:4638
 msgid "invalid byte branch offset"
 msgstr "desplazamiento de ramificación byte inválido"
 
-#: config/tc-m68k.c:4731
+#: config/tc-m68k.c:4674
 msgid "short branch with zero offset: use :w"
 msgstr "ramificación corta con desplazamiento cero: utilice :w"
 
-#: config/tc-m68k.c:4781 config/tc-m68k.c:4840 config/tc-m68k.c:4904
+#: config/tc-m68k.c:4698
+msgid "Tried to convert PC relative BSR to absolute JSR"
+msgstr "Se intentó convertir un BSR relativo al PC a un JSR absoluto"
+
+#: config/tc-m68k.c:4708 config/tc-m68k.c:5054
+msgid "Tried to convert PC relative branch to absolute jump"
+msgstr "Se trató de convertir una ramificación relativa al PC a un salto absoluto"
+
+#: config/tc-m68k.c:4724 config/tc-m68k.c:4783 config/tc-m68k.c:4847
 msgid "Tried to convert PC relative conditional branch to absolute jump"
 msgstr "Se intentó convertir una ramificación condicional relativa al PC a un salto absoluto"
 
-#: config/tc-m68k.c:4821
+#: config/tc-m68k.c:4764
 msgid "Tried to convert DBcc to absolute jump"
 msgstr "Se intentó convertir DBcc a un salto absoluto"
 
-#: config/tc-m68k.c:5200 config/tc-m68k.c:5211 config/tc-m68k.c:5252
+#: config/tc-m68k.c:5098 config/tc-m68k.c:5109 config/tc-m68k.c:5149
 msgid "expression out of range: defaulting to 1"
 msgstr "expresión fuera de rango: cambiando por defecto a 1"
 
-#: config/tc-m68k.c:5243
+#: config/tc-m68k.c:5141
 msgid "expression out of range: defaulting to 0"
 msgstr "expresión fuera de rango: cambiando por defecto a 0"
 
-#: config/tc-m68k.c:5285 config/tc-m68k.c:5297
+#: config/tc-m68k.c:5182 config/tc-m68k.c:5194
 #, c-format
 msgid "Can't deal with expression; defaulting to %ld"
 msgstr "No se puede lidiar con la expresión; cambiando por defecto a %ld"
 
-#: config/tc-m68k.c:5311
+#: config/tc-m68k.c:5208
 msgid "expression doesn't fit in BYTE"
 msgstr "la expresión no cabe en BYTE"
 
-#: config/tc-m68k.c:5315
+#: config/tc-m68k.c:5212
 msgid "expression doesn't fit in WORD"
 msgstr "la expresión no cabe en WORD"
 
-#: config/tc-m68k.c:5402
+#: config/tc-m68k.c:5299
 #, c-format
 msgid "%s: unrecognized processor name"
 msgstr "%s: nombre de procesador no reconocido"
 
-#: config/tc-m68k.c:5466
+#: config/tc-m68k.c:5363
 msgid "bad coprocessor id"
 msgstr "id de coprocesador erróneo"
 
-#: config/tc-m68k.c:5472
+#: config/tc-m68k.c:5369
 msgid "unrecognized fopt option"
 msgstr "opción fopt no reconocida"
 
-#: config/tc-m68k.c:5605
+#: config/tc-m68k.c:5502
 #, c-format
 msgid "option `%s' may not be negated"
 msgstr "la opción `%s' podría no estar negada"
 
-#: config/tc-m68k.c:5616
+#: config/tc-m68k.c:5513
 #, c-format
 msgid "option `%s' not recognized"
 msgstr "no se reconoce la opción `%s'"
 
-#: config/tc-m68k.c:5645
+#: config/tc-m68k.c:5542
 msgid "bad format of OPT NEST=depth"
 msgstr "formato erróneo de OPT NEST=profundidad"
 
-#: config/tc-m68k.c:5701
+#: config/tc-m68k.c:5598
 msgid "missing label"
 msgstr "etiqueta faltante"
 
-#: config/tc-m68k.c:5725 config/tc-m68k.c:5754
+#: config/tc-m68k.c:5622 config/tc-m68k.c:5651
 msgid "bad register list"
 msgstr "lista de registros errónea"
 
-#: config/tc-m68k.c:5727
+#: config/tc-m68k.c:5624
 #, c-format
 msgid "bad register list: %s"
 msgstr "lista de registros errónea: %s"
 
-#: config/tc-m68k.c:5825
+#: config/tc-m68k.c:5722
 msgid "restore without save"
 msgstr "restore sin save"
 
-#: config/tc-m68k.c:5979 config/tc-m68k.c:6349
+#: config/tc-m68k.c:5876 config/tc-m68k.c:6246
 msgid "syntax error in structured control directive"
 msgstr "error sintáctico en la directiva estructurada de control"
 
-#: config/tc-m68k.c:6024
+#: config/tc-m68k.c:5921
 msgid "missing condition code in structured control directive"
 msgstr "falta el código de condición en la directiva estructurada de control"
 
-#: config/tc-m68k.c:6095
+#: config/tc-m68k.c:5992
 #, c-format
 msgid "Condition <%c%c> in structured control directive can not be encoded correctly"
 msgstr "La condición <%c%c> en la directiva de contro estructurado no se puede codificar correctamente"
 
-#: config/tc-m68k.c:6391
+#: config/tc-m68k.c:6288
 msgid "missing then"
 msgstr "then faltante"
 
-#: config/tc-m68k.c:6472
+#: config/tc-m68k.c:6369
 msgid "else without matching if"
 msgstr "else sin if coincidente"
 
-#: config/tc-m68k.c:6505
+#: config/tc-m68k.c:6402
 msgid "endi without matching if"
 msgstr "endi sin if coincidente"
 
-#: config/tc-m68k.c:6545
+#: config/tc-m68k.c:6442
 msgid "break outside of structured loop"
 msgstr "break fuera de un loop estructurado"
 
-#: config/tc-m68k.c:6583
+#: config/tc-m68k.c:6480
 msgid "next outside of structured loop"
 msgstr "next fuera de un loop estructurado"
 
-#: config/tc-m68k.c:6634
+#: config/tc-m68k.c:6531
 msgid "missing ="
 msgstr "= faltante"
 
-#: config/tc-m68k.c:6672
+#: config/tc-m68k.c:6569
 msgid "missing to or downto"
 msgstr "to o downto faltante"
 
-#: config/tc-m68k.c:6708 config/tc-m68k.c:6742 config/tc-m68k.c:6956
+#: config/tc-m68k.c:6605 config/tc-m68k.c:6639 config/tc-m68k.c:6853
 msgid "missing do"
 msgstr "do faltante"
 
-#: config/tc-m68k.c:6843
+#: config/tc-m68k.c:6740
 msgid "endf without for"
 msgstr "endf sin for"
 
-#: config/tc-m68k.c:6897
+#: config/tc-m68k.c:6794
 msgid "until without repeat"
 msgstr "until sin repeat"
 
-#: config/tc-m68k.c:6991
+#: config/tc-m68k.c:6888
 msgid "endw without while"
 msgstr "endw sin while"
 
-#: config/tc-m68k.c:7153
+#: config/tc-m68k.c:7050
 #, c-format
 msgid "unrecognized architecture specification `%s'"
 msgstr "especificación de arquitectura `%s' no reconocida"
 
-#: config/tc-m68k.c:7246
+#: config/tc-m68k.c:7143
 #, c-format
 msgid ""
 "680X0 options:\n"
@@ -6732,7 +6580,7 @@
 "\t\t\tel objetivo tiene un/carece de coprocesador de coma flotante\n"
 "\t\t\t[por defecto sí para 68020, 68030, y cpu32]\n"
 
-#: config/tc-m68k.c:7258
+#: config/tc-m68k.c:7155
 #, c-format
 msgid ""
 "-m68851 | -mno-68851\n"
@@ -6755,7 +6603,7 @@
 "\t\t\treconoce los nombres de registro sin carácter de prefijo\n"
 "--bitwise-or\t\tno trata `|' como un carácter de comentario\n"
 
-#: config/tc-m68k.c:7268
+#: config/tc-m68k.c:7165
 #, c-format
 msgid ""
 "--base-size-default-16\tbase reg without size is 16 bits\n"
@@ -6768,222 +6616,174 @@
 "--disp-size-default-16\tla desubicación de tamaño desconocido es de 16 bits\n"
 "--disp-size-default-32\tla desubicación de tamaño desconocido es de 32 bits (por defecto)\n"
 
-#: config/tc-m68k.c:7303
+#: config/tc-m68k.c:7200
 #, c-format
 msgid "Error %s in %s\n"
 msgstr "Error %s en %s\n"
 
-#: config/tc-m68k.c:7307
+#: config/tc-m68k.c:7204
 #, c-format
 msgid "Opcode(%d.%s): "
 msgstr "Código de operación(%d.%s): "
 
-#: config/tc-m88k.c:201
+#: config/tc-mcore.c:524
 #, c-format
-msgid "Can't hash instruction '%s':%s"
-msgstr "No se puede dispersar la instrucción '%s':%s"
-
-#: config/tc-m88k.c:250
-#, c-format
-msgid "Invalid mnemonic '%s'"
-msgstr "Mnemónico inválido '%s'"
-
-#: config/tc-m88k.c:268
-msgid "Parameter syntax error"
-msgstr "Error sintáctico de parámetros"
-
-#: config/tc-m88k.c:321
-msgid "Unknown relocation type"
-msgstr "Tipo de reubicación desconocido"
-
-#. Having this here repeats the warning somtimes.
-#. But can't we stand that?
-#: config/tc-m88k.c:434
-msgid "Use of obsolete instruction"
-msgstr "Uso de una instrucción obsoleta"
-
-#: config/tc-m88k.c:551
-msgid "Expression truncated to 16 bits"
-msgstr "Expresión truncada a 16 bits"
-
-#: config/tc-m88k.c:617 config/tc-m88k.c:639
-msgid "Expression truncated to 5 bits"
-msgstr "Expresión truncada a 5 bits"
-
-#: config/tc-m88k.c:856
-msgid "Expression truncated to 9 bits"
-msgstr "Expresión truncada a 9 bits"
-
-#: config/tc-m88k.c:878
-msgid "Removed lower 2 bits of expression"
-msgstr "Se borraron los 2 bits inferiores de la expresión"
-
-#: config/tc-m88k.c:1057
-msgid "Relaxation should never occur"
-msgstr "La relajación nunca debe ocurrir"
-
-#: config/tc-m88k.h:78
-msgid "m88k convert_frag\n"
-msgstr "m88k convert_frag\n"
-
-#: config/tc-mcore.c:461
-#, c-format
 msgid "register expected, but saw '%.6s'"
 msgstr "se esperaba un registro, pero se vio '%.6s'"
 
-#: config/tc-mcore.c:545
+#: config/tc-mcore.c:606
 #, c-format
 msgid "control register expected, but saw '%.6s'"
 msgstr "se esperaba un registro de control, pero se vio '%.6s'"
 
-#: config/tc-mcore.c:583
+#: config/tc-mcore.c:642
 msgid "bad/missing psr specifier"
 msgstr "especificador psr erróneo/faltante"
 
-#: config/tc-mcore.c:744
+#: config/tc-mcore.c:692
 msgid "more than 65K literal pools"
 msgstr "más de 65K de conjuntos literales"
 
-#: config/tc-mcore.c:798
+#: config/tc-mcore.c:746
 msgid "missing ']'"
 msgstr "falta un ']'"
 
-#: config/tc-mcore.c:838
+#: config/tc-mcore.c:785
 msgid "operand must be a constant"
 msgstr "el operando debe ser una constante"
 
-#: config/tc-mcore.c:840
+#: config/tc-mcore.c:787
 #, c-format
 msgid "operand must be absolute in range %u..%u, not %ld"
 msgstr "el operando debe ser un absoluto en el rango %u..%u, no %ld"
 
-#: config/tc-mcore.c:876
+#: config/tc-mcore.c:822
 msgid "operand must be a multiple of 4"
 msgstr "el operando debe ser un múltiplo de 4"
 
-#: config/tc-mcore.c:883
+#: config/tc-mcore.c:829
 msgid "operand must be a multiple of 2"
 msgstr "el operando debe ser un múltiplo de 2"
 
-#: config/tc-mcore.c:897 config/tc-mcore.c:1411 config/tc-mcore.c:1465
+#: config/tc-mcore.c:843 config/tc-mcore.c:1359 config/tc-mcore.c:1413
 msgid "base register expected"
 msgstr "se esperaba un registro base"
 
-#: config/tc-mcore.c:946
+#: config/tc-mcore.c:891
 #, c-format
 msgid "unknown opcode \"%s\""
 msgstr "código de operación \"%s\" desconocido"
 
-#: config/tc-mcore.c:989
+#: config/tc-mcore.c:934
 msgid "invalid register: r15 illegal"
 msgstr "registro inválido: r15 ilegal"
 
-#: config/tc-mcore.c:1037 config/tc-mcore.c:1615
+#: config/tc-mcore.c:983 config/tc-mcore.c:1564
 msgid "M340 specific opcode used when assembling for M210"
 msgstr "se utilizó un código de operación específico de M340 cuando se ensamblaba para M210"
 
-#: config/tc-mcore.c:1055 config/tc-mcore.c:1094 config/tc-mcore.c:1113
-#: config/tc-mcore.c:1132 config/tc-mcore.c:1159 config/tc-mcore.c:1188
-#: config/tc-mcore.c:1225 config/tc-mcore.c:1260 config/tc-mcore.c:1279
-#: config/tc-mcore.c:1298 config/tc-mcore.c:1332 config/tc-mcore.c:1357
-#: config/tc-mcore.c:1414 config/tc-mcore.c:1468 config/tc-mcore.c:1504
-#: config/tc-mcore.c:1562 config/tc-mcore.c:1584 config/tc-mcore.c:1607
+#: config/tc-mcore.c:1001 config/tc-mcore.c:1041 config/tc-mcore.c:1060
+#: config/tc-mcore.c:1079 config/tc-mcore.c:1107 config/tc-mcore.c:1136
+#: config/tc-mcore.c:1173 config/tc-mcore.c:1208 config/tc-mcore.c:1227
+#: config/tc-mcore.c:1246 config/tc-mcore.c:1280 config/tc-mcore.c:1305
+#: config/tc-mcore.c:1362 config/tc-mcore.c:1416 config/tc-mcore.c:1452
+#: config/tc-mcore.c:1511 config/tc-mcore.c:1533 config/tc-mcore.c:1556
 msgid "second operand missing"
 msgstr "falta el segundo operando"
 
-#: config/tc-mcore.c:1070
+#: config/tc-mcore.c:1017
 msgid "destination register must be r1"
 msgstr "el registro destino debe ser r1"
 
-#: config/tc-mcore.c:1091
+#: config/tc-mcore.c:1038
 msgid "source register must be r1"
 msgstr "el registro fuente debe ser r1"
 
-#: config/tc-mcore.c:1154 config/tc-mcore.c:1211
+#: config/tc-mcore.c:1102 config/tc-mcore.c:1159
 msgid "immediate is not a power of two"
 msgstr "el inmediato no es una potencia de dos"
 
-#: config/tc-mcore.c:1182
+#: config/tc-mcore.c:1130
 msgid "translating bgeni to movi"
 msgstr "traduciendo bgeni a movi"
 
-#: config/tc-mcore.c:1219
+#: config/tc-mcore.c:1167
 msgid "translating mgeni to movi"
 msgstr "traduciendo mgeni a movi"
 
-#: config/tc-mcore.c:1251
+#: config/tc-mcore.c:1199
 msgid "translating bmaski to movi"
 msgstr "traduciendo bmaski a movi"
 
-#: config/tc-mcore.c:1327
+#: config/tc-mcore.c:1275
 #, c-format
 msgid "displacement too large (%d)"
 msgstr "desubicación demasiado grande (%d)"
 
-#: config/tc-mcore.c:1341
+#: config/tc-mcore.c:1289
 msgid "Invalid register: r0 and r15 illegal"
 msgstr "Registro inválido: r0 y r15 ilegales"
 
-#: config/tc-mcore.c:1372
+#: config/tc-mcore.c:1320
 msgid "bad starting register: r0 and r15 invalid"
 msgstr "registro de inicio erróneo: r0 y r15 inválidos"
 
-#: config/tc-mcore.c:1385
+#: config/tc-mcore.c:1333
 msgid "ending register must be r15"
 msgstr "el registro final debe ser r15"
 
-#: config/tc-mcore.c:1405
+#: config/tc-mcore.c:1353
 msgid "bad base register: must be r0"
 msgstr "registro base erróneo: debe ser r0"
 
-#: config/tc-mcore.c:1423
+#: config/tc-mcore.c:1371
 msgid "first register must be r4"
 msgstr "el primer registro debe ser r4"
 
-#: config/tc-mcore.c:1434
+#: config/tc-mcore.c:1382
 msgid "last register must be r7"
 msgstr "el último registro debe ser r7"
 
-#: config/tc-mcore.c:1471
+#: config/tc-mcore.c:1419
 msgid "reg-reg expected"
 msgstr "se esperaba registro-registro"
 
-#: config/tc-mcore.c:1581
+#: config/tc-mcore.c:1530
 msgid "second operand must be 1"
 msgstr "el segundo operando debe ser 1"
 
-#: config/tc-mcore.c:1602
+#: config/tc-mcore.c:1551
 msgid "zero used as immediate value"
 msgstr "se utiliza cero como un valor inmediato"
 
-#: config/tc-mcore.c:1629
+#: config/tc-mcore.c:1578
 msgid "duplicated psr bit specifier"
 msgstr "especificador de bit psr duplicado"
 
-#: config/tc-mcore.c:1635
+#: config/tc-mcore.c:1584
 msgid "`af' must appear alone"
 msgstr "`af' debe aparecer solo"
 
-#: config/tc-mcore.c:1642
+#: config/tc-mcore.c:1591
 #, c-format
 msgid "unimplemented opcode \"%s\""
 msgstr "código de operación \"%s\" sin implementar"
 
-#: config/tc-mcore.c:1651
+#: config/tc-mcore.c:1600
 #, c-format
 msgid "ignoring operands: %s "
 msgstr "se ignoran los operandos: %s "
 
-#: config/tc-mcore.c:1719 config/tc-w65.c:769
+#: config/tc-mcore.c:1665
 msgid "Bad call to MD_NTOF()"
 msgstr "Llamada errónea a MD_NTOF()"
 
-#: config/tc-mcore.c:1789
+#: config/tc-mcore.c:1736
 #, c-format
 msgid "unrecognised cpu type '%s'"
 msgstr "tipo de cpu '%s' no reconocido"
 
-#: config/tc-mcore.c:1808
+#: config/tc-mcore.c:1754
 #, c-format
 msgid ""
 "MCORE specific options:\n"
@@ -7000,642 +6800,670 @@
 "  -EB                     ensambla para un sistema big endian (por defecto)\n"
 "  -EL                     ensambla para un sistema little endian\n"
 
-#: config/tc-mcore.c:1827
+#: config/tc-mcore.c:1772
 msgid "failed sanity check: short_jump"
 msgstr "falló la prueba de sanidad: short_jump"
 
-#: config/tc-mcore.c:1838
+#: config/tc-mcore.c:1782
 msgid "failed sanity check: long_jump"
 msgstr "falló la prueba de sanidad: long_jump"
 
-#: config/tc-mcore.c:1864
+#: config/tc-mcore.c:1808
 #, c-format
 msgid "odd displacement at %x"
 msgstr "desubicación impar en %x"
 
-#: config/tc-mcore.c:2048
+#: config/tc-mcore.c:1990
 msgid "unknown"
 msgstr "desconocido"
 
-#: config/tc-mcore.c:2074
+#: config/tc-mcore.c:2017
 #, c-format
 msgid "odd distance branch (0x%lx bytes)"
 msgstr "distancia de ramificación impar (0x%lx bytes)"
 
-#: config/tc-mcore.c:2078
+#: config/tc-mcore.c:2021
 #, c-format
 msgid "pcrel for branch to %s too far (0x%lx)"
 msgstr "el pcrel para la ramificación a %s está demasiado lejos (0x%lx)"
 
-#: config/tc-mcore.c:2097
+#: config/tc-mcore.c:2041
 #, c-format
 msgid "pcrel for lrw/jmpi/jsri to %s too far (0x%lx)"
 msgstr "el pcrel para lrw/jmpi/jsri a %s está demasiado lejos (0x%lx)"
 
-#: config/tc-mcore.c:2108
+#: config/tc-mcore.c:2053
 #, c-format
 msgid "pcrel for loopt too far (0x%lx)"
 msgstr "el pcrel para loopt está demasiado lejos (0x%lx)"
 
-#: config/tc-mcore.c:2337
+#: config/tc-mcore.c:2263
 #, c-format
 msgid "Can not do %d byte %srelocation"
 msgstr "No se puede hacer la reubicación de %d byte %s"
 
-#: config/tc-mcore.c:2339
+#: config/tc-mcore.c:2265
 msgid "pc-relative"
 msgstr "relativo al pc"
 
 #. Prototypes for static functions.
-#: config/tc-mips.c:862
+#: config/tc-mips.c:957
 #, c-format
 msgid "internal Error, line %d, %s"
 msgstr "Error interno, línea %d, %s"
 
-#: config/tc-mips.c:1175
+#: config/tc-mips.c:1443
 #, c-format
 msgid "internal: can't hash `%s': %s"
 msgstr "interno: no se puede dispersar `%s': %s"
 
-#: config/tc-mips.c:1183
+#: config/tc-mips.c:1451
 #, c-format
 msgid "internal error: bad mips16 opcode: %s %s\n"
 msgstr "error interno: código de operación mips16 erróneo: %s %s\n"
 
-#: config/tc-mips.c:1376
+#: config/tc-mips.c:1652
 #, c-format
 msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
 msgstr "devuelto de mips_ip(%s) insn_opcode = 0x%x\n"
 
-#: config/tc-mips.c:2085 config/tc-mips.c:13223
+#: config/tc-mips.c:2327 config/tc-mips.c:13480
 msgid "extended instruction in delay slot"
 msgstr "instrucción extendida en ranuta de retardo"
 
-#: config/tc-mips.c:2145 config/tc-mips.c:2155
+#: config/tc-mips.c:2391 config/tc-mips.c:2401
 #, c-format
 msgid "jump to misaligned address (0x%lx)"
 msgstr "salto a una dirección mal alineada (0x%lx)"
 
-#: config/tc-mips.c:2148 config/tc-mips.c:2158
+#: config/tc-mips.c:2394 config/tc-mips.c:2404
 #, c-format
 msgid "jump address range overflow (0x%lx)"
 msgstr "desbordamiento de rango de salto de dirección (0x%lx)"
 
-#: config/tc-mips.c:2937
+#: config/tc-mips.c:2893
 msgid "Macro instruction expanded into multiple instructions in a branch delay slot"
 msgstr "Instrucción macro expandida en instrucciones múltiples en una ranura de retraso de ramificación"
 
-#: config/tc-mips.c:2940
+#: config/tc-mips.c:2896
 msgid "Macro instruction expanded into multiple instructions"
 msgstr "Instrucción macro expandida en instrucciones múltiples"
 
-#: config/tc-mips.c:3436 config/tc-mips.c:3602 config/tc-mips.c:5891
-msgid "constant too large"
-msgstr "constante demasiado grande"
-
-#: config/tc-mips.c:3444 config/tc-mips.c:7375 config/tc-mips.c:7399
-#: config/tc-mips.c:7472 config/tc-mips.c:7495
+#: config/tc-mips.c:3414 config/tc-mips.c:7338 config/tc-mips.c:7362
+#: config/tc-mips.c:7435 config/tc-mips.c:7458
 msgid "operand overflow"
 msgstr "desbordamiento de operando"
 
-#: config/tc-mips.c:3463 config/tc-mips.c:4074 config/tc-mips.c:6765
-#: config/tc-mips.c:7562
+#: config/tc-mips.c:3433 config/tc-mips.c:4033 config/tc-mips.c:6734
+#: config/tc-mips.c:7525
 msgid "Macro used $at after \".set noat\""
 msgstr "La macro utilizó $at después de \".set noat\""
 
-#: config/tc-mips.c:3500
+#: config/tc-mips.c:3462
 msgid "unsupported large constant"
 msgstr "constante large sin soporte"
 
-#: config/tc-mips.c:3502
+#: config/tc-mips.c:3464
 #, c-format
 msgid "Instruction %s requires absolute expression"
 msgstr "La instrucción %s requiere una expresión absoluta"
 
-#: config/tc-mips.c:3637
+#: config/tc-mips.c:3597 config/tc-mips.c:5844 config/tc-mips.c:6438
 #, c-format
-msgid "Number (0x%lx) larger than 32 bits"
-msgstr "El número (0x%lx) es más grande que 32 bits"
+msgid "Number (0x%s) larger than 32 bits"
+msgstr "El número (0x%s) es más grande que 32 bits"
 
-#: config/tc-mips.c:3658
+#: config/tc-mips.c:3617
 msgid "Number larger than 64 bits"
 msgstr "El número es más grande que 64 bits"
 
-#: config/tc-mips.c:3952 config/tc-mips.c:3980 config/tc-mips.c:4018
-#: config/tc-mips.c:4063 config/tc-mips.c:6094 config/tc-mips.c:6133
-#: config/tc-mips.c:6172 config/tc-mips.c:6584 config/tc-mips.c:6636
+#: config/tc-mips.c:3911 config/tc-mips.c:3939 config/tc-mips.c:3977
+#: config/tc-mips.c:4022 config/tc-mips.c:6053 config/tc-mips.c:6092
+#: config/tc-mips.c:6131 config/tc-mips.c:6553 config/tc-mips.c:6605
 msgid "PIC code offset overflow (max 16 signed bits)"
 msgstr "Desbordamiento del desplazamiento del código PIC (máx 16 bits con signo)"
 
-#: config/tc-mips.c:4371 config/tc-mips.c:4437 config/tc-mips.c:4525
-#: config/tc-mips.c:4572 config/tc-mips.c:4633 config/tc-mips.c:4681
-#: config/tc-mips.c:7660 config/tc-mips.c:7667 config/tc-mips.c:7674
-#: config/tc-mips.c:7781
+#: config/tc-mips.c:4328 config/tc-mips.c:4394 config/tc-mips.c:4482
+#: config/tc-mips.c:4529 config/tc-mips.c:4590 config/tc-mips.c:4638
+#: config/tc-mips.c:7619 config/tc-mips.c:7626 config/tc-mips.c:7633
+#: config/tc-mips.c:7740
 msgid "Unsupported large constant"
 msgstr "Constante large sin soporte"
 
 #. result is always true
-#: config/tc-mips.c:4403
+#: config/tc-mips.c:4360
 #, c-format
 msgid "Branch %s is always true"
 msgstr "La ramificación %s es siempre verdadera"
 
-#: config/tc-mips.c:4644 config/tc-mips.c:4692 config/tc-mips.c:8106
+#: config/tc-mips.c:4601 config/tc-mips.c:4649 config/tc-mips.c:8309
 #, c-format
 msgid "Improper position (%lu)"
 msgstr "Posición impropia (%lu)"
 
-#: config/tc-mips.c:4650 config/tc-mips.c:8174
+#: config/tc-mips.c:4607 config/tc-mips.c:8376
 #, c-format
 msgid "Improper extract size (%lu, position %lu)"
 msgstr "Tamaño de extract impropio (%lu, posición %lu)"
 
-#: config/tc-mips.c:4698 config/tc-mips.c:8138
+#: config/tc-mips.c:4655 config/tc-mips.c:8340
 #, c-format
 msgid "Improper insert size (%lu, position %lu)"
 msgstr "Tamaño de insert impropio (%lu, posición %lu)"
 
-#: config/tc-mips.c:4735 config/tc-mips.c:4834
+#: config/tc-mips.c:4692 config/tc-mips.c:4789
 msgid "Divide by zero."
 msgstr "División por cero."
 
-#: config/tc-mips.c:4922
+#: config/tc-mips.c:4875
 msgid "dla used to load 32-bit register"
 msgstr "Se usa dla para cargar registros de 32-bit"
 
-#: config/tc-mips.c:4925
+#: config/tc-mips.c:4878
 msgid "la used to load 64-bit address"
 msgstr "Se usa la para cargar registros de 64-bit"
 
-#: config/tc-mips.c:5209 config/tc-mips.c:5488
+#: config/tc-mips.c:4990
+msgid "offset too large"
+msgstr "desplazamiento demasiado grande"
+
+#: config/tc-mips.c:5162 config/tc-mips.c:5441
 msgid "PIC code offset overflow (max 32 signed bits)"
 msgstr "Desbordamiento del desplazamiento del código PIC (máx 32 bits con signo)"
 
-#: config/tc-mips.c:5534
+#: config/tc-mips.c:5487
 msgid "MIPS PIC call to register other than $25"
 msgstr "Llamada PIC MIPS a un registro diferente de $25"
 
-#: config/tc-mips.c:5540 config/tc-mips.c:5551 config/tc-mips.c:5675
-#: config/tc-mips.c:5686
+#: config/tc-mips.c:5493 config/tc-mips.c:5504 config/tc-mips.c:5628
+#: config/tc-mips.c:5639
 msgid "No .cprestore pseudo-op used in PIC code"
 msgstr "No se utilizó el pseudo-operador .cprestore en el código PIC"
 
-#: config/tc-mips.c:5545 config/tc-mips.c:5680
+#: config/tc-mips.c:5498 config/tc-mips.c:5633
 msgid "No .frame pseudo-op used in PIC code"
 msgstr "No se utilizó el pseudo-operador .frame en el código PIC"
 
-#: config/tc-mips.c:5751 config/tc-mips.c:5839 config/tc-mips.c:6379
-#: config/tc-mips.c:6410 config/tc-mips.c:6428 config/tc-mips.c:7072
+#: config/tc-mips.c:5704 config/tc-mips.c:5792 config/tc-mips.c:6338
+#: config/tc-mips.c:6369 config/tc-mips.c:6387 config/tc-mips.c:7037
 msgid "opcode not supported on this processor"
 msgstr "el código de operación no tiene soporte en este procesador"
 
-#: config/tc-mips.c:6938 config/tc-mips.c:6969 config/tc-mips.c:7020
-#: config/tc-mips.c:7050
+#: config/tc-mips.c:6903 config/tc-mips.c:6934 config/tc-mips.c:6985
+#: config/tc-mips.c:7015
 msgid "Improper rotate count"
 msgstr "Cuenta de rotación impropia"
 
-#: config/tc-mips.c:7105
+#: config/tc-mips.c:7070
 #, c-format
 msgid "Instruction %s: result is always false"
 msgstr "Instrucción %s: el resultado es siempre falso"
 
-#: config/tc-mips.c:7251
+#: config/tc-mips.c:7216
 #, c-format
 msgid "Instruction %s: result is always true"
 msgstr "Instrucción %s: el resultado es siempre verdadero"
 
 #. FIXME: Check if this is one of the itbl macros, since they
 #. are added dynamically.
-#: config/tc-mips.c:7558
+#: config/tc-mips.c:7521
 #, c-format
 msgid "Macro %s not implemented yet"
 msgstr "La macro %s aún no está implementada"
 
-#: config/tc-mips.c:7812
+#: config/tc-mips.c:7771
 #, c-format
 msgid "internal: bad mips opcode (mask error): %s %s"
 msgstr "interno: código de operación mips erróneo (error de máscara): %s %s"
 
-#: config/tc-mips.c:7837 config/tc-mips.c:8200
+#: config/tc-mips.c:7799 config/tc-mips.c:8430
 #, c-format
 msgid "internal: bad mips opcode (unknown extension operand type `+%c'): %s %s"
 msgstr "interno: código de operación mips erróneo (tipo de operando `+%c' desconocido): %s %s"
 
-#: config/tc-mips.c:7898
+#: config/tc-mips.c:7876
 #, c-format
 msgid "internal: bad mips opcode (unknown operand type `%c'): %s %s"
 msgstr "interno: código de operación mips erróneo (tipo de operando `%c' desconocido): %s %s"
 
-#: config/tc-mips.c:7905
+#: config/tc-mips.c:7883
 #, c-format
 msgid "internal: bad mips opcode (bits 0x%lx undefined): %s %s"
 msgstr "interno: código de operación mips erróneo (bits 0x%lx indefinidos): %s %s"
 
-#: config/tc-mips.c:8019
+#: config/tc-mips.c:8000
 #, c-format
 msgid "opcode not supported on this processor: %s (%s)"
 msgstr "el código de operación no tiene soporte en este procesador: %s (%s)"
 
-#: config/tc-mips.c:8194 config/tc-mips.c:8684
+#: config/tc-mips.c:8031 config/tc-mips.c:8045 config/tc-mips.c:8059
+#: config/tc-mips.c:8073 config/tc-mips.c:8100 config/tc-mips.c:8147
+#, c-format
+msgid "DSP immediate not in range 0..%d (%lu)"
+msgstr "el inmediato DSP no está en el rango 0..%d (%lu)"
+
+#: config/tc-mips.c:8092 config/tc-mips.c:8120
+msgid "Invalid dsp acc register"
+msgstr "Registro acc dsc inválido"
+
+#: config/tc-mips.c:8131 config/tc-mips.c:8165 config/tc-mips.c:8184
+#, c-format
+msgid "DSP immediate not in range %ld..%ld (%ld)"
+msgstr "El inmediato DSP no está en el rango %ld..%ld (%ld)"
+
+#: config/tc-mips.c:8200 config/tc-mips.c:8214
+#, c-format
+msgid "MT immediate not in range 0..%d (%lu)"
+msgstr "El inmediato MT no está en el rango 0..%d (%lu)"
+
+#: config/tc-mips.c:8233 config/tc-mips.c:8246
+msgid "Invalid dsp/smartmips acc register"
+msgstr "Registro acc dsp/smartmips inválido"
+
+#: config/tc-mips.c:8395 config/tc-mips.c:8899
 msgid "absolute expression required"
 msgstr "se requiere una expresión absoluta"
 
-#: config/tc-mips.c:8218
+#: config/tc-mips.c:8418 config/tc-mips.c:8579
 #, c-format
+msgid "Invalid register number (%d)"
+msgstr "Número de registro inválido (%d)"
+
+#: config/tc-mips.c:8426
+msgid "Invalid coprocessor 0 register number"
+msgstr "Número de registro 0 de coprocesador inválido"
+
+#: config/tc-mips.c:8447
+#, c-format
 msgid "Improper shift amount (%lu)"
 msgstr "Cantidad de desplazamiento impropia (%lu)"
 
-#: config/tc-mips.c:8244 config/tc-mips.c:9517 config/tc-mips.c:9632
+#: config/tc-mips.c:8470 config/tc-mips.c:9731 config/tc-mips.c:9844
 #, c-format
 msgid "Invalid value for `%s' (%lu)"
 msgstr "Valor inválido para `%s' (%lu)"
 
-#: config/tc-mips.c:8262
+#: config/tc-mips.c:8485
 #, c-format
 msgid "Illegal break code (%lu)"
 msgstr "Código de interrupción ilegal (%lu)"
 
-#: config/tc-mips.c:8276
+#: config/tc-mips.c:8496
 #, c-format
 msgid "Illegal lower break code (%lu)"
 msgstr "Código de interrupción inferior ilegal (%lu)"
 
-#: config/tc-mips.c:8289
+#: config/tc-mips.c:8507
 #, c-format
 msgid "Illegal 20-bit code (%lu)"
 msgstr "Código de 20-bit ilegal (%lu)"
 
-#: config/tc-mips.c:8301
+#: config/tc-mips.c:8519
 #, c-format
 msgid "Coproccesor code > 25 bits (%lu)"
 msgstr "Código de coprocesador > 25 bits (%lu)"
 
-#: config/tc-mips.c:8314
+#: config/tc-mips.c:8532
 #, c-format
 msgid "Illegal 19-bit code (%lu)"
 msgstr "Código de 19-bit ilegal (%lu)"
 
-#: config/tc-mips.c:8326
+#: config/tc-mips.c:8543
 #, c-format
 msgid "Invalid performance register (%lu)"
 msgstr "Registro de rendimiento inválido (%lu)"
 
-#: config/tc-mips.c:8364
+#: config/tc-mips.c:8754
 #, c-format
-msgid "Invalid register number (%d)"
-msgstr "Número de registro inválido (%d)"
-
-#: config/tc-mips.c:8542
-#, c-format
 msgid "Invalid MDMX Immediate (%ld)"
 msgstr "Inmediato MDMX inválido (%ld)"
 
-#: config/tc-mips.c:8585
+#: config/tc-mips.c:8794
 #, c-format
 msgid "Invalid float register number (%d)"
 msgstr "Número de registro de coma flotante inválido (%d)"
 
-#: config/tc-mips.c:8595
+#: config/tc-mips.c:8810
 #, c-format
 msgid "Float register should be even, was %d"
 msgstr "El registro de coma flotante debería ser par, era %d"
 
-#: config/tc-mips.c:8634
+#: config/tc-mips.c:8849
 #, c-format
 msgid "Bad element selector %ld"
 msgstr "Selector de elemento %ld erróneo"
 
-#: config/tc-mips.c:8642
+#: config/tc-mips.c:8857
 #, c-format
 msgid "Expecting ']' found '%s'"
 msgstr "Se esperaba ']', se encontró '%s'"
 
-#: config/tc-mips.c:8746
+#: config/tc-mips.c:8963
 #, c-format
 msgid "Bad floating point constant: %s"
 msgstr "Constante de coma flotante errónea: %s"
 
-#: config/tc-mips.c:8867
+#: config/tc-mips.c:9084
 msgid "Can't use floating point insn in this section"
 msgstr "No se pueden utilizar instrucciones de coma flotante en esta sección"
 
-#: config/tc-mips.c:8928
+#: config/tc-mips.c:9145
 msgid "expression out of range"
 msgstr "expresión fuera de rango"
 
-#: config/tc-mips.c:8968
+#: config/tc-mips.c:9185
 msgid "lui expression not in range 0..65535"
 msgstr "la expresión de 16 bit no está en el rango 0..65535"
 
-#: config/tc-mips.c:8992
+#: config/tc-mips.c:9209
 #, c-format
 msgid "Invalid condition code register $fcc%d"
 msgstr "Registro de código de condición $fcc%d inválido"
 
-#: config/tc-mips.c:8997
+#: config/tc-mips.c:9214
 #, c-format
 msgid "Condition code register should be even for %s, was %d"
 msgstr "El registro de código de condición debería ser par para %s, era %d"
 
-#: config/tc-mips.c:9002
+#: config/tc-mips.c:9219
 #, c-format
 msgid "Condition code register should be 0 or 4 for %s, was %d"
 msgstr "El registro de código de condición debería ser 0 o 4 para %s, era %d"
 
-#: config/tc-mips.c:9028
+#: config/tc-mips.c:9245
 msgid "invalid coprocessor sub-selection value (0-7)"
 msgstr "valor de subselección de coprocesador (0-7) inválido"
 
-#: config/tc-mips.c:9040 config/tc-mips.c:9057
+#: config/tc-mips.c:9257 config/tc-mips.c:9274
 #, c-format
 msgid "bad byte vector index (%ld)"
 msgstr "índice de vector de byte erróneo (%ld)"
 
-#: config/tc-mips.c:9068
+#: config/tc-mips.c:9285
 #, c-format
 msgid "bad char = '%c'\n"
 msgstr "carácter erróneo = '%c'\n"
 
-#: config/tc-mips.c:9079 config/tc-mips.c:9084 config/tc-mips.c:9657
+#: config/tc-mips.c:9296 config/tc-mips.c:9301 config/tc-mips.c:9869
 msgid "illegal operands"
 msgstr "operandos ilegales"
 
-#: config/tc-mips.c:9150
+#: config/tc-mips.c:9367
 msgid "unrecognized opcode"
 msgstr "códigos de operación no reconocidos"
 
-#: config/tc-mips.c:9289
+#: config/tc-mips.c:9504
 #, c-format
 msgid "invalid register number (%d)"
 msgstr "número de registro inválido (%d)"
 
-#: config/tc-mips.c:9380
+#: config/tc-mips.c:9595
 msgid "used $at without \".set noat\""
 msgstr "se utilizó $at sin \".set noat\""
 
-#: config/tc-mips.c:9551
+#: config/tc-mips.c:9763
 msgid "can't parse register list"
 msgstr "no se puede decodificar la lista de registros"
 
-#: config/tc-mips.c:9775
+#: config/tc-mips.c:9987
 msgid "extended operand requested but not required"
 msgstr "se solicitó un operando extendido pero no es necesario"
 
-#: config/tc-mips.c:9777
+#: config/tc-mips.c:9989
 msgid "invalid unextended operand value"
 msgstr "valor de operando no extendido inválido"
 
-#: config/tc-mips.c:9805
+#: config/tc-mips.c:10017
 msgid "operand value out of range for instruction"
 msgstr "el valor del operando está fuera de rango por la instrucción"
 
-#: config/tc-mips.c:10245
+#: config/tc-mips.c:10469
 #, c-format
 msgid "A different %s was already specified, is now %s"
 msgstr "Ya se había especificado un %s diferente, ahora es %s"
 
-#: config/tc-mips.c:10441
+#: config/tc-mips.c:10689
 msgid "-call_shared is supported only for ELF format"
 msgstr "-call_shared sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10448 config/tc-mips.c:10477 config/tc-mips.c:11571
-#: config/tc-mips.c:11805
+#: config/tc-mips.c:10696 config/tc-mips.c:10725 config/tc-mips.c:11834
+#: config/tc-mips.c:12060
 msgid "-G may not be used with SVR4 PIC code"
 msgstr "-G no se puede utilizar con código PIC de SVR4"
 
-#: config/tc-mips.c:10457
+#: config/tc-mips.c:10705
 msgid "-non_shared is supported only for ELF format"
 msgstr "-non_shared sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10488
+#: config/tc-mips.c:10736
 msgid "-32 is supported for ELF format only"
 msgstr "-32 sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10497
+#: config/tc-mips.c:10745
 msgid "-n32 is supported for ELF format only"
 msgstr "-n32 sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10506
+#: config/tc-mips.c:10754
 msgid "-64 is supported for ELF format only"
 msgstr "-64 sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10511 config/tc-mips.c:10548
+#: config/tc-mips.c:10759 config/tc-mips.c:10796
 msgid "No compiled in support for 64 bit object file format"
 msgstr "No se compiló el soporte para el formato de fichero objeto de 64 bit"
 
-#: config/tc-mips.c:10535
+#: config/tc-mips.c:10783
 msgid "-mabi is supported for ELF format only"
 msgstr "-mabi sólo tiene soporte para el formato ELF"
 
-#: config/tc-mips.c:10555
+#: config/tc-mips.c:10803
 #, c-format
 msgid "invalid abi -mabi=%s"
 msgstr "interruptor abi -mabi=%s inválido"
 
-#: config/tc-mips.c:10629
+#: config/tc-mips.c:10877
 msgid "-G not supported in this configuration."
 msgstr "-G no tiene soporte en esta configuración."
 
-#: config/tc-mips.c:10655
+#: config/tc-mips.c:10903
 #, c-format
 msgid "-%s conflicts with the other architecture options, which imply -%s"
 msgstr "-%s tiene conflictos con las otras opciones de arquitectura, las cuales implican -%s"
 
-#: config/tc-mips.c:10686
+#: config/tc-mips.c:10934
 msgid "-mgp64 used with a 32-bit processor"
 msgstr "Se utilizó -mgp64 con un procesador de 32-bit"
 
-#: config/tc-mips.c:10688
+#: config/tc-mips.c:10936
 msgid "-mgp32 used with a 64-bit ABI"
 msgstr "se utilizó -mgp32 con un ABI de 64-bit"
 
-#: config/tc-mips.c:10690
+#: config/tc-mips.c:10938
 msgid "-mgp64 used with a 32-bit ABI"
 msgstr "se utilizó -mgp64 con un ABI de 32-bit"
 
-#: config/tc-mips.c:10720
+#: config/tc-mips.c:10968
 msgid "trap exception not supported at ISA 1"
 msgstr "la excepciónd de trampa no tiene soporte en ISA 1"
 
-#: config/tc-mips.c:10974
+#: config/tc-mips.c:11229
 msgid "Cannot branch to undefined symbol."
 msgstr "No se puede ramificar hacia un símbolo indefinido."
 
-#: config/tc-mips.c:10981
+#: config/tc-mips.c:11236
 msgid "Cannot branch to symbol in another section."
 msgstr "No se puede ramificar hacia un símbolo en otra sección."
 
-#: config/tc-mips.c:10990
+#: config/tc-mips.c:11245
 msgid "Pretending global symbol used as branch target is local."
 msgstr "Pretender que se use un símbolo global como objetivo de ramificación es local."
 
-#: config/tc-mips.c:11147 config/tc-sparc.c:3230 config/tc-sparc.c:3237
-#: config/tc-sparc.c:3244 config/tc-sparc.c:3251 config/tc-sparc.c:3258
-#: config/tc-sparc.c:3267 config/tc-sparc.c:3278 config/tc-sparc.c:3300
-#: config/tc-sparc.c:3324 write.c:962 write.c:1034
+#: config/tc-mips.c:11402 config/tc-sparc.c:3229 config/tc-sparc.c:3236
+#: config/tc-sparc.c:3243 config/tc-sparc.c:3250 config/tc-sparc.c:3257
+#: config/tc-sparc.c:3266 config/tc-sparc.c:3277 config/tc-sparc.c:3299
+#: config/tc-sparc.c:3323 write.c:861 write.c:933
 msgid "relocation overflow"
 msgstr "desbordamiento de reubicación"
 
-#: config/tc-mips.c:11157
+#: config/tc-mips.c:11412
 #, c-format
 msgid "Branch to odd address (%lx)"
 msgstr "Ramificación a una dirección impar (%lx)"
 
-#: config/tc-mips.c:11206
+#: config/tc-mips.c:11461
 msgid "Branch out of range"
 msgstr "Ramificación fuera de rango"
 
-#: config/tc-mips.c:11285
+#: config/tc-mips.c:11540
 #, c-format
 msgid "Alignment too large: %d. assumed."
 msgstr "Alineación demasiado grande: se asume %d."
 
-#: config/tc-mips.c:11288
+#: config/tc-mips.c:11543
 msgid "Alignment negative: 0 assumed."
 msgstr "Alineación negativa: se asume 0."
 
-#: config/tc-mips.c:11527
+#: config/tc-mips.c:11780
 #, c-format
 msgid "%s: no such section"
 msgstr "%s: no existe la sección"
 
-#: config/tc-mips.c:11566
+#: config/tc-mips.c:11829
 #, c-format
 msgid ".option pic%d not supported"
 msgstr ".option pic%d no tiene soporte"
 
-#: config/tc-mips.c:11577
+#: config/tc-mips.c:11840
 #, c-format
 msgid "Unrecognized option \"%s\""
 msgstr "Opción \"%s\" no reconocida"
 
-#: config/tc-mips.c:11639
+#: config/tc-mips.c:11893
 msgid "`noreorder' must be set before `nomacro'"
 msgstr "se debe establecer `noreorder' antes de `nomacro'"
 
-#: config/tc-mips.c:11690
+#: config/tc-mips.c:11952
 #, c-format
 msgid "unknown architecture %s"
 msgstr "arquitectura %s desconocida"
 
-#: config/tc-mips.c:11703 config/tc-mips.c:11733
+#: config/tc-mips.c:11965 config/tc-mips.c:11995
 #, c-format
 msgid "unknown ISA level %s"
 msgstr "nivel ISA %s desconocido"
 
-#: config/tc-mips.c:11711
+#: config/tc-mips.c:11973
 #, c-format
 msgid "unknown ISA or architecture %s"
 msgstr "ISA o arquitectura %s desconocidos"
 
-#: config/tc-mips.c:11761
+#: config/tc-mips.c:12023
 msgid ".set pop with no .set push"
 msgstr ".set pop sin .set push"
 
-#: config/tc-mips.c:11789
+#: config/tc-mips.c:12044
 #, c-format
 msgid "Tried to set unrecognized symbol: %s\n"
 msgstr "Se trató de establecer el símbolo no reconocido: %s\n"
 
-#: config/tc-mips.c:11847
+#: config/tc-mips.c:12102
 msgid ".cpload not in noreorder section"
 msgstr ".cpload no está en la sección noreorder"
 
-#: config/tc-mips.c:11916 config/tc-mips.c:11935
+#: config/tc-mips.c:12171 config/tc-mips.c:12190
 msgid "missing argument separator ',' for .cpsetup"
 msgstr "falta el separador de argumentos ',' para .cpsetup"
 
-#: config/tc-mips.c:12125
+#: config/tc-mips.c:12380
 msgid "Unsupported use of .gpword"
 msgstr "Uso sin soporte de .gpword"
 
-#: config/tc-mips.c:12161
+#: config/tc-mips.c:12416
 msgid "Unsupported use of .gpdword"
 msgstr "Uso sin soporte de .gpdword"
 
-#: config/tc-mips.c:12293
+#: config/tc-mips.c:12548
 msgid "expected `$'"
 msgstr "se esperaba `$'"
 
-#: config/tc-mips.c:12301
+#: config/tc-mips.c:12556
 msgid "Bad register number"
 msgstr "Número de registro erróneo"
 
-#: config/tc-mips.c:12349
+#: config/tc-mips.c:12604
 msgid "Unrecognized register name"
 msgstr "Nombre de registro no reconocido"
 
-#: config/tc-mips.c:12582
+#: config/tc-mips.c:12837
 msgid "unsupported PC relative reference to different section"
 msgstr "referencia relativa al PC sin soporte a una sección diferente"
 
-#: config/tc-mips.c:12695 config/tc-xtensa.c:1624 config/tc-xtensa.c:1835
+#: config/tc-mips.c:12950 config/tc-xtensa.c:1593 config/tc-xtensa.c:1804
 msgid "unsupported relocation"
 msgstr "reubicación sin soporte"
 
-#: config/tc-mips.c:12901 config/tc-sh.c:4302
+#: config/tc-mips.c:13158
 #, c-format
 msgid "Can not represent %s relocation in this object file format"
 msgstr "No se puede representar la reubicación %s en este formato de fichero objeto"
 
-#: config/tc-mips.c:12987
+#: config/tc-mips.c:13244
 msgid "relaxed out-of-range branch into a jump"
 msgstr "ramificación relajada fuera de rango en un salto"
 
-#: config/tc-mips.c:13501
+#: config/tc-mips.c:13766
 msgid "missing .end at end of assembly"
 msgstr "falta un .end al final del ensamblado"
 
-#: config/tc-mips.c:13516
+#: config/tc-mips.c:13781
 msgid "expected simple number"
 msgstr "se esperaba un número simple"
 
-#: config/tc-mips.c:13542
+#: config/tc-mips.c:13807
 #, c-format
 msgid " *input_line_pointer == '%c' 0x%02x\n"
 msgstr " *input_line_pointer == '%c' 0x%02x\n"
 
-#: config/tc-mips.c:13544
+#: config/tc-mips.c:13809
 msgid "invalid number"
 msgstr "número inválido"
 
-#: config/tc-mips.c:13617
+#: config/tc-mips.c:13882
 msgid ".end not in text section"
 msgstr ".end no está en la sección text"
 
-#: config/tc-mips.c:13621
+#: config/tc-mips.c:13886
 msgid ".end directive without a preceding .ent directive."
 msgstr "directiva .end sin una directiva .ent precedente."
 
-#: config/tc-mips.c:13630
+#: config/tc-mips.c:13895
 msgid ".end symbol does not match .ent symbol."
 msgstr "el símbolo .end no coincide con el símbolo .ent."
 
-#: config/tc-mips.c:13637
+#: config/tc-mips.c:13902
 msgid ".end directive missing or unknown symbol"
 msgstr "falta la directiva .end o hay un símbolo desconocido"
 
-#: config/tc-mips.c:13713
+#: config/tc-mips.c:13978
 msgid ".ent or .aent not in text section."
 msgstr ".ent o .aent no están en la sección text."
 
-#: config/tc-mips.c:13716
+#: config/tc-mips.c:13981
 msgid "missing .end"
 msgstr "falta un .end"
 
-#: config/tc-mips.c:13768
+#: config/tc-mips.c:14033
 msgid "Bad .frame directive"
 msgstr "Directiva .frame errónea"
 
-#: config/tc-mips.c:13800
+#: config/tc-mips.c:14065
 msgid ".mask/.fmask outside of .ent"
 msgstr ".mask/.fmask fuera de .ent"
 
-#: config/tc-mips.c:13807
+#: config/tc-mips.c:14072
 msgid "Bad .mask/.fmask directive"
 msgstr "Directiva .mask/.fmask errónea"
 
-#: config/tc-mips.c:14064
+#: config/tc-mips.c:14337
 #, c-format
 msgid ""
 "MIPS options:\n"
@@ -7652,7 +7480,7 @@
 "-G NUM\t\t\tpermite la referencia a objetos hasta NUM bytes\n"
 "\t\t\timplícitamente con el registro gp [por defecto 8]\n"
 
-#: config/tc-mips.c:14071
+#: config/tc-mips.c:14344
 #, c-format
 msgid ""
 "-mips1\t\t\tgenerate MIPS ISA I instructions\n"
@@ -7676,7 +7504,7 @@
 "-mips64                 genera instrucciones MIPS64 ISA\n"
 "-march=CPU/-mtune=CPU\tgenera código/calendarización para el CPU, donde CPU es uno de:\n"
 
-#: config/tc-mips.c:14090
+#: config/tc-mips.c:14363
 #, c-format
 msgid ""
 "-mCPU\t\t\tequivalent to -march=CPU -mtune=CPU. Deprecated.\n"
@@ -7687,7 +7515,7 @@
 "-no-mCPU\t\tno genera código específico para el CPU.\n"
 "\t\t\tPara -mCPU y -no-mCPU, CPU debe ser uno de:\n"
 
-#: config/tc-mips.c:14103
+#: config/tc-mips.c:14376
 #, c-format
 msgid ""
 "-mips16\t\t\tgenerate mips16 instructions\n"
@@ -7696,10 +7524,29 @@
 "-mips16\t\t\tgenera instrucciones mips16\n"
 "-no-mips16\t\tno genera instrucciones mips16\n"
 
-#: config/tc-mips.c:14106
+#: config/tc-mips.c:14379
 #, c-format
 msgid ""
+"-mdsp\t\t\tgenerate DSP instructions\n"
+"-mno-dsp\t\tdo not generate DSP instructions\n"
+msgstr ""
+"-mdsp\t\t\tgenera instrucciones DSP\n"
+"-mno-dsp\t\tno genera instrucciones DSP\n"
+
+#: config/tc-mips.c:14382
+#, c-format
+msgid ""
+"-mmt\t\t\tgenerate MT instructions\n"
+"-mno-mt\t\t\tdo not generate MT instructions\n"
+msgstr ""
+"-mmt\t\t\tgenera instrucciones MT\n"
+"-mno-mt\t\tno genera instrucciones MT\n"
+
+#: config/tc-mips.c:14385
+#, c-format
+msgid ""
 "-mfix-vr4120\t\twork around certain VR4120 errata\n"
+"-mfix-vr4130\t\twork around VR4130 mflo/mfhi errata\n"
 "-mgp32\t\t\tuse 32-bit GPRs, regardless of the chosen ISA\n"
 "-mfp32\t\t\tuse 32-bit FPRs, regardless of the chosen ISA\n"
 "-mno-shared\t\toptimize output for executables\n"
@@ -7711,6 +7558,7 @@
 "--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
 msgstr ""
 "-mfix-vr4120\t\tevita ciertos errores de VR4120\n"
+"-mfix-vr4130\t\tevita los errores mflo/mfhi de VR4130\n"
 "-mgp32\t\t\tusa GPRs de 32-bit, sin importar el ISA escogido\n"
 "-mfp32\t\t\tusa FPRS de 32-bit, sin importar el ISA escogido\n"
 "-mno-shared\t\toptimiza la salida para ejecutables\n"
@@ -7721,7 +7569,7 @@
 "--trap, --no-break\texcepción de trampa en div por 0 y desbordamiento de mult\n"
 "--break, --no-trap\texcepción de interrupción en div por 0 y desbordamiento de mult\n"
 
-#: config/tc-mips.c:14118
+#: config/tc-mips.c:14398
 #, c-format
 msgid ""
 "-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
@@ -7740,7 +7588,7 @@
 "                        código que no es compartido\n"
 "-mabi=ABI\t\tcrea un fichero objeto que cumple con el ABI para:\n"
 
-#: config/tc-mips.c:14137
+#: config/tc-mips.c:14417
 #, c-format
 msgid ""
 "-32\t\t\tcreate o32 ABI object file (default)\n"
@@ -7751,12 +7599,12 @@
 "-n32\t\t\tcrea ficheros objeto ABI o32\n"
 "-64\t\t\tcrea ficheros objeto ABI 64\n"
 
-#: config/tc-mmix.c:713
+#: config/tc-mmix.c:694
 #, c-format
 msgid " MMIX-specific command line options:\n"
 msgstr "Opciones de la línea de comandos específicas de MMIX:\n"
 
-#: config/tc-mmix.c:714
+#: config/tc-mmix.c:695
 #, c-format
 msgid ""
 "  -fixed-special-register-names\n"
@@ -7765,22 +7613,22 @@
 "  -fixed-special-register-names\n"
 "                          Sólo permite los nombres de registros especiales originales.\n"
 
-#: config/tc-mmix.c:717
+#: config/tc-mmix.c:698
 #, c-format
 msgid "  -globalize-symbols      Make all symbols global.\n"
 msgstr "  -globalize-symbols      Hace que todos los símbolos sean globales.\n"
 
-#: config/tc-mmix.c:719
+#: config/tc-mmix.c:700
 #, c-format
 msgid "  -gnu-syntax             Turn off mmixal syntax compatibility.\n"
 msgstr "  -gnu-syntax             Desactiva la compatibilidad con la sintaxis mmixal.\n"
 
-#: config/tc-mmix.c:721
+#: config/tc-mmix.c:702
 #, c-format
 msgid "  -relax                  Create linker relaxable code.\n"
 msgstr "  -relax                  Crea código relajable para el enlazador.\n"
 
-#: config/tc-mmix.c:723
+#: config/tc-mmix.c:704
 #, c-format
 msgid ""
 "  -no-predefined-syms     Do not provide mmixal built-in constants.\n"
@@ -7789,7 +7637,7 @@
 "  -no-predefined-syms     No provee las constantes internas de mmixal.\n"
 "                          Implica -fixed-special-register-names.\n"
 
-#: config/tc-mmix.c:726
+#: config/tc-mmix.c:707
 #, c-format
 msgid ""
 "  -no-expand              Do not expand GETA, branches, PUSHJ or JUMP\n"
@@ -7798,17 +7646,17 @@
 "  -no-expand              No expande GETA, ramificaciones, PUSHJ ó JUMP\n"
 "                          a instrucciones múltiples.\n"
 
-#: config/tc-mmix.c:729
+#: config/tc-mmix.c:710
 #, c-format
 msgid "  -no-merge-gregs         Do not merge GREG definitions with nearby values.\n"
 msgstr "  -no-merge-gregs         No mezcla las definiciones GREG con los valores cercanos.\n"
 
-#: config/tc-mmix.c:731
+#: config/tc-mmix.c:712
 #, c-format
 msgid "  -linker-allocated-gregs If there's no suitable GREG definition for the                          operands of an instruction, let the linker resolve.\n"
 msgstr "  -linker-allocated-gregs Si no hay una definición GREG adecuada para                          los operandos de una instrucción, dejar resolver al enlazador.\n"
 
-#: config/tc-mmix.c:734
+#: config/tc-mmix.c:715
 #, c-format
 msgid ""
 "  -x                      Do not warn when an operand to GETA, a branch,\n"
@@ -7821,185 +7669,185 @@
 "                          del rango. El enlazador atrapará cualquier error.\n"
 "                          Implica -linker-allocated-gregs."
 
-#: config/tc-mmix.c:861
+#: config/tc-mmix.c:841
 #, c-format
 msgid "unknown opcode: `%s'"
 msgstr "código de operación desconocido: `%s'"
 
-#: config/tc-mmix.c:983 config/tc-mmix.c:998
+#: config/tc-mmix.c:963 config/tc-mmix.c:978
 msgid "specified location wasn't TETRA-aligned"
 msgstr "la ubicación especificada no estaba TETRA alineada"
 
-#: config/tc-mmix.c:985 config/tc-mmix.c:1000 config/tc-mmix.c:4186
-#: config/tc-mmix.c:4202
+#: config/tc-mmix.c:965 config/tc-mmix.c:980 config/tc-mmix.c:4124
+#: config/tc-mmix.c:4140
 msgid "unaligned data at an absolute location is not supported"
 msgstr "los datos sin alinear en una ubicación absoluta no tienen soporte"
 
-#: config/tc-mmix.c:1110
+#: config/tc-mmix.c:1090
 #, c-format
 msgid "invalid operand to opcode %s: `%s'"
 msgstr "operandos inválidos para el código de operación %s: `%s'"
 
-#: config/tc-mmix.c:1132 config/tc-mmix.c:1159 config/tc-mmix.c:1192
-#: config/tc-mmix.c:1200 config/tc-mmix.c:1217 config/tc-mmix.c:1245
-#: config/tc-mmix.c:1266 config/tc-mmix.c:1291 config/tc-mmix.c:1339
-#: config/tc-mmix.c:1437 config/tc-mmix.c:1462 config/tc-mmix.c:1494
-#: config/tc-mmix.c:1526 config/tc-mmix.c:1556 config/tc-mmix.c:1609
-#: config/tc-mmix.c:1626 config/tc-mmix.c:1653 config/tc-mmix.c:1681
-#: config/tc-mmix.c:1708 config/tc-mmix.c:1734 config/tc-mmix.c:1750
-#: config/tc-mmix.c:1776 config/tc-mmix.c:1792 config/tc-mmix.c:1808
-#: config/tc-mmix.c:1871 config/tc-mmix.c:1887
+#: config/tc-mmix.c:1112 config/tc-mmix.c:1139 config/tc-mmix.c:1172
+#: config/tc-mmix.c:1180 config/tc-mmix.c:1197 config/tc-mmix.c:1225
+#: config/tc-mmix.c:1246 config/tc-mmix.c:1271 config/tc-mmix.c:1319
+#: config/tc-mmix.c:1417 config/tc-mmix.c:1442 config/tc-mmix.c:1474
+#: config/tc-mmix.c:1506 config/tc-mmix.c:1536 config/tc-mmix.c:1589
+#: config/tc-mmix.c:1606 config/tc-mmix.c:1633 config/tc-mmix.c:1661
+#: config/tc-mmix.c:1688 config/tc-mmix.c:1714 config/tc-mmix.c:1730
+#: config/tc-mmix.c:1756 config/tc-mmix.c:1772 config/tc-mmix.c:1788
+#: config/tc-mmix.c:1851 config/tc-mmix.c:1867
 #, c-format
 msgid "invalid operands to opcode %s: `%s'"
 msgstr "operandos inválidos para el código de operación %s: `%s'"
 
-#: config/tc-mmix.c:1864
+#: config/tc-mmix.c:1844
 #, c-format
 msgid "unsupported operands to %s: `%s'"
 msgstr "operandos sin soporte para %s: `%s'"
 
-#: config/tc-mmix.c:1992
+#: config/tc-mmix.c:1969
 msgid "internal: mmix_prefix_name but empty prefix"
 msgstr "interno: hay un mmix_prefix_name pero es un prefijo vacío"
 
-#: config/tc-mmix.c:2037
+#: config/tc-mmix.c:2013
 #, c-format
 msgid "too many GREG registers allocated (max %d)"
 msgstr "se asignaron demasiados registros GREG (máximo %d)"
 
-#: config/tc-mmix.c:2097
+#: config/tc-mmix.c:2071
 msgid "BSPEC already active.  Nesting is not supported."
 msgstr "BSPEC ya está activo.  El anidamiento no tiene soporte."
 
-#: config/tc-mmix.c:2106
+#: config/tc-mmix.c:2080
 msgid "invalid BSPEC expression"
 msgstr "expresión BSPEC inválida"
 
-#: config/tc-mmix.c:2122
+#: config/tc-mmix.c:2096
 #, c-format
 msgid "can't create section %s"
 msgstr "no se puede crear la sección %s"
 
-#: config/tc-mmix.c:2127
+#: config/tc-mmix.c:2101
 #, c-format
 msgid "can't set section flags for section %s"
 msgstr "no se pueden establecer las opciones para la sección %s"
 
-#: config/tc-mmix.c:2149
+#: config/tc-mmix.c:2122
 msgid "ESPEC without preceding BSPEC"
 msgstr "ESPEC sin un BSPEC precedente"
 
-#: config/tc-mmix.c:2179
+#: config/tc-mmix.c:2151
 msgid "missing local expression"
 msgstr "falta una expresión local"
 
-#: config/tc-mmix.c:2424
+#: config/tc-mmix.c:2389
 msgid "operand out of range, instruction expanded"
 msgstr "el operando está fuera de rango, se expande la instrucción"
 
 #. The BFD_RELOC_MMIX_LOCAL-specific message is supposed to be
 #. user-friendly, though a little bit non-substantial.
-#: config/tc-mmix.c:2682
+#: config/tc-mmix.c:2640
 msgid "directive LOCAL must be placed in code or data"
 msgstr "la directiva LOCAL debe estar colocada en el código o en los datos"
 
-#: config/tc-mmix.c:2683
+#: config/tc-mmix.c:2641
 msgid "internal confusion: relocation in a section without contents"
 msgstr "confusión interna: reubiación en una sección sin contenido"
 
-#: config/tc-mmix.c:2797
+#: config/tc-mmix.c:2755
 msgid "internal: BFD_RELOC_MMIX_BASE_PLUS_OFFSET not resolved to section"
 msgstr "interno: BFD_RELOC_MMIX_BASE_PLUS_OFFSET no resuelve a la sección"
 
-#: config/tc-mmix.c:2845
+#: config/tc-mmix.c:2803
 msgid "no suitable GREG definition for operands"
 msgstr "no hay una definición GREG adecuada para los operandos"
 
-#: config/tc-mmix.c:2904
+#: config/tc-mmix.c:2862
 msgid "operands were not reducible at assembly-time"
 msgstr "los operandos no son reducibles en el momento del ensamblado"
 
-#: config/tc-mmix.c:2931
+#: config/tc-mmix.c:2889
 #, c-format
 msgid "cannot generate relocation type for symbol %s, code %s"
 msgstr "no se puede generar el tipo de reubicación para el símbolo %s, código %s"
 
-#: config/tc-mmix.c:2951
+#: config/tc-mmix.c:2909
 #, c-format
 msgid "internal: unhandled label %s"
 msgstr "interno: etiqueta %s sin manejar"
 
-#: config/tc-mmix.c:3005
+#: config/tc-mmix.c:2939
 msgid "[0-9]H labels may not appear alone on a line"
 msgstr "las etiquetas [0-9]H no pueden aparecer solas en una línea"
 
-#: config/tc-mmix.c:3014
+#: config/tc-mmix.c:2948
 msgid "[0-9]H labels do not mix with dot-pseudos"
 msgstr "las etiquetas [0-9]H no se mezclan con pseudo-puntos"
 
-#: config/tc-mmix.c:3078
+#: config/tc-mmix.c:3036
 msgid "invalid characters in input"
 msgstr "caracteres inválidos en la entrada"
 
-#: config/tc-mmix.c:3182
+#: config/tc-mmix.c:3140
 msgid "empty label field for IS"
 msgstr "campo de etiqueta vacío para IS"
 
-#: config/tc-mmix.c:3515
+#: config/tc-mmix.c:3466
 #, c-format
 msgid "internal: unexpected relax type %d:%d"
 msgstr "interno: tipo de relajación inesperado %d:%d"
 
-#: config/tc-mmix.c:3537
+#: config/tc-mmix.c:3488
 msgid "BSPEC without ESPEC."
 msgstr "BSPEC sin un ESPEC."
 
-#: config/tc-mmix.c:3739
+#: config/tc-mmix.c:3688
 msgid "GREG expression too complicated"
 msgstr "expresión GREG demasiado complicada"
 
-#: config/tc-mmix.c:3754
+#: config/tc-mmix.c:3703
 msgid "internal: GREG expression not resolved to section"
 msgstr "interno: la expresión GREG no resuelva a la sección"
 
-#: config/tc-mmix.c:3805
+#: config/tc-mmix.c:3752
 msgid "register section has contents\n"
 msgstr "la sección de registros tiene contenido\n"
 
-#: config/tc-mmix.c:3939
+#: config/tc-mmix.c:3879
 msgid "section change from within a BSPEC/ESPEC pair is not supported"
 msgstr "el cambio de sección desde dentro de una pareja BSPEC/ESPEC no tiene soporte"
 
-#: config/tc-mmix.c:3961
+#: config/tc-mmix.c:3900
 msgid "directive LOC from within a BSPEC/ESPEC pair is not supported"
 msgstr "una directiva LOC desde dentro de una pareja BSPEC/ESPEC no tiene soporte"
 
-#: config/tc-mmix.c:3972
+#: config/tc-mmix.c:3911
 msgid "invalid LOC expression"
 msgstr "expresión LOC inválida"
 
-#: config/tc-mmix.c:3997 config/tc-mmix.c:4023
+#: config/tc-mmix.c:3936 config/tc-mmix.c:3962
 msgid "LOC expression stepping backwards is not supported"
 msgstr "el paso hacia atrás de una expresión LOC no tiene soporte"
 
 #. We will only get here in rare cases involving #NO_APP,
 #. where the unterminated string is not recognized by the
 #. preformatting pass.
-#: config/tc-mmix.c:4107 config/tc-mmix.c:4268
+#: config/tc-mmix.c:4046 config/tc-mmix.c:4206
 msgid "unterminated string"
 msgstr "cadena sin terminar"
 
-#: config/tc-mmix.c:4124
+#: config/tc-mmix.c:4063
 msgid "BYTE expression not a pure number"
 msgstr "la expresión BYTE no es un número puro"
 
 #. Note that mmixal does not allow negative numbers in
 #. BYTE sequences, so neither should we.
-#: config/tc-mmix.c:4133
+#: config/tc-mmix.c:4072
 msgid "BYTE expression not in the range 0..255"
 msgstr "la expresión BYTE no está en el rango 0..255"
 
-#: config/tc-mmix.c:4184 config/tc-mmix.c:4200
+#: config/tc-mmix.c:4122 config/tc-mmix.c:4138
 msgid "data item with alignment larger than location"
 msgstr "elemento de datos con una alineación más grande que la ubicación"
 
@@ -8009,7 +7857,7 @@
 msgid "`&' serial number operator is not supported"
 msgstr "el operador de número serial `&' no tiene soporte"
 
-#: config/tc-mn10200.c:319
+#: config/tc-mn10200.c:305
 #, c-format
 msgid ""
 "MN10200 options:\n"
@@ -8018,14 +7866,14 @@
 "Opciones MN10200:\n"
 "ninguna aún\n"
 
-#: config/tc-mn10200.c:793 config/tc-mn10300.c:1392 config/tc-ppc.c:2120
-#: config/tc-s390.c:1522 config/tc-v850.c:1693
+#: config/tc-mn10200.c:931 config/tc-mn10300.c:1392 config/tc-ppc.c:2135
+#: config/tc-s390.c:1557 config/tc-v850.c:1621
 #, c-format
 msgid "Unrecognized opcode: `%s'"
 msgstr "Código de operación no reconocido: `%s'"
 
-#: config/tc-mn10200.c:1036 config/tc-mn10300.c:1965 config/tc-ppc.c:2599
-#: config/tc-s390.c:1437 config/tc-v850.c:2110
+#: config/tc-mn10200.c:1174 config/tc-mn10300.c:1965 config/tc-ppc.c:2614
+#: config/tc-s390.c:1472 config/tc-v850.c:2026
 #, c-format
 msgid "junk at end of line: `%s'"
 msgstr "basura al final de la línea: `%s'"
@@ -8039,7 +7887,7 @@
 "Opciones de MN10300:\n"
 "ninguna aún\n"
 
-#: config/tc-mn10300.c:1361 config/tc-sh.c:776 read.c:3729
+#: config/tc-mn10300.c:1361 config/tc-sh.c:778 read.c:3871
 #, c-format
 msgid "unsupported BFD relocation size %u"
 msgstr "tamaño de reubicación BFD %u sin soporte"
@@ -8052,43 +7900,43 @@
 msgid "Invalid register specification."
 msgstr "Especificación de registro inválida."
 
-#: config/tc-mn10300.c:2519
+#: config/tc-mn10300.c:2518
 #, c-format
 msgid "Bad relocation fixup type (%d)"
 msgstr "Tipo de compostura de reubicación inválido (%d)"
 
-#: config/tc-msp430.c:502
+#: config/tc-msp430.c:552
 msgid ".profiler pseudo requires at least two operands."
 msgstr "el seudo .profiler requiere por lo menos dos operandos."
 
-#: config/tc-msp430.c:561
+#: config/tc-msp430.c:611
 msgid "unknown profiling flag - ignored."
 msgstr "opción de perfilado desconocida - se ignora."
 
-#: config/tc-msp430.c:577
+#: config/tc-msp430.c:627
 msgid "ambigious flags combination - '.profiler' directive ignored."
 msgstr "combinación de opciones ambigua - se ignora la directiva '.profiler'."
 
-#: config/tc-msp430.c:587
+#: config/tc-msp430.c:637
 msgid "profiling in absolute section? Hm..."
 msgstr "¿perfilando en la sección absoluta? Hm..."
 
-#: config/tc-msp430.c:674
+#: config/tc-msp430.c:726
 #, c-format
 msgid "Known MCU names:\n"
 msgstr "Nombres MCU conocidos:\n"
 
-#: config/tc-msp430.c:677
+#: config/tc-msp430.c:729
 #, c-format
 msgid "\t %s\n"
 msgstr "\t %s\n"
 
-#: config/tc-msp430.c:703
+#: config/tc-msp430.c:755
 #, c-format
 msgid "redefinition of mcu type %s' to %s'"
 msgstr "redefinición del tipo de mcu %s' a %s'"
 
-#: config/tc-msp430.c:733
+#: config/tc-msp430.c:798
 #, c-format
 msgid ""
 "MSP430 options:\n"
@@ -8137,170 +7985,183 @@
 "                  msp430x435  msp430x436  msp430x437\n"
 "                  msp430x447  msp430x448  msp430x449\n"
 
-#: config/tc-msp430.c:943
+#: config/tc-msp430.c:821
 #, c-format
+msgid ""
+"  -mQ - enable relaxation at assembly time. DANGEROUS!\n"
+"  -mP - enable polymorph instructions\n"
+msgstr ""
+"  -mQ - permite la relajación en tiempo de ensamblado. ¡PELIGROSO!\n"
+"  -mP - permite las instrucciones polimórficas\n"
+
+#: config/tc-msp430.c:1011
+#, c-format
 msgid "value %d out of range. Use #lo() or #hi()"
 msgstr "el valor %d está fuera de rango. Utilice #lo() o #hi()"
 
-#: config/tc-msp430.c:1031
+#: config/tc-msp430.c:1099
 #, c-format
 msgid "unknown expression in operand %s. use #llo() #lhi() #hlo() #hhi() "
 msgstr "expresión desconocida en el operando %s. Utilice #llo() #lhi() #hlo() #hhi() "
 
-#: config/tc-msp430.c:1082
+#: config/tc-msp430.c:1150
 #, c-format
 msgid "Registers cannot be used within immediate expression [%s]"
 msgstr "Los registros no se pueden usar en la expresión inmediata [%s]"
 
-#: config/tc-msp430.c:1084
+#: config/tc-msp430.c:1152
 #, c-format
 msgid "unknown operand %s"
 msgstr "operando %s desconocido"
 
-#: config/tc-msp430.c:1106 config/tc-msp430.c:1241
+#: config/tc-msp430.c:1174 config/tc-msp430.c:1309
 #, c-format
 msgid "value out of range: %d"
 msgstr "valor fuera de rango: %d"
 
-#: config/tc-msp430.c:1117
+#: config/tc-msp430.c:1185
 #, c-format
 msgid "Registers cannot be used within absolute expression [%s]"
 msgstr "Los registros no se pueden usar en la expresión absoluta [%s]"
 
-#: config/tc-msp430.c:1119 config/tc-msp430.c:1262
+#: config/tc-msp430.c:1187 config/tc-msp430.c:1330
 #, c-format
 msgid "unknown expression in operand %s"
 msgstr "expresión desconocida en el operando %s"
 
-#: config/tc-msp430.c:1133 config/tc-msp430.c:1140
+#: config/tc-msp430.c:1201 config/tc-msp430.c:1208
 #, c-format
 msgid "unknown addressing mode %s"
 msgstr "modo de direccionamiento %s desconocido"
 
-#: config/tc-msp430.c:1148
+#: config/tc-msp430.c:1216
 #, c-format
 msgid "Bad register name r%s"
 msgstr "Nombre de registro r%s erróneo"
 
-#: config/tc-msp430.c:1160
+#: config/tc-msp430.c:1228
 #, c-format
 msgid "MSP430 does not have %d registers"
 msgstr "MSP430 no tiene %d registros"
 
-#: config/tc-msp430.c:1180
+#: config/tc-msp430.c:1248
 msgid "')' required"
 msgstr "se requiere ')'"
 
-#: config/tc-msp430.c:1193
+#: config/tc-msp430.c:1261
 #, c-format
 msgid "unknown operator %s. Did you mean X(Rn) or #[hl][hl][oi](CONST) ?"
 msgstr "operador %s desconocido. ¿ Quiere decir X(Rn) ó #[hl][hl][oi](CONST) ?"
 
-#: config/tc-msp430.c:1202
+#: config/tc-msp430.c:1270
 #, c-format
 msgid "unknown operator (r%s substituded as a register name"
 msgstr "operador desconocido (se sustituyó r%s como un nombre de registro"
 
-#: config/tc-msp430.c:1214 config/tc-msp430.c:1225
+#: config/tc-msp430.c:1282 config/tc-msp430.c:1293
 #, c-format
 msgid "unknown operator %s"
 msgstr "operador %s desconocido"
 
-#: config/tc-msp430.c:1219
+#: config/tc-msp430.c:1287
 msgid "r2 should not be used in indexed addressing mode"
 msgstr "no se debe usar r2 en el modo de direccionamiento indizado"
 
-#: config/tc-msp430.c:1260
+#: config/tc-msp430.c:1328
 #, c-format
 msgid "Registers cannot be used as a prefix of indexed expression [%s]"
 msgstr "Los registros no se pueden usar en la expresión indizada [%s]"
 
 #. Unreachable.
-#: config/tc-msp430.c:1309
+#: config/tc-msp430.c:1377
 #, c-format
 msgid "unknown addressing mode for operand %s"
 msgstr "modo de direccionamiento desconocido para el operando %s"
 
-#: config/tc-msp430.c:1334
+#: config/tc-msp430.c:1402
 #, c-format
 msgid "Internal bug. Try to use 0(r%d) instead of @r%d"
 msgstr "Bicho interno. Intente utilizar 0(r%d) en lugar de @r%d"
 
-#: config/tc-msp430.c:1344
+#: config/tc-msp430.c:1412
 msgid "this addressing mode is not applicable for destination operand"
 msgstr "Este modo de direccionamiento no se puede aplicar al operando destino"
 
-#: config/tc-msp430.c:1388
+#: config/tc-msp430.c:1456
 #, c-format
 msgid "instruction %s requires %d operand(s)"
 msgstr "La instrucción %s requiere de %d operando(s)"
 
-#: config/tc-msp430.c:1634
+#: config/tc-msp430.c:1709
 #, c-format
 msgid "Even number required. Rounded to %d"
 msgstr "Se requiere un número par. Se redondea a %d"
 
-#: config/tc-msp430.c:1645
+#: config/tc-msp430.c:1720
 #, c-format
 msgid "Wrong displacement  %d"
 msgstr "Desubicación errónea  %d"
 
-#: config/tc-msp430.c:1662
+#: config/tc-msp430.c:1737
 msgid "instruction requires label sans '$'"
 msgstr "la instrucción requiere una etiqueta sin '$'"
 
-#: config/tc-msp430.c:1668
+#: config/tc-msp430.c:1742
 msgid "instruction requires label or value in range -511:512"
 msgstr "la instrucción requiere una etiqueta o valor en el rango -511:512"
 
-#: config/tc-msp430.c:1674 config/tc-msp430.c:1707 config/tc-msp430.c:1739
+#: config/tc-msp430.c:1749 config/tc-msp430.c:1793 config/tc-msp430.c:1832
 msgid "instruction requires label"
 msgstr "La instrucción requiere una etiqueta"
 
-#: config/tc-msp430.c:1743
+#: config/tc-msp430.c:1757 config/tc-msp430.c:1799
+msgid "polymorphs are not enabled. Use -mP option to enable."
+msgstr "los polimórficos no están activados. Use la opción -mP para activar."
+
+#: config/tc-msp430.c:1836
 msgid "Ilegal instruction or not implmented opcode."
 msgstr "Instrucción ilegal o código de operación no implementado."
 
-#: config/tc-msp430.c:2075
+#: config/tc-msp430.c:2187
 #, c-format
 msgid "internal inconsistency problem in %s: insn %04lx"
 msgstr "problema de inconsistencia interna en %s: insn %04lx"
 
-#: config/tc-msp430.c:2105 config/tc-msp430.c:2128
+#: config/tc-msp430.c:2217 config/tc-msp430.c:2240
 #, c-format
 msgid "internal inconsistency problem in %s: ext. insn %04lx"
 msgstr "problema de inconsistencia interna en %s: ext. insn %04lx"
 
-#: config/tc-msp430.c:2140
+#: config/tc-msp430.c:2252
 #, c-format
 msgid "internal inconsistency problem in %s:  %lx"
 msgstr "problema de inconsistencia interna en %s:  %lx"
 
-#: config/tc-ns32k.c:449
+#: config/tc-ns32k.c:441
 msgid "Invalid syntax in PC-relative addressing mode"
 msgstr "Sintaxis inválida en el modo de direccionamiento relativo al PC"
 
-#: config/tc-ns32k.c:473
+#: config/tc-ns32k.c:465
 msgid "Invalid syntax in External addressing mode"
 msgstr "Sintaxis inválida en el modo de direccionamiento Externo"
 
-#: config/tc-ns32k.c:554
+#: config/tc-ns32k.c:546
 msgid "Invalid syntax in Memory Relative addressing mode"
 msgstr "Sintaxis inválida en el modo de direccionamiento Relativo a Memoria"
 
-#: config/tc-ns32k.c:621
+#: config/tc-ns32k.c:613
 msgid "Invalid scaled-indexed mode, use (b,w,d,q)"
 msgstr "Modo escalado-indizado inválido, utilice (b,w,d,q)"
 
-#: config/tc-ns32k.c:626
+#: config/tc-ns32k.c:618
 msgid "Syntax in scaled-indexed mode, use [Rn:m] where n=[0..7] m={b,w,d,q}"
 msgstr "Sintaxis en el modo escalado-indizado, utilice [Rn:m] donde n=[0..7] m={b,w,d,q}"
 
-#: config/tc-ns32k.c:631
+#: config/tc-ns32k.c:623
 msgid "Scaled-indexed addressing mode combined with scaled-index"
 msgstr "Modo de direccionamiento escalado-indizado combinado con índice-escalado"
 
-#: config/tc-ns32k.c:642
+#: config/tc-ns32k.c:634
 msgid "Invalid or illegal addressing mode combined with scaled-index"
 msgstr "Modo de direccionamiento inválido o ilegal combiando con índice-escalado"
 
@@ -8312,35 +8173,35 @@
 msgid "Bad suffix after ':' use {b|w|d} Defaulting to d"
 msgstr "Sufijo erróneo después de ':' utilice {b|w|d} Cambiando por defecto a d"
 
-#: config/tc-ns32k.c:817
+#: config/tc-ns32k.c:815
 msgid "Very short instr to option, ie you can't do it on a NULLstr"
 msgstr "Instrucción muy corta para la opción, p.e. no lo puede hacer en un NULLstr"
 
-#: config/tc-ns32k.c:870
+#: config/tc-ns32k.c:865
 msgid "No such entry in list. (cpu/mmu register)"
 msgstr "No existe esa entrada en la lista. (registros cpu/mmu)"
 
-#: config/tc-ns32k.c:915
+#: config/tc-ns32k.c:922
 msgid "Internal consistency error.  check ns32k-opcode.h"
 msgstr "Error de consistencia interno.  revise ns32k-opcode.h"
 
-#: config/tc-ns32k.c:939
+#: config/tc-ns32k.c:946
 msgid "Address of immediate operand"
 msgstr "Dirección del operando inmediato"
 
-#: config/tc-ns32k.c:940
+#: config/tc-ns32k.c:947
 msgid "Invalid immediate write operand."
 msgstr "Operando de escritura inmediato inválido."
 
-#: config/tc-ns32k.c:1070
+#: config/tc-ns32k.c:1077
 msgid "Bad opcode-table-option, check in file ns32k-opcode.h"
 msgstr "Opción-de-tabla-de-códigos-de-operación errónea, revise en el fichero ns32k-opcode.h"
 
-#: config/tc-ns32k.c:1107
+#: config/tc-ns32k.c:1110
 msgid "No such opcode"
 msgstr "No existe ese código de operación"
 
-#: config/tc-ns32k.c:1184
+#: config/tc-ns32k.c:1185
 msgid "Bad suffix, defaulting to d"
 msgstr "Sufijo erróneo, cambiando por defecto a d"
 
@@ -8349,94 +8210,94 @@
 msgstr "Se pasaron demasiados operandos a la instrucción"
 
 #. Check error in default.
-#: config/tc-ns32k.c:1225
+#: config/tc-ns32k.c:1224
 msgid "Wrong numbers of operands in default, check ns32k-opcodes.h"
 msgstr "Número erróneo de operandos por defecto, revise ns32k-opcodes.h"
 
-#: config/tc-ns32k.c:1229
+#: config/tc-ns32k.c:1227
 msgid "Wrong number of operands"
 msgstr "Número erróneo de operandos"
 
-#: config/tc-ns32k.c:1355
-msgid "iif convert internal pcrel/binary"
-msgstr "iif convierte a pcrel/binario interno"
-
-#: config/tc-ns32k.c:1372
-msgid "Bignum too big for long"
-msgstr "Número grande demasiado grande para long"
-
-#: config/tc-ns32k.c:1451
-msgid "iif convert internal pcrel/pointer"
-msgstr "iif convierte a pcrel/puntero interno"
-
-#: config/tc-ns32k.c:1456
-msgid "Internal logic error in iif.iifP[n].type"
-msgstr "Error interno de lógica en iif.iifP[n].tipo"
-
-#. We cant relax this case.
-#: config/tc-ns32k.c:1493
-msgid "Can't relax difference"
-msgstr "No se puede relajar la diferencia"
-
-#: config/tc-ns32k.c:1541
-msgid "Displacement to large for :d"
-msgstr "Desubicación demasiado grande para :d"
-
-#: config/tc-ns32k.c:1554
-msgid "Internal logic error in iif.iifP[].type"
-msgstr "Error interno de lógica en iif.iifP[].tipo"
-
-#: config/tc-ns32k.c:1614
+#: config/tc-ns32k.c:1300
 #, c-format
 msgid "Can not do %d byte pc-relative relocation for storage type %d"
 msgstr "No se puede hacer la reubicación relativa al pc de %d byte para el tipo de almacenamiento %d"
 
-#: config/tc-ns32k.c:1617
+#: config/tc-ns32k.c:1303
 #, c-format
 msgid "Can not do %d byte relocation for storage type %d"
 msgstr "No se puede hacer la reubicación de %d byte para el tipo de almacenamiento %d"
 
-#. Fatal.
-#: config/tc-ns32k.c:1652
+#: config/tc-ns32k.c:1395
 #, c-format
-msgid "Can't hash %s: %s"
-msgstr "No se puede dispersar %s: %s"
-
-#: config/tc-ns32k.c:1740
-#, c-format
 msgid "value of %ld out of byte displacement range."
 msgstr "valor de %ld fuera del rango de desubicación de byte."
 
-#: config/tc-ns32k.c:1749
+#: config/tc-ns32k.c:1405
 #, c-format
 msgid "value of %ld out of word displacement range."
 msgstr "valor de %ld fuera del rango de desubicación de word."
 
-#: config/tc-ns32k.c:1763
+#: config/tc-ns32k.c:1420
 #, c-format
 msgid "value of %ld out of double word displacement range."
 msgstr "valor de %ld fuera del rango de desubicación de doble word."
 
-#: config/tc-ns32k.c:1783
+#: config/tc-ns32k.c:1441
 #, c-format
 msgid "Internal logic error.  line %d, file \"%s\""
 msgstr "Error lógico interno.  línea %d, fichero \"%s\""
 
-#: config/tc-ns32k.c:1831
+#: config/tc-ns32k.c:1489
 #, c-format
 msgid "Internal logic error. line %d, file \"%s\""
 msgstr "Error lógico interno. línea %d, fichero \"%s\""
 
-#: config/tc-ns32k.c:1936
+#: config/tc-ns32k.c:1590
 msgid "Bit field out of range"
 msgstr "Campo de bits fuera de rango"
 
-#: config/tc-ns32k.c:2180
+#: config/tc-ns32k.c:1690
+msgid "iif convert internal pcrel/binary"
+msgstr "iif convierte a pcrel/binario interno"
+
+#: config/tc-ns32k.c:1707
+msgid "Bignum too big for long"
+msgstr "Número grande demasiado grande para long"
+
+#: config/tc-ns32k.c:1784
+msgid "iif convert internal pcrel/pointer"
+msgstr "iif convierte a pcrel/puntero interno"
+
+#: config/tc-ns32k.c:1789
+msgid "Internal logic error in iif.iifP[n].type"
+msgstr "Error interno de lógica en iif.iifP[n].tipo"
+
+#. We cant relax this case.
+#: config/tc-ns32k.c:1825
+msgid "Can't relax difference"
+msgstr "No se puede relajar la diferencia"
+
+#: config/tc-ns32k.c:1866
+msgid "Displacement to large for :d"
+msgstr "Desubicación demasiado grande para :d"
+
+#: config/tc-ns32k.c:1879
+msgid "Internal logic error in iif.iifP[].type"
+msgstr "Error interno de lógica en iif.iifP[].tipo"
+
+#. Fatal.
+#: config/tc-ns32k.c:1911
 #, c-format
+msgid "Can't hash %s: %s"
+msgstr "No se puede dispersar %s: %s"
+
+#: config/tc-ns32k.c:2181
+#, c-format
 msgid "invalid architecture option -m%s, ignored"
 msgstr "opción de arquitectura -m%s inválida, se ignora"
 
-#: config/tc-ns32k.c:2193
+#: config/tc-ns32k.c:2194
 #, c-format
 msgid "invalid default displacement size \"%s\". Defaulting to %d."
 msgstr "tamaño de desubicación por defecto \"%s\" inválido. Cambiando a %d por defecto."
@@ -8452,70 +8313,71 @@
 "-m32032 | -m32532\tselecciona la variante de la arquitectura NS32K\n"
 "--disp-size-default=<1|2|4>\n"
 
-#: config/tc-ns32k.c:2394
+#: config/tc-ns32k.c:2285
 #, c-format
 msgid "Cannot find relocation type for symbol %s, code %d"
 msgstr "No se puede encontrar el tipo de reubicación para el símbolo %s, código %d"
 
-#: config/tc-or32.c:465 config/tc-or32.c:676
+#: config/tc-or32.c:360
 #, c-format
 msgid "unknown opcode1: `%s'"
 msgstr "código de operación1 desconocido: `%s'"
 
-#: config/tc-or32.c:471 config/tc-or32.c:682
+#: config/tc-or32.c:366
 #, c-format
 msgid "unknown opcode2 `%s'."
 msgstr "código de operación2 `%s' desconocido."
 
-#: config/tc-or32.c:510 config/tc-or32.c:721
+#: config/tc-or32.c:403
 #, c-format
 msgid "instruction not allowed: %s"
 msgstr "no se permite la instrucción: %s"
 
-#: config/tc-or32.c:513 config/tc-or32.c:724
+#: config/tc-or32.c:406
 #, c-format
 msgid "too many operands: %s"
 msgstr "demasiados operandos: %s"
 
-#: config/tc-or32.c:599 config/tc-or32.c:811
+#: config/tc-or32.c:490
 msgid "call/jmp target out of range (1)"
 msgstr "objetivo call/jmp fuera de rango (1)"
 
-#: config/tc-or32.c:1004 config/tc-or32.c:1112
+#: config/tc-or32.c:674
 msgid "call/jmp target out of range (2)"
 msgstr "objetivo call/jmp fuera de rango (2)"
 
-#: config/tc-or32.c:1402
-msgid "register out of range"
-msgstr "registro fuera de rango"
+#: config/tc-or32.c:693
+#, c-format
+msgid "bad relocation type: 0x%02x"
+msgstr "tipo de reubicación erróneo: 0x%02x"
 
-#: config/tc-or32.c:1447
+#: config/tc-or32.c:885
 msgid "invalid register in & expression"
 msgstr "registro inválido en la expresión &"
 
-#: config/tc-pdp11.c:431
+#: config/tc-pdp11.c:490
 msgid "Low order bits truncated in immediate float operand"
 msgstr "Se truncaron los bits de orden inferior en el operando de coma flotante inmediato"
 
-#: config/tc-pdp11.c:620
+#: config/tc-pdp11.c:679
 #, c-format
 msgid "Unknown instruction '%s'"
 msgstr "Instrucción '%s' desconocida"
 
-#: config/tc-pj.c:83 config/tc-pj.c:91
+#: config/tc-pj.c:66 config/tc-pj.c:75
 msgid "confusing relocation expressions"
 msgstr "expresiones de reubicación confusas"
 
-#: config/tc-pj.c:182
+#: config/tc-pj.c:158
 msgid "can't have relocation for ipush"
 msgstr "no se puede tener una reubicación para ipush"
 
-#: config/tc-pj.c:289
+#: config/tc-pj.c:261
 #, c-format
 msgid "unknown opcode %s"
 msgstr "código de operación %s desconocido"
 
-#: config/tc-pj.c:438
+#: config/tc-pj.c:404
 #, c-format
 msgid ""
 "PJ options:\n"
@@ -8526,8 +8388,8 @@
 "-little\t\t\tgenera código little endian\n"
 "-big\t\t\tgenera código big endian\n"
 
-#: config/tc-pj.c:468 config/tc-sh.c:3978 config/tc-sh.c:3985
-#: config/tc-sh.c:3992 config/tc-sh.c:3999
+#: config/tc-pj.c:431 config/tc-sh.c:3955 config/tc-sh.c:3962
+#: config/tc-sh.c:3969 config/tc-sh.c:3976
 msgid "pcrel too far"
 msgstr "pcrel demasiado lejos"
 
@@ -8539,17 +8401,17 @@
 msgid "estimate size\n"
 msgstr "tamaño estimado\n"
 
-#: config/tc-ppc.c:980
+#: config/tc-ppc.c:991
 #, c-format
 msgid "%s unsupported"
 msgstr "%s no tiene soporte"
 
-#: config/tc-ppc.c:1046 config/tc-s390.c:415 config/tc-s390.c:422
+#: config/tc-ppc.c:1057 config/tc-s390.c:417 config/tc-s390.c:424
 #, c-format
 msgid "invalid switch -m%s"
 msgstr "interruptor -m%s inválido"
 
-#: config/tc-ppc.c:1083
+#: config/tc-ppc.c:1094
 #, c-format
 msgid ""
 "PowerPC options:\n"
@@ -8579,7 +8441,7 @@
 "-m7400, -m7410, -m7450, -m7455\n"
 "\t\t\tgenera código para PowerPC 7400/7410/7450/7455\n"
 
-#: config/tc-ppc.c:1097
+#: config/tc-ppc.c:1108
 #, c-format
 msgid ""
 "-mppc64, -m620\t\tgenerate code for PowerPC 620/625/630\n"
@@ -8587,6 +8449,7 @@
 "-mbooke64\t\tgenerate code for 64-bit PowerPC BookE\n"
 "-mbooke, mbooke32\tgenerate code for 32-bit PowerPC BookE\n"
 "-mpower4\t\tgenerate code for Power4 architecture\n"
+"-mpower5\t\tgenerate code for Power5 architecture\n"
 "-mcom\t\t\tgenerate code Power/PowerPC common instructions\n"
 "-many\t\t\tgenerate code for any architecture (PWR/PWRX/PPC)\n"
 msgstr ""
@@ -8596,25 +8459,28 @@
 "-mbooke64\t\tgenera código para PowerPC BookE de 64-bit\n"
 "-mbooke, mbooke32\tgenera código para PowerPC BookE de 32-bit\n"
 "-mpower4\t\tgenera código para la arquitectura Power4\n"
+"-mpower5\t\tgenera código para la arquitectura Power5\n"
 "-mcom\t\t\tgenera código de instrucciones comunes Power/PowerPC\n"
 "-many\t\t\tgenera código para cualquier arquitectura (PWR/PWRX/PPC)\n"
 
-#: config/tc-ppc.c:1105
+#: config/tc-ppc.c:1117
 #, c-format
 msgid ""
 "-maltivec\t\tgenerate code for AltiVec\n"
+"-me300\t\t\tgenerate code for PowerPC e300 family\n"
 "-me500, -me500x2\tgenerate code for Motorola e500 core complex\n"
 "-mspe\t\t\tgenerate code for Motorola SPE instructions\n"
 "-mregnames\t\tAllow symbolic names for registers\n"
 "-mno-regnames\t\tDo not allow symbolic names for registers\n"
 msgstr ""
 "-maltivec\t\tgenera código para AltiVec\n"
+"-me300\t\t\tgenera código para la familia PowerPC e300\n"
 "-me500, -me500x2\tgenera código para el núcleo complejo Motorola e500\n"
 "-mspe\t\t\tgenera código para las instrucciones Motorola SPE\n"
 "-mregnames\t\tPermite nombres simbólicos para los registros\n"
 "-mno-regnames\t\tNo permite nombres simbólicos para los registros\n"
 
-#: config/tc-ppc.c:1112
+#: config/tc-ppc.c:1125
 #, c-format
 msgid ""
 "-mrelocatable\t\tsupport for GCC's -mrelocatble option\n"
@@ -8641,251 +8507,251 @@
 "-V\t\t\tmuestra el número de versión del ensamblador\n"
 "-Qy, -Qn\t\tse ignora\n"
 
-#: config/tc-ppc.c:1154
+#: config/tc-ppc.c:1162
 #, c-format
 msgid "Unknown default cpu = %s, os = %s"
 msgstr "Cpu por defecto desconocido = %s, os = %s"
 
-#: config/tc-ppc.c:1180
+#: config/tc-ppc.c:1188
 msgid "Neither Power nor PowerPC opcodes were selected."
 msgstr "No se escogieron los códigos de operación Power ni PowerPC"
 
-#: config/tc-ppc.c:1270 config/tc-s390.c:517
+#: config/tc-ppc.c:1285 config/tc-s390.c:519
 #, c-format
 msgid "Internal assembler error for instruction %s"
 msgstr "Error interno del ensamblador para la instrucción %s"
 
-#: config/tc-ppc.c:1294
+#: config/tc-ppc.c:1309
 #, c-format
 msgid "Internal assembler error for macro %s"
 msgstr "Error interno del ensamblador para la macro %s"
 
-#: config/tc-ppc.c:1625
+#: config/tc-ppc.c:1640
 msgid "identifier+constant at got means identifier at got+constant"
 msgstr "identificador+constante at got significa identificador at got+constante"
 
-#: config/tc-ppc.c:1692
+#: config/tc-ppc.c:1707
 #, c-format
 msgid "%s relocations do not fit in %d bytes\n"
 msgstr "%s reubicaciones no caben en %d bytes\n"
 
-#: config/tc-ppc.c:1799
+#: config/tc-ppc.c:1814
 #, c-format
 msgid "Length of .lcomm \"%s\" is already %ld. Not changed to %ld."
 msgstr "La longitud de .lcomm \"%s\" ya es %ld. No se cambió a %ld."
 
-#: config/tc-ppc.c:1881
+#: config/tc-ppc.c:1896
 msgid "Relocation cannot be done when using -mrelocatable"
 msgstr "No se puede hacer la reubicación cuando se utiliza -mrelocatable"
 
-#: config/tc-ppc.c:1930
+#: config/tc-ppc.c:1945
 msgid "TOC section size exceeds 64k"
 msgstr "el tamaño de la sección TOC excede los 64k"
 
-#: config/tc-ppc.c:2012
+#: config/tc-ppc.c:2027
 #, c-format
 msgid "syntax error: invalid toc specifier `%s'"
 msgstr "error sintáctico: especificador de tabla de contenidos `%s' inválido"
 
-#: config/tc-ppc.c:2026
+#: config/tc-ppc.c:2041
 #, c-format
 msgid "syntax error: expected `]', found  `%c'"
 msgstr "error sintáctico: se esperaba `]', se obtuvo  `%c'"
 
-#: config/tc-ppc.c:2305
+#: config/tc-ppc.c:2320
 msgid "[tocv] symbol is not a toc symbol"
 msgstr "el símbolo [tocv] no es un símbolo de tabla de contenido"
 
-#: config/tc-ppc.c:2316
+#: config/tc-ppc.c:2331
 msgid "Unimplemented toc32 expression modifier"
 msgstr "Modificador de expresión toc32 sin implementar"
 
-#: config/tc-ppc.c:2321
+#: config/tc-ppc.c:2336
 msgid "Unimplemented toc64 expression modifier"
 msgstr "Modificador de expresión toc64 sin implementar"
 
-#: config/tc-ppc.c:2325
+#: config/tc-ppc.c:2340
 #, c-format
 msgid "Unexpected return value [%d] from parse_toc_entry!\n"
 msgstr "¡Valor de devolución inesperado [%d] de parse_toc_entry!\n"
 
-#: config/tc-ppc.c:2543
+#: config/tc-ppc.c:2558
 msgid "unsupported relocation for DS offset field"
 msgstr "tipo de reubicación sin soporte para el campo de desplazamiento DS"
 
-#: config/tc-ppc.c:2587
+#: config/tc-ppc.c:2602
 #, c-format
 msgid "syntax error; found `%c' but expected `%c'"
 msgstr "error sintáctico; se encontró `%c' pero se esperaba `%c'"
 
-#: config/tc-ppc.c:2630 config/tc-ppc.h:117
+#: config/tc-ppc.c:2645 config/tc-ppc.h:111
 msgid "instruction address is not a multiple of 4"
 msgstr "la dirección de la instrucción no es un múltiplo de 4"
 
-#: config/tc-ppc.c:2741
+#: config/tc-ppc.c:2756
 msgid "wrong number of operands"
 msgstr "número erróneo de operandos"
 
-#: config/tc-ppc.c:2797
+#: config/tc-ppc.c:2812
 msgid "Bad .section directive: want a,e,w,x,M,S,G,T in string"
 msgstr "Directiva .section errónea: se quiere a,e,w,x,M,S,G,T en la cadena"
 
-#: config/tc-ppc.c:2912
+#: config/tc-ppc.c:2927
 msgid "missing size"
 msgstr "falta el tamaño"
 
-#: config/tc-ppc.c:2921
+#: config/tc-ppc.c:2936
 msgid "negative size"
 msgstr "tamaño negativo"
 
-#: config/tc-ppc.c:2958
+#: config/tc-ppc.c:2973
 msgid "missing real symbol name"
 msgstr "falta el nombre real del símbolo"
 
-#: config/tc-ppc.c:2979
+#: config/tc-ppc.c:2994
 msgid "attempt to redefine symbol"
 msgstr "se intentó redefinir el símbolo"
 
-#: config/tc-ppc.c:3226
+#: config/tc-ppc.c:3241
 msgid "The XCOFF file format does not support arbitrary sections"
 msgstr "El formato del fichero XCOFF no tiene soporte para secciones arbitrarias"
 
-#: config/tc-ppc.c:3303
+#: config/tc-ppc.c:3318
 msgid "missing rename string"
 msgstr "falta la cadena para renombrar"
 
-#: config/tc-ppc.c:3334 config/tc-ppc.c:3889 read.c:3035
+#: config/tc-ppc.c:3349 config/tc-ppc.c:3904 read.c:3064
 msgid "missing value"
 msgstr "falta el valor"
 
-#: config/tc-ppc.c:3352
+#: config/tc-ppc.c:3367
 msgid "illegal .stabx expression; zero assumed"
 msgstr "expresión .stabx ilegal; se asume cero"
 
-#: config/tc-ppc.c:3384
+#: config/tc-ppc.c:3399
 msgid "missing class"
 msgstr "falta la clase"
 
-#: config/tc-ppc.c:3393
+#: config/tc-ppc.c:3408
 msgid "missing type"
 msgstr "falta el tipo"
 
-#: config/tc-ppc.c:3474
+#: config/tc-ppc.c:3489
 msgid "missing symbol name"
 msgstr "falta el nombre del símbolo"
 
-#: config/tc-ppc.c:3668
+#: config/tc-ppc.c:3683
 msgid "nested .bs blocks"
 msgstr "bloques .bs anidados"
 
-#: config/tc-ppc.c:3701
+#: config/tc-ppc.c:3716
 msgid ".es without preceding .bs"
 msgstr ".es sin un .bs precedente"
 
-#: config/tc-ppc.c:3881
+#: config/tc-ppc.c:3896
 msgid "non-constant byte count"
 msgstr "cuenta de byte no constante"
 
-#: config/tc-ppc.c:3929
+#: config/tc-ppc.c:3944
 msgid ".tc not in .toc section"
 msgstr ".tc no está en la sección .toc"
 
-#: config/tc-ppc.c:3948
+#: config/tc-ppc.c:3963
 msgid ".tc with no label"
 msgstr ".tc sin etiqueta"
 
-#: config/tc-ppc.c:4040
+#: config/tc-ppc.c:4055
 msgid ".machine stack overflow"
 msgstr "desbordamiento de pila en .machine"
 
-#: config/tc-ppc.c:4047
+#: config/tc-ppc.c:4062
 msgid ".machine stack underflow"
 msgstr "desbordamiento por debajo de la pila en .machine"
 
-#: config/tc-ppc.c:4054
+#: config/tc-ppc.c:4069
 #, c-format
 msgid "invalid machine `%s'"
 msgstr "máquina `%s' inválida"
 
-#: config/tc-ppc.c:4108
+#: config/tc-ppc.c:4123
 msgid "No previous section to return to. Directive ignored."
 msgstr "No hay sección previa a la cual regresar. Se ignora la directiva."
 
 #. Section Contents
 #. unknown
-#: config/tc-ppc.c:4525
+#: config/tc-ppc.c:4540
 msgid "Unsupported section attribute -- 'a'"
 msgstr "Atributo de sección sin soporte -- 'a'"
 
-#: config/tc-ppc.c:4714
+#: config/tc-ppc.c:4729
 msgid "bad symbol suffix"
 msgstr "sufijo de símbolo erróneo"
 
-#: config/tc-ppc.c:4807
+#: config/tc-ppc.c:4822
 msgid "Unrecognized symbol suffix"
 msgstr "sufijo de símbolo no reconocido"
 
-#: config/tc-ppc.c:4893
+#: config/tc-ppc.c:4912
 msgid "two .function pseudo-ops with no intervening .ef"
 msgstr "dos pseudo-operadores .function sin un .ef que intervenga"
 
-#: config/tc-ppc.c:4906
+#: config/tc-ppc.c:4925
 msgid ".ef with no preceding .function"
 msgstr ".ef sin un .function precedente"
 
-#: config/tc-ppc.c:5034
+#: config/tc-ppc.c:5053
 #, c-format
 msgid "warning: symbol %s has no csect"
 msgstr "aviso: el símbolo %s no tiene csect"
 
-#: config/tc-ppc.c:5338
+#: config/tc-ppc.c:5357
 msgid "symbol in .toc does not match any .tc"
 msgstr "el símbolo en .toc no coincide con ningún .tc"
 
-#: config/tc-ppc.c:5666 config/tc-s390.c:2057 config/tc-v850.c:2408
-#: config/tc-xstormy16.c:555
+#: config/tc-ppc.c:5686 config/tc-s390.c:2092 config/tc-v850.c:2314
+#: config/tc-xstormy16.c:538
 msgid "unresolved expression that must be resolved"
 msgstr "expresión sin resolver que debe ser resuelta"
 
-#: config/tc-ppc.c:5669
+#: config/tc-ppc.c:5689
 #, c-format
 msgid "unsupported relocation against %s"
 msgstr "reubicación sin soporte contra %s"
 
-#: config/tc-ppc.c:5744
+#: config/tc-ppc.c:5762
 #, c-format
 msgid "cannot emit PC relative %s relocation against %s"
 msgstr "no se puede emitir la reubicación %s relativa al PC contra %s"
 
-#: config/tc-ppc.c:5749
+#: config/tc-ppc.c:5767
 #, c-format
 msgid "cannot emit PC relative %s relocation"
 msgstr "no se puede emitir la reubicación %s relativa al PC"
 
-#: config/tc-ppc.c:5905
+#: config/tc-ppc.c:5949
 #, c-format
 msgid "Unable to handle reference to symbol %s"
 msgstr "No se puede manejar la referencia al símbolo %s"
 
-#: config/tc-ppc.c:5908
+#: config/tc-ppc.c:5952
 msgid "Unable to resolve expression"
 msgstr "No se puede resolver la expresión"
 
-#: config/tc-ppc.c:5935
+#: config/tc-ppc.c:5979
 msgid "must branch to an address a multiple of 4"
 msgstr "se debe ramificar a una dirección que sea múltiplo de 4"
 
-#: config/tc-ppc.c:5939
+#: config/tc-ppc.c:5983
 #, c-format
 msgid "@local or @plt branch destination is too far away, %ld bytes"
 msgstr "el destino de la ramificación @local o @plt está demasiado lejos, %ld bytes"
 
-#: config/tc-ppc.c:5970
+#: config/tc-ppc.c:6014
 #, c-format
 msgid "Gas failure, reloc value %d\n"
 msgstr "Falla de gas, valor de reubicación %d\n"
 
-#: config/tc-s390.c:458
+#: config/tc-s390.c:460
 #, c-format
 msgid ""
 "        S390 options:\n"
@@ -8902,7 +8768,7 @@
 "        -m31              Establece el formato del fichero al formato 31 bit\n"
 "        -m64              Establece el formato del fichero al formato 64 bit\n"
 
-#: config/tc-s390.c:465
+#: config/tc-s390.c:467
 #, c-format
 msgid ""
 "        -V                print assembler version number\n"
@@ -8911,75 +8777,70 @@
 "        -V                muestra el número de versión del ensamblador\n"
 "        -Qy, -Qn          se ignora\n"
 
-#: config/tc-s390.c:501
+#: config/tc-s390.c:503
 #, c-format
 msgid "Internal assembler error for instruction format %s"
 msgstr "Error interno del ensamblador para la el formato de instrucción %s"
 
-#: config/tc-s390.c:764
+#: config/tc-s390.c:766
 #, c-format
 msgid "identifier+constant@%s means identifier@%s+constant"
 msgstr "identificador+constante@%s significa identificador@%s+constante"
 
-#: config/tc-s390.c:847
+#: config/tc-s390.c:849
 msgid "Can't handle O_big in s390_exp_compare"
 msgstr "No se puede manejar O_big en s390_exp_compare"
 
-#: config/tc-s390.c:931
+#: config/tc-s390.c:933
 msgid "Invalid suffix for literal pool entry"
 msgstr "Sufijo inválido para la entrada de conjunto de literales"
 
-#: config/tc-s390.c:988
+#: config/tc-s390.c:990
 msgid "Big number is too big"
 msgstr "El número grande es demasiado grande"
 
-#: config/tc-s390.c:1126 config/tc-s390.c:1707 config/tc-xtensa.c:1632
-#, c-format
-msgid "%s relocations do not fit in %d bytes"
-msgstr "%s reubicaciones no caben en %d bytes"
-
-#: config/tc-s390.c:1136
+#: config/tc-s390.c:1138
 msgid "relocation not applicable"
 msgstr "la reubicación no es aplicable"
 
-#: config/tc-s390.c:1324
+#: config/tc-s390.c:1326
 msgid "invalid operand suffix"
 msgstr "sufijo de operando inválido"
 
-#: config/tc-s390.c:1347
+#: config/tc-s390.c:1349
 msgid "syntax error; missing '(' after displacement"
 msgstr "error sintáctico; falta un '(' después de la desubicación"
 
-#: config/tc-s390.c:1357 config/tc-s390.c:1390 config/tc-s390.c:1409
+#: config/tc-s390.c:1365 config/tc-s390.c:1409 config/tc-s390.c:1439
 msgid "syntax error; expected ,"
 msgstr "error sintáctico; se esperaba ,"
 
-#: config/tc-s390.c:1384
+#: config/tc-s390.c:1397
 msgid "syntax error; missing ')' after base register"
 msgstr "error sintáctico; falta un '(' después del registro base"
 
-#: config/tc-s390.c:1402
+#: config/tc-s390.c:1426
 msgid "syntax error; ')' not allowed here"
 msgstr "errór sintáctico; no se permite aquí un ')'"
 
-#: config/tc-s390.c:1584 config/tc-s390.c:1607 config/tc-s390.c:1620
+#: config/tc-s390.c:1619 config/tc-s390.c:1642 config/tc-s390.c:1655
 msgid "Invalid .insn format\n"
 msgstr "Formato .insn inválido\n"
 
-#: config/tc-s390.c:1592
+#: config/tc-s390.c:1627
 #, c-format
 msgid "Unrecognized opcode format: `%s'"
 msgstr "Formato de código de operación no reconocido: `%s'"
 
-#: config/tc-s390.c:1623
+#: config/tc-s390.c:1658
 msgid "second operand of .insn not a constant\n"
 msgstr "el operando de .insn no es una constante\n"
 
-#: config/tc-s390.c:1626
+#: config/tc-s390.c:1661
 msgid "missing comma after insn constant\n"
 msgstr "falta una coma después de la constante insn\n"
 
-#: config/tc-s390.c:2060
+#: config/tc-s390.c:2095
 msgid "unsupported relocation type"
 msgstr "tipo de reubicación sin soporte"
 
@@ -9160,11 +9021,11 @@
 msgid "No segment info for current section"
 msgstr "No hay información de segmento para la sección actual"
 
-#: config/tc-sh64.c:3257
+#: config/tc-sh64.c:3258
 msgid "duplicate datalabel operator ignored"
 msgstr "se ignora el operador datalabel duplicado"
 
-#: config/tc-sh64.c:3327
+#: config/tc-sh64.c:3328
 msgid "Invalid DataLabel expression"
 msgstr "Expresión DataLabel inválida"
 
@@ -9176,320 +9037,335 @@
 msgid "directive .little encountered when option -little required"
 msgstr "se encontró una directiva .little cuando se requirió una opción -little"
 
-#: config/tc-sh.c:1245
+#: config/tc-sh.c:1277
 msgid "misplaced PIC operand"
 msgstr "operando PIC mal colocado"
 
-#: config/tc-sh.c:1283
+#: config/tc-sh.c:1315
 msgid "illegal double indirection"
 msgstr "doble indirección ilegal"
 
-#: config/tc-sh.c:1292
+#: config/tc-sh.c:1324
 msgid "illegal register after @-"
 msgstr "registro ilegal después de @-"
 
-#: config/tc-sh.c:1308
+#: config/tc-sh.c:1340
 msgid "must be @(r0,...)"
 msgstr "debe ser @(r0,...)"
 
-#: config/tc-sh.c:1332
+#: config/tc-sh.c:1364
 msgid "syntax error in @(r0,...)"
 msgstr "error sintáctico en @(r0,...)"
 
-#: config/tc-sh.c:1337
+#: config/tc-sh.c:1369
 msgid "syntax error in @(r0...)"
 msgstr "error sintáctico en @(r0...)"
 
-#: config/tc-sh.c:1382
+#: config/tc-sh.c:1414
 msgid "Deprecated syntax."
 msgstr "Sintaxis deprecada."
 
-#: config/tc-sh.c:1394 config/tc-sh.c:1399
+#: config/tc-sh.c:1426 config/tc-sh.c:1431
 msgid "syntax error in @(disp,[Rn, gbr, pc])"
 msgstr "error sintáctico en @(disp,[Rn, gbr, pc])"
 
-#: config/tc-sh.c:1404
+#: config/tc-sh.c:1436
 msgid "expecting )"
 msgstr "se esperaba )"
 
-#: config/tc-sh.c:1412
+#: config/tc-sh.c:1444
 msgid "illegal register after @"
 msgstr "registro ilegal después de @"
 
-#: config/tc-sh.c:2249
+#: config/tc-sh.c:2115
 #, c-format
+msgid "unhandled %d\n"
+msgstr "%d sin manejar\n"
+
+#: config/tc-sh.c:2281
+#, c-format
 msgid "Invalid register: 'r%d'"
 msgstr "Registro inválido: 'r%d'"
 
-#: config/tc-sh.c:2471
+#: config/tc-sh.c:2385
+#, c-format
+msgid "failed for %d\n"
+msgstr "falló para %d\n"
+
+#: config/tc-sh.c:2498 config/tc-sh.c:2894
+msgid "invalid operands for opcode"
+msgstr "operandos inválidos para el código de operación"
+
+#: config/tc-sh.c:2503
 msgid "insn can't be combined with parallel processing insn"
 msgstr "las instrucciones no se pueden combinar con instrucciones de procesamiento paralelo"
 
-#: config/tc-sh.c:2478 config/tc-sh.c:2489 config/tc-sh.c:2521
+#: config/tc-sh.c:2510 config/tc-sh.c:2521 config/tc-sh.c:2553
 msgid "multiple movx specifications"
 msgstr "especificaciones movx múltiples"
 
-#: config/tc-sh.c:2483 config/tc-sh.c:2505 config/tc-sh.c:2544
+#: config/tc-sh.c:2515 config/tc-sh.c:2537 config/tc-sh.c:2576
 msgid "multiple movy specifications"
 msgstr "especificaciones movy múltiples"
 
-#: config/tc-sh.c:2492 config/tc-sh.c:2525
+#: config/tc-sh.c:2524 config/tc-sh.c:2557
 msgid "invalid movx address register"
 msgstr "registro de dirección movx inválido"
 
-#: config/tc-sh.c:2494
+#: config/tc-sh.c:2526
 msgid "insn cannot be combined with non-nopy"
 msgstr "las instrucciones no se pueden combinar con las que no son nopy"
 
-#: config/tc-sh.c:2508 config/tc-sh.c:2564
+#: config/tc-sh.c:2540 config/tc-sh.c:2596
 msgid "invalid movy address register"
 msgstr "registro de dirección movy inválido"
 
-#: config/tc-sh.c:2510
+#: config/tc-sh.c:2542
 msgid "insn cannot be combined with non-nopx"
 msgstr "las instrucciones no se pueden combinar con las que no son nopx"
 
-#: config/tc-sh.c:2523
+#: config/tc-sh.c:2555
 msgid "previous movy requires nopx"
 msgstr "el movy previo requiere nopx"
 
-#: config/tc-sh.c:2531 config/tc-sh.c:2536
+#: config/tc-sh.c:2563 config/tc-sh.c:2568
 msgid "invalid movx dsp register"
 msgstr "registro dsp movx inválido"
 
-#: config/tc-sh.c:2546
+#: config/tc-sh.c:2578
 msgid "previous movx requires nopy"
 msgstr "el movx previo requiere nopy"
 
-#: config/tc-sh.c:2555 config/tc-sh.c:2560
+#: config/tc-sh.c:2587 config/tc-sh.c:2592
 msgid "invalid movy dsp register"
 msgstr "registro dsp movy inválido"
 
-#: config/tc-sh.c:2570
+#: config/tc-sh.c:2602
 msgid "dsp immediate shift value not constant"
 msgstr "el valor de desplazamiento inmediato dsp no es constante"
 
-#: config/tc-sh.c:2584 config/tc-sh.c:2610
+#: config/tc-sh.c:2616 config/tc-sh.c:2642
 msgid "multiple parallel processing specifications"
 msgstr "especificaciones múltiples de procesamiento paralelo"
 
-#: config/tc-sh.c:2603
+#: config/tc-sh.c:2635
 msgid "multiple condition specifications"
 msgstr "especificaciones múltiples de condición"
 
-#: config/tc-sh.c:2641
+#: config/tc-sh.c:2673
 msgid "insn cannot be combined with pmuls"
 msgstr "las instrucciones no se pueden combinar con pmuls"
 
-#: config/tc-sh.c:2657
+#: config/tc-sh.c:2689
 msgid "bad combined pmuls output operand"
 msgstr "operando de salida pmuls mal combinado"
 
-#: config/tc-sh.c:2667
+#: config/tc-sh.c:2699
 msgid "destination register is same for parallel insns"
 msgstr "el registro de destino es el mismo para instrucciones paralelas"
 
-#: config/tc-sh.c:2676
+#: config/tc-sh.c:2708
 msgid "condition not followed by conditionalizable insn"
 msgstr "la condición no está seguida por una instrucción condicionalizable"
 
-#: config/tc-sh.c:2686
+#: config/tc-sh.c:2718
 msgid "unrecognized characters at end of parallel processing insn"
 msgstr "caracteres no reconocidos al final de la instrucción de procesamiento paralelo"
 
-#: config/tc-sh.c:2802
+#: config/tc-sh.c:2834
 msgid "opcode not valid for this cpu variant"
 msgstr "el código de operación no es válido para esta variante de cpu"
 
-#: config/tc-sh.c:2835
+#: config/tc-sh.c:2867
 msgid "Delayed branches not available on SH1"
 msgstr "Las ramificaciones postergadas no están disponibles en SH1"
 
-#: config/tc-sh.c:2867
+#: config/tc-sh.c:2899
 #, c-format
 msgid "excess operands: '%s'"
 msgstr "exceso de operandos: '%s'"
 
-#: config/tc-sh.c:3012
+#: config/tc-sh.c:3026
 msgid ".uses pseudo-op seen when not relaxing"
 msgstr "se vio el pseudo-operador .uses cuando no se estaba relajando"
 
-#: config/tc-sh.c:3018
+#: config/tc-sh.c:3032
 msgid "bad .uses format"
 msgstr "formato de .uses erróneo"
 
-#: config/tc-sh.c:3104
+#: config/tc-sh.c:3130
 msgid "Invalid combination: --isa=SHcompact with --isa=SHmedia"
 msgstr "Combinación inválida: --isa=SHcompact con --isa=SHmedia"
 
-#: config/tc-sh.c:3110
+#: config/tc-sh.c:3136
 msgid "Invalid combination: --isa=SHmedia with --isa=SHcompact"
 msgstr "Combinación inválida: --isa=SHmedia con --isa=SHcompact"
 
-#: config/tc-sh.c:3112
+#: config/tc-sh.c:3138
 msgid "Invalid combination: --abi=64 with --isa=SHcompact"
 msgstr "Combinación inválida: --abi=64 con --isa=SHcompact"
 
-#: config/tc-sh.c:3152
+#: config/tc-sh.c:3179
 msgid "Invalid combination: --abi=32 with --abi=64"
 msgstr "Combinación inválida: --abi=32 con --abi=64"
 
-#: config/tc-sh.c:3158
+#: config/tc-sh.c:3185
 msgid "Invalid combination: --abi=64 with --abi=32"
 msgstr "Combinación inválida: --abi=64 con --abi=32"
 
-#: config/tc-sh.c:3160
+#: config/tc-sh.c:3187
 msgid "Invalid combination: --isa=SHcompact with --abi=64"
 msgstr "Combinación inválida: --isa=SHcompact con --abi=64"
 
-#: config/tc-sh.c:3194
+#: config/tc-sh.c:3221
 #, c-format
 msgid ""
 "SH options:\n"
-"-little\t\t\tgenerate little endian code\n"
-"-big\t\t\tgenerate big endian code\n"
-"-relax\t\t\talter jump instructions for long displacements\n"
-"-renesas\t\tdisable optimization with section symbol for\n"
+"--little\t\tgenerate little endian code\n"
+"--big\t\t\tgenerate big endian code\n"
+"--relax\t\t\talter jump instructions for long displacements\n"
+"--renesas\t\tdisable optimization with section symbol for\n"
 "\t\t\tcompatibility with Renesas assembler.\n"
-"-small\t\t\talign sections to 4 byte boundaries, not 16\n"
-"-dsp\t\t\tenable sh-dsp insns, and disable floating-point ISAs.\n"
-"-isa=[any\t\tuse most appropriate isa\n"
+"--small\t\t\talign sections to 4 byte boundaries, not 16\n"
+"--dsp\t\t\tenable sh-dsp insns, and disable floating-point ISAs.\n"
+"--allow-reg-prefix\tallow '$' as a register name prefix.\n"
+"--isa=[any\t\tuse most appropriate isa\n"
 "    | dsp               same as '-dsp'\n"
 "    | fp"
 msgstr ""
 "Opciones de SH:\n"
-"-little\t\t\tgenera código little endian\n"
-"-big\t\t\tgenera código big endian\n"
-"-relax\t\t\taltera las instrucciones de salto para\n"
-"      \t\t\t desubicaciones long\n"
-"-renesas\t\tdesactiva la optimización con símbolos de\n"
+"--little\t\t\tgenera código little endian\n"
+"--big\t\t\tgenera código big endian\n"
+"--relax\t\t\taltera las instrucciones de salto para\n"
+"\t\t\tdesubicaciones long\n"
+"--renesas\t\tdesactiva la optimización con símbolos de\n"
 "\t\t\tsección por compatibilidad con el ensamblador Renesas.\n"
-"-small\t\t\talinea las secciones a límites de 4 bytes, no 16\n"
-"-dsp\t\t\tactiva insns sh-dsp, y desactiva ISAs de coma flotante.\n"
-"-isa=[any\t\tusa la isa más apropiada\n"
+"--small\t\t\talinea las secciones a límites de 4 bytes, no 16\n"
+"--dsp\t\t\tactiva insns sh-dsp, y desactiva ISAs de coma flotante.\n"
+"--isa=[any\t\tusa la isa más apropiada\n"
 "    | dsp               igual que '-dsp'\n"
 "    | fp"
 
-#: config/tc-sh.c:3218
+#: config/tc-sh.c:3247
 #, c-format
 msgid ""
-"-isa=[shmedia\t\tset as the default instruction set for SH64\n"
+"--isa=[shmedia\t\tset as the default instruction set for SH64\n"
 "    | SHmedia\n"
 "    | shcompact\n"
 "    | SHcompact]\n"
 msgstr ""
-"-isa=[shmedia\t\testablece el conjunto de instrucciones por defecto\n"
-"             \t\tpara SH64\n"
+"--isa=[shmedia\t\testablece el conjunto de instrucciones por defecto\n"
+"              \t\tpara SH64\n"
 "    | SHmedia\n"
 "    | shcompact\n"
 "    | SHcompact]\n"
 
-#: config/tc-sh.c:3223
+#: config/tc-sh.c:3252
 #, c-format
 msgid ""
-"-abi=[32|64]\t\tset size of expanded SHmedia operands and object\n"
+"--abi=[32|64]\t\tset size of expanded SHmedia operands and object\n"
 "\t\t\tfile type\n"
-"-shcompact-const-crange\temit code-range descriptors for constants in\n"
+"--shcompact-const-crange  emit code-range descriptors for constants in\n"
 "\t\t\tSHcompact code sections\n"
-"-no-mix\t\t\tdisallow SHmedia code in the same section as\n"
+"--no-mix\t\tdisallow SHmedia code in the same section as\n"
 "\t\t\tconstants and SHcompact code\n"
-"-no-expand\t\tdo not expand MOVI, PT, PTA or PTB instructions\n"
-"-expand-pt32\t\twith -abi=64, expand PT, PTA and PTB instructions\n"
+"--no-expand\t\tdo not expand MOVI, PT, PTA or PTB instructions\n"
+"--expand-pt32\t\twith -abi=64, expand PT, PTA and PTB instructions\n"
 "\t\t\tto 32 bits only\n"
 msgstr ""
-"-abi=[32|64]\t\testablece el tamaño de los operandos SHmedia\n"
+"--abi=[32|64]\t\testablece el tamaño de los operandos SHmedia\n"
 "\t\t\texpandidos y el tipo del fichero objeto\n"
-"-shcompact-const-crange\temite descriptores de código-rango para\n"
+"--shcompact-const-crange\temite descriptores de código-rango para\n"
 "\t\t\tconstantes en las secciones de código SHcompact\n"
-"-no-mix\t\t\tdesactiva el código SHmedia en la misma sección que\n"
+"--no-mix\t\t\tdesactiva el código SHmedia en la misma sección que\n"
 "\t\t\tlas constantes y el código SHcompact\n"
-"-no-expand\t\tno expande las instrucciones MOVI, PT, PTA ó PTB\n"
-"-expand-pt32\t\tcon -abi=64, expande las instrucciones PT, PTA y PTB\n"
+"--no-expand\t\tno expande las instrucciones MOVI, PT, PTA ó PTB\n"
+"--expand-pt32\t\tcon -abi=64, expande las instrucciones PT, PTA y PTB\n"
 "\t\t\tsolamente a 32 bits\n"
 
-#: config/tc-sh.c:3311
+#: config/tc-sh.c:3336
 msgid ".uses does not refer to a local symbol in the same section"
 msgstr ".uses no se refiere a un símbolo local en la misma sección"
 
-#: config/tc-sh.c:3330
+#: config/tc-sh.c:3355
 msgid "can't find fixup pointed to by .uses"
 msgstr "no se puede encontrar la compostura señalada por .uses"
 
-#: config/tc-sh.c:3353
+#: config/tc-sh.c:3375
 msgid ".uses target does not refer to a local symbol in the same section"
 msgstr "el objetivo .uses no se refiere a un símbolo local en la misma sección"
 
-#: config/tc-sh.c:3453
+#: config/tc-sh.c:3452
 msgid "displacement overflows 12-bit field"
 msgstr "la desubicación desborda el campo de 12-bits"
 
-#: config/tc-sh.c:3456
+#: config/tc-sh.c:3455
 #, c-format
 msgid "displacement to defined symbol %s overflows 12-bit field"
 msgstr "la desubicación del símbolo definido %s desborda el campo de 12-bits"
 
-#: config/tc-sh.c:3460
+#: config/tc-sh.c:3459
 #, c-format
 msgid "displacement to undefined symbol %s overflows 12-bit field"
 msgstr "la desubicación del símbolo indefinido %s desborda el campo de 12-bits"
 
-#: config/tc-sh.c:3538
+#: config/tc-sh.c:3532
 msgid "displacement overflows 8-bit field"
 msgstr "la desubicación desborda el campo de 8-bits"
 
-#: config/tc-sh.c:3541
+#: config/tc-sh.c:3535
 #, c-format
 msgid "displacement to defined symbol %s overflows 8-bit field"
 msgstr "la desubicación del símbolo definido %s desborda el campo de 8-bits"
 
-#: config/tc-sh.c:3545
+#: config/tc-sh.c:3539
 #, c-format
 msgid "displacement to undefined symbol %s overflows 8-bit field "
 msgstr "la desubicación del símbolo indefinido %s desborda el campo de 8-bits"
 
-#: config/tc-sh.c:3562
+#: config/tc-sh.c:3556
 #, c-format
 msgid "overflow in branch to %s; converted into longer instruction sequence"
 msgstr "desbordamiento en la ramificación a %s; se convirtió en una secuencia de instrucciones más larga"
 
-#: config/tc-sh.c:3633 config/tc-sh.c:3680 config/tc-sparc.c:4237
-#: config/tc-sparc.c:4262
+#: config/tc-sh.c:3622 config/tc-sh.c:3669 config/tc-sparc.c:4234
+#: config/tc-sparc.c:4259
 msgid "misaligned data"
 msgstr "datos desalineados"
 
-#: config/tc-sh.c:4099
+#: config/tc-sh.c:4076
 msgid "misaligned offset"
 msgstr "desplazamiento desalineado"
 
-#: config/tc-sparc.c:291
+#: config/tc-sparc.c:288
 msgid "Invalid default architecture, broken assembler."
 msgstr "Arquitectura por defecto inválida, ensamblador descompuesto."
 
-#: config/tc-sparc.c:295 config/tc-sparc.c:498
+#: config/tc-sparc.c:292 config/tc-sparc.c:495
 msgid "Bad opcode table, broken assembler."
 msgstr "Tabla de códigos de operación errónea, ensamblador descompuesto."
 
-#: config/tc-sparc.c:490
+#: config/tc-sparc.c:487
 #, c-format
 msgid "invalid architecture -xarch=%s"
 msgstr "arquitectura -xarch=%s inválida"
 
-#: config/tc-sparc.c:492
+#: config/tc-sparc.c:489
 #, c-format
 msgid "invalid architecture -A%s"
 msgstr "arquitectura inválida -A%s"
 
-#: config/tc-sparc.c:559
+#: config/tc-sparc.c:556
 #, c-format
 msgid "No compiled in support for %d bit object file format"
 msgstr "No se compiló el soporte para el formato de fichero objeto de %d bit"
 
-#: config/tc-sparc.c:637
+#: config/tc-sparc.c:634
 #, c-format
 msgid "SPARC options:\n"
 msgstr "Opciones SPARC:\n"
 
-#: config/tc-sparc.c:666
+#: config/tc-sparc.c:663
 #, c-format
 msgid ""
 "\n"
@@ -9508,12 +9384,12 @@
 "-relax\t\t\trelaja saltos y ramificaciones (por defecto)\n"
 "-no-relax\t\tevita cambiar cualquier salto y ramificación\n"
 
-#: config/tc-sparc.c:674
+#: config/tc-sparc.c:671
 #, c-format
 msgid "-k\t\t\tgenerate PIC\n"
 msgstr "-k\t\t\tgenera PIC\n"
 
-#: config/tc-sparc.c:678
+#: config/tc-sparc.c:675
 #, c-format
 msgid ""
 "-32\t\t\tcreate 32 bit object file\n"
@@ -9522,12 +9398,12 @@
 "-32\t\t\tcrea ficheros objeto de 32 bits\n"
 "-64\t\t\tcrea ficheros objeto de 64 bits\n"
 
-#: config/tc-sparc.c:681
+#: config/tc-sparc.c:678
 #, c-format
 msgid "\t\t\t[default is %d]\n"
 msgstr "\t\t\t[por defecto es %d]\n"
 
-#: config/tc-sparc.c:683
+#: config/tc-sparc.c:680
 #, c-format
 msgid ""
 "-TSO\t\t\tuse Total Store Ordering\n"
@@ -9538,12 +9414,12 @@
 "-PSO\t\t\tusa el Ordenamiento de Almacenamiento Parcial\n"
 "-RMO\t\t\tusa el Ordenamiento de Memoria Relajado\n"
 
-#: config/tc-sparc.c:687
+#: config/tc-sparc.c:684
 #, c-format
 msgid "\t\t\t[default is %s]\n"
 msgstr "\t\t\t[por defecto es %s]\n"
 
-#: config/tc-sparc.c:689
+#: config/tc-sparc.c:686
 #, c-format
 msgid ""
 "-KPIC\t\t\tgenerate PIC\n"
@@ -9566,7 +9442,7 @@
 "-Qy, -Qn\t\tse ignora\n"
 "-s\t\t\tignored\n"
 
-#: config/tc-sparc.c:701
+#: config/tc-sparc.c:698
 #, c-format
 msgid ""
 "-EL\t\t\tgenerate code for a little endian machine\n"
@@ -9579,549 +9455,317 @@
 "--little-endian-data\tgenera código para una máquina que tenga instrucciones\n"
 "                        big endian y datos little endian.\n"
 
-#: config/tc-sparc.c:822
+#: config/tc-sparc.c:819
 #, c-format
 msgid "Internal error: losing opcode: `%s' \"%s\"\n"
 msgstr "Error interno: se pierde el código de operación: `%s' \"%s\"\n"
 
-#: config/tc-sparc.c:841
+#: config/tc-sparc.c:838
 #, c-format
 msgid "Internal error: can't find opcode `%s' for `%s'\n"
 msgstr "Error interno: no se puede encontrar el código de operación `%s' para `%s'\n"
 
-#: config/tc-sparc.c:987
+#: config/tc-sparc.c:984
 msgid "Support for 64-bit arithmetic not compiled in."
 msgstr "No se compiló el soporte para aritmética de 64-bit."
 
-#: config/tc-sparc.c:1034
+#: config/tc-sparc.c:1031
 msgid "set: number not in 0..4294967295 range"
 msgstr "set: el número no está en el rango 0..4294967295"
 
-#: config/tc-sparc.c:1041
+#: config/tc-sparc.c:1038
 msgid "set: number not in -2147483648..4294967295 range"
 msgstr "set: el número no está en el rango -2147483648..4294967295"
 
-#: config/tc-sparc.c:1101
+#: config/tc-sparc.c:1098
 msgid "setsw: number not in -2147483648..4294967295 range"
 msgstr "setsw: el número no está en el rango -2147483648..4294967295"
 
-#: config/tc-sparc.c:1150
+#: config/tc-sparc.c:1147
 msgid "setx: temporary register same as destination register"
 msgstr "setx: el registro temporal es el mismo que el registro destino"
 
-#: config/tc-sparc.c:1221
+#: config/tc-sparc.c:1218
 msgid "setx: illegal temporary register g0"
 msgstr "setx: registro temporal ilegal g0"
 
-#: config/tc-sparc.c:1318
+#: config/tc-sparc.c:1316
 msgid "FP branch in delay slot"
 msgstr "ramificación FP en la ranura de retraso"
 
-#: config/tc-sparc.c:1334
+#: config/tc-sparc.c:1331
 msgid "FP branch preceded by FP instruction; NOP inserted"
 msgstr "ramificación FP precedida por una instrucción FP; se insertó NOP"
 
-#: config/tc-sparc.c:1374
+#: config/tc-sparc.c:1371
 msgid "failed special case insn sanity check"
 msgstr "falló la prueba de sanidad de la instrucción especial case"
 
-#: config/tc-sparc.c:1462
+#: config/tc-sparc.c:1461
 msgid ": invalid membar mask name"
 msgstr ": nombre de máscara de barra de memoria inválido"
 
-#: config/tc-sparc.c:1478
+#: config/tc-sparc.c:1477
 msgid ": invalid membar mask expression"
 msgstr ": expresión de máscara de barra de memoria inválida"
 
-#: config/tc-sparc.c:1483
+#: config/tc-sparc.c:1482
 msgid ": invalid membar mask number"
 msgstr ": número de máscara de barra de memoria inválido"
 
-#: config/tc-sparc.c:1498
+#: config/tc-sparc.c:1497
 msgid ": invalid siam mode expression"
 msgstr ": expresión de modo siam inválida"
 
-#: config/tc-sparc.c:1503
+#: config/tc-sparc.c:1502
 msgid ": invalid siam mode number"
 msgstr ": número de modi siam inválido"
 
-#: config/tc-sparc.c:1519
+#: config/tc-sparc.c:1518
 msgid ": invalid prefetch function name"
 msgstr ": nombre de función de precargado inválido"
 
-#: config/tc-sparc.c:1527
+#: config/tc-sparc.c:1526
 msgid ": invalid prefetch function expression"
 msgstr ": expresión de función de precargado inválida"
 
-#: config/tc-sparc.c:1532
+#: config/tc-sparc.c:1531
 msgid ": invalid prefetch function number"
 msgstr ": número de función de precargado inválido"
 
-#: config/tc-sparc.c:1560 config/tc-sparc.c:1572
+#: config/tc-sparc.c:1559 config/tc-sparc.c:1571
 msgid ": unrecognizable privileged register"
 msgstr ": registro privilegiado no reconocible"
 
-#: config/tc-sparc.c:1596 config/tc-sparc.c:1621
+#: config/tc-sparc.c:1595 config/tc-sparc.c:1620
 msgid ": unrecognizable v9a or v9b ancillary state register"
 msgstr ": registro de estado ancilar v9a o v9b no reconocible"
 
-#: config/tc-sparc.c:1601
+#: config/tc-sparc.c:1600
 msgid ": rd on write only ancillary state register"
 msgstr ": rd en registro de estado ancilar de sólo escritura"
 
 #. %sys_tick and %sys_tick_cmpr are v9bnotv9a
-#: config/tc-sparc.c:1609
+#: config/tc-sparc.c:1608
 msgid ": unrecognizable v9a ancillary state register"
 msgstr ": registro de estado ancilar v9a no reconocible"
 
-#: config/tc-sparc.c:1645
+#: config/tc-sparc.c:1644
 msgid ": asr number must be between 16 and 31"
 msgstr ": el número asr debe estar entre 16 y 31"
 
-#: config/tc-sparc.c:1653
+#: config/tc-sparc.c:1652
 msgid ": asr number must be between 0 and 31"
 msgstr ": el número asr debe estar entre 0 y 31"
 
-#: config/tc-sparc.c:1663
+#: config/tc-sparc.c:1662
 #, c-format
 msgid ": expecting %asrN"
 msgstr ": se esperaba %asrN"
 
-#: config/tc-sparc.c:1845 config/tc-sparc.c:1883 config/tc-sparc.c:2290
-#: config/tc-sparc.c:2326
+#: config/tc-sparc.c:1844 config/tc-sparc.c:1882 config/tc-sparc.c:2289
+#: config/tc-sparc.c:2325
 #, c-format
 msgid "Illegal operands: %%%s requires arguments in ()"
 msgstr "Operandos ilegales: %%%s requiere de argumentos en ()"
 
-#: config/tc-sparc.c:1851
+#: config/tc-sparc.c:1850
 #, c-format
 msgid "Illegal operands: %%%s cannot be used together with other relocs in the insn ()"
 msgstr "Operandos ilegales: %%%s no se puede usar junto con otras reubicaciones en la insn ()"
 
-#: config/tc-sparc.c:1862
+#: config/tc-sparc.c:1861
 #, c-format
 msgid "Illegal operands: %%%s can be only used with call __tls_get_addr"
 msgstr "Operando ilegales: %%%s sólo se puede usar con la llamada __tls_get_addr"
 
-#: config/tc-sparc.c:2069
+#: config/tc-sparc.c:2068
 msgid "detected global register use not covered by .register pseudo-op"
 msgstr "se detectó el uso de un registro global que no está cubierto por el pseudo-operador .register"
 
-#: config/tc-sparc.c:2140
+#: config/tc-sparc.c:2139
 msgid ": There are only 64 f registers; [0-63]"
 msgstr ": Solamente hay 64 registros f; [0-63]"
 
-#: config/tc-sparc.c:2142 config/tc-sparc.c:2160
+#: config/tc-sparc.c:2141 config/tc-sparc.c:2159
 msgid ": There are only 32 f registers; [0-31]"
 msgstr ": Solamente hay 32 registros f; [0-31]"
 
-#: config/tc-sparc.c:2152
+#: config/tc-sparc.c:2151
 msgid ": There are only 32 single precision f registers; [0-31]"
 msgstr ": Solamente hay 32 registros f de precisión sencilla; [0-31]"
 
-#: config/tc-sparc.c:2338
+#: config/tc-sparc.c:2337
 #, c-format
 msgid "Illegal operands: Can't do arithmetics other than + and - involving %%%s()"
 msgstr "Operandos ilegales: No se puede hacer aritmética aparte de + y - que involucre %%%s()"
 
-#: config/tc-sparc.c:2448
+#: config/tc-sparc.c:2447
 #, c-format
 msgid "Illegal operands: Can't add non-constant expression to %%%s()"
 msgstr "Operandos ilegales: No se puede agregar una expresión que no es constante a %%%s()"
 
-#: config/tc-sparc.c:2458
+#: config/tc-sparc.c:2457
 #, c-format
 msgid "Illegal operands: Can't do arithmetics involving %%%s() of a relocatable symbol"
 msgstr "Operandos ilegales: No se puede hacer aritmética que involucre a %%%s() de un símbolo reubicable"
 
-#: config/tc-sparc.c:2476
+#: config/tc-sparc.c:2475
 msgid ": PC-relative operand can't be a constant"
 msgstr ": el operando relativo al PC no puede ser una constante"
 
-#: config/tc-sparc.c:2483
+#: config/tc-sparc.c:2482
 msgid ": TLS operand can't be a constant"
 msgstr ": el operando TLS no puede ser una constante"
 
-#: config/tc-sparc.c:2516
+#: config/tc-sparc.c:2515
 msgid ": invalid ASI name"
 msgstr ": nombre ASI inválido"
 
-#: config/tc-sparc.c:2524
+#: config/tc-sparc.c:2523
 msgid ": invalid ASI expression"
 msgstr ": expresión ASI inválida"
 
-#: config/tc-sparc.c:2529
+#: config/tc-sparc.c:2528
 msgid ": invalid ASI number"
 msgstr ": número ASI inválido"
 
-#: config/tc-sparc.c:2626
+#: config/tc-sparc.c:2625
 msgid "OPF immediate operand out of range (0-0x1ff)"
 msgstr "operador inmediato OPF fuera de rango (0-0x1ff)"
 
-#: config/tc-sparc.c:2631
+#: config/tc-sparc.c:2630
 msgid "non-immediate OPF operand, ignored"
 msgstr "operando OPF que no es inmediato, se ignora"
 
-#: config/tc-sparc.c:2650
+#: config/tc-sparc.c:2649
 msgid ": invalid cpreg name"
 msgstr ": nombre cpreg inválido"
 
-#: config/tc-sparc.c:2679
+#: config/tc-sparc.c:2678
 #, c-format
 msgid "Illegal operands%s"
 msgstr "Operando%s ilegal(es)"
 
-#: config/tc-sparc.c:2713
+#: config/tc-sparc.c:2712
 #, c-format
 msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\""
 msgstr "la arquitectura saltó de \"%s\" a \"%s\" en \"%s\""
 
-#: config/tc-sparc.c:2749
+#: config/tc-sparc.c:2748
 #, c-format
 msgid "Architecture mismatch on \"%s\"."
 msgstr "No hay coincidencia de arquitectura en \"%s\"."
 
-#: config/tc-sparc.c:2750
+#: config/tc-sparc.c:2749
 #, c-format
 msgid " (Requires %s; requested architecture is %s.)"
 msgstr " (Se requiere %s; la arquitectura solicitada es %s.)"
 
-#: config/tc-sparc.c:3370
+#: config/tc-sparc.c:3369
 #, c-format
 msgid "bad or unhandled relocation type: 0x%02x"
 msgstr "tipo de reubicación errónea o sin manejar: 0x%02x"
 
-#: config/tc-sparc.c:3680
+#: config/tc-sparc.c:3679
 msgid "Expected comma after name"
 msgstr "Se esperaba una coma después del nombre"
 
-#: config/tc-sparc.c:3689
+#: config/tc-sparc.c:3688
 #, c-format
 msgid "BSS length (%d.) <0! Ignored."
 msgstr "¡Longitud BSS (%d.) <0! Se ignora."
 
-#: config/tc-sparc.c:3701
+#: config/tc-sparc.c:3700
 msgid "bad .reserve segment -- expected BSS segment"
 msgstr "segmento .reserve erróneo -- se esperaba el segmento BSS"
 
-#: config/tc-sparc.c:3718
+#: config/tc-sparc.c:3717
 msgid "missing alignment"
 msgstr "falta la alineación"
 
-#: config/tc-sparc.c:3729
+#: config/tc-sparc.c:3728
 #, c-format
 msgid "alignment too large; assuming %d"
 msgstr "alineación demasiado grande; se asume %d"
 
-#: config/tc-sparc.c:3735 config/tc-sparc.c:3886
+#: config/tc-sparc.c:3734 config/tc-sparc.c:3885
 msgid "negative alignment"
 msgstr "alineación negativa"
 
-#: config/tc-sparc.c:3745 config/tc-sparc.c:3909 read.c:1284 read.c:2113
+#: config/tc-sparc.c:3744 config/tc-sparc.c:3908 read.c:1313 read.c:2143
 msgid "alignment not a power of 2"
 msgstr "la alineación no es una potencia de 2"
 
-#: config/tc-sparc.c:3823 config/tc-v850.c:233
+#: config/tc-sparc.c:3822 config/tc-v850.c:223
 msgid "Expected comma after symbol-name"
 msgstr "Se esperaba una coma después del nombre del símbolo"
 
-#: config/tc-sparc.c:3833
+#: config/tc-sparc.c:3832
 #, c-format
 msgid ".COMMon length (%lu) out of range ignored"
 msgstr "se ignora la longitud .COMMún (%lu) fuera de rango"
 
-#: config/tc-sparc.c:3866
+#: config/tc-sparc.c:3865
 msgid "Expected comma after common length"
 msgstr "Se esperaba una coma después de la longitud común"
 
-#: config/tc-sparc.c:3880
+#: config/tc-sparc.c:3879
 #, c-format
 msgid "alignment too large; assuming %ld"
 msgstr "alineación demasiado grande; se asume %ld"
 
-#: config/tc-sparc.c:4107 config/tc-sparc.c:4117
+#: config/tc-sparc.c:4025
+msgid "Unknown segment type"
+msgstr "Tipo de segmento desconocido"
+
+#: config/tc-sparc.c:4104 config/tc-sparc.c:4114
 #, c-format
 msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}"
 msgstr "la sintaxis de registro es .register %%g[2367],{#scratch|nombresimbolo|#ignore}"
 
-#: config/tc-sparc.c:4135
+#: config/tc-sparc.c:4132
 msgid "redefinition of global register"
 msgstr "redefinición del registro global"
 
-#: config/tc-sparc.c:4146
+#: config/tc-sparc.c:4143
 #, c-format
 msgid "Register symbol %s already defined."
 msgstr "El símbolo de registro %s ya estaba definido."
 
-#: config/tc-sparc.c:4355
+#: config/tc-sparc.c:4352
 #, c-format
 msgid "Illegal operands: %%r_plt in %d-byte data field"
 msgstr "Operandos ilegales: %%r_plt en el campo de datos de %d-bytes"
 
-#: config/tc-sparc.c:4365
+#: config/tc-sparc.c:4362
 #, c-format
 msgid "Illegal operands: %%r_tls_dtpoff in %d-byte data field"
 msgstr "Operandos ilegales: %%r_tls_dtpoff en el campo de datos de %d-bytes"
 
-#: config/tc-sparc.c:4402
+#: config/tc-sparc.c:4399
 #, c-format
 msgid "Illegal operands: Only %%r_%s%d allowed in %d-byte data fields"
 msgstr "Operandos ilegales: Sólo se permite %%r_%s%d en campos de datos de %d-bytes"
 
-#: config/tc-sparc.c:4410 config/tc-sparc.c:4441 config/tc-sparc.c:4450
+#: config/tc-sparc.c:4407 config/tc-sparc.c:4438 config/tc-sparc.c:4447
 #, c-format
 msgid "Illegal operands: %%r_%s%d requires arguments in ()"
 msgstr "Operandos ilegales: %%r_%s%d requiere argumentos en ()"
 
-#: config/tc-sparc.c:4459
+#: config/tc-sparc.c:4456
 #, c-format
 msgid "Illegal operands: garbage after %%r_%s%d()"
 msgstr "Operandos ilegales: hay basura después de %%r_%s%d()"
 
-#: config/tc-sparc.h:48
+#: config/tc-sparc.h:46
 msgid "sparc convert_frag\n"
 msgstr "convert_frag de sparc\n"
 
-#: config/tc-sparc.h:50
+#: config/tc-sparc.h:48
 msgid "estimate_size_before_relax called"
 msgstr "se llamó a estimate_size_before_relax"
 
-#: config/tc-tahoe.c:403
-msgid "The -a option doesn't exist. (Despite what the man page says!"
-msgstr "La opción -a no existe. (¡A pesar de lo que diga la página del manual!)"
-
-#: config/tc-tahoe.c:407 config/tc-vax.c:3295
-#, c-format
-msgid "Displacement length %s ignored!"
-msgstr "¡Se ignora la longitud de desubicación %s!"
-
-#: config/tc-tahoe.c:411 config/tc-vax.c:3287
-msgid "SYMBOL TABLE not implemented"
-msgstr "SYMBOL TABLE no está implementado"
-
-#: config/tc-tahoe.c:415 config/tc-vax.c:3291
-msgid "TOKEN TRACE not implemented"
-msgstr "TOKEN TRACE no está implementado"
-
-#: config/tc-tahoe.c:419 config/tc-vax.c:3299
-#, c-format
-msgid "I don't need or use temp. file \"%s\"."
-msgstr "No se necesita o se utiliza el fichero temporal \"%s\"."
-
-#: config/tc-tahoe.c:423 config/tc-vax.c:3303
-msgid "I don't use an interpass file! -V ignored"
-msgstr "¡No se usa un fichero entre pasos! Se ignora -V"
-
-#: config/tc-tahoe.c:437
-#, c-format
-msgid ""
-"Tahoe options:\n"
-"-a\t\t\tignored\n"
-"-d LENGTH\t\tignored\n"
-"-J\t\t\tignored\n"
-"-S\t\t\tignored\n"
-"-t FILE\t\t\tignored\n"
-"-T\t\t\tignored\n"
-"-V\t\t\tignored\n"
-msgstr ""
-"Opciones de Tahoe:\n"
-"-a\t\t\tse ignora\n"
-"-d LENGTH\t\tse ignora\n"
-"-J\t\t\tse ignora\n"
-"-S\t\t\tse ignora\n"
-"-t FILE\t\t\tse ignora\n"
-"-T\t\t\tse ignora\n"
-"-V\t\t\tse ignora\n"
-
-#: config/tc-tahoe.c:1066
-msgid "Casting a branch displacement is bad form, and is ignored."
-msgstr "La conversión de una desubicación de ramificación es una forma errónea, y se ignora."
-
-#: config/tc-tahoe.c:1122
-msgid "Couldn't parse the [index] in this operand."
-msgstr "No se puede decodificar el [index] en este operando."
-
-#: config/tc-tahoe.c:1128
-msgid "Couldn't find the opening '[' for the index of this operand."
-msgstr "No se puede encontrar el '[' que abre para el índice de este operando."
-
-#: config/tc-tahoe.c:1168
-msgid "Couldn't find the opening '(' for the deref of this operand."
-msgstr "No se puede encontrar el '(' que abre para la dereferencia de este operando."
-
-#: config/tc-tahoe.c:1178
-msgid "Operand can't be both pre-inc and post-dec."
-msgstr "El operando no puede ser pre-incremento y post-decremento al mismo tiempo."
-
-#: config/tc-tahoe.c:1208
-msgid "I parsed 2 registers in this operand."
-msgstr "Se decodificaron 2 registros en este operando."
-
-#: config/tc-tahoe.c:1258
-msgid "Can't relocate expression error."
-msgstr "No se puede reubicar la expresión de error."
-
-#. This is an error. Tahoe doesn't allow any expressions
-#. bigger that a 32 bit long word. Any bigger has to be referenced
-#. by address.
-#: config/tc-tahoe.c:1265
-msgid "Expression is too large for a 32 bits."
-msgstr "La expresión es demasiado grande para 32 bits."
-
-#: config/tc-tahoe.c:1270
-msgid "Junk at end of expression."
-msgstr "Basura al final de la expresión."
-
-#: config/tc-tahoe.c:1309
-msgid "Syntax error in direct register mode."
-msgstr "Error sintáctico en el modo directo de registro."
-
-#: config/tc-tahoe.c:1311
-msgid "You can't index a register in direct register mode."
-msgstr "No se puede indizar un registro en el modo directo de registro."
-
-#: config/tc-tahoe.c:1314
-msgid "SP can't be the source operand with direct register addressing."
-msgstr "SP no puede ser el operando fuente con direccionamiento directo de registro."
-
-#: config/tc-tahoe.c:1316
-msgid "Can't take the address of a register."
-msgstr "No se puede tomar la dirección de un registro."
-
-#: config/tc-tahoe.c:1318
-msgid "Direct Register can't be used in a branch."
-msgstr "Un Registro Directo no se puede utilizar en una ramificación."
-
-#: config/tc-tahoe.c:1320
-msgid "For quad access, the register must be even and < 14."
-msgstr "Para acceso cuadrático, el registro debe ser par y < 14."
-
-#: config/tc-tahoe.c:1322
-msgid "You can't cast a direct register."
-msgstr "No se puede convertir un registro directo."
-
-# `tromp' se utiliza aquí como verbo transitivo. cfuga
-# Referencia: http://www.dictionary.com/search?q=tromp
-#: config/tc-tahoe.c:1328
-msgid "Using reg 14 for quadwords can tromp the FP register."
-msgstr "El uso del registro 14 para quadwords puede noquear el registro FP."
-
-#: config/tc-tahoe.c:1340
-msgid "Syntax error in auto-dec mode."
-msgstr "Error sintáctico en el modo auto-dec."
-
-#: config/tc-tahoe.c:1342
-msgid "You can't have an index auto dec mode."
-msgstr "No se puede tener un índice en modo auto dec"
-
-#: config/tc-tahoe.c:1344
-msgid "Auto dec mode cant be used for reading."
-msgstr "El modo auto dec no se puede usar para lectura."
-
-#: config/tc-tahoe.c:1346
-msgid "Auto dec only works of the SP register."
-msgstr "El modo auto dec solamente funciona en los registros SP."
-
-#: config/tc-tahoe.c:1348
-msgid "Auto dec can't be used in a branch."
-msgstr "No se puede utilizar auto dec en una ramificación."
-
-#: config/tc-tahoe.c:1350
-msgid "Auto dec won't work with quadwords."
-msgstr "Auto dec no funciona con quadwords."
-
-#: config/tc-tahoe.c:1357
-msgid "Syntax error in one of the auto-inc modes."
-msgstr "Error sintáctico en uno de los modos auto-inc."
-
-#: config/tc-tahoe.c:1363
-msgid "Auto inc deferred only works of the SP register."
-msgstr "El modo auto inc diferido solamente funciona en los registros SP."
-
-#: config/tc-tahoe.c:1365
-msgid "You can't have an index auto inc deferred mode."
-msgstr "No se puede tener un índice en modo auto inc diferido"
-
-#: config/tc-tahoe.c:1367 config/tc-tahoe.c:1378
-msgid "Auto inc can't be used in a branch."
-msgstr "No se puede utilizar auto inc en una ramificación."
-
-#: config/tc-tahoe.c:1374
-msgid "You can't write to an auto inc register."
-msgstr "No se puede escribir en un registro auto inc."
-
-#: config/tc-tahoe.c:1376
-msgid "Auto inc only works of the SP register."
-msgstr "El modo auto inc funciona solamente en los registros SP."
-
-#: config/tc-tahoe.c:1380
-msgid "Auto inc won't work with quadwords."
-msgstr "Auto inc no funciona con quadwords."
-
-#: config/tc-tahoe.c:1382
-msgid "You can't have an index in auto inc mode."
-msgstr "No se puede tener un índice en el modo auto inc."
-
-#: config/tc-tahoe.c:1390
-msgid "You can't index the sp register."
-msgstr "No se puede indizar el registro sp."
-
-#: config/tc-tahoe.c:1396
-msgid "Syntax error in register displaced mode."
-msgstr "Error sintáctico en el registro en modo desubicado."
-
-#: config/tc-tahoe.c:1415
-msgid "An offest is needed for this operand."
-msgstr "Se necesita un desplazamiento para este operando."
-
-#: config/tc-tahoe.c:1427
-msgid "You can't index a register in immediate mode."
-msgstr "No se puede indizar un registro en modo inmediato."
-
-#: config/tc-tahoe.c:1429
-msgid "Immediate access can't be used as an address."
-msgstr "No se puede utilizar el acceso inmediato como una dirección"
-
-#: config/tc-tahoe.c:1540
-#, c-format
-msgid "Compiler bug: ODD number of bytes in arg structure %s."
-msgstr "Bicho del compilador: número de bytes IMPAR en la estructura de argumentos %s."
-
-#: config/tc-tahoe.c:1567 config/tc-vax.c:1968
-msgid "Not enough operands"
-msgstr "No hay suficientes operandos"
-
-#: config/tc-tahoe.c:1577 config/tc-vax.c:1975
-msgid "Too many operands"
-msgstr "Demasiados operandos"
-
-#: config/tc-tahoe.c:1628 config/tc-vax.c:408
-#, c-format
-msgid "Ignoring statement due to \"%s\""
-msgstr "Se ignora la declaración debido a \"%s\""
-
-#: config/tc-tahoe.c:1723
-#, c-format
-msgid "Compliler bug: Got a case (%d) I wasn't expecting."
-msgstr "Bicho del compilador: Se obtuvo un case (%d) que no se esperaba."
-
-#: config/tc-tahoe.c:1817
-msgid "Real branch displacements must be expressions."
-msgstr "Las desubicaciones de ramificaciones reales deben ser expresiones."
-
-#: config/tc-tahoe.c:1820
-#, c-format
-msgid "Complier error: I got an unknown synthetic branch :%c"
-msgstr "Error del compilador: Se obtuvo una ramificación sintética desconocida :%c"
-
-# En México se utilizaría `guácala' por `barf', como una expresión
-# que simboliza vómito, pero no es comprensible para todos los
-# hispanoparlantes. :-)    cfuga
-#: config/tc-tahoe.c:1961
-#, c-format
-msgid "Barf, bad mode %x\n"
-msgstr "Ugh, modo erróneo %x\n"
-
 #. Only word (et al.), align, or conditionals are allowed within
 #. .struct/.union.
 #: config/tc-tic54x.c:222
@@ -10323,495 +9967,422 @@
 msgid "Can't redirect stderr to the file '%s'"
 msgstr "No se puede redirigir la salida de error estándard al fichero '%s'"
 
-#: config/tc-tic54x.c:2828
+#: config/tc-tic54x.c:2809
 #, c-format
 msgid "Undefined substitution symbol '%s'"
 msgstr "Símbolo de sustitución '%s' indefinido"
 
-#: config/tc-tic54x.c:3485
+#: config/tc-tic54x.c:3466
 msgid "Badly formed address expression"
 msgstr "Expresión de dirección mal formada"
 
-#: config/tc-tic54x.c:3749
+#: config/tc-tic54x.c:3730
 #, c-format
 msgid "Invalid dmad syntax '%s'"
 msgstr "Sintaxis de dmad '%s' inválida"
 
-#: config/tc-tic54x.c:3815
+#: config/tc-tic54x.c:3796
 #, c-format
 msgid "Use the .mmregs directive to use memory-mapped register names such as '%s'"
 msgstr "Usa la directiva .mmregs para utilizar nombres de registro mapeados en memoria tales como '%s'"
 
-#: config/tc-tic54x.c:3868
+#: config/tc-tic54x.c:3849
 msgid "Address mode *+ARx is write-only. Results of reading are undefined."
 msgstr "El modo de dirección *+ARx es de sólo escritura. El resultado de la lectura está indefinido."
 
-#: config/tc-tic54x.c:3888
+#: config/tc-tic54x.c:3869
 #, c-format
 msgid "Unrecognized indirect address format \"%s\""
 msgstr "Formato de dirección indirecta \"%s\" no reconocido"
 
-#: config/tc-tic54x.c:3927
+#: config/tc-tic54x.c:3908
 #, c-format
 msgid "Operand '%s' out of range (%d <= x <= %d)"
 msgstr "El operando '%s' está fuera de rango (%d <= x <= %d)"
 
-#: config/tc-tic54x.c:3947
+#: config/tc-tic54x.c:3928
 msgid "Error in relocation handling"
 msgstr "Error en el manejo de la reubicación"
 
-#: config/tc-tic54x.c:3968 config/tc-tic54x.c:4032 config/tc-tic54x.c:4064
+#: config/tc-tic54x.c:3949 config/tc-tic54x.c:4013 config/tc-tic54x.c:4045
 #, c-format
 msgid "Unrecognized condition code \"%s\""
 msgstr "Código de condición \"%s\" no reconocido"
 
-#: config/tc-tic54x.c:3985
+#: config/tc-tic54x.c:3966
 #, c-format
 msgid "Condition \"%s\" does not match preceding group"
 msgstr "La condición \"%s\" no coincide con el grupo precedente"
 
-#: config/tc-tic54x.c:3993
+#: config/tc-tic54x.c:3974
 #, c-format
 msgid "Condition \"%s\" uses a different accumulator from a preceding condition"
 msgstr "La condición \"%s\" utiliza un acumulador diferente de una condición precedente"
 
-#: config/tc-tic54x.c:4000
+#: config/tc-tic54x.c:3981
 msgid "Only one comparison conditional allowed"
 msgstr "Sólo se permite una comparación condicional"
 
-#: config/tc-tic54x.c:4005
+#: config/tc-tic54x.c:3986
 msgid "Only one overflow conditional allowed"
 msgstr "Sólo se permite un desbordamiento condicional"
 
-#: config/tc-tic54x.c:4013
+#: config/tc-tic54x.c:3994
 #, c-format
 msgid "Duplicate %s conditional"
 msgstr "Condicional %s duplicado"
 
-#: config/tc-tic54x.c:4048
+#: config/tc-tic54x.c:4029
 msgid "Invalid auxiliary register (use AR0-AR7)"
 msgstr "Registro auxiliar inválido (utilice AR0-AR7)"
 
-#: config/tc-tic54x.c:4084
+#: config/tc-tic54x.c:4065
 msgid "lk addressing modes are invalid for memory-mapped register addressing"
 msgstr "Los modos de direccionamiento lk son inválidos para el direccionamiento de registros mapeados en memoria"
 
-#: config/tc-tic54x.c:4092
+#: config/tc-tic54x.c:4073
 msgid "Address mode *+ARx is not allowed in memory-mapped register addressing.  Resulting behavior is undefined."
 msgstr "El modo de dirección *+ARx no se permite en el direccionamiento de registros mapeados en memoria.  El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:4118
+#: config/tc-tic54x.c:4099
 msgid "Destination accumulator for each part of this parallel instruction must be different"
 msgstr "El acumulador de destino para cada parte de esta instrucción paralela debe ser diferente"
 
-#: config/tc-tic54x.c:4167
+#: config/tc-tic54x.c:4148
 #, c-format
 msgid "Memory mapped register \"%s\" out of range"
 msgstr "El registro mapeado en memoria \"%s\" está fuera de rango"
 
-#: config/tc-tic54x.c:4206
+#: config/tc-tic54x.c:4187
 msgid "Invalid operand (use 1, 2, or 3)"
 msgstr "Operando inválido (utilice 1, 2, ó 3)"
 
-#: config/tc-tic54x.c:4231
+#: config/tc-tic54x.c:4212
 msgid "A status register or status bit name is required"
 msgstr "Se requiere un registro de estado o un nombre de bit de estado"
 
-#: config/tc-tic54x.c:4241
+#: config/tc-tic54x.c:4222
 #, c-format
 msgid "Unrecognized status bit \"%s\""
 msgstr "Bit de estado \"%s\" no reconocido"
 
-#: config/tc-tic54x.c:4264
+#: config/tc-tic54x.c:4245
 #, c-format
 msgid "Invalid status register \"%s\""
 msgstr "Registro de estado \"%s\" inválido"
 
-#: config/tc-tic54x.c:4276
+#: config/tc-tic54x.c:4257
 #, c-format
 msgid "Operand \"%s\" out of range (use 1 or 2)"
 msgstr "El operando \"%s\" está fuera de rango (utilice 1 ó 2)"
 
-#: config/tc-tic54x.c:4484
+#: config/tc-tic54x.c:4465
 #, c-format
 msgid "Unrecognized instruction \"%s\""
 msgstr "Instrucción \"%s\" no reconocida"
 
-#: config/tc-tic54x.c:4513
+#: config/tc-tic54x.c:4494
 #, c-format
 msgid "Unrecognized operand list '%s' for instruction '%s'"
 msgstr "Lista de operando '%s' no reconocida para la instrucción '%s'"
 
-#: config/tc-tic54x.c:4545
+#: config/tc-tic54x.c:4526
 #, c-format
 msgid "Unrecognized parallel instruction \"%s\""
 msgstr "Instrucción paralela \"%s\" no reconocida"
 
-#: config/tc-tic54x.c:4596
+#: config/tc-tic54x.c:4577
 #, c-format
 msgid "Invalid operand (s) for parallel instruction \"%s\""
 msgstr "Operando(s) inválido(s) para la instrucción paralela \"%s\""
 
-#: config/tc-tic54x.c:4599
+#: config/tc-tic54x.c:4580
 #, c-format
 msgid "Unrecognized parallel instruction combination \"%s || %s\""
 msgstr "Combinación de instrucciones paralelas \"%s || %s\" no reconocida"
 
-#: config/tc-tic54x.c:4836
+#: config/tc-tic54x.c:4817
 #, c-format
 msgid "%s symbol recursion stopped at second appearance of '%s'"
 msgstr "La recursión del símbolo %s se detuvo en la segunda aparición de '%s'"
 
-#: config/tc-tic54x.c:4876
+#: config/tc-tic54x.c:4857
 msgid "Unrecognized substitution symbol function"
 msgstr "Función de sustitución de símbolo no reconocida"
 
-#: config/tc-tic54x.c:4881
+#: config/tc-tic54x.c:4862
 msgid "Missing '(' after substitution symbol function"
 msgstr "Falta un '(' después de la función de sustitución de símbolo"
 
-#: config/tc-tic54x.c:4895
+#: config/tc-tic54x.c:4876
 msgid "Expecting second argument"
 msgstr "Se esperaba un segundo argumento"
 
-#: config/tc-tic54x.c:4908 config/tc-tic54x.c:4958
+#: config/tc-tic54x.c:4889 config/tc-tic54x.c:4939
 msgid "Extra junk in function call, expecting ')'"
 msgstr "Basura extra en la llamada a función, se esperaba ')'"
 
-#: config/tc-tic54x.c:4934
+#: config/tc-tic54x.c:4915
 msgid "Function expects two arguments"
 msgstr "La función espera dos argumentos"
 
-#: config/tc-tic54x.c:4947
+#: config/tc-tic54x.c:4928
 msgid "Expecting character constant argument"
 msgstr "Se espera una constante de carácter como argumento"
 
-#: config/tc-tic54x.c:4953
+#: config/tc-tic54x.c:4934
 msgid "Both arguments must be substitution symbols"
 msgstr "Ambos argumentos deben ser símbolos de sustitución"
 
-#: config/tc-tic54x.c:5006
+#: config/tc-tic54x.c:4987
 #, c-format
 msgid "Invalid subscript (use 1 to %d)"
 msgstr "Subíndice inválido (utilice de 1 a %d)"
 
-#: config/tc-tic54x.c:5016
+#: config/tc-tic54x.c:4997
 #, c-format
 msgid "Invalid length (use 0 to %d"
 msgstr "Longitud inválida (utilice de 0 a %d)"
 
-#: config/tc-tic54x.c:5026
+#: config/tc-tic54x.c:5007
 msgid "Missing ')' in subscripted substitution symbol expression"
 msgstr "Falta un ')' en la expresión del símbolo de sustitución suscrito"
 
-#: config/tc-tic54x.c:5046
+#: config/tc-tic54x.c:5027
 msgid "Missing forced substitution terminator ':'"
 msgstr "Falta el terminador de sustitución forzada ':'"
 
-#: config/tc-tic54x.c:5201
+#: config/tc-tic54x.c:5182
 #, c-format
 msgid "Instruction does not fit in available delay slots (%d-word insn, %d slots left)"
 msgstr "La instrucción no cabe en las ranuras de retardo disponibles (%d instrucciones word, %d ranuras restantes)"
 
-#: config/tc-tic54x.c:5242
+#: config/tc-tic54x.c:5223
 #, c-format
 msgid "Unrecognized parallel instruction '%s'"
 msgstr "Instrucción paralela '%s' no reconocida"
 
-#: config/tc-tic54x.c:5254
+#: config/tc-tic54x.c:5235
 #, c-format
 msgid "Instruction '%s' requires an LP cpu version"
 msgstr "La instrucción '%s' requiere una versión de cpu LP"
 
-#: config/tc-tic54x.c:5261
+#: config/tc-tic54x.c:5242
 #, c-format
 msgid "Instruction '%s' requires far mode addressing"
 msgstr "La instrucción '%s' requiere el modo de direccionamiento lejano"
 
-#: config/tc-tic54x.c:5273
+#: config/tc-tic54x.c:5254
 #, c-format
 msgid "Instruction does not fit in available delay slots (%d-word insn, %d slots left). Resulting behavior is undefined."
 msgstr "La instrucción no cabe en las ranuras de retardo disponibles (%d instrucciones word, %d ranuras restantes). El comportamiento resultante está indefinida."
 
-#: config/tc-tic54x.c:5283
+#: config/tc-tic54x.c:5264
 msgid "Instructions which cause PC discontinuity are not allowed in a delay slot. Resulting behavior is undefined."
 msgstr "Las instrucciones que causan discontinuidad en el PC no se permiten en una ranura de retardo. El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:5294
+#: config/tc-tic54x.c:5275
 #, c-format
 msgid "'%s' is not repeatable. Resulting behavior is undefined."
 msgstr "'%s' no se puede repetir. El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:5298
+#: config/tc-tic54x.c:5279
 msgid "Instructions using long offset modifiers or absolute addresses are not repeatable. Resulting behavior is undefined."
 msgstr "Las instrucciones que usan modificadores de desplazamiento long o direcciones absolutas no se pueden repetir. El comportamiento resultante está indefinido."
 
-#: config/tc-tic54x.c:5478
+#: config/tc-tic54x.c:5459
 #, c-format
 msgid "Unsupported relocation size %d"
 msgstr "Tamaño de reubicación %d sin soporte"
 
-#: config/tc-tic54x.c:5632
+#: config/tc-tic54x.c:5602
 msgid "non-absolute value used with .space/.bes"
 msgstr "se utilizó un valor no absoluto con .space/.bes"
 
-#: config/tc-tic54x.c:5636
+#: config/tc-tic54x.c:5606
 #, c-format
 msgid "negative value ignored in %s"
 msgstr "se ignora el valor negativo en %s"
 
-#: config/tc-tic54x.c:5725
+#: config/tc-tic54x.c:5695
 #, c-format
 msgid "attempt to .space/.bes backwards? (%ld)"
 msgstr "¿se intentó hacer .space/.bes hacia atrás? (%ld)"
 
-#: config/tc-tic54x.c:5759
+#: config/tc-tic54x.c:5729
 #, c-format
 msgid "Invalid label '%s'"
 msgstr "Etiqueta '%s' inválida"
 
-#: config/tc-tic80.c:27
+#: config/tc-v850.c:234
 #, c-format
-msgid "internal error:%s:%d: %s\n"
-msgstr "error interno:%s:%d: %s\n"
-
-#: config/tc-tic80.c:30
-#, c-format
-msgid "internal error:%s:%d: %s %ld\n"
-msgstr "error interno:%s:%d: %s %ld\n"
-
-#: config/tc-tic80.c:90
-msgid "Relaxation is a luxury we can't afford"
-msgstr "La relajación es un lujo que no se puede conceder"
-
-#: config/tc-tic80.c:139
-msgid "bad call to md_atof ()"
-msgstr "llamada errónea a md_atof ()"
-
-#: config/tc-tic80.c:236
-msgid "':' not followed by 'm' or 's'"
-msgstr "':' no está seguido por 'm' o 's'"
-
-#: config/tc-tic80.c:249
-msgid "paren nesting"
-msgstr "anidamiento de paréntesis"
-
-#: config/tc-tic80.c:263
-msgid "mismatched parenthesis"
-msgstr "paréntesis sin coincidencia"
-
-#: config/tc-tic80.c:461
-msgid "unhandled expression type"
-msgstr "tipo de expresión sin manejar"
-
-#: config/tc-tic80.c:592
-msgid "symbol reloc that is not PC relative or 32 bits"
-msgstr "reubicación de símbolo que no es relativo al PC o de 32 bits"
-
-#: config/tc-tic80.c:621
-msgid "unhandled operand modifier"
-msgstr "modificador de operando sin manejar"
-
-#: config/tc-tic80.c:663
-msgid "unhandled expression"
-msgstr "expresión sin manejar"
-
-#: config/tc-tic80.c:711
-#, c-format
-msgid "Invalid mnemonic: '%s'"
-msgstr "Mnemónico inválido: '%s'"
-
-#: config/tc-tic80.c:724
-#, c-format
-msgid "Invalid operands: '%s'"
-msgstr "Operandos inválidos: '%s'"
-
-#: config/tc-tic80.c:802
-msgid "unhandled predefined symbol bits"
-msgstr "bits de símbolo predefinido sin manejar"
-
-#: config/tc-tic80.c:897
-#, c-format
-msgid "PC offset 0x%lx outside range 0x%lx-0x%lx"
-msgstr "desplazamiento del PC 0x%lx fuera del rango 0x%lx-0x%lx"
-
-#: config/tc-tic80.c:912
-msgid "unhandled relocation type in fixup"
-msgstr "typo de reubicación sin manejar en la compostura"
-
-#: config/tc-tic80.c:951
-msgid "md_convert_frag() not implemented yet"
-msgstr "md_convert_frag() aún no está implementado"
-
-#: config/tc-v850.c:244
-#, c-format
 msgid ".COMMon length (%d.) < 0! Ignored."
 msgstr "¡Longitud .COMMún (%d.) < 0! Se ignora."
 
-#: config/tc-v850.c:266
+#: config/tc-v850.c:255
 #, c-format
 msgid "Length of .comm \"%s\" is already %ld. Not changed to %d."
 msgstr "La longitud de .comm \"%s\" ya es %ld. No se cambia a %d."
 
-#: config/tc-v850.c:293
+#: config/tc-v850.c:281
 msgid "Common alignment negative; 0 assumed"
 msgstr "Alineación común negativa; se asume 0"
 
-#: config/tc-v850.c:976
+#: config/tc-v850.c:939
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "operando de desplazamiento desconocido: %x\n"
 
-#: config/tc-v850.c:977
+#: config/tc-v850.c:940
 msgid "internal failure in parse_register_list"
 msgstr "falla interna en parse_register_list"
 
-#: config/tc-v850.c:993
+#: config/tc-v850.c:956
 msgid "constant expression or register list expected"
 msgstr "se esperaba una expresión constante o una lista de registros"
 
-#: config/tc-v850.c:998 config/tc-v850.c:1011 config/tc-v850.c:1030
+#: config/tc-v850.c:961 config/tc-v850.c:974 config/tc-v850.c:993
 msgid "high bits set in register list expression"
 msgstr "se establecieron los bits altos en la expresión de lista de registros"
 
-#: config/tc-v850.c:1069 config/tc-v850.c:1132
+#: config/tc-v850.c:1032 config/tc-v850.c:1095
 msgid "illegal register included in list"
 msgstr "se incluyó un registro ilegal en la lista"
 
-#: config/tc-v850.c:1075
+#: config/tc-v850.c:1038
 msgid "system registers cannot be included in list"
 msgstr "los registros del sistema no pueden estar incluídos en la lista"
 
-#: config/tc-v850.c:1080
+#: config/tc-v850.c:1043
 msgid "PSW cannot be included in list"
 msgstr "PSW no se puede incluir en la lista"
 
-#: config/tc-v850.c:1087
+#: config/tc-v850.c:1050
 msgid "High value system registers cannot be included in list"
 msgstr "Los registros altos de valores del sistema no se pueden incluir en la lista"
 
-#: config/tc-v850.c:1111
+#: config/tc-v850.c:1074
 msgid "second register should follow dash in register list"
 msgstr "el segundo registro debe estar a continuación de un guión en la lista de registros"
 
-#: config/tc-v850.c:1156
+#: config/tc-v850.c:1119
 #, c-format
 msgid " V850 options:\n"
 msgstr "Opciones de V850:\n"
 
-#: config/tc-v850.c:1157
+#: config/tc-v850.c:1120
 #, c-format
 msgid "  -mwarn-signed-overflow    Warn if signed immediate values overflow\n"
 msgstr "  -mwarn-signed-overflow    Avisa si los valores inmediatos con signo desbordan\n"
 
-#: config/tc-v850.c:1158
+#: config/tc-v850.c:1121
 #, c-format
 msgid "  -mwarn-unsigned-overflow  Warn if unsigned immediate values overflow\n"
 msgstr "  -mwarn-unsigned-overflow  Avisa si los valores inmediato sin signo desbordan\n"
 
-#: config/tc-v850.c:1159
+#: config/tc-v850.c:1122
 #, c-format
 msgid "  -mv850                    The code is targeted at the v850\n"
 msgstr "  -mv850                    El código está destinado para el v850\n"
 
-#: config/tc-v850.c:1160
+#: config/tc-v850.c:1123
 #, c-format
 msgid "  -mv850e                   The code is targeted at the v850e\n"
 msgstr "  -mv850e                   El código está destinado para el v850e\n"
 
-#: config/tc-v850.c:1161
+#: config/tc-v850.c:1124
 #, c-format
 msgid "  -mv850e1                  The code is targeted at the v850e1\n"
 msgstr "  -mv850e1                  El código está destinado para el v850e1\n"
 
-#: config/tc-v850.c:1162
+#: config/tc-v850.c:1125
 #, c-format
 msgid "  -mv850any                 The code is generic, despite any processor specific instructions\n"
 msgstr "  -mv850any                 El código es genérico, a pesar de cualquier instrucción específica de procesador\n"
 
-#: config/tc-v850.c:1163
+#: config/tc-v850.c:1126
 #, c-format
 msgid "  -mrelax                   Enable relaxation\n"
 msgstr "  -mrelax                   Activa la relajación.\n"
 
-#: config/tc-v850.c:1354
+#: config/tc-v850.c:1308
 #, c-format
 msgid "Unable to determine default target processor from string: %s"
 msgstr "No se puede determinar el procesador objetivo por defecto de la cadena: %s"
 
-#: config/tc-v850.c:1389
+#: config/tc-v850.c:1343
 msgid "lo() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación lo() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1410
+#: config/tc-v850.c:1360
 msgid "ctoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación ctoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1436
+#: config/tc-v850.c:1382
 msgid "sdaoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación sdaoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1462
+#: config/tc-v850.c:1404
 msgid "zdaoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación zdaoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1499
+#: config/tc-v850.c:1437
 msgid "tdaoff() relocation used on an instruction which does not support it"
 msgstr "se utilizó una reubicación tdaoff() en una instrucción que no la soporta"
 
-#: config/tc-v850.c:1714
+#: config/tc-v850.c:1642
 msgid "Target processor does not support this instruction."
 msgstr "El procesador objetivo no tiene soporte para esta instrucción."
 
-#: config/tc-v850.c:1805 config/tc-v850.c:1834 config/tc-v850.c:2022
+#: config/tc-v850.c:1731 config/tc-v850.c:1760 config/tc-v850.c:1940
 msgid "immediate operand is too large"
 msgstr "el operando inmediato es demasiado grande"
 
-#: config/tc-v850.c:1816
+#: config/tc-v850.c:1742
 msgid "AAARG -> unhandled constant reloc"
 msgstr "AAARG -> reubicación de constante sin manejar"
 
-#: config/tc-v850.c:1860
+#: config/tc-v850.c:1785
 msgid "invalid register name"
 msgstr "nombre de registro inválido"
 
-#: config/tc-v850.c:1865
+#: config/tc-v850.c:1789
 msgid "register r0 cannot be used here"
 msgstr "el registro r0 no se puede usar aquí"
 
-#: config/tc-v850.c:1877
+#: config/tc-v850.c:1800
 msgid "invalid system register name"
 msgstr "nombre de registro de sistema inválido"
 
-#: config/tc-v850.c:1890
+#: config/tc-v850.c:1812
 msgid "expected EP register"
 msgstr "se esperaba el registro EP"
 
-#: config/tc-v850.c:1907
+#: config/tc-v850.c:1828
 msgid "invalid condition code name"
 msgstr "nombre de código de condición inválido"
 
-#: config/tc-v850.c:1928 config/tc-v850.c:1932
+#: config/tc-v850.c:1848 config/tc-v850.c:1852
 msgid "constant too big to fit into instruction"
 msgstr "la constante es demasiado grande para caber en la instrucción"
 
-#: config/tc-v850.c:1985
+#: config/tc-v850.c:1905
 msgid "syntax error: value is missing before the register name"
 msgstr "error sintáctico: falta el valor antes del nombre de registro"
 
-#: config/tc-v850.c:1987
+#: config/tc-v850.c:1907
 msgid "syntax error: register not expected"
 msgstr "error sintáctico: no se esperaba un registro"
 
-#: config/tc-v850.c:2001
+#: config/tc-v850.c:1920
 msgid "syntax error: system register not expected"
 msgstr "error sintáctico: no se esperaba un registro de sistema"
 
-#: config/tc-v850.c:2006
+#: config/tc-v850.c:1924
 msgid "syntax error: condition code not expected"
 msgstr "error sintáctico: no es esperaba código de condición"
 
-#: config/tc-v850.c:2040
+#: config/tc-v850.c:1958
 msgid "invalid operand"
 msgstr "operando inválido"
 
@@ -10820,180 +10391,215 @@
 msgid "VIP_BEGIN error:%s"
 msgstr "error VIP_BEGIN:%s"
 
-#: config/tc-vax.c:427
+#: config/tc-vax.c:461
 #, c-format
+msgid "Ignoring statement due to \"%s\""
+msgstr "Se ignora la declaración debido a \"%s\""
+
+#: config/tc-vax.c:480
+#, c-format
 msgid "Aborting because statement has \"%s\""
 msgstr "Se aborta porque la declaración tiene \"%s\""
 
-#: config/tc-vax.c:474
+#: config/tc-vax.c:527
 msgid "Can't relocate expression"
 msgstr "No se puede reubicar la expresión"
 
-#: config/tc-vax.c:577
+#: config/tc-vax.c:630
 msgid "Bignum not permitted in short literal. Immediate mode assumed."
 msgstr "No se permite un número grande en una literal short. Se asume el modo inmediato."
 
-#: config/tc-vax.c:586
+#: config/tc-vax.c:639
 msgid "Can't do flonum short literal: immediate mode used."
 msgstr "No se puede hacer una literal short de un número de coma flotante: se usa el modo inmediato."
 
-#: config/tc-vax.c:631
+#: config/tc-vax.c:684
 #, c-format
 msgid "A bignum/flonum may not be a displacement: 0x%lx used"
 msgstr "Un número grande/de coma flotante no puede ser una desubicación: se usa 0x%lx"
 
-#: config/tc-vax.c:967
+#: config/tc-vax.c:1007
 #, c-format
 msgid "Short literal overflow(%ld.), immediate mode assumed."
 msgstr "Desbordamiento de la literal short (%ld.), se asume el modo inmediato."
 
-#: config/tc-vax.c:976
+#: config/tc-vax.c:1016
 #, c-format
 msgid "Forced short literal to immediate mode. now_seg=%s to_seg=%s"
 msgstr "Se fuerza la literal short a modo inmediato. now_seg=%s to_seg=%s"
 
-#: config/tc-vax.c:1041
+#: config/tc-vax.c:1081
 msgid "Length specification ignored. Address mode 9F used"
 msgstr "Se ignora la especificación de longitud. Se usa el modo de direccionamiento 9F"
 
-#: config/tc-vax.c:1102
+#: config/tc-vax.c:1142
 msgid "Invalid operand:  immediate value used as base address."
 msgstr "Operando inválido: se utilizó un valor inmediato como dirección base."
 
-#: config/tc-vax.c:1104
+#: config/tc-vax.c:1144
 msgid "Invalid operand:  immediate value used as address."
 msgstr "Operando inválido: se utilizó un valor inmediato como dirección"
 
-#: config/tc-vax.c:1129
+#: config/tc-vax.c:1169
 msgid "Symbol used as immediate operand in PIC mode."
 msgstr "Se utiliza un símbolo como operando inmediato en modo PIC."
 
-#: config/tc-vax.c:1947
+#: config/tc-vax.c:1942
 msgid "odd number of bytes in operand description"
 msgstr "número impar de bytes en la descripción del operando"
 
-#: config/tc-vax.c:1963
+#: config/tc-vax.c:1958
 msgid "Bad operand"
 msgstr "Operando erróneo"
 
-#: config/tc-vax.c:2538
+#: config/tc-vax.c:1963
+msgid "Not enough operands"
+msgstr "No hay suficientes operandos"
+
+#: config/tc-vax.c:1970
+msgid "Too many operands"
+msgstr "Demasiados operandos"
+
+#: config/tc-vax.c:2533
 msgid "no '[' to match ']'"
 msgstr "no hay '[' que coincida con ']'"
 
-#: config/tc-vax.c:2558
+#: config/tc-vax.c:2553
 msgid "bad register in []"
 msgstr "registro erróneo en []"
 
-#: config/tc-vax.c:2560
+#: config/tc-vax.c:2555
 msgid "[PC] index banned"
 msgstr "índice [PC] prohibido"
 
-#: config/tc-vax.c:2595
+#: config/tc-vax.c:2590
 msgid "no '(' to match ')'"
 msgstr "no hay '(' que coincida con ')'"
 
-#: config/tc-vax.c:2735
+#: config/tc-vax.c:2730
 msgid "invalid branch operand"
 msgstr "operando de ramificación inválido"
 
-#: config/tc-vax.c:2764
+#: config/tc-vax.c:2759
 msgid "address prohibits @"
 msgstr "la dirección prohibe @"
 
-#: config/tc-vax.c:2766
+#: config/tc-vax.c:2761
 msgid "address prohibits #"
 msgstr "la dirección prohibe #"
 
-#: config/tc-vax.c:2770
+#: config/tc-vax.c:2765
 msgid "address prohibits -()"
 msgstr "la dirección prohibe -()"
 
-#: config/tc-vax.c:2772
+#: config/tc-vax.c:2767
 msgid "address prohibits ()+"
 msgstr "la dirección prohibe ()+"
 
-#: config/tc-vax.c:2775
+#: config/tc-vax.c:2770
 msgid "address prohibits ()"
 msgstr "la dirección prohibe ()"
 
-#: config/tc-vax.c:2777
+#: config/tc-vax.c:2772
 msgid "address prohibits []"
 msgstr "la dirección prohibe []"
 
-#: config/tc-vax.c:2779
+#: config/tc-vax.c:2774
 msgid "address prohibits register"
 msgstr "la dirección prohibe un registro"
 
-#: config/tc-vax.c:2781
+#: config/tc-vax.c:2776
 msgid "address prohibits displacement length specifier"
 msgstr "la dirección prohibe un especificador de longitud de desubicación"
 
-#: config/tc-vax.c:2811
+#: config/tc-vax.c:2806
 msgid "invalid operand of S^#"
 msgstr "operando inválido de S^#"
 
-#: config/tc-vax.c:2828
+#: config/tc-vax.c:2823
 msgid "S^# needs expression"
 msgstr "S^# necesita una expresión"
 
-#: config/tc-vax.c:2835
+#: config/tc-vax.c:2830
 msgid "S^# may only read-access"
 msgstr "S^# tal vez sea solamente para acceso por lectura"
 
-#: config/tc-vax.c:2860
+#: config/tc-vax.c:2855
 msgid "invalid operand of -()"
 msgstr "operando inválido de -()"
 
-#: config/tc-vax.c:2866
+#: config/tc-vax.c:2861
 msgid "-(PC) unpredictable"
 msgstr "-(PC) impredecible"
 
-#: config/tc-vax.c:2868
+#: config/tc-vax.c:2863
 msgid "[]index same as -()register: unpredictable"
 msgstr "[]índice igual que -()registro: impredecible"
 
-#: config/tc-vax.c:2904
+#: config/tc-vax.c:2899
 msgid "invalid operand of ()+"
 msgstr "operando inválido de ()+"
 
-#: config/tc-vax.c:2910
+#: config/tc-vax.c:2905
 msgid "(PC)+ unpredictable"
 msgstr "(PC)+ impredecible"
 
-#: config/tc-vax.c:2912
+#: config/tc-vax.c:2907
 msgid "[]index same as ()+register: unpredictable"
 msgstr "[]índice igual que ()+registro: impredecible"
 
-#: config/tc-vax.c:2937
+#: config/tc-vax.c:2932
 msgid "# conflicts length"
 msgstr "# tiene conflictos con la longitud"
 
-#: config/tc-vax.c:2939
+#: config/tc-vax.c:2934
 msgid "# bars register"
 msgstr "# prohibe el registro"
 
-#: config/tc-vax.c:2961
+#: config/tc-vax.c:2956
 msgid "writing or modifying # is unpredictable"
 msgstr "escribir o modificar # es impredecible"
 
-#: config/tc-vax.c:2991
+#: config/tc-vax.c:2986
 msgid "length not needed"
 msgstr "no se necesita la longitud"
 
-#: config/tc-vax.c:2998
+#: config/tc-vax.c:2993
 msgid "can't []index a register, because it has no address"
 msgstr "no se puede []indizar un registro, porque no tiene dirección"
 
-#: config/tc-vax.c:3000
+#: config/tc-vax.c:2995
 msgid "a register has no address"
 msgstr "un registro no tiene dirección"
 
-#: config/tc-vax.c:3011
+#: config/tc-vax.c:3006
 msgid "PC part of operand unpredictable"
 msgstr "la parte PC del operando es impredecible"
 
-#: config/tc-vax.c:3360
+#: config/tc-vax.c:3281
+msgid "SYMBOL TABLE not implemented"
+msgstr "SYMBOL TABLE no está implementado"
+
+#: config/tc-vax.c:3285
+msgid "TOKEN TRACE not implemented"
+msgstr "TOKEN TRACE no está implementado"
+
+#: config/tc-vax.c:3289
 #, c-format
+msgid "Displacement length %s ignored!"
+msgstr "¡Se ignora la longitud de desubicación %s!"
+
+#: config/tc-vax.c:3293
+#, c-format
+msgid "I don't need or use temp. file \"%s\"."
+msgstr "No se necesita o se utiliza el fichero temporal \"%s\"."
+
+#: config/tc-vax.c:3297
+msgid "I don't use an interpass file! -V ignored"
+msgstr "¡No se usa un fichero entre pasos! Se ignora -V"
+
+#: config/tc-vax.c:3354
+#, c-format
 msgid ""
 "VAX options:\n"
 "-d LENGTH\t\tignored\n"
@@ -11011,7 +10617,7 @@
 "-T\t\t\tse ignora\n"
 "-V\t\t\tse ignora\n"
 
-#: config/tc-vax.c:3369
+#: config/tc-vax.c:3363
 #, c-format
 msgid ""
 "VMS options:\n"
@@ -11030,733 +10636,720 @@
 "\t\t\t0 = mayúsculas, 2 = minúsculas, 3 = preservar mayúsculas/minúsculas\n"
 "-v\"VERSION\"\t\tel código a ensamblar fue producido por el compilador \"VERSION\"\n"
 
-#: config/tc-w65.c:142
-msgid "need on or off."
-msgstr "necesita on u off."
-
-#: config/tc-w65.c:278 config/tc-w65.c:321
-msgid "syntax error after <exp"
-msgstr "error sintáctico después de <exp"
-
-#: config/tc-xstormy16.c:80
+#: config/tc-xstormy16.c:78
 #, c-format
 msgid " XSTORMY16 specific command line options:\n"
 msgstr " Opciones de línea de comando específicas de XSTROMY16:\n"
 
-#: config/tc-xstormy16.c:580
+#: config/tc-xstormy16.c:563
 #, c-format
 msgid "internal error: can't install fix for reloc type %d (`%s')"
 msgstr "error interno: no se puede instalar la compostura para el tipo de reubicación %d (`%s')"
 
-#: config/tc-xtensa.c:588
+#: config/tc-xtensa.c:590
 msgid "illegal range of target hardware versions"
 msgstr "rango ilegal de versiones de hardware objetivo"
 
-#: config/tc-xtensa.c:736
+#: config/tc-xtensa.c:738
 msgid "--density option is ignored"
 msgstr "se ignora la opción --density"
 
-#: config/tc-xtensa.c:739
+#: config/tc-xtensa.c:741
 msgid "--no-density option is ignored"
 msgstr "se ignora la opción --no-density"
 
-#: config/tc-xtensa.c:748
+#: config/tc-xtensa.c:750
 msgid "--generics is deprecated; use --transform instead"
 msgstr "--generics es obsoleto; utilice en su lugar --transform"
 
-#: config/tc-xtensa.c:751
+#: config/tc-xtensa.c:753
 msgid "--no-generics is deprecated; use --no-transform instead"
 msgstr "--no-generics es obsoleto; utilice en su lugar --no-transform"
 
-#: config/tc-xtensa.c:754
+#: config/tc-xtensa.c:756
 msgid "--relax is deprecated; use --transform instead"
 msgstr "--relax es obsoleto; utilice en su lugar --transform"
 
-#: config/tc-xtensa.c:757
+#: config/tc-xtensa.c:759
 msgid "--no-relax is deprecated; use --no-transform instead"
 msgstr "--no-relax es obsoleto; utilice en su lugar --no-transform"
 
-#: config/tc-xtensa.c:774
+#: config/tc-xtensa.c:776
 msgid "--absolute-literals option not supported in this Xtensa configuration"
 msgstr "la opción --absolute-literals no tiene soporte en esta configuración Xtensa"
 
-#: config/tc-xtensa.c:847
+#: config/tc-xtensa.c:849
 msgid "prefer-l32r conflicts with prefer-const16"
 msgstr "prefer-l32r tiene conflictos con prefer-const16"
 
-#: config/tc-xtensa.c:853
+#: config/tc-xtensa.c:855
 msgid "prefer-const16 conflicts with prefer-l32r"
 msgstr "prefer-const16 tiene conflictos con prefer-l32r"
 
-#: config/tc-xtensa.c:861 config/tc-xtensa.c:870 config/tc-xtensa.c:874
+#: config/tc-xtensa.c:863 config/tc-xtensa.c:872 config/tc-xtensa.c:876
 msgid "invalid target hardware version"
 msgstr "versión de hardware objetivo inválido"
 
-#: config/tc-xtensa.c:1086
+#: config/tc-xtensa.c:1078
 msgid "unmatched end directive"
 msgstr "directiva end sin coincidencia"
 
-#: config/tc-xtensa.c:1115
+#: config/tc-xtensa.c:1107
 msgid ".begin directive with no matching .end directive"
 msgstr "directiva .begin sin una directiva .end coincidente"
 
-#: config/tc-xtensa.c:1156
+#: config/tc-xtensa.c:1148
 msgid "[no-]generics is deprecated; use [no-]transform instead"
 msgstr "[no-]generics es obsoleto; utilice en su lugar [no-]transform"
 
-#: config/tc-xtensa.c:1161
+#: config/tc-xtensa.c:1153
 msgid "[no-]relax is deprecated; use [no-]transform instead"
 msgstr "[no-]relax es obsoleto; utilice en su lugar [no-]transform"
 
-#: config/tc-xtensa.c:1174
+#: config/tc-xtensa.c:1166
 #, c-format
 msgid "directive %s cannot be negated"
 msgstr "la directiva %s no se puede negar"
 
-#: config/tc-xtensa.c:1180
+#: config/tc-xtensa.c:1172
 msgid "unknown directive"
 msgstr "directiva desconocida"
 
-#: config/tc-xtensa.c:1202 config/tc-xtensa.c:1308 config/tc-xtensa.c:1604
-#: config/tc-xtensa.c:5552
+#: config/tc-xtensa.c:1194 config/tc-xtensa.c:1300 config/tc-xtensa.c:1573
+#: config/tc-xtensa.c:5496
 msgid "directives are not valid inside bundles"
 msgstr "las directivas no son válidas dentro de una agrupación"
 
-#: config/tc-xtensa.c:1214
+#: config/tc-xtensa.c:1206
 msgid ".begin literal is deprecated; use .literal instead"
 msgstr "El uso de .begin literal es obsoleto.  Utilice en su lugar .literal"
 
-#: config/tc-xtensa.c:1228
+#: config/tc-xtensa.c:1220
 msgid "cannot set literal_prefix inside literal fragment"
 msgstr "no se puede establecer literal_prefix dentro de un fragmento literal"
 
-#: config/tc-xtensa.c:1271
+#: config/tc-xtensa.c:1263
 msgid ".begin [no-]density is ignored"
 msgstr "se ignora .begin [no-]density"
 
-#: config/tc-xtensa.c:1278 config/tc-xtensa.c:1328
+#: config/tc-xtensa.c:1270 config/tc-xtensa.c:1320
 msgid "Xtensa absolute literals option not supported; ignored"
 msgstr "la opción de literales absolutos Xtensa no tiene soporte; se ignora"
 
-#: config/tc-xtensa.c:1321
+#: config/tc-xtensa.c:1313
 msgid ".end [no-]density is ignored"
 msgstr "se ignora .end [no-]density"
 
-#: config/tc-xtensa.c:1346
+#: config/tc-xtensa.c:1338
 #, c-format
 msgid "does not match begin %s%s at %s:%d"
 msgstr "no coincide inicio %s%s en %s:%d"
 
-#: config/tc-xtensa.c:1424
+#: config/tc-xtensa.c:1393
 msgid ".literal_position inside literal directive; ignoring"
 msgstr ".literal_position dentro de una directiva literal; se ignora"
 
-#: config/tc-xtensa.c:1444
+#: config/tc-xtensa.c:1413
 msgid ".literal not allowed inside .begin literal region"
 msgstr ".literal no se permite dentro de una región .begin literal"
 
-#: config/tc-xtensa.c:1480
+#: config/tc-xtensa.c:1449
 msgid "expected comma or colon after symbol name; rest of line ignored"
 msgstr "se esperaba coma o punto y coma después del nombre del símbolo: se ingnora el resto de la línea"
 
-#: config/tc-xtensa.c:1573
+#: config/tc-xtensa.c:1542
 msgid "fall through frequency must be greater than 0"
 msgstr "la frecuencia de caída debe ser mayor a 0"
 
-#: config/tc-xtensa.c:1581
+#: config/tc-xtensa.c:1550
 msgid "branch target frequency must be greater than 0"
 msgstr "la frecuencia de ramificación de objetivo debe ser mayor a 0"
 
-#: config/tc-xtensa.c:1629
+#: config/tc-xtensa.c:1598
 #, c-format
 msgid "opcode-specific %s relocation used outside an instruction"
 msgstr "se usó la reubicación %s específica de código de operación fuera de una instrucción"
 
-#: config/tc-xtensa.c:1782 config/tc-xtensa.c:1799
+#: config/tc-xtensa.c:1751 config/tc-xtensa.c:1768
 #, c-format
 msgid "bad register name: %s"
 msgstr "nombre de registro erróneo: %s"
 
-#: config/tc-xtensa.c:1788
+#: config/tc-xtensa.c:1757
 #, c-format
 msgid "bad register number: %s"
 msgstr "número de registro erróneo: %s"
 
-#: config/tc-xtensa.c:1867
+#: config/tc-xtensa.c:1836
 msgid "register number out of range"
 msgstr "número de registro fuera de rango"
 
-#: config/tc-xtensa.c:1951
+#: config/tc-xtensa.c:1920
 msgid "extra comma"
 msgstr "coma extra"
 
-#: config/tc-xtensa.c:1953
+#: config/tc-xtensa.c:1922
 msgid "extra colon"
 msgstr "punto y coma extra"
 
-#: config/tc-xtensa.c:1955
+#: config/tc-xtensa.c:1924
 msgid "missing argument"
 msgstr "falta el argumento"
 
-#: config/tc-xtensa.c:1957
+#: config/tc-xtensa.c:1926
 msgid "missing comma or colon"
 msgstr "falta una coma o punto y coma"
 
-#: config/tc-xtensa.c:2014
+#: config/tc-xtensa.c:1983
 msgid "incorrect register number, ignoring"
 msgstr "múmero de registro incorrecto, se ignora"
 
-#: config/tc-xtensa.c:2021
+#: config/tc-xtensa.c:1990
 msgid "too many arguments"
 msgstr "demasiados argumentos"
 
-#: config/tc-xtensa.c:2094
+#: config/tc-xtensa.c:2063
 #, c-format
 msgid "cannot encode opcode \"%s\""
 msgstr "no se puede codificar el código de operación \"%s\""
 
-#: config/tc-xtensa.c:2188
+#: config/tc-xtensa.c:2157
 #, c-format
 msgid "not enough operands (%d) for '%s'; expected %d"
 msgstr "no hay suficientes operandos (%d) para '%s'; se esperaban %d"
 
-#: config/tc-xtensa.c:2195
+#: config/tc-xtensa.c:2164
 #, c-format
 msgid "too many operands (%d) for '%s'; expected %d"
 msgstr "demasiados operandos (%d) para '%s'; se esperaban %d"
 
-#: config/tc-xtensa.c:2250
+#: config/tc-xtensa.c:2219
 #, c-format
 msgid "invalid register '%s' for '%s' instruction"
 msgstr "registros '%s' inválido para la instrucción '%s'"
 
-#: config/tc-xtensa.c:2257
+#: config/tc-xtensa.c:2226
 #, c-format
 msgid "invalid register number (%ld) for '%s' instruction"
 msgstr "número de registro (%ld) inválido para la instrucción `%s'"
 
-#: config/tc-xtensa.c:2326
+#: config/tc-xtensa.c:2295
 #, c-format
 msgid "invalid register number (%ld) for '%s'"
 msgstr "número de registro inválido (%ld) para '%s'"
 
-#: config/tc-xtensa.c:2716
+#: config/tc-xtensa.c:2685
 #, c-format
-msgid "operand %u is out of range for '%s'"
-msgstr "el operando %u está fuera de rango para '%s'"
+msgid "operand %d of '%s' has out of range value '%u'"
+msgstr "el operando %d de '%s' está el valor fuera de rango '%u'"
 
-#: config/tc-xtensa.c:2720
+#: config/tc-xtensa.c:2691
 #, c-format
-msgid "operand %u is invalid for '%s'"
-msgstr "el operando %u es inválido para '%s'"
+msgid "operand %d of '%s' has invalid value '%u'"
+msgstr "el operando %d de '%s' tiene el valor inválido '%u'"
 
-#: config/tc-xtensa.c:2766
+#: config/tc-xtensa.c:2739
 #, c-format
 msgid "internal error: unknown option name '%s'"
 msgstr "error interno: nombre de opción '%s' desconocido"
 
-#: config/tc-xtensa.c:3873
+#: config/tc-xtensa.c:3791
 msgid "INSTR_LABEL_DEF not supported yet"
 msgstr "INSTR_LABEL_DEF aún no tiene soporte"
 
-#: config/tc-xtensa.c:3902
+#: config/tc-xtensa.c:3820
 msgid "can't handle generation of literal/labels yet"
 msgstr "aún no se puede manejar la generación de literales/etiquetas"
 
-#: config/tc-xtensa.c:3906
+#: config/tc-xtensa.c:3824
 msgid "can't handle undefined OP TYPE"
 msgstr "no se puede manejar un OP TYPE indefinido"
 
-#: config/tc-xtensa.c:3966
+#: config/tc-xtensa.c:3885
 #, c-format
 msgid "found %d operands for '%s':  Expected %d"
 msgstr "se encontraron %d operandos para '%s':  Se esperaban %d"
 
-#: config/tc-xtensa.c:3973
+#: config/tc-xtensa.c:3892
 #, c-format
 msgid "found too many (%d) operands for '%s':  Expected %d"
 msgstr "se econtraron demasiados (%d) operandos para '%s':  Se esperaban %d"
 
-#: config/tc-xtensa.c:4234
+#: config/tc-xtensa.c:4029
+msgid "invalid immediate"
+msgstr "inmediato inválido"
+
+#: config/tc-xtensa.c:4140
 #, c-format
 msgid "invalid relocation for operand %i of '%s'"
 msgstr "reubicación inválida para el operando %i de '%s'"
 
-#: config/tc-xtensa.c:4244
+#: config/tc-xtensa.c:4150
 #, c-format
 msgid "invalid expression for operand %i of '%s'"
 msgstr "expresión inválida para el operando %i en '%s'"
 
-#: config/tc-xtensa.c:4254
+#: config/tc-xtensa.c:4160
 #, c-format
 msgid "invalid relocation in instruction slot %i"
 msgstr "reubicación inválida en la ranura de instrucción %i"
 
-#: config/tc-xtensa.c:4261
+#: config/tc-xtensa.c:4167
 #, c-format
 msgid "undefined symbol for opcode \"%s\""
 msgstr "símbolo indefinido para el código de operación \"%s\""
 
-#: config/tc-xtensa.c:4700
+#: config/tc-xtensa.c:4608
 msgid "opcode 'NOP.N' unavailable in this configuration"
 msgstr "el código de operación 'NOP.N' no está disponible en esta configuración"
 
-#: config/tc-xtensa.c:4759
+#: config/tc-xtensa.c:4668
 msgid "get_expanded_loop_offset: invalid opcode"
 msgstr "get_expanded_loop_offset: código de operación inválido"
 
-#: config/tc-xtensa.c:4840
+#: config/tc-xtensa.c:4751
 #, c-format
 msgid "assembly state not set for first frag in section %s"
 msgstr "no se estableció el estado de ensamblado para el primer fragmento en la sección %s"
 
-#: config/tc-xtensa.c:4889
+#: config/tc-xtensa.c:4804
 #, c-format
 msgid "unaligned branch target: %d bytes at 0x%lx"
 msgstr "ramificación de objetivo no alineada: %d bytes en 0x%lx"
 
-#: config/tc-xtensa.c:4927
+#: config/tc-xtensa.c:4843
 #, c-format
 msgid "unaligned loop: %d bytes at 0x%lx"
 msgstr "ciclo no alineado: %d bytes en 0x%lx"
 
-#: config/tc-xtensa.c:4951
+#: config/tc-xtensa.c:4867
 msgid "unexpected fix"
 msgstr "fix inesperado"
 
-#: config/tc-xtensa.c:4962 config/tc-xtensa.c:4966
+#: config/tc-xtensa.c:4878 config/tc-xtensa.c:4882
 msgid "undecodable fix"
 msgstr "fix que no se puede decodificar"
 
-#: config/tc-xtensa.c:5105
+#: config/tc-xtensa.c:5012
+msgid "labels are not valid inside bundles"
+msgstr "las etiquetas no son válidas dentro de una agrupación"
+
+#: config/tc-xtensa.c:5032
 msgid "invalid last instruction for a zero-overhead loop"
 msgstr "instrucción last inválida para un ciclo con cero adelanto"
 
-#: config/tc-xtensa.c:5176
+#: config/tc-xtensa.c:5097
 msgid "extra opening brace"
 msgstr "llave que abre extra"
 
-#: config/tc-xtensa.c:5186
+#: config/tc-xtensa.c:5107
 msgid "extra closing brace"
 msgstr "llave que cierra extra"
 
-#: config/tc-xtensa.c:5204
+#: config/tc-xtensa.c:5125
 msgid "missing closing brace"
 msgstr "falta una llave que cierra"
 
-#: config/tc-xtensa.c:5284
+#: config/tc-xtensa.c:5205
 #, c-format
 msgid "unknown opcode or format name '%s'"
 msgstr "código de operación o nombre de formato `%s' desconocido"
 
-#: config/tc-xtensa.c:5290
+#: config/tc-xtensa.c:5211
 msgid "format names only valid inside bundles"
 msgstr "los nombres de formato sólo son válidos dentro de agregados"
 
-#: config/tc-xtensa.c:5295
+#: config/tc-xtensa.c:5216
 #, c-format
 msgid "multiple formats specified for one bundle; using '%s'"
 msgstr "se especificaron múltiples formatos para un agregado; se usa '%s'"
 
-#: config/tc-xtensa.c:5351
+#: config/tc-xtensa.c:5271
 msgid "entry instruction with stack decrement < 16"
 msgstr "onstrucción entry con decremento de pila < 16"
 
-#: config/tc-xtensa.c:5355
+#: config/tc-xtensa.c:5275
 msgid "entry instruction with non-constant decrement"
 msgstr "instrucción entry con decremento que no es constante"
 
-#: config/tc-xtensa.c:5410
+#: config/tc-xtensa.c:5330
 msgid "unaligned entry instruction"
 msgstr "entrada de instrucción desalineada"
 
-#: config/tc-xtensa.c:5472
+#: config/tc-xtensa.c:5389
 msgid "bad instruction format"
 msgstr "formato de instrucción erróneo"
 
-#: config/tc-xtensa.c:5475
+#: config/tc-xtensa.c:5392
 msgid "invalid relocation"
 msgstr "reubicación inválida"
 
-#: config/tc-xtensa.c:5485
+#: config/tc-xtensa.c:5403
 #, c-format
 msgid "invalid relocation for '%s' instruction"
 msgstr "reubicación inválida para la instrucción '%s'"
 
-#: config/tc-xtensa.c:5497
+#: config/tc-xtensa.c:5415
 #, c-format
 msgid "invalid relocation for operand %d of '%s'"
 msgstr "reubicación inválida para el operando %d de '%s'"
 
-#: config/tc-xtensa.c:5611 config/tc-xtensa.c:5629
-#, c-format
-msgid "unhandled local relocation fix %s"
-msgstr "tipo de reubicación fix %s sin manejar"
-
-#: config/tc-xtensa.c:5741
+#: config/tc-xtensa.c:5572
 msgid "cannot represent subtraction with an offset"
 msgstr "no se puede representar la sustracción con un desplazamiento"
 
-#: config/tc-xtensa.c:5757
+#: config/tc-xtensa.c:5660
 #, c-format
-msgid "value of %ld too large"
-msgstr "el valor de %ld es demasiado grande"
+msgid "unhandled local relocation fix %s"
+msgstr "tipo de reubicación fix %s sin manejar"
 
-#: config/tc-xtensa.c:5819
-msgid "emitting simplification relocation"
-msgstr "emitiendo simplificación de reubicación"
-
-#: config/tc-xtensa.c:5823
-msgid "emitting unknown relocation"
-msgstr "emitiendo reubicación desconocida"
-
-#: config/tc-xtensa.c:6076
+#: config/tc-xtensa.c:5968
 msgid "couldn't find a valid instruction format"
 msgstr "no se puede encontrar un formato de instrucción válido"
 
-#: config/tc-xtensa.c:6077
+#: config/tc-xtensa.c:5969
 #, c-format
 msgid "    ops were: "
 msgstr "los ops fueron:"
 
-#: config/tc-xtensa.c:6079
+#: config/tc-xtensa.c:5971
 #, c-format
 msgid " %s;"
 msgstr " %s;"
 
-#: config/tc-xtensa.c:6082
+#: config/tc-xtensa.c:5974
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: config/tc-xtensa.c:6090
+#: config/tc-xtensa.c:5982
 #, c-format
 msgid "format '%s' allows %d slots, but there are %d opcodes"
 msgstr "el formato '%s' permite %d ranuras, pero hay %d códigos de operación"
 
-#: config/tc-xtensa.c:6101 config/tc-xtensa.c:6197
+#: config/tc-xtensa.c:5993 config/tc-xtensa.c:6091
 msgid "illegal resource usage in bundle"
 msgstr "se incluyó un recurso ilegal en el agregado"
 
-#: config/tc-xtensa.c:6284
+#: config/tc-xtensa.c:6178
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same register"
 msgstr "los códigos de operación '%s' (ranura %d) y '%s' (ranura %d) escriben en el mismo registro"
 
-#: config/tc-xtensa.c:6289
+#: config/tc-xtensa.c:6183
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same state"
 msgstr "los códigos de operación '%s' (ranura %d) y '%s' (ranura %d) escriben en el mismo estado"
 
-#: config/tc-xtensa.c:6294
+#: config/tc-xtensa.c:6188
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) write the same queue"
 msgstr "los códigos de operación '%s' (ranura %d) y '%s' (ranura %d) escriben en la misma cola"
 
-#: config/tc-xtensa.c:6299
+#: config/tc-xtensa.c:6193
 #, c-format
 msgid "opcodes '%s' (slot %d) and '%s' (slot %d) both have volatile queue accesses"
 msgstr "ambos códigos de operación '%s' (ranura %d) y '%s' (ranura %d) tienen acceso volatile a la cola"
 
-#: config/tc-xtensa.c:6315
+#: config/tc-xtensa.c:6209
 msgid "multiple branches or jumps in the same bundle"
 msgstr "múltiples ramificaciones o saltos en el mismo agregado"
 
-#: config/tc-xtensa.c:6780
+#: config/tc-xtensa.c:6664
 msgid "cannot assemble into a literal fragment"
 msgstr "no se puede ensamblar en un fragmento literal"
 
-#: config/tc-xtensa.c:6782
+#: config/tc-xtensa.c:6666
 msgid "..."
 msgstr "..."
 
-#: config/tc-xtensa.c:7336
+#: config/tc-xtensa.c:7175
 msgid "instruction sequence (write a0, branch, retw) may trigger hardware errata"
 msgstr "la secuencia de instrucción (write a0, branch, retw) puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7444
+#: config/tc-xtensa.c:7285
 msgid "branching or jumping to a loop end may trigger hardware errata"
 msgstr "la ramificación o salto al final de un ciclo puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7542
+#: config/tc-xtensa.c:7384
 msgid "loop end too close to another loop end may trigger hardware errata"
 msgstr "el final de un ciclo demasiado cerca a otro final de ciclo puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7551
+#: config/tc-xtensa.c:7393
 #, c-format
 msgid "fr_var %lu < length %d"
 msgstr "fr_var %lu < longitud %d"
 
-#: config/tc-xtensa.c:7724
+#: config/tc-xtensa.c:7564
 msgid "loop containing less than three instructions may trigger hardware errata"
 msgstr "un ciclo que contiene menos de tres instrucciones puede activar errores de hardware"
 
-#: config/tc-xtensa.c:7795
+#: config/tc-xtensa.c:7636
 msgid "undecodable instruction in instruction frag"
 msgstr "instrucción no decodificable en la instrucción frag"
 
-#: config/tc-xtensa.c:7903
+#: config/tc-xtensa.c:7745
 msgid "invalid empty loop"
 msgstr "ciclo vacío inválido"
 
-#: config/tc-xtensa.c:7908
+#: config/tc-xtensa.c:7750
 msgid "loop target does not follow loop instruction in section"
 msgstr "el objetivo del ciclo no sigue la instrucción loop en la sección"
 
-#: config/tc-xtensa.c:8471
+#: config/tc-xtensa.c:8287
 msgid "bad relaxation state"
 msgstr "estado de relajación erróneo"
 
-#: config/tc-xtensa.c:8529
+#: config/tc-xtensa.c:8345
 #, c-format
 msgid "fr_var (%ld) < length (%d)"
 msgstr "fr_var (%ld) < longitud (%d)"
 
-#: config/tc-xtensa.c:9038
+#: config/tc-xtensa.c:8846
 msgid "internal error: relaxation failed"
 msgstr "error interno: la relajación falló"
 
-#: config/tc-xtensa.c:9044
+#: config/tc-xtensa.c:8852
 msgid "internal error: relaxation requires too many steps"
 msgstr "error interno: la relajación requiere demasiados pasos"
 
-#: config/tc-xtensa.c:9218
+#: config/tc-xtensa.c:9027
 msgid "invalid relaxation fragment result"
 msgstr "resultado de fragmento de relajación inválido"
 
-#: config/tc-xtensa.c:9300
+#: config/tc-xtensa.c:9107
 msgid "unable to widen instruction"
 msgstr "no se puede ensanchar la instrucción"
 
-#: config/tc-xtensa.c:9442
+#: config/tc-xtensa.c:9250
 msgid "multiple literals in expansion"
 msgstr "literales múltiples en la expansión"
 
-#: config/tc-xtensa.c:9446
+#: config/tc-xtensa.c:9254
 msgid "no registered fragment for literal"
 msgstr "no hay un fragmento registrado para la literal"
 
-#: config/tc-xtensa.c:9448
+#: config/tc-xtensa.c:9256
 msgid "number of literal tokens != 1"
 msgstr "número de elementos literales != 1"
 
-#: config/tc-xtensa.c:9592 config/tc-xtensa.c:9598
+#: config/tc-xtensa.c:9400 config/tc-xtensa.c:9406
 #, c-format
 msgid "unresolved loop target symbol: %s"
 msgstr "símbolo objetivo del ciclo sin resolver: %s"
 
-#: config/tc-xtensa.c:9704
+#: config/tc-xtensa.c:9512
 #, c-format
 msgid "invalid expression evaluation type %d"
 msgstr "tipo de evaluación expresión %d inválido"
 
-#: config/tc-xtensa.c:9726
+#: config/tc-xtensa.c:9534
 msgid "loop too long for LOOP instruction"
 msgstr "ciclo demasiado largo para la instrucción LOOP"
 
-#: config/tc-xtensa.c:10027
+#: config/tc-xtensa.c:9805
 #, c-format
 msgid "fixes not all moved from %s"
 msgstr "no se movieron todas las composturas de %s"
 
-#: config/tc-xtensa.c:10169
+#: config/tc-xtensa.c:9947
 msgid "literal pool location required for text-section-literals; specify with .literal_position"
 msgstr "se requiere la ubicación del conjunto de literales para text-section-literals; especifique con .literal_position"
 
-#: config/tc-xtensa.c:10678
+#: config/tc-xtensa.c:10456
 #, c-format
 msgid "could not create section %s"
 msgstr "no se puede crear la sección %s"
 
-#: config/tc-xtensa.c:10680
+#: config/tc-xtensa.c:10458
 #, c-format
 msgid "invalid flag combination on section %s"
 msgstr "combinación de opciones inválida en la sección %s"
 
-#: config/tc-xtensa.c:11066
+#: config/tc-xtensa.c:10844
 msgid "too many operands in instruction"
 msgstr "demasiados operandos en la instrucción"
 
-#: config/tc-xtensa.c:11300
+#: config/tc-xtensa.c:11078
 #, c-format
 msgid "invalid symbolic operand %d on '%s'"
 msgstr "operando simbólico %d inválido en '%s'"
 
-#: config/tc-xtensa.c:11369 config/tc-xtensa.c:11443
+#: config/tc-xtensa.c:11147 config/tc-xtensa.c:11221
 msgid "operand number mismatch"
 msgstr "no coinciden el número de operandos"
 
-#: config/tc-xtensa.c:11372
+#: config/tc-xtensa.c:11150
 msgid "cannot encode opcode"
 msgstr "no se codificar el código de operación"
 
-#: config/tc-xtensa.c:11447
+#: config/tc-xtensa.c:11225
 #, c-format
 msgid "cannot encode opcode \"%s\" in the given format \"%s\""
 msgstr "no se codificar el código de operación \"%s\" en el formato dado \"%s\""
 
-#: config/tc-xtensa.c:11471
+#: config/tc-xtensa.c:11250
 #, c-format
 msgid "xtensa-isa failure: %s"
 msgstr "fallo xtensa-isa: %s"
 
-#: config/tc-xtensa.c:11504
+#: config/tc-xtensa.c:11283
 msgid "invalid opcode"
 msgstr "código de operación inválido"
 
-#: config/tc-xtensa.c:11510
+#: config/tc-xtensa.c:11289
 msgid "too few operands"
 msgstr "muy pocos operandos"
 
-#: config/tc-xtensa.c:11637 config/tc-xtensa.c:11645
+#: config/tc-xtensa.c:11416 config/tc-xtensa.c:11424
 msgid "out of memory"
 msgstr "memoria agotada"
 
-#: config/tc-xtensa.c:11757
+#: config/tc-xtensa.c:11536
 msgid "instruction with constant operands does not fit"
 msgstr "la instrucción con operandos constantes no cabe"
 
-#: config/tc-xtensa.c:11766 config/tc-xtensa.c:11787
+#: config/tc-xtensa.c:11545 config/tc-xtensa.c:11566
 #, c-format
 msgid "invalid operand %d on '%s'"
 msgstr "operando %d inválido en '%s'"
 
-#: config/tc-xtensa.c:11778
+#: config/tc-xtensa.c:11557
 msgid "invalid subtract operand"
 msgstr "operando de sustracción inválido"
 
-#: config/tc-xtensa.c:11792
+#: config/tc-xtensa.c:11571
 #, c-format
 msgid "invalid expression for operand %d on '%s'"
 msgstr "expresión inválida para el operando %d en '%s'"
 
-#: config/tc-xtensa.c:11822
+#: config/tc-xtensa.c:11601
 msgid "cannot decode instruction format"
 msgstr "no se puede codificar el formato de instrucción"
 
-#: config/tc-xtensa.c:11981
+#: config/tc-xtensa.c:11760
 msgid "ignoring extra '-rename-section' delimiter ':'"
 msgstr "se ignora el delimitador '-rename-section' ':' extra"
 
-#: config/tc-xtensa.c:11986
+#: config/tc-xtensa.c:11765
 #, c-format
 msgid "ignoring invalid '-rename-section' specification: '%s'"
 msgstr "se ignora la especificación '-rename-section' inválida: %s"
 
-#: config/tc-xtensa.c:11997
+#: config/tc-xtensa.c:11776
 #, c-format
 msgid "section %s renamed multiple times"
 msgstr "se renombró la sección %s varias veces"
 
-#: config/tc-xtensa.c:11999
+#: config/tc-xtensa.c:11778
 #, c-format
 msgid "multiple sections remapped to output section %s"
 msgstr "secciones múltiples remapeadas a la sección de salida %s"
 
-#: config/tc-z8k.c:271
+#: config/tc-z8k.c:268
 #, c-format
 msgid "register rr%d out of range"
 msgstr "registro rr%d fuera de rango"
 
-#: config/tc-z8k.c:273
+#: config/tc-z8k.c:270
 #, c-format
 msgid "register rr%d does not exist"
 msgstr "el registro rr%d no existe"
 
-#: config/tc-z8k.c:283
+#: config/tc-z8k.c:280
 #, c-format
 msgid "register rh%d out of range"
 msgstr "registro rh%d fuera de rango"
 
-#: config/tc-z8k.c:293
+#: config/tc-z8k.c:290
 #, c-format
 msgid "register rl%d out of range"
 msgstr "registro rl%d fuera de rango"
 
-#: config/tc-z8k.c:304
+#: config/tc-z8k.c:301
 #, c-format
 msgid "register rq%d out of range"
 msgstr "registro rq%d fuera de rango"
 
-#: config/tc-z8k.c:306
+#: config/tc-z8k.c:303
 #, c-format
 msgid "register rq%d does not exist"
 msgstr "el registro rq%d no existe"
 
-#: config/tc-z8k.c:316
+#: config/tc-z8k.c:313
 #, c-format
 msgid "register r%d out of range"
 msgstr "registro r%d fuera de rango"
 
-#: config/tc-z8k.c:357
+#: config/tc-z8k.c:354
 #, c-format
 msgid "expected %c"
 msgstr "se esperaba %c"
 
-#: config/tc-z8k.c:372
+#: config/tc-z8k.c:369
 #, c-format
 msgid "register is wrong size for a word %s"
 msgstr "el registro tiene el tamaño erróneo para un word %s"
 
-#: config/tc-z8k.c:386
+#: config/tc-z8k.c:383
 #, c-format
 msgid "register is wrong size for address %s"
 msgstr "el registro tiene el tamaño erróneo para la dirección %s"
 
-#: config/tc-z8k.c:520
+#: config/tc-z8k.c:517
 #, c-format
 msgid "unknown interrupt %s"
 msgstr "opción %s desconocida"
 
 #. No interrupt type specified, opcode won't do anything.
-#: config/tc-z8k.c:543
+#: config/tc-z8k.c:540
 msgid "opcode has no effect"
 msgstr "el código de operación no tiene efecto"
 
-#: config/tc-z8k.c:654
+#: config/tc-z8k.c:651
 msgid "Missing ) in ra(rb)"
 msgstr "Falta un ) en ra(rb)"
 
-#: config/tc-z8k.c:734 config/tc-z8k.c:773
+#: config/tc-z8k.c:731 config/tc-z8k.c:770
 #, c-format
 msgid "invalid condition code '%s'"
 msgstr "código de condición '%s' inválido"
 
-#: config/tc-z8k.c:746
+#: config/tc-z8k.c:743
 #, c-format
 msgid "invalid flag '%s'"
 msgstr "etiqueta '%s' inválida"
 
-#: config/tc-z8k.c:900 config/tc-z8k.c:906
+#: config/tc-z8k.c:897 config/tc-z8k.c:903
 msgid "invalid indirect register size"
 msgstr "tamaño de registro indirecto inválido"
 
-#: config/tc-z8k.c:923 config/tc-z8k.c:1070 config/tc-z8k.c:1075
+#: config/tc-z8k.c:920 config/tc-z8k.c:1068 config/tc-z8k.c:1073
 msgid "invalid control register name"
 msgstr "nombre de registro de control inválido"
 
-#: config/tc-z8k.c:1059
+#: config/tc-z8k.c:1057
 msgid "immediate must be 1 or 2"
 msgstr "el inmediato debe ser 1 o 2"
 
-#: config/tc-z8k.c:1062
+#: config/tc-z8k.c:1060
 msgid "immediate 1 or 2 expected"
 msgstr "se esperaba un inmediato 1 o 2"
 
-#: config/tc-z8k.c:1093
+#: config/tc-z8k.c:1091
 msgid "can't use R0 here"
 msgstr "no se puede usar R0 aquí"
 
-#: config/tc-z8k.c:1255
+#: config/tc-z8k.c:1249
 msgid "Can't find opcode to match operands"
 msgstr "No se puede encontrar el código de operación que coincida con los operandos"
 
-#: config/tc-z8k.c:1366
+#: config/tc-z8k.c:1348
 #, c-format
 msgid "invalid architecture -z%s"
 msgstr "arquitectura -z%s inválida"
 
-#: config/tc-z8k.c:1386
+#: config/tc-z8k.c:1368
 #, c-format
 msgid ""
 " Z8K options:\n"
@@ -11769,42 +11362,37 @@
 "  -z8002                  genera código sin segmentar\n"
 "  -linkrelax              crea código relajable por el enlazador\n"
 
-#: config/tc-z8k.c:1398
+#: config/tc-z8k.c:1380
 #, c-format
 msgid "call to md_convert_frag\n"
 msgstr "llamada a md_convert_frag\n"
 
-#: config/tc-z8k.c:1434 config/tc-z8k.c:1455 config/tc-z8k.c:1476
+#: config/tc-z8k.c:1487 config/tc-z8k.c:1527 config/tc-z8k.c:1550
 msgid "cannot branch to odd address"
 msgstr "No se puede ramificar a una dirección impar"
 
-#: config/tc-z8k.c:1438 config/tc-z8k.c:1459
+#: config/tc-z8k.c:1491 config/tc-z8k.c:1554
 msgid "relative jump out of range"
 msgstr "salto relativo fuera de rango"
 
-#: config/tc-z8k.c:1479
-msgid "relative call out of range"
-msgstr "llamada relativa fuera de rango"
-
 #: config/tc-z8k.c:1509
 msgid "relative address out of range"
 msgstr "dirección relativa fuera de rango"
 
-#: config/tc-z8k.c:1520
+#: config/tc-z8k.c:1530
+msgid "relative call out of range"
+msgstr "llamada relativa fuera de rango"
+
+#: config/tc-z8k.c:1562
 #, c-format
-msgid "md_apply_fix3: unknown r_type 0x%x\n"
-msgstr "md_apply_fix3: r_type desconocido: 0x%x\n"
+msgid "md_apply_fix: unknown r_type 0x%x\n"
+msgstr "md_apply_fix: r_type 0x%x desconocido\n"
 
-#: config/tc-z8k.c:1532
+#: config/tc-z8k.c:1574
 #, c-format
 msgid "call to md_estimate_size_before_relax\n"
 msgstr "llamada a md_estimate_size_before_relax\n"
 
-#: config/tc-z8k.c:1569
-#, c-format
-msgid "Can't subtract symbols in different sections %s %s"
-msgstr "No se pueden sustraer los símbolos en secciones diferentes %s %s"
-
 #: depend.c:193
 #, c-format
 msgid "can't open `%s' for writing"
@@ -11815,61 +11403,70 @@
 msgid "can't close `%s'"
 msgstr "no se puede cerrar `%s'"
 
-#: dw2gencfi.c:262
+#: dw2gencfi.c:258
 #, c-format
 msgid "register save offset not a multiple of %u"
 msgstr "el desplazamiento del registro save no es un múltiplo de %u"
 
-#: dw2gencfi.c:345
+#: dw2gencfi.c:341
 msgid "CFI state restore without previous remember"
 msgstr "se usó un state restore de CFI sin un remember previo"
 
-#: dw2gencfi.c:391
+#: dw2gencfi.c:387
 msgid "missing separator"
 msgstr "falta el separador"
 
-#: dw2gencfi.c:413 dw2gencfi.c:431
+#: dw2gencfi.c:409 dw2gencfi.c:427
 msgid "bad register expression"
 msgstr "expresión de registro inválida"
 
-#: dw2gencfi.c:453 dw2gencfi.c:554
+#: dw2gencfi.c:449 dw2gencfi.c:551
 msgid "CFI instruction used without previous .cfi_startproc"
 msgstr "se utilizó la instrucción CFI sin un .cfi_startproc precedente"
 
-#: dw2gencfi.c:586
+#: dw2gencfi.c:587
 msgid "previous CFI entry not closed (missing .cfi_endproc)"
 msgstr "la entrada CFI previa no está cerrada (falta un .cfi_endproc)"
 
-#: dw2gencfi.c:620
+#: dw2gencfi.c:622
 msgid ".cfi_endproc without corresponding .cfi_startproc"
 msgstr ".cfi_endproc sin un .cfi_startproc correspondiente"
 
-#: dw2gencfi.c:1026
+#: dw2gencfi.c:1031
 msgid "open CFI at the end of file; missing .cfi_endproc directive"
 msgstr "un CFI abierto al final del fichero; falta una directiva .cfi_endproc"
 
-#: dwarf2dbg.c:458 dwarf2dbg.c:487
+#: dwarf2dbg.c:523 dwarf2dbg.c:549
 msgid "file number less than one"
 msgstr "número de fichero menor que uno"
 
-#: dwarf2dbg.c:464
+#: dwarf2dbg.c:529
 #, c-format
 msgid "file number %ld already allocated"
 msgstr "el número de fichero %ld ya está reservado"
 
-#: dwarf2dbg.c:492 dwarf2dbg.c:1025
+#: dwarf2dbg.c:554 dwarf2dbg.c:1169
 #, c-format
 msgid "unassigned file number %ld"
 msgstr "número de fichero %ld sin asignar"
 
-#: dwarf2dbg.c:1090 dwarf2dbg.c:1281
+#: dwarf2dbg.c:622
+msgid "is_stmt value not 0 or 1"
+msgstr "el valor is_stmt no es 0 ó 1"
+
+#: dwarf2dbg.c:634
+msgid "isa number less than zero"
+msgstr "número isa menor que uno"
+
+#: dwarf2dbg.c:640
+#, c-format
+msgid "unknown .loc sub-directive `%s'"
+msgstr "sub-directiva .loc `%s' desconocida"
+
+#: dwarf2dbg.c:1234 dwarf2dbg.c:1428
 msgid "internal error: unknown dwarf2 format"
 msgstr "error interno: formato dwarf2 desconocido"
 
-#: dwarf2dbg.c:1438 dwarf2dbg.c:1446 dwarf2dbg.c:1454 dwarf2dbg.c:1475
-msgid "dwarf2 is not supported for this object file format"
-msgstr "dwarf2 no tiene soporte para este formato de fichero objeto"
-
 #: ecoff.c:1552
 #, c-format
 msgid "string too big (%lu bytes)"
@@ -12023,8 +11620,8 @@
 msgid ".loc before .file"
 msgstr ".loc antes de .file"
 
-#: ecoff.c:3355 read.c:1446 read.c:1552 read.c:2226 read.c:2840 read.c:4925
-#: symbols.c:358 symbols.c:457
+#: ecoff.c:3355 read.c:1473 read.c:1579 read.c:2256 read.c:2803 symbols.c:327
+#: symbols.c:423
 #, c-format
 msgid "symbol `%s' is already defined"
 msgstr "el símbolo `%s' ya está definido"
@@ -12065,91 +11662,91 @@
 msgid "GP prologue size exceeds field size, using 0 instead"
 msgstr "el tamaño del prólogo GP excede el tamaño del campo, se utiliza 0 en su lugar"
 
-#: expr.c:82 read.c:3209
+#: expr.c:82 read.c:3351
 msgid "bignum invalid"
 msgstr "bignum inválido"
 
-#: expr.c:84 read.c:3211 read.c:3552 read.c:4426
+#: expr.c:84 read.c:3353 read.c:3702 read.c:4550
 msgid "floating point number invalid"
 msgstr "número de coma flotante inválido"
 
-#: expr.c:232
+#: expr.c:203
 msgid "bad floating-point constant: exponent overflow"
 msgstr "constante de coma flotante errónea: desbordamiento del exponente"
 
-#: expr.c:236
+#: expr.c:207
 #, c-format
 msgid "bad floating-point constant: unknown error code=%d"
 msgstr "constante de coma flotante errónea: código de error desconocido=%d"
 
-#: expr.c:412
+#: expr.c:383
 msgid "a bignum with underscores may not have more than 8 hex digits in any word"
 msgstr "un número grande con subrayados no puede tener más de 8 dígitos hexadecimales en cualquier palabra"
 
-#: expr.c:435
+#: expr.c:406
 msgid "a bignum with underscores must have exactly 4 words"
 msgstr "un número grande con subrayados debe tener exactamente 4 palabras"
 
 #. Either not seen or not defined.
 #. @@ Should print out the original string instead of
 #. the parsed number.
-#: expr.c:558
+#: expr.c:529
 #, c-format
 msgid "backward ref to unknown label \"%d:\""
 msgstr "referencia hacia atrás a la etiqueta desconocida \"%d:\""
 
-#: expr.c:676
+#: expr.c:647
 msgid "character constant too large"
 msgstr "la constante de carácter es demasiado grande"
 
-#: expr.c:922
+#: expr.c:893
 #, c-format
 msgid "expr.c(operand): bad atof_generic return val %d"
 msgstr "expr.c(operando): valor de devolución %d atof_generic erróneo"
 
-#: expr.c:980
+#: expr.c:954
 #, c-format
 msgid "missing '%c'"
 msgstr "falta un '%c'"
 
-#: expr.c:991 read.c:3910
+#: expr.c:965 read.c:4034
 msgid "EBCDIC constants are not supported"
 msgstr "las constantes EBCDIC no tienen soporte"
 
-#: expr.c:1112
+#: expr.c:1082
 #, c-format
 msgid "Unary operator %c ignored because bad operand follows"
 msgstr "Se ignora el operador unario %c porque hay un operando erróneo a continuación"
 
-#: expr.c:1158 expr.c:1183
+#: expr.c:1128 expr.c:1153
 msgid "syntax error in .startof. or .sizeof."
 msgstr "error sintáctico en .startof. o .sizeof."
 
-#: expr.c:1685
+#: expr.c:1665
 msgid "missing operand; zero assumed"
 msgstr "falta un operando; se asume cero"
 
-#: expr.c:1720
+#: expr.c:1700
 msgid "left operand is a bignum; integer 0 assumed"
 msgstr "el operando izquierdo es un número grande; se asume el entero 0"
 
-#: expr.c:1722
+#: expr.c:1702
 msgid "left operand is a float; integer 0 assumed"
 msgstr "el operando izquierdo es un número de coma flotante; se asume el entero 0"
 
-#: expr.c:1731
+#: expr.c:1711
 msgid "right operand is a bignum; integer 0 assumed"
 msgstr "el operando derecho es un número grande; se asume el entero 0"
 
-#: expr.c:1733
+#: expr.c:1713
 msgid "right operand is a float; integer 0 assumed"
 msgstr "el operando derecho es un número de coma flotante; se asume el entero 0"
 
-#: expr.c:1789 symbols.c:1160
+#: expr.c:1769 symbols.c:1207
 msgid "division by zero"
 msgstr "división por cero"
 
-#: expr.c:1887
+#: expr.c:1867
 msgid "operation combines symbols in different segments"
 msgstr "la operación combina símbolos en segmentos diferentes"
 
@@ -12161,7 +11758,7 @@
 msgid "attempt to allocate data in common section"
 msgstr "se intentó alojar datos en la sección común"
 
-#: frags.c:105
+#: frags.c:112
 #, c-format
 msgid "can't extend frag %u chars"
 msgstr "no se pueden extender %u caracteres de fragmento"
@@ -12178,30 +11775,30 @@
 #. line here (assuming of course that we actually have a line of
 #. input to read), so that it can be displayed in the listing
 #. that is produced at the end of the assembly.
-#: input-file.c:147 input-scrub.c:239 listing.c:332
+#: input-file.c:141 input-scrub.c:238 listing.c:332
 msgid "{standard input}"
 msgstr "{entrada estándar}"
 
-#: input-file.c:155 input-file.c:166
+#: input-file.c:147 input-file.c:156
 #, c-format
 msgid "Can't open %s for reading"
 msgstr "No se puede abrir %s para lectura"
 
-#: input-file.c:231 input-file.c:260
+#: input-file.c:219 input-file.c:246
 #, c-format
 msgid "Can't read from %s"
 msgstr "No se puede leer de %s"
 
-#: input-file.c:272
+#: input-file.c:256
 #, c-format
 msgid "Can't close %s"
 msgstr "No se puede cerrar %s"
 
-#: input-scrub.c:264
+#: input-scrub.c:263
 msgid "macros nested too deeply"
 msgstr "macros anidadas con demasiada profundidad"
 
-#: input-scrub.c:366 input-scrub.c:388
+#: input-scrub.c:365 input-scrub.c:387
 msgid "partial line at end of file ignored"
 msgstr "se ignora la línea parcial al final del fichero"
 
@@ -12218,75 +11815,125 @@
 msgid "Error:"
 msgstr "Error:"
 
-#: listing.c:1092
+#: listing.c:1089
 #, c-format
 msgid "can't open list file: %s"
 msgstr "no se puede abrir el fichero de lista: %s"
 
-#: listing.c:1114
+#: listing.c:1109
 #, c-format
 msgid "error closing list file: %s"
 msgstr "error al cerrar el fichero de lista: %s"
 
-#: listing.c:1187
+#: listing.c:1182
 msgid "strange paper height, set to no form"
 msgstr "tamaño de papel extraño, se establece a sin forma"
 
-#: listing.c:1251
+#: listing.c:1246
 msgid "new line in title"
 msgstr "línea nueva en el título"
 
 #. Turns the next expression into a string.
-#: macro.c:391
+#: macro.c:436
 #, no-c-format
 msgid "% operator needs absolute expression"
 msgstr "el operador % necesita una expresión absoluta"
 
-#: macro.c:555
-msgid "unexpected end of file in macro definition"
-msgstr "fin de fichero inesperado en la definición de macro"
+#: macro.c:558
+#, c-format
+msgid "Missing parameter qualifier for `%s' in macro `%s'"
+msgstr "Falta el calificador de parámetro para `%s' en la macro `%s'"
 
-#: macro.c:564
-msgid "missing ) after formals"
-msgstr "falta ) después de los formales"
+#: macro.c:568
+#, c-format
+msgid "`%s' is not a valid parameter qualifier for `%s' in macro `%s'"
+msgstr "`%s' no es un calificador de parámetro válido para `%s' en la macro `%s'"
 
-#: macro.c:579
+#: macro.c:585
+#, c-format
+msgid "Pointless default value for required parameter `%s' in macro `%s'"
+msgstr "Valor por defecto sin sentido para el parámetro requerido `%s' en la macro `%s'"
+
+#: macro.c:597
+#, c-format
+msgid "A parameter named `%s' already exists for macro `%s'"
+msgstr "Ya existe un parámetro llamado `%s' para la macro `%s'"
+
+#: macro.c:634
+#, c-format
+msgid "Reserved word `%s' used as parameter in macro `%s'"
+msgstr "Se usó la palabra reservada `%s' como un parámetro en la macro `%s'"
+
+#: macro.c:672
+#, c-format
+msgid "unexpected end of file in macro `%s' definition"
+msgstr "fin de fichero inesperado en la definición de macro `%s'"
+
+#: macro.c:684
+#, c-format
+msgid "missing `)' after formals in macro definition `%s'"
+msgstr "falta `)' después de los formales en la definición de macro `%s'"
+
+#: macro.c:699
 msgid "Missing macro name"
 msgstr "Falta el nombre de macro"
 
-#: macro.c:588
-msgid "Bad macro parameter list"
-msgstr "Lista de parámetros de errónea"
+#: macro.c:708
+#, c-format
+msgid "Bad parameter list for macro `%s'"
+msgstr "Lista de parámetros errónea para la macro `%s'"
 
-#: macro.c:595
-msgid "Macro with this name was already defined"
-msgstr "Ya estaba definida una macro con ese nombre"
+#: macro.c:714
+#, c-format
+msgid "Macro `%s' was already defined"
+msgstr "La macro `%s' ya está definida"
 
-#: macro.c:712
-msgid "missplaced )"
-msgstr ") mal colocado"
+#: macro.c:837 macro.c:839
+msgid "missing `)'"
+msgstr "falta un `)'"
 
-#: macro.c:965
+#: macro.c:934
+#, c-format
+msgid "`%s' was already used as parameter (or another local) name"
+msgstr "Ya se usó `%s' como nombre (u otro local) de parámetro"
+
+#: macro.c:1093
 msgid "confusion in formal parameters"
 msgstr "confusión en los parámetros formales"
 
-#: macro.c:970
-msgid "macro formal argument does not exist"
-msgstr "el argumento formal de macro no existe"
+#: macro.c:1100
+#, c-format
+msgid "Parameter named `%s' does not exist for macro `%s'"
+msgstr "El parámetro nombrado '%s' no existe para la macro `%s'"
 
-#: macro.c:985
+#: macro.c:1108
+#, c-format
+msgid "Value for parameter `%s' of macro `%s' was already specified"
+msgstr "Ya se había especificado el valor para el parámetro `%s' de la macro `%s'"
+
+#: macro.c:1124
 msgid "can't mix positional and keyword arguments"
 msgstr "no se pueden mezclar argumentos posicionales y palabras clave"
 
-#: macro.c:993
+#: macro.c:1135
 msgid "too many positional arguments"
 msgstr "demasiados argumentos posicionales"
 
-#: macro.c:1153
+#: macro.c:1183
+#, c-format
+msgid "Missing value for required parameter `%s' of macro `%s'"
+msgstr "Falta el valor para el parámetro requerido `%s' de la macro `%s'"
+
+#: macro.c:1320
+#, c-format
+msgid "Attempt to purge non-existant macro `%s'"
+msgstr "se intentó purgar la macro inexistente `%s'"
+
+#: macro.c:1339
 msgid "unexpected end of file in irp or irpc"
 msgstr "fin de fichero inesperado en irp ó irpc"
 
-#: macro.c:1161
+#: macro.c:1347
 msgid "missing model parameter"
 msgstr "falta el parámetro modelo"
 
@@ -12295,628 +11942,1333 @@
 msgid "Assembler messages:\n"
 msgstr "Mensajes del ensamblador:\n"
 
-#: messages.c:212
+#: messages.c:206
 #, c-format
 msgid "Warning: "
 msgstr "Aviso: "
 
-#: messages.c:313
+#: messages.c:307
 #, c-format
 msgid "Error: "
 msgstr "Error: "
 
-#: messages.c:408 messages.c:428
+#: messages.c:402 messages.c:422
 #, c-format
 msgid "Fatal error: "
 msgstr "Error fatal: "
 
-#: messages.c:443
+#: messages.c:437
 #, c-format
 msgid "Internal error!\n"
 msgstr "¡Error interno!\n"
 
-#: messages.c:445
+#: messages.c:439
 #, c-format
 msgid "Assertion failure in %s at %s line %d.\n"
 msgstr "Falla de afirmación en %s en %s línea %d.\n"
 
-#: messages.c:448
+#: messages.c:442
 #, c-format
 msgid "Assertion failure at %s line %d.\n"
 msgstr "Falla de afirmación en %s línea %d.\n"
 
-#: messages.c:449 messages.c:466
+#: messages.c:443 messages.c:460
 #, c-format
 msgid "Please report this bug.\n"
 msgstr "Por favor reporte este bicho.\n"
 
-#: messages.c:461
+#: messages.c:455
 #, c-format
 msgid "Internal error, aborting at %s line %d in %s\n"
 msgstr "Error interno, abortando en %s línea %d en %s\n"
 
-#: messages.c:464
+#: messages.c:458
 #, c-format
 msgid "Internal error, aborting at %s line %d\n"
 msgstr "Error interno, abortando en %s línea %d\n"
 
-#: messages.c:535
+#: messages.c:507
 #, c-format
 msgid "%s out of range (%d is not between %d and %d)"
 msgstr "%s fuera de rango (%d no está entre %d y %d)"
 
 #. xgettext:c-format.
-#: messages.c:559
+#: messages.c:530
 #, c-format
 msgid "%s out of range (0x%s is not between 0x%s and 0x%s)"
 msgstr "%s fuera de rango (0x%s no está entre 0x%s y 0x%s)"
 
-#: output-file.c:47
+#: output-file.c:39
 #, c-format
 msgid "can't open a bfd on stdout %s"
 msgstr "no se puede abrir un bfd en la salida estándar %s"
 
-#: output-file.c:52
+#: output-file.c:44
 #, c-format
 msgid "Selected target format '%s' unknown"
 msgstr "Formato de objetivo seleccionado '%s' desconocido"
 
-#: output-file.c:54 output-file.c:117
+#: output-file.c:46
 #, c-format
 msgid "FATAL: can't create %s"
 msgstr "FATAL: no se puede crear %s"
 
-#: output-file.c:74 output-file.c:81
+#: output-file.c:63
 #, c-format
 msgid "FATAL: can't close %s\n"
 msgstr "FATAL: no se puede cerrar %s\n"
 
-#: output-file.c:130
-#, c-format
-msgid "FATAL: can't close %s"
-msgstr "FATAL: no se puede cerrar %s"
+#: read.c:450
+msgid "bad or irreducible absolute expression"
+msgstr "expresión absoluta errónea o irreducible"
 
-#: output-file.c:150
-msgid "Failed to emit an object byte"
-msgstr "Falló al emitir un byte objeto"
-
-#: output-file.c:151
-msgid "can't continue"
-msgstr "no se puede continuar"
-
-#: read.c:453
+#: read.c:476
 #, c-format
 msgid "error constructing %s pseudo-op table: %s"
 msgstr "error al construir la tabla de pseudo-operadores %s: %s"
 
-#: read.c:819
+#: read.c:896
 #, c-format
 msgid "unknown pseudo-op: `%s'"
 msgstr "pseudo-operador desconocido: `%s'"
 
-#: read.c:950
+#: read.c:983
 #, c-format
 msgid "label \"%d$\" redefined"
 msgstr "etiqueta \"%d$\" redefinida"
 
-#: read.c:1181
+#: read.c:1214
 msgid ".abort detected.  Abandoning ship."
 msgstr "se detectó .abort.  Abandonando la nave."
 
-#: read.c:1199 read.c:2398
+#: read.c:1232 read.c:2406
 msgid "ignoring fill value in absolute section"
 msgstr "se ignora el valor de relleno en la sección absoluta"
 
-#: read.c:1293
+#: read.c:1322
 #, c-format
 msgid "alignment too large: %u assumed"
 msgstr "la alineación es demasiado grande: se asume %u"
 
-#: read.c:1325
+#: read.c:1354
 msgid "expected fill pattern missing"
 msgstr "falta el patrón de relleno esperado"
 
-#: read.c:1430
+#: read.c:1457
 msgid "missing size expression"
 msgstr "falta una expresión de tamaño"
 
-#: read.c:1436
+#: read.c:1463
 #, c-format
 msgid "size (%ld) out of range, ignored"
 msgstr "tamaño (%ld) fuera de rango, se ignora"
 
-#: read.c:1456
+#: read.c:1483
 #, c-format
 msgid "size of \"%s\" is already %ld; not changing to %ld"
 msgstr "la longitud de \"%s\" ya es %ld; no se cambia a %ld"
 
 #. Some of the back ends can't deal with non-positive line numbers.
-#. Besides, it's silly.
-#: read.c:1677
+#. Besides, it's silly.  GCC however will generate a line number of
+#. zero when it is pre-processing builtins for assembler-with-cpp files:
+#.
+#. # 0 "<built-in>"
+#.
+#. We do not want to barf on this, especially since such files are used
+#. in the GCC and GDB testsuites.  So we check for negative line numbers
+#. rather than non-positive line numbers.
+#: read.c:1712
 #, c-format
 msgid "line numbers must be positive; line number %d rejected"
 msgstr "los números de línea deben ser positivos; se rechazó el número de línea %d."
 
-#: read.c:1704
+#: read.c:1739
 msgid "start address not supported"
 msgstr "la dirección de inicio no tiene soporte"
 
-#: read.c:1713
+#: read.c:1748
 msgid ".err encountered"
 msgstr "se encontró .err"
 
-#: read.c:1729
+#: read.c:1764
 msgid ".error directive invoked in source file"
 msgstr "se invocó la directiva .error en el fichero fuente"
 
-#: read.c:1730
+#: read.c:1765
 msgid ".warning directive invoked in source file"
 msgstr "se invocó la directiva .warning en el fichero fuente"
 
-#: read.c:1736
+#: read.c:1771
 #, c-format
 msgid "%s argument must be a string"
 msgstr "el argumento %s debe ser una cadena"
 
-#: read.c:1768 read.c:1770
+#: read.c:1803 read.c:1805
 #, c-format
 msgid ".fail %ld encountered"
 msgstr "se encontró .fail %ld"
 
-#: read.c:1806
+#: read.c:1841
 #, c-format
 msgid ".fill size clamped to %d"
 msgstr "el tamaño de fill se restringe a %d"
 
-#: read.c:1811
+#: read.c:1846
 msgid "size negative; .fill ignored"
 msgstr "tamaño negativo; se ignora .fill"
 
-#: read.c:1817
+#: read.c:1852
 msgid "repeat < 0; .fill ignored"
 msgstr "repetición < 0; se ignora .fill"
 
-#: read.c:1974
+#: read.c:2010
 #, c-format
 msgid "unrecognized .linkonce type `%s'"
 msgstr "tipo .linkonce `%s' no reconocido"
 
-#: read.c:1987 read.c:2013
+#: read.c:2022
 msgid ".linkonce is not supported for this object file format"
 msgstr ".linkonce no tiene soporte en este formato de fichero objeto"
 
-#: read.c:2009
+#: read.c:2044
 #, c-format
 msgid "bfd_set_section_flags: %s"
 msgstr "bfd_set_section_flags: %s"
 
-#: read.c:2039
+#: read.c:2070
 #, c-format
 msgid "error setting flags for \".sbss\": %s"
 msgstr "error al establecer las opciones para \".sbss\": %s"
 
-#: read.c:2087
+#: read.c:2117
 msgid "expected alignment after size"
 msgstr "se esperaba alineación después del tamaño"
 
-#: read.c:2101
+#: read.c:2131
 msgid "alignment negative; 0 assumed"
 msgstr "alineación negativa; se asume 0"
 
-#: read.c:2332
+#: read.c:2340
 #, c-format
 msgid "attempt to redefine pseudo-op `%s' ignored"
 msgstr "se ignora el intento de redefinir el pseudo-operador `%s'"
 
-#: read.c:2393
+#: read.c:2401
 #, c-format
 msgid "invalid segment \"%s\""
 msgstr "segmento \"%s\" inválido"
 
-#: read.c:2401
+#: read.c:2409
 msgid "only constant offsets supported in absolute section"
 msgstr "sólo los desplazamientos constantes tienen soporte en la sección absoluta"
 
-#: read.c:2440
+#: read.c:2448
 msgid "MRI style ORG pseudo-op not supported"
 msgstr "el pseudo-operador ORG de estilo MRI no tiene soporte"
 
-#: read.c:2596
+#: read.c:2601
 #, c-format
 msgid "unrecognized section type `%s'"
 msgstr "tipo de sección `%s' no reconocido"
 
-#: read.c:2610
+#: read.c:2615
 msgid "absolute sections are not supported"
 msgstr "las secciones absolutas no tienen soporte"
 
-#: read.c:2625
+#: read.c:2630
 #, c-format
 msgid "unrecognized section command `%s'"
 msgstr "comando de sección `%s' no reconocido"
 
-#: read.c:2689
+#: read.c:2694
 #, c-format
 msgid ".end%c encountered without preceeding %s"
 msgstr "se encontró .end%c sin un %s precedente"
 
-#: read.c:2719
+#: read.c:2724
 #, c-format
 msgid "%s without %s"
 msgstr "%s sin %s"
 
-#: read.c:2925
+#: read.c:2951
 msgid "unsupported variable size or fill value"
 msgstr "tamaño de variable o valor de relleno sin soporte"
 
-#: read.c:2950
+#: read.c:2979
 msgid ".space repeat count is zero, ignored"
 msgstr "la cuenta de repetición .space es cero, se ignora"
 
-#: read.c:2952
+#: read.c:2981
 msgid ".space repeat count is negative, ignored"
 msgstr "la cuenta de repetición .space es negativa, se ignora"
 
-#: read.c:2981
+#: read.c:3010
 msgid "space allocation too complex in absolute section"
 msgstr "la asignación de espacio es demasiado compleja en la sección absoluta"
 
-#: read.c:2987
+#: read.c:3016
 msgid "space allocation too complex in common section"
 msgstr "la asignación de espacio es demasiado compleja en la sección común"
 
-#: read.c:3074 read.c:4152
+#: read.c:3103 read.c:4276
 #, c-format
 msgid "bad floating literal: %s"
 msgstr "literal de coma flotante errónea: %s"
 
-#: read.c:3139
+#: read.c:3243
 #, c-format
+msgid "%s: would close weakref loop: %s"
+msgstr "%s: cerraría el ciclo weakref: %s"
+
+#: read.c:3286
+#, c-format
 msgid "junk at end of line, first unrecognized character is `%c'"
 msgstr "basura al final de la línea; el primer carácter ignorado es `%c'"
 
-#: read.c:3142
+#: read.c:3289
 #, c-format
 msgid "junk at end of line, first unrecognized character valued 0x%x"
 msgstr "basura al final de la línea; el primer carácter ignorado tiene valor 0x%x"
 
-#: read.c:3205
+#: read.c:3347
 msgid "missing expression"
 msgstr "falta una expresión"
 
-#: read.c:3386
+#: read.c:3408
+#, c-format
+msgid "`%s' can't be equated to common symbol '%s'"
+msgstr "`%s' no se puede igualar al símbolo común '%s'"
+
+#: read.c:3536
 msgid "rva without symbol"
 msgstr "rva sin símbolo"
 
-#: read.c:3508
+#: read.c:3658
 msgid "attempt to store value in absolute section"
 msgstr "se intentó almacenar un valor en la sección absoluta"
 
-#: read.c:3546 read.c:4420
+#: read.c:3696 read.c:4544
 msgid "zero assumed for missing expression"
 msgstr "se asume cero para la expresión faltante"
 
-#: read.c:3558 read.c:4432 write.c:313
+#: read.c:3708 read.c:4556 write.c:265
 msgid "register value used as expression"
 msgstr "se usó un valor de registro como una expresión"
 
 #. Leading bits contain both 0s & 1s.
-#: read.c:3636
+#: read.c:3786
 #, c-format
 msgid "value 0x%lx truncated to 0x%lx"
 msgstr "el valor 0x%lx se truncó a 0x%lx"
 
-#: read.c:3652
+#: read.c:3802
 #, c-format
 msgid "bignum truncated to %d bytes"
 msgstr "se truncó el número grande a %d bytes"
 
-#: read.c:3819
+#: read.c:3943
 msgid "using a bit field width of zero"
 msgstr "se usa una anchura de campo de bit de cero"
 
-#: read.c:3827
+#: read.c:3951
 #, c-format
 msgid "field width \"%s\" too complex for a bitfield"
 msgstr "la anchura de campo \"%s\" es demasiado compleja para un campo de bits"
 
-#: read.c:3835
+#: read.c:3959
 #, c-format
 msgid "field width %lu too big to fit in %d bytes: truncated to %d bits"
 msgstr "la anchura de campo %lu es demasiado grande para caber en %d bytes: se truncó a %d bits"
 
-#: read.c:3857
+#: read.c:3981
 #, c-format
 msgid "field value \"%s\" too complex for a bitfield"
 msgstr "el valor del campo \"%s\" es demasiado complejo para un campo de bits"
 
-#: read.c:3983 read.c:4174
+#: read.c:4107 read.c:4298
 msgid "unresolvable or nonpositive repeat count; using 1"
 msgstr "cuenta de repetición sin resolver o no positiva; se utiliza 1"
 
-#: read.c:4032
+#: read.c:4156
 #, c-format
 msgid "unknown floating type type '%c'"
 msgstr "tipo de coma flotante desconocido tipo '%c'"
 
-#: read.c:4054
+#: read.c:4178
 msgid "floating point constant too large"
 msgstr "constante de coma flotante demasiado grande"
 
-#: read.c:4546
+#: read.c:4670
 msgid "strings must be placed into a section"
 msgstr "las cadenas se deben colocar en una sección"
 
-#: read.c:4596
+#: read.c:4720
 msgid "expected <nn>"
 msgstr "se esperaba <nn>"
 
 #. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:4629 read.c:4715
+#: read.c:4753 read.c:4839
 msgid "unterminated string; newline inserted"
 msgstr "cadena sin terminar; se insertó una línea nueva"
 
-#: read.c:4723
+#: read.c:4847
 msgid "bad escaped character in string"
 msgstr "carácter escapado erróneamente en la cadena"
 
-#: read.c:4748
+#: read.c:4872
 msgid "expected address expression"
 msgstr "se esperaba una expresión de dirección"
 
-#: read.c:4767
+#: read.c:4891
 #, c-format
 msgid "symbol \"%s\" undefined; zero assumed"
 msgstr "el símbolo \"%s\" está indefinido; se asume cero"
 
-#: read.c:4770
+#: read.c:4894
 msgid "some symbol undefined; zero assumed"
 msgstr "algunos símbolos indefinidos; se asume cero"
 
-#: read.c:4786
-msgid "bad or irreducible absolute expression"
-msgstr "expresión absoluta errónea o irreducible"
-
-#: read.c:4827
+#: read.c:4930
 msgid "this string may not contain '\\0'"
 msgstr "esta cadena no puede contener '\\0'"
 
-#: read.c:4863
+#: read.c:4966
 msgid "missing string"
 msgstr "falta una cadena"
 
-#: read.c:4983
+#: read.c:5053
 #, c-format
 msgid ".incbin count zero, ignoring `%s'"
 msgstr "la cuenta .incbin es cero, se ignora `%s'"
 
-#: read.c:5009
+#: read.c:5079
 #, c-format
 msgid "file not found: %s"
 msgstr "no se encontró el fichero: %s"
 
-#: read.c:5023
+#: read.c:5093
 #, c-format
 msgid "seek to end of .incbin file failed `%s'"
 msgstr "falló la búsqueda del final del fichero .incbin `%s'"
 
-#: read.c:5034
+#: read.c:5104
 #, c-format
 msgid "skip (%ld) or count (%ld) invalid for file size (%ld)"
 msgstr "salto (%ld) o cuenta (%ld) inválidos para el tamaño del fichero (%ld)"
 
-#: read.c:5041
+#: read.c:5111
 #, c-format
 msgid "could not skip to %ld in file `%s'"
 msgstr "no se puede saltar a %ld en el fichero `%s'"
 
-#: read.c:5050
+#: read.c:5120
 #, c-format
 msgid "truncated file `%s', %ld of %ld bytes read"
 msgstr "el fichero `%s' está truncado, se leyeron %ld de %ld bytes"
 
-#: read.c:5208
+#: read.c:5278
 msgid "missing .func"
 msgstr "falta un .func"
 
-#: read.c:5225
+#: read.c:5295
 msgid ".endfunc missing for previous .func"
 msgstr "falta un .endfunc para el .func previo"
 
-#: stabs.c:215 stabs.c:223 stabs.c:231 stabs.c:250
+#: read.c:5418
 #, c-format
+msgid "missing closing `%c'"
+msgstr "falta un `%c' que cierra"
+
+#: read.c:5420
+msgid "stray `\\'"
+msgstr "`\\' basura"
+
+#: stabs.c:212 stabs.c:220 stabs.c:228 stabs.c:247
+#, c-format
 msgid ".stab%c: missing comma"
 msgstr ".stab%c: falta una coma"
 
 #. This could happen for example with a source file with a huge
 #. number of lines.  The only cure is to use a different debug
 #. format, probably DWARF.
-#: stabs.c:243
+#: stabs.c:240
 #, c-format
 msgid ".stab%c: description field '%x' too big, try a different debug format"
 msgstr ".stab%c: la descripción del campo '%x' es demasiado grande, intente un formato de depuración diferente"
 
-#: stabs.c:426
+#: stabs.c:421
 msgid "comma missing in .xstabs"
 msgstr "falta una coma en .xstabs"
 
-#: subsegs.c:373
+#: symbols.c:278
 #, c-format
-msgid "attempt to switch to nonexistent segment \"%s\""
-msgstr "se intentó cambiar a un segmento \"%s\" que no existe"
-
-#: symbols.c:309
-#, c-format
 msgid "cannot define symbol `%s' in absolute section"
 msgstr "no se puede definir el símbolo `%s' en la sección absoluta"
 
-#: symbols.c:443
+#: symbols.c:409
 #, c-format
 msgid "symbol `%s' is already defined as \"%s\"/%s%ld"
 msgstr "el símbolo \"%s\" ya está definido como \"%s\"/%s%ld"
 
-#: symbols.c:519 symbols.c:526
+#: symbols.c:483 symbols.c:490
 #, c-format
 msgid "inserting \"%s\" into symbol table failed: %s"
 msgstr "falló la inserción de \"%s\" en la tabla de símbolos: %s"
 
-#: symbols.c:840 symbols.c:844
+#: symbols.c:864 symbols.c:868
 #, c-format
 msgid "undefined symbol `%s' in operation"
 msgstr "símbolo indefinido `%s' en la operación"
 
-#: symbols.c:851
+#: symbols.c:875
 #, c-format
 msgid "invalid sections for operation on `%s' and `%s'"
 msgstr "secciones inválidas para la operación en `%s' y `%s'"
 
-#: symbols.c:855
+#: symbols.c:879
 #, c-format
 msgid "invalid section for operation on `%s'"
 msgstr "sección inválida para la operación en `%s'"
 
-#: symbols.c:863 symbols.c:866
+#: symbols.c:887 symbols.c:890
 #, c-format
 msgid "undefined symbol `%s' in operation setting `%s'"
 msgstr "símbolo indefinido `%s' en la operación que establece `%s'"
 
-#: symbols.c:873
+#: symbols.c:897
 #, c-format
 msgid "invalid sections for operation on `%s' and `%s' setting `%s'"
 msgstr "secciones inválidas para la operación en `%s' y `%s' que establece `%s'"
 
-#: symbols.c:877
+#: symbols.c:901
 #, c-format
 msgid "invalid section for operation on `%s' setting `%s'"
 msgstr "sección inválida para la operación en `%s' que establece `%s'"
 
-#: symbols.c:929
+#: symbols.c:951
 #, c-format
 msgid "symbol definition loop encountered at `%s'"
 msgstr "se encontró un ciclo de definición de símbolo en %s"
 
-#: symbols.c:1162
+#: symbols.c:1209
 #, c-format
 msgid "division by zero when setting `%s'"
 msgstr "división por cero al establecer `%s'"
 
-#: symbols.c:1249 write.c:1977
+#: symbols.c:1291 write.c:1545
 #, c-format
 msgid "can't resolve value for symbol `%s'"
 msgstr "no se puede resolver el valor para el símbolo `%s'"
 
-#: symbols.c:1637
+#: symbols.c:1738
 #, c-format
 msgid "\"%d\" (instance number %d of a %s label)"
 msgstr "\"%d\" (número de instancia %d de una etiqueta %s)"
 
-#: symbols.c:1673
+#: symbols.c:1775
 #, c-format
 msgid "attempt to get value of unresolved symbol `%s'"
 msgstr "se intentó obtener el valor del símbolo sin resolver `%s'"
 
-#: symbols.c:1916
+#: symbols.c:2045
 msgid "section symbols are already global"
 msgstr "los símbolos de sección ya son globales"
 
-#: symbols.c:1961
+#: symbols.c:2150
 #, c-format
 msgid "Accessing function `%s' as thread-local object"
 msgstr "Se accesa a la función `%s' como un objeto de hilo local"
 
-#: symbols.c:1965
+#: symbols.c:2154
 #, c-format
 msgid "Accessing `%s' as thread-local object"
 msgstr "Se accesa `%s' como un objeto de hilo local"
 
-#: write.c:208
+#: write.c:164
 #, c-format
 msgid "field fx_size too small to hold %d"
 msgstr "el campo fx_size es demasiado pequeño para contener %d"
 
-#: write.c:340
-msgid "rva not supported"
-msgstr "rva no tiene soporte"
-
-#: write.c:540
+#: write.c:440
 #, c-format
 msgid "attempt to .org/.space backwards? (%ld)"
 msgstr "¿se intentó hacer .org/.space hacia atrás? (%ld)"
 
-#: write.c:966 write.c:1038
+#: write.c:691
+#, c-format
+msgid "Local symbol `%s' can't be equated to undefined symbol `%s'"
+msgstr "El símbolo local `%s' no se puede igualar al símbolo sin definir `%s'"
+
+#: write.c:865 write.c:937
 msgid "relocation out of range"
 msgstr "reubicación fuera de rango"
 
-#: write.c:969 write.c:1041
+#: write.c:868 write.c:940
 #, c-format
 msgid "%s:%u: bad return from bfd_install_relocation: %x"
 msgstr "%s:%u: devolución errónea de bfd_install_relocation: %x"
 
-#: write.c:1021
+#: write.c:920
 msgid "internal error: fixup not contained within frag"
 msgstr "error interno: la compostura no está contenida en un fragmento"
 
-#: write.c:1127 write.c:1151
+#: write.c:1026 write.c:1050
 #, c-format
 msgid "FATAL: Can't write %s"
 msgstr "FATAL: No se puede escribir %s"
 
-#: write.c:1183
+#: write.c:1082
 msgid "cannot write to output file"
 msgstr "no se puede escribir al fichero de salida"
 
-#: write.c:1440
+#: write.c:1223
 #, c-format
 msgid "%d error%s, %d warning%s, generating bad object file"
 msgstr "%d error%s, %d aviso%s, se genera un fichero objeto erróneo"
 
-#: write.c:1447
+#: write.c:1230
 #, c-format
 msgid "%d error%s, %d warning%s, no object file generated"
 msgstr "%d erro%s, %d aviso%s, no se genera un fichero objeto"
 
-#: write.c:1918
+#: write.c:1464
 #, c-format
+msgid "%s: global symbols not supported in common sections"
+msgstr "%s: los símbolos globales no tienen soporte en las secciones comunes"
+
+#: write.c:1478
+#, c-format
 msgid "local label `%s' is not defined"
 msgstr "la etiqueta local `%s' no está definida"
 
-#: write.c:1931
+#: write.c:1498
 #, c-format
-msgid "`%s' can't be equated to common symbol"
-msgstr "`%s' no se puede igualar al símbolo común"
+msgid "Local symbol `%s' can't be equated to common symbol `%s'"
+msgstr "El símbolo local `%s' no se puede igualar al símbolo común `%s'"
 
-#: write.c:2209
+#: write.c:1768
 #, c-format
 msgid "alignment padding (%lu bytes) not a multiple of %ld"
 msgstr "el relleno de alineación (%lu bytes) no es un múltiplo de %ld"
 
-#: write.c:2326
+#: write.c:1900
 #, c-format
 msgid ".word %s-%s+%s didn't fit"
 msgstr ".word %s-%s+%s no cabe"
 
-#: write.c:2413
+#: write.c:1976
 msgid "attempt to move .org backwards"
 msgstr "se intentó mover .org hacia atrás"
 
-#: write.c:2441
+#: write.c:2004
 msgid ".space specifies non-absolute value"
 msgstr ".space especifica un valor no absoluto"
 
-#: write.c:2448
+#: write.c:2011
 msgid ".space or .fill with negative value, ignored"
 msgstr ".space ó .fill con valor negativo, se ignora"
 
-#: write.c:2731
+#: write.c:2067
 #, c-format
+msgid "Infinite loop encountered whilst attempting to compute the addresses of symbols in section %s"
+msgstr "Se encontró un ciclo infinito al intentar computar las direcciones de los símbolos en la sección %s"
+
+#: write.c:2289
+#, c-format
 msgid "value of %s too large for field of %d bytes at %s"
 msgstr "el valor de %s es demasiado grande para el campo de %d bytes en %s"
 
-#: write.c:2743
+#: write.c:2301
 #, c-format
 msgid "signed .word overflow; switch may be too large; %ld at 0x%lx"
 msgstr "desbordamiento con signo de .word; el interruptor puede ser demasiado grande; %ld en 0x%lx"
 
+#~ msgid "end of file in string; inserted '\"'"
+#~ msgstr "fin de fichero en la cadena; se insertó '\"'"
+
+#~ msgid "GNU assembler version %s (%s)"
+#~ msgstr "GNU ensamblador versión %s (%s)"
+
+#~ msgid "unresolved relocation"
+#~ msgstr "reubicación sin resolver"
+
+#~ msgid "bad relocation: symbol `%s' not in symbol table"
+#~ msgstr "reubicación errónea: el símbolo `%s' no está en la tabla de símbolos"
+
+#~ msgid "%s: bad type for weak symbol"
+#~ msgstr "%s: tipo erróneo para un símbolo débil"
+
+#~ msgid "Local symbol %s never defined."
+#~ msgstr "El símbolo local %s nunca se definió."
+
+#~ msgid "Local symbol %s never defined"
+#~ msgstr "El símbolo local %s nunca se definió"
+
+#~ msgid "bfd_coff_swap_scnhdr_out failed"
+#~ msgstr "falló bfd_coff_swap_scnhdr_out"
+
+#~ msgid "`.bf' symbol without preceding function\n"
+#~ msgstr "símbolo `.bf' sin una función precedente\n"
+
+#~ msgid "Too many new sections; can't add \"%s\""
+#~ msgstr "Demasiadas secciones nuevas; no se puede agregar \"%s\""
+
+#~ msgid "Negative of non-absolute symbol %s"
+#~ msgstr "Negativo de un símbolo %s que no es absoluto"
+
+#~ msgid "callj to difference of 2 symbols"
+#~ msgstr "callj para diferenciar a 2 símbolos"
+
+#~ msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."
+#~ msgstr "No se puede emitir la reubicación {- %s-seg símbolo \"%s\"} @ dirección del fichero %ld."
+
+#~ msgid "Value of %ld too large for field of %d bytes at 0x%lx"
+#~ msgstr "El valor de %ld es demasiado grande para el campo de %d bytes en 0x%lx"
+
+#~ msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx"
+#~ msgstr "Desbordamiento con signo de .word; el interruptor puede ser demasiado grande; %ld en 0x%lx"
+
+#~ msgid "compiler emitted zero-size common symbol `%s' already defined"
+#~ msgstr "el símbolo común de tamaño cero emitido por el compilador `%s' ya está definido"
+
+#~ msgid "compiler redefined zero-size common symbol `%s'"
+#~ msgstr "símbolo común de tamaño cero `%s' redefinido por el compilador"
+
+#~ msgid "Couldn't create VMS object file \"%s\""
+#~ msgstr "No se puede crear el fichero objeto VMS \"%s\""
+
+#~ msgid "I/O error writing VMS object file (length prefix)"
+#~ msgstr "Error de E/S al escribir el fichero objeto VMS (longitud del prefijo)"
+
+#~ msgid "I/O error writing VMS object file"
+#~ msgstr "Error de E/S al escribir el fichero objeto VMS"
+
+#~ msgid "Couldn't find source file \"%s\", status=%%X%x"
+#~ msgstr "No se puede encontrar el fichero fuente \"%s\", estado=%%X%x"
+
+#~ msgid "debugger forward reference error, dbx type %d"
+#~ msgstr "error de referencia hacia adelante del depurador, tipo dbx %d"
+
+#~ msgid "Variable descriptor %d too complicated.  Defined as `void *'."
+#~ msgstr "El descriptor de variable %d es demasiado complicado.  Se define como `void *'."
+
+#~ msgid ""
+#~ "***Warning - the assembly code generated by the compiler has placed \n"
+#~ " global constant(s) in the text psect.  These will not be available to \n"
+#~ " other modules, since this is not the correct way to handle this. You \n"
+#~ " have two options: 1) get a patched compiler that does not put global \n"
+#~ " constants in the text psect, or 2) remove the 'const' keyword from \n"
+#~ " definitions of global variables in your source module(s).  Don't say \n"
+#~ " I didn't warn you! \n"
+#~ msgstr ""
+#~ "***Aviso - el código ensamblador generado por el compilador ha colocado \n"
+#~ " constante(s) global(es) en la psect de texto.  Éstas no estarán disponibles \n"
+#~ " para otros módulos, ya que no es la forma correcta de manejarlo. Tiene \n"
+#~ " dos opciones: 1) obtener un compilador parchado que no coloque constantes \n"
+#~ " globales en la psect de texto, o 2) quitar la palabra clave 'const' de \n"
+#~ " las definiciones de las variables globales en el(los) módulo(s) fuente. \n"
+#~ " ¡No diga que no se le advirtió! \n"
+
+#~ msgid "debugginer output: %d is an unknown untyped variable."
+#~ msgstr "salida del depurador: %d es una variable sin tipo desconocido."
+
+#~ msgid "debugger output: structure element `%s' has undefined type"
+#~ msgstr "salida del depurador: el elmento de la estructura `%s' tiene un tipo indefinido"
+
+#~ msgid "debugger output: %d is an unknown type of variable."
+#~ msgstr "salida del depurador: %d es un tipo desconocido de variable."
+
+#~ msgid "debugger output: Unable to resolve %d circular references."
+#~ msgstr "salida del depurador: No se pueden resolver %d referencias circulares."
+
+#~ msgid "Module name truncated: %s\n"
+#~ msgstr "Nombre de módulo truncado: %s\n"
+
+#~ msgid "Symbol %s replaced by %s\n"
+#~ msgstr "El símbolo %s se reemplazó por %s\n"
+
+#~ msgid "Unknown VMS psect type (%ld)"
+#~ msgstr "Tipo psect VMS desconocido (%ld)"
+
+#~ msgid "Globalsymbol attribute for symbol %s was unexpected."
+#~ msgstr "El atributo de globalsymbol para el símbolo %s era inesperado."
+
+#~ msgid "Invalid data type for globalvalue"
+#~ msgstr "Tipo de dato inválido para globalvalue"
+
+#~ msgid "Invalid globalvalue of %s"
+#~ msgstr "Globalvalue inválido de %s"
+
+#~ msgid "Couldn't find fixup fragment when checking for indirect reference"
+#~ msgstr "No se puede encontrar el fragmento de compostura al revisar por referencias indirectas"
+
+#~ msgid "Fixup data addsy and subsy don't have the same type"
+#~ msgstr "Los datos de compostura addsy y subsy no tienen el mismo tipo"
+
+#~ msgid "Fixup data addsy and subsy don't have an appropriate type"
+#~ msgstr "Los datos de compostura addsy y subsy no tienen un tipo apropiado"
+
+#~ msgid "Fixup data is erroneously \"pcrel\""
+#~ msgstr "Los datos de compostura son \"pcrel\" erróneamente"
+
+#~ msgid "Fixup datum is not a longword"
+#~ msgstr "El dato de compostura no es un longword"
+
+#~ msgid "Fixup datum is not \"fixP->fx_addsy\""
+#~ msgstr "El dato de compostura no es \"fixP->fx_addsy\""
+
+#~ msgid "Can't handle global xtors symbols yet."
+#~ msgstr "No se pueden manejar símbolos xtors globales aún."
+
+#~ msgid "Unknown %s"
+#~ msgstr "%s desconocido"
+
+#~ msgid "unhandled stab type %d"
+#~ msgstr "tipo de cabo %d sin manejar"
+
+#~ msgid "Immediate value of %ld is too large"
+#~ msgstr "El valor inmediato de %ld es demasiado grande"
+
+#~ msgid "need %o3\n"
+#~ msgstr "se necesita %o3\n"
+
+#~ msgid "a29k_convert_frag\n"
+#~ msgstr "a29k_convert_frag\n"
+
+#~ msgid "a29k_estimate_size_before_relax\n"
+#~ msgstr "a29k_estimate_size_before_relax\n"
+
+#~ msgid "Invalid register in & expression"
+#~ msgstr "Registro inválido en la expresión &"
+
+#~ msgid "Intel Wireless MMX technology register expected"
+#~ msgstr "se esperaba un registro de tecnología Intel Inalámbrico MMX"
+
+#~ msgid "unreq: missing hash entry for \"%s\""
+#~ msgstr "unreq: falta la entrada de hash para \"%s\""
+
+#~ msgid ".unreq: unrecognized symbol \"%s\""
+#~ msgstr ".unreq: símbolo \"%s\" no reconocido"
+
+#~ msgid "bad_segment"
+#~ msgstr "segmento_erróneo"
+
+#~ msgid "register expected, not '%.100s'"
+#~ msgstr "se esperaba un registro, no '%.100s'"
+
+#~ msgid "Intel Wireless MMX technology register expected, not '%.100s'"
+#~ msgstr "se esperaba un registro de tecnología Intel Inalámbrica MMX, no '%.100s'"
+
+#~ msgid "illegal co-processor number"
+#~ msgstr "número de co-procesador ilegal"
+
+#~ msgid "bad or missing expression"
+#~ msgstr "expresión errónea o faltante"
+
+#~ msgid "immediate co-processor expression too large"
+#~ msgstr "expresión de co-procesador inmediata demasiado grande"
+
+#~ msgid "co-processor address must be word aligned"
+#~ msgstr "la dirección del co-procesador debe ser alineada con word"
+
+#~ msgid "comma expected after closing square bracket"
+#~ msgstr "se esperaba una coma después del paréntesis cuadrado que cierra"
+
+#~ msgid "pc may not be used in post-increment"
+#~ msgstr "el pc no se puede usar en post-incremento"
+
+#~ msgid "'option' field too large"
+#~ msgstr "campo 'option' demasiado grande"
+
+#~ msgid "non-constant expressions for 'option' field not supported"
+#~ msgstr "no hay soporte para expresiones no constantes para el campo 'option'"
+
+#~ msgid "# or { expected after comma"
+#~ msgstr "se esperaba # o { después de la coma"
+
+#~ msgid "pre-indexed expression expected"
+#~ msgstr "se esperaba una expresión pre-indizada"
+
+#~ msgid "missing ]"
+#~ msgstr "falta un ]"
+
+#~ msgid "Invalid NOP hint"
+#~ msgstr "Pista NOP inválida"
+
+#~ msgid "comma expected after register name"
+#~ msgstr "se esperaba una coma después del nombre de registro"
+
+#~ msgid "comma missing after psr flags"
+#~ msgstr "falta una coma después de las opciones psr"
+
+#~ msgid "only a register or immediate value can follow a psr flag"
+#~ msgstr "sólo un registro o un valor inmediato puede seguir a una opción psr"
+
+#~ msgid "acc0 expected, not '%.100s'"
+#~ msgstr "se esperaba acc0, no '%.100s'"
+
+#~ msgid "address offset too large"
+#~ msgstr "dirección de desplazamiento demasiado grande"
+
+#~ msgid "Warning: instruction unpredictable when using r15"
+#~ msgstr "Aviso: la instrucción es impredecible cuando se utiliza r15"
+
+#~ msgid "Rd equal to Rm or Rn yields unpredictable results"
+#~ msgstr "Rd igual a Rm o Rn produce resultados impredecibles"
+
+#~ msgid "shift requires register or #expression"
+#~ msgstr "el desplazamiento requiere un registro o una #expresión"
+
+#~ msgid "shift requires #expression"
+#~ msgstr "el desplazamiento requiere una #expresión"
+
+#~ msgid "shift of 0 ignored."
+#~ msgstr "se ignora un desplazamiento de 0."
+
+#~ msgid "invalid immediate shift"
+#~ msgstr "desplazamiento inmediato inválido"
+
+#~ msgid "missing endian specifier"
+#~ msgstr "falta el especificador endian"
+
+#~ msgid "rotation can be 8, 16, 24 or 0 when field is ommited"
+#~ msgstr "rotation puede ser 8, 16, 24 o 0 cuando se omite el campo"
+
+#~ msgid "no 'a', 'i', or 'f' flags for 'cps'"
+#~ msgstr "no hay opciones 'a', 'i', o 'f' para 'cps'"
+
+#~ msgid "conditional execution not supported with control register"
+#~ msgstr "la ejecución condicional no tiene soporte con un registro de control"
+
+#~ msgid "pre/post-indexing used when modified address register is destination"
+#~ msgstr "se usó pre/post-indizado cuando el registro de dirección modificado es el destino"
+
+#~ msgid "ldrd destination registers must not overlap index register"
+#~ msgstr "los registros destino ldrd no deben quedar sobre el registro índice"
+
+#~ msgid "invalid floating point immediate expression"
+#~ msgstr "expresión inmediata de coma flotante inválida"
+
+#~ msgid "floating point register or immediate expression expected"
+#~ msgstr "se esperaba un registro de coma flotante o una expresión inmediata"
+
+#~ msgid "address expected"
+#~ msgstr "se esperaba una dirección"
+
+#~ msgid "destination"
+#~ msgstr "destino"
+
+#~ msgid "source"
+#~ msgstr "fuente"
+
+#~ msgid "post-indexed expression expected"
+#~ msgstr "se esperaba una expresión post-indizada"
+
+#~ msgid "r15 not allowed in swap"
+#~ msgstr "no se permite r15 en el intercambio"
+
+#~ msgid "constant value required for number of registers"
+#~ msgstr "se requiere un valor constante para el número de registros"
+
+#~ msgid "subtract valid only on lo regs"
+#~ msgstr "subtract válido sólo en registros lo"
+
+#~ msgid "invalid immediate value for stack adjust"
+#~ msgstr "valor inmediato inválido para el ajuste de la pila"
+
+#~ msgid "invalid immediate for address calculation"
+#~ msgstr "inmediato inválido para el cálculo de dirección"
+
+#~ msgid "invalid immediate for shift"
+#~ msgstr "inmediato inválido para el desplazamiento"
+
+#~ msgid "expected ']'"
+#~ msgstr "se esperaba ']'"
+
+#~ msgid "invalid base register in load/store"
+#~ msgstr "registro base inválido en carga/almacenamiento"
+
+#~ msgid "expecting immediate, 7bit operand"
+#~ msgstr "se espera un operando inmediato de 7 bits"
+
+#~ msgid "offset expected"
+#~ msgstr "se esperaba un desplazamiento"
+
+#~ msgid "Rs and Rd must be different in MUL"
+#~ msgstr "Rs y Rd deben ser diferentes en MUL"
+
+#~ msgid "inserted missing '!': load/store multiple always writes back base register"
+#~ msgstr "se insertó un '!' faltante: los load/store múltiples siempre escribe hacia atrás el registro base"
+
+#~ msgid "only lo-regs valid in load/store multiple"
+#~ msgstr "sólo los registros lo son válidos en carga/almacenamiento múltiple"
+
+#~ msgid "syntax: ldrs[b] Rd, [Rb, Ro]"
+#~ msgstr "sintaxis: ldrs[b] Rd, [Rb, Ro]"
+
+#~ msgid "failed to create an alias for %s, reason: %s"
+#~ msgstr "falló la creación de un alias para %s, razón: %s"
+
+#~ msgid "ignoring redefinition of register alias '%s' to non-existant register '%s'"
+#~ msgstr "se ignora la redefinición del alias de registro '%s' al registro no existente '%s'"
+
+#~ msgid "ignoring incomplete .req pseuso op"
+#~ msgstr "se ignora el pseudo operador incompleto .req"
+
+#~ msgid "GAS can't handle same-section branch dest >= 0x04000000"
+#~ msgstr "GAS no puede manejar un destino de ramificación en la misma sección >= 0x04000000"
+
+#~ msgid "out of range branch"
+#~ msgstr "ramificación fuera de rango"
+
+#~ msgid "branch with link out of range"
+#~ msgstr "ramificación con enlace fuera de rango"
+
+#~ msgid "illegal value for co-processor offset"
+#~ msgstr "valor ilegal para el desplazamiento del co-procesador"
+
+#~ msgid "Illegal value for co-processor offset"
+#~ msgstr "Valor ilegal para el desplazamiento del co-procesador"
+
+#~ msgid "invalid 8bit immediate"
+#~ msgstr "inmediato de 8bit inválido"
+
+#~ msgid "invalid 3bit immediate"
+#~ msgstr "inmediato de 3bit inválido"
+
+#~ msgid "no operator -- statement `%s'\n"
+#~ msgstr "no hay operador -- declaración `%s'\n"
+
+#~ msgid "expected wr or wcgr"
+#~ msgstr "se esperaba wr o wcgr"
+
+#~ msgid "inconsistent register types"
+#~ msgstr "tipos de registro inconsistentes"
+
+#~ msgid "unrecognised register"
+#~ msgstr "registro no reconocido"
+
+#~ msgid "arm convert_frag\n"
+#~ msgstr "convert_frag de arm\n"
+
+#~ msgid "call to tc_crawl_symbol_chain \n"
+#~ msgstr "llamada a tc_crawl_symbol_chain \n"
+
+#~ msgid "call to tc_headers_hook \n"
+#~ msgstr "llamada a tc_headers_hook \n"
+
+#~ msgid ":24 not valid for this opcode"
+#~ msgstr ":24 no es válido para este código de operación"
+
+#~ msgid "expect :8,:16 or :24"
+#~ msgstr "se esperaba :8,:16 ó :24"
+
+#~ msgid "syntax error in reg list"
+#~ msgstr "error sintáctico en la lista de registros"
+
+#~ msgid "missing final register in range"
+#~ msgstr "falta el registro final en el rango"
+
+#~ msgid "expected @(exp, Rn)"
+#~ msgstr "se esperaba @(exp, Rn)"
+
+#~ msgid "@Rn+ needs word register"
+#~ msgstr "@Rn+ necesita un registro word"
+
+#~ msgid "@Rn needs word register"
+#~ msgstr "@Rn necesita un registro word"
+
+#~ msgid "operand must be absolute in range %d..%d"
+#~ msgstr "el operando debe ser absoluto en el rango %d..%d"
+
+#~ msgid "leafproc symbol '%s' undefined"
+#~ msgstr "símolo de proceso hoja '%s' indefinido"
+
+#~ msgid "Warning: making leafproc entries %s and %s both global\n"
+#~ msgstr "Aviso: haciendo globales las entradas de proceso hoja %s y %s\n"
+
+#~ msgid "Unknown PC relative instruction"
+#~ msgstr "Instrucción relativa al PC desconocida"
+
+#~ msgid "Can't hash instruction '%s':%s"
+#~ msgstr "No se puede dispersar la instrucción '%s':%s"
+
+#~ msgid "Invalid mnemonic '%s'"
+#~ msgstr "Mnemónico inválido '%s'"
+
+#~ msgid "Parameter syntax error"
+#~ msgstr "Error sintáctico de parámetros"
+
+#~ msgid "Use of obsolete instruction"
+#~ msgstr "Uso de una instrucción obsoleta"
+
+#~ msgid "Expression truncated to 16 bits"
+#~ msgstr "Expresión truncada a 16 bits"
+
+#~ msgid "Expression truncated to 5 bits"
+#~ msgstr "Expresión truncada a 5 bits"
+
+#~ msgid "Expression truncated to 9 bits"
+#~ msgstr "Expresión truncada a 9 bits"
+
+#~ msgid "Removed lower 2 bits of expression"
+#~ msgstr "Se borraron los 2 bits inferiores de la expresión"
+
+#~ msgid "Relaxation should never occur"
+#~ msgstr "La relajación nunca debe ocurrir"
+
+#~ msgid "m88k convert_frag\n"
+#~ msgstr "m88k convert_frag\n"
+
+#~ msgid "constant too large"
+#~ msgstr "constante demasiado grande"
+
+#~ msgid "register out of range"
+#~ msgstr "registro fuera de rango"
+
+#~ msgid "The -a option doesn't exist. (Despite what the man page says!"
+#~ msgstr "La opción -a no existe. (¡A pesar de lo que diga la página del manual!)"
+
+#~ msgid ""
+#~ "Tahoe options:\n"
+#~ "-a\t\t\tignored\n"
+#~ "-d LENGTH\t\tignored\n"
+#~ "-J\t\t\tignored\n"
+#~ "-S\t\t\tignored\n"
+#~ "-t FILE\t\t\tignored\n"
+#~ "-T\t\t\tignored\n"
+#~ "-V\t\t\tignored\n"
+#~ msgstr ""
+#~ "Opciones de Tahoe:\n"
+#~ "-a\t\t\tse ignora\n"
+#~ "-d LENGTH\t\tse ignora\n"
+#~ "-J\t\t\tse ignora\n"
+#~ "-S\t\t\tse ignora\n"
+#~ "-t FILE\t\t\tse ignora\n"
+#~ "-T\t\t\tse ignora\n"
+#~ "-V\t\t\tse ignora\n"
+
+#~ msgid "Casting a branch displacement is bad form, and is ignored."
+#~ msgstr "La conversión de una desubicación de ramificación es una forma errónea, y se ignora."
+
+#~ msgid "Couldn't parse the [index] in this operand."
+#~ msgstr "No se puede decodificar el [index] en este operando."
+
+#~ msgid "Couldn't find the opening '[' for the index of this operand."
+#~ msgstr "No se puede encontrar el '[' que abre para el índice de este operando."
+
+#~ msgid "Couldn't find the opening '(' for the deref of this operand."
+#~ msgstr "No se puede encontrar el '(' que abre para la dereferencia de este operando."
+
+#~ msgid "Operand can't be both pre-inc and post-dec."
+#~ msgstr "El operando no puede ser pre-incremento y post-decremento al mismo tiempo."
+
+#~ msgid "I parsed 2 registers in this operand."
+#~ msgstr "Se decodificaron 2 registros en este operando."
+
+#~ msgid "Can't relocate expression error."
+#~ msgstr "No se puede reubicar la expresión de error."
+
+#~ msgid "Expression is too large for a 32 bits."
+#~ msgstr "La expresión es demasiado grande para 32 bits."
+
+#~ msgid "Junk at end of expression."
+#~ msgstr "Basura al final de la expresión."
+
+#~ msgid "Syntax error in direct register mode."
+#~ msgstr "Error sintáctico en el modo directo de registro."
+
+#~ msgid "You can't index a register in direct register mode."
+#~ msgstr "No se puede indizar un registro en el modo directo de registro."
+
+#~ msgid "SP can't be the source operand with direct register addressing."
+#~ msgstr "SP no puede ser el operando fuente con direccionamiento directo de registro."
+
+#~ msgid "Can't take the address of a register."
+#~ msgstr "No se puede tomar la dirección de un registro."
+
+#~ msgid "Direct Register can't be used in a branch."
+#~ msgstr "Un Registro Directo no se puede utilizar en una ramificación."
+
+#~ msgid "For quad access, the register must be even and < 14."
+#~ msgstr "Para acceso cuadrático, el registro debe ser par y < 14."
+
+#~ msgid "You can't cast a direct register."
+#~ msgstr "No se puede convertir un registro directo."
+
+# `tromp' se utiliza aquí como verbo transitivo. cfuga
+# Referencia: http://www.dictionary.com/search?q=tromp
+#~ msgid "Using reg 14 for quadwords can tromp the FP register."
+#~ msgstr "El uso del registro 14 para quadwords puede noquear el registro FP."
+
+#~ msgid "Syntax error in auto-dec mode."
+#~ msgstr "Error sintáctico en el modo auto-dec."
+
+#~ msgid "You can't have an index auto dec mode."
+#~ msgstr "No se puede tener un índice en modo auto dec"
+
+#~ msgid "Auto dec mode cant be used for reading."
+#~ msgstr "El modo auto dec no se puede usar para lectura."
+
+#~ msgid "Auto dec only works of the SP register."
+#~ msgstr "El modo auto dec solamente funciona en los registros SP."
+
+#~ msgid "Auto dec can't be used in a branch."
+#~ msgstr "No se puede utilizar auto dec en una ramificación."
+
+#~ msgid "Auto dec won't work with quadwords."
+#~ msgstr "Auto dec no funciona con quadwords."
+
+#~ msgid "Syntax error in one of the auto-inc modes."
+#~ msgstr "Error sintáctico en uno de los modos auto-inc."
+
+#~ msgid "Auto inc deferred only works of the SP register."
+#~ msgstr "El modo auto inc diferido solamente funciona en los registros SP."
+
+#~ msgid "You can't have an index auto inc deferred mode."
+#~ msgstr "No se puede tener un índice en modo auto inc diferido"
+
+#~ msgid "Auto inc can't be used in a branch."
+#~ msgstr "No se puede utilizar auto inc en una ramificación."
+
+#~ msgid "You can't write to an auto inc register."
+#~ msgstr "No se puede escribir en un registro auto inc."
+
+#~ msgid "Auto inc only works of the SP register."
+#~ msgstr "El modo auto inc funciona solamente en los registros SP."
+
+#~ msgid "Auto inc won't work with quadwords."
+#~ msgstr "Auto inc no funciona con quadwords."
+
+#~ msgid "You can't have an index in auto inc mode."
+#~ msgstr "No se puede tener un índice en el modo auto inc."
+
+#~ msgid "You can't index the sp register."
+#~ msgstr "No se puede indizar el registro sp."
+
+#~ msgid "Syntax error in register displaced mode."
+#~ msgstr "Error sintáctico en el registro en modo desubicado."
+
+#~ msgid "An offest is needed for this operand."
+#~ msgstr "Se necesita un desplazamiento para este operando."
+
+#~ msgid "You can't index a register in immediate mode."
+#~ msgstr "No se puede indizar un registro en modo inmediato."
+
+#~ msgid "Immediate access can't be used as an address."
+#~ msgstr "No se puede utilizar el acceso inmediato como una dirección"
+
+#~ msgid "Compiler bug: ODD number of bytes in arg structure %s."
+#~ msgstr "Bicho del compilador: número de bytes IMPAR en la estructura de argumentos %s."
+
+#~ msgid "Compliler bug: Got a case (%d) I wasn't expecting."
+#~ msgstr "Bicho del compilador: Se obtuvo un case (%d) que no se esperaba."
+
+#~ msgid "Real branch displacements must be expressions."
+#~ msgstr "Las desubicaciones de ramificaciones reales deben ser expresiones."
+
+#~ msgid "Complier error: I got an unknown synthetic branch :%c"
+#~ msgstr "Error del compilador: Se obtuvo una ramificación sintética desconocida :%c"
+
+# En México se utilizaría `guácala' por `barf', como una expresión
+# que simboliza vómito, pero no es comprensible para todos los
+# hispanoparlantes. :-)    cfuga
+#~ msgid "Barf, bad mode %x\n"
+#~ msgstr "Ugh, modo erróneo %x\n"
+
+#~ msgid "internal error:%s:%d: %s\n"
+#~ msgstr "error interno:%s:%d: %s\n"
+
+#~ msgid "internal error:%s:%d: %s %ld\n"
+#~ msgstr "error interno:%s:%d: %s %ld\n"
+
+#~ msgid "Relaxation is a luxury we can't afford"
+#~ msgstr "La relajación es un lujo que no se puede conceder"
+
+#~ msgid "bad call to md_atof ()"
+#~ msgstr "llamada errónea a md_atof ()"
+
+#~ msgid "':' not followed by 'm' or 's'"
+#~ msgstr "':' no está seguido por 'm' o 's'"
+
+#~ msgid "paren nesting"
+#~ msgstr "anidamiento de paréntesis"
+
+#~ msgid "mismatched parenthesis"
+#~ msgstr "paréntesis sin coincidencia"
+
+#~ msgid "unhandled expression type"
+#~ msgstr "tipo de expresión sin manejar"
+
+#~ msgid "symbol reloc that is not PC relative or 32 bits"
+#~ msgstr "reubicación de símbolo que no es relativo al PC o de 32 bits"
+
+#~ msgid "unhandled operand modifier"
+#~ msgstr "modificador de operando sin manejar"
+
+#~ msgid "unhandled expression"
+#~ msgstr "expresión sin manejar"
+
+#~ msgid "Invalid mnemonic: '%s'"
+#~ msgstr "Mnemónico inválido: '%s'"
+
+#~ msgid "Invalid operands: '%s'"
+#~ msgstr "Operandos inválidos: '%s'"
+
+#~ msgid "unhandled predefined symbol bits"
+#~ msgstr "bits de símbolo predefinido sin manejar"
+
+#~ msgid "PC offset 0x%lx outside range 0x%lx-0x%lx"
+#~ msgstr "desplazamiento del PC 0x%lx fuera del rango 0x%lx-0x%lx"
+
+#~ msgid "unhandled relocation type in fixup"
+#~ msgstr "typo de reubicación sin manejar en la compostura"
+
+#~ msgid "md_convert_frag() not implemented yet"
+#~ msgstr "md_convert_frag() aún no está implementado"
+
+#~ msgid "need on or off."
+#~ msgstr "necesita on u off."
+
+#~ msgid "syntax error after <exp"
+#~ msgstr "error sintáctico después de <exp"
+
+#~ msgid "value of %ld too large"
+#~ msgstr "el valor de %ld es demasiado grande"
+
+#~ msgid "emitting simplification relocation"
+#~ msgstr "emitiendo simplificación de reubicación"
+
+#~ msgid "emitting unknown relocation"
+#~ msgstr "emitiendo reubicación desconocida"
+
+#~ msgid "Can't subtract symbols in different sections %s %s"
+#~ msgstr "No se pueden sustraer los símbolos en secciones diferentes %s %s"
+
+#~ msgid "dwarf2 is not supported for this object file format"
+#~ msgstr "dwarf2 no tiene soporte para este formato de fichero objeto"
+
+#~ msgid "Macro with this name was already defined"
+#~ msgstr "Ya estaba definida una macro con ese nombre"
+
+#~ msgid "missplaced )"
+#~ msgstr ") mal colocado"
+
+#~ msgid "macro formal argument does not exist"
+#~ msgstr "el argumento formal de macro no existe"
+
+#~ msgid "FATAL: can't close %s"
+#~ msgstr "FATAL: no se puede cerrar %s"
+
+#~ msgid "Failed to emit an object byte"
+#~ msgstr "Falló al emitir un byte objeto"
+
+#~ msgid "can't continue"
+#~ msgstr "no se puede continuar"
+
+#~ msgid "attempt to switch to nonexistent segment \"%s\""
+#~ msgstr "se intentó cambiar a un segmento \"%s\" que no existe"
+
 #~ msgid "Can't close %s: %s"
 #~ msgstr "No se puede cerrar %s: %s"
 
@@ -12954,9 +13306,6 @@
 #~ msgid "File overrides no-base-register option."
 #~ msgstr "El fichero se impone a la opción no-base-register."
 
-#~ msgid "floating point register expected"
-#~ msgstr "se esperaba un registro de coma flotante"
-
 #~ msgid "immediate value cannot be used to set this field"
 #~ msgstr "no se puede usar un valor inmediato para establecer este campo"
 
@@ -12981,9 +13330,6 @@
 #~ msgid "  -cpu-desc              provide runtime cpu description file\n"
 #~ msgstr "  -cpu-desc              provee el fichero de descripción del cpu en tiempo de ejecución\n"
 
-#~ msgid "unrecognized option `%s'"
-#~ msgstr "opción `%s' no reconocida"
-
 #~ msgid "Branch %s is always false (nop)"
 #~ msgstr "La ramificación %s es siempre falsa (nop)"
 
@@ -13348,9 +13694,6 @@
 #~ msgid "AENDW without a AENDW.\n"
 #~ msgstr "AWHILE sin un AENDW.\n"
 
-#~ msgid "AREPEAT must have absolute operand.\n"
-#~ msgstr "AREPEAT debe tener un operando absoluto.\n"
-
 #~ msgid "AREPEAT without a AENDR at %d.\n"
 #~ msgstr "AREPEAT sin un AENDR en %d.\n"
 
@@ -13594,9 +13937,6 @@
 #~ msgid "Bad COFF debugging info"
 #~ msgstr "Información de depuración COFF errónea"
 
-#~ msgid "Ignoring attempt to redefine symbol `%s'."
-#~ msgstr "Se ignora el intento de redefinir el símbolo `%s'."
-
 #~ msgid "Missing '%c' assumed"
 #~ msgstr "Se asume que falta '%c'"
 
@@ -13609,9 +13949,6 @@
 #~ msgid "Alignment not a power of 2"
 #~ msgstr "La alineación no es una potencia de 2"
 
-#~ msgid "attempt to re-define symbol `%s'"
-#~ msgstr "se intentó re-definir el símbolo `%s'"
-
 #~ msgid "Missing alignment"
 #~ msgstr "Falta la alineación"
 

Added: branches/binutils/package/gas/po/fr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gas/po/fr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gas/po/rw.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gas/po/rw.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gas/po/tr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gas/po/tr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/gas/subsegs.c
===================================================================
--- branches/binutils/package/gas/subsegs.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/subsegs.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -194,7 +194,7 @@
       newP->frch_next = frcP;	/* perhaps NULL */
 
       seginfo = seg_info (seg);
-      if (seginfo && seginfo->frchainP == frcP)
+      if (seginfo && (!seginfo->frchainP || seginfo->frchainP == frcP))
 	seginfo->frchainP = newP;
 
       frcP = newP;

Modified: branches/binutils/package/gas/testsuite/ChangeLog
===================================================================
--- branches/binutils/package/gas/testsuite/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,51 @@
+2006-06-14  Thiemo Seufer  <ths at mips.com>
+
+	* gas/mips/mips16e-jrc.d, gas/mips/mips16e-save.d,
+	gas/mips/mips32-dsp.d, gas/mips/mips32-mt.d: Explicitly specify
+	o32 ABI.
+
+2006-05-26  Richard Sandiford  <richard at codesourcery.com>
+
+	* gas/m68k/mcf-fpu.s: Add fmovemd and fmovem instructions.
+	* gas/m68k/mcf-fpu.d: Adjust accordingly.
+
+2006-05-22  Nick Clifton  <nickc at redhat.com>
+
+	* gas/mips/mips32-dsp.l: Fix expected unsigned decoding of -1 in
+	warning messages.
+	* gas/mips/mips32-mt.l: Likewise.
+
+2006-05-19  Thiemo Seufer  <ths at mips.com>
+
+	* gas/mips/vxworks1-el.d, gas/mips/vxworks1-xgot-el.d: Add little
+	endian testcases.
+	* gas/mips/vxworks1.d, gas/mips/vxworks1-xgot.d: Build as big endian.
+	* gas/mips/mips.exp: Run new testcases.
+
+2006-05-11  Thiemo Seufer  <ths at mips.com>
+
+	* gas/mips/jal-range.l: Don't check the range of j or jal
+	addresses.
+
+2006-05-04  Thiemo Seufer  <ths at mips.com>
+
+	* gas/mips/mips32-mt.d: Fix mftr argument order.
+
+2006-05-02  Joseph Myers  <joseph at codesourcery.com>
+
+	* gas/arm/iwmmxt.s: Increase offsets for wstrb and wstrh.
+	* gas/arm/iwmmxt.d: Update expected results.
+	* gas/arm/iwmmxt-bad2.s: Test wstrb, wstrh, wldrb and wldrh.
+	* gas/arm/iwmmxt-bad2.l: Update expected error messages.
+
+2006-04-16  Nick Clifton  <nickc at redhat.com>
+
+	* gas/arm/arch7.d: Skip test for non-ELF targets.
+	* gas/arm/blx-local.d: Likewise.
+	* gas/arm/svc.d: Likewise.
+	* gas/arm/thumb2_bcond.d: Likewise.
+	* gas/arm/thumb2_it_bad.d: Likewise.
+
 2006-04-07  Paul Brook  <paul at codesourcery.com>
 
 	* gas/arm/blx-local.d: New test.

Modified: branches/binutils/package/gas/testsuite/gas/arm/arch7.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/arch7.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/arch7.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,6 @@
 #name: ARM V7 instructions
 #as: -march=armv7r
+#skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 #objdump: -dr --prefix-addresses --show-raw-insn
 
 .*: +file format .*arm.*

Modified: branches/binutils/package/gas/testsuite/gas/arm/blx-local.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/blx-local.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/blx-local.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,6 @@
 #name: Local BLX instructions
 #objdump: -dr --prefix-addresses --show-raw-insn
+#skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 #as:
 
 # Test assembler resolution of blx instructions.

Modified: branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,7 @@
 [^:]*: Assembler messages:
 [^:]*:1: Error: co-processor offset out of range
 [^:]*:2: Error: co-processor offset out of range
+[^:]*:3: Error: co-processor offset out of range
+[^:]*:4: Error: co-processor offset out of range
+[^:]*:5: Error: co-processor offset out of range
+[^:]*:6: Error: co-processor offset out of range

Modified: branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/iwmmxt-bad2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,2 +1,6 @@
 	wldrd   wr1, [r0, #3]
         wstrd   wr1, [r0, #0x400]
+        wstrb   wr1, [r0, #0x100]
+        wstrh   wr1, [r0, #0x100]
+        wldrb   wr1, [r0, #-0x100]
+        wldrh   wr1, [r0, #-0x100]

Modified: branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -135,8 +135,8 @@
 0+1fc <[^>]*> ee65114b[ 	]+wsrlhg[ 	]+wr1, wr5, wcgr3
 0+200 <[^>]*> 4ea51148[ 	]+wsrlwgmi[ 	]+wr1, wr5, wcgr0
 0+204 <[^>]*> eee51149[ 	]+wsrldg[ 	]+wr1, wr5, wcgr1
-0+208 <[^>]*> ed811004[ 	]+wstrb[ 	]+wr1, \[r1, #4\]
-0+20c <[^>]*> ede11004[ 	]+wstrh[ 	]+wr1, \[r1, #4\]!
+0+208 <[^>]*> ed8110ff[ 	]+wstrb[ 	]+wr1, \[r1, #255\]
+0+20c <[^>]*> ed6110ff[ 	]+wstrh[ 	]+wr1, \[r1, #-255\]!
 0+210 <[^>]*> eca11101[ 	]+wstrw[ 	]+wr1, \[r1\], #4
 0+214 <[^>]*> edc111ff[ 	]+wstrd[ 	]+wr1, \[r1, #1020\]
 0+218 <[^>]*> fca1314b[ 	]+wstrw[ 	]+wcasf, \[r1\], #300

Modified: branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/iwmmxt.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -164,8 +164,8 @@
 	wsrlwgmi	wr1, wr5, wcgr0
 	wsrldg		wr1, wr5, wcgr1
 
-	wstrb		wr1, [r1, #4]
-	wstrh		wr1, [r1, #4]!
+	wstrb		wr1, [r1, #0xFF]
+	wstrh		wr1, [r1, #-0xFF]!
 	wstrw		wr1, [r1], #4
 	wstrd		wr1, [r1, #0x3FC]
 	wstrw		wcasf, [r1], #300

Modified: branches/binutils/package/gas/testsuite/gas/arm/svc.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/svc.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/svc.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,6 @@
 # name: SWI/SVC instructions
 # objdump: -dr --prefix-addresses --show-raw-insn
+# skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 
 .*: +file format .*arm.*
 

Modified: branches/binutils/package/gas/testsuite/gas/arm/thumb2_bcond.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/thumb2_bcond.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/thumb2_bcond.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,6 @@
 # as:
 # objdump: -dr --prefix-addresses --show-raw-insn
+# skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 
 .*: +file format .*arm.*
 

Modified: branches/binutils/package/gas/testsuite/gas/arm/thumb2_it_bad.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/arm/thumb2_it_bad.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/arm/thumb2_it_bad.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,4 @@
 #name: Invalid IT instructions
 #as:
+#skip: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
 #error-output: thumb2_it_bad.l

Added: branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,179 @@
+#objdump: -dr
+#name: arithmetic
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+00000000 <abs>:
+   0:	10 c4 [0-3][[:xdigit:]] 00 	A0= ABS A0;
+   4:	10 c4 [0-3][[:xdigit:]] 40 	A0= ABS A1;
+   8:	30 c4 [0-3][[:xdigit:]] 00 	A1= ABS A0;
+   c:	30 c4 [0-3][[:xdigit:]] 40 	A1= ABS A1;
+  10:	10 c4 [0-3][[:xdigit:]] c0 	A1= ABS A0,A0= ABS A0;
+  14:	07 c4 10 80 	R0= ABS R2;
+
+00000018 <add>:
+  18:	86 5b       	SP=SP\+P0;
+  1a:	96 5b       	SP=SP\+P2;
+  1c:	f9 5b       	FP=P1\+FP;
+  1e:	04 c4 3a 0e 	R7=R7\+R2 \(NS\);
+  22:	04 c4 30 2c 	R6=R6\+R0 \(S\);
+  26:	02 c4 10 a8 	R4.L=R2.H\+R0.L \(S\);
+  2a:	22 c4 09 aa 	R5.H=R1.H\+R1.L \(S\);
+  2e:	02 c4 35 0c 	R6.L=R6.L\+R5.L \(NS\);
+
+00000032 <add_sub_prescale_down>:
+  32:	05 c4 01 98 	R4.L=R0\+R1\(RND20\);
+  36:	25 c4 28 96 	R3.H=R5\+R0\(RND20\);
+  3a:	05 c4 3d d2 	R1.L=R7-R5\(RND20\);
+
+0000003e <add_sub_prescale_up>:
+  3e:	05 c4 01 04 	R2.L=R0\+R1\(RND12\);
+  42:	25 c4 3e 0e 	R7.H=R7\+R6\(RND12\);
+  46:	05 c4 1a 4a 	R5.L=R3-R2\(RND12\);
+  4a:	25 c4 0a 44 	R2.H=R1-R2\(RND12\);
+
+0000004e <add_immediate>:
+  4e:	05 66       	R5\+=-64;
+  50:	fa 65       	R2\+=0x3f;
+  52:	60 9f       	I0\+=2;
+  54:	63 9f       	I3\+=2;
+  56:	6a 9f       	I2\+=4;
+  58:	69 9f       	I1\+=4;
+  5a:	20 6c       	P0\+=0x4;
+  5c:	86 6c       	SP\+=0x10;
+  5e:	07 6f       	FP\+=-32;
+
+00000060 <divide_primitive>:
+  60:	6b 42       	DIVS\(R3,R5\);
+  62:	2b 42       	DIVQ\(R3,R5\);
+
+00000064 <expadj>:
+  64:	07 c6 25 0c 	R6.L=EXPADJ \(R5,R4.L\);
+  68:	07 c6 08 ca 	R5.L=EXPADJ \(R0.H,R1.L\);
+  6c:	07 c6 2b 48 	R4.L=EXPADJ \(R3,R5.L\) \(V\);
+
+00000070 <max>:
+  70:	07 c4 2a 0c 	R6=MAX\(R5,R2\);
+  74:	07 c4 0b 00 	R0=MAX\(R1,R3\);
+
+00000078 <min>:
+  78:	07 c4 13 4a 	R5=MIN\(R2,R3\);
+  7c:	07 c4 38 48 	R4=MIN\(R7,R0\);
+
+00000080 <modify_decrement>:
+  80:	0b c4 [0-3][[:xdigit:]] c0 	A0-=A1;
+  84:	0b c4 [0-3][[:xdigit:]] e0 	A0-=A1\(W32\);
+  88:	17 44       	FP-=P2;
+  8a:	06 44       	SP-=P0;
+  8c:	73 9e       	I3-=M0;
+  8e:	75 9e       	I1-=M1;
+
+00000090 <modify_increment>:
+  90:	0b c4 [0-3][[:xdigit:]] 80 	A0\+=A1;
+  94:	0b c4 [0-3][[:xdigit:]] a0 	A0\+=A1\(W32\);
+  98:	4e 45       	SP\+=P1\(BREV\);
+  9a:	7d 45       	P5\+=FP\(BREV\);
+  9c:	6a 9e       	I2\+=M2;
+  9e:	e0 9e       	I0\+=M0\(BREV\);
+  a0:	0b c4 [0-3][[:xdigit:]] 0e 	R7=\(A0\+=A1\);
+  a4:	0b c4 [0-3][[:xdigit:]] 4c 	R6.L=\(A0\+=A1\);
+  a8:	2b c4 [0-3][[:xdigit:]] 40 	R0.H=\(A0\+=A1\);
+
+000000ac <multiply16>:
+  ac:	00 c2 0a 24 	R0 = R1.H \* R2.L;
+  b0:	20 c2 68 26 	R1 = R5.H \* R0.H \(S2RND\);
+  b4:	80 c2 db 23 	R7 = R3.L \* R3.H \(FU\);
+  b8:	28 c3 15 27 	R4 = R2.H \* R5.H \(ISS2\);
+  bc:	08 c3 0b 20 	R0 = R1.L \* R3.L \(IS\);
+  c0:	08 c2 a8 25 	R6 = R5.H \* R0.L;
+  c4:	94 c3 be 40 	R2.H = R7.L \* R6.H \(M, IU\);
+  c8:	04 c2 e8 80 	R3.H = R5.H \* R0.L;
+  cc:	14 c2 09 40 	R0.H = R1.L \* R1.H \(M\);
+  d0:	1c c3 3e 80 	R1 = R7.H \* R6.L \(M, IS\);
+  d4:	0c c2 02 41 	R5 = R0.L \* R2.H;
+  d8:	1c c2 b0 c0 	R3 = R6.H \* R0.H \(M\);
+
+000000dc <multiply32>:
+  dc:	c4 40       	R4\*=R0;
+  de:	d7 40       	R7\*=R2;
+
+000000e0 <multiply_accumulate>:
+  e0:	63 c0 2f 02 	a0 = R5.L \* R7.H \(W32\);
+  e4:	03 c0 00 04 	a0 = R0.H \* R0.L;
+  e8:	83 c0 13 0a 	a0 \+= R2.L \* R3.H \(FU\);
+  ec:	03 c0 21 0c 	a0 \+= R4.H \* R1.L;
+  f0:	03 c1 3e 12 	a0 -= R7.L \* R6.H \(IS\);
+  f4:	03 c0 2a 16 	a0 -= R5.H \* R2.H;
+  f8:	10 c0 08 58 	a1 = R1.L \* R0.H \(M\);
+  fc:	00 c0 10 98 	a1 = R2.H \* R0.L;
+ 100:	70 c0 3e 98 	a1 = R7.H \* R6.L \(M, W32\);
+ 104:	81 c0 1a 18 	a1 \+= R3.L \* R2.L \(FU\);
+ 108:	01 c0 31 98 	a1 \+= R6.H \* R1.L;
+ 10c:	02 c1 03 58 	a1 -= R0.L \* R3.H \(IS\);
+ 110:	02 c0 17 58 	a1 -= R2.L \* R7.H;
+
+00000114 <multiply_accumulate_half>:
+ 114:	03 c0 f5 25 	R7.L = \(a0 = R6.H \* R5.L\);
+ 118:	c3 c0 0a 24 	R0.L = \(a0 = R1.H \* R2.L\) \(TFU\);
+ 11c:	03 c0 ac 28 	R2.L = \(a0 \+= R5.L \* R4.L\);
+ 120:	43 c0 fe 2e 	R3.L = \(a0 \+= R7.H \* R6.H\) \(T\);
+ 124:	03 c0 1a 36 	R0.L = \(a0 -= R3.H \* R2.H\);
+ 128:	63 c1 6c 30 	R1.L = \(a0 -= R5.L \* R4.L\) \(IH\);
+ 12c:	04 c0 48 58 	R1.H = \(a1 = R1.L \* R0.H\);
+ 130:	34 c1 83 98 	R2.H = \(a1 = R0.H \* R3.L\) \(M, ISS2\);
+ 134:	05 c0 bf 59 	R6.H = \(a1 \+= R7.L \* R7.H\);
+ 138:	25 c0 d3 19 	R7.H = \(a1 \+= R2.L \* R3.L\) \(S2RND\);
+ 13c:	06 c0 a2 d9 	R6.H = \(a1 -= R4.H \* R2.H\);
+ 140:	d6 c0 5f 99 	R5.H = \(a1 -= R3.H \* R7.L\) \(M, TFU\);
+
+00000144 <multiply_accumulate_data_reg>:
+ 144:	0b c0 0a 20 	R0 = \(a0 = R1.L \* R2.L\);
+ 148:	0b c1 8a 20 	R2 = \(a0 = R1.L \* R2.L\) \(IS\);
+ 14c:	0b c0 3e 2d 	R4 = \(a0 \+= R7.H \* R6.L\);
+ 150:	2b c0 ab 2b 	R6 = \(a0 \+= R5.L \* R3.H\) \(S2RND\);
+ 154:	0b c0 97 35 	R6 = \(a0 -= R2.H \* R7.L\);
+ 158:	8b c0 06 33 	R4 = \(a0 -= R0.L \* R6.H\) \(FU\);
+ 15c:	0c c0 81 99 	R7 = \(a1 = R0.H \* R1.L\);
+ 160:	9c c0 13 d9 	R5 = \(a1 = R2.H \* R3.H\) \(M, FU\);
+ 164:	0d c0 bd 18 	R3 = \(a1 \+= R7.L \* R5.L\);
+ 168:	2d c1 17 d8 	R1 = \(a1 \+= R2.H \* R7.H\) \(ISS2\);
+ 16c:	0e c0 80 58 	R3 = \(a1 -= R0.L \* R0.H\);
+ 170:	1e c1 17 59 	R5 = \(a1 -= R2.L \* R7.H\) \(M, IS\);
+
+00000174 <negate>:
+ 174:	85 43       	R5=-R0;
+ 176:	07 c4 10 ee 	R7=-R2\(S\);
+ 17a:	07 c4 10 ce 	R7=-R2\(NS\);
+ 17e:	0e c4 [0-3][[:xdigit:]] 00 	A0=-A0;
+ 182:	0e c4 [0-3][[:xdigit:]] 40 	A0=-A1;
+ 186:	2e c4 [0-3][[:xdigit:]] 00 	A1=-A0;
+ 18a:	2e c4 [0-3][[:xdigit:]] 40 	A1=-A1;
+ 18e:	0e c4 [0-3][[:xdigit:]] c0 	A1=-A1,A0=-A0;
+
+00000192 <round_half>:
+ 192:	0c c4 18 ca 	R5.L=R3\(RND\);
+ 196:	2c c4 00 cc 	R6.H=R0\(RND\);
+
+0000019a <saturate>:
+ 19a:	08 c4 [0-3][[:xdigit:]] 20 	A0=A0\(S\);
+ 19e:	08 c4 [0-3][[:xdigit:]] 60 	A1=A1\(S\);
+ 1a2:	08 c4 [0-3][[:xdigit:]] a0 	A1=A1\(S\),A0=A0\(S\);
+
+000001a6 <signbits>:
+ 1a6:	05 c6 00 0a 	R5.L=SIGNBITS R0;
+ 1aa:	05 c6 07 80 	R0.L=SIGNBITS R7.H;
+ 1ae:	06 c6 00 06 	R3.L=SIGNBITS A0;
+ 1b2:	06 c6 00 4e 	R7.L=SIGNBITS A1;
+
+000001b6 <subtract>:
+ 1b6:	43 53       	R5=R3-R0;
+ 1b8:	04 c4 38 6e 	R7=R7-R0 \(S\);
+ 1bc:	04 c4 11 46 	R3=R2-R1 \(NS\);
+ 1c0:	03 c4 37 ea 	R5.L=R6.H-R7.H \(S\);
+ 1c4:	23 c4 1b 40 	R0.H=R3.L-R3.H \(NS\);
+
+000001c8 <subtract_immediate>:
+ 1c8:	66 9f       	I2-=2;
+ 1ca:	6c 9f       	I0-=4;

Added: branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/arithmetic.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,225 @@
+	.text
+	.global abs
+abs:
+	a0 = abs a0;
+	A0 = ABS A1;
+	A1 = Abs a0;
+	a1 = aBs A1;
+	A1 = abs a1, a0 = ABS A0;
+	r0 = abs r2;
+
+	.text
+	.global add
+add:
+	sp = sp + P0;
+	SP = SP + P2;
+	FP = p1 + fp;
+
+	R7 = r7 + r2 (NS);
+	r6 = r6 + r0 (s);
+	
+	r4.L = R2.h + r0.L (s);
+	r5.H = R1.H + R1.L (S);
+	r6.L = R6.L + r5.l (NS);
+
+	.text
+	.global add_sub_prescale_down
+add_sub_prescale_down:
+	r4.l = r0 + r1 (RND20);
+	R3.H = r5 + r0 (rnd20);
+	r1.L = r7 - R5 (rND20);
+
+	.text
+	.global add_sub_prescale_up
+add_sub_prescale_up:
+	r2.L = R0 + R1 (rnd12);
+	r7.H = r7 + r6 (RND12);
+	r5.l = r3 - R2 (rNd12);
+	r2.h = R1 - R2 (Rnd12);
+
+	.text
+	.global add_immediate
+add_immediate:
+	R5 += -64;
+	r2 += 63;
+	i0 += 2;
+	I3 += 2;
+	I2 += 4;
+	i1 += 4;
+	P0 += 4;
+	sp += 16;
+	FP += -32;
+
+	.text
+	.global divide_primitive
+divide_primitive:
+	divs (r3, r5);
+	divq (R3, R5);
+
+	.text
+	.global expadj
+expadj:
+	r6.L = EXPADJ (r5, r4.l);
+	R5.l = ExpAdj (r0.h, r1.l);
+	R4.L = expadj (R3, R5.L) (V);
+
+	.text
+	.global max
+max:
+	R6 = MAX (r5, R2);
+	r0 = max (r1, r3);
+
+	.text 
+	.global min
+min:
+	r5 = mIn (r2, R3);
+	R4 = Min (r7, R0);
+
+
+	.text
+	.global modify_decrement
+modify_decrement:
+	A0 -= A1;
+	a0 -= a1 (w32);
+	fp -= p2;
+	SP -= P0;
+	I3 -= M0;
+	i1 -= m1;
+
+	.text
+	.global modify_increment
+modify_increment:
+	a0 += a1;
+	A0 += A1 (w32);
+	Sp += P1 (Brev);
+	P5 += Fp (BREV);
+	i2 += M2;
+	I0 += m0 (brev);
+	r7 = ( a0 += a1);
+	r6.l = (A0 += a1);
+	R0.H = (a0 += A1);
+
+	.text
+	.global multiply16
+multiply16:
+	R0.l = r1.h * r2.l;
+	r1.L = r5.H * r0.H (s2rnd);
+	r7.l = r3.l * r3.H (FU);
+	r4 = r2.H * r5.H (iSS2);
+	r0 = r1.l * r3.l (is);
+	r6 = R5.H * r0.l;
+
+	r2.h = r7.l * r6.H (M, iu);
+	r3.H = r5.H * r0.L;
+	R0.H = r1.L * r1.H (M);
+	r1 = r7.H * r6.L (M, is);
+	R5 = r0.l * r2.h;
+	r3 = r6.H * r0.H (m);
+
+	.text
+	.global multiply32
+multiply32:
+	R4 *= r0;
+	r7 *= R2;
+
+	.text
+	.global multiply_accumulate
+multiply_accumulate:
+	a0 = r5.l * R7.H (w32);
+	a0 = r0.h * r0.l;
+	A0 += R2.L * r3.H (FU);
+	A0 += r4.h * r1.L;
+	a0 -= r7.l * r6.H (Is);
+	A0 -= R5.H * r2.H;
+
+	a1 = r1.L * r0.H (M);
+	A1 = r2.h * r0.L;
+	A1 = R7.H * R6.L (M, W32);
+	a1 += r3.l * r2.l (fu);
+	a1 += R6.H * r1.L;
+	A1 -= r0.L * R3.H (is);
+	a1 -= r2.l * r7.h;
+
+	.text
+	.global multiply_accumulate_half
+multiply_accumulate_half:
+	r7.l = (a0 = r6.H * r5.L);
+	r0.L = (A0 = r1.h * R2.l) (tfu);
+	R2.L = (a0 += r5.L * r4.L);
+	r3.l = (A0 += r7.H * r6.h) (T);
+	r0.l = (a0 -= r3.h * r2.h);
+	r1.l = (a0 -= r5.L * r4.L) (iH);
+
+	r1.H = (a1 = r1.l * R0.H);
+	r2.h = (A1 = r0.H * r3.L) (M, Iss2);
+	R6.H = (a1 += r7.l * r7.H);
+	r7.h = (a1 += R2.L * R3.L) (S2rnd);
+	r6.H = (A1 -= R4.h * r2.h);
+	r5.h = (a1 -= r3.H * r7.L) (M, tFu);
+
+	.text
+	.global multiply_accumulate_data_reg
+multiply_accumulate_data_reg:
+	R0 = (A0 = R1.L * R2.L);
+	R2 = (A0 = r1.l * r2.l) (is);
+	r4 = (a0 += r7.h * r6.L);
+	r6 = (A0 += R5.L * r3.h) (s2RND);
+	R6 = (a0 -= r2.h * r7.l);
+	r4 = (A0 -= R0.L * r6.H) (FU);
+
+	r7 = (a1 = r0.h * r1.l);
+	R5 = (A1 = r2.H * r3.H) (M, fu);
+	R3 = (A1 += r7.l * r5.l);
+	r1 = (a1 += r2.h * r7.h) (iss2);
+	r3 = (A1 -= r0.l * R0.H);
+	R5 = (a1 -= R2.l * R7.h) (m, is);
+
+	.text
+	.global negate
+negate:
+	R5 = - r0;
+	r7 = -R2(s);
+	R7 = -r2(Ns);
+	A0 = -A0;
+	a0 = -a1;
+	A1 = -A0;
+	a1 = -A1;
+	a1 = -a1, a0 = -a0;
+
+	.text
+	.global round_half
+round_half:
+	R5.L = r3 (rnd);
+	r6.H = r0 (RND);
+
+	.text
+	.global saturate
+saturate:
+	A0 = A0 (S);
+	a1 = a1 (s);
+	A1 = a1 (S), a0 = A0 (s);
+
+	.text
+	.global signbits
+signbits:
+	R5.l = signbits r0;
+	r0.L = SIGNbits r7.H;
+	r3.l = signBits A0;
+	r7.L = SIGNBITS a1;
+
+	.text
+	.global subtract
+subtract:
+	R5 = R3 - R0;
+	R7 = R7 - r0 (S);
+	r3 = r2 - r1 (ns);
+
+	r5.l = R6.H - R7.h (s);
+	r0.H = r3.l - r3.h (NS);
+
+	.text
+	.global subtract_immediate
+subtract_immediate:
+	I2 -= 2;
+	i0 -= 4;
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/bfin.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/bfin.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/bfin.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,48 @@
+# Blackfin assembler testsuite
+
+proc run_list_test { name opts } {
+    global srcdir subdir
+    set testname "bfin $name"
+    set file $srcdir/$subdir/$name
+    gas_run ${name}.s $opts ">&dump.out"
+    if { [regexp_diff "dump.out" "${file}.l"] } then {
+	fail $testname
+	verbose "output is [file_contents "dump.out"]" 2
+	return
+    }
+    pass $testname
+}
+if [istarget bfin*-*-*] {
+	run_dump_test "arithmetic"
+	run_dump_test "bit"
+	run_dump_test "bit2"
+	run_dump_test "cache"
+	run_dump_test "cache2"
+	run_dump_test "control_code"
+	run_dump_test "control_code2"
+	run_dump_test "event"
+	run_dump_test "event2"
+	run_list_test "expected_errors" ""
+	run_list_test "expected_move_errors" ""
+	run_dump_test "flow"
+	run_dump_test "flow2"
+	run_dump_test "load"
+	run_dump_test "logical"
+	run_dump_test "logical2"
+	run_dump_test "move"
+	run_dump_test "move2"
+	run_dump_test "parallel"
+	run_dump_test "parallel2"
+	run_dump_test "parallel3"
+	run_dump_test "parallel4"
+	run_dump_test "reloc"
+	run_dump_test "shift"
+	run_dump_test "shift2"
+	run_dump_test "stack"
+	run_dump_test "stack2"
+	run_dump_test "store"
+	run_dump_test "vector"
+	run_dump_test "vector2"
+	run_dump_test "video"
+	run_dump_test "video2"
+}

Added: branches/binutils/package/gas/testsuite/gas/bfin/bit.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/bit.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/bit.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,42 @@
+#objdump: -dr
+#name: bit
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <bitclr>:
+   0:	fc 4c       	BITCLR \(R4,0x1f\);
+   2:	00 4c       	BITCLR \(R0,0x0\);
+
+00000004 <bitset>:
+   4:	f2 4a       	BITSET \(R2,0x1e\);
+   6:	eb 4a       	BITSET \(R3,0x1d\);
+
+00000008 <bittgl>:
+   8:	b7 4b       	BITTGL \(R7,0x16\);
+   a:	86 4b       	BITTGL \(R6,0x10\);
+
+0000000c <bittst>:
+   c:	f8 49       	CC = BITTST \(R0,0x1f\);
+   e:	01 49       	CC = BITTST \(R1,0x0\);
+  10:	7f 49       	CC = BITTST \(R7,0xf\);
+
+00000012 <deposit>:
+  12:	0a c6 13 8a 	R5=DEPOSIT\(R3,R2\);
+  16:	0a c6 37 c0 	R0=DEPOSIT\(R7,R6\)\(X\);
+
+0000001a <extract>:
+  1a:	0a c6 0a 08 	R4=EXTRACT\(R2,R1.L\) \(Z\);
+  1e:	0a c6 10 04 	R2=EXTRACT\(R0,R2.L\) \(Z\);
+  22:	0a c6 23 4e 	R7=EXTRACT\(R3,R4.L\)\(X\);
+  26:	0a c6 0e 4a 	R5=EXTRACT\(R6,R1.L\)\(X\);
+
+0000002a <bitmux>:
+  2a:	08 c6 08 00 	BITMUX \(R1,R0,A0 \)\(ASR\);
+  2e:	08 c6 13 00 	BITMUX \(R2,R3,A0 \)\(ASR\);
+  32:	08 c6 25 40 	BITMUX \(R4,R5,A0 \)\(ASL\);
+  36:	08 c6 3e 40 	BITMUX \(R7,R6,A0 \)\(ASL\);
+
+0000003a <ones>:
+  3a:	06 c6 00 ca 	R5.L=ONES R0;
+  3e:	06 c6 02 ce 	R7.L=ONES R2;
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/bit.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/bit.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/bit.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,54 @@
+	.text
+	.global bitclr
+bitclr:
+	bitclr(r4, 31);
+	bitCLR (r0, 0);
+
+	.text
+	.global bitset
+bitset:
+	BITSET(R2, 30);
+	BiTsET (r3, 29);
+
+	.text
+	.global bittgl
+bittgl:
+	bitTGL(r7, 22);
+	BITtgl (r6, 16);
+
+	.text
+	.global bittst
+bittst:
+	cc = bittst (r0, 31);
+	CC = BITTST (r1, 0);
+	cC = BittST (r7, 15);
+
+	.text
+	.global deposit
+deposit:
+	R5 = Deposit (r3, r2);
+	r0 = DEPOSIT (r7, R6) (X);
+
+	.text
+	.global extract
+extract:
+	r4 = extract (r2, r1.L) (z);
+	R2 = EXTRACT (r0, r2.l) (Z);
+
+	r7 = ExtracT (r3, r4.L) (X);
+	r5 = ExtRACt (R6, R1.L) (x);
+
+	.text
+	.global bitmux
+bitmux:
+	BITMUX(R1, R0, A0) (ASR);
+	Bitmux (r2, R3, a0) (aSr);
+
+	bitmux (r4, r5, a0) (asl);
+	BiTMux (R7, r6, a0) (ASl);
+
+	.text
+	.global ones
+ones:
+	R5.l = ones r0;
+	r7.L = Ones R2;

Added: branches/binutils/package/gas/testsuite/gas/bfin/bit2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/bit2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/bit2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,70 @@
+#objdump: -dr
+#name: bit2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	07 4c       	BITCLR \(R7,0x0\);
+   2:	ff 4c       	BITCLR \(R7,0x1f\);
+   4:	7f 4c       	BITCLR \(R7,0xf\);
+   6:	01 4c       	BITCLR \(R1,0x0\);
+   8:	0a 4c       	BITCLR \(R2,0x1\);
+   a:	9b 4c       	BITCLR \(R3,0x13\);
+   c:	07 4a       	BITSET \(R7,0x0\);
+   e:	ff 4a       	BITSET \(R7,0x1f\);
+  10:	7f 4a       	BITSET \(R7,0xf\);
+  12:	01 4a       	BITSET \(R1,0x0\);
+  14:	0a 4a       	BITSET \(R2,0x1\);
+  16:	9b 4a       	BITSET \(R3,0x13\);
+  18:	07 4b       	BITTGL \(R7,0x0\);
+  1a:	ff 4b       	BITTGL \(R7,0x1f\);
+  1c:	7f 4b       	BITTGL \(R7,0xf\);
+  1e:	01 4b       	BITTGL \(R1,0x0\);
+  20:	0a 4b       	BITTGL \(R2,0x1\);
+  22:	9b 4b       	BITTGL \(R3,0x13\);
+  24:	07 49       	CC = BITTST \(R7,0x0\);
+  26:	ff 49       	CC = BITTST \(R7,0x1f\);
+  28:	7f 49       	CC = BITTST \(R7,0xf\);
+  2a:	01 49       	CC = BITTST \(R1,0x0\);
+  2c:	0a 49       	CC = BITTST \(R2,0x1\);
+  2e:	9b 49       	CC = BITTST \(R3,0x13\);
+  30:	07 48       	CC = ! BITTST \(R7,0x0\);
+  32:	ff 48       	CC = ! BITTST \(R7,0x1f\);
+  34:	7f 48       	CC = ! BITTST \(R7,0xf\);
+  36:	01 48       	CC = ! BITTST \(R1,0x0\);
+  38:	0a 48       	CC = ! BITTST \(R2,0x1\);
+  3a:	9b 48       	CC = ! BITTST \(R3,0x13\);
+  3c:	0a c6 08 8e 	R7=DEPOSIT\(R0,R1\);
+  40:	0a c6 0f 8e 	R7=DEPOSIT\(R7,R1\);
+  44:	0a c6 3f 8e 	R7=DEPOSIT\(R7,R7\);
+  48:	0a c6 08 82 	R1=DEPOSIT\(R0,R1\);
+  4c:	0a c6 0f 84 	R2=DEPOSIT\(R7,R1\);
+  50:	0a c6 3f 86 	R3=DEPOSIT\(R7,R7\);
+  54:	0a c6 08 ce 	R7=DEPOSIT\(R0,R1\)\(X\);
+  58:	0a c6 0f ce 	R7=DEPOSIT\(R7,R1\)\(X\);
+  5c:	0a c6 3f ce 	R7=DEPOSIT\(R7,R7\)\(X\);
+  60:	0a c6 08 c2 	R1=DEPOSIT\(R0,R1\)\(X\);
+  64:	0a c6 0f c4 	R2=DEPOSIT\(R7,R1\)\(X\);
+  68:	0a c6 3f c6 	R3=DEPOSIT\(R7,R7\)\(X\);
+  6c:	0a c6 08 0e 	R7=EXTRACT\(R0,R1.L\) \(Z\);
+  70:	0a c6 0f 0e 	R7=EXTRACT\(R7,R1.L\) \(Z\);
+  74:	0a c6 3f 0e 	R7=EXTRACT\(R7,R7.L\) \(Z\);
+  78:	0a c6 08 02 	R1=EXTRACT\(R0,R1.L\) \(Z\);
+  7c:	0a c6 0f 04 	R2=EXTRACT\(R7,R1.L\) \(Z\);
+  80:	0a c6 3f 06 	R3=EXTRACT\(R7,R7.L\) \(Z\);
+  84:	0a c6 08 4e 	R7=EXTRACT\(R0,R1.L\)\(X\);
+  88:	0a c6 0f 4e 	R7=EXTRACT\(R7,R1.L\)\(X\);
+  8c:	0a c6 3f 4e 	R7=EXTRACT\(R7,R7.L\)\(X\);
+  90:	0a c6 08 42 	R1=EXTRACT\(R0,R1.L\)\(X\);
+  94:	0a c6 0f 44 	R2=EXTRACT\(R7,R1.L\)\(X\);
+  98:	0a c6 3f 46 	R3=EXTRACT\(R7,R7.L\)\(X\);
+  9c:	08 c6 01 00 	BITMUX \(R0,R1,A0 \)\(ASR\);
+  a0:	08 c6 02 00 	BITMUX \(R0,R2,A0 \)\(ASR\);
+  a4:	08 c6 0b 00 	BITMUX \(R1,R3,A0 \)\(ASR\);
+  a8:	08 c6 01 40 	BITMUX \(R0,R1,A0 \)\(ASL\);
+  ac:	08 c6 0a 40 	BITMUX \(R1,R2,A0 \)\(ASL\);
+  b0:	06 c6 00 c0 	R0.L=ONES R0;
+  b4:	06 c6 01 c0 	R0.L=ONES R1;
+  b8:	06 c6 06 c2 	R1.L=ONES R6;
+  bc:	06 c6 07 c4 	R2.L=ONES R7;

Added: branches/binutils/package/gas/testsuite/gas/bfin/bit2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/bit2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/bit2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,98 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//8 BIT OPERATIONS
+//
+
+//BITCLR ( Dreg , uimm5 ) ; /* (a) */
+BITCLR ( R7 , 0 ) ;
+BITCLR ( R7 , 31 ) ;
+BITCLR ( R7 , 15 ) ;
+BITCLR ( R1 , 0 ) ;
+BITCLR ( R2 , 1 ) ;
+BITCLR ( R3 , 19 ) ;
+
+//BITSET ( Dreg , uimm5 ) ; /* (a) */
+BITSET ( R7 , 0 ) ;
+BITSET ( R7 , 31 ) ;
+BITSET ( R7 , 15 ) ;
+BITSET ( R1 , 0 ) ;
+BITSET ( R2 , 1 ) ;
+BITSET ( R3 , 19 ) ;
+
+//BITTGL ( Dreg , uimm5 ) ; /* (a) */
+BITTGL ( R7 , 0 ) ;
+BITTGL ( R7 , 31 ) ;
+BITTGL ( R7 , 15 ) ;
+BITTGL ( R1 , 0 ) ;
+BITTGL ( R2 , 1 ) ;
+BITTGL ( R3 , 19 ) ;
+
+//CC = BITTST ( Dreg , uimm5 ) ; /* set CC if bit = 1 (a)*/
+CC = BITTST ( R7 , 0 ) ;
+CC = BITTST ( R7 , 31 ) ;
+CC = BITTST ( R7 , 15 ) ;
+CC = BITTST ( R1 , 0 ) ;
+CC = BITTST ( R2 , 1 ) ;
+CC = BITTST ( R3 , 19 ) ;
+
+//CC = ! BITTST ( Dreg , uimm5 ) ; /* set CC if bit = 0 (a)*/
+CC = !BITTST ( R7 , 0 ) ;
+CC = !BITTST ( R7 , 31 ) ;
+CC = !BITTST ( R7 , 15 ) ;
+CC = !BITTST ( R1 , 0 ) ;
+CC = !BITTST ( R2 , 1 ) ;
+CC = !BITTST ( R3 , 19 ) ;
+
+//Dreg = DEPOSIT ( Dreg, Dreg ) ; /* no extension (b) */
+R7 = DEPOSIT(R0, R1);
+R7 = DEPOSIT(R7, R1);
+R7 = DEPOSIT(R7, R7);
+R1 = DEPOSIT(R0, R1);
+R2 = DEPOSIT(R7, R1);
+R3 = DEPOSIT(R7, R7);
+
+//Dreg = DEPOSIT ( Dreg, Dreg ) (X) ; /* sign-extended (b) */
+R7 = DEPOSIT(R0, R1)(X);
+R7 = DEPOSIT(R7, R1)(X);
+R7 = DEPOSIT(R7, R7)(X);
+R1 = DEPOSIT(R0, R1)(X);
+R2 = DEPOSIT(R7, R1)(X);
+R3 = DEPOSIT(R7, R7)(X);
+
+//Dreg = EXTRACT ( Dreg, Dreg_lo ) (Z) ; /* zero-extended (b)*/
+R7 = EXTRACT(R0, R1.L)(Z);
+R7 = EXTRACT(R7, R1.L)(Z);
+R7 = EXTRACT(R7, R7.L)(Z);
+R1 = EXTRACT(R0, R1.L)(Z);
+R2 = EXTRACT(R7, R1.L)(Z);
+R3 = EXTRACT(R7, R7.L)(Z);
+
+//Dreg = EXTRACT ( Dreg, Dreg_lo ) (X) ; /* sign-extended (b)*/
+R7 = EXTRACT(R0, R1.L)(X);
+R7 = EXTRACT(R7, R1.L)(X);
+R7 = EXTRACT(R7, R7.L)(X);
+R1 = EXTRACT(R0, R1.L)(X);
+R2 = EXTRACT(R7, R1.L)(X);
+R3 = EXTRACT(R7, R7.L)(X);
+
+//BITMUX ( Dreg , Dreg , A0 ) (ASR) ; /* shift right, LSB is shifted out (b) */
+BITMUX(R0, R1, A0)(ASR);
+BITMUX(R0, R2, A0)(ASR);
+BITMUX(R1, R3, A0)(ASR);
+//BITMUX(R0, R0, A0)(ASR);
+
+//BITMUX ( Dreg , Dreg , A0 ) (ASL) ; /* shift left, MSB is shifted out (b) */
+//BITMUX(R0, R0, A0)(ASL);
+BITMUX(R0, R1, A0)(ASL);
+BITMUX(R1, R2, A0)(ASL);
+
+//Dreg_lo = ONES Dreg ; /* (b) */
+R0.L = ONES R0;
+R0.L = ONES R1;
+R1.L = ONES R6;
+R2.L = ONES R7;
+
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/cache.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/cache.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/cache.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,22 @@
+#objdump: -dr
+#name: cache
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <prefetch>:
+   0:	45 02       	PREFETCH\[P5\];
+   2:	67 02       	PREFETCH\[FP\+\+\];
+   4:	46 02       	PREFETCH\[SP\];
+
+00000006 <flush>:
+   6:	52 02       	FLUSH\[P2\];
+   8:	76 02       	FLUSH\[SP\+\+\];
+
+0000000a <flushinv>:
+   a:	6c 02       	FLUSHINV\[P4\+\+\];
+   c:	4f 02       	FLUSHINV\[FP\];
+
+0000000e <iflush>:
+   e:	5b 02       	IFLUSH\[P3\];
+  10:	7f 02       	IFLUSH\[FP\+\+\];
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/cache.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/cache.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/cache.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,24 @@
+	.text
+	.global prefetch
+prefetch:
+	prefetch[p5];
+	PreFetch [fp++];
+	PREFETCH [SP];
+
+	.text
+	.global flush
+flush:
+	flush[ p2 ];
+	FLUsH [SP++];
+
+	.text
+	.global flushinv
+flushinv:
+	flushinv[ P4 ++ ];
+	FLUshINv [ fp ];
+
+	.text
+	.global iflush
+iflush:
+	iflush[ p3 ];
+	iflush [ fp++ ];

Added: branches/binutils/package/gas/testsuite/gas/bfin/cache2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/cache2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/cache2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,70 @@
+#objdump: -dr
+#name: cache2
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	40 02       	PREFETCH\[P0\];
+   2:	41 02       	PREFETCH\[P1\];
+   4:	42 02       	PREFETCH\[P2\];
+   6:	43 02       	PREFETCH\[P3\];
+   8:	44 02       	PREFETCH\[P4\];
+   a:	45 02       	PREFETCH\[P5\];
+   c:	46 02       	PREFETCH\[SP\];
+   e:	47 02       	PREFETCH\[FP\];
+  10:	60 02       	PREFETCH\[P0\+\+\];
+  12:	61 02       	PREFETCH\[P1\+\+\];
+  14:	62 02       	PREFETCH\[P2\+\+\];
+  16:	63 02       	PREFETCH\[P3\+\+\];
+  18:	64 02       	PREFETCH\[P4\+\+\];
+  1a:	65 02       	PREFETCH\[P5\+\+\];
+  1c:	66 02       	PREFETCH\[SP\+\+\];
+  1e:	67 02       	PREFETCH\[FP\+\+\];
+  20:	50 02       	FLUSH\[P0\];
+  22:	51 02       	FLUSH\[P1\];
+  24:	52 02       	FLUSH\[P2\];
+  26:	53 02       	FLUSH\[P3\];
+  28:	54 02       	FLUSH\[P4\];
+  2a:	55 02       	FLUSH\[P5\];
+  2c:	56 02       	FLUSH\[SP\];
+  2e:	57 02       	FLUSH\[FP\];
+  30:	70 02       	FLUSH\[P0\+\+\];
+  32:	71 02       	FLUSH\[P1\+\+\];
+  34:	72 02       	FLUSH\[P2\+\+\];
+  36:	73 02       	FLUSH\[P3\+\+\];
+  38:	74 02       	FLUSH\[P4\+\+\];
+  3a:	75 02       	FLUSH\[P5\+\+\];
+  3c:	76 02       	FLUSH\[SP\+\+\];
+  3e:	77 02       	FLUSH\[FP\+\+\];
+  40:	48 02       	FLUSHINV\[P0\];
+  42:	49 02       	FLUSHINV\[P1\];
+  44:	4a 02       	FLUSHINV\[P2\];
+  46:	4b 02       	FLUSHINV\[P3\];
+  48:	4c 02       	FLUSHINV\[P4\];
+  4a:	4d 02       	FLUSHINV\[P5\];
+  4c:	4e 02       	FLUSHINV\[SP\];
+  4e:	4f 02       	FLUSHINV\[FP\];
+  50:	68 02       	FLUSHINV\[P0\+\+\];
+  52:	69 02       	FLUSHINV\[P1\+\+\];
+  54:	6a 02       	FLUSHINV\[P2\+\+\];
+  56:	6b 02       	FLUSHINV\[P3\+\+\];
+  58:	6c 02       	FLUSHINV\[P4\+\+\];
+  5a:	6d 02       	FLUSHINV\[P5\+\+\];
+  5c:	6e 02       	FLUSHINV\[SP\+\+\];
+  5e:	6f 02       	FLUSHINV\[FP\+\+\];
+  60:	58 02       	IFLUSH\[P0\];
+  62:	59 02       	IFLUSH\[P1\];
+  64:	5a 02       	IFLUSH\[P2\];
+  66:	5b 02       	IFLUSH\[P3\];
+  68:	5c 02       	IFLUSH\[P4\];
+  6a:	5d 02       	IFLUSH\[P5\];
+  6c:	5e 02       	IFLUSH\[SP\];
+  6e:	5f 02       	IFLUSH\[FP\];
+  70:	78 02       	IFLUSH\[P0\+\+\];
+  72:	79 02       	IFLUSH\[P1\+\+\];
+  74:	7a 02       	IFLUSH\[P2\+\+\];
+  76:	7b 02       	IFLUSH\[P3\+\+\];
+  78:	7c 02       	IFLUSH\[P4\+\+\];
+  7a:	7d 02       	IFLUSH\[P5\+\+\];
+  7c:	7e 02       	IFLUSH\[SP\+\+\];
+  7e:	7f 02       	IFLUSH\[FP\+\+\];

Added: branches/binutils/package/gas/testsuite/gas/bfin/cache2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/cache2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/cache2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,86 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//12 CACHE CONTROL
+//
+
+//PREFETCH [ Preg ] ; /* indexed (a) */
+PREFETCH [ P0 ] ;
+PREFETCH [ P1 ] ;
+PREFETCH [ P2 ] ;
+PREFETCH [ P3 ] ;
+PREFETCH [ P4 ] ;
+PREFETCH [ P5 ] ;
+PREFETCH [ SP ] ;
+PREFETCH [ FP ] ;
+
+//PREFETCH [ Preg ++ ] ; /* indexed, post increment (a) */
+PREFETCH [ P0++ ] ;
+PREFETCH [ P1++ ] ;
+PREFETCH [ P2++ ] ;
+PREFETCH [ P3++ ] ;
+PREFETCH [ P4++ ] ;
+PREFETCH [ P5++ ] ;
+PREFETCH [ SP++ ] ;
+PREFETCH [ FP++ ] ;
+
+//FLUSH [ Preg ] ; /* indexed (a) */
+FLUSH [ P0 ] ;
+FLUSH [ P1 ] ;
+FLUSH [ P2 ] ;
+FLUSH [ P3 ] ;
+FLUSH [ P4 ] ;
+FLUSH [ P5 ] ;
+FLUSH [ SP ] ;
+FLUSH [ FP ] ;
+//FLUSH [ Preg ++ ] ; /* indexed, post increment (a) */
+FLUSH [ P0++ ] ;
+FLUSH [ P1++ ] ;
+FLUSH [ P2++ ] ;
+FLUSH [ P3++ ] ;
+FLUSH [ P4++ ] ;
+FLUSH [ P5++ ] ;
+FLUSH [ SP++ ] ;
+FLUSH [ FP++ ] ;
+
+//FLUSHINV [ Preg ] ; /* indexed (a) */
+FLUSHINV [ P0 ] ;
+FLUSHINV [ P1 ] ;
+FLUSHINV [ P2 ] ;
+FLUSHINV [ P3 ] ;
+FLUSHINV [ P4 ] ;
+FLUSHINV [ P5 ] ;
+FLUSHINV [ SP ] ;
+FLUSHINV [ FP ] ;
+
+//FLUSHINV [ Preg ++ ] ; /* indexed, post increment (a) */
+FLUSHINV [ P0++ ] ;
+FLUSHINV [ P1++ ] ;
+FLUSHINV [ P2++ ] ;
+FLUSHINV [ P3++ ] ;
+FLUSHINV [ P4++ ] ;
+FLUSHINV [ P5++ ] ;
+FLUSHINV [ SP++ ] ;
+FLUSHINV [ FP++ ] ;
+
+//IFLUSH [ Preg ] ; /* indexed (a) */
+IFLUSH [ P0 ] ;
+IFLUSH [ P1 ] ;
+IFLUSH [ P2 ] ;
+IFLUSH [ P3 ] ;
+IFLUSH [ P4 ] ;
+IFLUSH [ P5 ] ;
+IFLUSH [ SP ] ;
+IFLUSH [ FP ] ;
+
+//IFLUSH [ Preg ++ ] ; /* indexed, post increment (a) */
+IFLUSH [ P0++ ] ;
+IFLUSH [ P1++ ] ;
+IFLUSH [ P2++ ] ;
+IFLUSH [ P3++ ] ;
+IFLUSH [ P4++ ] ;
+IFLUSH [ P5++ ] ;
+IFLUSH [ SP++ ] ;
+IFLUSH [ FP++ ] ;

Added: branches/binutils/package/gas/testsuite/gas/bfin/control_code.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/control_code.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/control_code.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,62 @@
+#objdump: -dr
+#name: control_code
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <compare_data_register>:
+   0:	06 08       	CC=R6==R0;
+   2:	17 08       	CC=R7==R2;
+   4:	33 0c       	CC=R3==-2;
+   6:	88 08       	CC=R0<R1;
+   8:	a4 0c       	CC=R4<-4;
+   a:	2c 09       	CC=R4<=R5;
+   c:	1d 0d       	CC=R5<=0x3;
+   e:	be 09       	CC=R6<R7\(IU\);
+  10:	a7 0d       	CC=R7<0x4\(IU\);
+  12:	1d 0a       	CC=R5<=R3\(IU\);
+  14:	2a 0e       	CC=R2<=0x5\(IU\);
+
+00000016 <compare_pointer>:
+  16:	46 08       	CC=SP==P0;
+  18:	47 0c       	CC=FP==0x0;
+  1a:	f7 08       	CC=FP<SP;
+  1c:	a1 0c       	CC=R1<-4;
+  1e:	11 09       	CC=R1<=R2;
+  20:	1b 0d       	CC=R3<=0x3;
+  22:	b5 09       	CC=R5<R6\(IU\);
+  24:	bf 0d       	CC=R7<0x7\(IU\);
+  26:	08 0a       	CC=R0<=R1\(IU\);
+  28:	02 0e       	CC=R2<=0x0\(IU\);
+
+0000002a <compare_accumulator>:
+  2a:	80 0a       	CC=A0==A1;
+  2c:	00 0b       	CC=A0<A1;
+  2e:	80 0b       	CC=A0<=A1;
+
+00000030 <move_cc>:
+  30:	00 02       	R0=CC;
+  32:	ac 03       	AC0\|=CC;
+  34:	80 03       	AZ=CC;
+  36:	81 03       	AN=CC;
+  38:	cd 03       	AC1&=CC;
+  3a:	f8 03       	V\^=CC;
+  3c:	98 03       	V=CC;
+  3e:	b9 03       	VS\|=CC;
+  40:	90 03       	AV0=CC;
+  42:	d2 03       	AV1&=CC;
+  44:	93 03       	AV1S=CC;
+  46:	a6 03       	AQ\|=CC;
+  48:	0c 02       	CC=R4;
+  4a:	00 03       	CC = AZ;
+  4c:	21 03       	CC\|=AN;
+  4e:	4c 03       	CC&=AC0;
+  50:	6d 03       	CC\^=AC1;
+  52:	18 03       	CC = V;
+  54:	39 03       	CC\|=VS;
+  56:	50 03       	CC&=AV0;
+  58:	72 03       	CC\^=AV1;
+  5a:	13 03       	CC = AV1S;
+  5c:	26 03       	CC\|=AQ;
+
+0000005e <negate_cc>:
+  5e:	18 02       	CC=!CC;

Added: branches/binutils/package/gas/testsuite/gas/bfin/control_code.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/control_code.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/control_code.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,70 @@
+	.text
+	.global compare_data_register
+compare_data_register:
+	cc = r6 == r0;
+	Cc = R7 == r2;
+	CC = R3 == -2;
+	cc = r0 < r1;
+	cC = r4 < -4;
+	Cc = r4 <= R5;
+	cc = r5 <= 3;
+	cc = r6 < r7 (iu);
+	cc = R7 < 4 (iu);
+	CC = r5 <= R3 (Iu);
+	Cc = R2 <= 5 (iU);
+
+	.text
+	.global compare_pointer
+compare_pointer:
+	cc = sp == p0;
+	cC = FP == 0;
+	CC = FP < SP;
+	Cc = r1 < -4;
+	CC = R1 <= R2;
+	cc = r3 <= 3;
+	cC = r5 < R6 (iu);
+	Cc = R7 < 7 (Iu);
+	cC = r0 <= r1 (iU);
+	cc = r2 <= 0 (IU);
+
+	.global compare_accumulator
+	.text
+compare_accumulator:
+	CC = A0 == A1;
+	cc = A0 < a1;
+	cc = a0 <= a1;
+
+	.text
+	.global move_cc
+move_cc:
+	R0 = cc;
+	ac0 |= cc;
+	AZ = Cc;
+	an = Cc;
+	AC1 &= cC;
+	v ^= cc;
+	V = CC;
+	VS |= cC;
+	aV0 = cc;
+	Av1 &= CC;
+	AV1s = cc;
+	AQ |= cc;
+
+	CC = R4;
+	cc = AZ;
+	cc |= An;
+	CC &= Ac0;
+	Cc ^= aC1;
+	CC = V;
+	cC |= vS;
+	Cc &= AV0;
+	cc ^= av1;
+	cc = av1s;
+	cC |= aQ;
+
+
+	.text
+	.global negate_cc
+negate_cc:
+	cc = !cc;
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/control_code2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/control_code2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/control_code2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,186 @@
+#objdump: -dr
+#name: control_code2
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	07 08       	CC=R7==R0;
+   2:	0e 08       	CC=R6==R1;
+   4:	38 08       	CC=R0==R7;
+   6:	27 0c       	CC=R7==-4;
+   8:	1f 0c       	CC=R7==0x3;
+   a:	20 0c       	CC=R0==-4;
+   c:	18 0c       	CC=R0==0x3;
+   e:	87 08       	CC=R7<R0;
+  10:	86 08       	CC=R6<R0;
+  12:	8f 08       	CC=R7<R1;
+  14:	b9 08       	CC=R1<R7;
+  16:	b0 08       	CC=R0<R6;
+  18:	a7 0c       	CC=R7<-4;
+  1a:	a6 0c       	CC=R6<-4;
+  1c:	9f 0c       	CC=R7<0x3;
+  1e:	99 0c       	CC=R1<0x3;
+  20:	07 09       	CC=R7<=R0;
+  22:	06 09       	CC=R6<=R0;
+  24:	0f 09       	CC=R7<=R1;
+  26:	39 09       	CC=R1<=R7;
+  28:	30 09       	CC=R0<=R6;
+  2a:	27 0d       	CC=R7<=-4;
+  2c:	26 0d       	CC=R6<=-4;
+  2e:	1f 0d       	CC=R7<=0x3;
+  30:	19 0d       	CC=R1<=0x3;
+  32:	87 09       	CC=R7<R0\(IU\);
+  34:	86 09       	CC=R6<R0\(IU\);
+  36:	8f 09       	CC=R7<R1\(IU\);
+  38:	b9 09       	CC=R1<R7\(IU\);
+  3a:	b0 09       	CC=R0<R6\(IU\);
+  3c:	87 0d       	CC=R7<0x0\(IU\);
+  3e:	86 0d       	CC=R6<0x0\(IU\);
+  40:	bf 0d       	CC=R7<0x7\(IU\);
+  42:	b9 0d       	CC=R1<0x7\(IU\);
+  44:	07 0a       	CC=R7<=R0\(IU\);
+  46:	06 0a       	CC=R6<=R0\(IU\);
+  48:	0f 0a       	CC=R7<=R1\(IU\);
+  4a:	39 0a       	CC=R1<=R7\(IU\);
+  4c:	30 0a       	CC=R0<=R6\(IU\);
+  4e:	07 0e       	CC=R7<=0x0\(IU\);
+  50:	06 0e       	CC=R6<=0x0\(IU\);
+  52:	3f 0e       	CC=R7<=0x7\(IU\);
+  54:	39 0e       	CC=R1<=0x7\(IU\);
+  56:	45 08       	CC=P5==P0;
+  58:	4d 08       	CC=P5==P1;
+  5a:	50 08       	CC=P0==P2;
+  5c:	6b 08       	CC=P3==P5;
+  5e:	65 0c       	CC=P5==-4;
+  60:	45 0c       	CC=P5==0x0;
+  62:	5d 0c       	CC=P5==0x3;
+  64:	62 0c       	CC=P2==-4;
+  66:	42 0c       	CC=P2==0x0;
+  68:	5a 0c       	CC=P2==0x3;
+  6a:	c5 08       	CC=P5<P0;
+  6c:	cd 08       	CC=P5<P1;
+  6e:	d0 08       	CC=P0<P2;
+  70:	eb 08       	CC=P3<P5;
+  72:	e5 0c       	CC=P5<-4;
+  74:	c5 0c       	CC=P5<0x0;
+  76:	dd 0c       	CC=P5<0x3;
+  78:	e2 0c       	CC=P2<-4;
+  7a:	c2 0c       	CC=P2<0x0;
+  7c:	da 0c       	CC=P2<0x3;
+  7e:	45 09       	CC=P5<=P0;
+  80:	4d 09       	CC=P5<=P1;
+  82:	50 09       	CC=P0<=P2;
+  84:	6b 09       	CC=P3<=P5;
+  86:	65 0d       	CC=P5<=-4;
+  88:	45 0d       	CC=P5<=0x0;
+  8a:	5d 0d       	CC=P5<=0x3;
+  8c:	62 0d       	CC=P2<=-4;
+  8e:	42 0d       	CC=P2<=0x0;
+  90:	5a 0d       	CC=P2<=0x3;
+  92:	c5 09       	CC=P5<P0\(IU\);
+  94:	cd 09       	CC=P5<P1\(IU\);
+  96:	d0 09       	CC=P0<P2\(IU\);
+  98:	eb 09       	CC=P3<P5\(IU\);
+  9a:	c5 0d       	CC=P5<0x0\(IU\);
+  9c:	fd 0d       	CC=P5<0x7\(IU\);
+  9e:	c2 0d       	CC=P2<0x0\(IU\);
+  a0:	fa 0d       	CC=P2<0x7\(IU\);
+  a2:	45 0a       	CC=P5<=P0\(IU\);
+  a4:	4d 0a       	CC=P5<=P1\(IU\);
+  a6:	50 0a       	CC=P0<=P2\(IU\);
+  a8:	6b 0a       	CC=P3<=P5\(IU\);
+  aa:	45 0e       	CC=P5<=0x0\(IU\);
+  ac:	7d 0e       	CC=P5<=0x7\(IU\);
+  ae:	42 0e       	CC=P2<=0x0\(IU\);
+  b0:	7a 0e       	CC=P2<=0x7\(IU\);
+  b2:	80 0a       	CC=A0==A1;
+  b4:	00 0b       	CC=A0<A1;
+  b6:	80 0b       	CC=A0<=A1;
+  b8:	07 02       	R7=CC;
+  ba:	00 02       	R0=CC;
+  bc:	80 03       	AZ=CC;
+  be:	81 03       	AN=CC;
+  c0:	8c 03       	AC0=CC;
+  c2:	8d 03       	AC1=CC;
+  c4:	99 03       	VS=CC;
+  c6:	90 03       	AV0=CC;
+  c8:	91 03       	AV0S=CC;
+  ca:	92 03       	AV1=CC;
+  cc:	93 03       	AV1S=CC;
+  ce:	86 03       	AQ=CC;
+  d0:	a0 03       	AZ\|=CC;
+  d2:	a1 03       	AN\|=CC;
+  d4:	ac 03       	AC0\|=CC;
+  d6:	ad 03       	AC1\|=CC;
+  d8:	b9 03       	VS\|=CC;
+  da:	b0 03       	AV0\|=CC;
+  dc:	b1 03       	AV0S\|=CC;
+  de:	b2 03       	AV1\|=CC;
+  e0:	b3 03       	AV1S\|=CC;
+  e2:	a6 03       	AQ\|=CC;
+  e4:	c0 03       	AZ&=CC;
+  e6:	c1 03       	AN&=CC;
+  e8:	cc 03       	AC0&=CC;
+  ea:	cd 03       	AC1&=CC;
+  ec:	d9 03       	VS&=CC;
+  ee:	d0 03       	AV0&=CC;
+  f0:	d1 03       	AV0S&=CC;
+  f2:	d2 03       	AV1&=CC;
+  f4:	d3 03       	AV1S&=CC;
+  f6:	c6 03       	AQ&=CC;
+  f8:	e0 03       	AZ\^=CC;
+  fa:	e1 03       	AN\^=CC;
+  fc:	ec 03       	AC0\^=CC;
+  fe:	ed 03       	AC1\^=CC;
+ 100:	f9 03       	VS\^=CC;
+ 102:	f0 03       	AV0\^=CC;
+ 104:	f1 03       	AV0S\^=CC;
+ 106:	f2 03       	AV1\^=CC;
+ 108:	f3 03       	AV1S\^=CC;
+ 10a:	e6 03       	AQ\^=CC;
+ 10c:	0f 02       	CC=R7;
+ 10e:	0e 02       	CC=R6;
+ 110:	09 02       	CC=R1;
+ 112:	08 02       	CC=R0;
+ 114:	00 03       	CC = AZ;
+ 116:	01 03       	CC = AN;
+ 118:	0c 03       	CC = AC0;
+ 11a:	0d 03       	CC = AC1;
+ 11c:	19 03       	CC = VS;
+ 11e:	10 03       	CC = AV0;
+ 120:	11 03       	CC = AV0S;
+ 122:	12 03       	CC = AV1;
+ 124:	13 03       	CC = AV1S;
+ 126:	06 03       	CC = AQ;
+ 128:	20 03       	CC\|=AZ;
+ 12a:	21 03       	CC\|=AN;
+ 12c:	2c 03       	CC\|=AC0;
+ 12e:	2d 03       	CC\|=AC1;
+ 130:	39 03       	CC\|=VS;
+ 132:	30 03       	CC\|=AV0;
+ 134:	31 03       	CC\|=AV0S;
+ 136:	32 03       	CC\|=AV1;
+ 138:	33 03       	CC\|=AV1S;
+ 13a:	26 03       	CC\|=AQ;
+ 13c:	40 03       	CC&=AZ;
+ 13e:	41 03       	CC&=AN;
+ 140:	4c 03       	CC&=AC0;
+ 142:	4d 03       	CC&=AC1;
+ 144:	59 03       	CC&=VS;
+ 146:	50 03       	CC&=AV0;
+ 148:	51 03       	CC&=AV0S;
+ 14a:	52 03       	CC&=AV1;
+ 14c:	53 03       	CC&=AV1S;
+ 14e:	46 03       	CC&=AQ;
+ 150:	60 03       	CC\^=AZ;
+ 152:	61 03       	CC\^=AN;
+ 154:	6c 03       	CC\^=AC0;
+ 156:	6d 03       	CC\^=AC1;
+ 158:	79 03       	CC\^=VS;
+ 15a:	70 03       	CC\^=AV0;
+ 15c:	71 03       	CC\^=AV0S;
+ 15e:	72 03       	CC\^=AV1;
+ 160:	73 03       	CC\^=AV1S;
+ 162:	66 03       	CC\^=AQ;
+ 164:	18 02       	CC=!CC;
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/control_code2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/control_code2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/control_code2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,257 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//6 CONTROL CODE BIT MANAGEMENT
+//
+
+//CC = Dreg == Dreg ; /* equal, register, signed (a) */
+CC = R7 == R0;
+CC = R6 == R1;
+CC = R0 == R7;
+
+//CC = Dreg == imm3 ; /* equal, immediate, signed (a) */
+CC = R7 == -4;
+CC = R7 == 3;
+CC = R0 == -4;
+CC = R0 == 3;
+
+//CC = Dreg < Dreg ; /* less than, register, signed (a) */
+CC = R7 < R0;
+CC = R6 < R0;
+CC = R7 < R1;
+CC = R1 < R7;
+CC = R0 < R6;
+
+//CC = Dreg < imm3 ; /* less than, immediate, signed (a) */
+CC = R7 < -4;
+CC = R6 < -4;
+CC = R7 < 3;
+CC = R1 < 3;
+
+//CC = Dreg <= Dreg ; /* less than or equal, register, signed (a) */
+CC = R7 <= R0;
+CC = R6 <= R0;
+CC = R7 <= R1;
+CC = R1 <= R7;
+CC = R0 <= R6;
+
+//CC = Dreg <= imm3 ; /* less than or equal, immediate, signed (a) */
+CC = R7 <= -4;
+CC = R6 <= -4;
+CC = R7 <= 3;
+CC = R1 <= 3;
+
+//CC = Dreg < Dreg (IU) ; /* less than, register, unsigned (a) */
+CC = R7 < R0(IU);
+CC = R6 < R0(IU);
+CC = R7 < R1(IU);
+CC = R1 < R7(IU);
+CC = R0 < R6(IU);
+
+//CC = Dreg < uimm3 (IU) ; /* less than, immediate, unsigned (a) */
+CC = R7 < 0(IU);
+CC = R6 < 0(IU);
+CC = R7 < 7(IU);
+CC = R1 < 7(IU);
+//CC = Dreg <= Dreg (IU) ; /* less than or equal, register, unsigned (a) */
+CC = R7 <= R0(IU);
+CC = R6 <= R0(IU);
+CC = R7 <= R1(IU);
+CC = R1 <= R7(IU);
+CC = R0 <= R6(IU);
+
+
+//CC = Dreg <= uimm3 (IU) ; /* less than or equal, immediate unsigned (a) */
+CC = R7 <= 0(IU);
+CC = R6 <= 0(IU);
+CC = R7 <= 7(IU);
+CC = R1 <= 7(IU);
+
+//CC = Preg == Preg ; /* equal, register, signed (a) */
+CC = P5 == P0;
+CC = P5 == P1;
+CC = P0 == P2;
+CC = P3 == P5;
+
+//CC = Preg == imm3 ; /* equal, immediate, signed (a) */
+CC = P5 == -4;
+CC = P5 == 0;
+CC = P5 == 3;
+CC = P2 == -4;
+CC = P2 == 0;
+CC = P2 == 3;
+
+//CC = Preg < Preg ; /* less than, register, signed (a) */
+CC = P5 < P0;
+CC = P5 < P1;
+CC = P0 < P2;
+CC = P3 < P5;
+
+//CC = Preg < imm3 ; /* less than, immediate, signed (a) */
+CC = P5 < -4;
+CC = P5 < 0;
+CC = P5 < 3;
+CC = P2 < -4;
+CC = P2 < 0;
+CC = P2 < 3;
+
+
+//CC = Preg <= Preg ; /* less than or equal, register, signed (a) */
+CC = P5 <= P0;
+CC = P5 <= P1;
+CC = P0 <= P2;
+CC = P3 <= P5;
+
+//CC = Preg <= imm3 ; /* less than or equal, immediate, signed (a) */
+CC = P5 <= -4;
+CC = P5 <= 0;
+CC = P5 <= 3;
+CC = P2 <= -4;
+CC = P2 <= 0;
+CC = P2 <= 3;
+
+//CC = Preg < Preg (IU) ; /* less than, register, unsigned (a) */
+CC = P5 < P0(IU);
+CC = P5 < P1(IU);
+CC = P0 < P2(IU);
+CC = P3 < P5(IU);
+
+//CC = Preg < uimm3 (IU) ; /* less than, immediate, unsigned (a) */
+CC = P5 < 0(IU);
+CC = P5 < 7(IU);
+CC = P2 < 0(IU);
+CC = P2 < 7(IU);
+
+//CC = Preg <= Preg (IU) ; /* less than or equal, register, unsigned (a) */
+CC = P5 <= P0(IU);
+CC = P5 <= P1(IU);
+CC = P0 <= P2(IU);
+CC = P3 <= P5(IU);
+
+//CC = Preg <= uimm3 (IU) ; /* less than or equal, immediate unsigned (a) */
+CC = P5 <= 0(IU);
+CC = P5 <= 7(IU);
+CC = P2 <= 0(IU);
+CC = P2 <= 7(IU);
+
+CC = A0 == A1 ; /* equal, signed (a) */
+CC = A0 < A1 ; /* less than, Accumulator, signed (a) */
+CC = A0 <= A1 ; /* less than or equal, Accumulator, signed (a) */
+
+//Dreg = CC ; /* CC into 32-bit data register, zero-extended (a) */
+R7 = CC;
+R0 = CC;
+
+//statbit = CC ; /* status bit equals CC (a) */
+AZ = CC;
+AN = CC;
+AC0= CC;
+AC1= CC;
+//V  = CC;
+VS = CC; 
+AV0= CC;
+AV0S= CC; 
+AV1 = CC; 
+AV1S= CC; 
+AQ  = CC;
+//statbit |= CC ; /* status bit equals status bit OR CC (a) */
+AZ |= CC;
+AN |= CC;
+AC0|= CC;
+AC1|= CC;
+//V  |= CC;
+VS |= CC; 
+AV0|= CC;
+AV0S|= CC; 
+AV1 |= CC; 
+AV1S|= CC; 
+AQ  |= CC;
+
+//statbit &= CC ; /* status bit equals status bit AND CC (a) */
+AZ &= CC;
+AN &= CC;
+AC0&= CC;
+AC1&= CC;
+//V  &= CC;
+VS &= CC; 
+AV0&= CC;
+AV0S&= CC; 
+AV1 &= CC; 
+AV1S&= CC; 
+AQ  &= CC;
+
+//statbit ^= CC ; /* status bit equals status bit XOR CC (a) */
+
+AZ ^= CC;
+AN ^= CC;
+AC0^= CC;
+AC1^= CC;
+//V  ^= CC;
+VS ^= CC; 
+AV0^= CC;
+AV0S^= CC; 
+AV1 ^= CC; 
+AV1S^= CC; 
+AQ  ^= CC;
+//CC = Dreg ; /* CC set if the register is non-zero (a) */
+CC = R7;
+CC = R6;
+CC = R1;
+CC = R0;
+
+
+//CC = statbit ; /* CC equals status bit (a) */
+CC = AZ;
+CC = AN;
+CC = AC0;
+CC = AC1;
+//CC = V;
+CC = VS; 
+CC = AV0;
+CC = AV0S; 
+CC = AV1; 
+CC = AV1S; 
+CC = AQ;
+
+//CC |= statbit ; /* CC equals CC OR status bit (a) */
+CC |= AZ;
+CC |= AN;
+CC |= AC0;
+CC |= AC1;
+//CC |= V;
+CC |= VS; 
+CC |= AV0;
+CC |= AV0S; 
+CC |= AV1; 
+CC |= AV1S; 
+CC |= AQ;
+
+//CC &= statbit ; /* CC equals CC AND status bit (a) */
+CC &= AZ;
+CC &= AN;
+CC &= AC0;
+CC &= AC1;
+//CC &= V;
+CC &= VS; 
+CC &= AV0;
+CC &= AV0S; 
+CC &= AV1; 
+CC &= AV1S; 
+CC &= AQ;
+
+//CC ^= statbit ; /* CC equals CC XOR status bit (a) */
+CC ^= AZ;
+CC ^= AN;
+CC ^= AC0;
+CC ^= AC1;
+//CC ^= V;
+CC ^= VS; 
+CC ^= AV0;
+CC ^= AV0S; 
+CC ^= AV1; 
+CC ^= AV1S; 
+CC ^= AQ;
+
+CC = ! CC ; /* (a) */

Added: branches/binutils/package/gas/testsuite/gas/bfin/event.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/event.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/event.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,42 @@
+#objdump: -dr
+#name: event
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <idle>:
+   0:	20 00       	IDLE;
+
+00000002 <csync>:
+   2:	23 00       	CSYNC;
+
+00000004 <ssync>:
+   4:	24 00       	SSYNC;
+
+00000006 <emuexcpt>:
+   6:	25 00       	EMUEXCPT;
+
+00000008 <cli>:
+   8:	37 00       	CLI  R7;
+   a:	30 00       	CLI  R0;
+
+0000000c <sti>:
+   c:	41 00       	STI  R1;
+   e:	42 00       	STI  R2;
+
+00000010 <raise>:
+  10:	9f 00       	RAISE  0xf;
+  12:	90 00       	RAISE  0x0;
+
+00000014 <excpt>:
+  14:	af 00       	EXCPT  0xf;
+  16:	a0 00       	EXCPT  0x0;
+
+00000018 <testset>:
+  18:	b5 00       	TESTSET  \(P5\);
+  1a:	b0 00       	TESTSET  \(P0\);
+
+0000001c <nop>:
+  1c:	00 00       	NOP;
+  1e:	03 c0 00 18 	mnop;
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/event.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/event.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/event.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,56 @@
+	.text
+	.global idle
+idle:
+	IDle;
+
+	.text
+	.global csync
+csync:
+	csync;
+
+	.text
+	.global ssync
+ssync:
+	SSYNC;
+
+	.text
+	.global emuexcpt
+emuexcpt:
+	EMuExCpt;
+
+	.text
+	.global cli
+cli:
+	cli r7;
+	CLI R0;
+
+	.text
+	.global sti
+sti:
+	STI r1;
+	stI r2;
+
+	.text
+	.global raise
+raise:
+	raise 15;
+	RAISE 0;
+
+	.text
+	.global excpt
+excpt:
+	excpt 15;
+	EXCPT 0;
+	
+	.text
+	.global testset
+testset:
+	testset(p5);
+	TESTset (P0);
+
+	.text
+	.global nop
+nop:
+	nop;
+	MNOP;
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/event2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/event2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/event2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,28 @@
+#objdump: -dr
+#name: event2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	20 00       	IDLE;
+   2:	23 00       	CSYNC;
+   4:	24 00       	SSYNC;
+   6:	25 00       	EMUEXCPT;
+   8:	30 00       	CLI  R0;
+   a:	31 00       	CLI  R1;
+   c:	32 00       	CLI  R2;
+   e:	40 00       	STI  R0;
+  10:	41 00       	STI  R1;
+  12:	42 00       	STI  R2;
+  14:	90 00       	RAISE  0x0;
+  16:	94 00       	RAISE  0x4;
+  18:	9f 00       	RAISE  0xf;
+  1a:	a0 00       	EXCPT  0x0;
+  1c:	a1 00       	EXCPT  0x1;
+  1e:	af 00       	EXCPT  0xf;
+  20:	b0 00       	TESTSET  \(P0\);
+  22:	b1 00       	TESTSET  \(P1\);
+  24:	b2 00       	TESTSET  \(P2\);
+  26:	00 00       	NOP;
+  28:	03 c0 00 18 	mnop;

Added: branches/binutils/package/gas/testsuite/gas/bfin/event2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/event2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/event2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,41 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//11 EXTERNAL EVENT MANAGEMENT
+//
+IDLE ; /* (a) */
+CSYNC ; /* (a) */
+SSYNC ; /* (a) */
+EMUEXCPT ; /* (a) */
+
+//CLI Dreg ; /* previous state of IMASK moved to Dreg (a) */
+CLI R0;
+CLI R1;
+CLI R2;
+
+//STI Dreg ; /* previous state of IMASK restored from Dreg (a) */
+STI R0;
+STI R1;
+STI R2;
+
+//RAISE uimm4 ; /* (a) */
+RAISE 0;
+RAISE 4;
+RAISE 15;
+
+//EXCPT uimm4 ; /* (a) */
+EXCPT 0;
+EXCPT 1;
+EXCPT 15;
+
+//TESTSET ( Preg ) ; /* (a) */
+TESTSET (P0);
+TESTSET (P1);
+TESTSET (P2);
+//TESTSET (SP);
+//TESTSET (FP);
+
+NOP ; /* (a) */
+MNOP ; /* (b) */

Added: branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+.*: Assembler messages:
+.*:3: Error: Constant out of range.
+.*:4: Error: Constant out of range.
+.*:6: Error: Bad constant value.
+.*:7: Error: Bad constant value.
+.*:8: Error: Bad constant value.
+.*:9: Error: Bad constant value.
+.*:10: Error: Bad constant value.
+.*:11: Error: Bad constant value.
+.*:13: Error: Dregs expected. Input text was R3.L.

Added: branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/expected_errors.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,13 @@
+	.text
+
+	p0.H = 0x12345678;
+	P0.l = 0x12345678;
+
+	CC = R3 < 4;
+	CC = R3 < 7;
+	CC = R3 < 8;
+	CC = R3 <= 4;
+	CC = R3 <= 7;
+	CC = R3 <= 8;
+
+	A1 -= M2.h * R3.L, A0 -= M2.l * R3.L;

Added: branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,5 @@
+.*: Assembler messages:
+.*:3: Error: Cannot move A1 to low half of register. Input text was A1.
+.*:4: Error: Cannot move A0 to high half of register. Input text was A0.
+.*:5: Error: Cannot move A1 to even register.
+.*:6: Error: Cannot move A0 to odd register.

Added: branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/expected_move_errors.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+	.text
+
+	R0.L = A1;
+	R0.H = A0;
+	R0 = A1;
+	R1 = A0;

Added: branches/binutils/package/gas/testsuite/gas/bfin/flow.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/flow.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/flow.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,96 @@
+#objdump: -d
+#name: flow
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <jump>:
+   0:	55 00       	JUMP  \(P5\);
+   2:	83 00       	JUMP  \(PC\+P3\);
+   4:	00 20       	JUMP.S  4.*
+   6:	80 e2 00 00 	JUMP.L  ff000006.*
+   a:	7f e2 ff ff 	JUMP.L  1000008.*
+   e:	ff 27       	JUMP.S  100c.*
+  10:	7f e2 00 80 	JUMP.L  ff0010.*
+  14:	f6 2f       	JUMP.S  0 <jump>;
+
+00000016 <ccjump>:
+  16:	00 1a       	IF CC JUMP fffffc16.*
+  18:	ff 1d       	IF CC JUMP 416.*\(BP\);
+  1a:	00 16       	IF ! CC JUMP fffffc1a.*\(BP\);
+  1c:	89 10       	IF ! CC JUMP 12e.*
+  1e:	f1 1b       	IF CC JUMP 0 <jump>;
+  20:	f0 1f       	IF CC JUMP 0 <jump>\(BP\);
+  22:	ef 17       	IF ! CC JUMP 0 <jump>\(BP\);
+  24:	ee 13       	IF ! CC JUMP 0 <jump>;
+
+00000026 <call>:
+  26:	63 00       	CALL  \(P3\);
+  28:	72 00       	CALL  \(PC\+P2\);
+  2a:	80 e3 00 00 	CALL  ff00002a.*
+  2e:	7f e3 ff ff 	CALL  100002c.*
+  32:	ff e3 e7 ff 	CALL  0 <jump>;
+
+00000036 <return>:
+  36:	10 00       	RTS;
+  38:	11 00       	RTI;
+  3a:	12 00       	RTX;
+  3c:	13 00       	RTN;
+  3e:	14 00       	RTE;
+
+00000040 <loop_lc0>:
+  40:	82 e0 13 00 	LSETUP\(44 <first_loop__BEGIN>,66 <first_loop__END>\)LC0;
+
+00000044 <first_loop__BEGIN>:
+  44:	38 e4 7b fc 	R0=\[FP\+-3604\];
+  48:	49 60       	R1=0x9\(x\);
+  4a:	38 e4 7b fc 	R0=\[FP\+-3604\];
+  4e:	00 32       	P0=R0;
+  50:	42 44       	P2=P0<<2;
+  52:	ba 5a       	P2=P2\+FP;
+  54:	20 e1 50 fb 	R0=-1200 \(X\);
+  58:	08 32       	P1=R0;
+  5a:	8a 5a       	P2=P2\+P1;
+  5c:	00 60       	R0=0x0\(x\);
+  5e:	10 93       	\[P2\]=R0;
+  60:	38 e4 7b fc 	R0=\[FP\+-3604\];
+  64:	08 64       	R0\+=0x1;
+
+00000066 <first_loop__END>:
+  66:	38 e6 7b fc 	\[FP\+-3604\]=R0;
+  6a:	a2 e0 02 40 	LSETUP\(6e <second_loop__BEGIN>,6e <second_loop__BEGIN>\)LC0=P4;
+
+0000006e <second_loop__BEGIN>:
+  6e:	00 00       	NOP;
+  70:	e0 e0 00 10 	LSETUP\(70 <second_loop__BEGIN\+0x2>,70 <second_loop__BEGIN\+0x2>\)LC0=P1>>1;
+  74:	82 e0 ff 03 	LSETUP\(78 <second_loop__BEGIN\+0xa>,72 <second_loop__BEGIN\+0x4>\)LC0;
+  78:	af e0 00 52 	LSETUP\(76 <second_loop__BEGIN\+0x8>,fffffc78 <another_loop__END\+0xfffffbba>\)LC0=P5;
+  7c:	ef e0 02 00 	LSETUP\(7a <second_loop__BEGIN\+0xc>,80 <loop_lc1>\)LC0=P0>>1;
+
+00000080 <loop_lc1>:
+  80:	90 e0 00 00 	LSETUP\(80 <loop_lc1>,80 <loop_lc1>\)LC1;
+  84:	b0 e0 00 40 	LSETUP\(84 <loop_lc1\+0x4>,84 <loop_lc1\+0x4>\)LC1=P4;
+  88:	f8 e0 1b 10 	LSETUP\(78 <second_loop__BEGIN\+0xa>,be <another_loop__END>\)LC1=P1>>1;
+  8c:	92 e0 ff 03 	LSETUP\(90 <loop_lc1\+0x10>,8a <loop_lc1\+0xa>\)LC1;
+  90:	bf e0 00 52 	LSETUP\(8e <loop_lc1\+0xe>,fffffc90 <another_loop__END\+0xfffffbd2>\)LC1=P5;
+  94:	ff e0 02 00 	LSETUP\(92 <loop_lc1\+0x12>,98 <another_loop__BEGIN>\)LC1=P0>>1;
+
+00000098 <another_loop__BEGIN>:
+  98:	38 e4 7a fc 	R0=\[FP\+-3608\];
+  9c:	00 32       	P0=R0;
+  9e:	42 44       	P2=P0<<2;
+  a0:	ba 5a       	P2=P2\+FP;
+  a2:	20 e1 f0 f1 	R0=-3600 \(X\);
+  a6:	00 32       	P0=R0;
+  a8:	42 5a       	P1=P2\+P0;
+  aa:	38 e4 7a fc 	R0=\[FP\+-3608\];
+  ae:	00 32       	P0=R0;
+  b0:	42 44       	P2=P0<<2;
+  b2:	ba 5a       	P2=P2\+FP;
+  b4:	20 e1 50 fb 	R0=-1200 \(X\);
+  b8:	00 32       	P0=R0;
+  ba:	82 5a       	P2=P2\+P0;
+  bc:	10 91       	R0=\[P2\];
+
+000000be <another_loop__END>:
+  be:	08 93       	\[P1\]=R0;

Added: branches/binutils/package/gas/testsuite/gas/bfin/flow.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/flow.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/flow.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,109 @@
+	 .data
+foodata:	.word 42
+	.text
+footext:
+	.text
+	.global jump
+jump:
+	jump(P5);
+	Jump (pc + p3);
+	jUMp (0);
+	JumP.l (-16777216);
+	jumP.L (0x00fffffe);
+	JUMP.s (4094);
+	JUMP.L (0X00FF0000);
+	jump (footext);
+
+	.text
+	.global ccjump
+ccjump:
+	if cc jump (-1024);
+	IF CC JUMP (1022) (BP);
+	if !cc jump (0xffffFc00) (Bp);
+	if !cc jumP (0x0112);
+	if cC JuMp (footext);
+	if CC jUmP (footext) (bp);
+	if !cc jump (FOOTEXT) (bP);
+	if !Cc JUMP (FooText);
+
+	.text
+	.global call
+call:
+	call (P3);
+	Call (PC+p2);
+	cALL (0xff000000);
+	CalL(0x00FFFFFe);
+	CAll call_test;
+
+
+	.text
+	.global return
+return:
+	rts;
+	rTi;
+	rtX;
+	Rtn;
+	RTE;
+
+	.text
+	
+	.text
+	.global loop_lc0
+loop_lc0:
+	loop first_loop lc0;
+	Loop_Begin first_loop;
+	R0 = [FP+-3604];
+	R1 = 9 (X);
+	R0 = [FP+-3604];
+	P0 = R0;
+	P2 = P0 << 2;
+	P2 = P2 + FP;
+	R0 = -1200 (X);
+	P1 = R0;
+	P2 = P2 + P1;
+	R0 = 0 (X);
+	[P2] = R0;
+	R0 = [FP+-3604];
+	R0 += 1;
+	[FP+-3604] = R0;
+	LOOP_END first_loop;
+
+	lOOP second_loop Lc0 = P4;
+	Loop_Begin second_loop;
+	NOP;
+	Loop_End second_loop;
+
+	LOOP third_loop lC0 = P1 >> 1;
+
+	Lsetup (4, 2046) Lc0;
+	LSETUP(30, 1024) LC0 = P5;
+	LSeTuP (30, 4) lc0 = p0 >> 1;
+
+
+	.global loop_lc1
+loop_lc1:
+	loop my_loop lc1;
+	lOOP other_loop Lc1 = P4;
+	LOOP another_loop lC1 = P1 >> 1;
+
+	Lsetup (4, 2046) Lc1;
+	LSETUP (30, 1024) LC1 = P5;
+	LSeTuP (30, 4) lc1 = p0 >> 1;
+	Loop_Begin another_loop;
+	R0 = [FP+-3608];
+	P0 = R0;
+	P2 = P0 << 2;
+	P2 = P2 + FP;
+	R0 = -3600 (X);
+	P0 = R0;
+	P1 = P2 + P0;
+	R0 = [FP+-3608];
+	P0 = R0;
+	P2 = P0 << 2;
+	P2 = P2 + FP;
+	R0 = -1200 (X);
+	P0 = R0;
+	P2 = P2 + P0;
+	R0 = [P2];
+	[P1] = R0;
+	LOOP_END another_loop;

Added: branches/binutils/package/gas/testsuite/gas/bfin/flow2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/flow2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/flow2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,114 @@
+#objdump: -d
+#name: flow2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <MY_LABEL1-0x2a>:
+   0:	50 00       	JUMP  \(P0\);
+   2:	51 00       	JUMP  \(P1\);
+   4:	52 00       	JUMP  \(P2\);
+   6:	53 00       	JUMP  \(P3\);
+   8:	54 00       	JUMP  \(P4\);
+   a:	55 00       	JUMP  \(P5\);
+   c:	56 00       	JUMP  \(SP\);
+   e:	57 00       	JUMP  \(FP\);
+  10:	80 00       	JUMP  \(PC\+P0\);
+  12:	81 00       	JUMP  \(PC\+P1\);
+  14:	82 00       	JUMP  \(PC\+P2\);
+  16:	83 00       	JUMP  \(PC\+P3\);
+  18:	84 00       	JUMP  \(PC\+P4\);
+  1a:	85 00       	JUMP  \(PC\+P5\);
+  1c:	86 00       	JUMP  \(PC\+SP\);
+  1e:	87 00       	JUMP  \(PC\+FP\);
+  20:	00 20       	JUMP.S  20 <MY_LABEL1-0xa>;
+  22:	69 22       	JUMP.S  4f4.*
+  24:	97 2d       	JUMP.S  fffffb52.*
+  26:	01 20       	JUMP.S  28 <MY_LABEL1-0x2>;
+  28:	ff 2f       	JUMP.S  26 <MY_LABEL1-0x4>;
+
+0000002a <MY_LABEL1>:
+  2a:	00 20       	JUMP.S  2a <MY_LABEL1>;
+  2c:	69 22       	JUMP.S  4fe.*
+  2e:	97 2d       	JUMP.S  fffffb5c.*
+  30:	01 20       	JUMP.S  32 <MY_LABEL1\+0x8>;
+  32:	ff 2f       	JUMP.S  30 <MY_LABEL1\+0x6>;
+  34:	c0 e2 00 00 	JUMP.L  ff800034.*
+  38:	3f e2 ff ff 	JUMP.L  800036.*
+  3c:	00 e2 00 00 	JUMP.L  3c <MY_LABEL1\+0x12>;
+  40:	00 e2 69 02 	JUMP.L  512.*
+  44:	ff e2 97 fd 	JUMP.L  fffffb72.*
+  48:	00 e2 01 00 	JUMP.L  4a <MY_LABEL1\+0x20>;
+  4c:	ff e2 ff ff 	JUMP.L  4a <MY_LABEL1\+0x20>;
+  50:	ed 2f       	JUMP.S  2a <MY_LABEL1>;
+  52:	d7 2f       	JUMP.S  0 .*
+  54:	d6 2f       	JUMP.S  0 .*
+  56:	d5 2f       	JUMP.S  0 .*
+  58:	04 1b       	IF CC JUMP fffffe60.*
+  5a:	5a 18       	IF CC JUMP 10e.*
+  5c:	00 18       	IF CC JUMP 5c <MY_LABEL1\+0x32>;
+  5e:	04 1f       	IF CC JUMP fffffe66.*\(BP\);
+  60:	5a 1c       	IF CC JUMP 114.*\(BP\);
+  62:	91 13       	IF ! CC JUMP ffffff84.*;
+  64:	90 10       	IF ! CC JUMP 184.*;
+  66:	91 17       	IF ! CC JUMP ffffff88.*\(BP\);
+  68:	90 14       	IF ! CC JUMP 188.*\(BP\);
+  6a:	e0 1b       	IF CC JUMP 2a <MY_LABEL1>;
+  6c:	ca 1b       	IF CC JUMP 0 <MY_LABEL1-0x2a>;
+  6e:	de 1f       	IF CC JUMP 2a <MY_LABEL1>\(BP\);
+  70:	c8 1f       	IF CC JUMP 0 <MY_LABEL1-0x2a>\(BP\);
+  72:	dc 13       	IF ! CC JUMP 2a <MY_LABEL1>;
+  74:	c6 13       	IF ! CC JUMP 0 <MY_LABEL1-0x2a>;
+  76:	da 17       	IF ! CC JUMP 2a <MY_LABEL1>\(BP\);
+  78:	c4 17       	IF ! CC JUMP 0 <MY_LABEL1-0x2a>\(BP\);
+  7a:	60 00       	CALL  \(P0\);
+  7c:	61 00       	CALL  \(P1\);
+  7e:	62 00       	CALL  \(P2\);
+  80:	63 00       	CALL  \(P3\);
+  82:	64 00       	CALL  \(P4\);
+  84:	65 00       	CALL  \(P5\);
+  86:	70 00       	CALL  \(PC\+P0\);
+  88:	71 00       	CALL  \(PC\+P1\);
+  8a:	72 00       	CALL  \(PC\+P2\);
+  8c:	73 00       	CALL  \(PC\+P3\);
+  8e:	74 00       	CALL  \(PC\+P4\);
+  90:	75 00       	CALL  \(PC\+P5\);
+  92:	09 e3 2b 1a 	CALL  1234e8.*;
+  96:	ff e3 97 fd 	CALL  fffffbc4.*;
+  9a:	ff e3 c8 ff 	CALL  2a <MY_LABEL1>;
+  9e:	ff e3 b1 ff 	CALL  0 <MY_LABEL1-0x2a>;
+  a2:	10 00       	RTS;
+  a4:	11 00       	RTI;
+  a6:	12 00       	RTX;
+  a8:	13 00       	RTN;
+  aa:	14 00       	RTE;
+  ac:	82 e0 02 00 	LSETUP\(b0 <MY_LABEL1\+0x86>,b0 <MY_LABEL1\+0x86>\)LC0;
+  b0:	84 e0 06 00 	LSETUP\(b8 <beg_poll_bit>,bc <end_poll_bit>\)LC0;
+  b4:	00 00       	NOP;
+	...
+
+000000b8 <beg_poll_bit>:
+  b8:	80 e1 01 00 	R0=1 <MY_LABEL1-0x29>\(Z\);
+
+000000bc <end_poll_bit>:
+  bc:	81 e1 02 00 	R1=2 <MY_LABEL1-0x28>\(Z\);
+  c0:	92 e0 03 00 	LSETUP\(c4 <end_poll_bit\+0x8>,c6 <end_poll_bit\+0xa>\)LC1;
+  c4:	93 e0 05 00 	LSETUP\(ca <FIR_filter>,ce <bottom_of_FIR_filter>\)LC1;
+	...
+
+000000ca <FIR_filter>:
+  ca:	80 e1 01 00 	R0=1 <MY_LABEL1-0x29>\(Z\);
+
+000000ce <bottom_of_FIR_filter>:
+  ce:	81 e1 02 00 	R1=2 <MY_LABEL1-0x28>\(Z\);
+  d2:	a2 e0 04 10 	LSETUP\(d6 <bottom_of_FIR_filter\+0x8>,da <bottom_of_FIR_filter\+0xc>\)LC0=P1;
+  d6:	e2 e0 04 10 	LSETUP\(da <bottom_of_FIR_filter\+0xc>,de <DoItSome__BEGIN>\)LC0=P1>>1;
+  da:	82 e0 03 00 	LSETUP\(de <DoItSome__BEGIN>,e0 <DoItSome__END>\)LC0;
+
+000000de <DoItSome__BEGIN>:
+  de:	08 60       	R0=0x1\(x\);
+
+000000e0 <DoItSome__END>:
+  e0:	11 60       	R1=0x2\(x\);
+  e2:	90 e0 00 00 	LSETUP\(e2 <DoItSome__END\+0x2>,e2 <DoItSome__END\+0x2>\)LC1;
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/flow2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/flow2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/flow2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,155 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//2 Program Flow Control
+//
+
+
+//JUMP ( Preg ) ; /* indirect to an absolute (not PC-relative)address (a) */
+//Preg: P5-0, SP, FP
+
+JUMP (P0);
+JUMP (P1);
+JUMP (P2);
+JUMP (P3);
+JUMP (P4);
+JUMP (P5);
+JUMP (SP);
+JUMP (FP);
+
+//JUMP ( PC + Preg ) ; /* PC-relative, indexed (a) */
+JUMP (PC+P0);
+JUMP (PC+P1);
+JUMP (PC+P2);
+JUMP (PC+P3);
+JUMP (PC+P4);
+JUMP (PC+P5);
+JUMP (PC+SP);
+JUMP (PC+FP);
+
+
+//JUMP pcrelm2 ; /* PC-relative, immediate (a) or (b) */
+
+JUMP 0X0;
+JUMP 1234;
+JUMP -1234;
+JUMP 2;
+JUMP -2;
+
+MY_LABEL1:
+//JUMP.S pcrel13m2 ; /* PC-relative, immediate, short (a) */
+JUMP.S 0X0;
+JUMP.S 1234;
+JUMP.S -1234;
+JUMP.S 2;
+JUMP.S -2;
+
+//JUMP.L pcrel25m2 ; /* PC-relative, immediate, long (b) */
+JUMP.L 0XFF800000;
+JUMP.L 0X007FFFFE;
+JUMP.L 0X0;
+JUMP.L 1234;
+JUMP.L -1234;
+JUMP.L 2;
+JUMP.L -2;
+
+//JUMP user_label ; /* user-defined absolute address label, */
+JUMP MY_LABEL1;
+JUMP MY_LABEL2;
+
+JUMP MY_LABEL1-2;
+JUMP MY_LABEL2-2;
+
+//IF CC JUMP pcrel11m2 ; /* branch if CC=1, branch predicted as not taken (a) */
+IF CC JUMP 0xFFFFFE08;
+IF CC JUMP 0x0B4;
+IF CC JUMP 0;
+
+//IF CC JUMP pcrel11m2 (bp) ; /* branch if CC=1, branch predicted as taken (a) */
+IF CC JUMP 0xFFFFFE08(bp);
+IF CC JUMP 0x0B4(bp);
+
+//IF !CC JUMP pcrel11m2 ; /* branch if CC=0, branch predicted as not taken (a) */
+IF !CC JUMP 0xFFFFFF22;
+IF !CC JUMP 0X120;
+
+//IF !CC JUMP pcrel11m2 (bp) ; /* branch if CC=0, branch predicted as taken (a) */
+IF !CC JUMP 0xFFFFFF22(bp);
+IF !CC JUMP 0X120(bp);
+
+//IF CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
+IF CC JUMP MY_LABEL1;
+IF CC JUMP MY_LABEL2;
+
+//IF CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
+IF CC JUMP MY_LABEL1(bp);
+IF CC JUMP MY_LABEL2(bp);
+
+//IF !CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
+IF !CC JUMP MY_LABEL1;
+IF !CC JUMP MY_LABEL2;
+
+//IF !CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
+IF !CC JUMP MY_LABEL1(bp);
+IF !CC JUMP MY_LABEL2(bp);
+
+//CALL ( Preg ) ; /* indirect to an absolute (not PC-relative) address (a) */
+CALL(P0);
+CALL(P1);
+CALL(P2);
+CALL(P3);
+CALL(P4);
+CALL(P5);
+
+
+//CALL ( PC + Preg ) ; /* PC-relative, indexed (a) */
+CALL(PC+P0);
+CALL(PC+P1);
+CALL(PC+P2);
+CALL(PC+P3);
+CALL(PC+P4);
+CALL(PC+P5);
+
+//CALL pcrel25m2 ; /* PC-relative, immediate (b) */
+CALL 0x123456 ;
+CALL -1234;
+
+//CALL user_label ; /* user-defined absolute address label,resolved by the assembler/linker to the appropriate PC-relative instruction (a) or (b) */
+CALL MY_LABEL1;
+CALL MY_LABEL2;
+
+RTS ; // Return from Subroutine (a)
+RTI ; // Return from Interrupt (a)
+RTX ; // Return from Exception (a)
+RTN ; // Return from NMI (a)
+RTE ; // Return from Emulation (a)
+
+lsetup ( 4, 4 ) lc0 ;
+
+lsetup ( beg_poll_bit, end_poll_bit ) lc0 ;
+NOP;NOP;
+beg_poll_bit: R0=1(Z);
+end_poll_bit: R1=2(Z);
+
+lsetup ( 4, 6 ) lc1 ;
+
+lsetup ( FIR_filter, bottom_of_FIR_filter ) lc1 ;
+NOP;
+FIR_filter: R0=1(Z);
+bottom_of_FIR_filter: R1=2(Z);
+
+lsetup ( 4, 8 ) lc0 = p1 ;
+
+lsetup ( 4, 8 ) lc0 = p1>>1 ;
+
+loop DoItSome LC0 ; /* define loop DoItSome with Loop Counter 0 */
+loop_begin DoItSome ; /* place before the first instruction in the loop */
+R0=1;
+R1=2;
+loop_end DoItSome ; /* place after the last instruction in the loop */
+
+loop DoItSomeMore LC1 ; /* define loop MyLoop with Loop Counter 1*/
+
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/load.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/load.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/load.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,114 @@
+#objdump: -d
+#name: load
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <load_immediate>:
+   0:	17 e1 ff ff 	M3.L=ffff.*
+   4:	1a e1 fe ff 	B2.L=fffe.*
+   8:	0e e1 00 00 	SP.L=0.*
+   c:	0f e1 dc fe 	FP.L=fedc.*
+  10:	40 e1 02 00 	R0.H=0x2;
+  14:	4d e1 20 00 	P5.H=20.*
+  18:	52 e1 04 f2 	I2.H=f204.*
+  1c:	59 e1 40 00 	B1.H=40.*
+  20:	5c e1 ff ff 	L0.H=ffff.*
+  24:	45 e1 00 00 	R5.H=0x0;
+  28:	5a e1 00 00 	B2.H=0 <load_immediate>;
+  2c:	8f e1 20 ff 	FP=ff20.*
+  30:	9e e1 20 00 	L2=20.*
+  34:	85 e1 00 00 	R5=0 <load_immediate>\(Z\);
+  38:	08 c4 [0-3][[:xdigit:]] 00 	A0=0;
+  3c:	08 c4 [0-3][[:xdigit:]] 40 	A1=0;
+  40:	08 c4 [0-3][[:xdigit:]] 80 	A1=A0=0;
+  44:	02 62       	R2=-64\(x\);
+  46:	20 e1 7f 00 	R0=0x7f \(X\);
+  4a:	02 68       	P2=0x0;
+  4c:	06 6b       	SP=-32;
+  4e:	67 69       	FP=0x2c;
+  50:	3f e1 00 08 	L3=0x800 \(X\);
+  54:	36 e1 ff 7f 	M2=0x7fff \(X\);
+  58:	81 60       	R1=0x10\(x\);
+  5a:	3c e1 00 00 	L0=0x0 \(X\);
+  5e:	27 e1 eb 00 	R7=0xeb \(X\);
+
+00000062 <load_pointer_register>:
+  62:	7e 91       	SP=\[FP\];
+  64:	47 90       	FP=\[P0\+\+\];
+  66:	f1 90       	P1=\[SP--\];
+  68:	96 af       	SP=\[P2\+0x38\];
+  6a:	3b ac       	P3=\[FP\+0x0];
+  6c:	3c e5 ff 7f 	P4=\[FP\+0x1fffc\];
+  70:	3e e5 01 80 	SP=\[FP\+-131068\];
+  74:	26 ac       	SP=\[P4\+0x0\];
+  76:	0d b8       	P5=\[FP-128\];
+
+00000078 <load_data_register>:
+  78:	07 91       	R7=\[P0\];
+  7a:	2e 90       	R6=\[P5\+\+\];
+  7c:	a5 90       	R5=\[P4--\];
+  7e:	bc a2       	R4=\[FP\+0x28\];
+  80:	33 e4 ff 7f 	R3=\[SP\+0x1fffc\];
+  84:	32 a0       	R2=\[SP\+0x0\];
+  86:	39 e4 01 80 	R1=\[FP\+-131068\];
+  8a:	06 80       	R0=\[SP\+\+P0\];
+  8c:	05 b8       	R5=\[FP-128\];
+  8e:	02 9d       	R2=\[I0\];
+  90:	09 9c       	R1=\[I1\+\+\];
+  92:	93 9c       	R3=\[I2--\];
+  94:	9c 9d       	R4=\[I3\+\+M0\];
+
+00000096 <load_half_word_zero_extend>:
+  96:	37 95       	R7=W\[SP\] \(Z\);
+  98:	3e 94       	R6=W\[FP\+\+\] \(Z\);
+  9a:	85 94       	R5=W\[P0--\] \(Z\);
+  9c:	cc a7       	R4=W\[P1\+0x1e\] \(Z\);
+  9e:	73 e4 fe 7f 	R3=W\[SP\+0xfffc\] \(Z\);
+  a2:	7a e4 02 80 	R2=W\[FP\+-65532\] \(Z\);
+  a6:	28 86       	R0=W\[P0\+\+P5\] \(Z\);
+
+000000a8 <load_half_word_sign_extend>:
+  a8:	77 95       	R7=W\[SP\]\(X\);
+  aa:	7e 94       	R6=W\[FP\+\+\]\(X\);
+  ac:	c5 94       	R5=W\[P0--\]\(X\);
+  ae:	0d ab       	R5=W\[P1\+0x18\]\(X\);
+  b0:	73 e5 fe 7f 	R3=W\[SP\+0xfffc\]\(X\);
+  b4:	7f e5 02 80 	R7=W\[FP\+-65532\]\(X\);
+  b8:	51 8e       	R1=W\[P1\+\+P2\]\(X\);
+
+000000ba <load_high_data_register_half>:
+  ba:	40 9d       	R0.H=W\[I0\];
+  bc:	49 9c       	R1.H=W\[I1\+\+\];
+  be:	d2 9c       	R2.H=W\[I2--\];
+  c0:	f6 84       	R3.H=W\[SP\];
+  c2:	07 85       	R4.H=W\[FP\+\+P0\];
+
+000000c4 <load_low_data_register_half>:
+  c4:	3f 9d       	R7.L=W\[I3\];
+  c6:	36 9c       	R6.L=W\[I2\+\+\];
+  c8:	ad 9c       	R5.L=W\[I1--\];
+  ca:	00 83       	R4.L=W\[P0\];
+  cc:	da 82       	R3.L=W\[P2\+\+P3\];
+
+000000ce <load_byte_zero_extend>:
+  ce:	05 99       	R5=B\[P0\] \(Z\);
+  d0:	0c 98       	R4=B\[P1\+\+\] \(Z\);
+  d2:	90 98       	R0=B\[P2--\] \(Z\);
+  d4:	b3 e4 ff 7f 	R3=B\[SP\+0x7fff\] \(Z\);
+  d8:	b7 e4 01 80 	R7=B\[SP\+-32767\] \(Z\);
+
+000000dc <load_byte_sign_extend>:
+  dc:	45 99       	R5=B\[P0\]\(X\);
+  de:	4a 98       	R2=B\[P1\+\+\]\(X\);
+  e0:	fb 98       	R3=B\[FP--\]\(X\);
+  e2:	b7 e5 00 00 	R7=B\[SP\+0x0\]\(X\);
+  e6:	be e5 01 80 	R6=B\[FP\+-32767\]\(X\);
+
+000000ea <load_data1>:
+	...
+
+000000eb <load_data2>:
+  eb:	10 00       	IF ! CC JUMP eb <load_data2>;
+  ed:	00 00       	NOP;
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/load.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/load.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/load.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,131 @@
+	.extern f001
+	.extern F002
+	.text
+	.global load_immediate
+load_immediate:
+	/* Half-Word Load.  */
+	M3.l = 0xffff;
+	b2.l = 0xfffe;
+	Sp.l = 0;
+	FP.L = 0xfedc;
+	r0.h = 2;
+	p5.H = 32;
+	I2.h = 0xf204;
+	b1.H = 64;
+	l0.h = 0xffff;
+	R5.h = load_data1;
+	B2.H = F002;
+
+	/* Zero Extended.  */
+	fp = 0xff20 (Z);
+	l2 = 32 (z);
+	R5 = foo2 (Z);
+	A0 = 0;
+	A1 = 0;
+	a1 = a0 = 0;
+
+	/* Sign Extended.  */
+	r2 = -64 (x);
+	R0 = 0x7f (X);
+	P2 = 0 (x);
+	sp = -32 (x);
+	fp = 44 (X);
+	l3 = 0x800 (x);
+	m2 = 0x7fff (X);
+	R1 = 16 (X);
+	L0 = foo1;
+	r7 = load_data2;
+
+	.text
+	.global load_pointer_register
+load_pointer_register:
+	Sp = [ fp];
+	FP = [ p0++ ];
+	p1 = [sp--];
+	SP = [P2 +56];
+	p3 = [fp + 0];
+	P4 = [FP + 0x0001FFFC];
+	sp = [fp-0x0001fffc];
+	sp = [p4-0];
+	P5 = [FP-128];
+	
+
+	.text
+	.global load_data_register
+load_data_register:
+	R7 = [p0];
+	r6 = [p5++];
+	r5 = [P4 --];
+	R4 = [Fp + 40];
+	r3 = [sp+131068];
+	r2 = [sp-0];
+	r1 = [fp - 0x0001fffc];
+	R0 = [sp ++ p0];
+	R5 = [Fp-128];
+	r2 = [i0];
+	r1 = [I1++];
+	R3 = [I2--];
+	R4 = [i3 ++ M0];
+
+	.text
+	.global load_half_word_zero_extend
+load_half_word_zero_extend:
+	r7 = w [sp] (z);
+	R6 = W [FP ++] (Z);
+	R5 = W [P0 --] (z);
+	R4 = w [p1 + 30] (Z);
+	r3 = w [sp + 0xfffc] (z);
+	r2 = w [fp - 0xfffc] (Z);
+	R0 = W [ P0 ++ P5] (z);
+
+	.text
+	.global load_half_word_sign_extend
+load_half_word_sign_extend:
+	r7 = w [sp] (x);
+	R6 = W [FP ++] (X);
+	R5 = W [P0 --] (X);
+	r5 = w [p1 + 24] (x);
+	R3 = w [sp + 0xfffc] (X);
+	r7 = w [fp - 0xfffc] (x);
+	R1 = W [ P1 ++ P2] (X);
+	
+	.text
+	.global load_high_data_register_half
+load_high_data_register_half:
+	r0.h = w [i0];
+	R1.H = W [I1 ++];
+	R2.h = w [I2 --];
+	r3.H = W [sp];
+	R4.h = W [Fp ++ p0];
+
+	.text
+	.global load_low_data_register_half
+load_low_data_register_half:
+	r7.l = w [i3];
+	R6.L = W [I2++];
+	R5.l = w [i1 --];
+	r4.L = w [P0];
+	r3.l = W [p2 ++ p3];
+
+	.text
+	.global load_byte_zero_extend
+load_byte_zero_extend:
+	r5 = b [p0] (z);
+	R4 = B [P1++] (Z);
+	r0 = b [p2--] (z);
+	R3 = B [sp + 0x7fff] (Z);
+	r7 = b [SP - 32767] (z);
+
+	.text
+	.global load_byte_sign_extend
+load_byte_sign_extend:
+	r5 = b [ P0 ] (X);
+	r2 = B [ p1++ ] (x);
+	R3 = b [ FP--] (x);
+	r7 = B [ sp+0] (x);
+	r6 = b [fp-0x7fff] (X);
+
+	.global load_data
+load_data1:	.byte 0
+load_data2:	.word 16
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/logical.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/logical.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/logical.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,39 @@
+#objdump: -dr
+#name: logical
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <and>:
+   0:	c8 55       	R7=R0&R1;
+   2:	9b 54       	R2=R3&R3;
+   4:	91 55       	R6=R1&R2;
+
+00000006 <not>:
+   6:	c8 43       	R0=~R1;
+   8:	d1 43       	R1=~R2;
+   a:	e3 43       	R3=~R4;
+   c:	ec 43       	R4=~R5;
+
+0000000e <or>:
+   e:	08 56       	R0=R0\|R1;
+  10:	a3 56       	R2=R3\|R4;
+  12:	7e 57       	R5=R6\|R7;
+
+00000014 <xor>:
+  14:	5d 59       	R5=R5\^R3;
+  16:	02 59       	R4=R2\^R0;
+  18:	01 58       	R0=R1\^R0;
+
+0000001a <bxor>:
+  1a:	0b c6 00 4e 	R7.L=CC=BXOR\(A0,R0\);
+  1e:	0b c6 08 4e 	R7.L=CC=BXOR\(A0,R1\);
+  22:	0c c6 00 4a 	R5.L=CC=BXOR\( A0,A1 ,CC \);
+  26:	0c c6 00 48 	R4.L=CC=BXOR\( A0,A1 ,CC \);
+
+0000002a <bxorshift>:
+  2a:	0b c6 38 06 	R3.L=CC=BXORSHIFT\(A0,R7\);
+  2e:	0b c6 10 04 	R2.L=CC=BXORSHIFT\(A0,R2\);
+  32:	0c c6 00 00 	A0=BXORSHIFT\(A0,A1 ,CC\);
+  36:	0c c6 00 00 	A0=BXORSHIFT\(A0,A1 ,CC\);
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/logical.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/logical.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/logical.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,51 @@
+	.text
+	.global and
+and:
+	r7 = r0 & r1;
+	R2 = R3 & R3;
+	r6 = r1 & R2;
+
+	.text
+	.global not
+not:
+	r0 = ~R1;
+	R1 = ~r2;
+	r3 = ~r4;
+	R4 = ~R5;
+
+	.text
+	.global or
+or:
+	r0 = r0 | r1;
+	r2 = R3 | R4;
+	R5 = r6 | R7;
+
+	.text
+	.global xor
+xor:
+	r5 = r5 ^ r3;
+	r4 = R2 ^ r0;
+	R0 = R1 ^ R0;
+
+
+	.text
+	.global bxor
+bxor:
+	R7.l = CC = bxor (a0, r0);
+	r7.l = cc = BXOR (A0, R1);
+
+	r5.L = Cc = BxoR (A0, A1, CC);
+	R4.L = cC = bXor (a0, a1, cc);
+
+	.text
+	.global bxorshift
+bxorshift:
+	r3.l = cc = bxorshift (a0, R7);
+	R2.l = cC = BxoRsHIft (A0, R2);
+
+	A0 = BXORSHIFT (A0, A1, CC);
+	a0 = BxorShift (a0, A1, Cc);
+
+
+
+	

Added: branches/binutils/package/gas/testsuite/gas/bfin/logical2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/logical2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/logical2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,43 @@
+#objdump: -dr
+#name: logical2
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	ff 55       	R7=R7&R7;
+   2:	c7 55       	R7=R7&R0;
+   4:	cf 55       	R7=R7&R1;
+   6:	7f 54       	R1=R7&R7;
+   8:	87 54       	R2=R7&R0;
+   a:	cf 54       	R3=R7&R1;
+   c:	ff 43       	R7=~R7;
+   e:	c7 43       	R7=~R0;
+  10:	f8 43       	R0=~R7;
+  12:	d0 43       	R0=~R2;
+  14:	ff 57       	R7=R7\|R7;
+  16:	cf 57       	R7=R7\|R1;
+  18:	c7 57       	R7=R7\|R0;
+  1a:	7f 56       	R1=R7\|R7;
+  1c:	8f 56       	R2=R7\|R1;
+  1e:	c7 56       	R3=R7\|R0;
+  20:	ff 59       	R7=R7\^R7;
+  22:	cf 59       	R7=R7\^R1;
+  24:	c7 59       	R7=R7\^R0;
+  26:	7f 58       	R1=R7\^R7;
+  28:	8f 58       	R2=R7\^R1;
+  2a:	c7 58       	R3=R7\^R0;
+  2c:	0b c6 00 00 	R0.L=CC=BXORSHIFT\(A0,R0\);
+  30:	0b c6 08 00 	R0.L=CC=BXORSHIFT\(A0,R1\);
+  34:	0b c6 00 06 	R3.L=CC=BXORSHIFT\(A0,R0\);
+  38:	0b c6 08 06 	R3.L=CC=BXORSHIFT\(A0,R1\);
+  3c:	0b c6 00 40 	R0.L=CC=BXOR\(A0,R0\);
+  40:	0b c6 08 40 	R0.L=CC=BXOR\(A0,R1\);
+  44:	0b c6 00 46 	R3.L=CC=BXOR\(A0,R0\);
+  48:	0b c6 08 46 	R3.L=CC=BXOR\(A0,R1\);
+  4c:	0c c6 00 40 	R0.L=CC=BXOR\( A0,A1 ,CC \);
+  50:	0c c6 00 40 	R0.L=CC=BXOR\( A0,A1 ,CC \);
+  54:	0c c6 00 46 	R3.L=CC=BXOR\( A0,A1 ,CC \);
+  58:	0c c6 00 46 	R3.L=CC=BXOR\( A0,A1 ,CC \);
+  5c:	0c c6 00 00 	A0=BXORSHIFT\(A0,A1 ,CC\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/logical2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/logical2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/logical2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,69 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//7 LOGICAL OPERATIONS
+//
+
+//Dreg = Dreg & Dreg ; /* (a) */
+
+R7 = R7 & R7;
+R7 = R7 & R0;
+r7 = R7 & R1;
+
+R1 = R7 & R7;
+R2 = R7 & R0;
+r3 = R7 & R1;
+
+//Dreg = ~ Dreg ; /* (a)*/
+
+R7 = ~R7;
+R7 = ~R0;
+R0 = ~R7;
+R0 = ~R2;
+
+//Dreg = Dreg | Dreg ; /* (a) */
+
+R7 = R7 | R7;
+R7 = R7 | R1;
+R7 = R7 | R0;
+
+R1 = R7 | R7;
+R2 = R7 | R1;
+R3 = R7 | R0;
+
+//Dreg = Dreg ^ Dreg ; /* (a) */
+
+R7 = R7 ^ R7;
+R7 = R7 ^ R1;
+R7 = R7 ^ R0;
+
+R1 = R7 ^ R7;
+R2 = R7 ^ R1;
+R3 = R7 ^ R0;
+
+//Dreg_lo = CC = BXORSHIFT ( A0, Dreg ) ; /* (b) */
+R0.L = CC = BXORSHIFT(A0, R0);
+R0.L = CC = BXORSHIFT(A0, R1);
+
+R3.L = CC = BXORSHIFT(A0, R0);
+R3.L = CC = BXORSHIFT(A0, R1);
+
+//Dreg_lo = CC = BXOR ( A0, Dreg ) ; /* (b) */
+R0.L = CC = BXOR(A0, R0);
+R0.L = CC = BXOR(A0, R1);
+
+R3.L = CC = BXOR(A0, R0);
+R3.L = CC = BXOR(A0, R1);
+
+//Dreg_lo = CC = BXOR ( A0, A1, CC ) ; /* (b) */
+R0.L = CC = BXOR(A0, A1, CC);
+R0.L = CC = BXOR(A0, A1, CC);
+
+R3.L = CC = BXOR(A0, A1, CC);
+R3.L = CC = BXOR(A0, A1, CC);
+
+A0 = BXORSHIFT ( A0, A1, CC ) ; /* (b) */
+
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/move.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/move.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/move.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,82 @@
+#objdump: -dr
+#name: move
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <move_register>:
+   0:	38 31       	R7=A0.x;
+   2:	fb 32       	FP=B3;
+   4:	35 36       	L2=R5;
+   6:	b2 34       	M2=I2;
+   8:	d8 39       	A1.w=USP;
+   a:	06 31       	R0=ASTAT;
+   c:	c9 31       	R1=SEQSTAT;
+   e:	d2 31       	R2=SYSCFG;
+  10:	db 31       	R3=RETI;
+  12:	e4 31       	R4=RETX;
+  14:	ed 31       	R5=RETN;
+  16:	f6 31       	R6=RETE;
+  18:	3f 31       	R7=RETS;
+  1a:	a8 31       	R5=LC0;
+  1c:	a3 31       	R4=LC1;
+  1e:	99 31       	R3=LT0;
+  20:	94 31       	R2=LT1;
+  22:	8a 31       	R1=LB0;
+  24:	85 31       	R0=LB1;
+  26:	96 31       	R2=CYCLES;
+  28:	9f 31       	R3=CYCLES2;
+  2a:	cf 31       	R1=EMUDAT;
+  2c:	31 3d       	CYCLES=A0.w;
+  2e:	7f 38       	RETS=FP;
+  30:	e0 3d       	LT1=USP;
+  32:	72 38       	ASTAT=P2;
+  34:	08 c4 [0|3][0|f] c0 	A0=A1;
+  38:	08 c4 [0|3][0|f] e0 	A1=A0;
+  3c:	09 c4 00 20 	A0=R0;
+  40:	09 c4 08 a0 	A1=R1;
+  44:	8b c0 00 39 	R4 = A0 \(FU\);
+  48:	2f c1 00 19 	R5 = A1 \(ISS2\);
+  4c:	0b c0 80 39 	R6 = A0;
+  50:	0f c0 80 19 	R7 = A1;
+  54:	0f c0 80 39 	R7 = A1, R6 = A0;
+  58:	8f c0 00 38 	R1 = A1, R0 = A0 \(FU\);
+
+0000005c <move_conditional>:
+  5c:	6a 07       	IF CC R5 = P2;
+  5e:	b0 06       	IF ! CC SP = R0;
+
+00000060 <move_half_to_full_zero_extend>:
+  60:	fa 42       	R2=R7.L\(Z\);
+  62:	c8 42       	R0=R1.L\(Z\);
+
+00000064 <move_half_to_full_sign_extend>:
+  64:	8d 42       	R5=R1.L\(X\);
+  66:	93 42       	R3=R2.L\(X\);
+
+00000068 <move_register_half>:
+  68:	09 c4 28 40 	A0.x=R5.L;
+  6c:	09 c4 10 c0 	A1.x=R2.L;
+  70:	0a c4 [0|3][0|6] 00 	R0.L=A0.x;
+  74:	0a c4 [0|3][0|6] 4e 	R7.L=A1.x;
+  78:	09 c4 18 00 	A0.L=R3.L;
+  7c:	09 c4 20 80 	A1.L=R4.L;
+  80:	29 c4 30 00 	A0.H=R6.H;
+  84:	29 c4 28 80 	A1.H=R5.H;
+  88:	83 c1 00 38 	R0.L = A0 \(IU\);
+  8c:	27 c0 40 18 	R1.H = A1 \(S2RND\);
+  90:	07 c0 40 18 	R1.H = A1;
+  94:	67 c1 80 38 	R2.H = A1, R2.L = A0 \(IH\);
+  98:	07 c0 80 38 	R2.H = A1, R2.L = A0;
+  9c:	47 c0 00 38 	R0.H = A1, R0.L = A0 \(T\);
+  a0:	87 c0 00 38 	R0.H = A1, R0.L = A0 \(FU\);
+  a4:	07 c1 00 38 	R0.H = A1, R0.L = A0 \(IS\);
+  a8:	07 c0 00 38 	R0.H = A1, R0.L = A0;
+
+000000ac <move_byte_zero_extend>:
+  ac:	57 43       	R7=R2.B\(Z\);
+  ae:	48 43       	R0=R1.B\(Z\);
+
+000000b0 <move_byte_sign_extend>:
+  b0:	4e 43       	R6=R1.B\(Z\);
+  b2:	65 43       	R5=R4.B\(Z\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/move.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/move.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/move.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,91 @@
+	.text
+	.global move_register
+move_register:
+	r7 = A0.X;
+	Fp = B3;
+	l2 = R5;
+	M2 = i2;
+	a1.w = usp;
+	r0 = astat;
+	r1 = sEQstat;
+	R2 = SYScfg;
+	R3 = reti;
+	R4 = RETX;
+	r5 = reTN;
+	r6 = rETe;
+	R7 = RETS;
+	R5 = lc0;
+	r4 = Lc1;
+	r3 = Lt0;
+	r2 = LT1;
+	r1 = Lb0;
+	r0 = LB1;
+	R2 = Cycles;
+	R3 = Cycles2;
+	r1 = emudat;
+	CYCLES = A0.W;
+	Rets = Fp;
+	Lt1 = USP;
+	ASTAT = P2; 
+	A0 = A1;
+	a1 = a0;
+	a0 = R0;
+	A1 = r1;
+
+	R4 = A0 (fu);
+	r5 = A1 (ISS2);
+	R6 = a0;
+	R7 = A1;
+	R6 = A0, R7 = a1;
+	r1 = a1, r0 = a0 (fu);
+
+	.text
+	.global move_conditional
+move_conditional:
+	if cc R5 = P2;
+	if !cc Sp = R0;
+	
+	.text
+	.global move_half_to_full_zero_extend
+move_half_to_full_zero_extend:
+	R2 = r7.L (Z);
+	r0 = R1.L (z);
+	
+	.text
+	.global move_half_to_full_sign_extend
+move_half_to_full_sign_extend:
+	R5 = R1.L (x);
+	r3 = r2.L (X);
+
+	.text
+	.global move_register_half
+move_register_half:
+	A0.X = r5.l;
+	a1.X = r2.L;
+	r0.l = a0.x;
+	R7.l = A1.X;
+	A0.L = r3.l;
+	a1.l = r4.l;
+	A0.h = r6.H;
+	A1.H = r5.h;
+	r0.l = A0 (iu);
+	R1.H = A1 (s2rnd);
+	r1.h = a1;
+	R2.l = A0, r2.H = A1 (IH);
+	R2.l = A0, r2.H = A1;
+	r0.H = A1, R0.L = a0 (t);
+	r0.H = A1, R0.L = a0 (fu);
+	r0.H = A1, R0.L = a0 (is);
+	r0.H = A1, R0.L = a0;
+
+	.text
+	.global move_byte_zero_extend
+move_byte_zero_extend:
+	R7 = r2.b (z);
+	r0 = R1.B (Z);
+
+	.text
+	.global move_byte_sign_extend
+move_byte_sign_extend:
+	r6 = r1.b (Z);
+	R5 = R4.B (z);

Added: branches/binutils/package/gas/testsuite/gas/bfin/move2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/move2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/move2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,371 @@
+#objdump: -dr
+#name: move2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	00 30       	R0=R0;
+   2:	09 30       	R1=R1;
+   4:	12 30       	R2=R2;
+   6:	1b 30       	R3=R3;
+   8:	24 30       	R4=R4;
+   a:	2d 30       	R5=R5;
+   c:	36 30       	R6=R6;
+   e:	3f 30       	R7=R7;
+  10:	40 32       	P0=P0;
+  12:	49 32       	P1=P1;
+  14:	52 32       	P2=P2;
+  16:	5b 32       	P3=P3;
+  18:	64 32       	P4=P4;
+  1a:	6d 32       	P5=P5;
+  1c:	76 32       	SP=SP;
+  1e:	7f 32       	FP=FP;
+  20:	00 39       	A0.x=A0.x;
+  22:	09 39       	A0.w=A0.w;
+  24:	12 39       	A1.x=A1.x;
+  26:	1b 39       	A1.w=A1.w;
+  28:	03 31       	R0=A1.w;
+  2a:	0a 31       	R1=A1.x;
+  2c:	11 31       	R2=A0.w;
+  2e:	18 31       	R3=A0.x;
+  30:	67 30       	R4=FP;
+  32:	6e 30       	R5=SP;
+  34:	75 30       	R6=P5;
+  36:	7c 30       	R7=P4;
+  38:	43 32       	P0=P3;
+  3a:	4a 32       	P1=P2;
+  3c:	51 32       	P2=P1;
+  3e:	58 32       	P3=P0;
+  40:	27 32       	P4=R7;
+  42:	2e 32       	P5=R6;
+  44:	35 32       	SP=R5;
+  46:	3c 32       	FP=R4;
+  48:	03 38       	A0.x=R3;
+  4a:	0a 38       	A0.w=R2;
+  4c:	11 38       	A1.x=R1;
+  4e:	18 38       	A1.w=R0;
+  50:	01 39       	A0.x=A0.w;
+  52:	03 39       	A0.x=A1.w;
+  54:	02 39       	A0.x=A1.x;
+  56:	13 39       	A1.x=A1.w;
+  58:	11 39       	A1.x=A0.w;
+  5a:	10 39       	A1.x=A0.x;
+  5c:	09 39       	A0.w=A0.w;
+  5e:	0b 39       	A0.w=A1.w;
+  60:	0a 39       	A0.w=A1.x;
+  62:	1b 39       	A1.w=A1.w;
+  64:	19 39       	A1.w=A0.w;
+  66:	18 39       	A1.w=A0.x;
+  68:	80 30       	R0=I0;
+  6a:	89 30       	R1=I1;
+  6c:	92 30       	R2=I2;
+  6e:	9b 30       	R3=I3;
+  70:	a4 30       	R4=M0;
+  72:	ad 30       	R5=M1;
+  74:	b6 30       	R6=M2;
+  76:	bf 30       	R7=M3;
+  78:	c0 30       	R0=B0;
+  7a:	c9 30       	R1=B1;
+  7c:	d2 30       	R2=B2;
+  7e:	db 30       	R3=B3;
+  80:	e4 30       	R4=L0;
+  82:	ed 30       	R5=L1;
+  84:	f6 30       	R6=L2;
+  86:	ff 30       	R7=L3;
+  88:	80 32       	P0=I0;
+  8a:	89 32       	P1=I1;
+  8c:	92 32       	P2=I2;
+  8e:	9b 32       	P3=I3;
+  90:	a4 32       	P4=M0;
+  92:	ad 32       	P5=M1;
+  94:	b6 32       	SP=M2;
+  96:	bf 32       	FP=M3;
+  98:	c0 32       	P0=B0;
+  9a:	c9 32       	P1=B1;
+  9c:	d2 32       	P2=B2;
+  9e:	db 32       	P3=B3;
+  a0:	e4 32       	P4=L0;
+  a2:	ed 32       	P5=L1;
+  a4:	f6 32       	SP=L2;
+  a6:	ff 32       	FP=L3;
+  a8:	80 38       	A0.x=I0;
+  aa:	89 38       	A0.w=I1;
+  ac:	92 38       	A1.x=I2;
+  ae:	9b 38       	A1.w=I3;
+  b0:	84 38       	A0.x=M0;
+  b2:	8d 38       	A0.w=M1;
+  b4:	96 38       	A1.x=M2;
+  b6:	9f 38       	A1.w=M3;
+  b8:	c0 38       	A0.x=B0;
+  ba:	c9 38       	A0.w=B1;
+  bc:	d2 38       	A1.x=B2;
+  be:	db 38       	A1.w=B3;
+  c0:	c4 38       	A0.x=L0;
+  c2:	cd 38       	A0.w=L1;
+  c4:	d6 38       	A1.x=L2;
+  c6:	df 38       	A1.w=L3;
+  c8:	00 34       	I0=R0;
+  ca:	48 34       	I1=P0;
+  cc:	56 34       	I2=SP;
+  ce:	5f 34       	I3=FP;
+  d0:	00 35       	I0=A0.x;
+  d2:	09 35       	I1=A0.w;
+  d4:	12 35       	I2=A1.x;
+  d6:	1b 35       	I3=A1.w;
+  d8:	20 34       	M0=R0;
+  da:	68 34       	M1=P0;
+  dc:	76 34       	M2=SP;
+  de:	7f 34       	M3=FP;
+  e0:	20 35       	M0=A0.x;
+  e2:	29 35       	M1=A0.w;
+  e4:	32 35       	M2=A1.x;
+  e6:	3b 35       	M3=A1.w;
+  e8:	00 36       	B0=R0;
+  ea:	48 36       	B1=P0;
+  ec:	56 36       	B2=SP;
+  ee:	5f 36       	B3=FP;
+  f0:	00 37       	B0=A0.x;
+  f2:	09 37       	B1=A0.w;
+  f4:	12 37       	B2=A1.x;
+  f6:	1b 37       	B3=A1.w;
+  f8:	20 36       	L0=R0;
+  fa:	68 36       	L1=P0;
+  fc:	76 36       	L2=SP;
+  fe:	7f 36       	L3=FP;
+ 100:	20 37       	L0=A0.x;
+ 102:	29 37       	L1=A0.w;
+ 104:	32 37       	L2=A1.x;
+ 106:	3b 37       	L3=A1.w;
+ 108:	81 34       	I0=I1;
+ 10a:	8c 34       	I1=M0;
+ 10c:	d1 34       	I2=B1;
+ 10e:	dc 34       	I3=L0;
+ 110:	a1 34       	M0=I1;
+ 112:	ac 34       	M1=M0;
+ 114:	f1 34       	M2=B1;
+ 116:	fc 34       	M3=L0;
+ 118:	81 36       	B0=I1;
+ 11a:	8c 36       	B1=M0;
+ 11c:	d1 36       	B2=B1;
+ 11e:	dc 36       	B3=L0;
+ 120:	a1 36       	L0=I1;
+ 122:	ac 36       	L1=M0;
+ 124:	f1 36       	L2=B1;
+ 126:	fc 36       	L3=L0;
+ 128:	c8 31       	R1=USP;
+ 12a:	d0 33       	P2=USP;
+ 12c:	f0 33       	SP=USP;
+ 12e:	f8 33       	FP=USP;
+ 130:	c0 39       	A0.x=USP;
+ 132:	d8 39       	A1.w=USP;
+ 134:	02 3e       	USP=R2;
+ 136:	44 3e       	USP=P4;
+ 138:	46 3e       	USP=SP;
+ 13a:	47 3e       	USP=FP;
+ 13c:	00 3f       	USP=A0.x;
+ 13e:	03 3f       	USP=A1.w;
+ 140:	06 31       	R0=ASTAT;
+ 142:	c9 31       	R1=SEQSTAT;
+ 144:	d2 31       	R2=SYSCFG;
+ 146:	db 31       	R3=RETI;
+ 148:	e4 31       	R4=RETX;
+ 14a:	ed 31       	R5=RETN;
+ 14c:	f6 31       	R6=RETE;
+ 14e:	3f 31       	R7=RETS;
+ 150:	80 31       	R0=LC0;
+ 152:	8b 31       	R1=LC1;
+ 154:	91 31       	R2=LT0;
+ 156:	9c 31       	R3=LT1;
+ 158:	a2 31       	R4=LB0;
+ 15a:	ad 31       	R5=LB1;
+ 15c:	b6 31       	R6=CYCLES;
+ 15e:	bf 31       	R7=CYCLES2;
+ 160:	30 38       	ASTAT=R0;
+ 162:	09 3e       	SEQSTAT=R1;
+ 164:	13 3e       	SYSCFG=R3;
+ 166:	1c 3e       	RETI=R4;
+ 168:	25 3e       	RETX=R5;
+ 16a:	2e 3e       	RETN=R6;
+ 16c:	37 3e       	RETE=R7;
+ 16e:	38 38       	RETS=R0;
+ 170:	01 3c       	LC0=R1;
+ 172:	1a 3c       	LC1=R2;
+ 174:	0b 3c       	LT0=R3;
+ 176:	24 3c       	LT1=R4;
+ 178:	15 3c       	LB0=R5;
+ 17a:	2e 3c       	LB1=R6;
+ 17c:	37 3c       	CYCLES=R7;
+ 17e:	38 3c       	CYCLES2=R0;
+ 180:	70 38       	ASTAT=P0;
+ 182:	49 3e       	SEQSTAT=P1;
+ 184:	53 3e       	SYSCFG=P3;
+ 186:	5c 3e       	RETI=P4;
+ 188:	65 3e       	RETX=P5;
+ 18a:	6e 3e       	RETN=SP;
+ 18c:	77 3e       	RETE=FP;
+ 18e:	78 38       	RETS=P0;
+ 190:	41 3c       	LC0=P1;
+ 192:	5a 3c       	LC1=P2;
+ 194:	4b 3c       	LT0=P3;
+ 196:	64 3c       	LT1=P4;
+ 198:	55 3c       	LB0=P5;
+ 19a:	6e 3c       	LB1=SP;
+ 19c:	76 3c       	CYCLES=SP;
+ 19e:	78 3c       	CYCLES2=P0;
+ 1a0:	08 c4 [0|3][0|f] c0 	A0=A1;
+ 1a4:	08 c4 [0|3][0|f] e0 	A1=A0;
+ 1a8:	09 c4 00 20 	A0=R0;
+ 1ac:	09 c4 08 20 	A0=R1;
+ 1b0:	09 c4 10 20 	A0=R2;
+ 1b4:	09 c4 00 a0 	A1=R0;
+ 1b8:	09 c4 08 a0 	A1=R1;
+ 1bc:	09 c4 10 a0 	A1=R2;
+ 1c0:	0b c0 00 38 	R0 = A0;
+ 1c4:	8b c0 80 38 	R2 = A0 \(FU\);
+ 1c8:	2b c1 00 39 	R4 = A0 \(ISS2\);
+ 1cc:	0f c0 00 18 	R1 = A1;
+ 1d0:	8f c0 80 18 	R3 = A1 \(FU\);
+ 1d4:	2f c1 00 19 	R5 = A1 \(ISS2\);
+ 1d8:	0f c0 00 38 	R1 = A1, R0 = A0;
+ 1dc:	8f c0 00 38 	R1 = A1, R0 = A0 \(FU\);
+ 1e0:	2f c1 80 39 	R7 = A1, R6 = A0 \(ISS2\);
+ 1e4:	0f c0 00 38 	R1 = A1, R0 = A0;
+ 1e8:	8f c0 80 38 	R3 = A1, R2 = A0 \(FU\);
+ 1ec:	2f c1 00 39 	R5 = A1, R4 = A0 \(ISS2\);
+ 1f0:	18 07       	IF CC R3 = R0;
+ 1f2:	10 07       	IF CC R2 = R0;
+ 1f4:	38 07       	IF CC R7 = R0;
+ 1f6:	52 07       	IF CC R2 = P2;
+ 1f8:	61 07       	IF CC R4 = P1;
+ 1fa:	40 07       	IF CC R0 = P0;
+ 1fc:	7c 07       	IF CC R7 = P4;
+ 1fe:	c2 07       	IF CC P0 = P2;
+ 200:	e5 07       	IF CC P4 = P5;
+ 202:	cb 07       	IF CC P1 = P3;
+ 204:	ec 07       	IF CC P5 = P4;
+ 206:	82 07       	IF CC P0 = R2;
+ 208:	a3 07       	IF CC P4 = R3;
+ 20a:	af 07       	IF CC P5 = R7;
+ 20c:	96 07       	IF CC P2 = R6;
+ 20e:	18 06       	IF ! CC R3 = R0;
+ 210:	10 06       	IF ! CC R2 = R0;
+ 212:	38 06       	IF ! CC R7 = R0;
+ 214:	52 06       	IF ! CC R2 = P2;
+ 216:	61 06       	IF ! CC R4 = P1;
+ 218:	40 06       	IF ! CC R0 = P0;
+ 21a:	7c 06       	IF ! CC R7 = P4;
+ 21c:	c2 06       	IF ! CC P0 = P2;
+ 21e:	e5 06       	IF ! CC P4 = P5;
+ 220:	cb 06       	IF ! CC P1 = P3;
+ 222:	ec 06       	IF ! CC P5 = P4;
+ 224:	82 06       	IF ! CC P0 = R2;
+ 226:	a3 06       	IF ! CC P4 = R3;
+ 228:	af 06       	IF ! CC P5 = R7;
+ 22a:	96 06       	IF ! CC P2 = R6;
+ 22c:	c0 42       	R0=R0.L\(Z\);
+ 22e:	ca 42       	R2=R1.L\(Z\);
+ 230:	d1 42       	R1=R2.L\(Z\);
+ 232:	f7 42       	R7=R6.L\(Z\);
+ 234:	80 42       	R0=R0.L\(X\);
+ 236:	8a 42       	R2=R1.L\(X\);
+ 238:	91 42       	R1=R2.L\(X\);
+ 23a:	b7 42       	R7=R6.L\(X\);
+ 23c:	c0 42       	R0=R0.L\(Z\);
+ 23e:	ca 42       	R2=R1.L\(Z\);
+ 240:	d1 42       	R1=R2.L\(Z\);
+ 242:	f7 42       	R7=R6.L\(Z\);
+ 244:	09 c4 00 40 	A0.x=R0.L;
+ 248:	09 c4 08 40 	A0.x=R1.L;
+ 24c:	09 c4 00 c0 	A1.x=R0.L;
+ 250:	09 c4 08 c0 	A1.x=R1.L;
+ 254:	0a c4 [0|3][0|6] 00 	R0.L=A0.x;
+ 258:	0a c4 [0|3][0|6] 02 	R1.L=A0.x;
+ 25c:	0a c4 [0|3][0|6] 0e 	R7.L=A0.x;
+ 260:	0a c4 [0|3][0|6] 40 	R0.L=A1.x;
+ 264:	0a c4 [0|3][0|6] 42 	R1.L=A1.x;
+ 268:	0a c4 [0|3][0|6] 4e 	R7.L=A1.x;
+ 26c:	09 c4 00 00 	A0.L=R0.L;
+ 270:	09 c4 08 00 	A0.L=R1.L;
+ 274:	09 c4 30 00 	A0.L=R6.L;
+ 278:	09 c4 00 80 	A1.L=R0.L;
+ 27c:	09 c4 08 80 	A1.L=R1.L;
+ 280:	09 c4 30 80 	A1.L=R6.L;
+ 284:	29 c4 00 00 	A0.H=R0.H;
+ 288:	29 c4 08 00 	A0.H=R1.H;
+ 28c:	29 c4 30 00 	A0.H=R6.H;
+ 290:	29 c4 00 80 	A1.H=R0.H;
+ 294:	29 c4 08 80 	A1.H=R1.H;
+ 298:	29 c4 30 80 	A1.H=R6.H;
+ 29c:	03 c0 00 38 	R0.L = A0;
+ 2a0:	03 c0 40 38 	R1.L = A0;
+ 2a4:	83 c0 00 38 	R0.L = A0 \(FU\);
+ 2a8:	83 c0 40 38 	R1.L = A0 \(FU\);
+ 2ac:	03 c1 00 38 	R0.L = A0 \(IS\);
+ 2b0:	03 c1 40 38 	R1.L = A0 \(IS\);
+ 2b4:	83 c1 00 38 	R0.L = A0 \(IU\);
+ 2b8:	83 c1 40 38 	R1.L = A0 \(IU\);
+ 2bc:	43 c0 00 38 	R0.L = A0 \(T\);
+ 2c0:	43 c0 40 38 	R1.L = A0 \(T\);
+ 2c4:	23 c0 00 38 	R0.L = A0 \(S2RND\);
+ 2c8:	23 c0 40 38 	R1.L = A0 \(S2RND\);
+ 2cc:	23 c1 00 38 	R0.L = A0 \(ISS2\);
+ 2d0:	23 c1 40 38 	R1.L = A0 \(ISS2\);
+ 2d4:	63 c1 00 38 	R0.L = A0 \(IH\);
+ 2d8:	63 c1 40 38 	R1.L = A0 \(IH\);
+ 2dc:	07 c0 00 18 	R0.H = A1;
+ 2e0:	07 c0 40 18 	R1.H = A1;
+ 2e4:	87 c0 00 18 	R0.H = A1 \(FU\);
+ 2e8:	87 c0 40 18 	R1.H = A1 \(FU\);
+ 2ec:	07 c1 00 18 	R0.H = A1 \(IS\);
+ 2f0:	07 c1 40 18 	R1.H = A1 \(IS\);
+ 2f4:	87 c1 00 18 	R0.H = A1 \(IU\);
+ 2f8:	87 c1 40 18 	R1.H = A1 \(IU\);
+ 2fc:	47 c0 00 18 	R0.H = A1 \(T\);
+ 300:	47 c0 40 18 	R1.H = A1 \(T\);
+ 304:	27 c0 00 18 	R0.H = A1 \(S2RND\);
+ 308:	27 c0 40 18 	R1.H = A1 \(S2RND\);
+ 30c:	27 c1 00 18 	R0.H = A1 \(ISS2\);
+ 310:	27 c1 40 18 	R1.H = A1 \(ISS2\);
+ 314:	67 c1 00 18 	R0.H = A1 \(IH\);
+ 318:	67 c1 40 18 	R1.H = A1 \(IH\);
+ 31c:	07 c0 00 38 	R0.H = A1, R0.L = A0;
+ 320:	07 c0 40 38 	R1.H = A1, R1.L = A0;
+ 324:	87 c0 00 38 	R0.H = A1, R0.L = A0 \(FU\);
+ 328:	87 c0 40 38 	R1.H = A1, R1.L = A0 \(FU\);
+ 32c:	07 c1 00 38 	R0.H = A1, R0.L = A0 \(IS\);
+ 330:	07 c1 40 38 	R1.H = A1, R1.L = A0 \(IS\);
+ 334:	87 c1 00 38 	R0.H = A1, R0.L = A0 \(IU\);
+ 338:	87 c1 40 38 	R1.H = A1, R1.L = A0 \(IU\);
+ 33c:	47 c0 00 38 	R0.H = A1, R0.L = A0 \(T\);
+ 340:	47 c0 40 38 	R1.H = A1, R1.L = A0 \(T\);
+ 344:	27 c0 00 38 	R0.H = A1, R0.L = A0 \(S2RND\);
+ 348:	27 c0 40 38 	R1.H = A1, R1.L = A0 \(S2RND\);
+ 34c:	27 c1 00 38 	R0.H = A1, R0.L = A0 \(ISS2\);
+ 350:	27 c1 40 38 	R1.H = A1, R1.L = A0 \(ISS2\);
+ 354:	67 c1 00 38 	R0.H = A1, R0.L = A0 \(IH\);
+ 358:	67 c1 40 38 	R1.H = A1, R1.L = A0 \(IH\);
+ 35c:	07 c0 00 38 	R0.H = A1, R0.L = A0;
+ 360:	07 c0 40 38 	R1.H = A1, R1.L = A0;
+ 364:	87 c0 00 38 	R0.H = A1, R0.L = A0 \(FU\);
+ 368:	87 c0 40 38 	R1.H = A1, R1.L = A0 \(FU\);
+ 36c:	07 c1 00 38 	R0.H = A1, R0.L = A0 \(IS\);
+ 370:	07 c1 40 38 	R1.H = A1, R1.L = A0 \(IS\);
+ 374:	87 c1 00 38 	R0.H = A1, R0.L = A0 \(IU\);
+ 378:	87 c1 40 38 	R1.H = A1, R1.L = A0 \(IU\);
+ 37c:	47 c0 00 38 	R0.H = A1, R0.L = A0 \(T\);
+ 380:	47 c0 40 38 	R1.H = A1, R1.L = A0 \(T\);
+ 384:	27 c0 00 38 	R0.H = A1, R0.L = A0 \(S2RND\);
+ 388:	27 c0 40 38 	R1.H = A1, R1.L = A0 \(S2RND\);
+ 38c:	27 c1 00 38 	R0.H = A1, R0.L = A0 \(ISS2\);
+ 390:	27 c1 40 38 	R1.H = A1, R1.L = A0 \(ISS2\);
+ 394:	67 c1 00 38 	R0.H = A1, R0.L = A0 \(IH\);
+ 398:	67 c1 40 38 	R1.H = A1, R1.L = A0 \(IH\);
+ 39c:	48 43       	R0=R1.B\(Z\);
+ 39e:	50 43       	R0=R2.B\(Z\);
+ 3a0:	4f 43       	R7=R1.B\(Z\);
+ 3a2:	57 43       	R7=R2.B\(Z\);
+ 3a4:	08 43       	R0=R1.B\(X\);
+ 3a6:	10 43       	R0=R2.B\(X\);
+ 3a8:	0f 43       	R7=R1.B\(X\);
+ 3aa:	17 43       	R7=R2.B\(X\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/move2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/move2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/move2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,530 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//4 MOVE
+//
+
+//genreg = genreg ; /* (a) */
+R0 = R0;
+R1 = R1;
+R2 = R2;
+R3 = R3;
+R4 = R4;
+R5 = R5;
+R6 = R6;
+R7 = R7;
+	   
+P0 = P0;
+P1 = P1;
+P2 = P2;
+P3 = P3;
+P4 = P4;
+P5 = P5;
+SP = SP;
+FP = FP;
+
+A0.X = A0.X;
+A0.W = A0.W;
+A1.X = A1.X;
+A1.W = A1.W;
+
+
+R0 = A1.W;
+R1 = A1.X;
+R2 = A0.W;
+R3 = A0.X;
+R4 = FP;
+R5 = SP;
+R6 = P5;
+R7 = P4;
+	   
+P0 = P3;
+P1 = P2;
+P2 = P1;
+P3 = P0;
+P4 = R7;
+P5 = R6;
+SP = R5;
+FP = R4;
+
+A0.X = R3;
+A0.W = R2;
+A1.X = R1;
+A1.W = R0;
+
+A0.X = A0.W;
+A0.X = A1.W;
+A0.X = A1.X;
+
+A1.X = A1.W;
+A1.X = A0.W;
+A1.X = A0.X;
+
+A0.W = A0.W;
+A0.W = A1.W;
+A0.W = A1.X;
+
+A1.W = A1.W;
+A1.W = A0.W;
+A1.W = A0.X;
+
+//genreg = dagreg ; /* (a) */
+R0 = I0;
+R1 = I1;
+R2 = I2;
+R3 = I3;
+R4 = M0;
+R5 = M1;
+R6 = M2;
+R7 = M3;
+	   
+R0 = B0;
+R1 = B1;
+R2 = B2;
+R3 = B3;
+R4 = L0;
+R5 = L1;
+R6 = L2;
+R7 = L3;
+
+P0 = I0;
+P1 = I1;
+P2 = I2;
+P3 = I3;
+P4 = M0;
+P5 = M1;
+SP = M2;
+FP = M3;
+	   
+P0 = B0;
+P1 = B1;
+P2 = B2;
+P3 = B3;
+P4 = L0;
+P5 = L1;
+SP = L2;
+FP = L3;
+
+
+A0.X = I0;
+A0.W = I1;
+A1.X = I2;
+A1.W = I3;
+
+A0.X = M0;
+A0.W = M1;
+A1.X = M2;
+A1.W = M3;
+
+A0.X = B0;
+A0.W = B1;
+A1.X = B2;
+A1.W = B3;
+
+A0.X = L0;
+A0.W = L1;
+A1.X = L2;
+A1.W = L3;
+
+//dagreg = genreg ; /* (a) */
+I0 = R0;
+I1 = P0;
+I2 = SP;
+I3 = FP;
+I0 = A0.X;
+I1 = A0.W;
+I2 = A1.X;
+I3 = A1.W;
+
+M0 = R0;
+M1 = P0;
+M2 = SP;
+M3 = FP;
+M0 = A0.X;
+M1 = A0.W;
+M2 = A1.X;
+M3 = A1.W;
+
+B0 = R0;
+B1 = P0;
+B2 = SP;
+B3 = FP;
+B0 = A0.X;
+B1 = A0.W;
+B2 = A1.X;
+B3 = A1.W;
+
+L0 = R0;
+L1 = P0;
+L2 = SP;
+L3 = FP;
+L0 = A0.X;
+L1 = A0.W;
+L2 = A1.X;
+L3 = A1.W;
+
+
+//dagreg = dagreg ; /* (a) */
+
+I0 = I1;
+I1 = M0;
+I2 = B1;
+I3 = L0;
+
+M0 = I1;
+M1 = M0;
+M2 = B1;
+M3 = L0;
+
+B0 = I1;
+B1 = M0;
+B2 = B1;
+B3 = L0;
+
+L0 = I1;
+L1 = M0;
+L2 = B1;
+L3 = L0;
+
+//genreg = USP ; /* (a)*/
+R1 = USP;
+P2 = USP;
+SP = USP;
+FP = USP;
+A0.X = USP;
+A1.W = USP;
+
+//USP = genreg ; /* (a)*/
+USP = R2;
+USP = P4;
+USP = SP;
+USP = FP;
+USP = A0.X;
+USP = A1.W;
+
+//Dreg = sysreg ; /* sysreg to 32-bit D-register (a) */
+R0 = ASTAT;
+R1 = SEQSTAT;
+R2 = SYSCFG;
+R3 = RETI;
+R4 = RETX;
+R5 = RETN;
+R6 = RETE;
+R7 = RETS;
+R0 = LC0;
+R1 = LC1;
+R2 = LT0;
+R3 = LT1;
+R4 = LB0;
+R5 = LB1;
+R6 = CYCLES;
+R7 = CYCLES2;
+//R0 = EMUDAT; 
+//sysreg = Dreg ; /* 32-bit D-register to sysreg (a) */
+ASTAT = R0;
+SEQSTAT = R1;
+SYSCFG = R3;
+RETI = R4;
+RETX =R5;
+RETN = R6;
+RETE = R7;
+RETS = R0;
+LC0 = R1;
+LC1 = R2;
+LT0 = R3;
+LT1 = R4;
+LB0 = R5;
+LB1 = R6;
+CYCLES = R7;
+CYCLES2 = R0;
+//EMUDAT = R1; 
+//sysreg = Preg ; /* 32-bit P-register to sysreg (a) */
+ASTAT = P0;
+SEQSTAT = P1;
+SYSCFG = P3;
+RETI = P4;
+RETX =P5;
+RETN = SP;
+RETE = FP;
+RETS = P0;
+LC0 = P1;
+LC1 = P2;
+LT0 = P3;
+LT1 = P4;
+LB0 = P5;
+LB1 = SP;
+CYCLES = SP;
+CYCLES2 = P0;
+//EMUDAT = P1; 
+
+
+//sysreg = USP ; /* (a) */
+//ASTAT = USP;
+//SEQSTAT = USP;
+//SYSCFG = USP;
+//RETI = USP;
+//RETX =USP;
+//RETN = USP;
+//RETE = USP;
+//RETS = USP;
+//LC0 = USP;
+//LC1 = USP;
+//LT0 = USP;
+//LT1 = USP;
+//LB0 = USP;
+//LB1 = USP;
+//CYCLES = USP;
+//CYCLES2 = USP;
+//EMUDAT = USP; 
+
+A0 = A1 ; /* move 40-bit Accumulator value (b) */
+
+A1 = A0 ; /* move 40-bit Accumulator value (b) */
+
+//A0 = Dreg ; /* 32-bit D-register to 40-bit A0, sign extended (b)*/
+A0 = R0;
+A0 = R1;
+A0 = R2;
+
+//A1 = Dreg ; /* 32-bit D-register to 40-bit A1, sign extended (b)*/
+
+A1 = R0;
+A1 = R1;
+A1 = R2;
+//Dreg_even = A0 (opt_mode) ; /* move 32-bit A0.W to even Dreg (b) */
+R0 = A0;
+R2 = A0(FU);
+R4 = A0(ISS2);
+
+//Dreg_odd = A1 (opt_mode) ; /* move 32-bit A1.W to odd Dreg (b) */
+R1 = A1;
+R3 = A1(FU);
+R5 = A1(ISS2);
+
+//Dreg_even = A0, Dreg_odd = A1 (opt_mode) ; /* move both Accumulators to a register pair (b) */
+R0 = A0, R1 = A1;
+R0 = A0, R1 = A1(FU);
+R6 = A0, R7 = A1(ISS2);
+
+
+//Dreg_odd = A1, Dreg_even = A0 (opt_mode) ; /* move both Accumulators to a register pair (b) */
+R1 = A1, R0 = A0;
+R3 = A1, R2 = A0(FU);
+R5 = A1, R4 = A0(ISS2);
+
+//IF CC DPreg = DPreg ; /* move if CC = 1 (a) */
+
+IF CC R3 = R0;
+IF CC R2 = R0;
+IF CC R7 = R0;
+
+IF CC R2 = P2;
+IF CC R4 = P1;
+IF CC R0 = P0;
+IF CC R7 = P4;
+
+IF CC P0 = P2;
+IF CC P4 = P5;
+IF CC P1 = P3;
+IF CC P5 = P4;
+
+IF CC P0 = R2;
+IF CC P4 = R3;
+IF CC P5 = R7;
+IF CC P2 = R6;
+
+//IF ! CC DPreg = DPreg ; /* move if CC = 0 (a) */
+IF !CC R3 = R0;
+IF !CC R2 = R0;
+IF !CC R7 = R0;
+
+IF !CC R2 = P2;
+IF !CC R4 = P1;
+IF !CC R0 = P0;
+IF !CC R7 = P4;
+
+IF !CC P0 = P2;
+IF !CC P4 = P5;
+IF !CC P1 = P3;
+IF !CC P5 = P4;
+
+IF !CC P0 = R2;
+IF !CC P4 = R3;
+IF !CC P5 = R7;
+IF !CC P2 = R6;
+
+//Dreg = Dreg_lo (Z) ; /* (a) */
+
+R0 = R0.L(Z);
+R2 = R1.L(Z);
+R1 = R2.L(Z);
+R7 = R6.L(Z);
+
+//Dreg = Dreg_lo (X) ; /* (a)*/
+R0 = R0.L(X);
+R2 = R1.L(X);
+R1 = R2.L(X);
+R7 = R6.L(X);
+
+R0 = R0.L;
+R2 = R1.L;
+R1 = R2.L;
+R7 = R6.L;
+
+//A0.X = Dreg_lo ; /* least significant 8 bits of Dreg into A0.X (b) */
+A0.X = R0.L;
+A0.X = R1.L;
+
+//A1.X = Dreg_lo ; /* least significant 8 bits of Dreg into A1.X (b) */
+A1.X = R0.L;
+A1.X = R1.L;
+
+//Dreg_lo = A0.X ; /* 8-bit A0.X, sign-extended, into least significant 16 bits of Dreg (b) */
+R0.L = A0.X;
+R1.L = A0.X;
+R7.L = A0.X;
+
+//Dreg_lo = A1.X ; /* 8-bit A1.X, sign-extended, into least significant 16 bits of Dreg (b) */
+R0.L = A1.X;
+R1.L = A1.X;
+R7.L = A1.X;
+
+//A0.L = Dreg_lo ; /* least significant 16 bits of Dreg into least significant 16 bits of A0.W (b) */
+A0.L = R0.L;
+A0.L = R1.L;
+A0.L = R6.L;
+
+//A1.L = Dreg_lo ; /* least significant 16 bits of Dreg into least significant 16 bits of A1.W (b) */
+A1.L = R0.L;
+A1.L = R1.L;
+A1.L = R6.L;
+
+//A0.H = Dreg_hi ; /* most significant 16 bits of Dreg into most significant 16 bits of A0.W (b) */
+A0.H = R0.H;
+A0.H = R1.H;
+A0.H = R6.H;
+//A1.H = Dreg_hi ; /* most significant 16 bits of Dreg into most significant 16 bits of A1.W (b) */
+A1.H = R0.H;
+A1.H = R1.H;
+A1.H = R6.H;
+
+//Dreg_lo = A0 (opt_mode) ; /* move A0 to lower half of Dreg (b) */
+R0.L = A0;
+R1.L = A0;
+
+R0.L = A0(FU);
+R1.L = A0(FU);
+
+R0.L = A0(IS);
+R1.L = A0(IS);
+
+R0.L = A0(IU);
+R1.L = A0(IU);
+
+R0.L = A0(T);
+R1.L = A0(T);
+
+R0.L = A0(S2RND);
+R1.L = A0(S2RND);
+
+R0.L = A0(ISS2);
+R1.L = A0(ISS2);
+
+R0.L = A0(IH);
+R1.L = A0(IH);
+
+//Dreg_hi = A1 (opt_mode) ; /* move A1 to upper half of Dreg (b) */
+R0.H = A1;
+R1.H = A1;
+
+R0.H = A1(FU);
+R1.H = A1(FU);
+
+R0.H = A1(IS);
+R1.H = A1(IS);
+
+R0.H = A1(IU);
+R1.H = A1(IU);
+
+R0.H = A1(T);
+R1.H = A1(T);
+
+R0.H = A1(S2RND);
+R1.H = A1(S2RND);
+
+R0.H = A1(ISS2);
+R1.H = A1(ISS2);
+
+R0.H = A1(IH);
+R1.H = A1(IH);
+
+
+//Dreg_lo = A0, Dreg_hi = A1 (opt_mode) ; /* move both values at once; must go to the lower and upper halves of the same Dreg (b)*/
+
+R0.L = A0, R0.H = A1; 
+R1.L = A0, R1.H = A1; 
+
+R0.L = A0, R0.H = A1(FU); 
+R1.L = A0, R1.H = A1(FU);
+ 
+R0.L = A0, R0.H = A1(IS); 
+R1.L = A0, R1.H = A1(IS);
+ 
+R0.L = A0, R0.H = A1(IU); 
+R1.L = A0, R1.H = A1(IU);
+ 
+R0.L = A0, R0.H = A1(T); 
+R1.L = A0, R1.H = A1(T);
+ 
+R0.L = A0, R0.H = A1(S2RND); 
+R1.L = A0, R1.H = A1(S2RND);
+ 
+R0.L = A0, R0.H = A1(ISS2); 
+R1.L = A0, R1.H = A1(ISS2);
+
+R0.L = A0, R0.H = A1(IH); 
+R1.L = A0, R1.H = A1(IH);
+ 
+//Dreg_hi = A1, Dreg_lo = AO (opt_mode) ; /* move both values at once; must go to the upper and lower halves of the same Dreg (b) */
+
+R0.H = A1,R0.L = A0;  
+R1.H = A1,R1.L = A0;  
+		            
+R0.H = A1,R0.L = A0 (FU); 
+R1.H = A1,R1.L = A0 (FU);
+		            
+R0.H = A1,R0.L = A0 (IS); 
+R1.H = A1,R1.L = A0 (IS);
+		            
+R0.H = A1,R0.L = A0 (IU); 
+R1.H = A1,R1.L = A0 (IU);
+		            
+R0.H = A1,R0.L = A0 (T); 
+R1.H = A1,R1.L = A0 (T);
+		            
+R0.H = A1,R0.L = A0 (S2RND); 
+R1.H = A1,R1.L = A0 (S2RND);
+		            
+R0.H = A1,R0.L = A0 (ISS2); 
+R1.H = A1,R1.L = A0 (ISS2);
+		            
+R0.H = A1,R0.L = A0 (IH); 
+R1.H = A1,R1.L = A0 (IH);
+		            
+//Dreg = Dreg_byte (Z) ; /* (a)*/
+
+R0 = R1.B(Z);
+R0 = R2.B(Z);
+
+R7 = R1.B(Z);
+R7 = R2.B(Z);
+
+//Dreg = Dreg_byte (X) ; /* (a) */
+R0 = R1.B(X);
+R0 = R2.B(X);
+
+R7 = R1.B(X);
+R7 = R2.B(X);
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,226 @@
+#objdump: -d
+#name: parallel
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	0a ce 13 8a 	R5=DEPOSIT\(R3,R2\) \|\| I0\+=2 \|\| NOP;
+   4:	60 9f 00 00 
+   8:	0a ce 37 c0 	R0=DEPOSIT\(R7,R6\)\(X\) \|\| I1\+=4 \|\| NOP;
+   c:	69 9f 00 00 
+  10:	0a ce 0a 08 	R4=EXTRACT\(R2,R1.L\) \(Z\) \|\| I2-=M0 \|\| NOP;
+  14:	72 9e 00 00 
+  18:	0a ce 10 04 	R2=EXTRACT\(R0,R2.L\) \(Z\) \|\| I3\+=M1 \|\| NOP;
+  1c:	67 9e 00 00 
+  20:	0a ce 23 4e 	R7=EXTRACT\(R3,R4.L\)\(X\) \|\| I3\+=M1\(BREV\) \|\| NOP;
+  24:	e7 9e 00 00 
+  28:	0a ce 0e 4a 	R5=EXTRACT\(R6,R1.L\)\(X\) \|\| I0-=2 \|\| NOP;
+  2c:	64 9f 00 00 
+  30:	08 ce 08 00 	BITMUX \(R1,R0,A0 \)\(ASR\) \|\| I1-=4 \|\| NOP;
+  34:	6d 9f 00 00 
+  38:	08 ce 13 00 	BITMUX \(R2,R3,A0 \)\(ASR\) \|\| I0\+=2 \|\| NOP;
+  3c:	60 9f 00 00 
+  40:	08 ce 25 40 	BITMUX \(R4,R5,A0 \)\(ASL\) \|\| SP=\[P0\] \|\| NOP;
+  44:	46 91 00 00 
+  48:	08 ce 3e 40 	BITMUX \(R7,R6,A0 \)\(ASL\) \|\| FP=\[P1\+\+\] \|\| NOP;
+  4c:	4f 90 00 00 
+  50:	06 ce 00 ca 	R5.L=ONES R0 \|\| P0=\[FP--\] \|\| NOP;
+  54:	f8 90 00 00 
+  58:	06 ce 02 ce 	R7.L=ONES R2 \|\| P1=\[P5\+0x18\] \|\| NOP;
+  5c:	a9 ad 00 00 
+  60:	10 cc 00 00 	A0= ABS A0 \|\| P2=\[SP\+0x3c\] \|\| R0=\[I0\];
+  64:	f2 af 00 9d 
+  68:	10 cc 00 40 	A0= ABS A1 \|\| P3=\[FP-60\] \|\| R1=\[I1\+\+M0\];
+  6c:	1b b9 89 9d 
+  70:	30 cc 00 00 	A1= ABS A0 \|\| P4=\[FP-4\] \|\| R2=\[I1\+\+\];
+  74:	fc b9 0a 9c 
+  78:	30 cc 00 40 	A1= ABS A1 \|\| FP=\[SP\] \|\| R3=\[I2--\];
+  7c:	77 91 93 9c 
+  80:	10 cc 00 c0 	A1= ABS A0,A0= ABS A0 \|\| R4=\[P5\+0x38\] \|\| R0.H=W\[I0\];
+  84:	ac a3 40 9d 
+  88:	07 cc 10 80 	R0= ABS R2 \|\| B\[SP\]=R0 \|\| R1.H=W\[I1\+\+\];
+  8c:	30 9b 49 9c 
+  90:	02 cc 10 a8 	R4.L=R2.H\+R0.L \(S\) \|\| B\[FP\]=R0 \|\| R2.H=W\[I2--\];
+  94:	38 9b d2 9c 
+  98:	22 cc 09 aa 	R5.H=R1.H\+R1.L \(S\) \|\| B\[P0\]=R0 \|\| R3.L=W\[I3\];
+  9c:	00 9b 3b 9d 
+  a0:	02 cc 35 0c 	R6.L=R6.L\+R5.L \(NS\) \|\| B\[P1\]=R0 \|\| R4.L=W\[I3\+\+\];
+  a4:	08 9b 3c 9c 
+  a8:	05 cc 01 98 	R4.L=R0\+R1\(RND20\) \|\| B\[P2\]=R0 \|\| R5.L=W\[I2--\];
+  ac:	10 9b b5 9c 
+  b0:	25 cc 28 96 	R3.H=R5\+R0\(RND20\) \|\| R0=B\[P0\]\(X\) \|\| \[I0\]=R6;
+  b4:	40 99 06 9f 
+  b8:	05 cc 3d d2 	R1.L=R7-R5\(RND20\) \|\| R0=B\[P4\] \(Z\) \|\| \[I1\+\+\]=R7;
+  bc:	20 99 0f 9e 
+  c0:	05 cc 01 04 	R2.L=R0\+R1\(RND12\) \|\| R1=B\[SP\]\(X\) \|\| \[I2--\]=R7;
+  c4:	71 99 97 9e 
+  c8:	25 cc 3e 0e 	R7.H=R7\+R6\(RND12\) \|\| R1=B\[P0\]\(X\) \|\| \[I3\+\+M1\]=R6;
+  cc:	41 99 be 9f 
+  d0:	05 cc 1a 4a 	R5.L=R3-R2\(RND12\) \|\| R1=B\[P1\] \(Z\) \|\| W\[I3\]=R5.H;
+  d4:	09 99 5d 9f 
+  d8:	25 cc 0a 44 	R2.H=R1-R2\(RND12\) \|\| R1=B\[P2\] \(Z\) \|\| W\[I2\+\+\]=R4.H;
+  dc:	11 99 54 9e 
+  e0:	07 ce 25 0c 	R6.L=EXPADJ \(R5,R4.L\) \|\| R1=B\[P3\] \(Z\) \|\| W\[I1--\]=R3.H;
+  e4:	19 99 cb 9e 
+  e8:	07 ce 08 ca 	R5.L=EXPADJ \(R0.H,R1.L\) \|\| R1=B\[P4\] \(Z\) \|\| W\[I0\]=R2.L;
+  ec:	21 99 22 9f 
+  f0:	07 ce 2b 48 	R4.L=EXPADJ \(R3,R5.L\) \(V\) \|\| R1=B\[P5\] \(Z\) \|\| W\[I0\+\+\]=R1.L;
+  f4:	29 99 21 9e 
+  f8:	07 cc 2a 0c 	R6=MAX\(R5,R2\) \|\| R2=B\[P0\]\(X\) \|\| W\[I1--\]=R0.L;
+  fc:	42 99 a8 9e 
+ 100:	07 cc 0b 00 	R0=MAX\(R1,R3\) \|\| B\[P1\]=R2 \|\| NOP;
+ 104:	0a 9b 00 00 
+ 108:	07 cc 13 4a 	R5=MIN\(R2,R3\) \|\| B\[P2\]=R2 \|\| R0=\[I1\+\+\];
+ 10c:	12 9b 08 9c 
+ 110:	07 cc 38 48 	R4=MIN\(R7,R0\) \|\| B\[P3\]=R2 \|\| R1=\[I1\+\+\];
+ 114:	1a 9b 09 9c 
+ 118:	0b cc 00 c0 	A0-=A1 \|\| B\[P4\]=R2 \|\| R2=\[I1\+\+\];
+ 11c:	22 9b 0a 9c 
+ 120:	0b cc 00 e0 	A0-=A1\(W32\) \|\| B\[P5\]=R2 \|\| R3=\[I1\+\+\];
+ 124:	2a 9b 0b 9c 
+ 128:	0b cc 00 80 	A0\+=A1 \|\| B\[SP\]=R2 \|\| R4=\[I1\+\+\];
+ 12c:	32 9b 0c 9c 
+ 130:	0b cc 00 a0 	A0\+=A1\(W32\) \|\| B\[FP\]=R2 \|\| R5=\[I1\+\+\];
+ 134:	3a 9b 0d 9c 
+ 138:	0b cc 00 0e 	R7=\(A0\+=A1\) \|\| B\[SP\]=R3 \|\| R6=\[I1\+\+\];
+ 13c:	33 9b 0e 9c 
+ 140:	0b cc 00 4c 	R6.L=\(A0\+=A1\) \|\| B\[FP\]=R3 \|\| R7=\[I1\+\+\];
+ 144:	3b 9b 0f 9c 
+ 148:	2b cc 00 40 	R0.H=\(A0\+=A1\) \|\| B\[P0\]=R3 \|\| R7=\[I0\+\+\];
+ 14c:	03 9b 07 9c 
+ 150:	00 ca 0a 24 	R0 = R1.H \* R2.L \|\| B\[P1\]=R3 \|\| R1=\[I0\+\+\];
+ 154:	0b 9b 01 9c 
+ 158:	20 ca 68 26 	R1 = R5.H \* R0.H \(S2RND\) \|\| B\[P2\]=R3 \|\| R2=\[I0\+\+\];
+ 15c:	13 9b 02 9c 
+ 160:	80 ca db 23 	R7 = R3.L \* R3.H \(FU\) \|\| B\[P3\]=R3 \|\| R3=\[I0\+\+\];
+ 164:	1b 9b 03 9c 
+ 168:	28 cb 15 27 	R4 = R2.H \* R5.H \(ISS2\) \|\| B\[P4\]=R3 \|\| R0=\[I0\+\+\];
+ 16c:	23 9b 00 9c 
+ 170:	08 cb 0b 20 	R0 = R1.L \* R3.L \(IS\) \|\| B\[P5\]=R3 \|\| R5=\[I0\+\+\];
+ 174:	2b 9b 05 9c 
+ 178:	08 ca a8 25 	R6 = R5.H \* R0.L \|\| B\[FP\]=R4 \|\| R7=\[I0\+\+\];
+ 17c:	3c 9b 07 9c 
+ 180:	94 cb be 40 	R2.H = R7.L \* R6.H \(M, IU\) \|\| B\[SP\]=R4 \|\| R6=\[I0\+\+\];
+ 184:	34 9b 06 9c 
+ 188:	04 ca e8 80 	R3.H = R5.H \* R0.L \|\| R4=B\[P0\]\(X\) \|\| \[I0\+\+M0\]=R0;
+ 18c:	44 99 80 9f 
+ 190:	14 ca 09 40 	R0.H = R1.L \* R1.H \(M\) \|\| R4=B\[P1\]\(X\) \|\| \[I0\+\+M0\]=R1;
+ 194:	4c 99 81 9f 
+ 198:	1c cb 3e 80 	R1 = R7.H \* R6.L \(M, IS\) \|\| R4=B\[P2\]\(X\) \|\| \[I0\+\+M0\]=R2;
+ 19c:	54 99 82 9f 
+ 1a0:	0c ca 02 41 	R5 = R0.L \* R2.H \|\| R4=B\[P3\]\(X\) \|\| \[I0\+\+M0\]=R3;
+ 1a4:	5c 99 83 9f 
+ 1a8:	1c ca b0 c0 	R3 = R6.H \* R0.H \(M\) \|\| R4=B\[P4\] \(Z\) \|\| \[I0\+\+M0\]=R4;
+ 1ac:	24 99 84 9f 
+ 1b0:	63 c8 2f 02 	a0 = R5.L \* R7.H \(W32\) \|\| R4=B\[P5\] \(Z\) \|\| \[I0\+\+M0\]=R5;
+ 1b4:	2c 99 85 9f 
+ 1b8:	03 c8 00 04 	a0 = R0.H \* R0.L \|\| R5=B\[P0\]\(X\) \|\| \[I0\+\+M0\]=R6;
+ 1bc:	45 99 86 9f 
+ 1c0:	83 c8 13 0a 	a0 \+= R2.L \* R3.H \(FU\) \|\| R5=B\[P1\] \(Z\) \|\| \[I0\+\+M0\]=R7;
+ 1c4:	0d 99 87 9f 
+ 1c8:	03 c8 21 0c 	a0 \+= R4.H \* R1.L \|\| R5=B\[P2\] \(Z\) \|\| \[I1\+\+M1\]=R7;
+ 1cc:	15 99 af 9f 
+ 1d0:	03 c9 3e 12 	a0 -= R7.L \* R6.H \(IS\) \|\| R5=B\[P3\]\(X\) \|\| \[I1\+\+M1\]=R6;
+ 1d4:	5d 99 ae 9f 
+ 1d8:	03 c8 2a 16 	a0 -= R5.H \* R2.H \|\| R5=B\[P4\] \(Z\) \|\| \[I1\+\+M1\]=R5;
+ 1dc:	25 99 ad 9f 
+ 1e0:	10 c8 08 58 	a1 = R1.L \* R0.H \(M\) \|\| R5=B\[P5\]\(X\) \|\| \[I1\+\+M1\]=R4;
+ 1e4:	6d 99 ac 9f 
+ 1e8:	00 c8 10 98 	a1 = R2.H \* R0.L \|\| R5=B\[SP\] \(Z\) \|\| \[I1\+\+M1\]=R3;
+ 1ec:	35 99 ab 9f 
+ 1f0:	70 c8 3e 98 	a1 = R7.H \* R6.L \(M, W32\) \|\| R5=B\[FP\]\(X\) \|\| \[I1\+\+M1\]=R2;
+ 1f4:	7d 99 aa 9f 
+ 1f8:	81 c8 1a 18 	a1 \+= R3.L \* R2.L \(FU\) \|\| R0.L=W\[I0\] \|\| \[I1\+\+M1\]=R1;
+ 1fc:	20 9d a9 9f 
+ 200:	01 c8 31 98 	a1 \+= R6.H \* R1.L \|\| R1.L=W\[I0\] \|\| \[I1\+\+M1\]=R0;
+ 204:	21 9d a8 9f 
+ 208:	02 c9 03 58 	a1 -= R0.L \* R3.H \(IS\) \|\| R2.L=W\[I0\] \|\| \[I2\+\+M2\]=R0;
+ 20c:	22 9d d0 9f 
+ 210:	02 c8 17 58 	a1 -= R2.L \* R7.H \|\| R3.L=W\[I0\] \|\| \[I2\+\+M2\]=R1;
+ 214:	23 9d d1 9f 
+ 218:	03 c8 f5 25 	R7.L = \(a0 = R6.H \* R5.L\) \|\| R4.L=W\[I0\] \|\| \[I2\+\+M2\]=R2;
+ 21c:	24 9d d2 9f 
+ 220:	c3 c8 0a 24 	R0.L = \(a0 = R1.H \* R2.L\) \(TFU\) \|\| R5.L=W\[I0\] \|\| \[I2\+\+M2\]=R3;
+ 224:	25 9d d3 9f 
+ 228:	03 c8 ac 28 	R2.L = \(a0 \+= R5.L \* R4.L\) \|\| R6.L=W\[I0\] \|\| \[I2\+\+M2\]=R4;
+ 22c:	26 9d d4 9f 
+ 230:	43 c8 fe 2e 	R3.L = \(a0 \+= R7.H \* R6.H\) \(T\) \|\| R7.L=W\[I0\] \|\| \[I2\+\+M2\]=R5;
+ 234:	27 9d d5 9f 
+ 238:	03 c8 1a 36 	R0.L = \(a0 -= R3.H \* R2.H\) \|\| R7.L=W\[I1\+\+\] \|\| \[I2\+\+M2\]=R6;
+ 23c:	2f 9c d6 9f 
+ 240:	63 c9 6c 30 	R1.L = \(a0 -= R5.L \* R4.L\) \(IH\) \|\| R6.L=W\[I1\+\+\] \|\| \[I2\+\+M2\]=R7;
+ 244:	2e 9c d7 9f 
+ 248:	04 c8 48 58 	R1.H = \(a1 = R1.L \* R0.H\) \|\| R2.L=W\[I1\+\+\] \|\| \[I3\+\+M3\]=R7;
+ 24c:	2a 9c ff 9f 
+ 250:	34 c9 83 98 	R2.H = \(a1 = R0.H \* R3.L\) \(M, ISS2\) \|\| R3.L=W\[I1\+\+\] \|\| \[I3\+\+M3\]=R6;
+ 254:	2b 9c fe 9f 
+ 258:	05 c8 bf 59 	R6.H = \(a1 \+= R7.L \* R7.H\) \|\| R4.L=W\[I1\+\+\] \|\| \[I3\+\+M3\]=R5;
+ 25c:	2c 9c fd 9f 
+ 260:	25 c8 d3 19 	R7.H = \(a1 \+= R2.L \* R3.L\) \(S2RND\) \|\| R5.L=W\[I1\+\+\] \|\| \[I3\+\+M3\]=R4;
+ 264:	2d 9c fc 9f 
+ 268:	06 c8 a2 d9 	R6.H = \(a1 -= R4.H \* R2.H\) \|\| R6.L=W\[I1\+\+\] \|\| \[I3\+\+M3\]=R3;
+ 26c:	2e 9c fb 9f 
+ 270:	d6 c8 5f 99 	R5.H = \(a1 -= R3.H \* R7.L\) \(M, TFU\) \|\| R7.L=W\[I1\+\+\] \|\| \[I3\+\+M3\]=R2;
+ 274:	2f 9c fa 9f 
+ 278:	0b c8 0a 20 	R0 = \(a0 = R1.L \* R2.L\) \|\| R1.L=W\[I2--\] \|\| \[I3\+\+M3\]=R1;
+ 27c:	b1 9c f9 9f 
+ 280:	0b c9 8a 20 	R2 = \(a0 = R1.L \* R2.L\) \(IS\) \|\| R1.L=W\[I2--\] \|\| \[I3\+\+M3\]=R0;
+ 284:	b1 9c f8 9f 
+ 288:	0b c8 3e 2d 	R4 = \(a0 \+= R7.H \* R6.L\) \|\| R2.L=W\[I2--\] \|\| R0.H=W\[I0\];
+ 28c:	b2 9c 40 9d 
+ 290:	2b c8 ab 2b 	R6 = \(a0 \+= R5.L \* R3.H\) \(S2RND\) \|\| R3.L=W\[I2--\] \|\| R1.H=W\[I1\];
+ 294:	b3 9c 49 9d 
+ 298:	0b c8 97 35 	R6 = \(a0 -= R2.H \* R7.L\) \|\| R4.L=W\[I2--\] \|\| R2.H=W\[I2\];
+ 29c:	b4 9c 52 9d 
+ 2a0:	8b c8 06 33 	R4 = \(a0 -= R0.L \* R6.H\) \(FU\) \|\| R5.L=W\[I2--\] \|\| R3.H=W\[I3\];
+ 2a4:	b5 9c 5b 9d 
+ 2a8:	0c c8 81 99 	R7 = \(a1 = R0.H \* R1.L\) \|\| R6.L=W\[I2--\] \|\| R4.H=W\[I3\];
+ 2ac:	b6 9c 5c 9d 
+ 2b0:	9c c8 13 d9 	R5 = \(a1 = R2.H \* R3.H\) \(M, FU\) \|\| R7.L=W\[I2--\] \|\| R4.H=W\[I2\];
+ 2b4:	b7 9c 54 9d 
+ 2b8:	0d c8 bd 18 	R3 = \(a1 \+= R7.L \* R5.L\) \|\| W\[P0\]=R0.L \|\| R6.H=W\[I1\];
+ 2bc:	00 8a 4e 9d 
+ 2c0:	2d c9 17 d8 	R1 = \(a1 \+= R2.H \* R7.H\) \(ISS2\) \|\| W\[P0\]=R1.L \|\| R7.H=W\[I0\];
+ 2c4:	40 8a 47 9d 
+ 2c8:	0e c8 80 58 	R3 = \(a1 -= R0.L \* R0.H\) \|\| W\[P0\]=R2.L \|\| R7.L=W\[I0\+\+\];
+ 2cc:	80 8a 27 9c 
+ 2d0:	1e c9 17 59 	R5 = \(a1 -= R2.L \* R7.H\) \(M, IS\) \|\| W\[P0\]=R3.L \|\| R6.L=W\[I1\+\+\];
+ 2d4:	c0 8a 2e 9c 
+ 2d8:	07 cc 10 ee 	R7=-R2\(S\) \|\| W\[P0\]=R4.L \|\| R5.L=W\[I2\+\+\];
+ 2dc:	00 8b 35 9c 
+ 2e0:	0e cc 00 00 	A0=-A0 \|\| W\[P0\]=R5.L \|\| R4.L=W\[I3\+\+\];
+ 2e4:	40 8b 3c 9c 
+ 2e8:	0e cc 00 40 	A0=-A1 \|\| W\[P0\]=R6.L \|\| R3.L=W\[I3--\];
+ 2ec:	80 8b bb 9c 
+ 2f0:	2e cc 00 00 	A1=-A0 \|\| W\[P0\]=R7.L \|\| R2.L=W\[I1\+\+\];
+ 2f4:	c0 8b 2a 9c 
+ 2f8:	2e cc 00 40 	A1=-A1 \|\| W\[P1\]=R0 \|\| R1.L=W\[I2--\];
+ 2fc:	08 97 b1 9c 
+ 300:	0e cc 00 c0 	A1=-A1,A0=-A0 \|\| W\[P1\]=R1 \|\| R0.L=W\[I1--\];
+ 304:	09 97 a8 9c 
+ 308:	0c cc 18 ca 	R5.L=R3\(RND\) \|\| W\[P1\]=R2 \|\| R0=\[I0\+\+M3\];
+ 30c:	0a 97 e0 9d 
+ 310:	2c cc 00 cc 	R6.H=R0\(RND\) \|\| W\[P1\]=R3 \|\| R1=\[I1\+\+M2\];
+ 314:	0b 97 c9 9d 
+ 318:	08 cc 00 20 	A0=A0\(S\) \|\| W\[P1\]=R4 \|\| R2=\[I2\+\+M1\];
+ 31c:	0c 97 b2 9d 
+ 320:	08 cc 00 60 	A1=A1\(S\) \|\| W\[P1\]=R5 \|\| R3=\[I3\+\+M0\];
+ 324:	0d 97 9b 9d 
+ 328:	08 cc 00 a0 	A1=A1\(S\),A0=A0\(S\) \|\| R6=W\[P1\] \(Z\) \|\| \[I0\]=R0;
+ 32c:	0e 95 00 9f 
+ 330:	05 ce 00 0a 	R5.L=SIGNBITS R0 \|\| R7=W\[P1\] \(Z\) \|\| \[I1\]=R0;
+ 334:	0f 95 08 9f 
+ 338:	05 ce 07 80 	R0.L=SIGNBITS R7.H \|\| R1=W\[P2\+\+\]\(X\) \|\| \[I2\]=R0;
+ 33c:	51 94 10 9f 
+ 340:	06 ce 00 06 	R3.L=SIGNBITS A0 \|\| R2=W\[P2\+\+\]\(X\) \|\| \[I3\]=R0;
+ 344:	52 94 18 9f 
+ 348:	06 ce 00 4e 	R7.L=SIGNBITS A1 \|\| R3=W\[P2\+\+\] \(Z\) \|\| \[I0\]=R1;
+ 34c:	13 94 01 9f 
+ 350:	03 cc 37 ea 	R5.L=R6.H-R7.H \(S\) \|\| R4=W\[P2\+\+\]\(X\) \|\| \[I1\]=R1;
+ 354:	54 94 09 9f 
+ 358:	23 cc 1b 40 	R0.H=R3.L-R3.H \(NS\) \|\| R5=W\[P2\+\+\]\(X\) \|\| \[I2\]=R2;
+ 35c:	55 94 12 9f 
+ 360:   07 cc 10 84     R2= ABS R2 || R1=\[I0\+\+\] || NOP;
+ 364:	01 9c 00 00 
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,141 @@
+	.section .text;
+	R5 = Deposit (r3, r2) || I0 += 2;
+	r0 = DEPOSIT (r7, R6) (X) || I1 += 4;
+	r4 = extract (r2, r1.L) (z) || I2 -= M0;
+	R2 = EXTRACT (r0, r2.l) (Z) || i3 += m1;
+
+	r7 = ExtracT (r3, r4.L) (X) || I3 += M1 (breV);
+	r5 = ExtRACt (R6, R1.L) (x) || i0 -= 2;
+
+	BITMUX(R1, R0, A0) (ASR) || I1 -= 4;
+	Bitmux (r2, R3, a0) (aSr) || I0 += 2;
+
+	bitmux (r4, r5, a0) (asl) || Sp = [P0];
+	BiTMux (R7, r6, a0) (ASl) || FP = [P1++];
+
+	R5.l = ones r0 || P0 = [fp--];
+	r7.L = Ones R2 || p1 = [P5 + 24];
+
+	a0 = abs a0 || p2 = [Sp+60] || r0 = [i0];
+	A0 = ABS A1 || P3 = [FP-60] || R1 = [I1++M0];
+	A1 = Abs a0 || P4 = [fp-4] || r2 = [i1++];
+	a1 = aBs A1 || fp = [sp] || r3 = [I2--];
+	A1 = abs a1, a0 = ABS A0 || R4=[p5+56] || r0.h = w [I0];
+	r0 = abs r2 || B[sp] = r0 || R1.H = W[I1++];
+
+	r4.L = R2.h + r0.L (s) || b [fp] = r0 || r2.H = w [i2--];
+	r5.H = R1.H + R1.L (S) || b [p0] = r0 || R3.l = W[I3];
+	r6.L = R6.L + r5.l (NS) || b [p1] = r0 || r4.L =w [i3++];
+
+	r4.l = r0 + r1 (RND20) || b [p2] = r0 || R5.l = W [i2--];
+	R3.H = r5 + r0 (rnd20) || r0 = b [p0] (x) || [i0] = R6;
+	r1.L = r7 - R5 (rND20) || r0 = b [p4] (z) || [I1++] = R7;
+
+	r2.L = R0 + R1 (rnd12) || r1 = b [sp] (x) || [I2--]= r7;
+	r7.H = r7 + r6 (RND12) || r1 = b [p0] (x)|| [I3++m1]=r6;
+	r5.l = r3 - R2 (rNd12) || r1 = b [p1] (z) || W [ i3 ] = r5.h;
+	r2.h = R1 - R2 (Rnd12) || r1 = b [p2] (z) || w [I2++] = R4.H;
+
+
+	r6.L = EXPADJ (r5, r4.l) || r1 = b [p3] (z) || W[I1--]=r3.h;
+	R5.l = ExpAdj (r0.h, r1.l) || r1 = b [p4] (z) || w[i0]=r2.l;
+	R4.L = expadj (R3, R5.L) (V) || r1 = b [p5] (z) || W [I0++] = R1.L;
+
+	R6 = MAX (r5, R2) || r2 = b [p0] (x) || W[i1--]=R0.l;
+	r0 = max (r1, r3) || b [p1] = r2 || NoP;
+
+	r5 = mIn (r2, R3) || b [p2] = r2 || r0 = [i1++];
+	R4 = Min (r7, R0) || b [p3] = r2 || r1 = [i1++];
+
+
+	A0 -= A1 || b [p4] = r2 || r2 = [i1++];
+	a0 -= a1 (w32) || b [p5] = r2 || r3 = [i1++];
+
+	a0 += a1 || b [sp] = r2 || r4 = [i1++];
+	A0 += A1 (w32) || b [fp] = r2 || r5 = [i1++];
+	r7 = ( a0 += a1) || b [sp] = r3 || r6 = [i1++];
+	r6.l = (A0 += a1) || b [fp] = r3 || r7 = [i1++];
+	R0.H = (a0 += A1) || b [p0] = r3 || r7 = [i0++];
+
+
+	R0.l = r1.h * r2.l || b [p1] = r3 || r1 = [i0++];
+	r1.L = r5.H * r0.H (s2rnd) || b [p2] = r3 || r2 = [i0++];
+	r7.l = r3.l * r3.H (FU) || b [p3] = r3 || r3 = [i0++];
+	r4 = r2.H * r5.H (iSS2) || b [p4] = r3 || r0 = [i0++];
+	r0 = r1.l * r3.l (is) || b [p5] = r3 || r5 = [i0++];
+	r6 = R5.H * r0.l || b [fp] = r4 || r7 = [i0++];
+
+	r2.h = r7.l * r6.H (M, iu) || b [sp] = r4 || r6 = [i0++];
+	r3.H = r5.H * r0.L || r4 = b [p0] (x) ||  [I0++M0] = R0;
+	R0.H = r1.L * r1.H (M) || r4 = b [p1] (x) || [i0++M0] = R1;
+	r1 = r7.H * r6.L (M, is) || r4 = b [p2] (x) || [i0++M0] = R2;
+	R5 = r0.l * r2.h || r4 = b [p3] (x) || [i0++m0] = R3;
+	r3 = r6.H * r0.H (m) || r4 = b [p4] (z) || [i0++m0] = R4;
+
+	a0 = r5.l * R7.H (w32) || r4 = b [p5] (z) || [i0++m0] = R5;
+	a0 = r0.h * r0.l || r5 = b [p0] (x) || [i0++M0] =R6;
+	A0 += R2.L * r3.H (FU) || r5 = b [p1] (z) || [i0++M0]=R7;
+	A0 += r4.h * r1.L || r5 = b [p2] (z) || [I1++M1] = R7;
+	a0 -= r7.l * r6.H (Is) || r5 = b [p3] (x) || [i1++m1] = r6;
+	A0 -= R5.H * r2.H || r5 = b [p4] (z) || [i1++m1]=r5;
+
+	a1 = r1.L * r0.H (M) || r5 = b [p5] (x) || [i1++m1]=r4;
+	A1 = r2.h * r0.L || r5 = b [sp] (z)  || [i1++m1] = r3;
+	A1 = R7.H * R6.L (M, W32) || r5 = b [fp] (x)  || [i1++m1] =r2;
+
+	a1 += r3.l * r2.l (fu) || r0.l = w [i0]  || [i1++m1] = r1;
+	a1 += R6.H * r1.L || r1.l = w [i0]  || [i1++m1] = R0;
+	A1 -= r0.L * R3.H (is) || r2.l = w [i0]  || [i2++m2] = R0;
+	a1 -= r2.l * r7.h || r3.l = w [i0]  || [I2++M2] =R1;
+
+	r7.l = (a0 = r6.H * r5.L) || r4.l = w [i0]  || [i2++m2] = r2;
+	r0.L = (A0 = r1.h * R2.l) (tfu) || r5.l = w [i0]  || [I2++m2] = R3;
+	R2.L = (a0 += r5.L * r4.L) || r6.l = w [i0]  || [I2++m2] = R4;
+	r3.l = (A0 += r7.H * r6.h) (T) || r7.l = w [i0]  ||  [ i2 ++ m2] = R5;
+	r0.l = (a0 -= r3.h * r2.h) || r7.l = w [i1++]  || [i2++m2] = r6;
+	r1.l = (a0 -= r5.L * r4.L) (iH) || r6.l = w [i1++]  || [i2++m2] = R7;
+
+	r1.H = (a1 = r1.l * R0.H) || r2.l = w [i1++]  || [i3++m3] = R7;
+	r2.h = (A1 = r0.H * r3.L) (M, Iss2) || r3.l = w [i1++]  || [i3++m3] = r6;
+	R6.H = (a1 += r7.l * r7.H) || r4.l = w [i1++]  || [i3++m3] = R5;
+	r7.h = (a1 += R2.L * R3.L) (S2rnd) || r5.l = w [i1++]  ||  [i3++m3] = r4;
+	r6.H = (A1 -= R4.h * r2.h) || r6.l = w [i1++]  || [i3++m3] = r3;
+	r5.h = (a1 -= r3.H * r7.L) (M, tFu) || r7.l = w [i1++]  || [i3++m3] = r2;
+
+	R0 = (A0 = R1.L * R2.L) || R1.L = W [I2--]  || [i3++m3] = r1;
+	R2 = (A0 = r1.l * r2.l) (is) || R1.L = W [I2--]  || [i3++m3] = r0;
+	r4 = (a0 += r7.h * r6.L) || R2.L = W [I2--]  || r0.h = w[i0];
+	r6 = (A0 += R5.L * r3.h) (s2RND) || R3.L = W [I2--]  || R1.H = w[i1];
+	R6 = (a0 -= r2.h * r7.l) || R4.L = W [I2--]  || r2.h = w[i2];
+	r4 = (A0 -= R0.L * r6.H) (FU) || R5.L = W [I2--]  || r3.h = w[i3];
+
+	r7 = (a1 = r0.h * r1.l) || R6.L = W [I2--]  || r4.h = w[i3];
+	R5 = (A1 = r2.H * r3.H) (M, fu) || R7.L = W [I2--]  || r4.h = W[i2];
+	R3 = (A1 += r7.l * r5.l) || w [p0] = r0.L || r6.h = W[i1];
+	r1 = (a1 += r2.h * r7.h) (iss2) || w [p0] = r1.L || r7.h = w[i0];
+	r3 = (A1 -= r0.l * R0.H) || w [p0] = r2.L || r7.L = w[I0++];
+	R5 = (a1 -= R2.l * R7.h) (m, is) || w [p0] = r3.L || R6.L = W [i1++];
+
+	r7 = -R2(s) || w [p0] = r4.L || r5.l = w[i2++];
+	A0 = -A0 || w [p0] = r5.L || r4.l = w[i3++];
+	a0 = -a1 || w [p0] = r6.L || r3.L = w [i3--];
+	A1 = -A0 || w [p0] = r7.L || r2.l = W [i1++];
+	a1 = -A1 || w [p1] = r0 || r1.L = w [i2--];
+	a1 = -a1, a0 = -a0 || w [p1] = r1 || r0.l = w [i1--];
+
+	R5.L = r3 (rnd) || w [p1] = r2 || r0 = [i0++m3];
+	r6.H = r0 (RND) || w [p1] = r3 || r1 = [i1++m2];
+
+	A0 = A0 (S) || w [p1] = r4  || r2 = [i2++m1];
+	a1 = a1 (s) || w [p1] = r5  || r3 = [i3++m0];
+	A1 = a1 (S), a0 = A0 (s) || r6 = w [p1] (z) || [i0] = r0;
+
+	R5.l = signbits r0 || r7 = w [p1] (z) || [i1] = R0;
+	r0.L = SIGNbits r7.H || r1 = w [p2++](x) || [I2] = r0;
+	r3.l = signBits A0 || r2 = w [p2++] (x) || [I3] = R0;
+	r7.L = SIGNBITS a1 || r3 = w [p2++] (z) || [i0] = R1;
+
+	r5.l = R6.H - R7.h (s) || r4 = w [p2++] (x) || [i1] = r1;
+	r0.H = r3.l - r3.h (NS) || r5 = w [p2++] (x) || [i2] = r2;
+
+	R1 = [I0++] || R2 = ABS R2 || NOP;

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,147 @@
+#objdump: -d
+#name: parallel2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	08 cc 00 c0 	A0=A1 \|\| P0=\[SP\+0x14\] \|\| NOP;
+   4:	70 ad 00 00 
+   8:	08 cc 00 e0 	A1=A0 \|\| P0=\[P5\+0x18\] \|\| NOP;
+   c:	a8 ad 00 00 
+  10:	09 cc 00 20 	A0=R0 \|\| P0=\[P4\+0x1c\] \|\| NOP;
+  14:	e0 ad 00 00 
+  18:	09 cc 08 a0 	A1=R1 \|\| P0=\[P3\+0x20\] \|\| NOP;
+  1c:	18 ae 00 00 
+  20:	8b c8 00 39 	R4 = A0 \(FU\) \|\| P0=\[P3\+0x24\] \|\| NOP;
+  24:	58 ae 00 00 
+  28:	2f c9 00 19 	R5 = A1 \(ISS2\) \|\| P0=\[P3\+0x28\] \|\| NOP;
+  2c:	98 ae 00 00 
+  30:	0b c8 80 39 	R6 = A0 \|\| P0=\[P4\+0x2c\] \|\| NOP;
+  34:	e0 ae 00 00 
+  38:	0f c8 80 19 	R7 = A1 \|\| P0=\[P4\+0x30\] \|\| NOP;
+  3c:	20 af 00 00 
+  40:	0f c8 80 39 	R7 = A1, R6 = A0 \|\| P0=\[P4\+0x34\] \|\| NOP;
+  44:	60 af 00 00 
+  48:	8f c8 00 38 	R1 = A1, R0 = A0 \(FU\) \|\| P0=\[P4\+0x38\] \|\| NOP;
+  4c:	a0 af 00 00 
+  50:	09 cc 28 40 	A0.x=R5.L \|\| P0=\[P4\+0x3c\] \|\| NOP;
+  54:	e0 af 00 00 
+  58:	09 cc 10 c0 	A1.x=R2.L \|\| R0=\[I0\+\+M0\] \|\| NOP;
+  5c:	80 9d 00 00 
+  60:	0a cc 00 00 	R0.L=A0.x \|\| R1=\[I0\+\+M1\] \|\| NOP;
+  64:	a1 9d 00 00 
+  68:	0a cc 00 4e 	R7.L=A1.x \|\| R0=\[I0\+\+M2\] \|\| NOP;
+  6c:	c0 9d 00 00 
+  70:	09 cc 18 00 	A0.L=R3.L \|\| R0=\[I0\+\+M3\] \|\| NOP;
+  74:	e0 9d 00 00 
+  78:	09 cc 20 80 	A1.L=R4.L \|\| R0=\[I1\+\+M3\] \|\| NOP;
+  7c:	e8 9d 00 00 
+  80:	29 cc 30 00 	A0.H=R6.H \|\| R0=\[I1\+\+M2\] \|\| NOP;
+  84:	c8 9d 00 00 
+  88:	29 cc 28 80 	A1.H=R5.H \|\| R0=\[I1\+\+M1\] \|\| NOP;
+  8c:	a8 9d 00 00 
+  90:	83 c9 00 38 	R0.L = A0 \(IU\) \|\| R4=\[I1\+\+M0\] \|\| NOP;
+  94:	8c 9d 00 00 
+  98:	27 c8 40 18 	R1.H = A1 \(S2RND\) \|\| R0=\[I2\+\+M0\] \|\| NOP;
+  9c:	90 9d 00 00 
+  a0:	07 c8 40 18 	R1.H = A1 \|\| R0=\[I2\+\+M1\] \|\| NOP;
+  a4:	b0 9d 00 00 
+  a8:	67 c9 80 38 	R2.H = A1, R2.L = A0 \(IH\) \|\| R0=\[I2\+\+M2\] \|\| NOP;
+  ac:	d0 9d 00 00 
+  b0:	07 c8 80 38 	R2.H = A1, R2.L = A0 \|\| R0=\[I2\+\+M3\] \|\| NOP;
+  b4:	f0 9d 00 00 
+  b8:	47 c8 00 38 	R0.H = A1, R0.L = A0 \(T\) \|\| R5=\[I3\+\+M0\] \|\| NOP;
+  bc:	9d 9d 00 00 
+  c0:	87 c8 00 38 	R0.H = A1, R0.L = A0 \(FU\) \|\| R5=\[I3\+\+M1\] \|\| NOP;
+  c4:	bd 9d 00 00 
+  c8:	07 c9 00 38 	R0.H = A1, R0.L = A0 \(IS\) \|\| R5=\[I3\+\+M2\] \|\| NOP;
+  cc:	dd 9d 00 00 
+  d0:	07 c8 00 38 	R0.H = A1, R0.L = A0 \|\| R5=\[I3\+\+M3\] \|\| NOP;
+  d4:	fd 9d 00 00 
+  d8:	83 ce 08 41 	A0=A0>>0x1f \|\| R0=\[FP-32\] \|\| NOP;
+  dc:	80 b9 00 00 
+  e0:	83 ce f8 00 	A0=A0<<0x1f \|\| R0=\[FP-28\] \|\| NOP;
+  e4:	90 b9 00 00 
+  e8:	83 ce 00 50 	A1=A1>>0x0 \|\| R0=\[FP-24\] \|\| NOP;
+  ec:	a0 b9 00 00 
+  f0:	83 ce 00 10 	A1=A1<<0x0 \|\| R0=\[FP-20\] \|\| NOP;
+  f4:	b0 b9 00 00 
+  f8:	82 ce fd 4e 	R7=R5<<0x1f\(S\) \|\| R0=\[FP-16\] \|\| NOP;
+  fc:	c0 b9 00 00 
+ 100:	82 ce 52 07 	R3=R2>>>0x16 \|\| R0=\[FP-12\] \|\| NOP;
+ 104:	d0 b9 00 00 
+ 108:	80 ce 7a 52 	R1.L = R2.H << 0xf \(S\) \|\| R0=\[FP-8\] \|\| NOP;
+ 10c:	e0 b9 00 00 
+ 110:	80 ce f2 2b 	R5.H = R2.L >>> 0x2 \|\| R0=\[FP-4\] \|\| NOP;
+ 114:	f0 b9 00 00 
+ 118:	00 ce 14 16 	R3.L= ASHIFT R4.H BY R2.L \|\| R0=\[FP-100\] \|\| NOP;
+ 11c:	70 b8 00 00 
+ 120:	00 ce 07 6e 	R7.H= ASHIFT R7.L BY R0.L\(S\) \|\| R0=\[FP-104\] \|\| NOP;
+ 124:	60 b8 00 00 
+ 128:	00 ce 07 6e 	R7.H= ASHIFT R7.L BY R0.L\(S\) \|\| R0=\[FP-108\] \|\| NOP;
+ 12c:	50 b8 00 00 
+ 130:	02 ce 15 0c 	R6= ASHIFT R5 BY R2.L \|\| R0=\[FP-112\] \|\| NOP;
+ 134:	40 b8 00 00 
+ 138:	02 ce 0c 40 	R0= ASHIFT R4 BY R1.L\(S\) \|\| R3=\[FP-116\] \|\| NOP;
+ 13c:	33 b8 00 00 
+ 140:	02 ce 1e 44 	R2= ASHIFT R6 BY R3.L\(S\) \|\| R0=\[FP-120\] \|\| NOP;
+ 144:	20 b8 00 00 
+ 148:	03 ce 08 00 	A0= ASHIFT A0 BY R1.L \|\| R0=\[FP-124\] \|\| NOP;
+ 14c:	10 b8 00 00 
+ 150:	03 ce 00 10 	A1= ASHIFT A1 BY R0.L \|\| R0=\[FP-128\] \|\| NOP;
+ 154:	00 b8 00 00 
+ 158:	80 ce 8a a3 	R1.H = R2.L >> 0xf \|\| R5=W\[P1--\] \(Z\) \|\| NOP;
+ 15c:	8d 94 00 00 
+ 160:	80 ce 00 8e 	R7.L = R0.L << 0x0 \|\| R5=W\[P2\] \(Z\) \|\| NOP;
+ 164:	15 95 00 00 
+ 168:	82 ce 0d 8b 	R5=R5>>0x1f \|\| R7=W\[P2\+\+\] \(Z\) \|\| NOP;
+ 16c:	17 94 00 00 
+ 170:	82 ce 60 80 	R0=R0<<0xc \|\| R5=W\[P2--\] \(Z\) \|\| NOP;
+ 174:	95 94 00 00 
+ 178:	83 ce f8 41 	A0=A0>>0x1 \|\| R5=W\[P2\+0x0\] \(Z\) \|\| NOP;
+ 17c:	15 a4 00 00 
+ 180:	83 ce 00 00 	A0=A0<<0x0 \|\| R5=W\[P2\+0x2\] \(Z\) \|\| NOP;
+ 184:	55 a4 00 00 
+ 188:	83 ce f8 10 	A1=A1<<0x1f \|\| R5=W\[P2\+0x4\] \(Z\) \|\| NOP;
+ 18c:	95 a4 00 00 
+ 190:	83 ce 80 51 	A1=A1>>0x10 \|\| R5=W\[P2\+0x1e\] \(Z\) \|\| NOP;
+ 194:	d5 a7 00 00 
+ 198:	00 ce 02 b2 	R1.H= LSHIFT R2.H BY R0.L \|\| R5=W\[P2\+0x18\] \(Z\) \|\| NOP;
+ 19c:	15 a7 00 00 
+ 1a0:	00 ce 08 90 	R0.L= LSHIFT R0.H BY R1.L \|\| R5=W\[P2\+0x16\] \(Z\) \|\| NOP;
+ 1a4:	d5 a6 00 00 
+ 1a8:	00 ce 16 8e 	R7.L= LSHIFT R6.L BY R2.L \|\| R5=W\[P2\+0x14\] \(Z\) \|\| NOP;
+ 1ac:	95 a6 00 00 
+ 1b0:	02 ce 1c 8a 	R5=SHIFT R4 BY R3.L \|\| R4=W\[P2\+0x12\] \(Z\) \|\| NOP;
+ 1b4:	54 a6 00 00 
+ 1b8:	03 ce 30 40 	A0= LSHIFT A0 BY R6.L \|\| R5=W\[P2\+0x10\] \(Z\) \|\| NOP;
+ 1bc:	15 a6 00 00 
+ 1c0:	03 ce 28 50 	A1= LSHIFT A1 BY R5.L \|\| R5=W\[P2\+0xe\] \(Z\) \|\| NOP;
+ 1c4:	d5 a5 00 00 
+ 1c8:	82 ce 07 cf 	R7= ROT R7 BY -32 \|\| R5=W\[P2\+0xc\] \(Z\) \|\| NOP;
+ 1cc:	95 a5 00 00 
+ 1d0:	82 ce 0f cd 	R6= ROT R7 BY -31 \|\| R5=W\[P2\+0xa\] \(Z\) \|\| NOP;
+ 1d4:	55 a5 00 00 
+ 1d8:	82 ce ff ca 	R5= ROT R7 BY 0x1f \|\| R6=W\[P2\+0x8\] \(Z\) \|\| NOP;
+ 1dc:	16 a5 00 00 
+ 1e0:	82 ce f7 c8 	R4= ROT R7 BY 0x1e \|\| R5=W\[P2\+0x6\] \(Z\) \|\| NOP;
+ 1e4:	d5 a4 00 00 
+ 1e8:	83 ce 00 80 	A0= ROT A0 BY 0x0 \|\| R5=W\[P3\] \(Z\) \|\| NOP;
+ 1ec:	1d 95 00 00 
+ 1f0:	83 ce 50 80 	A0= ROT A0 BY 0xa \|\| R5=W\[P3\+\+\] \(Z\) \|\| NOP;
+ 1f4:	1d 94 00 00 
+ 1f8:	83 ce 60 91 	A1= ROT A1 BY -20 \|\| R5=W\[P3--\] \(Z\) \|\| NOP;
+ 1fc:	9d 94 00 00 
+ 200:	83 ce 00 91 	A1= ROT A1 BY -32 \|\| R5=W\[P4\] \(Z\) \|\| NOP;
+ 204:	25 95 00 00 
+ 208:	02 ce 11 c0 	R0= ROT R1 BY R2.L \|\| R5=W\[P4\+\+\] \(Z\) \|\| NOP;
+ 20c:	25 94 00 00 
+ 210:	02 ce 1c c0 	R0= ROT R4 BY R3.L \|\| R5=W\[P4--\] \(Z\) \|\| NOP;
+ 214:	a5 94 00 00 
+ 218:	03 ce 38 80 	A0= ROT A0 BY R7.L \|\| R5=W\[P5\] \(Z\) \|\| NOP;
+ 21c:	2d 95 00 00 
+ 220:	03 ce 30 90 	A1= ROT A1 BY R6.L \|\| R5=W\[P5\+\+\] \(Z\) \|\| NOP;
+ 224:	2d 94 00 00 
+ 228:	03 c8 00 18 	mnop \|\| R5=W\[P5--\] \(Z\) \|\| NOP;
+ 22c:	ad 94 00 00 

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,80 @@
+	.section .text;
+	A0 = A1 || P0 = [sp+20];
+	a1 = a0 || P0 = [p5+24];
+	a0 = R0 || P0 = [P4+28];
+	A1 = r1 || P0 = [P3+32];
+
+	R4 = A0 (fu) || P0 = [p3+36];
+	r5 = A1 (ISS2) || P0 = [P3+40];
+	R6 = a0 || P0 = [P4+44];
+	R7 = A1 || P0 = [P4+48];
+	R6 = A0, R7 = a1 || P0 = [P4+52];
+	r1 = a1, r0 = a0 (fu) || P0 = [P4+56];
+
+	A0.X = r5.l || p0 = [p4+60];
+	a1.X = r2.L || r0 = [i0 ++ m0];
+	r0.l = a0.x || r1 = [i0 ++ m1];
+	R7.l = A1.X || r0 = [i0 ++ m2];
+	A0.L = r3.l || r0 = [i0 ++ m3];
+	a1.l = r4.l || r0 = [i1 ++ m3];
+	A0.h = r6.H || r0 = [i1 ++ m2];
+	A1.H = r5.h || r0 = [i1 ++ m1];
+	r0.l = A0 (iu) || r4 = [i1 ++ m0];
+	R1.H = A1 (s2rnd) || r0 = [i2 ++ m0];
+	r1.h = a1 || r0 = [i2 ++ m1];
+	R2.l = A0, r2.H = A1 (IH) || r0 = [i2 ++ m2];
+	R2.l = A0, r2.H = A1 || r0 = [i2 ++ m3];
+	r0.H = A1, R0.L = a0 (t) || r5 = [i3 ++ m0];
+	r0.H = A1, R0.L = a0 (fu) || r5 = [i3 ++ m1];
+	r0.H = A1, R0.L = a0 (is) || r5 = [i3 ++ m2];
+	r0.H = A1, R0.L = a0 || r5 = [i3 ++ m3];
+
+	A0 = A0 >> 31 || r0 = [fp - 32];
+	a0 = a0 << 31 || r0 = [fp - 28];
+	a1 = a1 >> 0 || r0 = [fp - 24];
+	A1 = A1 << 0 || r0 = [fp - 20];
+	r7 = r5 << 31 (s) || r0 = [fp - 16];
+	R3 = r2 >>> 22 || r0 = [fp - 12];
+	r1.L = R2.H << 15 (S) || r0 = [fp - 8];
+	r5.h = r2.l >>> 2 || r0 = [fp - 4];
+
+	r3.l = Ashift  r4.h by r2.l || r0 = [fp - 100];
+	R7.H = ASHIFT R7.L by R0.L (S) || r0 = [fp - 104];
+	r7.h = ashift  r7.l by r0.l (s) || r0 = [fp - 108];
+	r6 = AShiFT R5 by R2.L || r0 = [fp - 112];
+	R0 = Ashift R4 by r1.l (s) || r3 = [fp - 116];
+	r2 = ashift r6 BY r3.L (S) || r0 = [fp - 120];
+	A0 = Ashift a0 by r1.l || r0 = [fp - 124];
+	a1 = ASHIFT a1 by r0.L || r0 = [fp - 128];
+
+	r1.H = r2.l >> 15 || R5 = W [P1--] (z);
+	r7.l = r0.L << 0 || R5 = W [P2] (z);
+	r5 = r5 >> 31 || R7 = W [P2++] (z);
+	r0 = r0 << 12 || R5 = W [P2--] (z);
+	A0 = A0 >> 1 || R5 = W [P2+0] (z);
+	A0 = A0 << 0 || R5 = W [P2+2] (z);
+	a1 = A1 << 31 || R5 = W [P2+4] (z);
+	a1 = a1 >> 16 || R5 = W [P2+30] (z);
+	
+	R1.H = LShift r2.h by r0.l || R5 = W [P2+24] (z);
+	r0.l = LSHIFT r0.h by r1.l || R5 = W [P2+22] (z);
+	r7.L = lshift r6.L BY r2.l || R5 = W [P2+20] (z);
+	r5 = LShIft R4 bY r3.L || R4 = W [P2+18] (z);
+	A0 = Lshift a0 By R6.L || R5 = W [P2+16] (z);
+	A1 = LsHIFt a1 by r5.l || R5 = W [P2+14] (z);
+
+	r7 = ROT r7 by -32 || R5 = W [P2+12] (z);
+	R6 = Rot r7 by -31 || R5 = W [P2+10] (z);
+	R5 = RoT R7 by 31 || R6 = W [P2+8] (z);
+	R4 = Rot r7 by 30 || R5 = W [P2+6] (z);
+	a0 = rot A0 by 0 || R5 = W [P3] (z);
+	A0 = ROT a0 BY 10 || R5 = W [P3++] (z);
+	A1 = ROT A1 by -20 || R5 = W [P3--] (z);
+	A1 = ROT a1 By -32 || R5 = W [P4] (z);
+
+	r0 = rot r1 by r2.L || R5 = W [P4++] (z);
+	R0 = Rot R4 BY R3.L || R5 = W [P4--] (z);
+	A0 = ROT A0 by r7.l || R5 = W [P5] (z);
+	A1 = rot a1 bY r6.l || R5 = W [P5++] (z);
+
+	NOp || R5 = W [P5--] (z);

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel3.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel3.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel3.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,159 @@
+#objdump: -d
+#name: parallel3
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	0c cc 0d 08 	R4.H=R4.L=SIGN\(R1.H\)\*R5.H\+SIGN\(R1.L\)\*R5.L\) \|\| \[P0\]=P0 \|\| NOP;
+   4:	40 93 00 00 
+   8:	09 ce 15 8e 	R7=VIT_MAX\(R5,R2\)\(ASL\) \|\| \[P0\+\+\]=P0 \|\| NOP;
+   c:	40 92 00 00 
+  10:	09 ce 30 c0 	R0=VIT_MAX\(R0,R6\)\(ASR\) \|\| \[P0--\]=P0 \|\| NOP;
+  14:	c0 92 00 00 
+  18:	09 ce 03 0a 	R5.L=VIT_MAX \(R3\) \(ASL\) \|\| \[P0\+0x4\]=P0 \|\| NOP;
+  1c:	40 bc 00 00 
+  20:	09 ce 02 44 	R2.L=VIT_MAX \(R2\) \(ASR\) \|\| \[P0\+0x8\]=P0 \|\| NOP;
+  24:	80 bc 00 00 
+  28:	06 cc 28 8a 	R5= ABS R5\(V\) \|\| \[P0\+0x3c\]=P0 \|\| NOP;
+  2c:	c0 bf 00 00 
+  30:	06 cc 00 84 	R2= ABS R0\(V\) \|\| \[P0\+0x38\]=P0 \|\| NOP;
+  34:	80 bf 00 00 
+  38:	00 cc 1a 0a 	R5=R3\+\|\+R2  \|\| \[P0\+0x34\]=P0 \|\| NOP;
+  3c:	40 bf 00 00 
+  40:	00 cc 1a 3a 	R5=R3\+\|\+R2 \(SCO\) \|\| \[P1\]=P0 \|\| NOP;
+  44:	48 93 00 00 
+  48:	00 cc 06 8e 	R7=R0-\|\+R6  \|\| \[P1\+\+\]=P0 \|\| NOP;
+  4c:	48 92 00 00 
+  50:	00 cc 0b a4 	R2=R1-\|\+R3 \(S\) \|\| \[P1--\]=P0 \|\| NOP;
+  54:	c8 92 00 00 
+  58:	00 cc 02 48 	R4=R0\+\|-R2  \|\| \[P1\+0x30\]=P0 \|\| NOP;
+  5c:	08 bf 00 00 
+  60:	00 cc 0a 5a 	R5=R1\+\|-R2 \(CO\) \|\| \[P1\+0x2c\]=P0 \|\| NOP;
+  64:	c8 be 00 00 
+  68:	00 cc 1c cc 	R6=R3-\|-R4  \|\| \[P1\+0x28\]=P0 \|\| NOP;
+  6c:	88 be 00 00 
+  70:	00 cc 2e de 	R7=R5-\|-R6 \(CO\) \|\| \[P2\]=P0 \|\| NOP;
+  74:	50 93 00 00 
+  78:	01 cc 63 bf 	R5=R4\+\|\+R3,R7=R4-\|-R3\(SCO,ASR\) \|\| \[P2\+\+\]=P0 \|\| NOP;
+  7c:	50 92 00 00 
+  80:	01 cc 1e c2 	R0=R3\+\|\+R6,R1=R3-\|-R6\(ASL\) \|\| \[P2--\]=P0 \|\| NOP;
+  84:	d0 92 00 00 
+  88:	21 cc ca 2d 	R7=R1\+\|-R2,R6=R1-\|\+R2\(S\) \|\| \[P2\+0x24\]=P0 \|\| NOP;
+  8c:	50 be 00 00 
+  90:	21 cc 53 0a 	R1=R2\+\|-R3,R5=R2-\|\+R3 \|\| \[P2\+0x20\]=P0 \|\| NOP;
+  94:	10 be 00 00 
+  98:	04 cc 41 8d 	R5=R0\+R1,R6=R0-R1 \(NS\) \|\| \[P3\]=P0 \|\| NOP;
+  9c:	58 93 00 00 
+  a0:	04 cc 39 a6 	R0=R7\+R1,R3=R7-R1 \(S\) \|\| \[P3\+\+\]=P0 \|\| NOP;
+  a4:	58 92 00 00 
+  a8:	11 cc c0 0b 	R7=A1\+A0,R5=A1-A0 \(NS\) \|\| \[P3--\]=P0 \|\| NOP;
+  ac:	d8 92 00 00 
+  b0:	11 cc c0 6c 	R3=A0\+A1,R6=A0-A1 \(S\) \|\| \[P3\+0x1c\]=P0 \|\| NOP;
+  b4:	d8 bd 00 00 
+  b8:	81 ce 8b 03 	R1=R3>>>0xf \(V\) \|\| \[P3\+0x18\]=P0 \|\| NOP;
+  bc:	98 bd 00 00 
+  c0:	81 ce e0 09 	R4=R0>>>0x4 \(V\) \|\| \[P4\]=P0 \|\| NOP;
+  c4:	60 93 00 00 
+  c8:	81 ce 00 4a 	R5=R0<<0x0 \(V, S\) \|\| \[P4\+\+\]=P0 \|\| NOP;
+  cc:	60 92 00 00 
+  d0:	81 ce 62 44 	R2=R2<<0xc \(V, S\) \|\| \[P4--\]=P0 \|\| NOP;
+  d4:	e0 92 00 00 
+  d8:	01 ce 15 0e 	R7= ASHIFT R5 BY R2.L\(V\) \|\| \[P4\+0x18\]=P0 \|\| NOP;
+  dc:	a0 bd 00 00 
+  e0:	01 ce 02 40 	R0= ASHIFT R2 BY R0.L\(V,S\) \|\| \[P4\+0x14\]=P0 \|\| NOP;
+  e4:	60 bd 00 00 
+  e8:	81 ce 8a 8b 	R5=R2 >> 0xf \(V\) \|\| \[P4\+0x10\]=P0 \|\| NOP;
+  ec:	20 bd 00 00 
+  f0:	81 ce 11 80 	R0=R1<<0x2 \(V\) \|\| \[P4\+0xc\]=P0 \|\| NOP;
+  f4:	e0 bc 00 00 
+  f8:	01 ce 11 88 	R4=SHIFT R1 BY R2.L\(V\) \|\| \[P5\]=P0 \|\| NOP;
+  fc:	68 93 00 00 
+ 100:	06 cc 01 0c 	R6=MAX\(R0,R1\)\(V\) \|\| \[P5\+\+\]=P0 \|\| NOP;
+ 104:	68 92 00 00 
+ 108:	06 cc 17 40 	R0=MIN\(R2,R7\)\(V\) \|\| \[P5--\]=P0 \|\| NOP;
+ 10c:	e8 92 00 00 
+ 110:	04 ca be 66 	R2.H = R7.L \* R6.H, R2 = R7.H \* R6.H \|\| \[P5\+0x8\]=P0 \|\| NOP;
+ 114:	a8 bc 00 00 
+ 118:	04 ca 08 e1 	R4.H = R1.H \* R0.H, R4 = R1.L \* R0.L \|\| \[P5\+0x4\]=P0 \|\| NOP;
+ 11c:	68 bc 00 00 
+ 120:	04 ca 1a a0 	R0.H = R3.H \* R2.L, R0 = R3.L \* R2.L \|\| \[P5\]=P0 \|\| NOP;
+ 124:	68 93 00 00 
+ 128:	94 ca 5a e1 	R5.H = R3.H \* R2.H \(M\), R5 = R3.L \* R2.L \(FU\) \|\| \[SP\]=P0 \|\| NOP;
+ 12c:	70 93 00 00 
+ 130:	2c ca 27 e0 	R1 = R4.H \* R7.H, R0 = R4.L \* R7.L \(S2RND\) \|\| \[SP\+\+\]=P0 \|\| NOP;
+ 134:	70 92 00 00 
+ 138:	0c ca 95 27 	R7 = R2.L \* R5.L, R6 = R2.H \* R5.H \|\| \[SP--\]=P0 \|\| NOP;
+ 13c:	f0 92 00 00 
+ 140:	24 cb 3e e0 	R0.H = R7.H \* R6.H, R0 = R7.L \* R6.L \(ISS2\) \|\| \[SP\+0x3c\]=P0 \|\| NOP;
+ 144:	f0 bf 00 00 
+ 148:	04 cb c1 e0 	R3.H = R0.H \* R1.H, R3 = R0.L \* R1.L \(IS\) \|\| \[FP\]=P0 \|\| NOP;
+ 14c:	78 93 00 00 
+ 150:	00 c8 13 46 	a1 = R2.L \* R3.H, a0 = R2.H \* R3.H \|\| \[FP\+\+\]=P0 \|\| NOP;
+ 154:	78 92 00 00 
+ 158:	01 c8 08 c0 	a1 \+= R1.H \* R0.H, a0 = R1.L \* R0.L \|\| \[FP--\]=P0 \|\| NOP;
+ 15c:	f8 92 00 00 
+ 160:	60 c8 2f c8 	a1 = R5.H \* R7.H, a0 \+= R5.L \* R7.L \(W32\) \|\| \[FP\+0x0\]=P0 \|\| NOP;
+ 164:	38 bc 00 00 
+ 168:	01 c9 01 c0 	a1 \+= R0.H \* R1.H, a0 = R0.L \* R1.L \(IS\) \|\| \[FP\+0x3c\]=P0 \|\| NOP;
+ 16c:	f8 bf 00 00 
+ 170:	90 c8 1c c8 	a1 = R3.H \* R4.H \(M\), a0 \+= R3.L \* R4.L \(FU\) \|\| \[P0\]=P1 \|\| NOP;
+ 174:	41 93 00 00 
+ 178:	01 c8 24 96 	a1 \+= R4.H \* R4.L, a0 -= R4.H \* R4.H \|\| \[P0\]=P2 \|\| NOP;
+ 17c:	42 93 00 00 
+ 180:	25 c9 3e e8 	R0.H = \(a1 \+= R7.H \* R6.H\), R0.L = \(a0 \+= R7.L \* R6.L\) \(ISS2\) \|\| \[P0\]=P3 \|\| NOP;
+ 184:	43 93 00 00 
+ 188:	27 c8 81 28 	R2.H = A1, R2.L = \(a0 \+= R0.L \* R1.L\) \(S2RND\) \|\| \[P0\]=P4 \|\| NOP;
+ 18c:	44 93 00 00 
+ 190:	04 c8 d1 c9 	R7.H = \(a1 = R2.H \* R1.H\), a0 \+= R2.L \* R1.L \|\| \[P0\]=P5 \|\| NOP;
+ 194:	45 93 00 00 
+ 198:	04 c8 be 66 	R2.H = \(a1 = R7.L \* R6.H\), R2.L = \(a0 = R7.H \* R6.H\) \|\| \[P0\]=FP \|\| NOP;
+ 19c:	47 93 00 00 
+ 1a0:	05 c8 9a e1 	R6.H = \(a1 \+= R3.H \* R2.H\), R6.L = \(a0 = R3.L \* R2.L\) \|\| \[P0\]=SP \|\| NOP;
+ 1a4:	46 93 00 00 
+ 1a8:	05 c8 f5 a7 	R7.H = \(a1 \+= R6.H \* R5.L\), R7.L = \(a0 = R6.H \* R5.H\) \|\| \[P0\]=R1 \|\| NOP;
+ 1ac:	01 93 00 00 
+ 1b0:	14 c8 3c a8 	R0.H = \(a1 = R7.H \* R4.L\) \(M\), R0.L = \(a0 \+= R7.L \* R4.L\) \|\| \[P0\+\+\]=R2 \|\| NOP;
+ 1b4:	02 92 00 00 
+ 1b8:	94 c8 5a e9 	R5.H = \(a1 = R3.H \* R2.H\) \(M\), R5.L = \(a0 \+= R3.L \* R2.L\) \(FU\) \|\| \[P1--\]=R3 \|\| NOP;
+ 1bc:	8b 92 00 00 
+ 1c0:	05 c9 1a e0 	R0.H = \(a1 \+= R3.H \* R2.H\), R0.L = \(a0 = R3.L \* R2.L\) \(IS\) \|\| \[I0\]=R0 \|\| NOP;
+ 1c4:	00 9f 00 00 
+ 1c8:	1c c8 b7 d0 	R3 = \(a1 = R6.H \* R7.H\) \(M\), a0 -= R6.L \* R7.L \|\| \[I0\+\+\]=R1 \|\| NOP;
+ 1cc:	01 9e 00 00 
+ 1d0:	1c c8 3c 2e 	R1 = \(a1 = R7.L \* R4.L\) \(M\), R0 = \(a0 \+= R7.H \* R4.H\) \|\| \[I0--\]=R2 \|\| NOP;
+ 1d4:	82 9e 00 00 
+ 1d8:	2d c9 3e e8 	R1 = \(a1 \+= R7.H \* R6.H\), R0 = \(a0 \+= R7.L \* R6.L\) \(ISS2\) \|\| \[I1\]=R3 \|\| NOP;
+ 1dc:	0b 9f 00 00 
+ 1e0:	0d c8 37 e1 	R5 = \(a1 \+= R6.H \* R7.H\), R4 = \(a0 = R6.L \* R7.L\) \|\| \[I1\+\+\]=R3 \|\| NOP;
+ 1e4:	0b 9e 00 00 
+ 1e8:	0d c8 9d f1 	R7 = \(a1 \+= R3.H \* R5.H\), R6 = \(a0 -= R3.L \* R5.L\) \|\| \[I1--\]=R3 \|\| NOP;
+ 1ec:	8b 9e 00 00 
+ 1f0:	0e c8 37 c9 	R5 = \(a1 -= R6.H \* R7.H\), a0 \+= R6.L \* R7.L \|\| \[I2\]=R0 \|\| NOP;
+ 1f4:	10 9f 00 00 
+ 1f8:	0c c8 b7 e0 	R3 = \(a1 = R6.H \* R7.H\), R2 = \(a0 = R6.L \* R7.L\) \|\| \[I2\+\+\]=R0 \|\| NOP;
+ 1fc:	10 9e 00 00 
+ 200:	9c c8 1f e9 	R5 = \(a1 = R3.H \* R7.H\) \(M\), R4 = \(a0 \+= R3.L \* R7.L\) \(FU\) \|\| \[I2--\]=R0 \|\| NOP;
+ 204:	90 9e 00 00 
+ 208:	2f c8 81 28 	R3 = A1, R2 = \(a0 \+= R0.L \* R1.L\) \(S2RND\) \|\| \[I3\]=R7 \|\| NOP;
+ 20c:	1f 9f 00 00 
+ 210:	0d c9 1a e0 	R1 = \(a1 \+= R3.H \* R2.H\), R0 = \(a0 = R3.L \* R2.L\) \(IS\) \|\| \[I3\+\+\]=R7 \|\| NOP;
+ 214:	1f 9e 00 00 
+ 218:	0f cc 08 c0 	R0=-R1\(V\) \|\| \[I3--\]=R6 \|\| NOP;
+ 21c:	9e 9e 00 00 
+ 220:	0f cc 10 ce 	R7=-R2\(V\) \|\| \[P0\+\+P1\]=R0 \|\| NOP;
+ 224:	08 88 00 00 
+ 228:	04 ce 08 8e 	R7=PACK\(R0.H,R1.L\) \|\| \[P0\+\+P1\]=R3 \|\| NOP;
+ 22c:	c8 88 00 00 
+ 230:	04 ce 31 cc 	R6=PACK\(R1.H,R6.H\) \|\| \[P0\+\+P2\]=R0 \|\| NOP;
+ 234:	10 88 00 00 
+ 238:	04 ce 12 4a 	R5=PACK\(R2.L,R2.H\) \|\| \[P0\+\+P3\]=R4 \|\| NOP;
+ 23c:	18 89 00 00 
+ 240:	0d cc 10 82 	\(R0,R1\) = SEARCH R2\(LT\) \|\| R2=\[P0\+0x4\] \|\| NOP;
+ 244:	42 a0 00 00 
+ 248:	0d cc 80 cf 	\(R6,R7\) = SEARCH R0\(LE\) \|\| R5=\[P0--\] \|\| NOP;
+ 24c:	85 90 00 00 
+ 250:	0d cc c8 0c 	\(R3,R6\) = SEARCH R1\(GT\) \|\| R0=\[P0\+0x14\] \|\| NOP;
+ 254:	40 a1 00 00 
+ 258:	0d cc 18 4b 	\(R4,R5\) = SEARCH R3\(GE\) \|\| R1=\[P0\+\+\] \|\| NOP;
+ 25c:	01 90 00 00 

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel3.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel3.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel3.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,95 @@
+	.section .text;
+	r4.h = r4.l = Sign (R1.h) * R5.h + Sign(r1.L) * R5.L|| [p0] = P0;
+
+	R7 = Vit_Max (R5, r2) (ASL)|| [p0++] = P0;
+	r0 = VIT_MAX (r0, r6) (asr)|| [p0--] = P0;
+	r5.l = vit_max (R3) (asL)|| [p0+4] = P0;
+	r2.L = VIT_Max (r2) (Asr)|| [p0+8] = P0;
+
+	R5 = ABS R5 (V)|| [p0+60] = P0;
+	r2 = abs r0 (v)|| [p0+56] = P0;
+
+	R5 = r3 +|+ R2|| [p0+52] = P0;
+	r5 = r3 +|+ r2 (Sco)|| [p1] = P0;
+	r7 = R0 -|+ r6|| [p1++] = P0;
+	r2 = R1 -|+ R3 (S)|| [p1--] = P0;
+	R4 = R0 +|- R2|| [p1+48] = P0;
+	R5 = r1 +|- r2 (CO)|| [p1+44] = P0;
+	r6 = r3 -|- R4|| [p1+40] = P0;
+	r7 = R5 -|- R6 (co)|| [p2] = P0;
+
+	r5 = r4 +|+ r3, R7 = r4 -|- r3 (Sco, ASR)|| [p2++] = P0;
+	R0 = R3 +|+ r6, R1 = R3 -|- R6 (ASL)|| [p2--] = P0;
+	R7 = R1 +|- R2, R6 = R1 -|+ R2 (S)|| [p2+36] = P0;
+	r1 = r2 +|- r3, r5 = r2 -|+ r3|| [p2+32] = P0;
+
+	R5 = R0 + R1, R6 = R0 - R1|| [p3] = P0;
+	r0 = r7 + r1, r3 = r7 - r1 (s)|| [p3++] = P0;
+
+	r7 = A1 + A0, r5 = A1 - A0|| [p3--] = P0;
+	r3 = a0 + a1, r6 = a0 - a1 (s)|| [p3+28] = P0;
+
+	R1 = R3 >>> 15 (V)|| [p3+24] = P0;
+	r4 = r0 >>> 4 (v)|| [p4] = P0;
+	r5 = r0 << 0 (v,s)|| [p4++] = P0;
+	r2 = r2 << 12 (v, S)|| [p4--] = P0;
+
+	R7 = ASHIFT R5 BY R2.L (V)|| [p4+24] = P0;
+	r0 = Ashift r2 by r0.L (v, s)|| [p4+20] = P0;
+
+	R5 = r2 >> 15 (V)|| [p4+16] = P0;
+	r0 = R1 << 2 (v)|| [p4+12] = P0;
+
+	R4 = lshift r1 by r2.L (v)|| [p5] = P0;
+
+	R6 = MAX (R0, R1) (V)|| [p5++] = P0;
+	r0 = min (r2, r7) (v)|| [p5--] = P0;
+
+	r2.h = r7.l * r6.h, r2.l = r7.h * r6.h|| [p5+8] = P0;
+	R4.L = R1.L * R0.L, R4.H = R1.H * R0.H|| [p5+4] = P0;
+	R0.h = R3.H * r2.l, r0.l=r3.l * r2.l|| [p5] = P0;
+	r5.h = r3.h * r2.h (M), r5.l = r3.L * r2.L (fu)|| [sp] = P0;
+	R0 = r4.l * r7.l, r1 = r4.h * r7.h (s2rnd)|| [sp++] = P0;
+	R7 = R2.l * r5.l, r6 = r2.h * r5.h|| [sp--] = P0;
+	R0.L = R7.L * R6.L, R0.H = R7.H * R6.H (ISS2)|| [sp+60] = P0;
+	r3.h = r0.h * r1.h, r3.l = r0.l * r1.l (is)|| [fp] = P0;
+
+	a1 = r2.l * r3.h, a0 = r2.h * R3.H|| [fp++] = P0;
+	A0 = R1.l * R0.L, A1 += R1.h * R0.h|| [fp--] = P0;
+	A1 = R5.h * R7.H, A0 += r5.L * r7.l (w32)|| [fp+0] = P0;
+	a1 += r0.H * r1.H, A0 = R0.L * R1.l (is)|| [fp+60] = P0;
+	a1 = r3.h * r4.h (m), a0 += r3.l * R4.L (FU)|| [p0] = P1;
+	A1 += r4.H * R4.L, a0 -= r4.h * r4.h|| [p0] = P2;
+
+	r0.l = (a0 += R7.l * R6.L), R0.H = (A1 += R7.H * R6.H) (Iss2)|| [p0] = P3;
+	r2.H = A1, r2.l = (a0 += r0.L * r1.L) (s2rnd)|| [p0] = P4;
+	r7.h = (a1 = r2.h * r1.h), a0 += r2.l * r1.l|| [p0] = P5;
+	R2.H = (A1 = R7.L * R6.H), R2.L = (A0 = R7.H * R6.h)|| [p0] = fp;
+	r6.L = (A0 = R3.L * r2.L), R6.H = (A1 += R3.H * R2.H)|| [p0] = sp;
+	R7.h = (a1 += r6.h * r5.l), r7.l = (a0=r6.h * r5.h)|| [p0] = r1;
+	r0.h = (A1 = r7.h * R4.l) (M), R0.l = (a0 += r7.l * r4.l)|| [p0++] = r2;
+	R5.H = (a1 = r3.h * r2.h) (m), r5.l= (a0 += r3.l * r2.l) (fu)|| [p1--] = r3;
+	r0.h = (A1 += R3.h * R2.h), R0.L = ( A0 = R3.L * R2.L) (is)|| [i0] = r0;
+
+	R3 = (A1 = R6.H * R7.H) (M), A0 -= R6.L * R7.L|| [i0++] = r1;
+	r1 = (a1 = r7.l * r4.l) (m), r0 = (a0 += r7.h * r4.h)|| [i0--] = r2;
+	R0 = (a0 += r7.l * r6.l), r1 = (a1+= r7.h * r6.h) (ISS2)|| [i1] = r3;
+	r4 = (a0 = r6.l * r7.l), r5 = (a1 += r6.h * r7.h)|| [i1++] = r3;
+	R7 = (A1 += r3.h * r5.H), R6 = (A0 -= r3.l * r5.l)|| [i1--] = r3;
+	r5 = (a1 -= r6.h * r7.h), a0 += r6.l * r7.l|| [i2] = r0;
+	R3 = (A1 = r6.h * R7.h), R2 = (A0 = R6.l * r7.l)|| [i2++] = r0;
+	R5 = (A1 = r3.h * r7.h) (M), r4 = (A0 += R3.l * r7.l) (fu)|| [i2--] = R0;
+	R3 = a1, r2 = (a0 += r0.l *r1.l) (s2rnd)|| [i3] = R7;
+	r1 = (a1 += r3.h * r2.h), r0 = (a0 = r3.l * r2.l) (is)|| [i3++] = R7;
+
+	R0 = - R1 (V)|| [i3--] = R6;
+	r7 = - r2 (v)|| [p0++p1] = R0;
+
+	R7 = Pack (r0.h, r1.l)|| [p0++p1] = R3;
+	r6 = PACK (r1.H, r6.H)|| [p0++p2] = r0;
+	R5 = pack (R2.L, R2.H)|| [p0++p3] = r4;
+	
+	(R0, R1) = search R2 (lt)|| r2 = [p0+4];
+	(r6, r7) = Search r0 (LE)|| r5 = [p0--];
+	(r3, r6) = SEARCH r1 (Gt)|| r0 = [p0+20];
+	(r4, R5) = sEARch r3 (gE)|| r1 = [p0++];

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel4.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel4.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel4.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,67 @@
+#objdump: -d
+#name: parallel4
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	0d ce 15 0e 	R7=ALIGN8\(R5,R2\) \|\| \[I0\]=R0 \|\| NOP;
+   4:	00 9f 00 00 
+   8:	0d ce 08 4a 	R5=ALIGN16\(R0,R1\) \|\| \[I0\+\+\]=R0 \|\| NOP;
+   c:	00 9e 00 00 
+  10:	0d ce 05 84 	R2=ALIGN24\(R5,R0\) \|\| \[I0--\]=R0 \|\| NOP;
+  14:	80 9e 00 00 
+  18:	12 cc 00 c0 	DISALGNEXCPT \|\| \[I1\]=R0 \|\| NOP;
+  1c:	08 9f 00 00 
+  20:	17 cc 02 0a 	R5=BYTEOP3P\(R1:0x0,R3:0x2\)\(LO\) \|\| \[I1\+\+\]=R0 \|\| NOP;
+  24:	08 9e 00 00 
+  28:	37 cc 02 00 	R0=BYTEOP3P\(R1:0x0,R3:0x2\)\(HI\) \|\| \[I1--\]=R0 \|\| NOP;
+  2c:	88 9e 00 00 
+  30:	17 cc 02 22 	R1=BYTEOP3P\(R1:0x0,R3:0x2\)\(LO, R\) \|\| \[I2\]=R0 \|\| NOP;
+  34:	10 9f 00 00 
+  38:	37 cc 02 24 	R2=BYTEOP3P\(R1:0x0,R3:0x2\)\(HI, R\) \|\| \[I2\+\+\]=R0 \|\| NOP;
+  3c:	10 9e 00 00 
+  40:	0c cc 40 45 	R5=A1.L\+A1.H,R2=A0.L\+A0.H \|\| \[I2--\]=R0 \|\| NOP;
+  44:	90 9e 00 00 
+  48:	15 cc 82 06 	\(R2,R3\)=BYTEOP16P\(R1:0x0,R3:0x2\)  \|\| \[I3\]=R0 \|\| NOP;
+  4c:	18 9f 00 00 
+  50:	15 cc 82 21 	\(R6,R0\)=BYTEOP16P\(R1:0x0,R3:0x2\) \(R\) \|\| \[I3\+\+\]=R0 \|\| NOP;
+  54:	18 9e 00 00 
+  58:	14 cc 02 4e 	R7=BYTEOP1P\(R1:0x0,R3:0x2\)\(T\) \|\| \[I3--\]=R0 \|\| NOP;
+  5c:	98 9e 00 00 
+  60:	14 cc 02 44 	R2=BYTEOP1P\(R1:0x0,R3:0x2\)\(T\) \|\| \[P0\]=R0 \|\| NOP;
+  64:	00 93 00 00 
+  68:	14 cc 02 26 	R3=BYTEOP1P\(R1:0x0,R3:0x2\)\(R\) \|\| \[P0\+\+\]=R0 \|\| NOP;
+  6c:	00 92 00 00 
+  70:	14 cc 02 6e 	R7=BYTEOP1P\(R1:0x0,R3:0x2\)\(T, R\) \|\| \[P0--\]=R0 \|\| NOP;
+  74:	80 92 00 00 
+  78:	16 cc 02 00 	R0=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL\) \|\| \[P1\]=R0 \|\| NOP;
+  7c:	08 93 00 00 
+  80:	36 cc 02 02 	R1=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH\) \|\| \[P1\+\+\]=R0 \|\| NOP;
+  84:	08 92 00 00 
+  88:	16 cc 02 44 	R2=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL\) \|\| \[P1--\]=R0 \|\| NOP;
+  8c:	88 92 00 00 
+  90:	36 cc 02 46 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH\) \|\| \[P2\]=R0 \|\| NOP;
+  94:	10 93 00 00 
+  98:	16 cc 02 28 	R4=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL, R\) \|\| \[P2\+\+\]=R0 \|\| NOP;
+  9c:	10 92 00 00 
+  a0:	36 cc 02 2a 	R5=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH, R\) \|\| \[P2--\]=R0 \|\| NOP;
+  a4:	90 92 00 00 
+  a8:	16 cc 02 6c 	R6=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL, R\) \|\| \[P3\]=R0 \|\| NOP;
+  ac:	18 93 00 00 
+  b0:	36 cc 02 6e 	R7=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH, R\) \|\| \[P3\+\+\]=R0 \|\| NOP;
+  b4:	18 92 00 00 
+  b8:	18 cc 03 0a 	R5=BYTEPACK\(R0,R3\) \|\| \[P3--\]=R0 \|\| NOP;
+  bc:	98 92 00 00 
+  c0:	15 cc 82 45 	\(R6,R2\)=BYTEOP16M\(R1:0x0,R3:0x2\)  \|\| \[P4\]=R0 \|\| NOP;
+  c4:	20 93 00 00 
+  c8:	15 cc 02 6a 	\(R0,R5\)=BYTEOP16M\(R1:0x0,R3:0x2\) \(R\) \|\| \[P4\+\+\]=R0 \|\| NOP;
+  cc:	20 92 00 00 
+  d0:	12 cc 02 00 	SAA\(R1:0x0,R3:0x2\)  \|\| \[P4--\]=R0 \|\| NOP;
+  d4:	a0 92 00 00 
+  d8:	12 cc 02 20 	SAA\(R1:0x0,R3:0x2\) \(R\) \|\| \[P5\]=R0 \|\| NOP;
+  dc:	28 93 00 00 
+  e0:	18 cc c0 45 	\(R7,R2\) = BYTEUNPACK R1:0x0  \|\| \[P5\+\+\]=R0 \|\| NOP;
+  e4:	28 92 00 00 
+  e8:	18 cc 90 69 	\(R6,R4\) = BYTEUNPACK R3:0x2 \(R\) \|\| \[P5--\]=R0 \|\| NOP;
+  ec:	a8 92 00 00 

Added: branches/binutils/package/gas/testsuite/gas/bfin/parallel4.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/parallel4.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/parallel4.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,43 @@
+	.section .text;
+	R7 = Align8 (r5, r2) || [i0] = r0;
+	R5 = ALIGN16 (R0, R1) || [i0++] = r0;
+	r2 = ALIGN24 (r5, r0) || [i0--] = r0;
+
+	DISAlgnExcpt || [i1] = r0;
+
+	R5 = Byteop3p (r1:0, r3:2) (lO) 
+		|| [i1++] = r0;
+	R0 = BYTEOP3P (R1:0, R3:2) (HI) || // comment test
+		[i1--] = r0;
+	R1 = byteop3p (r1:0, r3:2) (LO, r) || [i2] = r0;
+	r2 = ByteOp3P (r1:0, R3:2) (hi, R) || [i2++] = r0;
+
+	R5 = A1.l + A1.h, R2 = a0.l + a0.h || [i2--] = r0;
+
+	(r2, r3) = BYTEOP16P (R1:0, R3:2) || [i3] = r0;
+	(R6, R0) = byteop16p (r1:0, r3:2) (r) || [i3++] = r0;
+
+	R7 = BYTEOP1P (R1:0, R3:2) (t) || [i3--] = r0;
+	r2 = byteop1p (r1:0, r3:2) (t) || [p0] = r0;
+	R3 = ByteOp1P (r1:0, R3:2) (R) || [p0++] = r0;
+	r7 = byteOP1P (R1:0, r3:2) (T, r) || [p0--] = r0;
+
+	R0 = BYTEOP2P (R1:0, R3:2) (RNDL) || [p1] = r0;
+	r1 = byteop2p (r1:0, r3:2) (rndh) || [p1++] = r0;
+	R2 = Byteop2p (R1:0, R3:2) (tL) || [p1--] = r0;
+	R3 = Byteop2p (r1:0, r3:2) (TH) || [p2] = r0;
+	r4 = ByTEOP2P (r1:0, R3:2) (Rndl, R) || [p2++] = r0;
+	R5 = byTeOp2p (R1:0, r3:2) (rndH, r) || [p2--] = r0;
+	r6 = BYTEop2p (r1:0, r3:2) (tl, R) || [p3] = r0;
+	R7 = byteop2p (r1:0, R3:2) (TH, r) || [p3++] = r0;
+
+	R5 = BytePack (R0, R3) || [p3--] = r0;
+
+	(R6, R2) = ByteOp16M (r1:0, r3:2) || [p4] = r0;
+	(r0, r5) = byteop16m (R1:0, R3:2) (r) || [p4++] = r0;
+
+	saa (r1:0, r3:2) || [p4--] = r0;
+	SAA (R1:0, R3:2) (r) || [p5] = r0;
+
+	(R7, R2) = byteunpack R1:0 || [p5++] = r0;
+	(R6, R4) = BYTEUNPACK r3:2 (R) || [p5--] = r0;

Added: branches/binutils/package/gas/testsuite/gas/bfin/reloc.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/reloc.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/reloc.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,20 @@
+#objdump: -r
+#name: reloc
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET   TYPE              VALUE 
+0*0004 R_pcrel24         _call_data1
+0*0008 R_rimm16          .data
+0*000a R_pcrel12_jump_s  .text\+0x00000018
+0*000e R_pcrel24         call_data1\+0x00000008
+0*0012 R_huimm16         .data\+0x00000002
+0*0016 R_luimm16         .data\+0x00000004
+0*001a R_huimm16         load_extern1
+
+
+RELOCATION RECORDS FOR \[\.data\]:
+OFFSET   TYPE              VALUE 
+0*0006 R_byte_data       load_extern1
+
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/reloc.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/reloc.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/reloc.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,19 @@
+	.extern load_extern1;
+	.extern call_data1;
+	.data
+load_data1:	.word 4567;
+load_data2:	.word 8901;
+load_data3:	.word 1243;
+load_data4:	.byte load_extern1;
+	.text
+	jump exit;
+	call _call_data1;
+	r5 = load_data1;
+	jump exit-4;
+	call call_data1+8;
+	r5.H = load_data2;
+	r7.L = load_data3;
+	r1.h = load_extern1;
+
+exit:
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/shift.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/shift.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/shift.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,75 @@
+#objdump: -dr
+#name: shift
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <add_with_shift>:
+   0:	88 45       	P0=\(P0\+P1\)<<1;
+   2:	ea 45       	P2=\(P2\+P5\)<<2;
+   4:	4f 41       	R7=\(R7\+R1\)<<2;
+   6:	03 41       	R3=\(R3\+R0\)<<1;
+
+00000008 <shift_with_add>:
+   8:	44 5f       	P5=P4\+\(P0<<2\);
+   a:	0a 5c       	P0=P2\+\(P1<<1\);
+
+0000000c <arithmetic_shift>:
+   c:	83 c6 08 41 	A0=A0>>0x1f;
+  10:	83 c6 f8 00 	A0=A0<<0x1f;
+  14:	83 c6 00 50 	A1=A1>>0x0;
+  18:	83 c6 00 10 	A1=A1<<0x0;
+  1c:	82 c6 fd 4e 	R7=R5<<0x1f\(S\);
+  20:	82 c6 52 07 	R3=R2>>>0x16;
+  24:	80 c6 7a 52 	R1.L = R2.H << 0xf \(S\);
+  28:	80 c6 f2 2b 	R5.H = R2.L >>> 0x2;
+  2c:	00 4f       	R0<<=0x0;
+  2e:	f9 4d       	R1>>>=0x1f;
+  30:	08 40       	R0>>>=R1;
+  32:	8a 40       	R2<<=R1;
+  34:	00 c6 14 16 	R3.L= ASHIFT R4.H BY R2.L;
+  38:	00 c6 07 6e 	R7.H= ASHIFT R7.L BY R0.L\(S\);
+  3c:	00 c6 07 6e 	R7.H= ASHIFT R7.L BY R0.L\(S\);
+  40:	02 c6 15 0c 	R6= ASHIFT R5 BY R2.L;
+  44:	02 c6 0c 40 	R0= ASHIFT R4 BY R1.L\(S\);
+  48:	02 c6 1e 44 	R2= ASHIFT R6 BY R3.L\(S\);
+  4c:	03 c6 08 00 	A0= ASHIFT A0 BY R1.L;
+  50:	03 c6 00 10 	A1= ASHIFT A1 BY R0.L;
+
+00000054 <logical_shift>:
+  54:	00 45       	P0=P0>>1;
+  56:	d1 44       	P1=P2>>2;
+  58:	c9 5a       	P3=P1<<1;
+  5a:	6c 44       	P4=P5<<2;
+  5c:	f8 4e       	R0>>=0x1f;
+  5e:	ff 4f       	R7<<=0x1f;
+  60:	80 c6 8a a3 	R1.H = R2.L >> 0xf;
+  64:	80 c6 00 8e 	R7.L = R0.L << 0x0;
+  68:	82 c6 0d 8b 	R5=R5>>0x1f;
+  6c:	82 c6 60 80 	R0=R0<<0xc;
+  70:	83 c6 f8 41 	A0=A0>>0x1;
+  74:	83 c6 00 00 	A0=A0<<0x0;
+  78:	83 c6 f8 10 	A1=A1<<0x1f;
+  7c:	83 c6 80 51 	A1=A1>>0x10;
+  80:	7d 40       	R5>>=R7;
+  82:	86 40       	R6<<=R0;
+  84:	00 c6 02 b2 	R1.H= LSHIFT R2.H BY R0.L;
+  88:	00 c6 08 90 	R0.L= LSHIFT R0.H BY R1.L;
+  8c:	00 c6 16 8e 	R7.L= LSHIFT R6.L BY R2.L;
+  90:	02 c6 1c 8a 	R5=SHIFT R4 BY R3.L;
+  94:	03 c6 30 40 	A0= LSHIFT A0 BY R6.L;
+  98:	03 c6 28 50 	A1= LSHIFT A1 BY R5.L;
+
+0000009c <rotate>:
+  9c:	82 c6 07 cf 	R7= ROT R7 BY -32;
+  a0:	82 c6 0f cd 	R6= ROT R7 BY -31;
+  a4:	82 c6 ff ca 	R5= ROT R7 BY 0x1f;
+  a8:	82 c6 f7 c8 	R4= ROT R7 BY 0x1e;
+  ac:	83 c6 00 80 	A0= ROT A0 BY 0x0;
+  b0:	83 c6 50 80 	A0= ROT A0 BY 0xa;
+  b4:	83 c6 60 91 	A1= ROT A1 BY -20;
+  b8:	83 c6 00 91 	A1= ROT A1 BY -32;
+  bc:	02 c6 11 c0 	R0= ROT R1 BY R2.L;
+  c0:	02 c6 1c c0 	R0= ROT R4 BY R3.L;
+  c4:	03 c6 38 80 	A0= ROT A0 BY R7.L;
+  c8:	03 c6 30 90 	A1= ROT A1 BY R6.L;

Added: branches/binutils/package/gas/testsuite/gas/bfin/shift.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/shift.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/shift.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,87 @@
+	.text
+	.global add_with_shift
+add_with_shift:
+	P0 = (P0 + p1) << 1;
+	P2 = (p2 + p5) << 2;
+	r7 = (R7 + r1) << 2;
+	r3 = (r3 + R0) << 1;
+
+	.text
+	.global shift_with_add
+shift_with_add:
+	P5 = p4 + (P0 << 2);
+	P0 = p2 + (p1 << 1);
+
+	.text
+	.global arithmetic_shift
+arithmetic_shift:
+	A0 = A0 >> 31;
+	a0 = a0 << 31;
+	a1 = a1 >> 0;
+	A1 = A1 << 0;
+	r7 = r5 << 31 (s);
+	R3 = r2 >>> 22;
+	r1.L = R2.H << 15 (S);
+	r5.h = r2.l >>> 2;
+	r0 <<= 0;
+	r1 >>>= 31;
+
+	r0 >>>= R1;
+	R2 <<= R1;
+	r3.l = Ashift  r4.h by r2.l;
+	R7.H = ASHIFT R7.L by R0.L (S);
+	r7.h = ashift  r7.l by r0.l (s);
+	r6 = AShiFT R5 by R2.L;
+	R0 = Ashift R4 by r1.l (s);
+	r2 = ashift r6 BY r3.L (S);
+	A0 = Ashift a0 by r1.l;
+	a1 = ASHIFT a1 by r0.L;
+
+
+	.text
+	.global logical_shift
+logical_shift:
+	p0 = p0 >> 1;
+	P1 = p2 >> 2;
+	P3 = P1 << 1;
+	p4 = p5 << 2;
+
+	r0 >>= 31;
+	R7 <<= 31;
+	r1.H = r2.l >> 15;
+	r7.l = r0.L << 0;
+	r5 = r5 >> 31;
+	r0 = r0 << 12;
+	A0 = A0 >> 1;
+	A0 = A0 << 0;
+	a1 = A1 << 31;
+	a1 = a1 >> 16;
+	
+	r5 >>= R7;
+	R6 <<= r0;
+	R1.H = LShift r2.h by r0.l;
+	r0.l = LSHIFT r0.h by r1.l;
+	r7.L = lshift r6.L BY r2.l;
+	r5 = LShIft R4 bY r3.L;
+	A0 = Lshift a0 By R6.L;
+	A1 = LsHIFt a1 by r5.l;
+
+	.text
+	.global rotate
+rotate:
+	r7 = ROT r7 by -32;
+	R6 = Rot r7 by -31;
+	R5 = RoT R7 by 31;
+	R4 = Rot r7 by 30;
+	a0 = rot A0 by 0;
+	A0 = ROT a0 BY 10;
+	A1 = ROT A1 by -20;
+	A1 = ROT a1 By -32;
+
+	r0 = rot r1 by r2.L;
+	R0 = Rot R4 BY R3.L;
+	A0 = ROT A0 by r7.l;
+	A1 = rot a1 bY r6.l;
+
+
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/shift2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/shift2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/shift2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,222 @@
+#objdump: -dr
+#name: shift2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	80 45       	P0=\(P0\+P0\)<<1;
+   2:	88 45       	P0=\(P0\+P1\)<<1;
+   4:	82 45       	P2=\(P2\+P0\)<<1;
+   6:	91 45       	P1=\(P1\+P2\)<<1;
+   8:	c0 45       	P0=\(P0\+P0\)<<2;
+   a:	c8 45       	P0=\(P0\+P1\)<<2;
+   c:	c2 45       	P2=\(P2\+P0\)<<2;
+   e:	d1 45       	P1=\(P1\+P2\)<<2;
+  10:	00 41       	R0=\(R0\+R0\)<<1;
+  12:	08 41       	R0=\(R0\+R1\)<<1;
+  14:	02 41       	R2=\(R2\+R0\)<<1;
+  16:	11 41       	R1=\(R1\+R2\)<<1;
+  18:	40 41       	R0=\(R0\+R0\)<<2;
+  1a:	48 41       	R0=\(R0\+R1\)<<2;
+  1c:	42 41       	R2=\(R2\+R0\)<<2;
+  1e:	51 41       	R1=\(R1\+R2\)<<2;
+  20:	00 5c       	P0=P0\+\(P0<<1\);
+  22:	08 5c       	P0=P0\+\(P1<<1\);
+  24:	10 5c       	P0=P0\+\(P2<<1\);
+  26:	11 5c       	P0=P1\+\(P2<<1\);
+  28:	1a 5c       	P0=P2\+\(P3<<1\);
+  2a:	40 5c       	P1=P0\+\(P0<<1\);
+  2c:	48 5c       	P1=P0\+\(P1<<1\);
+  2e:	50 5c       	P1=P0\+\(P2<<1\);
+  30:	51 5c       	P1=P1\+\(P2<<1\);
+  32:	5a 5c       	P1=P2\+\(P3<<1\);
+  34:	00 5e       	P0=P0\+\(P0<<2\);
+  36:	08 5e       	P0=P0\+\(P1<<2\);
+  38:	10 5e       	P0=P0\+\(P2<<2\);
+  3a:	11 5e       	P0=P1\+\(P2<<2\);
+  3c:	1a 5e       	P0=P2\+\(P3<<2\);
+  3e:	40 5e       	P1=P0\+\(P0<<2\);
+  40:	48 5e       	P1=P0\+\(P1<<2\);
+  42:	50 5e       	P1=P0\+\(P2<<2\);
+  44:	51 5e       	P1=P1\+\(P2<<2\);
+  46:	5a 5e       	P1=P2\+\(P3<<2\);
+  48:	00 4d       	R0>>>=0x0;
+  4a:	f8 4d       	R0>>>=0x1f;
+  4c:	28 4d       	R0>>>=0x5;
+  4e:	05 4d       	R5>>>=0x0;
+  50:	fd 4d       	R5>>>=0x1f;
+  52:	2d 4d       	R5>>>=0x5;
+  54:	00 4f       	R0<<=0x0;
+  56:	f8 4f       	R0<<=0x1f;
+  58:	28 4f       	R0<<=0x5;
+  5a:	05 4f       	R5<<=0x0;
+  5c:	fd 4f       	R5<<=0x1f;
+  5e:	2d 4f       	R5<<=0x5;
+  60:	80 c6 00 00 	R0.L = R0.L >>> 0x0;
+  64:	80 c6 88 01 	R0.L = R0.L >>> 0xf;
+  68:	80 c6 00 10 	R0.L = R0.H >>> 0x0;
+  6c:	80 c6 88 11 	R0.L = R0.H >>> 0xf;
+  70:	80 c6 00 20 	R0.H = R0.L >>> 0x0;
+  74:	80 c6 88 21 	R0.H = R0.L >>> 0xf;
+  78:	80 c6 00 30 	R0.H = R0.H >>> 0x0;
+  7c:	80 c6 88 31 	R0.H = R0.H >>> 0xf;
+  80:	80 c6 01 00 	R0.L = R1.L >>> 0x0;
+  84:	80 c6 89 01 	R0.L = R1.L >>> 0xf;
+  88:	80 c6 01 10 	R0.L = R1.H >>> 0x0;
+  8c:	80 c6 89 11 	R0.L = R1.H >>> 0xf;
+  90:	80 c6 01 20 	R0.H = R1.L >>> 0x0;
+  94:	80 c6 89 21 	R0.H = R1.L >>> 0xf;
+  98:	80 c6 01 30 	R0.H = R1.H >>> 0x0;
+  9c:	80 c6 89 31 	R0.H = R1.H >>> 0xf;
+  a0:	80 c6 07 00 	R0.L = R7.L >>> 0x0;
+  a4:	80 c6 8e 03 	R1.L = R6.L >>> 0xf;
+  a8:	80 c6 05 14 	R2.L = R5.H >>> 0x0;
+  ac:	80 c6 8c 17 	R3.L = R4.H >>> 0xf;
+  b0:	80 c6 03 28 	R4.H = R3.L >>> 0x0;
+  b4:	80 c6 8a 2b 	R5.H = R2.L >>> 0xf;
+  b8:	80 c6 01 3c 	R6.H = R1.H >>> 0x0;
+  bc:	80 c6 88 3f 	R7.H = R0.H >>> 0xf;
+  c0:	80 c6 00 40 	R0.L = R0.L << 0x0 \(S\);
+  c4:	80 c6 78 40 	R0.L = R0.L << 0xf \(S\);
+  c8:	80 c6 00 50 	R0.L = R0.H << 0x0 \(S\);
+  cc:	80 c6 78 50 	R0.L = R0.H << 0xf \(S\);
+  d0:	80 c6 00 60 	R0.H = R0.L << 0x0 \(S\);
+  d4:	80 c6 78 60 	R0.H = R0.L << 0xf \(S\);
+  d8:	80 c6 00 70 	R0.H = R0.H << 0x0 \(S\);
+  dc:	80 c6 78 70 	R0.H = R0.H << 0xf \(S\);
+  e0:	80 c6 01 40 	R0.L = R1.L << 0x0 \(S\);
+  e4:	80 c6 79 40 	R0.L = R1.L << 0xf \(S\);
+  e8:	80 c6 01 50 	R0.L = R1.H << 0x0 \(S\);
+  ec:	80 c6 79 50 	R0.L = R1.H << 0xf \(S\);
+  f0:	80 c6 01 60 	R0.H = R1.L << 0x0 \(S\);
+  f4:	80 c6 79 60 	R0.H = R1.L << 0xf \(S\);
+  f8:	80 c6 01 70 	R0.H = R1.H << 0x0 \(S\);
+  fc:	80 c6 79 70 	R0.H = R1.H << 0xf \(S\);
+ 100:	80 c6 07 40 	R0.L = R7.L << 0x0 \(S\);
+ 104:	80 c6 7e 42 	R1.L = R6.L << 0xf \(S\);
+ 108:	80 c6 05 54 	R2.L = R5.H << 0x0 \(S\);
+ 10c:	80 c6 7c 56 	R3.L = R4.H << 0xf \(S\);
+ 110:	80 c6 03 68 	R4.H = R3.L << 0x0 \(S\);
+ 114:	80 c6 7a 6a 	R5.H = R2.L << 0xf \(S\);
+ 118:	80 c6 01 7c 	R6.H = R1.H << 0x0 \(S\);
+ 11c:	80 c6 78 7e 	R7.H = R0.H << 0xf \(S\);
+ 120:	82 c6 00 00 	R0=R0>>>0x0;
+ 124:	82 c6 08 01 	R0=R0>>>0x1f;
+ 128:	82 c6 01 00 	R0=R1>>>0x0;
+ 12c:	82 c6 09 01 	R0=R1>>>0x1f;
+ 130:	82 c6 00 0e 	R7=R0>>>0x0;
+ 134:	82 c6 09 0d 	R6=R1>>>0x1f;
+ 138:	82 c6 02 0a 	R5=R2>>>0x0;
+ 13c:	82 c6 0b 09 	R4=R3>>>0x1f;
+ 140:	82 c6 04 06 	R3=R4>>>0x0;
+ 144:	82 c6 0d 05 	R2=R5>>>0x1f;
+ 148:	82 c6 06 02 	R1=R6>>>0x0;
+ 14c:	82 c6 0f 01 	R0=R7>>>0x1f;
+ 150:	82 c6 00 40 	R0=R0<<0x0\(S\);
+ 154:	82 c6 f8 40 	R0=R0<<0x1f\(S\);
+ 158:	82 c6 01 40 	R0=R1<<0x0\(S\);
+ 15c:	82 c6 f9 40 	R0=R1<<0x1f\(S\);
+ 160:	82 c6 00 4e 	R7=R0<<0x0\(S\);
+ 164:	82 c6 f9 4c 	R6=R1<<0x1f\(S\);
+ 168:	82 c6 02 4a 	R5=R2<<0x0\(S\);
+ 16c:	82 c6 fb 48 	R4=R3<<0x1f\(S\);
+ 170:	82 c6 04 46 	R3=R4<<0x0\(S\);
+ 174:	82 c6 fd 44 	R2=R5<<0x1f\(S\);
+ 178:	82 c6 06 42 	R1=R6<<0x0\(S\);
+ 17c:	82 c6 ff 40 	R0=R7<<0x1f\(S\);
+ 180:	83 c6 00 00 	A0=A0<<0x0;
+ 184:	83 c6 88 01 	A0=A0>>>0xf;
+ 188:	83 c6 08 01 	A0=A0>>>0x1f;
+ 18c:	83 c6 00 00 	A0=A0<<0x0;
+ 190:	83 c6 78 00 	A0=A0<<0xf;
+ 194:	83 c6 f8 00 	A0=A0<<0x1f;
+ 198:	83 c6 00 10 	A1=A1<<0x0;
+ 19c:	83 c6 88 11 	A1=A1>>>0xf;
+ 1a0:	83 c6 08 11 	A1=A1>>>0x1f;
+ 1a4:	83 c6 00 10 	A1=A1<<0x0;
+ 1a8:	83 c6 78 10 	A1=A1<<0xf;
+ 1ac:	83 c6 f8 10 	A1=A1<<0x1f;
+ 1b0:	00 40       	R0>>>=R0;
+ 1b2:	08 40       	R0>>>=R1;
+ 1b4:	01 40       	R1>>>=R0;
+ 1b6:	39 40       	R1>>>=R7;
+ 1b8:	80 40       	R0<<=R0;
+ 1ba:	88 40       	R0<<=R1;
+ 1bc:	81 40       	R1<<=R0;
+ 1be:	b9 40       	R1<<=R7;
+ 1c0:	00 c6 38 16 	R3.L= ASHIFT R0.H BY R7.L;
+ 1c4:	00 c6 38 26 	R3.H= ASHIFT R0.L BY R7.L;
+ 1c8:	00 c6 38 36 	R3.H= ASHIFT R0.H BY R7.L;
+ 1cc:	00 c6 38 06 	R3.L= ASHIFT R0.L BY R7.L;
+ 1d0:	00 c6 38 56 	R3.L= ASHIFT R0.H BY R7.L\(S\);
+ 1d4:	00 c6 38 66 	R3.H= ASHIFT R0.L BY R7.L\(S\);
+ 1d8:	00 c6 38 76 	R3.H= ASHIFT R0.H BY R7.L\(S\);
+ 1dc:	00 c6 38 46 	R3.L= ASHIFT R0.L BY R7.L\(S\);
+ 1e0:	02 c6 3a 08 	R4= ASHIFT R2 BY R7.L;
+ 1e4:	02 c6 3a 48 	R4= ASHIFT R2 BY R7.L\(S\);
+ 1e8:	03 c6 38 00 	A0= ASHIFT A0 BY R7.L;
+ 1ec:	03 c6 38 10 	A1= ASHIFT A1 BY R7.L;
+ 1f0:	13 45       	P3=P2>>1;
+ 1f2:	db 44       	P3=P3>>2;
+ 1f4:	2d 5b       	P4=P5<<1;
+ 1f6:	48 44       	P0=P1<<2;
+ 1f8:	8b 4e       	R3>>=0x11;
+ 1fa:	8b 4f       	R3<<=0x11;
+ 1fc:	80 c6 e0 87 	R3.L = R0.L >> 0x4;
+ 200:	80 c6 e0 97 	R3.L = R0.H >> 0x4;
+ 204:	80 c6 60 a6 	R3.H = R0.L << 0xc;
+ 208:	80 c6 70 b6 	R3.H = R0.H << 0xe;
+ 20c:	82 c6 e6 87 	R3=R6>>0x4;
+ 210:	82 c6 26 86 	R3=R6<<0x4;
+ 214:	83 c6 c8 41 	A0=A0>>0x7;
+ 218:	83 c6 38 51 	A1=A1>>0x19;
+ 21c:	83 c6 38 00 	A0=A0<<0x7;
+ 220:	83 c6 70 10 	A1=A1<<0xe;
+ 224:	43 40       	R3>>=R0;
+ 226:	8b 40       	R3<<=R1;
+ 228:	00 c6 10 86 	R3.L= LSHIFT R0.L BY R2.L;
+ 22c:	00 c6 10 a6 	R3.H= LSHIFT R0.L BY R2.L;
+ 230:	03 c6 38 40 	A0= LSHIFT A0 BY R7.L;
+ 234:	03 c6 38 50 	A1= LSHIFT A1 BY R7.L;
+ 238:	82 c6 f9 c8 	R4= ROT R1 BY 0x1f;
+ 23c:	82 c6 01 c9 	R4= ROT R1 BY -32;
+ 240:	82 c6 29 c8 	R4= ROT R1 BY 0x5;
+ 244:	83 c6 b0 80 	A0= ROT A0 BY 0x16;
+ 248:	83 c6 00 81 	A0= ROT A0 BY -32;
+ 24c:	83 c6 f8 80 	A0= ROT A0 BY 0x1f;
+ 250:	83 c6 00 91 	A1= ROT A1 BY -32;
+ 254:	83 c6 f8 90 	A1= ROT A1 BY 0x1f;
+ 258:	83 c6 b0 90 	A1= ROT A1 BY 0x16;
+ 25c:	02 c6 11 c8 	R4= ROT R1 BY R2.L;
+ 260:	03 c6 18 80 	A0= ROT A0 BY R3.L;
+ 264:	03 c6 38 90 	A1= ROT A1 BY R7.L;
+ 268:	80 c6 01 80 	R0.L = R1.L << 0x0;
+ 26c:	80 c6 09 80 	R0.L = R1.L << 0x1;
+ 270:	80 c6 11 80 	R0.L = R1.L << 0x2;
+ 274:	80 c6 21 80 	R0.L = R1.L << 0x4;
+ 278:	80 c6 01 80 	R0.L = R1.L << 0x0;
+ 27c:	80 c6 f9 81 	R0.L = R1.L >> 0x1;
+ 280:	80 c6 f1 81 	R0.L = R1.L >> 0x2;
+ 284:	80 c6 e1 81 	R0.L = R1.L >> 0x4;
+ 288:	80 c6 f9 01 	R0.L = R1.L >>> 0x1;
+ 28c:	80 c6 f1 01 	R0.L = R1.L >>> 0x2;
+ 290:	80 c6 e1 01 	R0.L = R1.L >>> 0x4;
+ 294:	80 c6 01 90 	R0.L = R1.H << 0x0;
+ 298:	80 c6 09 90 	R0.L = R1.H << 0x1;
+ 29c:	80 c6 11 90 	R0.L = R1.H << 0x2;
+ 2a0:	80 c6 21 90 	R0.L = R1.H << 0x4;
+ 2a4:	80 c6 01 90 	R0.L = R1.H << 0x0;
+ 2a8:	80 c6 f9 91 	R0.L = R1.H >> 0x1;
+ 2ac:	80 c6 f1 91 	R0.L = R1.H >> 0x2;
+ 2b0:	80 c6 e1 91 	R0.L = R1.H >> 0x4;
+ 2b4:	80 c6 f9 11 	R0.L = R1.H >>> 0x1;
+ 2b8:	80 c6 f1 11 	R0.L = R1.H >>> 0x2;
+ 2bc:	80 c6 e1 11 	R0.L = R1.H >>> 0x4;
+ 2c0:	80 c6 01 50 	R0.L = R1.H << 0x0 \(S\);
+ 2c4:	80 c6 09 50 	R0.L = R1.H << 0x1 \(S\);
+ 2c8:	80 c6 11 50 	R0.L = R1.H << 0x2 \(S\);
+ 2cc:	80 c6 21 50 	R0.L = R1.H << 0x4 \(S\);
+ 2d0:	80 c6 f9 51 	R0.L = R1.H >>> 0x1 \(S\);
+ 2d4:	80 c6 f1 51 	R0.L = R1.H >>> 0x2 \(S\);
+ 2d8:	80 c6 e1 51 	R0.L = R1.H >>> 0x4 \(S\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/shift2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/shift2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/shift2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,290 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//9 SHIFT/ROTATE OPERATIONS
+//
+
+//Preg = ( Preg + Preg ) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */
+P0 = (P0+P0)<<1;
+P0 = (P0+P1)<<1;
+P2 = (P2+P0)<<1;
+P1 = (P1+P2)<<1;
+
+//P0 = (P2+P0)<<1;
+
+//Preg = ( Preg + Preg ) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */
+P0 = (P0+P0)<<2;
+P0 = (P0+P1)<<2;
+P2 = (P2+P0)<<2;
+P1 = (P1+P2)<<2;
+
+//P0 = (P2+P0)<<2;
+
+//Dreg = (Dreg + Dreg) << 1 ; /* dest_reg = (dest_reg + src_reg) x 2 (a) */
+R0 = (R0+R0)<<1;
+R0 = (R0+R1)<<1;
+R2 = (R2+R0)<<1;
+R1 = (R1+R2)<<1;
+
+//R0 = (R2+R0)<<1;
+
+
+//Dreg = (Dreg + Dreg) << 2 ; /* dest_reg = (dest_reg + src_reg) x 4 (a) */
+R0 = (R0+R0)<<2;
+R0 = (R0+R1)<<2;
+R2 = (R2+R0)<<2;
+R1 = (R1+R2)<<2;
+
+//R0 = (R2+R0)<<2;
+
+//Preg = Preg + ( Preg << 1 ) ; /* adder_pntr + (src_pntr x 2) (a) */
+P0 = P0 + (P0 << 1);
+P0 = P0 + (P1 << 1);
+P0 = P0 + (P2 << 1);
+P0 = P1 + (P2 << 1);
+P0 = P2 + (P3 << 1);
+P1 = P0 + (P0 << 1);
+P1 = P0 + (P1 << 1);
+P1 = P0 + (P2 << 1);
+P1 = P1 + (P2 << 1);
+P1 = P2 + (P3 << 1);
+
+//Preg = Preg + ( Preg << 2 ) ; /* adder_pntr + (src_pntr x 4) (a) */
+P0 = P0 + (P0 << 2);
+P0 = P0 + (P1 << 2);
+P0 = P0 + (P2 << 2);
+P0 = P1 + (P2 << 2);
+P0 = P2 + (P3 << 2);
+P1 = P0 + (P0 << 2);
+P1 = P0 + (P1 << 2);
+P1 = P0 + (P2 << 2);
+P1 = P1 + (P2 << 2);
+P1 = P2 + (P3 << 2);
+
+//Dreg >>>= uimm5 ; /* arithmetic right shift (a) */
+R0 >>>= 0;
+R0 >>>= 31;
+R0 >>>= 5;
+R5 >>>= 0;
+R5 >>>= 31;
+R5 >>>= 5;
+
+//Dreg <<= uimm5 ; /* logical left shift (a) */
+R0 <<= 0;
+R0 <<= 31;
+R0 <<= 5;
+R5 <<= 0;
+R5 <<= 31;
+R5 <<= 5;
+//Dreg_lo_hi = Dreg_lo_hi >>> uimm4 ; /* arithmetic right shift (b) */
+R0.L = R0.L >>> 0;
+R0.L = R0.L >>> 15;
+R0.L = R0.H >>> 0;
+R0.L = R0.H >>> 15;
+R0.H = R0.L >>> 0;
+R0.H = R0.L >>> 15;
+R0.H = R0.H >>> 0;
+R0.H = R0.H >>> 15;
+
+R0.L = R1.L >>> 0;
+R0.L = R1.L >>> 15;
+R0.L = R1.H >>> 0;
+R0.L = R1.H >>> 15;
+R0.H = R1.L >>> 0;
+R0.H = R1.L >>> 15;
+R0.H = R1.H >>> 0;
+R0.H = R1.H >>> 15;
+
+R0.L = R7.L >>> 0;
+R1.L = R6.L >>> 15;
+R2.L = R5.H >>> 0;
+R3.L = R4.H >>> 15;
+R4.H = R3.L >>> 0;
+R5.H = R2.L >>> 15;
+R6.H = R1.H >>> 0;
+R7.H = R0.H >>> 15;
+
+//Dreg_lo_hi = Dreg_lo_hi << uimm4 (S) ; /* arithmetic left shift (b) */
+R0.L = R0.L << 0(S);
+R0.L = R0.L << 15(S);
+R0.L = R0.H << 0(S);
+R0.L = R0.H << 15(S);
+R0.H = R0.L << 0(S);
+R0.H = R0.L << 15(S);
+R0.H = R0.H << 0(S);
+R0.H = R0.H << 15(S);
+
+R0.L = R1.L << 0(S);
+R0.L = R1.L << 15(S);
+R0.L = R1.H << 0(S);
+R0.L = R1.H << 15(S);
+R0.H = R1.L << 0(S);
+R0.H = R1.L << 15(S);
+R0.H = R1.H << 0(S);
+R0.H = R1.H << 15(S);
+
+R0.L = R7.L << 0(S);
+R1.L = R6.L << 15(S);
+R2.L = R5.H << 0(S);
+R3.L = R4.H << 15(S);
+R4.H = R3.L << 0(S);
+R5.H = R2.L << 15(S);
+R6.H = R1.H << 0(S);
+R7.H = R0.H << 15(S);
+//Dreg = Dreg >>> uimm5 ; /* arithmetic right shift (b) */
+R0 = R0 >>> 0;
+R0 = R0 >>> 31;
+R0 = R1 >>> 0;
+R0 = R1 >>> 31;
+R7 = R0 >>> 0;
+R6 = R1 >>> 31;
+R5 = R2 >>> 0;
+R4 = R3 >>> 31;
+R3 = R4 >>> 0;
+R2 = R5 >>> 31;
+R1 = R6 >>> 0;
+R0 = R7 >>> 31;
+
+//Dreg = Dreg << uimm5 (S) ; /* arithmetic left shift (b) */
+R0 = R0 << 0(S);
+R0 = R0 << 31(S);
+R0 = R1 << 0(S);
+R0 = R1 << 31(S);
+R7 = R0 << 0(S);
+R6 = R1 << 31(S);
+R5 = R2 << 0(S);
+R4 = R3 << 31(S);
+R3 = R4 << 0(S);
+R2 = R5 << 31(S);
+R1 = R6 << 0(S);
+R0 = R7 << 31(S);
+//A0 = A0 >>> uimm5 ; /* arithmetic right shift (b) */
+A0 = A0 >>> 0;
+A0 = A0 >>> 15;
+A0 = A0 >>> 31;
+
+//A0 = A0 << uimm5 ; /* logical left shift (b) */
+A0 = A0 << 0;
+A0 = A0 << 15;
+A0 = A0 << 31;
+
+//A1 = A1 >>> uimm5 ; /* arithmetic right shift (b) */
+A1 = A1 >>> 0;
+A1 = A1 >>> 15;
+A1 = A1 >>> 31;
+
+//A1 = A1 << uimm5 ; /* logical left shift (b) */
+A1 = A1 << 0;
+A1 = A1 << 15;
+A1 = A1 << 31;
+
+//Dreg >>>= Dreg ; /* arithmetic right shift (a) */
+R0 >>>= R0;
+R0 >>>= R1;
+R1 >>>= R0;
+R1 >>>= R7;
+
+//Dreg <<= Dreg ; /* logical left shift (a) */
+R0 <<= R0;
+R0 <<= R1;
+R1 <<= R0;
+R1 <<= R7;
+
+//Dreg_lo_hi = ASHIFT Dreg_lo_hi BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */
+r3.l = ashift r0.h by r7.l ; /* shift, half-word */
+r3.h = ashift r0.l by r7.l ;
+r3.h = ashift r0.h by r7.l ;
+r3.l = ashift r0.l by r7.l ;
+r3.l = ashift r0.h by r7.l(s) ; /* shift, half-word, saturated */
+r3.h = ashift r0.l by r7.l(s) ; /* shift, half-word, saturated */
+r3.h = ashift r0.h by r7.l(s) ;
+r3.l = ashift r0.l by r7.l (s) ;
+
+//Dreg = ASHIFT Dreg BY Dreg_lo (opt_sat) ; /* arithmetic right shift (b) */
+r4 = ashift r2 by r7.l ; /* shift, word */
+r4 = ashift r2 by r7.l (s) ; /* shift, word, saturated */
+
+//A0 = ASHIFT A0 BY Dreg_lo ; /* arithmetic right shift (b)*/
+A0 = ashift A0 by r7.l ; /* shift, Accumulator */
+
+//A1 = ASHIFT A1 BY Dreg_lo ; /* arithmetic right shift (b)*/
+A1 = ashift A1 by r7.l ; /* shift, Accumulator */
+
+p3 = p2 >> 1 ; /* pointer right shift by 1 */
+p3 = p3 >> 2 ; /* pointer right shift by 2 */
+p4 = p5 << 1 ; /* pointer left shift by 1 */
+p0 = p1 << 2 ; /* pointer left shift by 2 */
+r3 >>= 17 ; /* data right shift */
+r3 <<= 17 ; /* data left shift */
+r3.l = r0.l >> 4 ; /* data right shift, half-word register */
+r3.l = r0.h >> 4 ; /* same as above; half-word register combinations are arbitrary */
+r3.h = r0.l << 12 ; /* data left shift, half-word register */
+r3.h = r0.h << 14 ; /* same as above; half-word register combinations are arbitrary */
+
+r3 = r6 >> 4 ; /* right shift, 32-bit word */
+r3 = r6 << 4 ; /* left shift, 32-bit word */
+
+a0 = a0 >> 7 ; /* Accumulator right shift */
+a1 = a1 >> 25 ; /* Accumulator right shift */
+a0 = a0 << 7 ; /* Accumulator left shift */
+a1 = a1 << 14 ; /* Accumulator left shift */
+
+r3 >>= r0 ; /* data right shift */
+r3 <<= r1 ; /* data left shift */
+
+r3.l = lshift r0.l by r2.l ; /* shift direction controlled by sign of R2.L */
+r3.h = lshift r0.l by r2.l ;
+
+a0 = lshift a0 by r7.l ;
+a1 = lshift a1 by r7.l ;
+
+r4 = rot r1 by 31 ; /* rotate left */
+r4 = rot r1 by -32 ; /* rotate right */
+r4 = rot r1 by 5 ; /* rotate right */
+
+a0 = rot a0 by 22 ; /* rotate Accumulator left */
+a0 = rot a0 by -32 ; /* rotate Accumulator left */
+a0 = rot a0 by 31 ; /* rotate Accumulator left */
+
+a1 = rot a1 by -32 ; /* rotate Accumulator right */
+a1 = rot a1 by 31 ; /* rotate Accumulator right */
+a1 = rot a1 by 22 ; /* rotate Accumulator right */
+
+r4 = rot r1 by r2.l ;
+a0 = rot a0 by r3.l ;
+a1 = rot a1 by r7.l ;
+
+r0.l = r1.l << 0;
+r0.l = r1.l << 1;
+r0.l = r1.l << 2;
+r0.l = r1.l << 4;
+r0.l = r1.l >> 0;
+r0.l = r1.l >> 1;
+r0.l = r1.l >> 2;
+r0.l = r1.l >> 4;
+r0.l = r1.l >>> 1;
+r0.l = r1.l >>> 2;
+r0.l = r1.l >>> 4;
+
+r0.l = r1.h << 0;
+r0.l = r1.h << 1;
+r0.l = r1.h << 2;
+r0.l = r1.h << 4;
+r0.l = r1.h >> 0;
+r0.l = r1.h >> 1;
+r0.l = r1.h >> 2;
+r0.l = r1.h >> 4;
+r0.l = r1.h >>> 1;
+r0.l = r1.h >>> 2;
+r0.l = r1.h >>> 4;
+
+r0.l = r1.h << 0 (S);
+r0.l = r1.h << 1 (S);
+r0.l = r1.h << 2 (S);
+r0.l = r1.h << 4 (S);
+r0.l = r1.h >>> 1 (S);
+r0.l = r1.h >>> 2 (S);
+r0.l = r1.h >>> 4 (S);
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/stack.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/stack.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/stack.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,42 @@
+#objdump: -dr
+#name: stack
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <push>:
+   0:	7a 01       	\[--SP\] = SYSCFG;
+   2:	70 01       	\[--SP\] = LC0;
+   4:	47 01       	\[--SP\] = R7;
+   6:	61 01       	\[--SP\] = A0.w;
+   8:	76 01       	\[--SP\] = CYCLES;
+   a:	5a 01       	\[--SP\] = B2;
+   c:	55 01       	\[--SP\] = M1;
+   e:	48 01       	\[--SP\] = P0;
+
+00000010 <push_multiple>:
+  10:	d0 05       	\[--SP\] = \(R7:2, P5:0\);
+  12:	70 05       	\[--SP\] = \(R7:6\);
+  14:	c2 04       	\[--SP\] = \(P5:2\);
+
+00000016 <pop>:
+  16:	38 01       	USP = \[SP\+\+\];
+  18:	3b 01       	RETI = \[SP\+\+\];
+  1a:	10 01       	I0 = \[SP\+\+\];
+  1c:	39 01       	SEQSTAT = \[SP\+\+\];
+  1e:	1e 01       	L2 = \[SP\+\+\];
+  20:	35 90       	R5=\[SP\+\+\];
+  22:	77 90       	FP=\[SP\+\+\];
+
+00000024 <pop_multiple>:
+  24:	a8 05       	\(R7:5, P5:0\) = \[SP\+\+\];
+  26:	30 05       	\(R7:6\) = \[SP\+\+\];
+  28:	84 04       	\(P5:4\) = \[SP\+\+\];
+
+0000002a <link>:
+  2a:	00 e8 02 00 	LINK 0x8;
+  2e:	00 e8 ff ff 	LINK 0x3fffc;
+  32:	00 e8 01 80 	LINK 0x20004;
+
+00000036 <unlink>:
+  36:	01 e8 00 00 	UNLINK;
+	...

Added: branches/binutils/package/gas/testsuite/gas/bfin/stack.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/stack.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/stack.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,49 @@
+	.text
+	.global push
+push:
+	[--Sp] = syscfg;
+	[--SP] = Lc0;
+	[--sp] = R7;
+	[--sp] = A0.W;
+	[--sP] = Cycles;
+	[--Sp] = b2;
+	[--sp] = m1;
+	[--SP] = P0;
+
+	.text
+	.global push_multiple
+push_multiple:
+	[--sp] = (r7:2, p5:0);
+	[--SP] = (R7:6);
+	[--Sp] = (p5:2);
+
+	.text
+	.global pop
+pop:
+	usp = [ Sp++];
+	Reti = [sp++];
+	i0 = [sp++];
+	Seqstat = [sp++];
+	L2 = [sp++];
+	R5 = [SP ++ ];
+	Fp = [Sp ++];
+
+	.text
+	.global pop_multiple
+pop_multiple:
+	(R7:5, P5:0) = [sp++];
+	(r7:6) = [SP++];
+	(P5:4) = [Sp++];
+
+	.text
+	.global link
+link:
+	link 8;
+	link 0x3fffc;
+	link 0x20004;
+
+	.text
+	.global unlink
+unlink:
+	unlink;
+	

Added: branches/binutils/package/gas/testsuite/gas/bfin/stack2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/stack2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/stack2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,83 @@
+#objdump: -dr
+#name: stack2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	40 01       	\[--SP\] = R0;
+   2:	46 01       	\[--SP\] = R6;
+   4:	48 01       	\[--SP\] = P0;
+   6:	4c 01       	\[--SP\] = P4;
+   8:	50 01       	\[--SP\] = I0;
+   a:	51 01       	\[--SP\] = I1;
+   c:	54 01       	\[--SP\] = M0;
+   e:	55 01       	\[--SP\] = M1;
+  10:	5c 01       	\[--SP\] = L0;
+  12:	5d 01       	\[--SP\] = L1;
+  14:	58 01       	\[--SP\] = B0;
+  16:	59 01       	\[--SP\] = B1;
+  18:	60 01       	\[--SP\] = A0.x;
+  1a:	62 01       	\[--SP\] = A1.x;
+  1c:	61 01       	\[--SP\] = A0.w;
+  1e:	63 01       	\[--SP\] = A1.w;
+  20:	66 01       	\[--SP\] = ASTAT;
+  22:	67 01       	\[--SP\] = RETS;
+  24:	7b 01       	\[--SP\] = RETI;
+  26:	7c 01       	\[--SP\] = RETX;
+  28:	7d 01       	\[--SP\] = RETN;
+  2a:	7e 01       	\[--SP\] = RETE;
+  2c:	70 01       	\[--SP\] = LC0;
+  2e:	73 01       	\[--SP\] = LC1;
+  30:	71 01       	\[--SP\] = LT0;
+  32:	74 01       	\[--SP\] = LT1;
+  34:	72 01       	\[--SP\] = LB0;
+  36:	75 01       	\[--SP\] = LB1;
+  38:	76 01       	\[--SP\] = CYCLES;
+  3a:	77 01       	\[--SP\] = CYCLES2;
+  3c:	78 01       	\[--SP\] = USP;
+  3e:	79 01       	\[--SP\] = SEQSTAT;
+  40:	7a 01       	\[--SP\] = SYSCFG;
+  42:	c0 05       	\[--SP\] = \(R7:0, P5:0\);
+  44:	40 05       	\[--SP\] = \(R7:0\);
+  46:	c0 04       	\[--SP\] = \(P5:0\);
+  48:	30 90       	R0=\[SP\+\+\];
+  4a:	36 90       	R6=\[SP\+\+\];
+  4c:	70 90       	P0=\[SP\+\+\];
+  4e:	74 90       	P4=\[SP\+\+\];
+  50:	10 01       	I0 = \[SP\+\+\];
+  52:	11 01       	I1 = \[SP\+\+\];
+  54:	14 01       	M0 = \[SP\+\+\];
+  56:	15 01       	M1 = \[SP\+\+\];
+  58:	1c 01       	L0 = \[SP\+\+\];
+  5a:	1d 01       	L1 = \[SP\+\+\];
+  5c:	18 01       	B0 = \[SP\+\+\];
+  5e:	19 01       	B1 = \[SP\+\+\];
+  60:	20 01       	A0.x = \[SP\+\+\];
+  62:	22 01       	A1.x = \[SP\+\+\];
+  64:	21 01       	A0.w = \[SP\+\+\];
+  66:	23 01       	A1.w = \[SP\+\+\];
+  68:	26 01       	ASTAT = \[SP\+\+\];
+  6a:	27 01       	RETS = \[SP\+\+\];
+  6c:	3b 01       	RETI = \[SP\+\+\];
+  6e:	3c 01       	RETX = \[SP\+\+\];
+  70:	3d 01       	RETN = \[SP\+\+\];
+  72:	3e 01       	RETE = \[SP\+\+\];
+  74:	30 01       	LC0 = \[SP\+\+\];
+  76:	33 01       	LC1 = \[SP\+\+\];
+  78:	31 01       	LT0 = \[SP\+\+\];
+  7a:	34 01       	LT1 = \[SP\+\+\];
+  7c:	32 01       	LB0 = \[SP\+\+\];
+  7e:	35 01       	LB1 = \[SP\+\+\];
+  80:	36 01       	CYCLES = \[SP\+\+\];
+  82:	37 01       	CYCLES2 = \[SP\+\+\];
+  84:	38 01       	USP = \[SP\+\+\];
+  86:	39 01       	SEQSTAT = \[SP\+\+\];
+  88:	3a 01       	SYSCFG = \[SP\+\+\];
+  8a:	80 05       	\(R7:0, P5:0\) = \[SP\+\+\];
+  8c:	00 05       	\(R7:0\) = \[SP\+\+\];
+  8e:	80 04       	\(P5:0\) = \[SP\+\+\];
+  90:	00 e8 00 00 	LINK 0x0;
+  94:	00 e8 02 00 	LINK 0x8;
+  98:	00 e8 ff ff 	LINK 0x3fffc;
+  9c:	01 e8 00 00 	UNLINK;

Added: branches/binutils/package/gas/testsuite/gas/bfin/stack2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/stack2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/stack2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,125 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//5 STACK CONTROL
+//
+
+//[ -- SP ] = allreg ; /* predecrement SP (a) */
+
+[--SP ] =  R0;
+[--SP ] =  R6;
+
+[--SP ] =  P0;
+[--SP ] =  P4;
+
+[--SP ] =  I0;
+[--SP ] =  I1;
+
+[--SP ] =  M0;
+[--SP ] =  M1;
+
+[--SP ] =  L0;
+[--SP ] =  L1;
+
+[--SP ] =  B0;
+[--SP ] =  B1;
+
+[--SP ] =  A0.X;
+[--SP ] =  A1.X;
+
+[--SP ] =  A0.W;
+[--SP ] =  A1.W;
+
+[--SP ] =  ASTAT;
+[--SP ] =  RETS;
+[--SP ] =  RETI;
+[--SP ] =  RETX;
+[--SP ] =  RETN;
+[--SP ] =  RETE;
+[--SP ] =  LC0;
+[--SP ] =  LC1;
+[--SP ] =  LT0;
+[--SP ] =  LT1;
+[--SP ] =  LB0;
+[--SP ] =  LB1;
+[--SP ] =  CYCLES;
+[--SP ] =  CYCLES2;
+//[--SP ] =  EMUDAT;
+[--SP ] =  USP;
+[--SP ] =  SEQSTAT;
+[--SP ] =  SYSCFG;
+
+
+//[ -- SP ] = ( R7 : Dreglim , P5 : Preglim ) ; /* Dregs and indexed Pregs (a) */
+[--SP ] = ( R7:0, P5:0);
+
+
+//[ -- SP ] = ( R7 : Dreglim ) ; /* Dregs, only (a) */
+[--SP ] = ( R7:0);
+
+//[ -- SP ] = ( P5 : Preglim ) ; /* indexed Pregs, only (a) */
+[--SP ] = (P5:0);
+
+
+//mostreg = [ SP ++ ] ; /* post-increment SP; does not apply to Data Registers and Pointer Registers (a) */
+
+R0= [ SP ++ ] ;      
+R6= [ SP ++ ] ;      
+         
+P0= [ SP ++ ] ;      
+P4= [ SP ++ ] ;      
+         
+I0= [ SP ++ ] ;      
+I1= [ SP ++ ] ;      
+         
+M0= [ SP ++ ] ;      
+M1= [ SP ++ ] ;      
+         
+L0= [ SP ++ ] ;      
+L1= [ SP ++ ] ;      
+         
+B0= [ SP ++ ] ;      
+B1= [ SP ++ ] ;      
+         
+A0.X= [ SP ++ ] ;    
+A1.X= [ SP ++ ] ;    
+         
+A0.W= [ SP ++ ] ;    
+A1.W= [ SP ++ ] ;    
+         
+ASTAT= [ SP ++ ] ;   
+RETS= [ SP ++ ] ;    
+RETI= [ SP ++ ] ;    
+RETX= [ SP ++ ] ;    
+RETN= [ SP ++ ] ;    
+RETE= [ SP ++ ] ;    
+LC0= [ SP ++ ] ;     
+LC1= [ SP ++ ] ;     
+LT0= [ SP ++ ] ;     
+LT1= [ SP ++ ] ;     
+LB0= [ SP ++ ] ;     
+LB1= [ SP ++ ] ;     
+CYCLES= [ SP ++ ] ;  
+CYCLES2= [ SP ++ ] ; 
+//EMUDAT= [ SP ++ ] ;  
+USP= [ SP ++ ] ;     
+SEQSTAT= [ SP ++ ] ; 
+SYSCFG= [ SP ++ ] ;  
+
+//( R7 : Dreglim, P5 : Preglim ) = [ SP ++ ] ; /* Dregs and indexed Pregs (a) */
+( R7:0, P5:0) = [ SP++ ];
+
+//( R7 : Dreglim ) = [ SP ++ ] ; /* Dregs, only (a) */
+( R7:0) = [ SP++ ];
+
+//( P5 : Preglim ) = [ SP ++ ] ; /* indexed Pregs, only (a) */
+( P5:0) = [ SP++ ];
+
+//LINK uimm18m4 ; /* allocate a stack frame of specified size (b) */
+LINK 0X0;
+LINK 0X8;
+LINK 0x3FFFC;
+
+UNLINK ; /* de-allocate the stack frame (b)*/

Added: branches/binutils/package/gas/testsuite/gas/bfin/store.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/store.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/store.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,55 @@
+#objdump: -dr
+#name: store
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <store_pointer_register>:
+   0:	78 93       	\[FP\]=P0;
+   2:	71 92       	\[SP\+\+\]=P1;
+   4:	fd 92       	\[FP--\]=P5;
+   6:	d6 bf       	\[P2\+0x3c\]=SP;
+   8:	28 e7 ff 7f 	\[P5\+0x1fffc\]=P0;
+   c:	3a bc       	\[FP\+0x0\]=P2;
+   e:	f9 bb       	\[FP-4\]=P1;
+  10:	08 ba       	\[FP-128\]=P0;
+
+00000012 <store_data_register>:
+  12:	10 93       	\[P2\]=R0;
+  14:	2a 92       	\[P5\+\+\]=R2;
+  16:	bf 92       	\[FP--\]=R7;
+  18:	b5 b3       	\[SP\+0x38\]=R5;
+  1a:	33 e6 fc 3b 	\[SP\+0xeff0\]=R3;
+  1e:	38 e6 01 c0 	\[FP\+-65532\]=R0;
+  22:	4f 88       	\[FP\+\+P1\]=R1;
+  24:	86 ba       	\[FP-96\]=R6;
+  26:	01 9f       	\[I0\]=R1;
+  28:	12 9e       	\[I2\+\+\]=R2;
+  2a:	9c 9e       	\[I3--\]=R4;
+  2c:	8f 9f       	\[I1\+\+M0\]=R7;
+
+0000002e <store_data_register_half>:
+  2e:	5c 9f       	W\[I3\]=R4.H;
+  30:	40 9e       	W\[I0\+\+\]=R0.H;
+  32:	d7 9e       	W\[I2--\]=R7.H;
+  34:	b6 8d       	W\[SP\]=R6.H;
+  36:	07 8d       	W\[FP\+\+P0\]=R4.H;
+
+00000038 <store_low_data_register_half>:
+  38:	20 9f       	W\[I0\]=R0.L;
+  3a:	2f 9e       	W\[I1\+\+\]=R7.L;
+  3c:	b1 9e       	W\[I2--\]=R1.L;
+  3e:	b6 8a       	W\[SP\]=R2.L;
+  40:	13 97       	W\[P2\]=R3;
+  42:	1d 96       	W\[P3\+\+\]=R5;
+  44:	bc 96       	W\[FP--\]=R4;
+  46:	cf b7       	W\[P1\+0x1e\]=R7;
+  48:	56 e6 ff 7f 	W\[P2\+0xfffe\]=R6;
+  4c:	79 e6 98 a1 	W\[FP\+-48336\]=R1;
+  50:	56 8b       	W\[SP\+\+P2\]=R5.L;
+
+00000052 <store_byte>:
+  52:	39 9b       	B\[FP\]=R1;
+  54:	00 9a       	B\[P0\+\+\]=R0;
+  56:	ba 9a       	B\[FP--\]=R2;
+  58:	97 e6 19 00 	B\[P2\+0x19\]=R7;
+  5c:	be e6 01 80 	B\[FP\+-32767\]=R6;

Added: branches/binutils/package/gas/testsuite/gas/bfin/store.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/store.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/store.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,61 @@
+	.text
+	.global store_pointer_register
+store_pointer_register:
+	[FP] = P0;
+	[Sp ++] = p1;
+	[fp --] = P5;
+	[p2 + 60] = Sp;
+	[P5 + 131068] = P0;
+	[Fp -0]= p2;
+	[fp -4] = P1;
+	[Fp - 128] = p0;
+
+	.text
+	.global store_data_register
+store_data_register:
+	[p2] = r0;
+	[P5 ++] = R2;
+	[fp--] = R7;
+	[SP + 56] = R5;
+	[sp+0xeff0]=R3;
+	[FP - 0xfffc] = R0;
+	[fp ++ P1] = r1;
+	[FP - 96] = r6;
+
+	[i0] = r1;
+	[I2++] = R2;
+	[i3--] = R4;	
+	[i1 ++ m0] = r7;
+
+	.text
+	.global store_data_register_half
+store_data_register_half:
+	w [ i3] = R4.h;
+	W[I0++] = r0.h;
+	W [ i2--] = r7.H;
+	w[Sp] = R6.h;
+	W [ Fp++P0] = r4.h;
+
+	.text
+	.global store_low_data_register_half
+store_low_data_register_half:
+	W [I0] = r0.l;
+	w [i1++] = r7.L;
+	W[I2--] = R1.l;
+	w [SP] = r2.l;
+	W[P2] = r3;
+	w [p3 ++ ] = R5;
+	W [fp--] = R4;
+	W [P1+30]=r7;
+	w[p2+0xfffe] = R6;
+	w [FP-0xbcd0] = r1;
+	W [sp ++ P2] = r5.L;
+
+	.text
+	.global store_byte
+store_byte:
+	b [Fp] = R1;
+	B[P0++] = r0;
+	B [fp --] = r2;
+	B [ p2 + 25] = R7;
+	b[FP - 0x7FFF] = r6;

Added: branches/binutils/package/gas/testsuite/gas/bfin/vector.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/vector.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/vector.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,105 @@
+#objdump: -dr
+#name: vector
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <add_on_sign>:
+   0:	0c c4 0d 08 	R4.H=R4.L=SIGN\(R1.H\)\*R5.H\+SIGN\(R1.L\)\*R5.L\);
+
+00000004 <vit_max>:
+   4:	09 c6 15 8e 	R7=VIT_MAX\(R5,R2\)\(ASL\);
+   8:	09 c6 30 c0 	R0=VIT_MAX\(R0,R6\)\(ASR\);
+   c:	09 c6 03 0a 	R5.L=VIT_MAX \(R3\) \(ASL\);
+  10:	09 c6 02 44 	R2.L=VIT_MAX \(R2\) \(ASR\);
+
+00000014 <vector_abs>:
+  14:	06 c4 28 8a 	R5= ABS R5\(V\);
+  18:	06 c4 00 84 	R2= ABS R0\(V\);
+
+0000001c <vector_add_sub>:
+  1c:	00 c4 1a 0a 	R5=R3\+\|\+R2 ;
+  20:	00 c4 1a 3a 	R5=R3\+\|\+R2 \(SCO\);
+  24:	00 c4 06 8e 	R7=R0-\|\+R6 ;
+  28:	00 c4 0b a4 	R2=R1-\|\+R3 \(S\);
+  2c:	00 c4 02 48 	R4=R0\+\|-R2 ;
+  30:	00 c4 0a 5a 	R5=R1\+\|-R2 \(CO\);
+  34:	00 c4 1c cc 	R6=R3-\|-R4 ;
+  38:	00 c4 2e de 	R7=R5-\|-R6 \(CO\);
+  3c:	01 c4 63 bf 	R5=R4\+\|\+R3,R7=R4-\|-R3\(SCO,ASR\);
+  40:	01 c4 1e c2 	R0=R3\+\|\+R6,R1=R3-\|-R6\(ASL\);
+  44:	21 c4 ca 2d 	R7=R1\+\|-R2,R6=R1-\|\+R2\(S\);
+  48:	21 c4 53 0a 	R1=R2\+\|-R3,R5=R2-\|\+R3;
+  4c:	04 c4 41 8d 	R5=R0\+R1,R6=R0-R1 \(NS\);
+  50:	04 c4 39 a6 	R0=R7\+R1,R3=R7-R1 \(S\);
+  54:	11 c4 [c-f][[:xdigit:]] 0b 	R7=A1\+A0,R5=A1-A0 \(NS\);
+  58:	11 c4 [c-f][[:xdigit:]] 6c 	R3=A0\+A1,R6=A0-A1 \(S\);
+
+0000005c <vector_ashift>:
+  5c:	81 c6 8b 03 	R1=R3>>>0xf \(V\);
+  60:	81 c6 e0 09 	R4=R0>>>0x4 \(V\);
+  64:	81 c6 00 4a 	R5=R0<<0x0 \(V, S\);
+  68:	81 c6 62 44 	R2=R2<<0xc \(V, S\);
+  6c:	01 c6 15 0e 	R7= ASHIFT R5 BY R2.L\(V\);
+  70:	01 c6 02 40 	R0= ASHIFT R2 BY R0.L\(V,S\);
+
+00000074 <vector_lshift>:
+  74:	81 c6 8a 8b 	R5=R2 >> 0xf \(V\);
+  78:	81 c6 11 80 	R0=R1<<0x2 \(V\);
+  7c:	01 c6 11 88 	R4=SHIFT R1 BY R2.L\(V\);
+
+00000080 <vector_max>:
+  80:	06 c4 01 0c 	R6=MAX\(R0,R1\)\(V\);
+
+00000084 <vector_min>:
+  84:	06 c4 17 40 	R0=MIN\(R2,R7\)\(V\);
+
+00000088 <vector_mul>:
+  88:	04 c2 be 66 	R2.H = R7.L \* R6.H, R2 = R7.H \* R6.H;
+  8c:	04 c2 08 e1 	R4.H = R1.H \* R0.H, R4 = R1.L \* R0.L;
+  90:	04 c2 1a a0 	R0.H = R3.H \* R2.L, R0 = R3.L \* R2.L;
+  94:	94 c2 5a e1 	R5.H = R3.H \* R2.H \(M\), R5 = R3.L \* R2.L \(FU\);
+  98:	2c c2 27 e0 	R1 = R4.H \* R7.H, R0 = R4.L \* R7.L \(S2RND\);
+  9c:	0c c2 95 27 	R7 = R2.L \* R5.L, R6 = R2.H \* R5.H;
+  a0:	24 c3 3e e0 	R0.H = R7.H \* R6.H, R0 = R7.L \* R6.L \(ISS2\);
+  a4:	04 c3 c1 e0 	R3.H = R0.H \* R1.H, R3 = R0.L \* R1.L \(IS\);
+  a8:	00 c0 13 46 	a1 = R2.L \* R3.H, a0 = R2.H \* R3.H;
+  ac:	01 c0 08 c0 	a1 \+= R1.H \* R0.H, a0 = R1.L \* R0.L;
+  b0:	60 c0 2f c8 	a1 = R5.H \* R7.H, a0 \+= R5.L \* R7.L \(W32\);
+  b4:	01 c1 01 c0 	a1 \+= R0.H \* R1.H, a0 = R0.L \* R1.L \(IS\);
+  b8:	90 c0 1c c8 	a1 = R3.H \* R4.H \(M\), a0 \+= R3.L \* R4.L \(FU\);
+  bc:	01 c0 24 96 	a1 \+= R4.H \* R4.L, a0 -= R4.H \* R4.H;
+  c0:	25 c1 3e e8 	R0.H = \(a1 \+= R7.H \* R6.H\), R0.L = \(a0 \+= R7.L \* R6.L\) \(ISS2\);
+  c4:	27 c0 81 28 	R2.H = A1, R2.L = \(a0 \+= R0.L \* R1.L\) \(S2RND\);
+  c8:	04 c0 d1 c9 	R7.H = \(a1 = R2.H \* R1.H\), a0 \+= R2.L \* R1.L;
+  cc:	04 c0 be 66 	R2.H = \(a1 = R7.L \* R6.H\), R2.L = \(a0 = R7.H \* R6.H\);
+  d0:	05 c0 9a e1 	R6.H = \(a1 \+= R3.H \* R2.H\), R6.L = \(a0 = R3.L \* R2.L\);
+  d4:	05 c0 f5 a7 	R7.H = \(a1 \+= R6.H \* R5.L\), R7.L = \(a0 = R6.H \* R5.H\);
+  d8:	14 c0 3c a8 	R0.H = \(a1 = R7.H \* R4.L\) \(M\), R0.L = \(a0 \+= R7.L \* R4.L\);
+  dc:	94 c0 5a e9 	R5.H = \(a1 = R3.H \* R2.H\) \(M\), R5.L = \(a0 \+= R3.L \* R2.L\) \(FU\);
+  e0:	05 c1 1a e0 	R0.H = \(a1 \+= R3.H \* R2.H\), R0.L = \(a0 = R3.L \* R2.L\) \(IS\);
+  e4:	1c c0 b7 d0 	R3 = \(a1 = R6.H \* R7.H\) \(M\), a0 -= R6.L \* R7.L;
+  e8:	1c c0 3c 2e 	R1 = \(a1 = R7.L \* R4.L\) \(M\), R0 = \(a0 \+= R7.H \* R4.H\);
+  ec:	2d c1 3e e8 	R1 = \(a1 \+= R7.H \* R6.H\), R0 = \(a0 \+= R7.L \* R6.L\) \(ISS2\);
+  f0:	0d c0 37 e1 	R5 = \(a1 \+= R6.H \* R7.H\), R4 = \(a0 = R6.L \* R7.L\);
+  f4:	0d c0 9d f1 	R7 = \(a1 \+= R3.H \* R5.H\), R6 = \(a0 -= R3.L \* R5.L\);
+  f8:	0e c0 37 c9 	R5 = \(a1 -= R6.H \* R7.H\), a0 \+= R6.L \* R7.L;
+  fc:	0c c0 b7 e0 	R3 = \(a1 = R6.H \* R7.H\), R2 = \(a0 = R6.L \* R7.L\);
+ 100:	9c c0 1f e9 	R5 = \(a1 = R3.H \* R7.H\) \(M\), R4 = \(a0 \+= R3.L \* R7.L\) \(FU\);
+ 104:	2f c0 81 28 	R3 = A1, R2 = \(a0 \+= R0.L \* R1.L\) \(S2RND\);
+ 108:	0d c1 1a e0 	R1 = \(a1 \+= R3.H \* R2.H\), R0 = \(a0 = R3.L \* R2.L\) \(IS\);
+
+0000010c <vector_negate>:
+ 10c:	0f c4 08 c0 	R0=-R1\(V\);
+ 110:	0f c4 10 ce 	R7=-R2\(V\);
+
+00000114 <vector_pack>:
+ 114:	04 c6 08 8e 	R7=PACK\(R0.H,R1.L\);
+ 118:	04 c6 31 cc 	R6=PACK\(R1.H,R6.H\);
+ 11c:	04 c6 12 4a 	R5=PACK\(R2.L,R2.H\);
+
+00000120 <vector_search>:
+ 120:	0d c4 10 82 	\(R0,R1\) = SEARCH R2\(LT\);
+ 124:	0d c4 80 cf 	\(R6,R7\) = SEARCH R0\(LE\);
+ 128:	0d c4 c8 0c 	\(R3,R6\) = SEARCH R1\(GT\);
+ 12c:	0d c4 18 4b 	\(R4,R5\) = SEARCH R3\(GE\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/vector.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/vector.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/vector.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,131 @@
+	.text
+	.global add_on_sign
+add_on_sign:
+	r4.h = r4.l = Sign (R1.h) * R5.h + Sign(r1.L) * R5.L;
+
+	.text
+	.global vit_max
+vit_max:
+	R7 = Vit_Max (R5, r2) (ASL);
+	r0 = VIT_MAX (r0, r6) (asr);
+	r5.l = vit_max (R3) (asL);
+	r2.L = VIT_Max (r2) (Asr);
+
+	.text
+	.global vector_abs
+vector_abs:
+	R5 = ABS R5 (V);
+	r2 = abs r0 (v);
+
+	.text
+	.global vector_add_sub
+vector_add_sub:
+	R5 = r3 +|+ R2;
+	r5 = r3 +|+ r2 (Sco);
+	r7 = R0 -|+ r6;
+	r2 = R1 -|+ R3 (S);
+	R4 = R0 +|- R2;
+	R5 = r1 +|- r2 (CO);
+	r6 = r3 -|- R4;
+	r7 = R5 -|- R6 (co);
+
+	r5 = r4 +|+ r3, R7 = r4 -|- r3 (Sco, ASR);
+	R0 = R3 +|+ r6, R1 = R3 -|- R6 (ASL);
+	R7 = R1 +|- R2, R6 = R1 -|+ R2 (S);
+	r1 = r2 +|- r3, r5 = r2 -|+ r3;
+
+	R5 = R0 + R1, R6 = R0 - R1;
+	r0 = r7 + r1, r3 = r7 - r1 (s);
+
+	r7 = A1 + A0, r5 = A1 - A0;
+	r3 = a0 + a1, r6 = a0 - a1 (s);
+
+	.text
+	.global vector_ashift
+vector_ashift:
+	R1 = R3 >>> 15 (V);
+	r4 = r0 >>> 4 (v);
+	r5 = r0 << 0 (v,s);
+	r2 = r2 << 12 (v, S);
+
+	R7 = ASHIFT R5 BY R2.L (V);
+	r0 = Ashift r2 by r0.L (v, s);
+
+	.text
+	.global vector_lshift
+vector_lshift:
+	R5 = r2 >> 15 (V);
+	r0 = R1 << 2 (v);
+
+	R4 = lshift r1 by r2.L (v);
+
+	.text
+	.global vector_max
+vector_max:
+	R6 = MAX (R0, R1) (V);
+
+	.text
+	.global vector_min
+vector_min:
+	r0 = min (r2, r7) (v);
+
+	.text
+	.global vector_mul
+vector_mul:
+	r2.h = r7.l * r6.h, r2.l = r7.h * r6.h;
+	R4.L = R1.L * R0.L, R4.H = R1.H * R0.H;
+	R0.h = R3.H * r2.l, r0.l=r3.l * r2.l;
+	r5.h = r3.h * r2.h (M), r5.l = r3.L * r2.L (fu);
+	R0 = r4.l * r7.l, r1 = r4.h * r7.h (s2rnd);
+	R7 = R2.l * r5.l, r6 = r2.h * r5.h;
+	R0.L = R7.L * R6.L, R0.H = R7.H * R6.H (ISS2);
+	r3.h = r0.h * r1.h, r3.l = r0.l * r1.l (is);
+
+	a1 = r2.l * r3.h, a0 = r2.h * R3.H;
+	A0 = R1.l * R0.L, A1 += R1.h * R0.h;
+	A1 = R5.h * R7.H, A0 += r5.L * r7.l (w32);
+	a1 += r0.H * r1.H, A0 = R0.L * R1.l (is);
+	a1 = r3.h * r4.h (m), a0 += r3.l * R4.L (FU);
+	A1 += r4.H * R4.L, a0 -= r4.h * r4.h;
+
+	r0.l = (a0 += R7.l * R6.L), R0.H = (A1 += R7.H * R6.H) (Iss2);
+	r2.H = A1, r2.l = (a0 += r0.L * r1.L) (s2rnd);
+	r7.h = (a1 = r2.h * r1.h), a0 += r2.l * r1.l;
+	R2.H = (A1 = R7.L * R6.H), R2.L = (A0 = R7.H * R6.h);
+	r6.L = (A0 = R3.L * r2.L), R6.H = (A1 += R3.H * R2.H);
+	R7.h = (a1 += r6.h * r5.l), r7.l = (a0=r6.h * r5.h);
+	r0.h = (A1 = r7.h * R4.l) (M), R0.l = (a0 += r7.l * r4.l);
+	R5.H = (a1 = r3.h * r2.h) (m), r5.l= (a0 += r3.l * r2.l) (fu);
+	r0.h = (A1 += R3.h * R2.h), R0.L = ( A0 = R3.L * R2.L) (is);
+
+	R3 = (A1 = R6.H * R7.H) (M), A0 -= R6.L * R7.L;
+	r1 = (a1 = r7.l * r4.l) (m), r0 = (a0 += r7.h * r4.h);
+	R0 = (a0 += r7.l * r6.l), r1 = (a1+= r7.h * r6.h) (ISS2);
+	r4 = (a0 = r6.l * r7.l), r5 = (a1 += r6.h * r7.h);
+	R7 = (A1 += r3.h * r5.H), R6 = (A0 -= r3.l * r5.l);
+	r5 = (a1 -= r6.h * r7.h), a0 += r6.l * r7.l;
+	R3 = (A1 = r6.h * R7.h), R2 = (A0 = R6.l * r7.l);
+	R5 = (A1 = r3.h * r7.h) (M), r4 = (A0 += R3.l * r7.l) (fu);
+	R3 = a1, r2 = (a0 += r0.l *r1.l) (s2rnd);
+	r1 = (a1 += r3.h * r2.h), r0 = (a0 = r3.l * r2.l) (is);
+
+	.text
+	.global vector_negate
+vector_negate:
+	R0 = - R1 (V);
+	r7 = - r2 (v);
+
+	.text
+	.global vector_pack
+vector_pack:
+	R7 = Pack (r0.h, r1.l);
+	r6 = PACK (r1.H, r6.H);
+	R5 = pack (R2.L, R2.H);
+	
+	.text
+	.global vector_search
+vector_search:
+	(R0, R1) = search R2 (lt);
+	(r6, r7) = Search r0 (LE);
+	(r3, r6) = SEARCH r1 (Gt);
+	(r4, R5) = sEARch r3 (gE);

Added: branches/binutils/package/gas/testsuite/gas/bfin/vector2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/vector2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/vector2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,471 @@
+#objdump: -dr
+#name: vector2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	0c c4 13 0e 	R7.H=R7.L=SIGN\(R2.H\)\*R3.H\+SIGN\(R2.L\)\*R3.L\);
+   4:	0c c4 0a 00 	R0.H=R0.L=SIGN\(R1.H\)\*R2.H\+SIGN\(R1.L\)\*R2.L\);
+   8:	0c c4 25 06 	R3.H=R3.L=SIGN\(R4.H\)\*R5.H\+SIGN\(R4.L\)\*R5.L\);
+   c:	0c c4 38 0c 	R6.H=R6.L=SIGN\(R7.H\)\*R0.H\+SIGN\(R7.L\)\*R0.L\);
+  10:	0c c4 13 02 	R1.H=R1.L=SIGN\(R2.H\)\*R3.H\+SIGN\(R2.L\)\*R3.L\);
+  14:	0c c4 2e 08 	R4.H=R4.L=SIGN\(R5.H\)\*R6.H\+SIGN\(R5.L\)\*R6.L\);
+  18:	0c c4 01 0e 	R7.H=R7.L=SIGN\(R0.H\)\*R1.H\+SIGN\(R0.L\)\*R1.L\);
+  1c:	0c c4 1c 04 	R2.H=R2.L=SIGN\(R3.H\)\*R4.H\+SIGN\(R3.L\)\*R4.L\);
+  20:	09 c6 13 8a 	R5=VIT_MAX\(R3,R2\)\(ASL\);
+  24:	09 c6 01 ce 	R7=VIT_MAX\(R1,R0\)\(ASR\);
+  28:	09 c6 11 80 	R0=VIT_MAX\(R1,R2\)\(ASL\);
+  2c:	09 c6 2c c6 	R3=VIT_MAX\(R4,R5\)\(ASR\);
+  30:	09 c6 07 8c 	R6=VIT_MAX\(R7,R0\)\(ASL\);
+  34:	09 c6 1a c2 	R1=VIT_MAX\(R2,R3\)\(ASR\);
+  38:	09 c6 35 88 	R4=VIT_MAX\(R5,R6\)\(ASL\);
+  3c:	09 c6 08 ce 	R7=VIT_MAX\(R0,R1\)\(ASR\);
+  40:	09 c6 23 84 	R2=VIT_MAX\(R3,R4\)\(ASL\);
+  44:	09 c6 3e ca 	R5=VIT_MAX\(R6,R7\)\(ASR\);
+  48:	09 c6 01 06 	R3.L=VIT_MAX \(R1\) \(ASL\);
+  4c:	09 c6 01 46 	R3.L=VIT_MAX \(R1\) \(ASR\);
+  50:	09 c6 01 00 	R0.L=VIT_MAX \(R1\) \(ASL\);
+  54:	09 c6 03 44 	R2.L=VIT_MAX \(R3\) \(ASR\);
+  58:	09 c6 05 08 	R4.L=VIT_MAX \(R5\) \(ASL\);
+  5c:	09 c6 07 4c 	R6.L=VIT_MAX \(R7\) \(ASR\);
+  60:	09 c6 02 02 	R1.L=VIT_MAX \(R2\) \(ASL\);
+  64:	09 c6 04 46 	R3.L=VIT_MAX \(R4\) \(ASR\);
+  68:	09 c6 06 0a 	R5.L=VIT_MAX \(R6\) \(ASL\);
+  6c:	09 c6 00 4e 	R7.L=VIT_MAX \(R0\) \(ASR\);
+  70:	06 c4 08 86 	R3= ABS R1\(V\);
+  74:	06 c4 00 80 	R0= ABS R0\(V\);
+  78:	06 c4 08 80 	R0= ABS R1\(V\);
+  7c:	06 c4 18 84 	R2= ABS R3\(V\);
+  80:	06 c4 28 88 	R4= ABS R5\(V\);
+  84:	06 c4 38 8c 	R6= ABS R7\(V\);
+  88:	06 c4 00 82 	R1= ABS R0\(V\);
+  8c:	06 c4 10 86 	R3= ABS R2\(V\);
+  90:	06 c4 20 8a 	R5= ABS R4\(V\);
+  94:	06 c4 30 8e 	R7= ABS R6\(V\);
+  98:	00 c4 1c 0a 	R5=R3\+\|\+R4 ;
+  9c:	00 c4 0a 00 	R0=R1\+\|\+R2 ;
+  a0:	00 c4 25 06 	R3=R4\+\|\+R5 ;
+  a4:	00 c4 38 0c 	R6=R7\+\|\+R0 ;
+  a8:	00 c4 13 02 	R1=R2\+\|\+R3 ;
+  ac:	00 c4 1d 08 	R4=R3\+\|\+R5 ;
+  b0:	00 c4 1f 0c 	R6=R3\+\|\+R7 ;
+  b4:	00 c4 0a 20 	R0=R1\+\|\+R2 \(S\);
+  b8:	00 c4 25 26 	R3=R4\+\|\+R5 \(S\);
+  bc:	00 c4 38 2c 	R6=R7\+\|\+R0 \(S\);
+  c0:	00 c4 13 22 	R1=R2\+\|\+R3 \(S\);
+  c4:	00 c4 1d 28 	R4=R3\+\|\+R5 \(S\);
+  c8:	00 c4 1f 2c 	R6=R3\+\|\+R7 \(S\);
+  cc:	00 c4 0a 10 	R0=R1\+\|\+R2 \(CO\);
+  d0:	00 c4 25 16 	R3=R4\+\|\+R5 \(CO\);
+  d4:	00 c4 38 1c 	R6=R7\+\|\+R0 \(CO\);
+  d8:	00 c4 13 12 	R1=R2\+\|\+R3 \(CO\);
+  dc:	00 c4 1d 18 	R4=R3\+\|\+R5 \(CO\);
+  e0:	00 c4 1f 1c 	R6=R3\+\|\+R7 \(CO\);
+  e4:	00 c4 0a 30 	R0=R1\+\|\+R2 \(SCO\);
+  e8:	00 c4 25 36 	R3=R4\+\|\+R5 \(SCO\);
+  ec:	00 c4 38 3c 	R6=R7\+\|\+R0 \(SCO\);
+  f0:	00 c4 13 32 	R1=R2\+\|\+R3 \(SCO\);
+  f4:	00 c4 1d 38 	R4=R3\+\|\+R5 \(SCO\);
+  f8:	00 c4 1f 3c 	R6=R3\+\|\+R7 \(SCO\);
+  fc:	00 c4 01 ac 	R6=R0-\|\+R1 \(S\);
+ 100:	00 c4 0a 80 	R0=R1-\|\+R2 ;
+ 104:	00 c4 25 86 	R3=R4-\|\+R5 ;
+ 108:	00 c4 38 8c 	R6=R7-\|\+R0 ;
+ 10c:	00 c4 13 82 	R1=R2-\|\+R3 ;
+ 110:	00 c4 1d 88 	R4=R3-\|\+R5 ;
+ 114:	00 c4 1f 8c 	R6=R3-\|\+R7 ;
+ 118:	00 c4 0a a0 	R0=R1-\|\+R2 \(S\);
+ 11c:	00 c4 25 a6 	R3=R4-\|\+R5 \(S\);
+ 120:	00 c4 38 ac 	R6=R7-\|\+R0 \(S\);
+ 124:	00 c4 13 a2 	R1=R2-\|\+R3 \(S\);
+ 128:	00 c4 1d a8 	R4=R3-\|\+R5 \(S\);
+ 12c:	00 c4 1f ac 	R6=R3-\|\+R7 \(S\);
+ 130:	00 c4 0a 90 	R0=R1-\|\+R2 \(CO\);
+ 134:	00 c4 25 96 	R3=R4-\|\+R5 \(CO\);
+ 138:	00 c4 38 9c 	R6=R7-\|\+R0 \(CO\);
+ 13c:	00 c4 13 92 	R1=R2-\|\+R3 \(CO\);
+ 140:	00 c4 1d 98 	R4=R3-\|\+R5 \(CO\);
+ 144:	00 c4 1f 9c 	R6=R3-\|\+R7 \(CO\);
+ 148:	00 c4 0a b0 	R0=R1-\|\+R2 \(SCO\);
+ 14c:	00 c4 25 b6 	R3=R4-\|\+R5 \(SCO\);
+ 150:	00 c4 38 bc 	R6=R7-\|\+R0 \(SCO\);
+ 154:	00 c4 13 b2 	R1=R2-\|\+R3 \(SCO\);
+ 158:	00 c4 1d b8 	R4=R3-\|\+R5 \(SCO\);
+ 15c:	00 c4 1f bc 	R6=R3-\|\+R7 \(SCO\);
+ 160:	00 c4 11 50 	R0=R2\+\|-R1 \(CO\);
+ 164:	00 c4 0a 40 	R0=R1\+\|-R2 ;
+ 168:	00 c4 25 46 	R3=R4\+\|-R5 ;
+ 16c:	00 c4 38 4c 	R6=R7\+\|-R0 ;
+ 170:	00 c4 13 42 	R1=R2\+\|-R3 ;
+ 174:	00 c4 1d 48 	R4=R3\+\|-R5 ;
+ 178:	00 c4 1f 4c 	R6=R3\+\|-R7 ;
+ 17c:	00 c4 0a 60 	R0=R1\+\|-R2 \(S\);
+ 180:	00 c4 25 66 	R3=R4\+\|-R5 \(S\);
+ 184:	00 c4 38 6c 	R6=R7\+\|-R0 \(S\);
+ 188:	00 c4 13 62 	R1=R2\+\|-R3 \(S\);
+ 18c:	00 c4 1d 68 	R4=R3\+\|-R5 \(S\);
+ 190:	00 c4 1f 6c 	R6=R3\+\|-R7 \(S\);
+ 194:	00 c4 0a 50 	R0=R1\+\|-R2 \(CO\);
+ 198:	00 c4 25 56 	R3=R4\+\|-R5 \(CO\);
+ 19c:	00 c4 38 5c 	R6=R7\+\|-R0 \(CO\);
+ 1a0:	00 c4 13 52 	R1=R2\+\|-R3 \(CO\);
+ 1a4:	00 c4 1d 58 	R4=R3\+\|-R5 \(CO\);
+ 1a8:	00 c4 1f 5c 	R6=R3\+\|-R7 \(CO\);
+ 1ac:	00 c4 0a 70 	R0=R1\+\|-R2 \(SCO\);
+ 1b0:	00 c4 25 76 	R3=R4\+\|-R5 \(SCO\);
+ 1b4:	00 c4 38 7c 	R6=R7\+\|-R0 \(SCO\);
+ 1b8:	00 c4 13 72 	R1=R2\+\|-R3 \(SCO\);
+ 1bc:	00 c4 1d 78 	R4=R3\+\|-R5 \(SCO\);
+ 1c0:	00 c4 1f 7c 	R6=R3\+\|-R7 \(SCO\);
+ 1c4:	00 c4 1e fe 	R7=R3-\|-R6 \(SCO\);
+ 1c8:	00 c4 0a c0 	R0=R1-\|-R2 ;
+ 1cc:	00 c4 25 c6 	R3=R4-\|-R5 ;
+ 1d0:	00 c4 38 cc 	R6=R7-\|-R0 ;
+ 1d4:	00 c4 13 c2 	R1=R2-\|-R3 ;
+ 1d8:	00 c4 1d c8 	R4=R3-\|-R5 ;
+ 1dc:	00 c4 1f cc 	R6=R3-\|-R7 ;
+ 1e0:	00 c4 0a e0 	R0=R1-\|-R2 \(S\);
+ 1e4:	00 c4 25 e6 	R3=R4-\|-R5 \(S\);
+ 1e8:	00 c4 38 ec 	R6=R7-\|-R0 \(S\);
+ 1ec:	00 c4 13 e2 	R1=R2-\|-R3 \(S\);
+ 1f0:	00 c4 1d e8 	R4=R3-\|-R5 \(S\);
+ 1f4:	00 c4 1f ec 	R6=R3-\|-R7 \(S\);
+ 1f8:	00 c4 0a d0 	R0=R1-\|-R2 \(CO\);
+ 1fc:	00 c4 25 d6 	R3=R4-\|-R5 \(CO\);
+ 200:	00 c4 38 dc 	R6=R7-\|-R0 \(CO\);
+ 204:	00 c4 13 d2 	R1=R2-\|-R3 \(CO\);
+ 208:	00 c4 1d d8 	R4=R3-\|-R5 \(CO\);
+ 20c:	00 c4 1f dc 	R6=R3-\|-R7 \(CO\);
+ 210:	00 c4 0a f0 	R0=R1-\|-R2 \(SCO\);
+ 214:	00 c4 25 f6 	R3=R4-\|-R5 \(SCO\);
+ 218:	00 c4 38 fc 	R6=R7-\|-R0 \(SCO\);
+ 21c:	00 c4 13 f2 	R1=R2-\|-R3 \(SCO\);
+ 220:	00 c4 1d f8 	R4=R3-\|-R5 \(SCO\);
+ 224:	00 c4 1f fc 	R6=R3-\|-R7 \(SCO\);
+ 228:	01 c4 5c 0f 	R5=R3\+\|\+R4,R7=R3-\|-R4;
+ 22c:	01 c4 0a 0e 	R0=R1\+\|\+R2,R7=R1-\|-R2;
+ 230:	01 c4 e5 0c 	R3=R4\+\|\+R5,R6=R4-\|-R5;
+ 234:	01 c4 b8 0b 	R6=R7\+\|\+R0,R5=R7-\|-R0;
+ 238:	01 c4 53 08 	R1=R2\+\|\+R3,R4=R2-\|-R3;
+ 23c:	01 c4 1d 07 	R4=R3\+\|\+R5,R3=R3-\|-R5;
+ 240:	01 c4 9f 05 	R6=R3\+\|\+R7,R2=R3-\|-R7;
+ 244:	01 c4 0a 2e 	R0=R1\+\|\+R2,R7=R1-\|-R2\(S\);
+ 248:	01 c4 e5 2c 	R3=R4\+\|\+R5,R6=R4-\|-R5\(S\);
+ 24c:	01 c4 b8 2b 	R6=R7\+\|\+R0,R5=R7-\|-R0\(S\);
+ 250:	01 c4 53 28 	R1=R2\+\|\+R3,R4=R2-\|-R3\(S\);
+ 254:	01 c4 1d 27 	R4=R3\+\|\+R5,R3=R3-\|-R5\(S\);
+ 258:	01 c4 9f 25 	R6=R3\+\|\+R7,R2=R3-\|-R7\(S\);
+ 25c:	01 c4 0a 1e 	R0=R1\+\|\+R2,R7=R1-\|-R2\(CO\);
+ 260:	01 c4 e5 1c 	R3=R4\+\|\+R5,R6=R4-\|-R5\(CO\);
+ 264:	01 c4 b8 1b 	R6=R7\+\|\+R0,R5=R7-\|-R0\(CO\);
+ 268:	01 c4 53 18 	R1=R2\+\|\+R3,R4=R2-\|-R3\(CO\);
+ 26c:	01 c4 1d 17 	R4=R3\+\|\+R5,R3=R3-\|-R5\(CO\);
+ 270:	01 c4 9f 15 	R6=R3\+\|\+R7,R2=R3-\|-R7\(CO\);
+ 274:	01 c4 0a 3e 	R0=R1\+\|\+R2,R7=R1-\|-R2\(SCO\);
+ 278:	01 c4 e5 3c 	R3=R4\+\|\+R5,R6=R4-\|-R5\(SCO\);
+ 27c:	01 c4 b8 3b 	R6=R7\+\|\+R0,R5=R7-\|-R0\(SCO\);
+ 280:	01 c4 53 38 	R1=R2\+\|\+R3,R4=R2-\|-R3\(SCO\);
+ 284:	01 c4 1d 37 	R4=R3\+\|\+R5,R3=R3-\|-R5\(SCO\);
+ 288:	01 c4 9f 35 	R6=R3\+\|\+R7,R2=R3-\|-R7\(SCO\);
+ 28c:	01 c4 0a 8e 	R0=R1\+\|\+R2,R7=R1-\|-R2\(ASR\);
+ 290:	01 c4 e5 8c 	R3=R4\+\|\+R5,R6=R4-\|-R5\(ASR\);
+ 294:	01 c4 b8 8b 	R6=R7\+\|\+R0,R5=R7-\|-R0\(ASR\);
+ 298:	01 c4 53 88 	R1=R2\+\|\+R3,R4=R2-\|-R3\(ASR\);
+ 29c:	01 c4 1d 87 	R4=R3\+\|\+R5,R3=R3-\|-R5\(ASR\);
+ 2a0:	01 c4 9f 85 	R6=R3\+\|\+R7,R2=R3-\|-R7\(ASR\);
+ 2a4:	01 c4 0a ce 	R0=R1\+\|\+R2,R7=R1-\|-R2\(ASL\);
+ 2a8:	01 c4 e5 cc 	R3=R4\+\|\+R5,R6=R4-\|-R5\(ASL\);
+ 2ac:	01 c4 b8 cb 	R6=R7\+\|\+R0,R5=R7-\|-R0\(ASL\);
+ 2b0:	01 c4 53 c8 	R1=R2\+\|\+R3,R4=R2-\|-R3\(ASL\);
+ 2b4:	01 c4 1d c7 	R4=R3\+\|\+R5,R3=R3-\|-R5\(ASL\);
+ 2b8:	01 c4 9f c5 	R6=R3\+\|\+R7,R2=R3-\|-R7\(ASL\);
+ 2bc:	01 c4 0a ae 	R0=R1\+\|\+R2,R7=R1-\|-R2\(S,ASR\);
+ 2c0:	01 c4 e5 ac 	R3=R4\+\|\+R5,R6=R4-\|-R5\(S,ASR\);
+ 2c4:	01 c4 b8 ab 	R6=R7\+\|\+R0,R5=R7-\|-R0\(S,ASR\);
+ 2c8:	01 c4 53 a8 	R1=R2\+\|\+R3,R4=R2-\|-R3\(S,ASR\);
+ 2cc:	01 c4 1d a7 	R4=R3\+\|\+R5,R3=R3-\|-R5\(S,ASR\);
+ 2d0:	01 c4 9f a5 	R6=R3\+\|\+R7,R2=R3-\|-R7\(S,ASR\);
+ 2d4:	01 c4 0a 9e 	R0=R1\+\|\+R2,R7=R1-\|-R2\(CO,ASR\);
+ 2d8:	01 c4 e5 9c 	R3=R4\+\|\+R5,R6=R4-\|-R5\(CO,ASR\);
+ 2dc:	01 c4 b8 9b 	R6=R7\+\|\+R0,R5=R7-\|-R0\(CO,ASR\);
+ 2e0:	01 c4 53 98 	R1=R2\+\|\+R3,R4=R2-\|-R3\(CO,ASR\);
+ 2e4:	01 c4 1d 97 	R4=R3\+\|\+R5,R3=R3-\|-R5\(CO,ASR\);
+ 2e8:	01 c4 9f 95 	R6=R3\+\|\+R7,R2=R3-\|-R7\(CO,ASR\);
+ 2ec:	01 c4 0a be 	R0=R1\+\|\+R2,R7=R1-\|-R2\(SCO,ASR\);
+ 2f0:	01 c4 e5 bc 	R3=R4\+\|\+R5,R6=R4-\|-R5\(SCO,ASR\);
+ 2f4:	01 c4 b8 bb 	R6=R7\+\|\+R0,R5=R7-\|-R0\(SCO,ASR\);
+ 2f8:	01 c4 53 b8 	R1=R2\+\|\+R3,R4=R2-\|-R3\(SCO,ASR\);
+ 2fc:	01 c4 1d b7 	R4=R3\+\|\+R5,R3=R3-\|-R5\(SCO,ASR\);
+ 300:	01 c4 9f b5 	R6=R3\+\|\+R7,R2=R3-\|-R7\(SCO,ASR\);
+ 304:	01 c4 0a ee 	R0=R1\+\|\+R2,R7=R1-\|-R2\(S,ASL\);
+ 308:	01 c4 e5 ec 	R3=R4\+\|\+R5,R6=R4-\|-R5\(S,ASL\);
+ 30c:	01 c4 b8 eb 	R6=R7\+\|\+R0,R5=R7-\|-R0\(S,ASL\);
+ 310:	01 c4 53 e8 	R1=R2\+\|\+R3,R4=R2-\|-R3\(S,ASL\);
+ 314:	01 c4 1d e7 	R4=R3\+\|\+R5,R3=R3-\|-R5\(S,ASL\);
+ 318:	01 c4 9f e5 	R6=R3\+\|\+R7,R2=R3-\|-R7\(S,ASL\);
+ 31c:	01 c4 0a de 	R0=R1\+\|\+R2,R7=R1-\|-R2\(CO,ASL\);
+ 320:	01 c4 e5 dc 	R3=R4\+\|\+R5,R6=R4-\|-R5\(CO,ASL\);
+ 324:	01 c4 b8 db 	R6=R7\+\|\+R0,R5=R7-\|-R0\(CO,ASL\);
+ 328:	01 c4 53 d8 	R1=R2\+\|\+R3,R4=R2-\|-R3\(CO,ASL\);
+ 32c:	01 c4 1d d7 	R4=R3\+\|\+R5,R3=R3-\|-R5\(CO,ASL\);
+ 330:	01 c4 9f d5 	R6=R3\+\|\+R7,R2=R3-\|-R7\(CO,ASL\);
+ 334:	01 c4 0a fe 	R0=R1\+\|\+R2,R7=R1-\|-R2\(SCO,ASL\);
+ 338:	01 c4 e5 fc 	R3=R4\+\|\+R5,R6=R4-\|-R5\(SCO,ASL\);
+ 33c:	01 c4 b8 fb 	R6=R7\+\|\+R0,R5=R7-\|-R0\(SCO,ASL\);
+ 340:	01 c4 53 f8 	R1=R2\+\|\+R3,R4=R2-\|-R3\(SCO,ASL\);
+ 344:	01 c4 1d f7 	R4=R3\+\|\+R5,R3=R3-\|-R5\(SCO,ASL\);
+ 348:	01 c4 9f f5 	R6=R3\+\|\+R7,R2=R3-\|-R7\(SCO,ASL\);
+ 34c:	21 c4 5c 0f 	R5=R3\+\|-R4,R7=R3-\|\+R4;
+ 350:	21 c4 0a 0e 	R0=R1\+\|-R2,R7=R1-\|\+R2;
+ 354:	21 c4 e5 0c 	R3=R4\+\|-R5,R6=R4-\|\+R5;
+ 358:	21 c4 b8 0b 	R6=R7\+\|-R0,R5=R7-\|\+R0;
+ 35c:	21 c4 53 08 	R1=R2\+\|-R3,R4=R2-\|\+R3;
+ 360:	21 c4 1d 07 	R4=R3\+\|-R5,R3=R3-\|\+R5;
+ 364:	21 c4 9f 05 	R6=R3\+\|-R7,R2=R3-\|\+R7;
+ 368:	21 c4 0a 2e 	R0=R1\+\|-R2,R7=R1-\|\+R2\(S\);
+ 36c:	21 c4 e5 2c 	R3=R4\+\|-R5,R6=R4-\|\+R5\(S\);
+ 370:	21 c4 b8 2b 	R6=R7\+\|-R0,R5=R7-\|\+R0\(S\);
+ 374:	21 c4 53 28 	R1=R2\+\|-R3,R4=R2-\|\+R3\(S\);
+ 378:	21 c4 1d 27 	R4=R3\+\|-R5,R3=R3-\|\+R5\(S\);
+ 37c:	21 c4 9f 25 	R6=R3\+\|-R7,R2=R3-\|\+R7\(S\);
+ 380:	21 c4 0a 1e 	R0=R1\+\|-R2,R7=R1-\|\+R2\(CO\);
+ 384:	21 c4 e5 1c 	R3=R4\+\|-R5,R6=R4-\|\+R5\(CO\);
+ 388:	21 c4 b8 1b 	R6=R7\+\|-R0,R5=R7-\|\+R0\(CO\);
+ 38c:	21 c4 53 18 	R1=R2\+\|-R3,R4=R2-\|\+R3\(CO\);
+ 390:	21 c4 1d 17 	R4=R3\+\|-R5,R3=R3-\|\+R5\(CO\);
+ 394:	21 c4 9f 15 	R6=R3\+\|-R7,R2=R3-\|\+R7\(CO\);
+ 398:	21 c4 0a 3e 	R0=R1\+\|-R2,R7=R1-\|\+R2\(SCO\);
+ 39c:	21 c4 e5 3c 	R3=R4\+\|-R5,R6=R4-\|\+R5\(SCO\);
+ 3a0:	21 c4 b8 3b 	R6=R7\+\|-R0,R5=R7-\|\+R0\(SCO\);
+ 3a4:	21 c4 53 38 	R1=R2\+\|-R3,R4=R2-\|\+R3\(SCO\);
+ 3a8:	21 c4 1d 37 	R4=R3\+\|-R5,R3=R3-\|\+R5\(SCO\);
+ 3ac:	21 c4 9f 35 	R6=R3\+\|-R7,R2=R3-\|\+R7\(SCO\);
+ 3b0:	21 c4 0a 8e 	R0=R1\+\|-R2,R7=R1-\|\+R2\(ASR\);
+ 3b4:	21 c4 e5 8c 	R3=R4\+\|-R5,R6=R4-\|\+R5\(ASR\);
+ 3b8:	21 c4 b8 8b 	R6=R7\+\|-R0,R5=R7-\|\+R0\(ASR\);
+ 3bc:	21 c4 53 88 	R1=R2\+\|-R3,R4=R2-\|\+R3\(ASR\);
+ 3c0:	21 c4 1d 87 	R4=R3\+\|-R5,R3=R3-\|\+R5\(ASR\);
+ 3c4:	21 c4 9f 85 	R6=R3\+\|-R7,R2=R3-\|\+R7\(ASR\);
+ 3c8:	21 c4 0a ce 	R0=R1\+\|-R2,R7=R1-\|\+R2\(ASL\);
+ 3cc:	21 c4 e5 cc 	R3=R4\+\|-R5,R6=R4-\|\+R5\(ASL\);
+ 3d0:	21 c4 b8 cb 	R6=R7\+\|-R0,R5=R7-\|\+R0\(ASL\);
+ 3d4:	21 c4 53 c8 	R1=R2\+\|-R3,R4=R2-\|\+R3\(ASL\);
+ 3d8:	21 c4 1d c7 	R4=R3\+\|-R5,R3=R3-\|\+R5\(ASL\);
+ 3dc:	21 c4 9f c5 	R6=R3\+\|-R7,R2=R3-\|\+R7\(ASL\);
+ 3e0:	21 c4 0a ae 	R0=R1\+\|-R2,R7=R1-\|\+R2\(S,ASR\);
+ 3e4:	21 c4 e5 ac 	R3=R4\+\|-R5,R6=R4-\|\+R5\(S,ASR\);
+ 3e8:	21 c4 b8 ab 	R6=R7\+\|-R0,R5=R7-\|\+R0\(S,ASR\);
+ 3ec:	21 c4 53 a8 	R1=R2\+\|-R3,R4=R2-\|\+R3\(S,ASR\);
+ 3f0:	21 c4 1d a7 	R4=R3\+\|-R5,R3=R3-\|\+R5\(S,ASR\);
+ 3f4:	21 c4 9f a5 	R6=R3\+\|-R7,R2=R3-\|\+R7\(S,ASR\);
+ 3f8:	21 c4 0a 9e 	R0=R1\+\|-R2,R7=R1-\|\+R2\(CO,ASR\);
+ 3fc:	21 c4 e5 9c 	R3=R4\+\|-R5,R6=R4-\|\+R5\(CO,ASR\);
+ 400:	21 c4 b8 9b 	R6=R7\+\|-R0,R5=R7-\|\+R0\(CO,ASR\);
+ 404:	21 c4 53 98 	R1=R2\+\|-R3,R4=R2-\|\+R3\(CO,ASR\);
+ 408:	21 c4 1d 97 	R4=R3\+\|-R5,R3=R3-\|\+R5\(CO,ASR\);
+ 40c:	21 c4 9f 95 	R6=R3\+\|-R7,R2=R3-\|\+R7\(CO,ASR\);
+ 410:	21 c4 0a be 	R0=R1\+\|-R2,R7=R1-\|\+R2\(SCO,ASR\);
+ 414:	21 c4 e5 bc 	R3=R4\+\|-R5,R6=R4-\|\+R5\(SCO,ASR\);
+ 418:	21 c4 b8 bb 	R6=R7\+\|-R0,R5=R7-\|\+R0\(SCO,ASR\);
+ 41c:	21 c4 53 b8 	R1=R2\+\|-R3,R4=R2-\|\+R3\(SCO,ASR\);
+ 420:	21 c4 1d b7 	R4=R3\+\|-R5,R3=R3-\|\+R5\(SCO,ASR\);
+ 424:	21 c4 9f b5 	R6=R3\+\|-R7,R2=R3-\|\+R7\(SCO,ASR\);
+ 428:	21 c4 0a ee 	R0=R1\+\|-R2,R7=R1-\|\+R2\(S,ASL\);
+ 42c:	21 c4 e5 ec 	R3=R4\+\|-R5,R6=R4-\|\+R5\(S,ASL\);
+ 430:	21 c4 b8 eb 	R6=R7\+\|-R0,R5=R7-\|\+R0\(S,ASL\);
+ 434:	21 c4 53 e8 	R1=R2\+\|-R3,R4=R2-\|\+R3\(S,ASL\);
+ 438:	21 c4 1d e7 	R4=R3\+\|-R5,R3=R3-\|\+R5\(S,ASL\);
+ 43c:	21 c4 9f e5 	R6=R3\+\|-R7,R2=R3-\|\+R7\(S,ASL\);
+ 440:	21 c4 0a de 	R0=R1\+\|-R2,R7=R1-\|\+R2\(CO,ASL\);
+ 444:	21 c4 e5 dc 	R3=R4\+\|-R5,R6=R4-\|\+R5\(CO,ASL\);
+ 448:	21 c4 b8 db 	R6=R7\+\|-R0,R5=R7-\|\+R0\(CO,ASL\);
+ 44c:	21 c4 53 d8 	R1=R2\+\|-R3,R4=R2-\|\+R3\(CO,ASL\);
+ 450:	21 c4 1d d7 	R4=R3\+\|-R5,R3=R3-\|\+R5\(CO,ASL\);
+ 454:	21 c4 9f d5 	R6=R3\+\|-R7,R2=R3-\|\+R7\(CO,ASL\);
+ 458:	21 c4 0a fe 	R0=R1\+\|-R2,R7=R1-\|\+R2\(SCO,ASL\);
+ 45c:	21 c4 e5 fc 	R3=R4\+\|-R5,R6=R4-\|\+R5\(SCO,ASL\);
+ 460:	21 c4 b8 fb 	R6=R7\+\|-R0,R5=R7-\|\+R0\(SCO,ASL\);
+ 464:	21 c4 53 f8 	R1=R2\+\|-R3,R4=R2-\|\+R3\(SCO,ASL\);
+ 468:	21 c4 1d f7 	R4=R3\+\|-R5,R3=R3-\|\+R5\(SCO,ASL\);
+ 46c:	21 c4 9f f5 	R6=R3\+\|-R7,R2=R3-\|\+R7\(SCO,ASL\);
+ 470:	04 c4 81 86 	R2=R0\+R1,R3=R0-R1 \(NS\);
+ 474:	04 c4 c1 81 	R7=R0\+R1,R0=R0-R1 \(NS\);
+ 478:	04 c4 8a 83 	R6=R1\+R2,R1=R1-R2 \(NS\);
+ 47c:	04 c4 53 85 	R5=R2\+R3,R2=R2-R3 \(NS\);
+ 480:	04 c4 1c 87 	R4=R3\+R4,R3=R3-R4 \(NS\);
+ 484:	04 c4 e5 88 	R3=R4\+R5,R4=R4-R5 \(NS\);
+ 488:	04 c4 ae 8a 	R2=R5\+R6,R5=R5-R6 \(NS\);
+ 48c:	04 c4 77 8c 	R1=R6\+R7,R6=R6-R7 \(NS\);
+ 490:	04 c4 38 8e 	R0=R7\+R0,R7=R7-R0 \(NS\);
+ 494:	04 c4 81 a6 	R2=R0\+R1,R3=R0-R1 \(S\);
+ 498:	04 c4 c1 a1 	R7=R0\+R1,R0=R0-R1 \(S\);
+ 49c:	04 c4 8a a3 	R6=R1\+R2,R1=R1-R2 \(S\);
+ 4a0:	04 c4 53 a5 	R5=R2\+R3,R2=R2-R3 \(S\);
+ 4a4:	04 c4 1c a7 	R4=R3\+R4,R3=R3-R4 \(S\);
+ 4a8:	04 c4 e5 a8 	R3=R4\+R5,R4=R4-R5 \(S\);
+ 4ac:	04 c4 ae aa 	R2=R5\+R6,R5=R5-R6 \(S\);
+ 4b0:	04 c4 77 ac 	R1=R6\+R7,R6=R6-R7 \(S\);
+ 4b4:	04 c4 38 ae 	R0=R7\+R0,R7=R7-R0 \(S\);
+ 4b8:	11 c4 [0-3][[:xdigit:]] 02 	R0=A1\+A0,R1=A1-A0 \(NS\);
+ 4bc:	11 c4 [8|9|a|b][[:xdigit:]] 06 	R2=A1\+A0,R3=A1-A0 \(NS\);
+ 4c0:	11 c4 [0-3][[:xdigit:]] 0b 	R4=A1\+A0,R5=A1-A0 \(NS\);
+ 4c4:	11 c4 [8|9|a|b][[:xdigit:]] 0f 	R6=A1\+A0,R7=A1-A0 \(NS\);
+ 4c8:	11 c4 [4-7][[:xdigit:]] 00 	R1=A1\+A0,R0=A1-A0 \(NS\);
+ 4cc:	11 c4 [c-f][[:xdigit:]] 04 	R3=A1\+A0,R2=A1-A0 \(NS\);
+ 4d0:	11 c4 [4-7][[:xdigit:]] 09 	R5=A1\+A0,R4=A1-A0 \(NS\);
+ 4d4:	11 c4 [0-3][[:xdigit:]] 22 	R0=A1\+A0,R1=A1-A0 \(S\);
+ 4d8:	11 c4 [8|9|a|b][[:xdigit:]] 26 	R2=A1\+A0,R3=A1-A0 \(S\);
+ 4dc:	11 c4 [0-3][[:xdigit:]] 2b 	R4=A1\+A0,R5=A1-A0 \(S\);
+ 4e0:	11 c4 [8|9|a|b][[:xdigit:]] 2f 	R6=A1\+A0,R7=A1-A0 \(S\);
+ 4e4:	11 c4 [4-7][[:xdigit:]] 20 	R1=A1\+A0,R0=A1-A0 \(S\);
+ 4e8:	11 c4 [c-f][[:xdigit:]] 24 	R3=A1\+A0,R2=A1-A0 \(S\);
+ 4ec:	11 c4 [4-7][[:xdigit:]] 29 	R5=A1\+A0,R4=A1-A0 \(S\);
+ 4f0:	11 c4 [0-3][[:xdigit:]] 6d 	R4=A0\+A1,R6=A0-A1 \(S\);
+ 4f4:	11 c4 [0-3][[:xdigit:]] 42 	R0=A0\+A1,R1=A0-A1 \(NS\);
+ 4f8:	11 c4 [8|9|a|b][[:xdigit:]] 46 	R2=A0\+A1,R3=A0-A1 \(NS\);
+ 4fc:	11 c4 [0-3][[:xdigit:]] 4b 	R4=A0\+A1,R5=A0-A1 \(NS\);
+ 500:	11 c4 [8|9|a|b][[:xdigit:]] 4f 	R6=A0\+A1,R7=A0-A1 \(NS\);
+ 504:	11 c4 [4-7][[:xdigit:]] 40 	R1=A0\+A1,R0=A0-A1 \(NS\);
+ 508:	11 c4 [c-f][[:xdigit:]] 44 	R3=A0\+A1,R2=A0-A1 \(NS\);
+ 50c:	11 c4 [4-7][[:xdigit:]] 49 	R5=A0\+A1,R4=A0-A1 \(NS\);
+ 510:	11 c4 [0-3][[:xdigit:]] 62 	R0=A0\+A1,R1=A0-A1 \(S\);
+ 514:	11 c4 [8|9|a|b][[:xdigit:]] 66 	R2=A0\+A1,R3=A0-A1 \(S\);
+ 518:	11 c4 [0-3][[:xdigit:]] 6b 	R4=A0\+A1,R5=A0-A1 \(S\);
+ 51c:	11 c4 [8|9|a|b][[:xdigit:]] 6f 	R6=A0\+A1,R7=A0-A1 \(S\);
+ 520:	11 c4 [4-7][[:xdigit:]] 60 	R1=A0\+A1,R0=A0-A1 \(S\);
+ 524:	11 c4 [c-f][[:xdigit:]] 64 	R3=A0\+A1,R2=A0-A1 \(S\);
+ 528:	11 c4 [4-7][[:xdigit:]] 69 	R5=A0\+A1,R4=A0-A1 \(S\);
+ 52c:	81 c6 d8 01 	R0=R0>>>0x5 \(V\);
+ 530:	81 c6 d9 01 	R0=R1>>>0x5 \(V\);
+ 534:	81 c6 db 05 	R2=R3>>>0x5 \(V\);
+ 538:	81 c6 dd 09 	R4=R5>>>0x5 \(V\);
+ 53c:	81 c6 df 0d 	R6=R7>>>0x5 \(V\);
+ 540:	81 c6 d8 03 	R1=R0>>>0x5 \(V\);
+ 544:	81 c6 da 07 	R3=R2>>>0x5 \(V\);
+ 548:	81 c6 dc 0b 	R5=R4>>>0x5 \(V\);
+ 54c:	81 c6 de 0f 	R7=R6>>>0x5 \(V\);
+ 550:	81 c6 29 40 	R0=R1<<0x5 \(V, S\);
+ 554:	81 c6 2b 44 	R2=R3<<0x5 \(V, S\);
+ 558:	81 c6 2d 48 	R4=R5<<0x5 \(V, S\);
+ 55c:	81 c6 2f 4c 	R6=R7<<0x5 \(V, S\);
+ 560:	81 c6 28 42 	R1=R0<<0x5 \(V, S\);
+ 564:	81 c6 2a 46 	R3=R2<<0x5 \(V, S\);
+ 568:	81 c6 2c 4a 	R5=R4<<0x5 \(V, S\);
+ 56c:	81 c6 2e 4e 	R7=R6<<0x5 \(V, S\);
+ 570:	01 c6 2f 04 	R2= ASHIFT R7 BY R5.L\(V\);
+ 574:	01 c6 11 00 	R0= ASHIFT R1 BY R2.L\(V\);
+ 578:	01 c6 2c 06 	R3= ASHIFT R4 BY R5.L\(V\);
+ 57c:	01 c6 07 0c 	R6= ASHIFT R7 BY R0.L\(V\);
+ 580:	01 c6 1a 02 	R1= ASHIFT R2 BY R3.L\(V\);
+ 584:	01 c6 35 08 	R4= ASHIFT R5 BY R6.L\(V\);
+ 588:	01 c6 08 0e 	R7= ASHIFT R0 BY R1.L\(V\);
+ 58c:	01 c6 23 04 	R2= ASHIFT R3 BY R4.L\(V\);
+ 590:	01 c6 3e 0a 	R5= ASHIFT R6 BY R7.L\(V\);
+ 594:	01 c6 11 40 	R0= ASHIFT R1 BY R2.L\(V,S\);
+ 598:	01 c6 2c 46 	R3= ASHIFT R4 BY R5.L\(V,S\);
+ 59c:	01 c6 07 4c 	R6= ASHIFT R7 BY R0.L\(V,S\);
+ 5a0:	01 c6 1a 42 	R1= ASHIFT R2 BY R3.L\(V,S\);
+ 5a4:	01 c6 35 48 	R4= ASHIFT R5 BY R6.L\(V,S\);
+ 5a8:	01 c6 08 4e 	R7= ASHIFT R0 BY R1.L\(V,S\);
+ 5ac:	01 c6 23 44 	R2= ASHIFT R3 BY R4.L\(V,S\);
+ 5b0:	01 c6 3e 4a 	R5= ASHIFT R6 BY R7.L\(V,S\);
+ 5b4:	81 c6 d9 81 	R0=R1 >> 0x5 \(V\);
+ 5b8:	81 c6 db 85 	R2=R3 >> 0x5 \(V\);
+ 5bc:	81 c6 dd 89 	R4=R5 >> 0x5 \(V\);
+ 5c0:	81 c6 df 8d 	R6=R7 >> 0x5 \(V\);
+ 5c4:	81 c6 d8 83 	R1=R0 >> 0x5 \(V\);
+ 5c8:	81 c6 da 87 	R3=R2 >> 0x5 \(V\);
+ 5cc:	81 c6 dc 8b 	R5=R4 >> 0x5 \(V\);
+ 5d0:	81 c6 de 8f 	R7=R6 >> 0x5 \(V\);
+ 5d4:	81 c6 29 80 	R0=R1<<0x5 \(V\);
+ 5d8:	81 c6 2b 84 	R2=R3<<0x5 \(V\);
+ 5dc:	81 c6 2d 88 	R4=R5<<0x5 \(V\);
+ 5e0:	81 c6 2f 8c 	R6=R7<<0x5 \(V\);
+ 5e4:	81 c6 28 82 	R1=R0<<0x5 \(V\);
+ 5e8:	81 c6 2a 86 	R3=R2<<0x5 \(V\);
+ 5ec:	81 c6 2c 8a 	R5=R4<<0x5 \(V\);
+ 5f0:	81 c6 2e 8e 	R7=R6<<0x5 \(V\);
+ 5f4:	01 c6 11 80 	R0=SHIFT R1 BY R2.L\(V\);
+ 5f8:	01 c6 2c 86 	R3=SHIFT R4 BY R5.L\(V\);
+ 5fc:	01 c6 07 8c 	R6=SHIFT R7 BY R0.L\(V\);
+ 600:	01 c6 1a 82 	R1=SHIFT R2 BY R3.L\(V\);
+ 604:	01 c6 35 88 	R4=SHIFT R5 BY R6.L\(V\);
+ 608:	01 c6 08 8e 	R7=SHIFT R0 BY R1.L\(V\);
+ 60c:	01 c6 23 84 	R2=SHIFT R3 BY R4.L\(V\);
+ 610:	01 c6 3e 8a 	R5=SHIFT R6 BY R7.L\(V\);
+ 614:	06 c4 08 0e 	R7=MAX\(R1,R0\)\(V\);
+ 618:	06 c4 0a 00 	R0=MAX\(R1,R2\)\(V\);
+ 61c:	06 c4 25 06 	R3=MAX\(R4,R5\)\(V\);
+ 620:	06 c4 38 0c 	R6=MAX\(R7,R0\)\(V\);
+ 624:	06 c4 13 02 	R1=MAX\(R2,R3\)\(V\);
+ 628:	06 c4 2e 08 	R4=MAX\(R5,R6\)\(V\);
+ 62c:	06 c4 01 0e 	R7=MAX\(R0,R1\)\(V\);
+ 630:	06 c4 1c 04 	R2=MAX\(R3,R4\)\(V\);
+ 634:	06 c4 37 0a 	R5=MAX\(R6,R7\)\(V\);
+ 638:	06 c4 0a 40 	R0=MIN\(R1,R2\)\(V\);
+ 63c:	06 c4 25 46 	R3=MIN\(R4,R5\)\(V\);
+ 640:	06 c4 38 4c 	R6=MIN\(R7,R0\)\(V\);
+ 644:	06 c4 13 42 	R1=MIN\(R2,R3\)\(V\);
+ 648:	06 c4 2e 48 	R4=MIN\(R5,R6\)\(V\);
+ 64c:	06 c4 01 4e 	R7=MIN\(R0,R1\)\(V\);
+ 650:	06 c4 1c 44 	R2=MIN\(R3,R4\)\(V\);
+ 654:	06 c4 37 4a 	R5=MIN\(R6,R7\)\(V\);
+ 658:	04 c2 be 66 	R2.H = R7.L \* R6.H, R2 = R7.H \* R6.H;
+ 65c:	04 c2 08 e1 	R4.H = R1.H \* R0.H, R4 = R1.L \* R0.L;
+ 660:	14 c2 1a a0 	R0.H = R3.H \* R2.L \(M\), R0 = R3.L \* R2.L;
+ 664:	00 c0 13 46 	a1 = R2.L \* R3.H, a0 = R2.H \* R3.H;
+ 668:	01 c0 08 c0 	a1 \+= R1.H \* R0.H, a0 = R1.L \* R0.L;
+ 66c:	01 c0 1b 96 	a1 \+= R3.H \* R3.L, a0 -= R3.H \* R3.H;
+ 670:	10 c0 1a 88 	a1 = R3.H \* R2.L \(M\), a0 \+= R3.L \* R2.L;
+ 674:	90 c0 3c c8 	a1 = R7.H \* R4.H \(M\), a0 \+= R7.L \* R4.L \(FU\);
+ 678:	01 c1 1a c0 	a1 \+= R3.H \* R2.H, a0 = R3.L \* R2.L \(IS\);
+ 67c:	60 c0 37 c8 	a1 = R6.H \* R7.H, a0 \+= R6.L \* R7.L \(W32\);
+ 680:	04 c0 be 66 	R2.H = \(a1 = R7.L \* R6.H\), R2.L = \(a0 = R7.H \* R6.H\);
+ 684:	05 c0 08 e1 	R4.H = \(a1 \+= R1.H \* R0.H\), R4.L = \(a0 = R1.L \* R0.L\);
+ 688:	05 c0 f5 a7 	R7.H = \(a1 \+= R6.H \* R5.L\), R7.L = \(a0 = R6.H \* R5.H\);
+ 68c:	14 c0 3c a8 	R0.H = \(a1 = R7.H \* R4.L\) \(M\), R0.L = \(a0 \+= R7.L \* R4.L\);
+ 690:	94 c0 5a e9 	R5.H = \(a1 = R3.H \* R2.H\) \(M\), R5.L = \(a0 \+= R3.L \* R2.L\) \(FU\);
+ 694:	05 c1 1a e0 	R0.H = \(a1 \+= R3.H \* R2.H\), R0.L = \(a0 = R3.L \* R2.L\) \(IS\);
+ 698:	04 c0 51 c9 	R5.H = \(a1 = R2.H \* R1.H\), a0 \+= R2.L \* R1.L;
+ 69c:	14 c0 d1 c0 	R3.H = \(a1 = R2.H \* R1.H\) \(M\), a0 = R2.L \* R1.L;
+ 6a0:	27 c0 c1 28 	R3.H = A1, R3.L = \(a0 \+= R0.L \* R1.L\) \(S2RND\);
+ 6a4:	25 c1 3e e8 	R0.H = \(a1 \+= R7.H \* R6.H\), R0.L = \(a0 \+= R7.L \* R6.L\) \(ISS2\);
+ 6a8:	0c c0 b7 e0 	R3 = \(a1 = R6.H \* R7.H\), R2 = \(a0 = R6.L \* R7.L\);
+ 6ac:	0d c0 37 e1 	R5 = \(a1 \+= R6.H \* R7.H\), R4 = \(a0 = R6.L \* R7.L\);
+ 6b0:	0d c0 9d f1 	R7 = \(a1 \+= R3.H \* R5.H\), R6 = \(a0 -= R3.L \* R5.L\);
+ 6b4:	1c c0 3c 2e 	R1 = \(a1 = R7.L \* R4.L\) \(M\), R0 = \(a0 \+= R7.H \* R4.H\);
+ 6b8:	9c c0 1f e9 	R5 = \(a1 = R3.H \* R7.H\) \(M\), R4 = \(a0 \+= R3.L \* R7.L\) \(FU\);
+ 6bc:	0d c1 1a e0 	R1 = \(a1 \+= R3.H \* R2.H\), R0 = \(a0 = R3.L \* R2.L\) \(IS\);
+ 6c0:	0e c0 37 c9 	R5 = \(a1 -= R6.H \* R7.H\), a0 \+= R6.L \* R7.L;
+ 6c4:	1c c0 b7 d0 	R3 = \(a1 = R6.H \* R7.H\) \(M\), a0 -= R6.L \* R7.L;
+ 6c8:	2f c0 81 28 	R3 = A1, R2 = \(a0 \+= R0.L \* R1.L\) \(S2RND\);
+ 6cc:	2d c1 3e e8 	R1 = \(a1 \+= R7.H \* R6.H\), R0 = \(a0 \+= R7.L \* R6.L\) \(ISS2\);
+ 6d0:	0f c4 18 ca 	R5=-R3\(V\);
+ 6d4:	04 c6 2c 06 	R3=PACK\(R4.L,R5.L\);
+ 6d8:	04 c6 26 42 	R1=PACK\(R6.L,R4.H\);
+ 6dc:	04 c6 22 80 	R0=PACK\(R2.H,R4.L\);
+ 6e0:	04 c6 17 ca 	R5=PACK\(R7.H,R2.H\);
+ 6e4:	0d cc 50 c0 	\(R1,R0\) = SEARCH R2\(LE\) \|\| R2=\[P0\+\+\] \|\| NOP;
+ 6e8:	02 90 00 00 
+ 6ec:	0d c4 50 c0 	\(R1,R0\) = SEARCH R2\(LE\);
+ 6f0:	12 cc 02 00 	SAA\(R1:0x0,R3:0x2\)  \|\| R0=\[I0\+\+\] \|\| R2=\[I1\+\+\];
+ 6f4:	00 9c 0a 9c 
+ 6f8:	12 cc 02 20 	SAA\(R1:0x0,R3:0x2\) \(R\) \|\| R1=\[I0\+\+\] \|\| R3=\[I1\+\+\];
+ 6fc:	01 9c 0b 9c 
+ 700:	03 c8 00 18 	mnop \|\| R1=\[I0\+\+\] \|\| R3=\[I1\+\+\];
+ 704:	01 9c 0b 9c 
+ 708:	0c cc 13 0e 	R7.H=R7.L=SIGN\(R2.H\)\*R3.H\+SIGN\(R2.L\)\*R3.L\) \|\| I0\+=M3 \|\| R0=\[I0\];
+ 70c:	6c 9e 00 9d 
+ 710:	01 cc 94 88 	R2=R2\+\|\+R4,R4=R2-\|-R4\(ASR\) \|\| I0\+=M0\(BREV\) \|\| R1=\[I0\];
+ 714:	e0 9e 01 9d 
+ 718:	00 c8 11 06 	a1 = R2.L \* R1.L, a0 = R2.H \* R1.H \|\| R2.H=W\[I2\+\+\] \|\| \[I3\+\+\]=R3;
+ 71c:	52 9c 1b 9e 
+ 720:	01 c8 02 48 	a1 \+= R0.L \* R2.H, a0 \+= R0.L \* R2.L \|\| R2.L=W\[I2\+\+\] \|\| R0=\[I1--\];
+ 724:	32 9c 88 9c 
+ 728:	05 c8 c1 68 	R3.H = \(a1 \+= R0.L \* R1.H\), R3.L = \(a0 \+= R0.L \* R1.L\) \|\| R0=\[P0\+\+\] \|\| R1=\[I0\];
+ 72c:	00 90 01 9d 
+ 730:	04 ce 01 c2 	R1=PACK\(R1.H,R0.H\) \|\| \[I0\+\+\]=R0 \|\| R2.L=W\[I2\+\+\];
+ 734:	00 9e 32 9c 
+ 738:	8b c8 9a 2f 	R6 = \(a0 \+= R3.H \* R2.H\) \(FU\) \|\| I2-=M0 \|\| NOP;
+ 73c:	72 9e 00 00 

Added: branches/binutils/package/gas/testsuite/gas/bfin/vector2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/vector2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/vector2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,668 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//14 VECTOR OPERATIONS
+//
+
+//Dreg_hi = Dreg_lo = SIGN ( Dreg_hi ) * Dreg_hi + SIGN ( Dreg_lo ) * Dreg_lo ; /* (b) */
+
+r7.h=r7.l=sign(r2.h)*r3.h+sign(r2.l)*r3.l ;
+r0.h=r0.l=sign(r1.h)*r2.h+sign(r1.l)*r2.l ;
+r3.h=r3.l=sign(r4.h)*r5.h+sign(r4.l)*r5.l ;
+r6.h=r6.l=sign(r7.h)*r0.h+sign(r7.l)*r0.l ;
+r1.h=r1.l=sign(r2.h)*r3.h+sign(r2.l)*r3.l ;
+r4.h=r4.l=sign(r5.h)*r6.h+sign(r5.l)*r6.l ;
+r7.h=r7.l=sign(r0.h)*r1.h+sign(r0.l)*r1.l ;
+r2.h=r2.l=sign(r3.h)*r4.h+sign(r3.l)*r4.l ;
+
+//Dual 16-Bit Operation
+//Dreg = VIT_MAX ( Dreg , Dreg ) (ASL) ; /* shift history bits left (b) */
+//Dreg = VIT_MAX ( Dreg , Dreg ) (ASR) ; /* shift history bits right (b) */
+//Single 16-Bit Operation
+//Dreg_lo = VIT_MAX ( Dreg ) (ASL) ; /* shift history bits left (b) */
+//Dreg_lo = VIT_MAX ( Dreg ) (ASR) ; /* shift history bits right (b) */
+r5 = vit_max(r3, r2)(asl) ; /* shift left, dual operation */
+r7 = vit_max (r1, r0) (asr) ; /* shift right, dual operation */
+
+r0 = vit_max(r1, r2)(asl) ; /* shift left, dual operation */
+r3 = vit_max (r4, r5) (asr) ; /* shift right, dual operation */
+r6 = vit_max(r7, r0)(asl) ; /* shift left, dual operation */
+r1 = vit_max (r2, r3) (asr) ; /* shift right, dual operation */
+r4 = vit_max(r5, r6)(asl) ; /* shift left, dual operation */
+r7 = vit_max (r0, r1) (asr) ; /* shift right, dual operation */
+r2 = vit_max(r3, r4)(asl) ; /* shift left, dual operation */
+r5 = vit_max (r6, r7) (asr) ; /* shift right, dual operation */
+
+
+r3.l = vit_max (r1)(asl) ; /* shift left, single operation */
+r3.l = vit_max (r1)(asr) ; /* shift right, single operation */
+
+r0.l = vit_max (r1)(asl) ; /* shift left, single operation */
+r2.l = vit_max (r3)(asr) ; /* shift right, single operation */
+r4.l = vit_max (r5)(asl) ; /* shift left, single operation */
+r6.l = vit_max (r7)(asr) ; /* shift right, single operation */
+r1.l = vit_max (r2)(asl) ; /* shift left, single operation */
+r3.l = vit_max (r4)(asr) ; /* shift right, single operation */
+r5.l = vit_max (r6)(asl) ; /* shift left, single operation */
+r7.l = vit_max (r0)(asr) ; /* shift right, single operation */
+
+//Dreg = ABS Dreg (V) ; /* (b) */
+r3 = abs r1 (v) ;
+
+r0 = abs r0 (v) ;
+r0 = abs r1 (v) ;
+r2 = abs r3 (v) ;
+r4 = abs r5 (v) ;
+r6 = abs r7 (v) ;
+r1 = abs r0 (v) ;
+r3 = abs r2 (v) ;
+r5 = abs r4 (v) ;
+r7 = abs r6 (v) ;
+
+//Dual 16-Bit Operations
+//Dreg = Dreg +|+ Dreg (opt_mode_0) ; /* add | add (b) */
+r5=r3 +|+ r4 ; /* dual 16-bit operations, add|add */
+
+r0=r1 +|+ r2 ;
+r3=r4 +|+ r5 ;
+r6=r7 +|+ r0 ;
+r1=r2 +|+ r3 ;
+r4=r3 +|+ r5 ;
+r6=r3 +|+ r7 ;
+
+r0=r1 +|+ r2 (S);
+r3=r4 +|+ r5 (S);
+r6=r7 +|+ r0 (S);
+r1=r2 +|+ r3 (S);
+r4=r3 +|+ r5 (S);
+r6=r3 +|+ r7 (S);
+
+r0=r1 +|+ r2 (CO);
+r3=r4 +|+ r5 (CO);
+r6=r7 +|+ r0 (CO) ;
+r1=r2 +|+ r3 (CO);
+r4=r3 +|+ r5 (CO);
+r6=r3 +|+ r7 (CO);
+
+r0=r1 +|+ r2 (SCO);
+r3=r4 +|+ r5 (SCO);
+r6=r7 +|+ r0 (SCO);
+r1=r2 +|+ r3 (SCO);
+r4=r3 +|+ r5 (SCO);
+r6=r3 +|+ r7 (SCO);
+
+//Dreg = Dreg –|+ Dreg (opt_mode_0) ; /* subtract | add (b) */
+r6=r0 -|+ r1(s) ; /* same as above, subtract|add with saturation */
+
+r0=r1 -|+ r2 ;
+r3=r4 -|+ r5 ;
+r6=r7 -|+ r0 ;
+r1=r2 -|+ r3 ;
+r4=r3 -|+ r5 ;
+r6=r3 -|+ r7 ;
+
+r0=r1 -|+ r2 (S);
+r3=r4 -|+ r5 (S);
+r6=r7 -|+ r0 (S);
+r1=r2 -|+ r3 (S);
+r4=r3 -|+ r5 (S);
+r6=r3 -|+ r7 (S);
+
+r0=r1 -|+ r2 (CO);
+r3=r4 -|+ r5 (CO);
+r6=r7 -|+ r0 (CO) ;
+r1=r2 -|+ r3 (CO);
+r4=r3 -|+ r5 (CO);
+r6=r3 -|+ r7 (CO);
+
+r0=r1 -|+ r2 (SCO);
+r3=r4 -|+ r5 (SCO);
+r6=r7 -|+ r0 (SCO);
+r1=r2 -|+ r3 (SCO);
+r4=r3 -|+ r5 (SCO);
+r6=r3 -|+ r7 (SCO);
+
+
+//Dreg = Dreg +|– Dreg (opt_mode_0) ; /* add | subtract (b) */
+r0=r2 +|- r1(co) ; /* add|subtract with half-word results crossed over in the destination register */
+
+r0=r1 +|- r2 ;
+r3=r4 +|- r5 ;
+r6=r7 +|- r0 ;
+r1=r2 +|- r3 ;
+r4=r3 +|- r5 ;
+r6=r3 +|- r7 ;
+
+r0=r1 +|- r2 (S);
+r3=r4 +|- r5 (S);
+r6=r7 +|- r0 (S);
+r1=r2 +|- r3 (S);
+r4=r3 +|- r5 (S);
+r6=r3 +|- r7 (S);
+
+r0=r1 +|- r2 (CO);
+r3=r4 +|- r5 (CO);
+r6=r7 +|- r0 (CO) ;
+r1=r2 +|- r3 (CO);
+r4=r3 +|- r5 (CO);
+r6=r3 +|- r7 (CO);
+
+r0=r1 +|- r2 (SCO);
+r3=r4 +|- r5 (SCO);
+r6=r7 +|- r0 (SCO);
+r1=r2 +|- r3 (SCO);
+r4=r3 +|- r5 (SCO);
+r6=r3 +|- r7 (SCO);
+
+//Dreg = Dreg –|– Dreg (opt_mode_0) ; /* subtract | subtract (b) */
+r7=r3 -|- r6(sco) ; /* subtract|subtract with saturation and half-word results crossed over in the destination register */
+
+r0=r1 -|- r2 ;
+r3=r4 -|- r5 ;
+r6=r7 -|- r0 ;
+r1=r2 -|- r3 ;
+r4=r3 -|- r5 ;
+r6=r3 -|- r7 ;
+
+r0=r1 -|- r2 (S);
+r3=r4 -|- r5 (S);
+r6=r7 -|- r0 (S);
+r1=r2 -|- r3 (S);
+r4=r3 -|- r5 (S);
+r6=r3 -|- r7 (S);
+
+r0=r1 -|- r2 (CO);
+r3=r4 -|- r5 (CO);
+r6=r7 -|- r0 (CO) ;
+r1=r2 -|- r3 (CO);
+r4=r3 -|- r5 (CO);
+r6=r3 -|- r7 (CO);
+
+r0=r1 -|- r2 (SCO);
+r3=r4 -|- r5 (SCO);
+r6=r7 -|- r0 (SCO);
+r1=r2 -|- r3 (SCO);
+r4=r3 -|- r5 (SCO);
+r6=r3 -|- r7 (SCO);
+
+//Quad 16-Bit Operations
+//Dreg = Dreg +|+ Dreg, Dreg = Dreg –|– Dreg (opt_mode_0,opt_mode_2) ; /* add | add, subtract | subtract; the set of source registers must be the same for each operation (b) */
+r5=r3 +|+ r4, r7=r3-|-r4 ; /* quad 16-bit operations, add|add, subtract|subtract */
+
+r0=r1 +|+ r2, r7=r1 -|- r2;
+r3=r4 +|+ r5, r6=r4 -|- r5;
+r6=r7 +|+ r0, r5=r7 -|- r0;
+r1=r2 +|+ r3, r4=r2 -|- r3;
+r4=r3 +|+ r5, r3=r3 -|- r5;
+r6=r3 +|+ r7, r2=r3 -|- r7;
+                         
+r0=r1 +|+ r2, r7=r1 -|- r2(S);
+r3=r4 +|+ r5, r6=r4 -|- r5(S);
+r6=r7 +|+ r0, r5=r7 -|- r0(S);
+r1=r2 +|+ r3, r4=r2 -|- r3(S);
+r4=r3 +|+ r5, r3=r3 -|- r5(S);
+r6=r3 +|+ r7, r2=r3 -|- r7(S);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(CO);
+r3=r4 +|+ r5, r6=r4 -|- r5(CO);
+r6=r7 +|+ r0, r5=r7 -|- r0(CO);
+r1=r2 +|+ r3, r4=r2 -|- r3(CO);
+r4=r3 +|+ r5, r3=r3 -|- r5(CO);
+r6=r3 +|+ r7, r2=r3 -|- r7(CO);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(SCO);
+r3=r4 +|+ r5, r6=r4 -|- r5(SCO);
+r6=r7 +|+ r0, r5=r7 -|- r0(SCO);
+r1=r2 +|+ r3, r4=r2 -|- r3(SCO);
+r4=r3 +|+ r5, r3=r3 -|- r5(SCO);
+r6=r3 +|+ r7, r2=r3 -|- r7(SCO);
+                         
+r0=r1 +|+ r2, r7=r1 -|- r2(ASR);
+r3=r4 +|+ r5, r6=r4 -|- r5(ASR);
+r6=r7 +|+ r0, r5=r7 -|- r0(ASR);
+r1=r2 +|+ r3, r4=r2 -|- r3(ASR);
+r4=r3 +|+ r5, r3=r3 -|- r5(ASR);
+r6=r3 +|+ r7, r2=r3 -|- r7(ASR);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(ASL);
+r3=r4 +|+ r5, r6=r4 -|- r5(ASL);
+r6=r7 +|+ r0, r5=r7 -|- r0(ASL);
+r1=r2 +|+ r3, r4=r2 -|- r3(ASL);
+r4=r3 +|+ r5, r3=r3 -|- r5(ASL);
+r6=r3 +|+ r7, r2=r3 -|- r7(ASL);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(S,ASR);
+r3=r4 +|+ r5, r6=r4 -|- r5(S,ASR);
+r6=r7 +|+ r0, r5=r7 -|- r0(S,ASR);
+r1=r2 +|+ r3, r4=r2 -|- r3(S,ASR);
+r4=r3 +|+ r5, r3=r3 -|- r5(S,ASR);
+r6=r3 +|+ r7, r2=r3 -|- r7(S,ASR);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(CO,ASR);
+r3=r4 +|+ r5, r6=r4 -|- r5(CO,ASR);
+r6=r7 +|+ r0, r5=r7 -|- r0(CO,ASR);
+r1=r2 +|+ r3, r4=r2 -|- r3(CO,ASR);
+r4=r3 +|+ r5, r3=r3 -|- r5(CO,ASR);
+r6=r3 +|+ r7, r2=r3 -|- r7(CO,ASR);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(SCO,ASR);
+r3=r4 +|+ r5, r6=r4 -|- r5(SCO,ASR);
+r6=r7 +|+ r0, r5=r7 -|- r0(SCO,ASR);
+r1=r2 +|+ r3, r4=r2 -|- r3(SCO,ASR);
+r4=r3 +|+ r5, r3=r3 -|- r5(SCO,ASR);
+r6=r3 +|+ r7, r2=r3 -|- r7(SCO,ASR);
+
+r0=r1 +|+ r2, r7=r1 -|- r2(S,ASL);
+r3=r4 +|+ r5, r6=r4 -|- r5(S,ASL);
+r6=r7 +|+ r0, r5=r7 -|- r0(S,ASL);
+r1=r2 +|+ r3, r4=r2 -|- r3(S,ASL);
+r4=r3 +|+ r5, r3=r3 -|- r5(S,ASL);
+r6=r3 +|+ r7, r2=r3 -|- r7(S,ASL);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(CO,ASL);
+r3=r4 +|+ r5, r6=r4 -|- r5(CO,ASL);
+r6=r7 +|+ r0, r5=r7 -|- r0(CO,ASL);
+r1=r2 +|+ r3, r4=r2 -|- r3(CO,ASL);
+r4=r3 +|+ r5, r3=r3 -|- r5(CO,ASL);
+r6=r3 +|+ r7, r2=r3 -|- r7(CO,ASL);
+                         
+
+r0=r1 +|+ r2, r7=r1 -|- r2(SCO,ASL);
+r3=r4 +|+ r5, r6=r4 -|- r5(SCO,ASL);
+r6=r7 +|+ r0, r5=r7 -|- r0(SCO,ASL);
+r1=r2 +|+ r3, r4=r2 -|- r3(SCO,ASL);
+r4=r3 +|+ r5, r3=r3 -|- r5(SCO,ASL);
+r6=r3 +|+ r7, r2=r3 -|- r7(SCO,ASL);
+
+
+//Dreg = Dreg +|– Dreg, Dreg = Dreg –|+ Dreg (opt_mode_0,opt_mode_2) ; /* add | subtract, subtract | add; the set of source registers must be the same for each operation (b) */
+r5=r3 +|- r4, r7=r3 -|+ r4 ; /* quad 16-bit operations, add|subtract, subtract|add */
+
+r0=r1 +|- r2, r7=r1 -|+ r2;
+r3=r4 +|- r5, r6=r4 -|+ r5;
+r6=r7 +|- r0, r5=r7 -|+ r0;
+r1=r2 +|- r3, r4=r2 -|+ r3;
+r4=r3 +|- r5, r3=r3 -|+ r5;
+r6=r3 +|- r7, r2=r3 -|+ r7;
+                         
+r0=r1 +|- r2, r7=r1 -|+ r2(S);
+r3=r4 +|- r5, r6=r4 -|+ r5(S);
+r6=r7 +|- r0, r5=r7 -|+ r0(S);
+r1=r2 +|- r3, r4=r2 -|+ r3(S);
+r4=r3 +|- r5, r3=r3 -|+ r5(S);
+r6=r3 +|- r7, r2=r3 -|+ r7(S);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(CO);
+r3=r4 +|- r5, r6=r4 -|+ r5(CO);
+r6=r7 +|- r0, r5=r7 -|+ r0(CO);
+r1=r2 +|- r3, r4=r2 -|+ r3(CO);
+r4=r3 +|- r5, r3=r3 -|+ r5(CO);
+r6=r3 +|- r7, r2=r3 -|+ r7(CO);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(SCO);
+r3=r4 +|- r5, r6=r4 -|+ r5(SCO);
+r6=r7 +|- r0, r5=r7 -|+ r0(SCO);
+r1=r2 +|- r3, r4=r2 -|+ r3(SCO);
+r4=r3 +|- r5, r3=r3 -|+ r5(SCO);
+r6=r3 +|- r7, r2=r3 -|+ r7(SCO);
+                         
+r0=r1 +|- r2, r7=r1 -|+ r2(ASR);
+r3=r4 +|- r5, r6=r4 -|+ r5(ASR);
+r6=r7 +|- r0, r5=r7 -|+ r0(ASR);
+r1=r2 +|- r3, r4=r2 -|+ r3(ASR);
+r4=r3 +|- r5, r3=r3 -|+ r5(ASR);
+r6=r3 +|- r7, r2=r3 -|+ r7(ASR);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(ASL);
+r3=r4 +|- r5, r6=r4 -|+ r5(ASL);
+r6=r7 +|- r0, r5=r7 -|+ r0(ASL);
+r1=r2 +|- r3, r4=r2 -|+ r3(ASL);
+r4=r3 +|- r5, r3=r3 -|+ r5(ASL);
+r6=r3 +|- r7, r2=r3 -|+ r7(ASL);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(S,ASR);
+r3=r4 +|- r5, r6=r4 -|+ r5(S,ASR);
+r6=r7 +|- r0, r5=r7 -|+ r0(S,ASR);
+r1=r2 +|- r3, r4=r2 -|+ r3(S,ASR);
+r4=r3 +|- r5, r3=r3 -|+ r5(S,ASR);
+r6=r3 +|- r7, r2=r3 -|+ r7(S,ASR);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(CO,ASR);
+r3=r4 +|- r5, r6=r4 -|+ r5(CO,ASR);
+r6=r7 +|- r0, r5=r7 -|+ r0(CO,ASR);
+r1=r2 +|- r3, r4=r2 -|+ r3(CO,ASR);
+r4=r3 +|- r5, r3=r3 -|+ r5(CO,ASR);
+r6=r3 +|- r7, r2=r3 -|+ r7(CO,ASR);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(SCO,ASR);
+r3=r4 +|- r5, r6=r4 -|+ r5(SCO,ASR);
+r6=r7 +|- r0, r5=r7 -|+ r0(SCO,ASR);
+r1=r2 +|- r3, r4=r2 -|+ r3(SCO,ASR);
+r4=r3 +|- r5, r3=r3 -|+ r5(SCO,ASR);
+r6=r3 +|- r7, r2=r3 -|+ r7(SCO,ASR);
+
+r0=r1 +|- r2, r7=r1 -|+ r2(S,ASL);
+r3=r4 +|- r5, r6=r4 -|+ r5(S,ASL);
+r6=r7 +|- r0, r5=r7 -|+ r0(S,ASL);
+r1=r2 +|- r3, r4=r2 -|+ r3(S,ASL);
+r4=r3 +|- r5, r3=r3 -|+ r5(S,ASL);
+r6=r3 +|- r7, r2=r3 -|+ r7(S,ASL);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(CO,ASL);
+r3=r4 +|- r5, r6=r4 -|+ r5(CO,ASL);
+r6=r7 +|- r0, r5=r7 -|+ r0(CO,ASL);
+r1=r2 +|- r3, r4=r2 -|+ r3(CO,ASL);
+r4=r3 +|- r5, r3=r3 -|+ r5(CO,ASL);
+r6=r3 +|- r7, r2=r3 -|+ r7(CO,ASL);
+                         
+
+r0=r1 +|- r2, r7=r1 -|+ r2(SCO,ASL);
+r3=r4 +|- r5, r6=r4 -|+ r5(SCO,ASL);
+r6=r7 +|- r0, r5=r7 -|+ r0(SCO,ASL);
+r1=r2 +|- r3, r4=r2 -|+ r3(SCO,ASL);
+r4=r3 +|- r5, r3=r3 -|+ r5(SCO,ASL);
+r6=r3 +|- r7, r2=r3 -|+ r7(SCO,ASL);
+
+
+
+//Dual 32-Bit Operations
+//Dreg = Dreg + Dreg, Dreg = Dreg - Dreg (opt_mode_1) ; /* add, subtract; the set of source registers must be the same for each operation (b) */
+r2=r0+r1, r3=r0-r1 ; /* 32-bit operations */
+
+r7=r0+r1, r0=r0-r1 ; /* 32-bit operations */
+r6=r1+r2, r1=r1-r2 ; /* 32-bit operations */
+r5=r2+r3, r2=r2-r3 ; /* 32-bit operations */
+r4=r3+r4, r3=r3-r4 ; /* 32-bit operations */
+r3=r4+r5, r4=r4-r5 ; /* 32-bit operations */
+r2=r5+r6, r5=r5-r6 ; /* 32-bit operations */
+r1=r6+r7, r6=r6-r7 ; /* 32-bit operations */
+r0=r7+r0, r7=r7-r0 ; /* 32-bit operations */
+
+r2=r0+r1, r3=r0-r1(s) ; /* dual 32-bit operations with saturation */
+r7=r0+r1, r0=r0-r1 (s); /* 32-bit operations */
+r6=r1+r2, r1=r1-r2 (s); /* 32-bit operations */
+r5=r2+r3, r2=r2-r3 (s); /* 32-bit operations */
+r4=r3+r4, r3=r3-r4(s) ; /* 32-bit operations */
+r3=r4+r5, r4=r4-r5 (s); /* 32-bit operations */
+r2=r5+r6, r5=r5-r6 (s); /* 32-bit operations */
+r1=r6+r7, r6=r6-r7 (s); /* 32-bit operations */
+r0=r7+r0, r7=r7-r0 (s); /* 32-bit operations */
+
+
+
+//Dual 40-Bit Accumulator Operations
+//Dreg = A1 + A0, Dreg = A1 - A0 (opt_mode_1) ; /* add, subtract Accumulators; subtract A0 from A1 (b) */
+r0=a1+a0, r1=a1-a0 ;
+r2=a1+a0, r3=a1-a0 ;
+r4=a1+a0, r5=a1-a0 ;
+r6=a1+a0, r7=a1-a0 ;
+r1=a1+a0, r0=a1-a0 ;
+r3=a1+a0, r2=a1-a0 ;
+r5=a1+a0, r4=a1-a0 ;
+
+r0=a1+a0, r1=a1-a0 (s);
+r2=a1+a0, r3=a1-a0 (s);
+r4=a1+a0, r5=a1-a0 (s);
+r6=a1+a0, r7=a1-a0 (s);
+r1=a1+a0, r0=a1-a0 (s);
+r3=a1+a0, r2=a1-a0 (s);
+r5=a1+a0, r4=a1-a0 (s);
+
+//Dreg = A0 + A1, Dreg = A0 - A1 (opt_mode_1) ; /* add, subtract Accumulators; subtract A1 from A0 (b) */
+r4=a0+a1, r6=a0-a1(s);
+
+r0=a0+a1, r1=a0-a1 ;
+r2=a0+a1, r3=a0-a1 ;
+r4=a0+a1, r5=a0-a1 ;
+r6=a0+a1, r7=a0-a1 ;
+r1=a0+a1, r0=a0-a1 ;
+r3=a0+a1, r2=a0-a1 ;
+r5=a0+a1, r4=a0-a1 ;
+
+r0=a0+a1, r1=a0-a1 (s);
+r2=a0+a1, r3=a0-a1 (s);
+r4=a0+a1, r5=a0-a1 (s);
+r6=a0+a1, r7=a0-a1 (s);
+r1=a0+a1, r0=a0-a1 (s);
+r3=a0+a1, r2=a0-a1 (s);
+r5=a0+a1, r4=a0-a1 (s);
+
+//Constant Shift Magnitude
+//Dreg = Dreg >>> uimm4 (V) ; /* arithmetic shift right, immediate (b) */
+R0 = R0 >>> 5(V);
+
+R0 = R1 >>> 5(V);
+R2 = R3 >>> 5(V);
+R4 = R5 >>> 5(V);
+R6 = R7 >>> 5(V);
+R1 = R0 >>> 5(V);
+R3 = R2 >>> 5(V);
+R5 = R4 >>> 5(V);
+R7 = R6 >>> 5(V);
+
+
+//Dreg = Dreg << uimm4 (V,S) ; /* arithmetic shift left, immediate with saturation (b) */
+
+R0 = R1 << 5(V,S);
+R2 = R3 << 5(V,S);
+R4 = R5 << 5(V,S);
+R6 = R7 << 5(V,S);
+R1 = R0 << 5(V,S);
+R3 = R2 << 5(V,S);
+R5 = R4 << 5(V,S);
+R7 = R6 << 5(V,S);
+
+//Registered Shift Magnitude
+//Dreg = ASHIFT Dreg BY Dreg_lo (V) ; /* arithmetic shift (b) */
+r2=ashift r7 by r5.l (v) ;
+
+R0 = ASHIFT R1 BY R2.L (V);
+R3 = ASHIFT R4 BY R5.L (V);
+R6 = ASHIFT R7 BY R0.L (V);
+R1 = ASHIFT R2 BY R3.L (V);
+R4 = ASHIFT R5 BY R6.L (V);
+R7 = ASHIFT R0 BY R1.L (V);
+R2 = ASHIFT R3 BY R4.L (V);
+R5 = ASHIFT R6 BY R7.L (V);
+
+
+//Dreg = ASHIFT Dreg BY Dreg_lo (V, S) ; /* arithmetic shift with saturation (b) */
+R0 = ASHIFT R1 BY R2.L (V,S);
+R3 = ASHIFT R4 BY R5.L (V,S);
+R6 = ASHIFT R7 BY R0.L (V,S);
+R1 = ASHIFT R2 BY R3.L (V,S);
+R4 = ASHIFT R5 BY R6.L (V,S);
+R7 = ASHIFT R0 BY R1.L (V,S);
+R2 = ASHIFT R3 BY R4.L (V,S);
+R5 = ASHIFT R6 BY R7.L (V,S);
+
+//Constant Shift Magnitude
+//Dreg = Dreg >> uimm4 (V) ; /* logical shift right, immediate (b) */
+R0 = R1 >> 5(V);
+R2 = R3 >> 5(V);
+R4 = R5 >> 5(V);
+R6 = R7 >> 5(V);
+R1 = R0 >> 5(V);
+R3 = R2 >> 5(V);
+R5 = R4 >> 5(V);
+R7 = R6 >> 5(V);
+
+//Dreg = Dreg << uimm4 (V) ; /* logical shift left, immediate (b) */
+R0 = R1 << 5(V);
+R2 = R3 << 5(V);
+R4 = R5 << 5(V);
+R6 = R7 << 5(V);
+R1 = R0 << 5(V);
+R3 = R2 << 5(V);
+R5 = R4 << 5(V);
+R7 = R6 << 5(V);
+
+
+//Registered Shift Magnitude
+//Dreg = LSHIFT Dreg BY Dreg_lo (V) ; /* logical shift (b) */
+
+R0 = LSHIFT R1 BY R2.L (V);
+R3 = LSHIFT R4 BY R5.L (V);
+R6 = LSHIFT R7 BY R0.L (V);
+R1 = LSHIFT R2 BY R3.L (V);
+R4 = LSHIFT R5 BY R6.L (V);
+R7 = LSHIFT R0 BY R1.L (V);
+R2 = LSHIFT R3 BY R4.L (V);
+R5 = LSHIFT R6 BY R7.L (V);
+
+//Dreg = MAX ( Dreg , Dreg ) (V) ; /* dual 16-bit operations (b) */
+r7 = max (r1, r0) (v) ;
+
+R0 = MAX (R1, R2) (V);
+R3 = MAX (R4, R5) (V);
+R6 = MAX (R7, R0) (V);
+R1 = MAX (R2, R3) (V);
+R4 = MAX (R5, R6) (V);
+R7 = MAX (R0, R1) (V);
+R2 = MAX (R3, R4) (V);
+R5 = MAX (R6, R7) (V);
+
+//Dreg = MIN ( Dreg , Dreg ) (V) ; /* dual 16-bit operation (b) */
+R0 = MIN (R1, R2) (V);
+R3 = MIN (R4, R5) (V);
+R6 = MIN (R7, R0) (V);
+R1 = MIN (R2, R3) (V);
+R4 = MIN (R5, R6) (V);
+R7 = MIN (R0, R1) (V);
+R2 = MIN (R3, R4) (V);
+R5 = MIN (R6, R7) (V);
+
+r2.h=r7.l*r6.h, r2.l=r7.h*r6.h ;
+/* simultaneous MAC0 and MAC1 execution, 16-bit results. Both
+results are signed fractions. */
+r4.l=r1.l*r0.l, r4.h=r1.h*r0.h ;
+/* same as above. MAC order is arbitrary. */
+r0.h=r3.h*r2.l (m), r0.l=r3.l*r2.l ;
+
+a1=r2.l*r3.h, a0=r2.h*r3.h ;
+/* both multiply signed fractions into separate Accumulators */
+a0=r1.l*r0.l, a1+=r1.h*r0.h ;
+/* same as above, but sum result into A1. MAC order is arbitrary.
+*/
+a1+=r3.h*r3.l, a0-=r3.h*r3.h ;
+/* sum product into A1, subtract product from A0 */
+a1=r3.h*r2.l (m), a0+=r3.l*r2.l ;
+/* MAC1 multiplies a signed fraction in r3.h by an unsigned fraction
+in r2.l. MAC0 multiplies two signed fractions. */
+a1=r7.h*r4.h (m), a0+=r7.l*r4.l (fu) ;
+/* MAC1 multiplies signed fraction by unsigned fraction. MAC0
+multiplies and accumulates two unsigned fractions. */
+a1+=r3.h*r2.h, a0=r3.l*r2.l (is) ;
+/* both MACs perform signed integer multiplication */
+a1=r6.h*r7.h, a0+=r6.l*r7.l (w32) ;
+/* both MACs multiply signed fractions, sign extended, and saturate
+both Accumulators at bit 31 */
+r2.h=(a1=r7.l*r6.h), r2.l=(a0=r7.h*r6.h) ; /* simultaneous MAC0
+and MAC1 execution, both are signed fractions, both products load
+into the Accumulators,MAC1 into half-word registers. */
+r4.l=(a0=r1.l*r0.l), r4.h=(a1+=r1.h*r0.h) ; /* same as above,
+but sum result into A1. ; MAC order is arbitrary. */
+r7.h=(a1+=r6.h*r5.l), r7.l=(a0=r6.h*r5.h) ; /* sum into A1,
+subtract into A0 */
+r0.h=(a1=r7.h*r4.l) (m), r0.l=(a0+=r7.l*r4.l) ; /* MAC1 multiplies
+a signed fraction by an unsigned fraction. MAC0 multiplies
+two signed fractions. */
+r5.h=(a1=r3.h*r2.h) (m), r5.l=(a0+=r3.l*r2.l) (fu) ; /* MAC1
+multiplies signed fraction by unsigned fraction. MAC0 multiplies
+two unsigned fractions. */
+r0.h=(a1+=r3.h*r2.h), r0.l=(a0=r3.l*r2.l) (is) ; /* both MACs
+perform signed integer multiplication. */
+r5.h=(a1=r2.h*r1.h), a0+=r2.l*r1.l ; /* both MACs multiply
+signed fractions. MAC0 does not copy the accum result. */
+r3.h=(a1=r2.h*r1.h) (m), a0=r2.l*r1.l ; /* MAC1 multiplies
+signed fraction by unsigned fraction and uses all 40 bits of A1.
+MAC0 multiplies two signed fractions. */
+r3.h=a1, r3.l=(a0+=r0.l*r1.l) (s2rnd) ; /* MAC1 copies Accumulator
+to register half. MAC0 multiplies signed fractions. Both
+scale the result and round on the way to the destination register.
+*/
+r0.l=(a0+=r7.l*r6.l), r0.h=(a1+=r7.h*r6.h) (iss2) ; /* both
+MACs process signed integer the way to the destination half-registers.
+*/
+r3=(a1=r6.h*r7.h), r2=(a0=r6.l*r7.l) ; /* simultaneous MAC0 and
+MAC1 execution, both are signed fractions, both products load
+into the Accumulators */
+r4=(a0=r6.l*r7.l), r5=(a1+=r6.h*r7.h) ; /* same as above, but
+sum result into A1. MAC order is arbitrary. */
+r7=(a1+=r3.h*r5.h), r6=(a0-=r3.l*r5.l) ; /* sum into A1, subtract
+into A0 */
+r1=(a1=r7.l*r4.l) (m), r0=(a0+=r7.h*r4.h) ; /* MAC1 multiplies
+a signed fraction by an unsigned fraction. MAC0 multiplies two
+signed fractions. */
+r5=(a1=r3.h*r7.h) (m), r4=(a0+=r3.l*r7.l) (fu) ; /* MAC1 multiplies
+signed fraction by unsigned fraction. MAC0 multiplies two
+unsigned fractions. */
+r1=(a1+=r3.h*r2.h), r0=(a0=r3.l*r2.l) (is) ; /* both MACs perform
+signed integer multiplication */
+r5=(a1-=r6.h*r7.h), a0+=r6.l*r7.l ; /* both MACs multiply
+signed fractions. MAC0 does not copy the accum result */
+r3=(a1=r6.h*r7.h) (m), a0-=r6.l*r7.l ; /* MAC1 multiplies
+signed fraction by unsigned fraction and uses all 40 bits of A1.
+MAC0 multiplies two signed fractions. */
+r3=a1, r2=(a0+=r0.l*r1.l) (s2rnd) ; /* MAC1 moves Accumulator
+to register. MAC0 multiplies signed fractions. Both scale the
+result and round on the way to the destination register. */
+r0=(a0+=r7.l*r6.l), r1=(a1+=r7.h*r6.h) (iss2) ; /* both MACs
+process signed integer operands and scale the result on the way
+to the destination registers. */
+
+r5 =-r3 (v) ; /* R5.H becomes the negative of R3.H and R5.L
+becomes the negative of R3.L If r3 = 0x0004 7FFF the result is r5
+= 0xFFFC 8001 */
+
+r3=pack(r4.l, r5.l) ; /* pack low / low half-words */
+r1=pack(r6.l, r4.h) ; /* pack low / high half-words */
+r0=pack(r2.h, r4.l) ; /* pack high / low half-words */
+r5=pack(r7.h, r2.h) ; /* pack high / high half-words */
+
+(r1,r0) = SEARCH R2 (LE) || R2=[P0++];
+/* search for the last minimum in all but the
+last element of the array */
+(r1,r0) = SEARCH R2 (LE);
+
+saa (r1:0, r3:2) || r0=[i0++] || r2=[i1++] ;
+saa (r1:0, r3:2)(r) || r1=[i0++] || r3=[i1++] ;
+mnop || r1 = [i0++] || r3 = [i1++] ;
+r7.h=r7.l=sign(r2.h)*r3.h + sign(r2.l)*r3.l || i0+=m3 || r0=[i0]
+;
+
+/* Add/subtract two vector values while incrementing an Ireg and
+loading a data register. */
+R2 = R2 +|+ R4, R4 = R2 -|- R4 (ASR) || I0 += M0 (BREV) || R1 = [I0] ;
+/* Multiply and accumulate to Accumulator while loading a data
+register and storing a data register using an Ireg pointer. */
+A1=R2.L*R1.L, A0=R2.H*R1.H || R2.H=W[I2++] || [I3++]=R3 ;
+/* Multiply and accumulate while loading two data registers. One
+load uses an Ireg pointer. */
+A1+=R0.L*R2.H,A0+=R0.L*R2.L || R2.L=W[I2++] || R0=[I1--] ;
+R3.H=(A1+=R0.L*R1.H), R3.L=(A0+=R0.L*R1.L) || R0=[P0++] || R1=[I0] ;
+/* Pack two vector values while storing a data register using an
+Ireg pointer and loading another data register. */
+R1=PACK(R1.H,R0.H) || [I0++]=R0 || R2.L=W[I2++] ;
+
+/* Multiply-Accumulate to a Data register while incrementing an
+Ireg. */
+r6=(a0+=r3.h*r2.h)(fu) || i2-=m0 ;
+/* which the assembler expands into:
+r6=(a0+=r3.h*r2.h)(fu) || i2-=m0 || nop ; */

Added: branches/binutils/package/gas/testsuite/gas/bfin/video.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/video.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/video.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,56 @@
+#objdump: -dr
+#name: video
+.*: +file format .*
+Disassembly of section .text:
+
+00000000 <align>:
+   0:	0d c6 15 0e 	R7=ALIGN8\(R5,R2\);
+   4:	0d c6 08 4a 	R5=ALIGN16\(R0,R1\);
+   8:	0d c6 05 84 	R2=ALIGN24\(R5,R0\);
+
+0000000c <disalgnexcpt>:
+   c:	12 c4 00 c0 	DISALGNEXCPT;
+
+00000010 <byteop3p>:
+  10:	17 c4 02 0a 	R5=BYTEOP3P\(R1:0x0,R3:0x2\)\(LO\);
+  14:	37 c4 02 00 	R0=BYTEOP3P\(R1:0x0,R3:0x2\)\(HI\);
+  18:	17 c4 02 22 	R1=BYTEOP3P\(R1:0x0,R3:0x2\)\(LO, R\);
+  1c:	37 c4 02 24 	R2=BYTEOP3P\(R1:0x0,R3:0x2\)\(HI, R\);
+
+00000020 <dual16>:
+  20:	0c c4 [4-7][[:xdigit:]] 45 	R5=A1.L\+A1.H,R2=A0.L\+A0.H;
+
+00000024 <byteop16p>:
+  24:	15 c4 82 06 	\(R2,R3\)=BYTEOP16P\(R1:0x0,R3:0x2\) ;
+  28:	15 c4 82 21 	\(R6,R0\)=BYTEOP16P\(R1:0x0,R3:0x2\) \(R\);
+
+0000002c <byteop1p>:
+  2c:	14 c4 02 0e 	R7=BYTEOP1P\(R1:0x0,R3:0x2\);
+  30:	14 c4 02 44 	R2=BYTEOP1P\(R1:0x0,R3:0x2\)\(T\);
+  34:	14 c4 02 26 	R3=BYTEOP1P\(R1:0x0,R3:0x2\)\(R\);
+  38:	14 c4 02 6e 	R7=BYTEOP1P\(R1:0x0,R3:0x2\)\(T, R\);
+
+0000003c <byteop2p>:
+  3c:	16 c4 02 00 	R0=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL\);
+  40:	36 c4 02 02 	R1=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH\);
+  44:	16 c4 02 44 	R2=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL\);
+  48:	36 c4 02 46 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH\);
+  4c:	16 c4 02 28 	R4=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL, R\);
+  50:	36 c4 02 2a 	R5=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH, R\);
+  54:	16 c4 02 6c 	R6=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL, R\);
+  58:	36 c4 02 6e 	R7=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH, R\);
+
+0000005c <bytepack>:
+  5c:	18 c4 03 0a 	R5=BYTEPACK\(R0,R3\);
+
+00000060 <byteop16m>:
+  60:	15 c4 82 45 	\(R6,R2\)=BYTEOP16M\(R1:0x0,R3:0x2\) ;
+  64:	15 c4 02 6a 	\(R0,R5\)=BYTEOP16M\(R1:0x0,R3:0x2\) \(R\);
+
+00000068 <saa>:
+  68:	12 c4 02 00 	SAA\(R1:0x0,R3:0x2\) ;
+  6c:	12 c4 02 20 	SAA\(R1:0x0,R3:0x2\) \(R\);
+
+00000070 <byteunpack>:
+  70:	18 c4 c0 45 	\(R7,R2\) = BYTEUNPACK R1:0x0 ;
+  74:	18 c4 90 69 	\(R6,R4\) = BYTEUNPACK R3:0x2 \(R\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/video.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/video.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/video.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,74 @@
+	.text
+	.global align
+align:
+	R7 = Align8 (r5, r2);
+	R5 = ALIGN16 (R0, R1);
+	r2 = ALIGN24 (r5, r0);
+
+	.global disalgnexcpt
+disalgnexcpt:
+	DISAlgnExcpt;
+
+	.text
+	.global byteop3p
+byteop3p:
+	R5 = Byteop3p (r1:0, r3:2) (lO);
+	R0 = BYTEOP3P (R1:0, R3:2) (HI);
+	R1 = byteop3p (r1:0, r3:2) (LO, r);
+	r2 = ByteOp3P (r1:0, R3:2) (hi, R);
+
+	.text
+	.global dual16
+dual16:
+	R5 = A1.l + A1.h, R2 = a0.l + a0.h;
+
+	.text
+	.global byteop16p
+byteop16p:
+	(r2, r3) = BYTEOP16P (R1:0, R3:2);
+	(R6, R0) = byteop16p (r1:0, r3:2) (r);
+
+	.text
+	.global byteop1p
+byteop1p:
+	R7 = BYTEOP1P (R1:0, R3:2);
+	r2 = byteop1p (r1:0, r3:2) (t);
+	R3 = ByteOp1P (r1:0, R3:2) (R);
+	r7 = byteOP1P (R1:0, r3:2) (T, r);
+
+	.text
+	.global byteop2p
+byteop2p:
+	R0 = BYTEOP2P (R1:0, R3:2) (RNDL);
+	r1 = byteop2p (r1:0, r3:2) (rndh);
+	R2 = Byteop2p (R1:0, R3:2) (tL);
+	R3 = Byteop2p (r1:0, r3:2) (TH);
+	r4 = ByTEOP2P (r1:0, R3:2) (Rndl, R);
+	R5 = byTeOp2p (R1:0, r3:2) (rndH, r);
+	r6 = BYTEop2p (r1:0, r3:2) (tl, R);
+	R7 = byteop2p (r1:0, R3:2) (TH, r);
+
+	.text
+	.global bytepack
+bytepack:
+	R5 = BytePack (R0, R3);
+
+	.text
+	.global byteop16m
+byteop16m:
+	(R6, R2) = ByteOp16M (r1:0, r3:2);
+	(r0, r5) = byteop16m (R1:0, R3:2) (r);
+
+	.text
+	.global saa
+saa:
+	saa(r1:0, r3:2);
+	SAA (R1:0, R3:2) (r);
+
+	.text
+	.global byteunpack
+byteunpack:
+	(R7, R2) = byteunpack R1:0;
+	(R6, R4) = BYTEUNPACK r3:2 (R);
+
+

Added: branches/binutils/package/gas/testsuite/gas/bfin/video2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/video2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/video2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,148 @@
+#objdump: -dr
+#name: video2
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	0d c6 00 00 	R0=ALIGN8\(R0,R0\);
+   4:	0d c6 08 00 	R0=ALIGN8\(R0,R1\);
+   8:	0d c6 01 00 	R0=ALIGN8\(R1,R0\);
+   c:	0d c6 09 00 	R0=ALIGN8\(R1,R1\);
+  10:	0d c6 11 00 	R0=ALIGN8\(R1,R2\);
+  14:	0d c6 2c 06 	R3=ALIGN8\(R4,R5\);
+  18:	0d c6 07 0c 	R6=ALIGN8\(R7,R0\);
+  1c:	0d c6 1a 02 	R1=ALIGN8\(R2,R3\);
+  20:	0d c6 35 08 	R4=ALIGN8\(R5,R6\);
+  24:	0d c6 08 0e 	R7=ALIGN8\(R0,R1\);
+  28:	0d c6 23 04 	R2=ALIGN8\(R3,R4\);
+  2c:	0d c6 3e 0a 	R5=ALIGN8\(R6,R7\);
+  30:	0d c6 00 40 	R0=ALIGN16\(R0,R0\);
+  34:	0d c6 08 40 	R0=ALIGN16\(R0,R1\);
+  38:	0d c6 01 40 	R0=ALIGN16\(R1,R0\);
+  3c:	0d c6 09 40 	R0=ALIGN16\(R1,R1\);
+  40:	0d c6 11 40 	R0=ALIGN16\(R1,R2\);
+  44:	0d c6 2c 46 	R3=ALIGN16\(R4,R5\);
+  48:	0d c6 07 4c 	R6=ALIGN16\(R7,R0\);
+  4c:	0d c6 1a 42 	R1=ALIGN16\(R2,R3\);
+  50:	0d c6 35 48 	R4=ALIGN16\(R5,R6\);
+  54:	0d c6 08 4e 	R7=ALIGN16\(R0,R1\);
+  58:	0d c6 23 44 	R2=ALIGN16\(R3,R4\);
+  5c:	0d c6 3e 4a 	R5=ALIGN16\(R6,R7\);
+  60:	0d c6 00 80 	R0=ALIGN24\(R0,R0\);
+  64:	0d c6 08 80 	R0=ALIGN24\(R0,R1\);
+  68:	0d c6 01 80 	R0=ALIGN24\(R1,R0\);
+  6c:	0d c6 09 80 	R0=ALIGN24\(R1,R1\);
+  70:	0d c6 11 80 	R0=ALIGN24\(R1,R2\);
+  74:	0d c6 2c 86 	R3=ALIGN24\(R4,R5\);
+  78:	0d c6 07 8c 	R6=ALIGN24\(R7,R0\);
+  7c:	0d c6 1a 82 	R1=ALIGN24\(R2,R3\);
+  80:	0d c6 35 88 	R4=ALIGN24\(R5,R6\);
+  84:	0d c6 08 8e 	R7=ALIGN24\(R0,R1\);
+  88:	0d c6 23 84 	R2=ALIGN24\(R3,R4\);
+  8c:	0d c6 3e 8a 	R5=ALIGN24\(R6,R7\);
+  90:	12 c4 00 c0 	DISALGNEXCPT;
+  94:	17 c4 02 00 	R0=BYTEOP3P\(R1:0x0,R3:0x2\)\(LO\);
+  98:	37 c4 02 02 	R1=BYTEOP3P\(R1:0x0,R3:0x2\)\(HI\);
+  9c:	17 c4 02 24 	R2=BYTEOP3P\(R1:0x0,R3:0x2\)\(LO, R\);
+  a0:	37 c4 02 26 	R3=BYTEOP3P\(R1:0x0,R3:0x2\)\(HI, R\);
+  a4:	17 c4 10 08 	R4=BYTEOP3P\(R3:0x2,R1:0x0\)\(LO\);
+  a8:	37 c4 10 0a 	R5=BYTEOP3P\(R3:0x2,R1:0x0\)\(HI\);
+  ac:	17 c4 10 2c 	R6=BYTEOP3P\(R3:0x2,R1:0x0\)\(LO, R\);
+  b0:	37 c4 10 2e 	R7=BYTEOP3P\(R3:0x2,R1:0x0\)\(HI, R\);
+  b4:	0c c4 [0-3][[:xdigit:]] 40 	R0=A1.L\+A1.H,R0=A0.L\+A0.H;
+  b8:	0c c4 [0-3][[:xdigit:]] 42 	R0=A1.L\+A1.H,R1=A0.L\+A0.H;
+  bc:	0c c4 [8|9|a|b][[:xdigit:]] 46 	R2=A1.L\+A1.H,R3=A0.L\+A0.H;
+  c0:	0c c4 [0-3][[:xdigit:]] 4b 	R4=A1.L\+A1.H,R5=A0.L\+A0.H;
+  c4:	0c c4 [8|9|a|b][[:xdigit:]] 4f 	R6=A1.L\+A1.H,R7=A0.L\+A0.H;
+  c8:	15 c4 d0 01 	\(R7,R0\)=BYTEOP16P\(R3:0x2,R1:0x0\) ;
+  cc:	15 c4 50 04 	\(R1,R2\)=BYTEOP16P\(R3:0x2,R1:0x0\) ;
+  d0:	15 c4 10 02 	\(R0,R1\)=BYTEOP16P\(R3:0x2,R1:0x0\) ;
+  d4:	15 c4 90 06 	\(R2,R3\)=BYTEOP16P\(R3:0x2,R1:0x0\) ;
+  d8:	15 c4 c2 01 	\(R7,R0\)=BYTEOP16P\(R1:0x0,R3:0x2\) ;
+  dc:	15 c4 42 04 	\(R1,R2\)=BYTEOP16P\(R1:0x0,R3:0x2\) ;
+  e0:	15 c4 02 02 	\(R0,R1\)=BYTEOP16P\(R1:0x0,R3:0x2\) ;
+  e4:	15 c4 82 06 	\(R2,R3\)=BYTEOP16P\(R1:0x0,R3:0x2\) ;
+  e8:	15 c4 d0 21 	\(R7,R0\)=BYTEOP16P\(R3:0x2,R1:0x0\) \(R\);
+  ec:	15 c4 50 24 	\(R1,R2\)=BYTEOP16P\(R3:0x2,R1:0x0\) \(R\);
+  f0:	15 c4 10 22 	\(R0,R1\)=BYTEOP16P\(R3:0x2,R1:0x0\) \(R\);
+  f4:	15 c4 90 26 	\(R2,R3\)=BYTEOP16P\(R3:0x2,R1:0x0\) \(R\);
+  f8:	15 c4 c2 21 	\(R7,R0\)=BYTEOP16P\(R1:0x0,R3:0x2\) \(R\);
+  fc:	15 c4 42 24 	\(R1,R2\)=BYTEOP16P\(R1:0x0,R3:0x2\) \(R\);
+ 100:	15 c4 02 22 	\(R0,R1\)=BYTEOP16P\(R1:0x0,R3:0x2\) \(R\);
+ 104:	15 c4 82 26 	\(R2,R3\)=BYTEOP16P\(R1:0x0,R3:0x2\) \(R\);
+ 108:	14 c4 02 06 	R3=BYTEOP1P\(R1:0x0,R3:0x2\);
+ 10c:	14 c4 02 26 	R3=BYTEOP1P\(R1:0x0,R3:0x2\)\(R\);
+ 110:	14 c4 02 46 	R3=BYTEOP1P\(R1:0x0,R3:0x2\)\(T\);
+ 114:	14 c4 02 66 	R3=BYTEOP1P\(R1:0x0,R3:0x2\)\(T, R\);
+ 118:	14 c4 10 00 	R0=BYTEOP1P\(R3:0x2,R1:0x0\);
+ 11c:	14 c4 10 22 	R1=BYTEOP1P\(R3:0x2,R1:0x0\)\(R\);
+ 120:	14 c4 10 44 	R2=BYTEOP1P\(R3:0x2,R1:0x0\)\(T\);
+ 124:	14 c4 10 66 	R3=BYTEOP1P\(R3:0x2,R1:0x0\)\(T, R\);
+ 128:	16 c4 02 06 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL\);
+ 12c:	36 c4 02 06 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH\);
+ 130:	16 c4 02 46 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL\);
+ 134:	36 c4 02 46 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH\);
+ 138:	16 c4 02 26 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL, R\);
+ 13c:	36 c4 02 26 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH, R\);
+ 140:	16 c4 02 66 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL, R\);
+ 144:	36 c4 02 66 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH, R\);
+ 148:	16 c4 02 00 	R0=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL\);
+ 14c:	36 c4 02 02 	R1=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH\);
+ 150:	16 c4 02 44 	R2=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL\);
+ 154:	36 c4 02 46 	R3=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH\);
+ 158:	16 c4 02 28 	R4=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDL, R\);
+ 15c:	36 c4 02 2a 	R5=BYTEOP2P\(R1:0x0,R3:0x2\)\(RNDH, R\);
+ 160:	16 c4 02 6c 	R6=BYTEOP2P\(R1:0x0,R3:0x2\)\(TL, R\);
+ 164:	36 c4 02 6e 	R7=BYTEOP2P\(R1:0x0,R3:0x2\)\(TH, R\);
+ 168:	16 c4 12 00 	R0=BYTEOP2P\(R3:0x2,R3:0x2\)\(RNDL\);
+ 16c:	36 c4 12 02 	R1=BYTEOP2P\(R3:0x2,R3:0x2\)\(RNDH\);
+ 170:	16 c4 12 44 	R2=BYTEOP2P\(R3:0x2,R3:0x2\)\(TL\);
+ 174:	36 c4 12 46 	R3=BYTEOP2P\(R3:0x2,R3:0x2\)\(TH\);
+ 178:	16 c4 12 28 	R4=BYTEOP2P\(R3:0x2,R3:0x2\)\(RNDL, R\);
+ 17c:	36 c4 12 2a 	R5=BYTEOP2P\(R3:0x2,R3:0x2\)\(RNDH, R\);
+ 180:	16 c4 12 6c 	R6=BYTEOP2P\(R3:0x2,R3:0x2\)\(TL, R\);
+ 184:	36 c4 12 6e 	R7=BYTEOP2P\(R3:0x2,R3:0x2\)\(TH, R\);
+ 188:	18 c4 00 00 	R0=BYTEPACK\(R0,R0\);
+ 18c:	18 c4 13 02 	R1=BYTEPACK\(R2,R3\);
+ 190:	18 c4 2e 08 	R4=BYTEPACK\(R5,R6\);
+ 194:	18 c4 01 0e 	R7=BYTEPACK\(R0,R1\);
+ 198:	18 c4 1c 04 	R2=BYTEPACK\(R3,R4\);
+ 19c:	18 c4 37 0a 	R5=BYTEPACK\(R6,R7\);
+ 1a0:	15 c4 50 44 	\(R1,R2\)=BYTEOP16M\(R3:0x2,R1:0x0\) ;
+ 1a4:	15 c4 50 64 	\(R1,R2\)=BYTEOP16M\(R3:0x2,R1:0x0\) \(R\);
+ 1a8:	15 c4 10 42 	\(R0,R1\)=BYTEOP16M\(R3:0x2,R1:0x0\) ;
+ 1ac:	15 c4 90 66 	\(R2,R3\)=BYTEOP16M\(R3:0x2,R1:0x0\) \(R\);
+ 1b0:	15 c4 d0 4a 	\(R3,R5\)=BYTEOP16M\(R3:0x2,R1:0x0\) ;
+ 1b4:	15 c4 90 6f 	\(R6,R7\)=BYTEOP16M\(R3:0x2,R1:0x0\) \(R\);
+ 1b8:	15 c4 40 44 	\(R1,R2\)=BYTEOP16M\(R1:0x0,R1:0x0\) ;
+ 1bc:	15 c4 40 64 	\(R1,R2\)=BYTEOP16M\(R1:0x0,R1:0x0\) \(R\);
+ 1c0:	15 c4 00 42 	\(R0,R1\)=BYTEOP16M\(R1:0x0,R1:0x0\) ;
+ 1c4:	15 c4 80 66 	\(R2,R3\)=BYTEOP16M\(R1:0x0,R1:0x0\) \(R\);
+ 1c8:	15 c4 c0 4a 	\(R3,R5\)=BYTEOP16M\(R1:0x0,R1:0x0\) ;
+ 1cc:	15 c4 80 6f 	\(R6,R7\)=BYTEOP16M\(R1:0x0,R1:0x0\) \(R\);
+ 1d0:	15 c4 42 44 	\(R1,R2\)=BYTEOP16M\(R1:0x0,R3:0x2\) ;
+ 1d4:	15 c4 42 64 	\(R1,R2\)=BYTEOP16M\(R1:0x0,R3:0x2\) \(R\);
+ 1d8:	15 c4 02 42 	\(R0,R1\)=BYTEOP16M\(R1:0x0,R3:0x2\) ;
+ 1dc:	15 c4 82 66 	\(R2,R3\)=BYTEOP16M\(R1:0x0,R3:0x2\) \(R\);
+ 1e0:	15 c4 c2 4a 	\(R3,R5\)=BYTEOP16M\(R1:0x0,R3:0x2\) ;
+ 1e4:	15 c4 82 6f 	\(R6,R7\)=BYTEOP16M\(R1:0x0,R3:0x2\) \(R\);
+ 1e8:	15 c4 52 44 	\(R1,R2\)=BYTEOP16M\(R3:0x2,R3:0x2\) ;
+ 1ec:	15 c4 52 64 	\(R1,R2\)=BYTEOP16M\(R3:0x2,R3:0x2\) \(R\);
+ 1f0:	15 c4 12 42 	\(R0,R1\)=BYTEOP16M\(R3:0x2,R3:0x2\) ;
+ 1f4:	15 c4 92 66 	\(R2,R3\)=BYTEOP16M\(R3:0x2,R3:0x2\) \(R\);
+ 1f8:	15 c4 d2 4a 	\(R3,R5\)=BYTEOP16M\(R3:0x2,R3:0x2\) ;
+ 1fc:	15 c4 92 6f 	\(R6,R7\)=BYTEOP16M\(R3:0x2,R3:0x2\) \(R\);
+ 200:	12 cc 02 00 	SAA\(R1:0x0,R3:0x2\)  \|\| R0=\[I0\+\+\] \|\| R2=\[I1\+\+\];
+ 204:	00 9c 0a 9c 
+ 208:	12 cc 02 20 	SAA\(R1:0x0,R3:0x2\) \(R\) \|\| R1=\[I0\+\+\] \|\| R3=\[I1\+\+\];
+ 20c:	01 9c 0b 9c 
+ 210:	12 c4 02 00 	SAA\(R1:0x0,R3:0x2\) ;
+ 214:	18 c4 80 4b 	\(R6,R5\) = BYTEUNPACK R1:0x0 ;
+ 218:	18 c4 80 6b 	\(R6,R5\) = BYTEUNPACK R1:0x0 \(R\);
+ 21c:	18 c4 90 4b 	\(R6,R5\) = BYTEUNPACK R3:0x2 ;
+ 220:	18 c4 90 6b 	\(R6,R5\) = BYTEUNPACK R3:0x2 \(R\);
+ 224:	18 c4 00 42 	\(R0,R1\) = BYTEUNPACK R1:0x0 ;
+ 228:	18 c4 80 66 	\(R2,R3\) = BYTEUNPACK R1:0x0 \(R\);
+ 22c:	18 c4 10 4b 	\(R4,R5\) = BYTEUNPACK R3:0x2 ;
+ 230:	18 c4 90 6f 	\(R6,R7\) = BYTEUNPACK R3:0x2 \(R\);

Added: branches/binutils/package/gas/testsuite/gas/bfin/video2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/bfin/video2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/bfin/video2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,220 @@
+
+.EXTERN MY_LABEL2;
+.section .text;
+
+//
+//13 VIDEO PIXEL OPERATIONS
+//
+
+//Dreg = ALIGN8 ( Dreg, Dreg ) ; /* overlay 1 byte (b) */
+R0 = ALIGN8(R0, R0);
+R0 = ALIGN8(R0, R1);
+R0 = ALIGN8(R1, R0);
+R0 = ALIGN8(R1, R1);
+R0 = ALIGN8(R1, R2);
+R3 = ALIGN8(R4, R5);
+R6 = ALIGN8(R7, R0);
+R1 = ALIGN8(R2, R3);
+R4 = ALIGN8(R5, R6);
+R7 = ALIGN8(R0, R1);
+R2 = ALIGN8(R3, R4);
+R5 = ALIGN8(R6, R7);
+
+//Dreg = ALIGN16 ( Dreg, Dreg ) ; /* overlay 2 bytes (b) */
+R0 = ALIGN16(R0, R0);
+R0 = ALIGN16(R0, R1);
+R0 = ALIGN16(R1, R0);
+R0 = ALIGN16(R1, R1);
+R0 = ALIGN16(R1, R2);
+R3 = ALIGN16(R4, R5);
+R6 = ALIGN16(R7, R0);
+R1 = ALIGN16(R2, R3);
+R4 = ALIGN16(R5, R6);
+R7 = ALIGN16(R0, R1);
+R2 = ALIGN16(R3, R4);
+R5 = ALIGN16(R6, R7);
+
+//Dreg = ALIGN24 ( Dreg, Dreg ) ; /* overlay 3 bytes (b) */
+R0 = ALIGN24(R0, R0);
+R0 = ALIGN24(R0, R1);
+R0 = ALIGN24(R1, R0);
+R0 = ALIGN24(R1, R1);
+R0 = ALIGN24(R1, R2);
+R3 = ALIGN24(R4, R5);
+R6 = ALIGN24(R7, R0);
+R1 = ALIGN24(R2, R3);
+R4 = ALIGN24(R5, R6);
+R7 = ALIGN24(R0, R1);
+R2 = ALIGN24(R3, R4);
+R5 = ALIGN24(R6, R7);
+
+DISALGNEXCPT ; /* (b) */
+
+/* forward byte order operands */
+//Dreg = BYTEOP3P (Dreg_pair, Dreg_pair) (LO) ; /* sum into low bytes (b) */
+//Dreg = BYTEOP3P (Dreg_pair, Dreg_pair) (HI) ; /* sum into high bytes (b) */
+/* reverse byte order operands */
+//Dreg = BYTEOP3P (Dreg_pair, Dreg_pair) (LO, R) ; /* sum into low bytes (b) */
+//Dreg = BYTEOP3P (Dreg_pair, Dreg_pair) (HI, R) ; /* sum into high bytes (b) */
+
+r0 = byteop3p (r1:0, r3:2) (lo) ;
+r1 = byteop3p (r1:0, r3:2) (hi) ;
+r2 = byteop3p (r1:0, r3:2) (lo, r) ;
+r3 = byteop3p (r1:0, r3:2) (hi, r) ;
+r4 = byteop3p (r3:2, r1:0) (lo) ;
+r5 = byteop3p (r3:2, r1:0) (hi) ;
+r6 = byteop3p (r3:2, r1:0) (lo, r) ;
+r7 = byteop3p (r3:2, r1:0) (hi, r) ;
+
+//Dreg = A1.L + A1.H, Dreg = A0.L + A0.H ; /* (b) */
+
+R0 = A1.L + A1.H, R0= A0.L + A0.H ;
+R0 = A1.L + A1.H, R1= A0.L + A0.H ;
+R2 = A1.L + A1.H, R3= A0.L + A0.H ;
+R4 = A1.L + A1.H, R5= A0.L + A0.H ;
+R6 = A1.L + A1.H, R7= A0.L + A0.H ;
+
+/* forward byte order operands */
+//( Dreg, Dreg ) = BYTEOP16P ( Dreg_pair, Dreg_pair ) ; /* (b) */
+(r7,r0) = BYTEOP16P ( r3:2,r1:0 ) ;
+(r1,r2) = byteop16p (r3:2,r1:0) ;
+(r0,r1) = BYTEOP16P ( r3:2,r1:0 ) ;
+(r2,r3) = byteop16p (r3:2,r1:0) ;
+(r7,r0) = BYTEOP16P (r1:0, r3:2) ;
+(r1,r2) = byteop16p (r1:0,r3:2) ;
+(r0,r1) = BYTEOP16P (r1:0, r3:2) ;
+(r2,r3) = byteop16p (r1:0,r3:2) ;
+
+/* reverse byte order operands */
+//( Dreg, Dreg ) = BYTEOP16P ( Dreg_pair, Dreg_pair ) (R); /* (b) */
+(r7,r0) = BYTEOP16P ( r3:2,r1:0 )(r) ;
+(r1,r2) = byteop16p (r3:2,r1:0)(r) ;
+(r0,r1) = BYTEOP16P ( r3:2,r1:0 )(r) ;
+(r2,r3) = byteop16p (r3:2,r1:0)(r) ;
+(r7,r0) = BYTEOP16P (r1:0, r3:2)(r) ;
+(r1,r2) = byteop16p (r1:0,r3:2)(r) ;
+(r0,r1) = BYTEOP16P (r1:0, r3:2)(r) ;
+(r2,r3) = byteop16p (r1:0,r3:2)(r) ;
+
+/* forward byte order operands */
+//Dreg = BYTEOP1P (Dreg_pair, Dreg_pair) ; /* (b) */
+//Dreg = BYTEOP1P (Dreg_pair, Dreg_pair) (T) ; /* truncated (b)*/
+/* reverse byte order operands */
+//Dreg = BYTEOP1P (Dreg_pair, Dreg_pair) (R) ; /* (b) */
+//Dreg = BYTEOP1P (Dreg_pair, Dreg_pair) (T, R) ; /* truncated (b) */				                
+
+r3 = byteop1p (r1:0, r3:2) ;
+r3 = byteop1p (r1:0, r3:2) (r) ;
+r3 = byteop1p (r1:0, r3:2) (t) ;
+r3 = byteop1p (r1:0, r3:2) (t,r) ;
+
+r0 = byteop1p (r3:2,r1:0);
+r1 = byteop1p (r3:2,r1:0)(r) ;
+r2 = byteop1p (r3:2,r1:0)(t) ;
+r3 = byteop1p (r3:2,r1:0)(t,r) ;
+
+/* forward byte order operands */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (RNDL) ;
+/* round into low bytes (b) */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (RNDH) ;
+/* round into high bytes (b) */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (TL) ;
+/* truncate into low bytes (b) */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (TH) ;
+/* truncate into high bytes (b) */
+/* reverse byte order operands */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (RNDL, R) ;
+/* round into low bytes (b) */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (RNDH, R) ;
+/* round into high bytes (b) */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (TL, R) ;
+/* truncate into low bytes (b) */
+//Dreg = BYTEOP2P (Dreg_pair, Dreg_pair) (TH, R) ;
+/* truncate into high bytes (b) */
+
+r3 = byteop2p (r1:0, r3:2) (rndl) ;
+r3 = byteop2p (r1:0, r3:2) (rndh) ;
+r3 = byteop2p (r1:0, r3:2) (tl) ;
+r3 = byteop2p (r1:0, r3:2) (th) ;
+r3 = byteop2p (r1:0, r3:2) (rndl, r) ;
+r3 = byteop2p (r1:0, r3:2) (rndh, r) ;
+r3 = byteop2p (r1:0, r3:2) (tl, r) ;
+r3 = byteop2p (r1:0, r3:2) (th, r) ;
+
+r0 = byteop2p (r1:0, r3:2) (rndl) ;
+r1 = byteop2p (r1:0, r3:2) (rndh) ;
+r2 = byteop2p (r1:0, r3:2) (tl) ;
+r3 = byteop2p (r1:0, r3:2) (th) ;
+r4 = byteop2p (r1:0, r3:2) (rndl, r) ;
+r5 = byteop2p (r1:0, r3:2) (rndh, r) ;
+r6 = byteop2p (r1:0, r3:2) (tl, r) ;
+r7 = byteop2p (r1:0, r3:2) (th, r) ;
+
+r0 = byteop2p (r3:2, r3:2) (rndl) ;
+r1 = byteop2p (r3:2, r3:2) (rndh) ;
+r2 = byteop2p (r3:2, r3:2) (tl) ;
+r3 = byteop2p (r3:2, r3:2) (th) ;
+r4 = byteop2p (r3:2, r3:2) (rndl, r) ;
+r5 = byteop2p (r3:2, r3:2) (rndh, r) ;
+r6 = byteop2p (r3:2, r3:2) (tl, r) ;
+r7 = byteop2p (r3:2, r3:2) (th, r) ;
+
+//Dreg = BYTEPACK ( Dreg, Dreg ) ; /* (b) */
+r0 = bytepack (r0,r0) ;
+r1 = bytepack (r2,r3) ;
+r4 = bytepack (r5,r6) ;
+r7 = bytepack (r0,r1) ;
+r2 = bytepack (r3,r4) ;
+r5 = bytepack (r6,r7) ;
+
+/* forward byte order operands */
+//(Dreg, Dreg) = BYTEOP16M (Dreg_pair, Dreg_pair) ; /* (b */)
+/* reverse byte order operands */
+//(Dreg, Dreg) = BYTEOP16M (Dreg-pair, Dreg-pair) (R) ; /* (b) */
+
+(r1,r2)= byteop16m (r3:2,r1:0) ;
+(r1,r2)= byteop16m (r3:2,r1:0) (r) ;
+(r0,r1)= byteop16m (r3:2,r1:0) ;
+(r2,r3)= byteop16m (r3:2,r1:0) (r) ;
+(r3,r5)= byteop16m (r3:2,r1:0) ;
+(r6,r7)= byteop16m (r3:2,r1:0) (r) ;
+
+(r1,r2)= byteop16m (r1:0,r1:0) ;
+(r1,r2)= byteop16m (r1:0,r1:0) (r) ;
+(r0,r1)= byteop16m (r1:0,r1:0) ;
+(r2,r3)= byteop16m (r1:0,r1:0) (r) ;
+(r3,r5)= byteop16m (r1:0,r1:0) ;
+(r6,r7)= byteop16m (r1:0,r1:0) (r) ;
+
+(r1,r2)= byteop16m (r1:0,r3:2) ;
+(r1,r2)= byteop16m (r1:0,r3:2) (r) ;
+(r0,r1)= byteop16m (r1:0,r3:2) ;
+(r2,r3)= byteop16m (r1:0,r3:2) (r) ;
+(r3,r5)= byteop16m (r1:0,r3:2) ;
+(r6,r7)= byteop16m (r1:0,r3:2) (r) ;
+
+(r1,r2)= byteop16m (r3:2,r3:2) ;
+(r1,r2)= byteop16m (r3:2,r3:2) (r) ;
+(r0,r1)= byteop16m (r3:2,r3:2) ;
+(r2,r3)= byteop16m (r3:2,r3:2) (r) ;
+(r3,r5)= byteop16m (r3:2,r3:2) ;
+(r6,r7)= byteop16m (r3:2,r3:2) (r) ;
+
+//SAA (Dreg_pair, Dreg_pair) ; /* forward byte order operands (b) */
+//SAA (Dreg_pair, Dreg_pair) (R) ; /* reverse byte order operands (b) */
+
+saa(r1:0, r3:2) || r0 = [i0++] || r2 = [i1++] ; /* parallel fill instructions */
+saa (r1:0, r3:2) (R) || r1 = [i0++] || r3 = [i1++] ; /* reverse, parallel fill instructions */
+saa (r1:0, r3:2) ; /* last SAA in a loop, no more fill required */
+
+//( Dreg , Dreg ) = BYTEUNPACK Dreg_pair ; /* (b) */
+//( Dreg , Dreg ) = BYTEUNPACK Dreg_pair (R) ; /* reverse source order (b) */
+
+(r6,r5) = byteunpack r1:0 ; /* non-reversing sources */
+(r6,r5) = byteunpack r1:0 (R) ; /* reversing sources case */
+(r6,r5) = byteunpack r3:2 ; /* non-reversing sources */
+(r6,r5) = byteunpack r3:2 (R) ; /* reversing sources case */
+(r0,r1) = byteunpack r1:0 ; /* non-reversing sources */
+(r2,r3) = byteunpack r1:0 (R) ; /* reversing sources case */
+(r4,r5) = byteunpack r3:2 ; /* non-reversing sources */
+(r6,r7) = byteunpack r3:2 (R) ; /* reversing sources case */

Added: branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,26 @@
+#readelf: -wl
+#name: lns-common-1
+Dump of debug contents of section \.debug_line:
+#...
+  Initial value of 'is_stmt':  1
+#...
+ Line Number Statements:
+  Extended opcode 2: set Address to .*
+  Copy
+  Set column to 3
+  Special opcode .*: advance Address by .* to .* and Line by 1 to 2
+  Set prologue_end to true
+  Special opcode .*: advance Address by .* to .* and Line by 1 to 3
+  Set column to 0
+  Set epilogue_begin to true
+  Special opcode .*: advance Address by .* to .* and Line by 1 to 4
+  Set ISA to 1
+  Set basic block
+  Special opcode .*: advance Address by .* to .* and Line by 1 to 5
+  Set is_stmt to 0
+  Special opcode .*: advance Address by .* to .* and Line by 1 to 6
+  Set is_stmt to 1
+  Special opcode .*: advance Address by .* to .* and Line by 1 to 7
+  Advance PC by .* to .*
+  Extended opcode 1: End of Sequence
+#...

Added: branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/lns/lns-common-1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,15 @@
+	.file 1 "foo.c"
+	.loc 1 1
+	nop
+	.loc 1 2 3
+	nop
+	.loc 1 3 prologue_end
+	nop
+	.loc 1 4 0 epilogue_begin
+	nop
+	.loc 1 5 isa 1 basic_block
+	nop
+	.loc 1 6 is_stmt 0
+	nop
+	.loc 1 7 is_stmt 1
+	nop

Added: branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,15 @@
+.*: Assembler messages:
+.*:2: Error: file number less than one
+.*:3: Error: missing string
+.*:4: Error: file number 1 already allocated
+.*:8: Error: unassigned file number 3
+.*:9: Error: junk at end of line, first unrecognized character is `1'
+.*:12: Error: junk at end of line, first unrecognized character is `0'
+.*:18: Error: is_stmt value not 0 or 1
+.*:19: Error: bad or irreducible absolute expression
+.*:23: Error: isa number less than zero
+.*:26: Error: bad or irreducible absolute expression
+.*:26: Error: file number less than one
+.*:27: Error: bad or irreducible absolute expression
+.*:28: Error: unknown .loc sub-directive `frobnitz'
+.*:29: Error: unknown .loc sub-directive `frobnitz'

Added: branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/lns/lns-diag-1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,29 @@
+	.file 1 "foo.c"
+	.file 0 "bar.c"
+	.file 2 baz.c
+	.file 1 "bar.c"
+
+	.loc 1 1
+	.loc 1 2 3
+	.loc 3 1
+	.loc 1 1 1 1
+
+	.loc 1 1 basic_block
+	.loc 1 1 basic_block 0
+	.loc 1 1 prologue_end
+	.loc 1 1 epilogue_begin
+
+	.loc 1 1 1 is_stmt 0
+	.loc 1 1 1 is_stmt 1
+	.loc 1 1 1 is_stmt 2
+	.loc 1 1 1 is_stmt foo
+
+	.loc 1 1 isa 1
+	.loc 1 1 isa 2
+	.loc 1 1 isa -1
+	.loc 1 1 isa 0
+
+	.loc frobnitz
+	.loc 1 frobnitz
+	.loc 1 1 frobnitz
+	.loc 1 1 1 frobnitz

Added: branches/binutils/package/gas/testsuite/gas/lns/lns.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/lns/lns.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/lns/lns.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,27 @@
+# ??? This probably shouldn't be replicated here...
+proc run_list_test { name opts } {
+    global srcdir subdir
+    set testname "lns $name"
+    set file $srcdir/$subdir/$name
+    gas_run ${name}.s $opts ">&dump.out"
+    if { [regexp_diff "dump.out" "${file}.l"] } then {
+        fail $testname
+        verbose "output is [file_contents "dump.out"]" 2
+        return
+    }
+    pass $testname
+}
+
+if ![is_elf_format] then {
+    return
+}
+
+run_list_test "lns-diag-1" ""
+
+# ??? Won't work on targets that don't have a bare "nop" insn.
+# Perhaps we could arrange for an include file or something that
+# defined a macro...
+if { ![istarget ia64*-*-*] && ![istarget i370-*-*] && ![istarget i960-*-*]
+     && ![istarget or32-*-*] && ![istarget s390*-*-*] } {
+  run_dump_test "lns-common-1"
+}

Modified: branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -168,3 +168,11 @@
 [ 0-9a-f]+:	f22e 5038 0008 	fcmpw %fp@\(8\),%fp0
 [ 0-9a-f]+:	f22e 5438 0008 	fcmpd %fp@\(8\),%fp0
 [ 0-9a-f]+:	f22e 5838 0008 	fcmpb %fp@\(8\),%fp0
+[ 0-9a-f]+:	f22e f0f2 0008 	fmovemd %fp0-%fp3/%fp6,%fp@\(8\)
+[ 0-9a-f]+:	f22e d02c 0008 	fmovemd %fp@\(8\),%fp2/%fp4-%fp5
+[ 0-9a-f]+:	f22e f027 0008 	fmovemd %fp2/%fp5-%fp7,%fp@\(8\)
+[ 0-9a-f]+:	f22e d0e1 0008 	fmovemd %fp@\(8\),%fp0-%fp2/%fp7
+[ 0-9a-f]+:	f22e f0f2 0008 	fmovemd %fp0-%fp3/%fp6,%fp@\(8\)
+[ 0-9a-f]+:	f22e d02c 0008 	fmovemd %fp@\(8\),%fp2/%fp4-%fp5
+[ 0-9a-f]+:	f22e f027 0008 	fmovemd %fp2/%fp5-%fp7,%fp@\(8\)
+[ 0-9a-f]+:	f22e d0e1 0008 	fmovemd %fp@\(8\),%fp0-%fp2/%fp7

Modified: branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/m68k/mcf-fpu.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -163,3 +163,11 @@
 	fcmpw	%fp@(8),%fp0
 	fcmpd	%fp@(8),%fp0
 	fcmpb	%fp@(8),%fp0
+	fmovemd	%fp0-%fp3/%fp6,%fp@(8)
+	fmovemd	%fp@(8),%fp5/%fp4/%fp2
+	fmovemd	#0x27,%fp@(8)
+	fmovemd	%fp@(8),#0xe1
+	fmovem	%fp0-%fp3/%fp6,%fp@(8)
+	fmovem	%fp@(8),%fp5/%fp4/%fp2
+	fmovem	#0x27,%fp@(8)
+	fmovem	%fp@(8),#0xe1

Modified: branches/binutils/package/gas/testsuite/gas/mips/jal-range.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/jal-range.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/jal-range.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
 .*: Assembler messages:
 .*:4: Error: jump to misaligned address \(0x1\)
 .*:6: Error: jump to misaligned address \(0xfffffff\)
-.*:7: Error: jump address range overflow \(0x10000000\)
+.*:8: Error: jump to misaligned address \(0x10000003\)

Modified: branches/binutils/package/gas/testsuite/gas/mips/jal-range.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/jal-range.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/jal-range.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,7 +1,8 @@
-# Source file use to test border cases of jumps
+# Source file used to test misaligned targets of absolute jumps
 
 	jal	0x0
 	jal	0x1
 	jal	0xffffffc
 	jal	0xfffffff
 	jal	0x10000000
+	jal	0x10000003

Modified: branches/binutils/package/gas/testsuite/gas/mips/mips16e-jrc.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/mips16e-jrc.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/mips16e-jrc.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,5 @@
 #objdump: -dr -mmips:isa32 -mmips:16
-#as: -march=mips32 -mips16
+#as: -march=mips32 -mips16 -32
 #name: mips16e jalrc/jrc
 
 .*: +file format .*mips.*

Modified: branches/binutils/package/gas/testsuite/gas/mips/mips16e-save.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/mips16e-save.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/mips16e-save.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,5 @@
 #objdump: -dr -mmips:isa32 -mmips:16
-#as: -march=mips32 -mips16
+#as: -march=mips32 -mips16 -32
 #name: mips16e save/restore
 
 .*: +file format .*mips.*

Modified: branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,6 +1,6 @@
 #objdump: -dr --prefix-addresses --show-raw-insn
 #name: MIPS DSP ASE for MIPS32
-#as: -mdsp
+#as: -mdsp -32
 #stderr: mips32-dsp.l
 
 # Check MIPS DSP ASE for MIPS32 Instruction Assembly

Modified: branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/mips32-dsp.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,39 +1,39 @@
 .*: Assembler messages:
-.*:39: Warning: DSP immediate not in range 0..7 \(4294967295\)
+.*:39: Warning: DSP immediate not in range 0..7 \([0-9]*\)
 .*:42: Warning: DSP immediate not in range 0..7 \(8\)
-.*:44: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:44: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:47: Warning: DSP immediate not in range 0..15 \(16\)
-.*:49: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:49: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:52: Warning: DSP immediate not in range 0..15 \(16\)
-.*:54: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:54: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:57: Warning: DSP immediate not in range 0..31 \(32\)
-.*:59: Warning: DSP immediate not in range 0..7 \(4294967295\)
+.*:59: Warning: DSP immediate not in range 0..7 \([0-9]*\)
 .*:62: Warning: DSP immediate not in range 0..7 \(8\)
-.*:64: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:64: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:67: Warning: DSP immediate not in range 0..15 \(16\)
-.*:69: Warning: DSP immediate not in range 0..15 \(4294967295\)
+.*:69: Warning: DSP immediate not in range 0..15 \([0-9]*\)
 .*:72: Warning: DSP immediate not in range 0..15 \(16\)
-.*:74: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:74: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:77: Warning: DSP immediate not in range 0..31 \(32\)
-.*:99: Warning: DSP immediate not in range 0..255 \(4294967295\)
+.*:99: Warning: DSP immediate not in range 0..255 \([0-9]*\)
 .*:102: Warning: DSP immediate not in range 0..255 \(256\)
 .*:104: Warning: DSP immediate not in range -512..511 \(-513\)
 .*:107: Warning: DSP immediate not in range -512..511 \(512\)
-.*:121: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:121: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:124: Warning: DSP immediate not in range 0..31 \(32\)
-.*:125: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:125: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:128: Warning: DSP immediate not in range 0..31 \(32\)
-.*:129: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:129: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:132: Warning: DSP immediate not in range 0..31 \(32\)
-.*:133: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:133: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:136: Warning: DSP immediate not in range 0..31 \(32\)
-.*:141: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:141: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:144: Warning: DSP immediate not in range 0..31 \(32\)
-.*:146: Warning: DSP immediate not in range 0..31 \(4294967295\)
+.*:146: Warning: DSP immediate not in range 0..31 \([0-9]*\)
 .*:149: Warning: DSP immediate not in range 0..31 \(32\)
 .*:151: Warning: DSP immediate not in range -32..31 \(-33\)
 .*:154: Warning: DSP immediate not in range -32..31 \(32\)
-.*:161: Warning: DSP immediate not in range 0..63 \(4294967295\)
+.*:161: Warning: DSP immediate not in range 0..63 \([0-9]*\)
 .*:164: Warning: DSP immediate not in range 0..63 \(64\)
-.*:166: Warning: DSP immediate not in range 0..63 \(4294967295\)
+.*:166: Warning: DSP immediate not in range 0..63 \([0-9]*\)
 .*:169: Warning: DSP immediate not in range 0..63 \(64\)

Modified: branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,6 +1,6 @@
 #objdump: -dr --prefix-addresses --show-raw-insn -M cp0-names=mips32
 #name: MIPS MT ASE for MIPS32
-#as: -mmt
+#as: -mmt -32
 #stderr: mips32-mt.l
 
 # Check MIPS MT ASE for MIPS32 Instruction Assembly
@@ -567,134 +567,134 @@
 0+08b0 <[^>]*> 418a5824 	mttc2	t2,\$11
 0+08b4 <[^>]*> 418b6034 	mtthc2	t3,\$12
 0+08b8 <[^>]*> 418c6825 	cttc2	t4,\$13
-0+08bc <[^>]*> 410d7030 	mftr	t5,t6,1,0,1
-0+08c0 <[^>]*> 410d7031 	mftr	t5,t6,1,1,1
-0+08c4 <[^>]*> 410d7032 	mfthc1	t6,\$f13
-0+08c8 <[^>]*> 410d7033 	mftr	t5,t6,1,3,1
-0+08cc <[^>]*> 410d7034 	mfthc2	t6,\$13
-0+08d0 <[^>]*> 410d7035 	mftr	t5,t6,1,5,1
-0+08d4 <[^>]*> 410d7036 	mftr	t5,t6,1,6,1
-0+08d8 <[^>]*> 410d7037 	mftr	t5,t6,1,7,1
-0+08dc <[^>]*> 410d7020 	mftgpr	t6,t5
-0+08e0 <[^>]*> 410d7021 	mfthi	t6,\$ac3
-0+08e4 <[^>]*> 410d7022 	mftc1	t6,\$f13
-0+08e8 <[^>]*> 410d7023 	cftc1	t6,\$13
-0+08ec <[^>]*> 410d7024 	mftc2	t6,\$13
-0+08f0 <[^>]*> 410d7025 	cftc2	t6,\$13
-0+08f4 <[^>]*> 410d7026 	mftr	t5,t6,1,6,0
-0+08f8 <[^>]*> 410d7027 	mftr	t5,t6,1,7,0
-0+08fc <[^>]*> 410d7030 	mftr	t5,t6,1,0,1
-0+0900 <[^>]*> 410d7031 	mftr	t5,t6,1,1,1
-0+0904 <[^>]*> 410d7032 	mfthc1	t6,\$f13
-0+0908 <[^>]*> 410d7033 	mftr	t5,t6,1,3,1
-0+090c <[^>]*> 410d7034 	mfthc2	t6,\$13
-0+0910 <[^>]*> 410d7035 	mftr	t5,t6,1,5,1
-0+0914 <[^>]*> 410d7036 	mftr	t5,t6,1,6,1
-0+0918 <[^>]*> 410d7037 	mftr	t5,t6,1,7,1
-0+091c <[^>]*> 410d7020 	mftgpr	t6,t5
-0+0920 <[^>]*> 410d7021 	mfthi	t6,\$ac3
-0+0924 <[^>]*> 410d7022 	mftc1	t6,\$f13
-0+0928 <[^>]*> 410d7023 	cftc1	t6,\$13
-0+092c <[^>]*> 410d7024 	mftc2	t6,\$13
-0+0930 <[^>]*> 410d7025 	cftc2	t6,\$13
-0+0934 <[^>]*> 410d7026 	mftr	t5,t6,1,6,0
-0+0938 <[^>]*> 410d7027 	mftr	t5,t6,1,7,0
-0+093c <[^>]*> 410d7010 	mftr	t5,t6,0,0,1
-0+0940 <[^>]*> 410d7011 	mftr	t5,t6,0,1,1
-0+0944 <[^>]*> 410d7012 	mftr	t5,t6,0,2,1
-0+0948 <[^>]*> 410d7013 	mftr	t5,t6,0,3,1
-0+094c <[^>]*> 410d7014 	mftr	t5,t6,0,4,1
-0+0950 <[^>]*> 410d7015 	mftr	t5,t6,0,5,1
-0+0954 <[^>]*> 410d7016 	mftr	t5,t6,0,6,1
-0+0958 <[^>]*> 410d7017 	mftr	t5,t6,0,7,1
-0+095c <[^>]*> 410d7000 	mftc0	t6,c0_cause
-0+0960 <[^>]*> 410d7001 	mftc0	t6,\$13,1
-0+0964 <[^>]*> 410d7002 	mftc0	t6,\$13,2
-0+0968 <[^>]*> 410d7003 	mftc0	t6,\$13,3
-0+096c <[^>]*> 410d7004 	mftc0	t6,\$13,4
-0+0970 <[^>]*> 410d7005 	mftc0	t6,\$13,5
-0+0974 <[^>]*> 410d7006 	mftc0	t6,\$13,6
-0+0978 <[^>]*> 410d7007 	mftc0	t6,\$13,7
-0+097c <[^>]*> 410d7010 	mftr	t5,t6,0,0,1
-0+0980 <[^>]*> 410d7011 	mftr	t5,t6,0,1,1
-0+0984 <[^>]*> 410d7012 	mftr	t5,t6,0,2,1
-0+0988 <[^>]*> 410d7013 	mftr	t5,t6,0,3,1
-0+098c <[^>]*> 410d7014 	mftr	t5,t6,0,4,1
-0+0990 <[^>]*> 410d7015 	mftr	t5,t6,0,5,1
-0+0994 <[^>]*> 410d7016 	mftr	t5,t6,0,6,1
-0+0998 <[^>]*> 410d7017 	mftr	t5,t6,0,7,1
-0+099c <[^>]*> 410d7000 	mftc0	t6,c0_cause
-0+09a0 <[^>]*> 410d7001 	mftc0	t6,\$13,1
-0+09a4 <[^>]*> 410d7002 	mftc0	t6,\$13,2
-0+09a8 <[^>]*> 410d7003 	mftc0	t6,\$13,3
-0+09ac <[^>]*> 410d7004 	mftc0	t6,\$13,4
-0+09b0 <[^>]*> 410d7005 	mftc0	t6,\$13,5
-0+09b4 <[^>]*> 410d7006 	mftc0	t6,\$13,6
-0+09b8 <[^>]*> 410d7007 	mftc0	t6,\$13,7
-0+09bc <[^>]*> 410d7030 	mftr	t5,t6,1,0,1
-0+09c0 <[^>]*> 410d7031 	mftr	t5,t6,1,1,1
-0+09c4 <[^>]*> 410d7032 	mfthc1	t6,\$f13
-0+09c8 <[^>]*> 410d7033 	mftr	t5,t6,1,3,1
-0+09cc <[^>]*> 410d7034 	mfthc2	t6,\$13
-0+09d0 <[^>]*> 410d7035 	mftr	t5,t6,1,5,1
-0+09d4 <[^>]*> 410d7036 	mftr	t5,t6,1,6,1
-0+09d8 <[^>]*> 410d7037 	mftr	t5,t6,1,7,1
-0+09dc <[^>]*> 410d7020 	mftgpr	t6,t5
-0+09e0 <[^>]*> 410d7021 	mfthi	t6,\$ac3
-0+09e4 <[^>]*> 410d7022 	mftc1	t6,\$f13
-0+09e8 <[^>]*> 410d7023 	cftc1	t6,\$13
-0+09ec <[^>]*> 410d7024 	mftc2	t6,\$13
-0+09f0 <[^>]*> 410d7025 	cftc2	t6,\$13
-0+09f4 <[^>]*> 410d7026 	mftr	t5,t6,1,6,0
-0+09f8 <[^>]*> 410d7027 	mftr	t5,t6,1,7,0
-0+09fc <[^>]*> 410d7030 	mftr	t5,t6,1,0,1
-0+0a00 <[^>]*> 410d7031 	mftr	t5,t6,1,1,1
-0+0a04 <[^>]*> 410d7032 	mfthc1	t6,\$f13
-0+0a08 <[^>]*> 410d7033 	mftr	t5,t6,1,3,1
-0+0a0c <[^>]*> 410d7034 	mfthc2	t6,\$13
-0+0a10 <[^>]*> 410d7035 	mftr	t5,t6,1,5,1
-0+0a14 <[^>]*> 410d7036 	mftr	t5,t6,1,6,1
-0+0a18 <[^>]*> 410d7037 	mftr	t5,t6,1,7,1
-0+0a1c <[^>]*> 410d7020 	mftgpr	t6,t5
-0+0a20 <[^>]*> 410d7021 	mfthi	t6,\$ac3
-0+0a24 <[^>]*> 410d7022 	mftc1	t6,\$f13
-0+0a28 <[^>]*> 410d7023 	cftc1	t6,\$13
-0+0a2c <[^>]*> 410d7024 	mftc2	t6,\$13
-0+0a30 <[^>]*> 410d7025 	cftc2	t6,\$13
-0+0a34 <[^>]*> 410d7026 	mftr	t5,t6,1,6,0
-0+0a38 <[^>]*> 410d7027 	mftr	t5,t6,1,7,0
-0+0a3c <[^>]*> 410d7010 	mftr	t5,t6,0,0,1
-0+0a40 <[^>]*> 410d7011 	mftr	t5,t6,0,1,1
-0+0a44 <[^>]*> 410d7012 	mftr	t5,t6,0,2,1
-0+0a48 <[^>]*> 410d7013 	mftr	t5,t6,0,3,1
-0+0a4c <[^>]*> 410d7014 	mftr	t5,t6,0,4,1
-0+0a50 <[^>]*> 410d7015 	mftr	t5,t6,0,5,1
-0+0a54 <[^>]*> 410d7016 	mftr	t5,t6,0,6,1
-0+0a58 <[^>]*> 410d7017 	mftr	t5,t6,0,7,1
-0+0a5c <[^>]*> 410d7000 	mftc0	t6,c0_cause
-0+0a60 <[^>]*> 410d7001 	mftc0	t6,\$13,1
-0+0a64 <[^>]*> 410d7002 	mftc0	t6,\$13,2
-0+0a68 <[^>]*> 410d7003 	mftc0	t6,\$13,3
-0+0a6c <[^>]*> 410d7004 	mftc0	t6,\$13,4
-0+0a70 <[^>]*> 410d7005 	mftc0	t6,\$13,5
-0+0a74 <[^>]*> 410d7006 	mftc0	t6,\$13,6
-0+0a78 <[^>]*> 410d7007 	mftc0	t6,\$13,7
-0+0a7c <[^>]*> 410d7010 	mftr	t5,t6,0,0,1
-0+0a80 <[^>]*> 410d7011 	mftr	t5,t6,0,1,1
-0+0a84 <[^>]*> 410d7012 	mftr	t5,t6,0,2,1
-0+0a88 <[^>]*> 410d7013 	mftr	t5,t6,0,3,1
-0+0a8c <[^>]*> 410d7014 	mftr	t5,t6,0,4,1
-0+0a90 <[^>]*> 410d7015 	mftr	t5,t6,0,5,1
-0+0a94 <[^>]*> 410d7016 	mftr	t5,t6,0,6,1
-0+0a98 <[^>]*> 410d7017 	mftr	t5,t6,0,7,1
-0+0a9c <[^>]*> 410d7000 	mftc0	t6,c0_cause
-0+0aa0 <[^>]*> 410d7001 	mftc0	t6,\$13,1
-0+0aa4 <[^>]*> 410d7002 	mftc0	t6,\$13,2
-0+0aa8 <[^>]*> 410d7003 	mftc0	t6,\$13,3
-0+0aac <[^>]*> 410d7004 	mftc0	t6,\$13,4
-0+0ab0 <[^>]*> 410d7005 	mftc0	t6,\$13,5
-0+0ab4 <[^>]*> 410d7006 	mftc0	t6,\$13,6
-0+0ab8 <[^>]*> 410d7007 	mftc0	t6,\$13,7
+0+08bc <[^>]*> 410e6830 	mftr	t5,t6,1,0,1
+0+08c0 <[^>]*> 410e6831 	mftr	t5,t6,1,1,1
+0+08c4 <[^>]*> 410e6832 	mfthc1	t5,\$f14
+0+08c8 <[^>]*> 410e6833 	mftr	t5,t6,1,3,1
+0+08cc <[^>]*> 410e6834 	mfthc2	t5,\$14
+0+08d0 <[^>]*> 410e6835 	mftr	t5,t6,1,5,1
+0+08d4 <[^>]*> 410e6836 	mftr	t5,t6,1,6,1
+0+08d8 <[^>]*> 410e6837 	mftr	t5,t6,1,7,1
+0+08dc <[^>]*> 410e6820 	mftgpr	t5,t6
+0+08e0 <[^>]*> 410e6821 	mftacx	t5,\$ac3
+0+08e4 <[^>]*> 410e6822 	mftc1	t5,\$f14
+0+08e8 <[^>]*> 410e6823 	cftc1	t5,\$14
+0+08ec <[^>]*> 410e6824 	mftc2	t5,\$14
+0+08f0 <[^>]*> 410e6825 	cftc2	t5,\$14
+0+08f4 <[^>]*> 410e6826 	mftr	t5,t6,1,6,0
+0+08f8 <[^>]*> 410e6827 	mftr	t5,t6,1,7,0
+0+08fc <[^>]*> 410e6830 	mftr	t5,t6,1,0,1
+0+0900 <[^>]*> 410e6831 	mftr	t5,t6,1,1,1
+0+0904 <[^>]*> 410e6832 	mfthc1	t5,\$f14
+0+0908 <[^>]*> 410e6833 	mftr	t5,t6,1,3,1
+0+090c <[^>]*> 410e6834 	mfthc2	t5,\$14
+0+0910 <[^>]*> 410e6835 	mftr	t5,t6,1,5,1
+0+0914 <[^>]*> 410e6836 	mftr	t5,t6,1,6,1
+0+0918 <[^>]*> 410e6837 	mftr	t5,t6,1,7,1
+0+091c <[^>]*> 410e6820 	mftgpr	t5,t6
+0+0920 <[^>]*> 410e6821 	mftacx	t5,\$ac3
+0+0924 <[^>]*> 410e6822 	mftc1	t5,\$f14
+0+0928 <[^>]*> 410e6823 	cftc1	t5,\$14
+0+092c <[^>]*> 410e6824 	mftc2	t5,\$14
+0+0930 <[^>]*> 410e6825 	cftc2	t5,\$14
+0+0934 <[^>]*> 410e6826 	mftr	t5,t6,1,6,0
+0+0938 <[^>]*> 410e6827 	mftr	t5,t6,1,7,0
+0+093c <[^>]*> 410e6810 	mftr	t5,t6,0,0,1
+0+0940 <[^>]*> 410e6811 	mftr	t5,t6,0,1,1
+0+0944 <[^>]*> 410e6812 	mftr	t5,t6,0,2,1
+0+0948 <[^>]*> 410e6813 	mftr	t5,t6,0,3,1
+0+094c <[^>]*> 410e6814 	mftr	t5,t6,0,4,1
+0+0950 <[^>]*> 410e6815 	mftr	t5,t6,0,5,1
+0+0954 <[^>]*> 410e6816 	mftr	t5,t6,0,6,1
+0+0958 <[^>]*> 410e6817 	mftr	t5,t6,0,7,1
+0+095c <[^>]*> 410e6800 	mftc0	t5,c0_epc
+0+0960 <[^>]*> 410e6801 	mftc0	t5,\$14,1
+0+0964 <[^>]*> 410e6802 	mftc0	t5,\$14,2
+0+0968 <[^>]*> 410e6803 	mftc0	t5,\$14,3
+0+096c <[^>]*> 410e6804 	mftc0	t5,\$14,4
+0+0970 <[^>]*> 410e6805 	mftc0	t5,\$14,5
+0+0974 <[^>]*> 410e6806 	mftc0	t5,\$14,6
+0+0978 <[^>]*> 410e6807 	mftc0	t5,\$14,7
+0+097c <[^>]*> 410e6810 	mftr	t5,t6,0,0,1
+0+0980 <[^>]*> 410e6811 	mftr	t5,t6,0,1,1
+0+0984 <[^>]*> 410e6812 	mftr	t5,t6,0,2,1
+0+0988 <[^>]*> 410e6813 	mftr	t5,t6,0,3,1
+0+098c <[^>]*> 410e6814 	mftr	t5,t6,0,4,1
+0+0990 <[^>]*> 410e6815 	mftr	t5,t6,0,5,1
+0+0994 <[^>]*> 410e6816 	mftr	t5,t6,0,6,1
+0+0998 <[^>]*> 410e6817 	mftr	t5,t6,0,7,1
+0+099c <[^>]*> 410e6800 	mftc0	t5,c0_epc
+0+09a0 <[^>]*> 410e6801 	mftc0	t5,\$14,1
+0+09a4 <[^>]*> 410e6802 	mftc0	t5,\$14,2
+0+09a8 <[^>]*> 410e6803 	mftc0	t5,\$14,3
+0+09ac <[^>]*> 410e6804 	mftc0	t5,\$14,4
+0+09b0 <[^>]*> 410e6805 	mftc0	t5,\$14,5
+0+09b4 <[^>]*> 410e6806 	mftc0	t5,\$14,6
+0+09b8 <[^>]*> 410e6807 	mftc0	t5,\$14,7
+0+09bc <[^>]*> 410e6830 	mftr	t5,t6,1,0,1
+0+09c0 <[^>]*> 410e6831 	mftr	t5,t6,1,1,1
+0+09c4 <[^>]*> 410e6832 	mfthc1	t5,\$f14
+0+09c8 <[^>]*> 410e6833 	mftr	t5,t6,1,3,1
+0+09cc <[^>]*> 410e6834 	mfthc2	t5,\$14
+0+09d0 <[^>]*> 410e6835 	mftr	t5,t6,1,5,1
+0+09d4 <[^>]*> 410e6836 	mftr	t5,t6,1,6,1
+0+09d8 <[^>]*> 410e6837 	mftr	t5,t6,1,7,1
+0+09dc <[^>]*> 410e6820 	mftgpr	t5,t6
+0+09e0 <[^>]*> 410e6821 	mftacx	t5,\$ac3
+0+09e4 <[^>]*> 410e6822 	mftc1	t5,\$f14
+0+09e8 <[^>]*> 410e6823 	cftc1	t5,\$14
+0+09ec <[^>]*> 410e6824 	mftc2	t5,\$14
+0+09f0 <[^>]*> 410e6825 	cftc2	t5,\$14
+0+09f4 <[^>]*> 410e6826 	mftr	t5,t6,1,6,0
+0+09f8 <[^>]*> 410e6827 	mftr	t5,t6,1,7,0
+0+09fc <[^>]*> 410e6830 	mftr	t5,t6,1,0,1
+0+0a00 <[^>]*> 410e6831 	mftr	t5,t6,1,1,1
+0+0a04 <[^>]*> 410e6832 	mfthc1	t5,\$f14
+0+0a08 <[^>]*> 410e6833 	mftr	t5,t6,1,3,1
+0+0a0c <[^>]*> 410e6834 	mfthc2	t5,\$14
+0+0a10 <[^>]*> 410e6835 	mftr	t5,t6,1,5,1
+0+0a14 <[^>]*> 410e6836 	mftr	t5,t6,1,6,1
+0+0a18 <[^>]*> 410e6837 	mftr	t5,t6,1,7,1
+0+0a1c <[^>]*> 410e6820 	mftgpr	t5,t6
+0+0a20 <[^>]*> 410e6821 	mftacx	t5,\$ac3
+0+0a24 <[^>]*> 410e6822 	mftc1	t5,\$f14
+0+0a28 <[^>]*> 410e6823 	cftc1	t5,\$14
+0+0a2c <[^>]*> 410e6824 	mftc2	t5,\$14
+0+0a30 <[^>]*> 410e6825 	cftc2	t5,\$14
+0+0a34 <[^>]*> 410e6826 	mftr	t5,t6,1,6,0
+0+0a38 <[^>]*> 410e6827 	mftr	t5,t6,1,7,0
+0+0a3c <[^>]*> 410e6810 	mftr	t5,t6,0,0,1
+0+0a40 <[^>]*> 410e6811 	mftr	t5,t6,0,1,1
+0+0a44 <[^>]*> 410e6812 	mftr	t5,t6,0,2,1
+0+0a48 <[^>]*> 410e6813 	mftr	t5,t6,0,3,1
+0+0a4c <[^>]*> 410e6814 	mftr	t5,t6,0,4,1
+0+0a50 <[^>]*> 410e6815 	mftr	t5,t6,0,5,1
+0+0a54 <[^>]*> 410e6816 	mftr	t5,t6,0,6,1
+0+0a58 <[^>]*> 410e6817 	mftr	t5,t6,0,7,1
+0+0a5c <[^>]*> 410e6800 	mftc0	t5,c0_epc
+0+0a60 <[^>]*> 410e6801 	mftc0	t5,\$14,1
+0+0a64 <[^>]*> 410e6802 	mftc0	t5,\$14,2
+0+0a68 <[^>]*> 410e6803 	mftc0	t5,\$14,3
+0+0a6c <[^>]*> 410e6804 	mftc0	t5,\$14,4
+0+0a70 <[^>]*> 410e6805 	mftc0	t5,\$14,5
+0+0a74 <[^>]*> 410e6806 	mftc0	t5,\$14,6
+0+0a78 <[^>]*> 410e6807 	mftc0	t5,\$14,7
+0+0a7c <[^>]*> 410e6810 	mftr	t5,t6,0,0,1
+0+0a80 <[^>]*> 410e6811 	mftr	t5,t6,0,1,1
+0+0a84 <[^>]*> 410e6812 	mftr	t5,t6,0,2,1
+0+0a88 <[^>]*> 410e6813 	mftr	t5,t6,0,3,1
+0+0a8c <[^>]*> 410e6814 	mftr	t5,t6,0,4,1
+0+0a90 <[^>]*> 410e6815 	mftr	t5,t6,0,5,1
+0+0a94 <[^>]*> 410e6816 	mftr	t5,t6,0,6,1
+0+0a98 <[^>]*> 410e6817 	mftr	t5,t6,0,7,1
+0+0a9c <[^>]*> 410e6800 	mftc0	t5,c0_epc
+0+0aa0 <[^>]*> 410e6801 	mftc0	t5,\$14,1
+0+0aa4 <[^>]*> 410e6802 	mftc0	t5,\$14,2
+0+0aa8 <[^>]*> 410e6803 	mftc0	t5,\$14,3
+0+0aac <[^>]*> 410e6804 	mftc0	t5,\$14,4
+0+0ab0 <[^>]*> 410e6805 	mftc0	t5,\$14,5
+0+0ab4 <[^>]*> 410e6806 	mftc0	t5,\$14,6
+0+0ab8 <[^>]*> 410e6807 	mftc0	t5,\$14,7
 0+0abc <[^>]*> 418d7030 	mttr	t5,t6,1,0,1
 0+0ac0 <[^>]*> 418d7031 	mttr	t5,t6,1,1,1
 0+0ac4 <[^>]*> 418d7032 	mtthc1	t5,\$f14
@@ -823,4 +823,4 @@
 0+0cb0 <[^>]*> 418d7005 	mttc0	t5,\$14,5
 0+0cb4 <[^>]*> 418d7006 	mttc0	t5,\$14,6
 0+0cb8 <[^>]*> 418d7007 	mttc0	t5,\$14,7
-	...
+	\.\.\.

Modified: branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.l
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.l	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/mips32-mt.l	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,60 +1,60 @@
 .*: Assembler messages:
-.*:568: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:568: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:569: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:569: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:570: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:570: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:571: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:571: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:572: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:572: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:573: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:573: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:574: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:574: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:575: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:575: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:576: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:577: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:578: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:579: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:580: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:581: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:582: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:583: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:584: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:585: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:586: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:587: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:588: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:589: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:590: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:591: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:592: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:568: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:568: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:569: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:569: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:570: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:570: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:571: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:571: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:572: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:572: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:573: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:573: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:574: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:574: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:575: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:575: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:576: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:577: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:578: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:579: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:580: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:581: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:582: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:583: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:584: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:585: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:586: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:587: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:588: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:589: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:590: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:591: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:592: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:592: Warning: MT immediate not in range 0..1 \(2\)
-.*:593: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:593: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:593: Warning: MT immediate not in range 0..1 \(2\)
-.*:594: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:594: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:594: Warning: MT immediate not in range 0..1 \(2\)
-.*:595: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:595: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:595: Warning: MT immediate not in range 0..1 \(2\)
-.*:596: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:596: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:596: Warning: MT immediate not in range 0..1 \(2\)
-.*:597: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:597: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:597: Warning: MT immediate not in range 0..1 \(2\)
-.*:598: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:598: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:598: Warning: MT immediate not in range 0..1 \(2\)
-.*:599: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:599: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:599: Warning: MT immediate not in range 0..1 \(2\)
-.*:600: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:601: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:602: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:603: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:604: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:605: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:606: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:607: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:600: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:601: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:602: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:603: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:604: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:605: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:606: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:607: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:624: Warning: MT immediate not in range 0..1 \(2\)
 .*:625: Warning: MT immediate not in range 0..1 \(2\)
 .*:626: Warning: MT immediate not in range 0..1 \(2\)
@@ -63,14 +63,14 @@
 .*:629: Warning: MT immediate not in range 0..1 \(2\)
 .*:630: Warning: MT immediate not in range 0..1 \(2\)
 .*:631: Warning: MT immediate not in range 0..1 \(2\)
-.*:632: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:633: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:634: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:635: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:636: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:637: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:638: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:639: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:632: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:633: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:634: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:635: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:636: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:637: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:638: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:639: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:656: Warning: MT immediate not in range 0..1 \(2\)
 .*:657: Warning: MT immediate not in range 0..1 \(2\)
 .*:658: Warning: MT immediate not in range 0..1 \(2\)
@@ -80,21 +80,21 @@
 .*:662: Warning: MT immediate not in range 0..1 \(2\)
 .*:663: Warning: MT immediate not in range 0..1 \(2\)
 .*:664: Warning: MT immediate not in range 0..1 \(2\)
-.*:664: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:664: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:665: Warning: MT immediate not in range 0..1 \(2\)
-.*:665: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:665: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:666: Warning: MT immediate not in range 0..1 \(2\)
-.*:666: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:666: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:667: Warning: MT immediate not in range 0..1 \(2\)
-.*:667: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:667: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:668: Warning: MT immediate not in range 0..1 \(2\)
-.*:668: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:668: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:669: Warning: MT immediate not in range 0..1 \(2\)
-.*:669: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:669: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:670: Warning: MT immediate not in range 0..1 \(2\)
-.*:670: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:670: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:671: Warning: MT immediate not in range 0..1 \(2\)
-.*:671: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:671: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:672: Warning: MT immediate not in range 0..1 \(2\)
 .*:673: Warning: MT immediate not in range 0..1 \(2\)
 .*:674: Warning: MT immediate not in range 0..1 \(2\)
@@ -127,62 +127,62 @@
 .*:694: Warning: MT immediate not in range 0..1 \(2\)
 .*:695: Warning: MT immediate not in range 0..1 \(2\)
 .*:695: Warning: MT immediate not in range 0..1 \(2\)
-.*:696: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:696: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:697: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:697: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:698: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:698: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:699: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:699: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:700: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:700: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:701: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:701: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:702: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:702: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:703: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:703: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:704: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:705: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:706: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:707: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:708: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:709: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:710: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:711: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:712: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:713: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:714: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:715: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:716: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:717: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:718: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:719: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:720: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:696: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:696: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:697: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:697: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:698: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:698: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:699: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:699: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:700: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:700: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:701: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:701: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:702: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:702: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:703: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:703: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:704: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:705: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:706: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:707: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:708: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:709: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:710: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:711: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:712: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:713: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:714: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:715: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:716: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:717: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:718: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:719: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:720: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:720: Warning: MT immediate not in range 0..1 \(2\)
-.*:721: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:721: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:721: Warning: MT immediate not in range 0..1 \(2\)
-.*:722: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:722: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:722: Warning: MT immediate not in range 0..1 \(2\)
-.*:723: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:723: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:723: Warning: MT immediate not in range 0..1 \(2\)
-.*:724: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:724: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:724: Warning: MT immediate not in range 0..1 \(2\)
-.*:725: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:725: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:725: Warning: MT immediate not in range 0..1 \(2\)
-.*:726: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:726: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:726: Warning: MT immediate not in range 0..1 \(2\)
-.*:727: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:727: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:727: Warning: MT immediate not in range 0..1 \(2\)
-.*:728: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:729: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:730: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:731: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:732: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:733: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:734: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:735: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:728: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:729: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:730: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:731: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:732: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:733: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:734: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:735: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:752: Warning: MT immediate not in range 0..1 \(2\)
 .*:753: Warning: MT immediate not in range 0..1 \(2\)
 .*:754: Warning: MT immediate not in range 0..1 \(2\)
@@ -191,14 +191,14 @@
 .*:757: Warning: MT immediate not in range 0..1 \(2\)
 .*:758: Warning: MT immediate not in range 0..1 \(2\)
 .*:759: Warning: MT immediate not in range 0..1 \(2\)
-.*:760: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:761: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:762: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:763: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:764: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:765: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:766: Warning: MT immediate not in range 0..1 \(4294967295\)
-.*:767: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:760: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:761: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:762: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:763: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:764: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:765: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:766: Warning: MT immediate not in range 0..1 \([0-9]*\)
+.*:767: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:784: Warning: MT immediate not in range 0..1 \(2\)
 .*:785: Warning: MT immediate not in range 0..1 \(2\)
 .*:786: Warning: MT immediate not in range 0..1 \(2\)
@@ -208,21 +208,21 @@
 .*:790: Warning: MT immediate not in range 0..1 \(2\)
 .*:791: Warning: MT immediate not in range 0..1 \(2\)
 .*:792: Warning: MT immediate not in range 0..1 \(2\)
-.*:792: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:792: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:793: Warning: MT immediate not in range 0..1 \(2\)
-.*:793: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:793: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:794: Warning: MT immediate not in range 0..1 \(2\)
-.*:794: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:794: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:795: Warning: MT immediate not in range 0..1 \(2\)
-.*:795: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:795: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:796: Warning: MT immediate not in range 0..1 \(2\)
-.*:796: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:796: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:797: Warning: MT immediate not in range 0..1 \(2\)
-.*:797: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:797: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:798: Warning: MT immediate not in range 0..1 \(2\)
-.*:798: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:798: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:799: Warning: MT immediate not in range 0..1 \(2\)
-.*:799: Warning: MT immediate not in range 0..1 \(4294967295\)
+.*:799: Warning: MT immediate not in range 0..1 \([0-9]*\)
 .*:800: Warning: MT immediate not in range 0..1 \(2\)
 .*:801: Warning: MT immediate not in range 0..1 \(2\)
 .*:802: Warning: MT immediate not in range 0..1 \(2\)

Added: branches/binutils/package/gas/testsuite/gas/mips/vxworks1-el.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/vxworks1-el.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/vxworks1-el.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,72 @@
+#as: -mips2 -mvxworks-pic -mabi=32 -EL
+#source: vxworks1.s
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+#
+# la $4,local
+#
+.*:	8f840000 	lw	a0,0\(gp\)
+			.*: R_MIPS_GOT16	\.data
+#
+# la $4,global
+#
+.*:	8f840000 	lw	a0,0\(gp\)
+			.*: R_MIPS_GOT16	global
+#
+# lw $4,local
+#
+.*:	8f840000 	lw	a0,0\(gp\)
+			.*: R_MIPS_GOT16	\.data
+.*:	8c840000 	lw	a0,0\(a0\)
+#
+# lw $4,global
+#
+.*:	8f840000 	lw	a0,0\(gp\)
+			.*: R_MIPS_GOT16	global
+.*:	8c840000 	lw	a0,0\(a0\)
+#
+# sw $4,local
+#
+.*:	8f810000 	lw	at,0\(gp\)
+			.*: R_MIPS_GOT16	\.data
+.*:	ac240000 	sw	a0,0\(at\)
+#
+# sw $4,global
+#
+.*:	8f810000 	lw	at,0\(gp\)
+			.*: R_MIPS_GOT16	global
+.*:	ac240000 	sw	a0,0\(at\)
+#
+# ulw $4,local
+#
+.*:	8f810000 	lw	at,0\(gp\)
+			.*: R_MIPS_GOT16	\.data
+.*:	88240003 	lwl	a0,3\(at\)
+.*:	98240000 	lwr	a0,0\(at\)
+#
+# ulw $4,global
+#
+.*:	8f810000 	lw	at,0\(gp\)
+			.*: R_MIPS_GOT16	global
+.*:	88240003 	lwl	a0,3\(at\)
+.*:	98240000 	lwr	a0,0\(at\)
+#
+# usw $4,local
+#
+.*:	8f810000 	lw	at,0\(gp\)
+			.*: R_MIPS_GOT16	\.data
+.*:	a8240003 	swl	a0,3\(at\)
+.*:	b8240000 	swr	a0,0\(at\)
+#
+# usw $4,global
+#
+.*:	8f810000 	lw	at,0\(gp\)
+			.*: R_MIPS_GOT16	global
+.*:	a8240003 	swl	a0,3\(at\)
+.*:	b8240000 	swr	a0,0\(at\)
+	\.\.\.

Added: branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot-el.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot-el.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot-el.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,102 @@
+#as: -mips2 -mvxworks-pic -xgot -mabi=32 -EL
+#source: vxworks1.s
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+00000000 <\.text>:
+#
+# la $4,local
+#
+.*:	3c040000 	lui	a0,0x0
+			.*: R_MIPS_GOT_HI16	\.data
+.*:	009c2021 	addu	a0,a0,gp
+.*:	8c840000 	lw	a0,0\(a0\)
+			.*: R_MIPS_GOT_LO16	\.data
+#
+# la $4,global
+#
+.*:	3c040000 	lui	a0,0x0
+			.*: R_MIPS_GOT_HI16	global
+.*:	009c2021 	addu	a0,a0,gp
+.*:	8c840000 	lw	a0,0\(a0\)
+			.*: R_MIPS_GOT_LO16	global
+#
+# lw $4,local
+#
+.*:	3c040000 	lui	a0,0x0
+			.*: R_MIPS_GOT_HI16	\.data
+.*:	009c2021 	addu	a0,a0,gp
+.*:	8c840000 	lw	a0,0\(a0\)
+			.*: R_MIPS_GOT_LO16	\.data
+.*:	8c840000 	lw	a0,0\(a0\)
+#
+# lw $4,global
+#
+.*:	3c040000 	lui	a0,0x0
+			.*: R_MIPS_GOT_HI16	global
+.*:	009c2021 	addu	a0,a0,gp
+.*:	8c840000 	lw	a0,0\(a0\)
+			.*: R_MIPS_GOT_LO16	global
+.*:	8c840000 	lw	a0,0\(a0\)
+#
+# sw $4,local
+#
+.*:	3c010000 	lui	at,0x0
+			.*: R_MIPS_GOT_HI16	\.data
+.*:	003c0821 	addu	at,at,gp
+.*:	8c210000 	lw	at,0\(at\)
+			.*: R_MIPS_GOT_LO16	\.data
+.*:	ac240000 	sw	a0,0\(at\)
+#
+# sw $4,global
+#
+.*:	3c010000 	lui	at,0x0
+			.*: R_MIPS_GOT_HI16	global
+.*:	003c0821 	addu	at,at,gp
+.*:	8c210000 	lw	at,0\(at\)
+			.*: R_MIPS_GOT_LO16	global
+.*:	ac240000 	sw	a0,0\(at\)
+#
+# ulw $4,local
+#
+.*:	3c010000 	lui	at,0x0
+			.*: R_MIPS_GOT_HI16	\.data
+.*:	003c0821 	addu	at,at,gp
+.*:	8c210000 	lw	at,0\(at\)
+			.*: R_MIPS_GOT_LO16	\.data
+.*:	88240003 	lwl	a0,3\(at\)
+.*:	98240000 	lwr	a0,0\(at\)
+#
+# ulw $4,global
+#
+.*:	3c010000 	lui	at,0x0
+			.*: R_MIPS_GOT_HI16	global
+.*:	003c0821 	addu	at,at,gp
+.*:	8c210000 	lw	at,0\(at\)
+			.*: R_MIPS_GOT_LO16	global
+.*:	88240003 	lwl	a0,3\(at\)
+.*:	98240000 	lwr	a0,0\(at\)
+#
+# usw $4,local
+#
+.*:	3c010000 	lui	at,0x0
+			.*: R_MIPS_GOT_HI16	\.data
+.*:	003c0821 	addu	at,at,gp
+.*:	8c210000 	lw	at,0\(at\)
+			.*: R_MIPS_GOT_LO16	\.data
+.*:	a8240003 	swl	a0,3\(at\)
+.*:	b8240000 	swr	a0,0\(at\)
+#
+# usw $4,global
+#
+.*:	3c010000 	lui	at,0x0
+			.*: R_MIPS_GOT_HI16	global
+.*:	003c0821 	addu	at,at,gp
+.*:	8c210000 	lw	at,0\(at\)
+			.*: R_MIPS_GOT_LO16	global
+.*:	a8240003 	swl	a0,3\(at\)
+.*:	b8240000 	swr	a0,0\(at\)
+	\.\.\.

Modified: branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/vxworks1-xgot.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-#as: -mips2 -mvxworks-pic -xgot -mabi=32
+#as: -mips2 -mvxworks-pic -xgot -mabi=32 -EB
 #source: vxworks1.s
 #objdump: -dr
 

Modified: branches/binutils/package/gas/testsuite/gas/mips/vxworks1.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mips/vxworks1.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mips/vxworks1.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-#as: -mips2 -mvxworks-pic -mabi=32
+#as: -mips2 -mvxworks-pic -mabi=32 -EB
 #objdump: -dr
 
 .*:     file format .*

Added: branches/binutils/package/gas/testsuite/gas/mt/allinsn.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/allinsn.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/allinsn.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,130 @@
+#as: -nosched
+#objdump: -dr
+#name: allinsn
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <add>:
+   0:	00 00 00 00 	add R0,R0,R0
+
+00000004 <addu>:
+   4:	02 00 00 00 	addu R0,R0,R0
+
+00000008 <addi>:
+   8:	01 00 00 00 	addi R0,R0,#\$0
+
+0000000c <addui>:
+   c:	03 00 00 00 	addui R0,R0,#\$0
+
+00000010 <sub>:
+  10:	04 00 00 00 	sub R0,R0,R0
+
+00000014 <subu>:
+  14:	06 00 00 00 	subu R0,R0,R0
+
+00000018 <subi>:
+  18:	05 00 00 00 	subi R0,R0,#\$0
+
+0000001c <subui>:
+  1c:	07 00 00 00 	subui R0,R0,#\$0
+
+00000020 <and>:
+  20:	10 00 00 00 	and R0,R0,R0
+
+00000024 <andi>:
+  24:	11 00 00 00 	andi R0,R0,#\$0
+
+00000028 <or>:
+  28:	12 01 00 00 	or R0,R0,R1
+
+0000002c <ori>:
+  2c:	13 00 00 00 	ori R0,R0,#\$0
+
+00000030 <xor>:
+  30:	14 00 00 00 	xor R0,R0,R0
+
+00000034 <xori>:
+  34:	15 00 00 00 	xori R0,R0,#\$0
+
+00000038 <nand>:
+  38:	16 00 00 00 	nand R0,R0,R0
+
+0000003c <nandi>:
+  3c:	17 00 00 00 	nandi R0,R0,#\$0
+
+00000040 <nor>:
+  40:	18 00 00 00 	nor R0,R0,R0
+
+00000044 <nori>:
+  44:	19 00 00 00 	nori R0,R0,#\$0
+
+00000048 <xnor>:
+  48:	1a 00 00 00 	xnor R0,R0,R0
+
+0000004c <xnori>:
+  4c:	1b 00 00 00 	xnori R0,R0,#\$0
+
+00000050 <ldui>:
+  50:	1d 00 00 00 	ldui R0,#\$0
+
+00000054 <lsl>:
+  54:	20 00 00 00 	lsl R0,R0,R0
+
+00000058 <lsli>:
+  58:	21 00 00 00 	lsli R0,R0,#\$0
+
+0000005c <lsr>:
+  5c:	22 00 00 00 	lsr R0,R0,R0
+
+00000060 <lsri>:
+  60:	23 00 00 00 	lsri R0,R0,#\$0
+
+00000064 <asr>:
+  64:	24 00 00 00 	asr R0,R0,R0
+
+00000068 <asri>:
+  68:	25 00 00 00 	asri R0,R0,#\$0
+
+0000006c <brlt>:
+  6c:	31 00 00 00 	brlt R0,R0,6c <brlt>
+
+00000070 <brle>:
+  70:	33 00 00 00 	brle R0,R0,70 <brle>
+
+00000074 <breq>:
+  74:	35 00 00 00 	breq R0,R0,74 <breq>
+
+00000078 <jmp>:
+  78:	37 00 00 00 	jmp 78 <jmp>
+
+0000007c <jal>:
+  7c:	38 00 00 00 	jal R0,R0
+
+00000080 <ei>:
+  80:	60 00 00 00 	ei
+
+00000084 <di>:
+  84:	62 00 00 00 	di
+
+00000088 <reti>:
+  88:	66 00 00 00 	reti R0
+
+0000008c <ldw>:
+  8c:	41 00 00 00 	ldw R0,R0,#\$0
+
+00000090 <stw>:
+  90:	43 00 00 00 	stw R0,R0,#\$0
+
+00000094 <si>:
+  94:	64 00 00 00 	si R0
+
+00000098 <brne>:
+  98:	3b 00 00 00 	brne R0,R0,98 <brne>
+
+0000009c <break>:
+  9c:	68 00 00 00 	break
+
+000000a0 <nop>:
+  a0:	12 00 00 00 	nop

Added: branches/binutils/package/gas/testsuite/gas/mt/allinsn.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/allinsn.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/allinsn.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,166 @@
+ .data
+foodata: .word 42
+ .text
+footext:
+	.text
+	.global add
+add:
+	add  R0,R0,R0
+	.text
+	.global addu
+addu:
+	addu R0,R0,R0
+	.text
+	.global addi
+addi:
+	addi R0,R0,#0
+	.text
+	.global addui
+addui:
+	addui R0,R0,#0
+	.text
+	.global sub
+sub:
+	sub R0,R0,R0
+	.text
+	.global subu
+subu:
+	subu R0,R0,R0
+	.text
+	.global subi
+subi:
+	subi R0,R0,#0
+	.text
+	.global subui
+subui:
+	subui R0,R0,#0
+	.text
+	.global and
+and:
+	and R0,R0,R0
+	.text
+	.global andi
+andi:
+	andi R0,R0,#0
+	.text
+	.global or
+or:
+	or R0,R0,R1
+	.text
+	.global ori
+ori:
+	ori R0,R0,#0
+	.text
+	.global xor
+xor:
+	xor R0,R0,R0
+	.text
+	.global xori
+xori:
+	xori R0,R0,#0
+	.text
+	.global nand
+nand:
+	nand R0,R0,R0
+	.text
+	.global nandi
+nandi:
+	nandi R0,R0,#0
+	.text
+	.global nor
+nor:
+	nor R0,R0,R0
+	.text
+	.global nori
+nori:
+	nori R0,R0,#0
+	.text
+	.global xnor
+xnor:
+	xnor R0,R0,R0
+	.text
+	.global xnori
+xnori:
+	xnori R0,R0,#0
+	.text
+	.global ldui
+ldui:
+	ldui R0,#0
+	.text
+	.global lsl
+lsl:
+	lsl R0,R0,R0
+	.text
+	.global lsli
+lsli:
+	lsli R0,R0,#0
+	.text
+	.global lsr
+lsr:
+	lsr R0,R0,R0
+	.text
+	.global lsri
+lsri:
+	lsri R0,R0,#0
+	.text
+	.global asr
+asr:
+	asr R0,R0,R0
+	.text
+	.global asri
+asri:
+	asri R0,R0,#0
+	.text
+	.global brlt
+brlt:
+	brlt R0,R0,0
+	.text
+	.global brle
+brle:
+	brle R0,R0,0
+	.text
+	.global breq
+breq:
+	breq R0,R0,0
+	.text
+	.global jmp
+jmp:
+	jmp 0
+	.text
+	.global jal
+jal:
+	jal R0,R0
+	.text
+	.global ei
+ei:
+	ei
+	.text
+	.global di
+di:
+	di
+	.text
+	.global reti
+reti:
+	reti R0
+	.text
+	.global ldw
+ldw:
+	ldw R0,R0,#0
+	.text
+	.global stw
+stw:
+	stw R0,R0,#0
+	.text
+	.global si
+si:
+	si R0
+	.global brne
+brne:
+	brne R0,R0,0
+	.global break
+break:
+	break
+	.text
+	.global nop
+nop:
+	nop

Added: branches/binutils/package/gas/testsuite/gas/mt/badinsn.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badinsn.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badinsn.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Bogus instruction mnemonic should generate an error.
+
+addcrap R1,R2,R3

Added: branches/binutils/package/gas/testsuite/gas/mt/badinsn1.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badinsn1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badinsn1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Extra operand should generate and error message.
+
+add R1,R2,R3,R4

Added: branches/binutils/package/gas/testsuite/gas/mt/badoffsethigh.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badoffsethigh.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badoffsethigh.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+; Offset greater than #32767 should cause an error since the offset is 
+; a signed quantity.
+
+brlt R1,R2,$32768

Added: branches/binutils/package/gas/testsuite/gas/mt/badoffsetlow.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badoffsetlow.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badoffsetlow.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+; Offset less than #-32786 should cause an error since the offset is
+; a signed quantity.  Also tests expression parsing.
+
+label1: add R1,R2,R3
+label2:	add R4,R5,R6
+	brlt R7,R8, ((label1-label2)-32765) ; evaluates to -32769

Added: branches/binutils/package/gas/testsuite/gas/mt/badorder.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badorder.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badorder.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Good operands in the wrong order should generate an error.
+
+addui R1, #32 R2

Added: branches/binutils/package/gas/testsuite/gas/mt/badreg.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badreg.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badreg.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Bad register name should generate an error.
+
+add R16,R10,R9

Added: branches/binutils/package/gas/testsuite/gas/mt/badsignedimmhigh.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badsignedimmhigh.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badsignedimmhigh.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Offset greater than #32767 should cause an error.
+
+addi R1,R2,#32768

Added: branches/binutils/package/gas/testsuite/gas/mt/badsignedimmlow.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badsignedimmlow.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badsignedimmlow.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Immediate lower than #-32769 should cause an error.
+
+addi R1,R2,#-32769

Added: branches/binutils/package/gas/testsuite/gas/mt/badsyntax.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badsyntax.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badsyntax.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Good mnemonic with wrong operands should generate an error.
+
+add R1,R2,#0

Added: branches/binutils/package/gas/testsuite/gas/mt/badsyntax1.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badsyntax1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badsyntax1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Good mnemonic with too few operands should generate an error.
+
+add R1,R2

Added: branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmhigh.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmhigh.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmhigh.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Offset greater than #$FFFF should cause an error.
+
+andi R1,R2,#$10000

Added: branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmlow.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmlow.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/badunsignedimmlow.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+; Offset less than #0 should cause an error.
+
+andi R1,R2,#-1

Added: branches/binutils/package/gas/testsuite/gas/mt/errors.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/errors.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/errors.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,79 @@
+# Test for error messages when a bad register name, an out of range operand, or 
+# invalid syntax is used.  Adapted from Ben Elliston's load-hazard testcase.
+
+# Run GAS and check that it emits the desired error for the test case.
+# Arguments:
+#   file -- name of the test case to assemble.
+#   testname -- a string describing the test.
+#   warnpattern -- a regular expression, suitable for use by the Tcl
+#     regexp command, to decide if the warning string was emitted by
+#     the assembler to stderr.
+
+proc mrisc1_error_test { file testname {warnpattern ""} } {
+    global comp_output
+
+    gas_run $file "" ">/dev/null"
+    verbose "output was $comp_output" 2
+
+    if {$warnpattern == ""} {
+	if {$comp_output == ""} { pass $testname } else { fail $testname }
+	return
+    }
+
+    if {[regexp "Error: $warnpattern" $comp_output]} {
+	pass $testname
+    } else {
+	fail $testname
+    }
+}
+
+if [istarget mt-*-*] {
+    foreach file [glob -nocomplain -- $srcdir/$subdir/bad*.s] {
+	set file [file tail $file]
+	switch -- $file {
+	    "badreg.s" {
+		set warnpattern "unrecognized keyword/register name *"
+	    }
+	    "badorder.s" {
+		set warnpattern "unrecognized form of instruction*"
+	    }
+	    "badsyntax.s" {
+		set warnpattern "unrecognized keyword/register name *"
+	    }
+	    "badsyntax1.s" {
+		set warnpattern "unrecognized form of instruction*"
+	    }
+	    "badoffsethigh.s" {
+		set warnpattern "Operand out of range. Must be between -32768 and 32767.*"
+	    }
+	    "badoffsetlow.s" {
+		set warnpattern "Operand out of range. Must be between -32768 and 32767.*"
+	    }
+	    "badunsignedimmhigh.s" {
+		set warnpattern "operand out of range (65536 not between 0 and 65535)*"
+	    }
+	    "badunsignedimmlow.s" {
+		set warnpattern "operand out of range (65536 not between 0 and 65535)*"
+	    }
+	    "badsignedimmhigh.s" {
+		set warnpattern "operand out of range.*"
+	    }
+	    "badsignedimmlow.s" {
+		set warnpattern "operand out of range.*"
+	    }
+	    "badinsn.s" {
+		set warnpattern "unrecognized instruction *"
+	    }
+	    "badinsn1.s" {
+		set warnpattern "junk at end of line *"
+	    }
+            default {
+                error "no expected result specified for $file"
+                return
+
+	    }
+	}
+	mrisc1_error_test $file "assembler emits error for $file" $warnpattern
+    }
+
+}

Added: branches/binutils/package/gas/testsuite/gas/mt/ldst.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/ldst.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/ldst.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,28 @@
+; load/store tests
+
+	.data
+
+ldw_data:
+	.word 0xbabeface
+
+	.text
+
+ld_text:
+	ld	r4, r3
+	ld	r3, #8
+	ld	r5, #ld_text
+	ldh	r6, #ldh_text
+	ldh	r4, #4000
+	ldh	r5, #0x8000
+	ldh	r5, #-5
+	ldh	r5, #-0x8000
+	ldh	r0, #0xffff
+ldh_text:
+	ldw	r9, #30233000
+	ldw	r3, #ldw_data
+	ldb	r3, @[r9+r2]
+	ldb	@[r9+r3], r5	; store
+	ldb	r3, @[r8+6]
+	ldb	@[r8+7], r3	; store
+	ldw	r9, @[r14+23]
+	ldw	@[r14+10], r9	; store

Added: branches/binutils/package/gas/testsuite/gas/mt/misc.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/misc.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/misc.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,21 @@
+#as:
+#objdump: -dr
+#name: misc
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	00 12 00 00 	add R0,R1,R2
+   4:	00 12 00 00 	add R0,R1,R2
+   8:	00 23 10 00 	add R1,R2,R3
+   c:	00 33 10 00 	add R1,R3,R3
+  10:	00 56 40 00 	add R4,R5,R6
+  14:	00 89 70 00 	add R7,R8,R9
+  18:	00 bc a0 00 	add R10,R11,R12
+  1c:	00 ef d0 00 	add R13,R14,R15
+  20:	03 dc 00 01 	addui R12,R13,#\$1
+  24:	03 fe 00 01 	addui R14,R15,#\$1
+  28:	03 10 00 00 	addui R0,R1,#\$0
+  2c:	03 10 ff ff 	addui R0,R1,#\$ffff

Added: branches/binutils/package/gas/testsuite/gas/mt/misc.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/misc.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/misc.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,21 @@
+; Check that register names, both upper and lower case work and that
+; the spacing between the operands doesn't matter.
+
+add R0,R1,R2
+add r0,r1,r2
+add R1,R2,r3
+add R1, R3, r3
+add R4,R5,R6
+add R7,R8,R9
+add R10,R11,R12
+add R13,R14,R15
+addui fp,sp,#1
+addui ra,ira,#1
+
+; Check that the range of legal operand values is accepted.
+
+addui R0,R1,#0
+addui R0,R1,#$FFFF
+
+
+

Added: branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,33 @@
+#as: -march=ms1-16-003
+#objdump: -dr
+#name: ms1-16-003
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <iflush>:
+   0:	6a 00 00 00 	iflush
+00000004 <mul>:
+   4:	08 00 00 00 	mul R0,R0,R0
+00000008 <muli>:
+   8:	09 00 00 00 	muli R0,R0,#\$0
+0000000c <dbnz_>:
+   c:	3d 00 00 00 	dbnz R0,c <dbnz_>
+[ 	]*c: R_MS1_PC16	dbnz
+00000010 <fbcbincs>:
+  10:	f0 00 00 00 	fbcbincs #\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+00000014 <mfbcbincs>:
+  14:	f4 00 00 00 	mfbcbincs R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+00000018 <fbcbincrs>:
+  18:	f8 00 00 00 	fbcbincrs R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+0000001c <mfbcbincrs>:
+  1c:	fc 00 00 00 	mfbcbincrs R0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+00000020 <wfbinc>:
+  20:	e0 00 00 00 	wfbinc #\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+00000024 <mwfbinc>:
+  24:	e4 00 00 00 	mwfbinc R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+00000028 <wfbincr>:
+  28:	e8 00 00 00 	wfbincr R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+0000002c <mwfbincr>:
+  2c:	ec 00 00 00 	mwfbincr R0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0

Added: branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/ms1-16-003.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,54 @@
+	.text
+	.global iflush
+iflush:
+	iflush
+
+	.global mul
+mul:
+	mul R0, R0, R0
+	
+	.global muli
+muli:
+	muli R0, R0, #0
+
+	.global dbnz
+dbnz_:
+	dbnz	r0, dbnz
+
+	.global fbcbincs
+fbcbincs:
+	fbcbincs #0, #0, #0, #0, #0, #0, #0, #0, #0, #0
+
+	.global mfbcbincs
+mfbcbincs:
+	mfbcbincs r0, #0, #0, #0, #0, #0, #0, #0, #0
+
+	
+	.global fbcbincrs
+fbcbincrs:
+	fbcbincrs r0, #0, #0, #0, #0, #0, #0, #0, #0, #0
+
+	.global mfbcbincrs
+mfbcbincrs:
+	mfbcbincrs r0, r0, #0, #0, #0, #0, #0, #0, #0
+	
+	
+	.global wfbinc
+wfbinc:
+# Documentation error.
+#	wfbinc #0, r0, #0, #0, #0, #0, #0, #0, #0, #0
+	wfbinc #0, #0, #0, #0, #0, #0, #0, #0, #0, #0
+
+	.global mwfbinc
+mwfbinc:
+# Documentation error.
+#	mwfbinc r0, #0, #0, r0, #0, #0, #0, #0, #0
+	mwfbinc r0, #0, #0, #0, #0, #0, #0, #0, #0
+
+	.global wfbincr
+wfbincr:
+	wfbincr r0, #0, #0, #0, #0, #0, #0, #0, #0, #0
+
+	.global mwfbincr
+mwfbincr:
+	mwfbincr r0, r0, #0, #0, #0, #0, #0, #0, #0

Added: branches/binutils/package/gas/testsuite/gas/mt/ms2.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/ms2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/ms2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+#as: -march=ms2
+#objdump: -dr
+#name: ms2
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <code>:
+   0:	3e 10 00 05 	loop R1,1c <label>
+   4:	3f 00 10 04 	loopi #\$10,1c <label>
+   8:	83 ff ff ff 	dfbc #\$7,#\$7,#\$ffffffff,#\$ffffffff,#\$1,#\$1,#\$3f
+   c:	87 ff ff 7f 	dwfb #\$7,#\$7,#\$ffffffff,#\$ffffffff,#\$1,#\$3f
+  10:	8b ff ff ff 	fbwfb #\$7,#\$7,#\$ffffffff,#\$ffffffff,#\$1,#\$1,#\$3f
+  14:	8f f0 ff ff 	dfbr #\$7,#\$7,R0,#\$7,#\$7,#\$7,#\$1,#\$3f
+  18:	12 00 00 00 	nop
+0000001c <label>:
+  1c:	f0 00 00 00 	fbcbincs #\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0

Added: branches/binutils/package/gas/testsuite/gas/mt/ms2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/ms2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/ms2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+
+code:	
+	loop R1, label
+	loopi #16,label
+	dfbc #7,#7,#-1,#-1,#1,#1,#63
+	dwfb #7,#7,#-1,#-1,#1,#63
+	fbwfb #7,#7,#-1,#-1,#1,#1,#63
+	dfbr #7,#7,R0,#7,#7,#7,#1,#63
+	nop
+label:	 
+	fbcbincs  #0,#0,#0,#0,#0,#0,#0,#0,#0,#0

Added: branches/binutils/package/gas/testsuite/gas/mt/msys.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/msys.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/msys.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,78 @@
+#as: -nosched
+#objdump: -dr
+#name: msys 
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <.text>:
+   0:	80 00 00 00 	ldctxt R0,R0,#\$0,#\$0,#\$0
+   4:	84 00 00 00 	ldfb R0,R0,#\$0
+   8:	88 00 00 00 	stfb R0,R0,#\$0
+   c:	8c 00 00 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  10:	90 00 00 00 	mfbcb R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0
+  14:	94 00 00 00 	fbcci R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  18:	98 00 00 00 	fbrci R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  1c:	9c 00 00 00 	fbcri R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  20:	a0 00 00 00 	fbrri R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  24:	a4 00 00 00 	mfbcci R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0
+  28:	a8 00 00 00 	mfbrci R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0
+  2c:	ac 00 00 00 	mfbcri R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0
+  30:	b0 00 00 00 	mfbrri R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0
+  34:	b4 00 00 00 	fbcbdr R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  38:	b8 00 00 00 	rcfbcb #\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  3c:	bc 00 00 00 	mrcfbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  40:	c0 00 00 00 	cbcast #\$0,#\$0,#\$0
+  44:	c4 00 00 00 	dupcbcast #\$0,#\$0,#\$0,#\$0
+  48:	c8 00 00 00 	wfbi #\$0,#\$0,#\$0,#\$0,#\$0
+  4c:	cc 00 00 00 	wfb R0,R0,#\$0,#\$0,#\$0
+  50:	d0 00 00 00 	rcrisc R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  54:	d4 00 00 00 	fbcbinc R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  58:	d8 00 00 00 	rcxmode R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  5c:	64 00 e0 00 	si R14
+  60:	b4 00 00 40 	fbcbdr R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$1,#\$0
+  64:	b4 00 00 00 	fbcbdr R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  68:	b4 00 00 40 	fbcbdr R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$1,#\$0
+  6c:	b4 00 00 00 	fbcbdr R0,#\$0,R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  70:	64 00 e0 00 	si R14
+  74:	b8 08 00 00 	rcfbcb #\$0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  78:	b8 00 00 00 	rcfbcb #\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  7c:	b8 08 00 00 	rcfbcb #\$0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  80:	b8 00 00 00 	rcfbcb #\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  84:	64 00 e0 00 	si R14
+  88:	bc 20 00 00 	mrcfbcb R0,#\$0,#\$2,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  8c:	bc 10 00 00 	mrcfbcb R0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  90:	bc 00 00 00 	mrcfbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  94:	bc 20 00 00 	mrcfbcb R0,#\$0,#\$2,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  98:	bc 10 00 00 	mrcfbcb R0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  9c:	bc 00 00 00 	mrcfbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  a0:	64 00 e0 00 	si R14
+  a4:	d8 80 00 00 	rcxmode R0,#\$0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0
+  a8:	d8 00 00 00 	rcxmode R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  ac:	d8 80 00 00 	rcxmode R0,#\$0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0
+  b0:	d8 00 00 00 	rcxmode R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  b4:	64 00 e0 00 	si R14
+  b8:	80 00 80 00 	ldctxt R0,R0,#\$1,#\$0,#\$0
+  bc:	80 00 00 00 	ldctxt R0,R0,#\$0,#\$0,#\$0
+  c0:	80 00 80 00 	ldctxt R0,R0,#\$1,#\$0,#\$0
+  c4:	80 00 00 00 	ldctxt R0,R0,#\$0,#\$0,#\$0
+  c8:	8c 00 08 00 	fbcb R0,#\$0,#\$0,#\$0,#\$1,#\$0,#\$0,#\$0,#\$0
+  cc:	8c 00 00 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  d0:	c0 00 00 40 	cbcast #\$0,#\$1,#\$0
+  d4:	c0 00 00 00 	cbcast #\$0,#\$0,#\$0
+  d8:	64 00 e0 00 	si R14
+  dc:	8c 00 04 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$1,#\$0,#\$0,#\$0
+  e0:	8c 00 00 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  e4:	8c 00 04 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$1,#\$0,#\$0,#\$0
+  e8:	8c 00 00 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  ec:	64 00 e0 00 	si R14
+  f0:	8f 00 00 00 	fbcb R0,#\$3,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  f4:	8e 00 00 00 	fbcb R0,#\$2,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  f8:	8d 00 00 00 	fbcb R0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+  fc:	8c 00 00 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+ 100:	8f 00 00 00 	fbcb R0,#\$3,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+ 104:	8e 00 00 00 	fbcb R0,#\$2,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+ 108:	8d 00 00 00 	fbcb R0,#\$1,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+ 10c:	8c 00 00 00 	fbcb R0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0,#\$0
+ 110:	dc 00 00 00 	intlvr R0,#\$0,R0,#\$0,#\$0

Added: branches/binutils/package/gas/testsuite/gas/mt/msys.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/msys.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/msys.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,95 @@
+;; This file is a set of tests for the MorphoySys instructions.
+
+; Make sure that each mnemonic gives the proper opcode.  Use R0 and #0
+; for all operands so that everything but the opcode will be 0 in the
+; assembled instructions.
+
+	ldctxt R0,R0,#0,#0,#0
+	ldfb R0,R0,#0
+	stfb R0, R0, #0
+	fbcb R0,#0,#0,#0,#0,#0,#0,#0,#0
+	mfbcb R0,#0,R0,#0,#0,#0,#0,#0
+	fbcci R0,#0,#0,#0,#0,#0,#0,#0
+	fbrci R0,#0,#0,#0,#0,#0,#0,#0
+	fbcri R0,#0,#0,#0,#0,#0,#0,#0
+	fbrri R0,#0,#0,#0,#0,#0,#0,#0
+	mfbcci R0,#0,R0,#0,#0,#0,#0
+	mfbrci R0,#0,R0,#0,#0,#0,#0
+	mfbcri R0,#0,R0,#0,#0,#0,#0
+	mfbrri R0,#0,R0,#0,#0,#0,#0
+	fbcbdr R0,#0,R0,#0,#0,#0,#0,#0,#0,#0
+	rcfbcb #0,#0,#0,#0,#0,#0,#0,#0,#0,#0
+	mrcfbcb R0,#0,#0,#0,#0,#0,#0,#0,#0
+	cbcast #0,#0,#0
+	dupcbcast #0,#0,#0,#0
+	wfbi #0,#0,#0,#0,#0
+	wfb R0,R0,#0,#0,#0
+	rcrisc R0,#0,R0,#0,#0,#0,#0,#0,#0
+	fbcbinc R0, #0, #0, #0, #0, #0, #0, #0
+	rcxmode R0, #0, #0, #0, #0, #0, #0, #0, #0
+
+; Check to make sure that the parse routines that allow predifined 
+; symbols (uppaer and lower case) to be used for some of the operands.
+
+; dup operand: dup, xx
+	si R14
+	fbcbdr R0,#0,R0,#0,#0,#0,#0,#0,#dup,#0  ; dup = 1
+	fbcbdr R0,#0,R0,#0,#0,#0,#0,#0,#xx,#0   ; xx = 0
+	fbcbdr R0,#0,R0,#0,#0,#0,#0,#0,#DUP,#0 
+	fbcbdr R0,#0,R0,#0,#0,#0,#0,#0,#XX,#0   
+
+; ball operand: all, one
+	si R14
+	rcfbcb #0,#0,#all,#0,#0,#0,#0,#0,#0,#0  ; all = 1
+	rcfbcb #0,#0,#one,#0,#0,#0,#0,#0,#0,#0  ; one = 0
+	rcfbcb #0,#0,#ALL,#0,#0,#0,#0,#0,#0,#0  
+	rcfbcb #0,#0,#ONE,#0,#0,#0,#0,#0,#0,#0  
+
+; type operand: odd, even, oe 
+	si R14
+	mrcfbcb R0,#0,#oe,#0,#0,#0,#0,#0,#0     ; oe = 2
+	mrcfbcb R0,#0,#even,#0,#0,#0,#0,#0,#0   ; even = 1
+	mrcfbcb R0,#0,#odd,#0,#0,#0,#0,#0,#0    ; odd = 0
+	mrcfbcb R0,#0,#OE,#0,#0,#0,#0,#0,#0    
+	mrcfbcb R0,#0,#EVEN,#0,#0,#0,#0,#0,#0   
+	mrcfbcb R0,#0,#ODD,#0,#0,#0,#0,#0,#0    
+
+; xmode operand: pm, xm
+	si R14
+	rcxmode R0, #0, #0, #pm, #0, #0, #0, #0, #0  ; pm = 1
+	rcxmode R0, #0, #0, #xm, #0, #0, #0, #0, #0  ; xm = 0
+	rcxmode R0, #0, #0, #PM, #0, #0, #0, #0, #0  
+	rcxmode R0, #0, #0, #XM, #0, #0, #0, #0, #0 
+
+; rc, rc1, rc2 operands: r,c
+	si R14
+        ldctxt R0,R0,#r,#0,#0            ; rc operand.  r = 1 
+        ldctxt R0,R0,#c,#0,#0            ; rc operand.  c = 0 
+        ldctxt R0,R0,#R,#0,#0            
+        ldctxt R0,R0,#C,#0,#0           
+      
+	fbcb R0,#0,#0,#0,#r,#0,#0,#0,#0  ; rc1 operand.  r = 1
+	fbcb R0,#0,#0,#0,#c,#0,#0,#0,#0  ; rc1 operand.  c = 0
+
+	cbcast #0,#r,#0                  ; rc2 operand.  r = 1
+	cbcast #0,#c,#0                  ; rc2 opearnd.  c = 0
+
+; cbrb operand: cb, rb
+	si R14
+	fbcb R0,#0,#0,#0,#0,#rb,#0,#0,#0  ; rb = 1
+	fbcb R0,#0,#0,#0,#0,#cb,#0,#0,#0  ; cb = 0
+	fbcb R0,#0,#0,#0,#0,#RB,#0,#0,#0 
+	fbcb R0,#0,#0,#0,#0,#CB,#0,#0,#0  
+
+; rbbc operand: rt, br1, br2, cs
+	si R14
+	fbcb R0,#cs,#0,#0,#0,#0,#0,#0,#0   ; cs = 3
+	fbcb R0,#br2,#0,#0,#0,#0,#0,#0,#0  ; br2 = 2
+	fbcb R0,#br1,#0,#0,#0,#0,#0,#0,#0  ; br1 = 1
+	fbcb R0,#rt,#0,#0,#0,#cb,#0,#0,#0  ; rt = 0
+	fbcb R0,#CS,#0,#0,#0,#0,#0,#0,#0  
+	fbcb R0,#BR2,#0,#0,#0,#0,#0,#0,#0  
+	fbcb R0,#BR1,#0,#0,#0,#0,#0,#0,#0  
+	fbcb R0,#RT,#0,#0,#0,#cb,#0,#0,#0  
+
+	intlvr R0, #0, R0, #0, #0

Added: branches/binutils/package/gas/testsuite/gas/mt/mt.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/mt.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/mt.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+# MRISC1 assembler testsuite.
+
+if [istarget mt-*-*] {
+    #
+    run_dump_test "allinsn"
+    run_dump_test "misc"
+    run_dump_test "msys"
+    run_dump_test "ms1-16-003"
+    run_dump_test "ms2"
+    #
+}

Added: branches/binutils/package/gas/testsuite/gas/mt/relocs.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/relocs.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/relocs.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,68 @@
+
+relocs.x:     file format elf32-(mrisc1|ms1)
+
+Contents of section .text:
+ 2000 00131000 3700dffc 12000000 3700fff8  ....7.......7...
+ 2010 03210000 03212215 03210001 03210000  .!...!"..!...!..
+ 2020 0321ffff 0321eeee 03210005 03210006  .!...!...!...!..
+ 2030 00675000                             .gP.            
+Contents of section .data:
+ 2134 0f000000 00000000 00000000 00000000  ................
+ 2144 00000000 00000000 00000000 00000000  ................
+ 2154 00000000 00000000 00000000 00000000  ................
+ 2164 00000000 00000000 00000000 00000000  ................
+ 2174 00000000 00000000 00000000 00000000  ................
+ 2184 00000000 00000000 00000000 00000000  ................
+ 2194 00000000 00000000 00000000 00000000  ................
+ 21a4 00000000 00000000 00000000 00000000  ................
+ 21b4 00000000 00000000 00000000 00000000  ................
+ 21c4 00000000 00000000 00000000 00000000  ................
+ 21d4 00000000 00000000 00000000 00000000  ................
+ 21e4 00000000 00000000 00000000 00000000  ................
+ 21f4 00000000 00000000 00000000 00000000  ................
+ 2204 00000000 00000000 00000000 00000000  ................
+ 2214 00020000 00000000 00000000 00000000  ................
+ 2224 00000000 00000000 00000000 00000000  ................
+ 2234 00000000 00000000 00000000 00000000  ................
+ 2244 00000000 00000000 00000000 00000000  ................
+ 2254 00000000 00000000 00000000 00000000  ................
+ 2264 00000000 00000000 00000000 00000000  ................
+ 2274 00000000 00000000 00000000 00000000  ................
+ 2284 00000000 00000000 00000000 00000000  ................
+ 2294 00000000 00000000 00000000 00000000  ................
+ 22a4 00000000 00000000 00000000 00000000  ................
+ 22b4 00000000 00000000 00000000 00000000  ................
+ 22c4 00000000 00000000 00000000 00000000  ................
+ 22d4 00000000 00000000 00000000 00000000  ................
+ 22e4 00000000 00000000 00000000 00000000  ................
+ 22f4 00000000 00000000 00000000 00000000  ................
+ 2304 00000000 00000000 00000000 00000000  ................
+ 2314 000003                               ...             
+Contents of section .stack:
+ 7ffff0 deaddead                             ....            
+Disassembly of section .text:
+
+00002000 <_start>:
+    2000:	00 13 10 00 	add R1,R1,R3
+
+00002004 <local>:
+    2004:	37 00 df fc 	jmp 0 <_start-0x2000>
+
+00002008 <none>:
+    2008:	12 00 00 00 	nop
+    200c:	37 00 ff f8 	jmp 2004 <local>
+    2010:	03 21 00 00 	addui R1,R2,#\$0
+    2014:	03 21 22 15 	addui R1,R2,#\$2215
+    2018:	03 21 00 01 	addui R1,R2,#\$1
+    201c:	03 21 00 00 	addui R1,R2,#\$0
+    2020:	03 21 ff ff 	addui R1,R2,#\$ffff
+    2024:	03 21 ee ee 	addui R1,R2,#\$eeee
+
+00002028 <dummy1>:
+    2028:	03 21 00 05 	addui R1,R2,#\$5
+
+0000202c <dummy2>:
+    202c:	03 21 00 06 	addui R1,R2,#\$6
+
+00002030 <i2>:
+    2030:	00 67 50 00 	add R5,R6,R7

Added: branches/binutils/package/gas/testsuite/gas/mt/relocs.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/relocs.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/relocs.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,35 @@
+# Relocation test.
+# This test is special because it exercises the linker's 
+
+proc ld_test { objects ldflags dest test } {
+    set ld_output [target_link $objects $dest $ldflags]
+    if [string match "" $ld_output] then { pass $test } else { fail $test }
+}
+
+
+proc objdump_test { exec flags dest test } {
+    set objcopy [find_binutils_prog objdump]
+    verbose -log "$objcopy $flags $exec > $dest"
+    catch "exec $objcopy $flags $exec > $dest" objdump_output
+    if [string match "" $objdump_output] then { pass $test } else { fail $test }
+}
+
+proc regexp_test { file1 file2 test } {
+    if [regexp_diff $file1 $file2] then { fail $test } else { pass $test }
+}
+
+
+global srcdir subdir
+if [istarget mt-*] {
+    gas_test "relocs1.s" {-o relocs1.o} {} {assembling relocs1}
+
+    #    gas_test "relocs2.s" {-o relocs2.o} {} {assembling relocs2}
+    #    ld_test {relocs1.o relocs2.o} {} {relocs.x} {linking relocs.x}
+    #    objdump_test {relocs.x} {-ds} {relocs.dump} {disassembling relocs.x}
+    #    regexp_test {relocs.dump} "$srcdir/$subdir/relocs.d" {matching disassembly}
+
+    gas_test "relocs2.s" {-o relocs2.o} {} {assembling relocs2}
+    ld_test {relocs1.o relocs2.o} {} {relocs.x} {linking relocs.x}
+    objdump_test {relocs.x} {-ds} {relocs.dump} {disassembling relocs.x}
+    regexp_test {relocs.dump} "$srcdir/$subdir/relocs.d" {matching disassembly}
+}

Added: branches/binutils/package/gas/testsuite/gas/mt/relocs1.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/relocs1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/relocs1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,31 @@
+;; This test is meant to exercise every unusual reloc supported
+;; by the mrisc port.  (Ok, so there's only one so far.  :P)
+
+	.text
+text:	
+	.global _start
+_start:	
+	add R1,R1,R3
+
+; Make sure local fixups work.
+local:
+        jmp (dummy2-dummy1)  
+
+; Test the PC16 reloc.
+none:
+	 or R0,R0,R0 ;nop to conform to scheduling restrictions
+	 jmp local                
+	                      
+; Test the %hi16 and %lo16 relocs
+addui R1,R2,#%hi16(d2)
+addui R1,R2,#%lo16(d2) 	
+addui R1,R2,#%hi16(65536)
+addui R1,R2,#%lo16(65536)
+addui R1,R2,#%hi16($FFFFEEEE)
+addui R1,R2,#%lo16($FFFFEEEE)
+
+dummy1: addui R1, R2, #5
+dummy2: addui R1, R2, #6
+
+	.data
+d1:	.byte $f

Added: branches/binutils/package/gas/testsuite/gas/mt/relocs2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/mt/relocs2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/mt/relocs2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,22 @@
+	.text
+	;; Put code near the top of the address space
+text:
+	.global i2
+i2:	
+	
+	add R5, R6, R7
+
+	.data
+	;; Note that the .org that follows is more or less equivalent
+	;; to a .space, since the amount specified will be treated like
+	;; padding to be added between the .data section in relocs1.s
+	;; and this one.
+	;; Note also that the two test variables (d2 & d3) are intentionally
+	;; roughly $100 apart, so that the FR9 relocation processing in
+	;; bfd/elf32-ip2k.c (ip2k_final_link_relocate) is tested a little more.
+	.org $e0
+	.global d2
+d2:	.byte 2
+	.space $100
+	.global d3
+d3:	.byte 3

Added: branches/binutils/package/gas/testsuite/gas/xc16x/add.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/add.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/add.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,17 @@
+.text
+xc16x_add:
+add r0,r1
+add r0,[r1]
+add r0,[r1+]
+add r0,#3
+add r0,#1234
+add r0,0xffed
+add 0xffed,r0
+
+	
+	
+
+	
+	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/add_test.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/add_test.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/add_test.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,92 @@
+.text
+_start:
+	add r0,r1
+	add r0,r2
+	add r0,r3
+	add r0,r4
+	add r0,r5
+	add r0,r6
+	add r0,r7
+	add r0,r8
+	add r0,r9
+	add r0,r10
+	add r0,r11
+	add r0,r12
+	add r0,r13
+	add r0,r14
+	add r0,r15
+
+	add r1,r0
+	add r1,r2
+	add r1,r3
+	add r1,r4
+	add r1,r5
+	add r1,r6
+	add r1,r7
+	add r1,r8
+	add r1,r9
+	add r1,r10
+	add r1,r11
+	add r1,r12
+	add r1,r13
+	add r1,r14
+	add r1,r15
+	
+   	add r2,r0
+	add r2,r1
+	add r2,r3
+	add r2,r4
+	add r2,r5
+	add r2,r6
+	add r2,r7
+	add r2,r8
+	add r2,r9
+	add r2,r10
+	add r2,r11
+	add r2,r12
+	add r2,r13
+	add r2,r14
+	add r2,r15
+	
+	add r3,r0
+	add r3,r1
+	add r3,r2
+	add r3,r4
+	add r3,r5
+	add r3,r6
+	add r3,r7
+	add r3,r8
+	add r3,r9
+	add r3,r10
+	add r3,r11
+	add r3,r12
+	add r3,r13
+	add r3,r14
+	add r3,r15
+	
+	add r0,[r1]
+	add r0,[r1+]
+	add r0,#3
+	add r0,#0xffff
+	add r0,0xffff
+	add 0xffff,r0
+	
+	addb rl0,rh0
+	addb rl0[r0]
+	addb rl0,#3
+	addb rl0,#0xff
+	addb r0,0xff10
+	addb 0xff10,r0
+	
+	addc r0,r1
+	addc r0,[r1]
+	addc r0,#3
+	addc r0,#0xff12
+	addc r0,#0xff12
+	addc r0,0xff12
+	addc 0xff12,r0
+	
+	addcb rl0,#3
+	addcb rl0,#0xff
+	addcb r0,0xff10
+	addcb 0xff10,r0
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/addb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/addb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/addb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+	.section .text
+	.global _fun
+xc16x_add:
+
+	addb rl0,rl1
+	addb rl0,[r1]
+	addb rl0,[r1+]
+	addb rl0,#0x2
+	addb rl0,#0x33
+	addb rl0,0x2387
+	addb 0x2387,rl0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/addc.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/addc.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/addc.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+	.section .text
+	.global _fun
+xc16x_add:
+
+	addc r0,r1
+	addc r0,[r1]
+	addc r0,[r1+]
+	addc r0,#0x34
+	addc r0,#0x3456
+	addc r0,0x2387
+	addc 0x2387,r0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/addcb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/addcb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/addcb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,17 @@
+	.section .text
+	.global _fun
+xc16x_add:
+
+	addcb rl0,rl1
+	addcb rl0,[r1]
+	addcb rl0,[r1+]
+	addcb rl0,#0x02
+	addcb rl0,#0x23
+	addcb 0x2387,rl0
+	
+	
+
+	
+	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/and.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/and.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/and.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,14 @@
+.section .text
+.global  _fun
+
+xc16x_and:
+
+	and r0,r1
+	and r0,[r1]
+	and r0,[r1+]
+	and r0,#3
+	and r0,#0xfcbe
+	and r0,0x0230
+	and 0x320,r0
+	
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/andb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/andb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/andb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+        .section .text
+        .global _fun
+xc16x_andb:
+		andb rl0,rl1
+		andb rl0,[r1]
+		andb rl0,[r1+]
+		andb rl0,#3
+		andb rl0,#0xbe
+		andb rl0,0x0230
+		andb 0x320,rl0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/bfldl.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/bfldl.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/bfldl.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+  .text
+ xc16x_bfldl:
+   BFLDL r0,#0x87,#0x0e
+   BFLDH r0,#0xff,#0x0e

Added: branches/binutils/package/gas/testsuite/gas/xc16x/bit.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/bit.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/bit.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+.text
+xc16x_bit:
+bclr  r0.1
+bset  r0.1
+bmov  r0.2,r0.1
+bmovn r0.3,r0.2 
+band  r0.1,r0.4
+bor   r0.1,r0.2
+bxor  r0.1,r0.2
+bcmp  r0.1,r0.2
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/calla.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/calla.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/calla.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,24 @@
+.text
+xc16x_calla:
+calla cc_uc,0xaaaa
+calla cc_z,0xaaaa
+calla cc_nz,0xaaaa
+calla cc_v,0xaaaa
+calla cc_nv,0xaaaa
+calla cc_n,0xaaaa
+calla cc_nn,0xaaaa
+calla cc_c,0xaaaa
+calla cc_nc,0xaaaa
+calla cc_eq,0xaaaa
+calla cc_ne,0xaaaa
+calla cc_ult,0xaaaa
+calla cc_ule,0xaaaa
+calla cc_uge,0xaaaa
+calla cc_ugt,0xaaaa
+calla cc_sle,0xaaaa
+calla cc_sge,0xaaaa
+calla cc_sgt,0xaaaa
+calla cc_net,0xaaaa
+calla cc_slt,0xaaaa	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/calli.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/calli.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/calli.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,21 @@
+.text
+xc16x_calli:
+calli cc_uc,[r1]
+calli cc_z,[r1]
+calli cc_nz,[r1]
+calli cc_v,[r1]
+calli cc_nv,[r1]
+calli cc_n,[r1]
+calli cc_nn,[r1]
+calli cc_c,[r1]
+calli cc_nc,[r1]
+calli cc_eq,[r1]
+calli cc_ne,[r1]
+calli cc_ult,[r1]
+calli cc_ule,[r1]
+calli cc_uge,[r1]
+calli cc_ugt,[r1]
+calli cc_sle,[r1]
+calli cc_sge,[r1]
+calli cc_net,[r1]
+calli cc_slt,[r1]

Added: branches/binutils/package/gas/testsuite/gas/xc16x/cmp.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/cmp.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/cmp.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,9 @@
+.text
+xc16x_cmp:
+cmp   r0,r1
+cmp   r0,[r1]
+cmp   r0,[r1+]
+cmp   r0,#3
+cmp   r0,#0x0234
+cmp   r0,0x3452
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/cmp_test.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/cmp_test.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/cmp_test.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,45 @@
+.text
+cmp   r0,r1
+cmp   r0,[r1]
+cmp   r0,[r1+]
+cmp   r0,#3
+cmp   r0,#0x0234
+cmp   r0,0x3452
+
+cmp   r0,r1
+cmp   r0,[r1]
+cmp   r0,[r1+]
+cmp   r0,#3
+cmp   r0,#0xcdef
+cmp   r0,0xcdef
+
+cmpb  rl0,rl1
+cmpb  rl0,[r1]
+cmpb  rl0,[r1+]
+cmpb  rl0,#3
+cmpb  rl0,#cd
+cmpb  rl0,0x0234
+
+cmpb  rl0,rl1
+cmpb  rl0,[r1]
+cmpb  rl0,[r1+]
+cmpb  rl0,#3
+cmpb  rl0,#cd
+cmpb  rl0,0xcdef
+
+cmpd1	r0,#0x0f
+cmpd1 	r0,#0x0fccb
+cmpd1	r0,0xffcb
+cmpd2	r0,#0x0f
+cmpd2 	r0,#0x0fccb
+cmpd2	r0,0xffcb
+
+cmpi1	r0,#0x0f
+cmpi1 	r0,#0x0fccb
+cmpi1	r0,0xffcb
+cmpi2	r0,#0x0f
+cmpi2 	r0,#0x0fccb
+cmpi2	r0,0xffcb
+
+
+

Added: branches/binutils/package/gas/testsuite/gas/xc16x/cmpb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/cmpb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/cmpb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,8 @@
+.text
+xc16x_cmpb:
+cmpb  rl0,rl1
+cmpb  rl0,[r1]
+cmpb  rl0,[r1+]
+cmpb  rl0,#3
+cmpb  rl0,#34
+cmpb  rl0,0x0234

Added: branches/binutils/package/gas/testsuite/gas/xc16x/cmpi.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/cmpi.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/cmpi.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+.section  .text
+.global	 _fun
+
+xc16x_cmpd:
+
+	cmpd1	r0,#0x0f
+	cmpd1 	r0,#0x0fccb
+	cmpd1	r0,0xffcb
+	cmpd2	r0,#0x0f
+	cmpd2 	r0,#0x0fccb
+	cmpd2	r0,0xffcb
+	cmpi1	r0,#0x0f
+	cmpi1 	r0,#0x0fccb
+	cmpi1	r0,0xffcb
+	cmpi2	r0,#0x0f
+	cmpi2 	r0,#0x0fccb
+	cmpi2	r0,0xffcb
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/cpl.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/cpl.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/cpl.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+       .section .text
+       .global _fun
+
+xc16x_cpl_cplb:
+
+	cpl   r0
+	cplb rl0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/div.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/div.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/div.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,8 @@
+       .section .text
+       .global _fun
+xc16x_div:
+
+	div     r0
+	divl    r0
+	divlu  r0
+	divu   r0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/jmpa.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/jmpa.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/jmpa.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,23 @@
+.text
+xc16x_jmpa:
+	jmpa cc_UC,0xaaaa
+	jmpa cc_Z,0xaaaa
+	jmpa cc_NZ,0xaaaa
+	jmpa cc_V,0xaaaa
+	jmpa cc_NV,0xaaaa
+	jmpa cc_N,0xaaaa
+	jmpa cc_NN,0xaaaa
+	jmpa cc_ULT,0xaaaa
+	jmpa cc_UGE,0xaaaa
+	jmpa cc_Z,0xaaaa
+	jmpa cc_NZ,0xaaaa
+	jmpa cc_ULT,0xaaaa
+	jmpa cc_ULE,0xaaaa
+	jmpa cc_UGE,0xaaaa
+	jmpa cc_UGT,0xaaaa
+	jmpa cc_SLE,0xaaaa
+	jmpa cc_SGE,0xaaaa
+	jmpa cc_SGT,0xaaaa
+	jmpa cc_NET,0xaaaa
+
+		

Added: branches/binutils/package/gas/testsuite/gas/xc16x/jmpi.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/jmpi.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/jmpi.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,24 @@
+.section  .text
+.global   _fun
+
+xc16x_jmpi:
+
+	jmpi cc_UC, [r7]
+	jmpi cc_z,  [r7]
+	jmpi cc_NZ, [r7]
+	jmpi cc_V,  [r7]
+	jmpi cc_NV, [r7]
+	jmpi cc_N,  [r7]
+	jmpi cc_NN, [r7]
+	jmpi cc_C,  [r7]
+	jmpi cc_NC, [r7]
+	jmpi cc_EQ, [r7]
+	jmpi cc_NE, [r7]
+	jmpi cc_ULT,[r7]
+	jmpi cc_ULE,[r7]
+	jmpi cc_UGE,[r7]
+	jmpi cc_UGT,[r7]
+	jmpi cc_SLE,[r7]
+	jmpi cc_SGE,[r7]
+	jmpi cc_SGT,[r7]
+	jmpi cc_NET,[r7]

Added: branches/binutils/package/gas/testsuite/gas/xc16x/jmpr.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/jmpr.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/jmpr.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,25 @@
+        .section  .text
+        .global _fun
+
+xc16x_jmpr:
+
+	jmpr cc_uc, xc16x_jmpr
+	jmpr cc_z,  xc16x_jmpr
+	jmpr cc_nz, xc16x_jmpr
+	jmpr cc_v,  xc16x_jmpr
+	jmpr cc_nv, xc16x_jmpr
+	jmpr cc_n,  xc16x_jmpr
+	jmpr cc_nn, xc16x_jmpr
+	jmpr cc_c,  xc16x_jmpr
+	jmpr cc_nc, xc16x_jmpr
+	jmpr cc_eq, xc16x_jmpr
+	jmpr cc_ne, xc16x_jmpr
+	jmpr cc_ult,xc16x_jmpr
+	jmpr cc_ule,xc16x_jmpr
+	jmpr cc_uge,xc16x_jmpr
+	jmpr cc_ugt,xc16x_jmpr
+	jmpr cc_sle,xc16x_jmpr
+	jmpr cc_sge,xc16x_jmpr
+	jmpr cc_sgt,xc16x_jmpr
+	jmpr cc_net,xc16x_jmpr
+	jmpr cc_slt,xc16x_jmpr	

Added: branches/binutils/package/gas/testsuite/gas/xc16x/mov.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/mov.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/mov.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,20 @@
+        .section .text
+        .global _fun
+xc16x_mov:
+
+	mov r0,r1
+	mov r0,#02
+	mov r0,#0xfcbe
+	mov r0,[r1]
+	mov r0,[r1+]
+	mov [r0],r1
+	mov [-r0],r1
+	mov [r0],[r1]
+	mov [r0+],[r1]
+	mov [r0],[r1+]
+	mov r0,[r0+#0xffcb]
+	mov [r0+#0xffcb],r0
+	mov [r0],0xffcb
+	mov 0xffcb,[r0]
+	mov r0,0xffcb
+	mov 0xffcb,r0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/mov_test.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/mov_test.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/mov_test.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,85 @@
+	.xc16x
+	mov r0,r1
+	mov r0,#02
+	mov r0,#0x0001
+	mov r0,[r1]
+	mov r0,[r1+]
+	mov [r0],r1
+	mov [-r0],r1
+	mov [r0],[r1]
+	mov [r0+],[r1]
+	mov [r0],[r1+]
+	mov r0,[r0+#0x0001]
+	mov [r0+#0x0001],r0
+	mov [r0],0x0001
+	mov 0x0001,[r0]
+	mov r0,0x0001
+	mov 0x0001,r0
+ 
+ 	mov r0,r1
+ 	mov r0,#02
+ 	mov r0,#0xffff
+ 	mov r0,[r1]
+ 	mov r0,[r1+]
+ 	mov [r0],r1
+ 	mov [-r0],r1
+ 	mov [r0],[r1]
+ 	mov [r0+],[r1]
+ 	mov [r0],[r1+]
+ 	mov r0,[r0+#0xffff]
+ 	mov [r0+#0xffff],r0
+ 	mov [r0],0xffff
+ 	mov 0xffff,[r0]
+ 	mov r0,0xffff
+	mov 0xffff,r0
+ 
+ 	movb rl0,r2
+ 	movb rl0,#0x12
+ 	movb r3,[r2]
+ 	movb rl0,[r2+]
+ 	movb [-r2],rl0
+ 	movb [r3],[r2+]
+ 	movb [r3],[r2]
+ 	movb [r2+],[r3]
+ 	movb [r2],[r3+]
+ 	movb rl0,[r3+#0x1234]
+ 	movb [r3+#0x1234],rl0
+ 	movb [r3],0x1234
+ 	movb [r3],0x1234
+ 	movb 0x1234,[r3]
+ 	movb rl0,0x12
+ 	movb 0x12,rl0
+ 	
+ 	movb rl0,r2
+ 	movb rl0,#0xff
+ 	movb r3,[r2]
+ 	movb rl0,[r2+]
+ 	movb [-r2],rl0
+ 	movb [r3],[r2+]
+ 	movb [r3],[r2]
+ 	movb [r2+],[r3]
+ 	movb [r2],[r3+]
+ 	movb rl0,[r3+#0xffff]
+ 	movb [r3+#0xffff],rl0
+ 	movb [r3],0xffff
+ 	movb [r3],0xffff
+ 	movb 0xffff,[r3]
+ 	movb rl0,0xff
+ 	movb 0xff,rl0	
+ 	
+ 	movbs  r0,rl1
+	movbs  r0,0x12
+	movbs  0x1234,rl0
+	
+	movbs  r0,rl1
+	movbs  r0,0xff
+	movbs  0xffff,rl0
+
+	movbz r2,rl0
+	movbz r0,0x1234
+	movbz 0x1234,rl0
+ 	
+	movbz r2,rl0
+	movbz r0,0xffff
+	movbz 0xffff,rl0
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/movb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/movb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/movb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,26 @@
+	.section .text
+	.global _fun
+xc16x_movb:
+
+	movb rl0,r2
+	movb rl0,#0x12
+	movb r3,[r2]
+	movb rl0,[r2+]
+	movb [-r2],rl0
+	movb [r3],[r2+]
+	movb [r3],[r2]
+	movb [r2+],[r3]
+	movb [r2],[r3+]
+	movb rl0,[r3+#0x1234]
+	movb [r3+#0x1234],rl0
+	movb [r3],0x1234
+	movb [r3],0xeeff
+	movb 0x1234,[r3]
+	movb rl0,0x12
+	movb 0x12,rl0
+	
+	
+	
+
+	
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/movbs.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/movbs.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/movbs.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,8 @@
+        .section .text
+        .global  _fun
+
+xc16x_movbs:
+
+	movbs  r0,rl1
+	movbs  r0,0xff
+	movbs  0xffcb,rl0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/movbz.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/movbz.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/movbz.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,9 @@
+	.section .text
+	.global _fun
+xc16x_movbz:
+
+	movbz r2,rl0
+	movbz r0,0x23dd
+	movbz 0x23,rl0
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/mul.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/mul.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/mul.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+	.section .text
+	.global _fun
+xc16x_mul:
+
+	mul    r0,r1
+	mulu  r0,r1

Added: branches/binutils/package/gas/testsuite/gas/xc16x/neg.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/neg.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/neg.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+       .section .text
+       .global  _fun
+xc16x_neg:
+
+	neg   r0
+	negb rl0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/nop.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/nop.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/nop.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+        .section .text
+        .global _fun
+xc16x_nop:
+        nop
+        nop
+

Added: branches/binutils/package/gas/testsuite/gas/xc16x/or.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/or.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/or.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+       .section .text
+       .global _fun
+xc16x_or:
+
+	or  r0,r1
+	or  r0,[r1]
+	or  r0,[r1+]
+	or  r0,#3
+	or  r0,#0x0234
+	or  r0,0x4536
+	or  0x4536,r0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/orb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/orb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/orb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+       .section .text
+       .global _fun
+xc16x_or:
+	orb  rl0,rl1
+	orb  rl0,[r1]
+	orb  rl0,[r1+]
+	orb  rl0,#3
+	orb  rl0,#0x23
+	orb  rl0,0x0234
+	orb  0x0234,rl0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/prior.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/prior.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/prior.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,5 @@
+        .section .text
+        .global _fun
+xc16x_prior:
+
+        prior r0,r1

Added: branches/binutils/package/gas/testsuite/gas/xc16x/pushpop.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/pushpop.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/pushpop.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,5 @@
+       .section .text
+       .global _fun
+xc16x_pushpop:
+	pop   r0
+	push  r0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/ret.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/ret.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/ret.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,9 @@
+        .section .text
+        .global  _fun
+
+xc16x_ret:
+        ret
+        reti
+        rets
+        retp  r5
+        

Added: branches/binutils/package/gas/testsuite/gas/xc16x/scxt.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/scxt.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/scxt.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+        .section .text
+        .global _fun
+xc16x_scxt:
+        scxt r0,#0xffff
+        scxt r0,0xffff
+

Added: branches/binutils/package/gas/testsuite/gas/xc16x/shlrol.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/shlrol.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/shlrol.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,14 @@
+       .section .text
+       .global _fun
+xc16x_shlrol:	
+
+	shl   r0,r1
+	shl   r0,#a
+	shr   r0,r1
+	shr   r0,#a
+	rol    r0,r1
+	rol    r0,#a
+	ror    r0,r1
+	ror    r0,#a
+	ashr r0,r1
+	ashr r0,#a

Added: branches/binutils/package/gas/testsuite/gas/xc16x/sub.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/sub.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/sub.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,19 @@
+	.section .text
+	.global _fun
+xc16x_sub:
+
+	sub r0,r1
+	sub r0,[r1]
+	sub r0,[r1+]
+	sub r0,#0x1
+	sub r0,#0x7643
+	sub r0,0x7643
+	sub 0x7643,r0
+	
+	
+	
+
+	
+	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/sub_test.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/sub_test.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/sub_test.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,70 @@
+	.text
+_start:
+	sub r0,r1
+	sub r0,[r1]
+	sub r0,[r1+]
+	sub r0,#0x1
+	sub r0,#0x7643
+	sub r0,0x7643
+	sub 0x7643,r0
+	
+	sub r1,r0
+	sub r1,[r0]
+	sub r1,[r0+]
+	sub r1,#0x1
+	sub r1,#0xCDEF
+	sub r1,0xCDEF
+	sub 0xCDEF,r1
+
+
+	subb rl0,rl1
+	subb rl0,[r1]
+	subb rl0,[r1+]
+	subb rl0,#0x1
+	subb rl0,#0x43
+	subb rl0,0x7643
+	subb 0x7643,rl0
+	
+	subb rl1,rl0
+	subb rl1,[r0]
+	subb rl1,[r0+]
+	subb rl1,#0x1
+	subb rl1,#0xCD
+	subb rl1,0xCDEF
+	subb 0xCDEF,rl1
+	
+
+
+	subc r0,r1
+	subc r0,[r1]
+	subc r0,[r1+]
+	subc r0,#0x2
+	subc r0,#0x43
+	subc r0,0x7643
+	subc 0x7643,r0
+	
+	subc r1,r0
+	subc r1,[r0]
+	subc r1,[r0+]
+	subc r1,#0xC
+	subc r1,#0xCD
+	subc r1,0xCDEF
+	subc 0xCDEF,r1
+
+	subcb rl0,rl1
+	subcb rl0,[r1]
+	subcb rl0,[r1+]
+	subcb rl0,#0x2
+	subcb rl0,#0x43
+	subcb rl0,0x7643
+	subcb 0x7643,rl0
+
+	subcb rl0,rl1
+	subcb rl0,[r1]
+	subcb rl0,[r1+]
+	subcb rl0,#0x2
+	subcb rl0,#0x43
+	subcb rl0,0x7643
+	subcb 0x7643,rl0
+	
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/subb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/subb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/subb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,19 @@
+	.section .text
+	.global _fun
+xc16x_subb:
+
+	subb rl0,rl1
+	subb rl0,[r1]
+	subb rl0,[r1+]
+	subb rl0,#0x1
+	subb rl0,#0x43
+	subb rl0,0x7643
+	subb 0x7643,rl0
+	
+	
+	
+
+	
+	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/subc.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/subc.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/subc.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,19 @@
+	.section .text
+	.global _fun
+xc16x_subc:
+
+	subc r0,r1
+	subc r0,[r1]
+	subc r0,[r1+]
+	subc r0,#0x2
+	subc r0,#0x43
+	subc r0,0x7643
+	subc 0x7643,r0
+	
+	
+	
+
+	
+	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/subcb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/subcb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/subcb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,20 @@
+	.section .text
+	.global _fun
+xc16x_subcb:
+
+	subcb rl0,rl1
+	subcb rl0,[r1]
+	subcb rl0,[r1+]
+	subcb rl0,#0x2
+	subcb rl0,#0x43
+	subcb rl0,0x7643
+	subcb 0x7643,rl0
+	
+	
+	
+	
+
+	
+	
+
+	
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol1.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,12 @@
+        .section .text
+        .global _fun
+xc16x_syscontrol:
+        srst
+        sbrk
+        idle
+        pwrdn
+        srvwdt
+        diswdt
+        enwdt
+        einit
+

Added: branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol2.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/syscontrol2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,26 @@
+.text
+xc16x_syscontrol2:
+        extr #0x4
+        extr #0x3
+        extr #0x2
+        extr #0x1
+
+        atomic #0x4
+        atomic #0x3
+        atomic #0x2
+        atomic #0x1
+
+        extp r5,#0x4
+        extp #0x3ff,#0x4
+        extpr r5,#0x4
+        extpr #0x3ff,#0x4
+
+        exts r5,#0x4
+        exts #0x1,#0x4
+
+        extsr r5,#0x4
+        extsr #0x1,#0x4
+
+
+
+

Added: branches/binutils/package/gas/testsuite/gas/xc16x/trap.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/trap.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/trap.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+        .section .text
+        .global  _fun
+
+xc16x_trap:
+
+	trap #0x02

Added: branches/binutils/package/gas/testsuite/gas/xc16x/xc16x.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/xc16x.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/xc16x.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,1317 @@
+#
+# Some xc16x tests
+#
+proc do_xc16x_add {} {
+    set testname "add.s: xc16x add word tests"
+    set x 0
+
+    gas_start "add.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 0001\[^\n\]*\n"  { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 0809\[^\n\]*\n"  { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 080D\[^\n\]*\n"  { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 0803\[^\n\]*\n"  { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 06F0D204\[^\n\]*\n"  { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 02F0EDFF\[^\n\]*\n"  { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 04F0EDFF\[^\n\]*\n"  { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof				    { break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_addb {} {
+    set testname "addb.s: xc16x add byte tests"
+    set x 0
+
+    gas_start "addb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 0102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 0909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 090D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 0902\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 07F03300\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 03F08723\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 05F08723\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_addc {} {
+    set testname "addc.s: xc16x add with carry tests"
+    set x 0
+
+    gas_start "addc.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 1001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 1809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 180D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 16F03400\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a 16F05634\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e 12F08723\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 14F08723\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_addcb {} {
+    set testname "addcb.s: xc16x add byte with carry tests"
+    set x 0
+
+    gas_start "addcb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 1102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 1909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 190D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 17F00200\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a 17F02300\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e 15F08723\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 6] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_sub {} {
+    set testname "sub.s: xc16x sub tests"
+    set x 0
+
+    gas_start "sub.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 2001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 2809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 280D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 2801\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 26F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 22F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 24F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_subb {} {
+    set testname "subb.s: xc16x sub byte tests"
+    set x 0
+
+    gas_start "subb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 2102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 2909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 290D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 2901\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 27F04300\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 23F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 25F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_subc {} {
+    set testname "subc.s: xc16x sub with carry tests"
+    set x 0
+
+    gas_start "subc.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 3001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 3809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 380D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 3802\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 36F04300\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 32F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 34F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_subcb {} {
+    set testname "subcb.s: xc16x sub byte with carry tests"
+    set x 0
+
+    gas_start "subcb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 3102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 3909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 390D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 3902\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 37F04300\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 33F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 35F04376\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_and {} {
+    set testname "and.s: xc16x and tests"
+    set x 0
+
+    gas_start "and.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 6001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 6809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 680D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 6803\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 66F0BEFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 62F03002\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 64F02003\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_andb {} {
+    set testname "andb.s: xc16x and byte tests"
+    set x 0
+
+    gas_start "andb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 6102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 6909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 690D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 6903\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 67F0BE00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 63F03002\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 65F02003\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_or {} {
+    set testname "or.s: xc16x or tests"
+    set x 0
+
+    gas_start "or.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 7001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 7809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 780D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 7803\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 76F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 72F03645\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 74F03645\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_xor {} {
+    set testname "xor.s: xc16x xor tests"
+    set x 0
+
+    gas_start "xor.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 5001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 5809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 580D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 5803\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 56F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 52F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 54F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_xorb {} {
+    set testname "xorb.s: xc16x xorb tests"
+    set x 0
+
+    gas_start "xorb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 5102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 5909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 590D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 5903\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 57F03400\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 53F00324\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 55F00324\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+    
+}
+
+proc do_xc16x_mov {} {
+    set testname "mov.s: xc16x mov tests"
+    set x 0
+
+    gas_start "mov.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 F001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 E6F00200\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 E6F0BEFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a A801\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 9801\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e B810\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 8810\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 C801\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 D801\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 E801\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 D400CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c C400CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 8400CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 9400CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0028 F2F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 002c F6F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 16] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_movb {} {
+    set testname "movb.s: xc16x movb tests"
+    set x 0
+
+    gas_start "movb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 F3F00000\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 E7F01200\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 B4020000\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 9902\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e 8902\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 E932\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 C932\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 D923\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 E923\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 F4033412\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c E4033412\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 A4033412\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 A403FFEE\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0028 B4033412\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 002c F3F01200\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0030 F7F01200\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 16] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_movbs {} {
+    set testname "movbs.s: xc16x mov byte tests"
+    set x 0
+
+    gas_start "movbs.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 D020\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 D2F0FF00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 D5F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 3] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_movbz {} {
+    set testname "movbz.s: xc16x movbz tests"
+    set x 0
+
+    gas_start "movbz.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 C002\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 C2F0DD23\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 C5F02300\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 3] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_pushpop {} {
+    set testname "pushpop.s: xc16x push/pop tests"
+    set x 0
+
+    gas_start "pushpop.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 FCF0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 ECF0\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_shlrol {} {
+    set testname "shlrol.s: xc16x shift and rotate tests"
+    set x 0
+
+    gas_start "shlrol.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 4C01\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 5C00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 6C01\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 7C00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 0C01\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a 1C00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 2C01\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e 3C00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 AC01\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 BC00\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 10] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_neg {} {
+    set testname "neg.s: xc16x neg tests"
+    set x 0
+
+    gas_start "neg.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 8100\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 A100\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+proc do_xc16x_mul {} {
+    set testname "mul.s: xc16x multiply tests"
+    set x 0
+
+    gas_start "mul.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 0B01\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 1B01\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_div {} {
+    set testname "div.s: xc16x division tests"
+    set x 0
+
+    gas_start "div.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 4B00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 6B00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 7B00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 5B00\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 4] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_jmpa {} {
+    set testname "jmpa.s: xc16x jump absolute test"
+    set x 0
+
+    gas_start "jmpa.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 EA00AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 EA20AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 EA30AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c EA40AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 EA50AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 EA60AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 EA70AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c EA80AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 EA90AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 EA20AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0028 EA30AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 002c EA80AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0030 EAF0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0034 EA90AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0038 EAE0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 003c EAB0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0040 EAD0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0044 EAA0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0048 EA10AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 19] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_jmpi {} {
+    set testname "jmpi.s: xc16x jmp immidiate tests "
+    set x 0
+
+    gas_start "jmpi.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 9C07\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 9C27\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 9C37\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 9C47\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 9C57\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a 9C67\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 9C77\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e 9C87\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 9C97\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 9C27\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 9C37\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 9C87\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 9CF7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001a 9C97\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c 9CE7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001e 9CB7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 9CD7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0022 9CA7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 9C17\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 19] then { pass $testname } else { fail $testname }
+}
+
+
+proc do_xc16x_jmpr {} {
+    set testname "jmpr.s: xc16x jump relative tests"
+    set x 0
+
+    gas_start "jmpr.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 0DFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 2DFE\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 3DFD\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 4DFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 5DFB\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a 6DFA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 7DF9\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e 8DF8\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 9DF7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 2DF6\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 3DF5\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 8DF4\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 FDF3\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001a 9DF2\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c EDF1\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001e BDF0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 DDEF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0022 ADEE\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 1DED\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0026 CDEC\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 20] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_syscontrol1 {} {
+    set testname "syscontrol1.s: xc16x system control insrutions tests"
+    set x 0
+
+    gas_start "syscontrol1.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 B748B7B7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 8C00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 87788787\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a 97689797\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e A758A7A7\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 A55AA5A5\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 857A8585\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001a B54AB5B5\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 8] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_syscontrol2 {} {
+    set testname "syscontrol2.s: xc16x syscontrol2 tests"
+    set x 0
+
+    gas_start "syscontrol2.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 D1B0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 D1A0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 D190\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 D180\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 D130\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a D120\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c D110\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e D100\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 DC75\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 D770FF03\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 DCF5\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 D7F0FF03\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c DC35\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001e D7300100\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0022 DCB5\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 D7B00100\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 16] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_cpl {} {
+    set testname "cpl.s: xc16x compliment tests"
+    set x 0
+
+    gas_start "cpl.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 9100\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 B100\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_cmp {} {
+    set testname "cmp.s: xc16x misc tests"
+    set x 0
+
+    gas_start "cmp.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 4001\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 4809\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 480D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 4803\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 46F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 42F05234\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 6] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_cmpb {} {
+    set testname "cmpb.s: xc16x cmp byte tests"
+    set x 0
+
+    gas_start "cmpb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 4102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 4909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 490D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 4903\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 47F02200\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 43F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 6] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_cmpi {} {
+    set testname "cmpi.s: xc16x cmpi tests"
+    set x 0
+
+    gas_start "cmpi.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 A0F0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 A6F0CBFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 A2F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000a B0F0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c B6F0CBFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 B2F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 80F0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 86F0CBFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001a 82F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001e 90F0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 96F0CBFC\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 92F0CBFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 12] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_calli {} {
+    set testname "calli.s: xc16x call tests"
+    set x 0
+
+    gas_start "calli.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 AB01\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 0002 AB21\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 0004 AB31\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 0006 AB41\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 0008 AB51\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 000a AB61\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 000c AB71\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000e AB81\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 AB91\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0012 AB21\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 AB31\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0016 AB81\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 ABF1\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001a AB91\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c ABE1\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001e ABB1\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 ABD1\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0022 AB11\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 ABC1\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 19] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_calla {} {
+    set testname "calla.s: xc16x call tests"
+    set x 0
+
+    gas_start "calla.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 CA00AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 CA20AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 CA30AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c CA40AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 CA50AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 CA60AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 CA70AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 001c CA80AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0020 CA90AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0024 CA20AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0028 CA30AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 002c CA80AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0030 CAF0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0034 CA90AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0038 CAE0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 003c CAB0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0040 CAD0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 0044 CAA0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 0048 CA10AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+    	    -re " +\[0-9\]+ 004c CAC0AAAA\[^\n\]*\n"   { set x [expr $x+1] }
+    	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 20] then { pass $testname } else { fail $testname }
+}
+
+
+proc do_xc16x_bit {} {
+    set testname "bit.s: xc16x bit manipulation tests"
+    set x 0
+
+    gas_start "bit.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 1EF0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 1FF0\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 4AF0F012\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 3AF0F023\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 6AF0F041\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 5AF0F021\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0014 7AF0F021\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0018 2AF0F021\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 8] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_bfldl {} {
+    set testname "bfldl.s: xc16x bitwise modify masked data tests"
+    set x 0
+
+    gas_start "bfldl.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 0AF0870E\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 1AF00EFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_ret {} {
+    set testname "ret.s: xc16x ret tests"
+    set x 0
+
+    gas_start "ret.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 CB00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 FB88\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 DB00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 EBF5\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 4] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_trap {} {
+    set testname "trap.s: xc16x add/sub tests"
+    set x 0
+
+    gas_start "trap.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 9B04\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 1] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_orb {} {
+    set testname "orb.s: xc16x or byte instructions tests"
+    set x 0
+
+    gas_start "orb.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 7102\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 7909\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 790D\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0006 7903\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0008 77F02300\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 000c 73F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0010 75F03402\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 7] then { pass $testname } else { fail $testname }
+}
+
+
+proc do_xc16x_prior {} {
+    set testname "prior.s: Determine no shift cycles tests"
+    set x 0
+
+    gas_start "prior.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 2B01\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 1] then { pass $testname } else { fail $testname }
+}
+
+proc do_xc16x_nop {} {
+    set testname "nop.s: no operation nop tests"
+    set x 0
+
+    gas_start "nop.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 CC00\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0002 CC00\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+
+
+proc do_xc16x_scxt {} {
+    set testname "scxt.s: push direct word to system stack tests"
+    set x 0
+
+    gas_start "scxt.s" "-al"
+
+    # Check each instruction bit pattern to verify it got
+    # assembled correctly.
+    while 1 {
+	expect {
+	    -re " +\[0-9\]+ 0000 C6F0FFFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    -re " +\[0-9\]+ 0004 D6F0FFFF\[^\n\]*\n"   { set x [expr $x+1] }
+	    timeout 				{ perror "timeout\n; break }
+	    eof					{ break }
+	}
+    }
+
+    # This was intended to do any cleanup necessary.  It kinda looks like it
+    # isn't needed, but just in case, please keep it in for now.
+    gas_finish
+
+    # Did we find what we were looking for?  If not, flunk it.
+    if [expr $x == 2] then { pass $testname } else { fail $testname }
+}
+
+
+if [istarget xc16x*-*-*] then {
+    # Test the basic xc16x instruction parser
+    do_xc16x_add
+    do_xc16x_addb
+    do_xc16x_addc
+    do_xc16x_addcb
+    do_xc16x_sub
+    do_xc16x_subb
+    do_xc16x_subc
+    do_xc16x_subcb
+    do_xc16x_and
+    do_xc16x_andb
+    do_xc16x_or
+    do_xc16x_xor
+    do_xc16x_xorb
+    do_xc16x_mov
+    do_xc16x_movb
+    do_xc16x_movbs
+    do_xc16x_movbz
+    do_xc16x_shlrol
+    do_xc16x_neg
+    do_xc16x_mul
+    do_xc16x_div
+    do_xc16x_jmpa
+    do_xc16x_jmpi
+    do_xc16x_jmpr
+    do_xc16x_syscontrol1
+    do_xc16x_syscontrol2
+    do_xc16x_cpl
+    do_xc16x_cmp
+    do_xc16x_cmpb
+    do_xc16x_cmpi
+    do_xc16x_calla
+    do_xc16x_calli
+    do_xc16x_bit
+    do_xc16x_bfldl
+    do_xc16x_ret
+    do_xc16x_trap
+    do_xc16x_orb
+    do_xc16x_prior
+    do_xc16x_nop
+    do_xc16x_scxt
+    
+}

Added: branches/binutils/package/gas/testsuite/gas/xc16x/xor.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/xor.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/xor.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+       .section .text
+       .global _fun
+xc16x_or:
+	xor  r0,r1
+	xor  r0,[r1]
+	xor  r0,[r1+]
+	xor  r0,#3
+	xor  r0,#0x0234
+	xor  r0,0x0234
+	xor  0x0234,r0

Added: branches/binutils/package/gas/testsuite/gas/xc16x/xorb.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/xc16x/xorb.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/xc16x/xorb.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+       .section .text
+       .global _fun
+xc16x_xorb:
+	xorb  rl0,rl1
+	xorb  rl0,[r1]
+	xorb  rl0,[r1+]
+	xorb  rl0,#3
+	xorb  rl0,#0x34
+	xorb  rl0,0x2403
+	xorb  0x2403,rl0

Added: branches/binutils/package/gas/testsuite/gas/z80/offset.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/offset.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/offset.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,24 @@
+#objdump: -d
+#name: instructions with offsets
+
+.*: .*
+
+Disassembly of section .text:
+
+0+ <.text>:
+
+[ 	]+0:[ 	]+18 7e[ 	]+jr 0x0080
+[ 	]+2:[ 	]+dd 34 05[ 	]+inc \(ix\+5\)
+[ 	]+5:[ 	]+fd 35 ff[ 	]+dec \(iy\+?-1\)
+[ 	]+8:[ 	]+dd 7e 80[ 	]+ld a,\(ix\+?-128\)
+[ 	]+b:[ 	]+fd 77 7f[ 	]+ld \(iy\+127\),a
+[ 	]+e:[ 	]+10 f0[ 	]+djnz 0x0000
+[ 	]+10:[ 	]+28 02[ 	]+jr z,0x0014
+[ 	]+12:[ 	]+38 04[ 	]+jr c,0x0018
+[ 	]+14:[ 	]+20 02[ 	]+jr nz,0x0018
+[ 	]+16:[ 	]+30 fc[ 	]+jr nc,0x0014
+[ 	]+18:[ 	]+dd 36 22 09[ 	]+ld \(ix\+34\),0x09
+[ 	]+1c:[ 	]+fd 36 de f7[ 	]+ld \(iy\+?-34\),0xf7
+[ 	]+20:[ 	]+dd cb 37 1e[ 	]+rr \(ix\+55\)
+[ 	]+24:[ 	]+fd cb c9 16[ 	]+rl \(iy\+?-55\)
+#pass

Added: branches/binutils/package/gas/testsuite/gas/z80/offset.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/offset.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/offset.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,23 @@
+;;;  various instructions involving offsets
+
+	.section .text
+	.org 0
+10:
+	jr 1f
+	inc (ix+5)
+	dec (iy-1)
+	ld a,(ix-128)
+	ld (iy+127),a
+	djnz 10b
+	jr z,2f
+	jr c,3f
+2:
+	jr nz,3f
+	jr nc,2b
+3:
+	ld (ix+34),9
+	ld (iy-34),-9
+	rr (ix+55)
+	rl (iy-55)
+	.balign 0x80
+1:	

Added: branches/binutils/package/gas/testsuite/gas/z80/quotes.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/quotes.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/quotes.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,9 @@
+#objdump: -s -j .data
+#name: quotes
+
+.*:.*
+
+Contents of section .data:
+ 0000 73696e67 6c653a27 646f7562 6c653a22[ 	]+................
+ 0010 00657363 6170653a 5c5c08fe 3a[ 	]+................
+#pass
\ No newline at end of file

Added: branches/binutils/package/gas/testsuite/gas/z80/quotes.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/quotes.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/quotes.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+	;; test the parsing of strings and character constants
+	section .data
+laf:	
+	defb "single:'"
+	defb 'double:"',laf
+	defb 'escape:\\'
+
+	ex af,af'
+af0:	
+	cp '9'+1
+

Added: branches/binutils/package/gas/testsuite/gas/z80/redef.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/redef.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/redef.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,8 @@
+#objdump: -s -j .data
+#name: .equ redefinitions
+
+.*: .*
+
+Contents of section .data:
+ 0000 00000000 0[04]00000[04] 0[08]00000[08] 0[0c]00000[0c][ 	]+................[ 	]*
+#pass

Added: branches/binutils/package/gas/testsuite/gas/z80/redef.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/redef.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/redef.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+ .data
+_start:
+x: defl .-_start
+ .long x
+ .balign 4
+x: defl .-_start
+ .long x
+x: defl .-_start
+ .long x
+x: defl .-_start
+ .long x

Added: branches/binutils/package/gas/testsuite/gas/z80/suffix.d
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/suffix.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/suffix.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,15 @@
+#objdump: -s -r -j .data
+#name: suffixes
+
+.*:.*
+
+RELOCATION RECORDS FOR \[.data\]:
+OFFSET[ 	]+TYPE[ 	]+VALUE[ 	]*
+00000002[ 	]+r_imm16[ 	]+.data[ 	]*
+00000014[ 	]+r_imm16[ 	]+.data[ 	]*
+
+
+Contents of section .data:
+ 0000 0a000000 08020802 08020802 f203f203[ 	]+................[ 	]*
+ 0010 10b010b0 1600[ 	]+......[ 	]*
+#pass

Added: branches/binutils/package/gas/testsuite/gas/z80/suffix.s
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/suffix.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/suffix.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,13 @@
+	.section .data
+1010:	.word 1010B
+	.word 1010b
+	.word 1010Q
+	.word 1010q
+	.word 1010O
+	.word 1010o
+	.word 1010D
+	.word 1010d
+	.word 0B010H
+	.word 0b010h
+	.word 1010f
+1010:

Added: branches/binutils/package/gas/testsuite/gas/z80/z80.exp
===================================================================
--- branches/binutils/package/gas/testsuite/gas/z80/z80.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/testsuite/gas/z80/z80.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,12 @@
+# run tests for target Z80.
+
+if [istarget z80-*-*] then {
+# test redefinitions
+    run_dump_test "redef"
+# test parsing of " and '
+    run_dump_test "quotes"
+# test suffixes
+    run_dump_test "suffix"
+# test assembling and disassembling instructions involving offsets
+    run_dump_test "offset"
+}

Modified: branches/binutils/package/gas/write.c
===================================================================
--- branches/binutils/package/gas/write.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/write.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -512,19 +512,21 @@
 #endif
 }
 
-static void relax_seg (bfd *, asection *, PTR);
+struct relax_seg_info
+{
+  int pass;
+  int changed;
+};
 
 static void
-relax_seg (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, PTR xxx)
+relax_seg (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *xxx)
 {
   segment_info_type *seginfo = seg_info (sec);
+  struct relax_seg_info *info = (struct relax_seg_info *) xxx;
 
   if (seginfo && seginfo->frchainP
-      && relax_segment (seginfo->frchainP->frch_root, sec))
-    {
-      int *result = (int *) xxx;
-      *result = 1;
-    }
+      && relax_segment (seginfo->frchainP->frch_root, sec, info->pass))
+    info->changed = 1;
 }
 
 static void size_seg (bfd *, asection *, PTR);
@@ -1197,6 +1199,7 @@
 void
 write_object_file (void)
 {
+  struct relax_seg_info rsi;
 #ifndef WORKING_DOT_WORD
   fragS *fragP;			/* Track along all frags.  */
 #endif
@@ -1255,10 +1258,9 @@
       merge_data_into_text ();
     }
 
+  rsi.pass = 0;
   while (1)
     {
-      int changed;
-
 #ifndef WORKING_DOT_WORD
       /* We need to reset the markers in the broken word list and
 	 associated frags between calls to relax_segment (via
@@ -1279,9 +1281,10 @@
 	}
 #endif
 
-      changed = 0;
-      bfd_map_over_sections (stdoutput, relax_seg, &changed);
-      if (!changed)
+      rsi.changed = 0;
+      bfd_map_over_sections (stdoutput, relax_seg, &rsi);
+      rsi.pass++;
+      if (!rsi.changed)
 	break;
     }
 
@@ -1712,7 +1715,7 @@
    addresses.  */
 
 int
-relax_segment (struct frag *segment_frag_root, segT segment)
+relax_segment (struct frag *segment_frag_root, segT segment, int pass)
 {
   unsigned long frag_count;
   struct frag *fragP;
@@ -1826,6 +1829,7 @@
     if (max_iterations < frag_count)
       max_iterations = frag_count;
 
+    ret = 0;
     do
       {
 	stretch = 0;
@@ -1955,6 +1959,26 @@
 		  growth = target - after;
 		  if (growth < 0)
 		    {
+		      growth = 0;
+
+		      /* Don't error on first few frag relax passes.
+			 The symbol might be an expression involving
+			 symbol values from other sections.  If those
+			 sections have not yet been processed their
+			 frags will all have zero addresses, so we
+			 will calculate incorrect values for them.  The
+			 number of passes we allow before giving an
+			 error is somewhat arbitrary.  It should be at
+			 least one, with larger values requiring
+			 increasingly contrived dependencies between
+			 frags to trigger a false error.  */
+		      if (pass < 2)
+			{
+			  /* Force another pass.  */
+			  ret = 1;
+			  break;
+			}
+
 		      /* Growth may be negative, but variable part of frag
 			 cannot have fewer than 0 chars.  That is, we can't
 			 .org backwards.  */
@@ -1967,7 +1991,7 @@
 		      fragP->fr_subtype = 0;
 		      fragP->fr_offset = 0;
 		      fragP->fr_fix = after - was_address;
-		      growth = stretch;
+		      break;
 		    }
 
 		  /* This is an absolute growth factor  */
@@ -1993,6 +2017,14 @@
 		      }
 		    else if (amount < 0)
 		      {
+			/* Don't error on first few frag relax passes.
+			   See rs_org comment for a longer explanation.  */
+			if (pass < 2)
+			  {
+			    ret = 1;
+			    break;
+			  }
+
 			as_warn_where (fragP->fr_file, fragP->fr_line,
 				       _(".space or .fill with negative value, ignored"));
 			fragP->fr_symbol = 0;
@@ -2054,7 +2086,6 @@
 		segment_name (segment));
   }
 
-  ret = 0;
   for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next)
     if (fragP->last_fr_address != fragP->fr_address)
       {

Modified: branches/binutils/package/gas/write.h
===================================================================
--- branches/binutils/package/gas/write.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gas/write.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,6 +1,6 @@
 /* write.h
    Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-   2002, 2003, 2005 Free Software Foundation, Inc.
+   2002, 2003, 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -156,7 +156,7 @@
 extern void subsegs_finish (void);
 extern void write_object_file (void);
 extern long relax_frag (segT, fragS *, long);
-extern int relax_segment (struct frag * seg_frag_root, segT seg_type);
+extern int relax_segment (struct frag *, segT, int);
 extern void number_to_chars_littleendian (char *, valueT, int);
 extern void number_to_chars_bigendian (char *, valueT, int);
 extern fixS *fix_new

Modified: branches/binutils/package/gprof/ChangeLog
===================================================================
--- branches/binutils/package/gprof/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,11 @@
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* po/Make-in (pdf, ps): New dummy targets.
+
+2006-05-30  Nick Clifton  <nickc at redhat.com>
+
+	* po/es.po: Updated Spanish translation.
+
 2006-04-06  Carlos O'Donell  <carlos at codesourcery.com>
 
 	* po/Make-in: Add install-html target.

Added: branches/binutils/package/gprof/bsd_callg_bl.c
===================================================================
--- branches/binutils/package/gprof/bsd_callg_bl.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/bsd_callg_bl.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,120 @@
+/* ==> Do not modify this file!!  It is created automatically
+   from bsd_callg_bl.m using the gen-c-prog.awk script.  <== */
+
+#include <stdio.h>
+#include "ansidecl.h"
+
+void  bsd_callg_blurb (FILE *);
+void
+bsd_callg_blurb (file)
+     FILE *file;
+{
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("call graph profile:\n", file);
+  fputs ("          The sum of self and descendents is the major sort\n", file);
+  fputs ("          for this listing.\n", file);
+  fputs ("\n", file);
+  fputs ("          function entries:\n", file);
+  fputs ("\n", file);
+  fputs ("index     the index of the function in the call graph\n", file);
+  fputs ("          listing, as an aid to locating it (see below).\n", file);
+  fputs ("\n", file);
+  fputs ("%time     the percentage of the total time of the program\n", file);
+  fputs ("          accounted for by this function and its\n", file);
+  fputs ("          descendents.\n", file);
+  fputs ("\n", file);
+  fputs ("self      the number of seconds spent in this function\n", file);
+  fputs ("          itself.\n", file);
+  fputs ("\n", file);
+  fputs ("descendents\n", file);
+  fputs ("          the number of seconds spent in the descendents of\n", file);
+  fputs ("          this function on behalf of this function.\n", file);
+  fputs ("\n", file);
+  fputs ("called    the number of times this function is called (other\n", file);
+  fputs ("          than recursive calls).\n", file);
+  fputs ("\n", file);
+  fputs ("self      the number of times this function calls itself\n", file);
+  fputs ("          recursively.\n", file);
+  fputs ("\n", file);
+  fputs ("name      the name of the function, with an indication of\n", file);
+  fputs ("          its membership in a cycle, if any.\n", file);
+  fputs ("\n", file);
+  fputs ("index     the index of the function in the call graph\n", file);
+  fputs ("          listing, as an aid to locating it.\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("          parent listings:\n", file);
+  fputs ("\n", file);
+  fputs ("self*     the number of seconds of this function's self time\n", file);
+  fputs ("          which is due to calls from this parent.\n", file);
+  fputs ("\n", file);
+  fputs ("descendents*\n", file);
+  fputs ("          the number of seconds of this function's\n", file);
+  fputs ("          descendent time which is due to calls from this\n", file);
+  fputs ("          parent.\n", file);
+  fputs ("\n", file);
+  fputs ("called**  the number of times this function is called by\n", file);
+  fputs ("          this parent.  This is the numerator of the\n", file);
+  fputs ("          fraction which divides up the function's time to\n", file);
+  fputs ("          its parents.\n", file);
+  fputs ("\n", file);
+  fputs ("total*    the number of times this function was called by\n", file);
+  fputs ("          all of its parents.  This is the denominator of\n", file);
+  fputs ("          the propagation fraction.\n", file);
+  fputs ("\n", file);
+  fputs ("parents   the name of this parent, with an indication of the\n", file);
+  fputs ("          parent's membership in a cycle, if any.\n", file);
+  fputs ("\n", file);
+  fputs ("index     the index of this parent in the call graph\n", file);
+  fputs ("          listing, as an aid in locating it.\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("          children listings:\n", file);
+  fputs ("\n", file);
+  fputs ("self*     the number of seconds of this child's self time\n", file);
+  fputs ("          which is due to being called by this function.\n", file);
+  fputs ("\n", file);
+  fputs ("descendent*\n", file);
+  fputs ("          the number of seconds of this child's descendent's\n", file);
+  fputs ("          time which is due to being called by this\n", file);
+  fputs ("          function.\n", file);
+  fputs ("\n", file);
+  fputs ("called**  the number of times this child is called by this\n", file);
+  fputs ("          function.  This is the numerator of the\n", file);
+  fputs ("          propagation fraction for this child.\n", file);
+  fputs ("\n", file);
+  fputs ("total*    the number of times this child is called by all\n", file);
+  fputs ("          functions.  This is the denominator of the\n", file);
+  fputs ("          propagation fraction.\n", file);
+  fputs ("\n", file);
+  fputs ("children  the name of this child, and an indication of its\n", file);
+  fputs ("          membership in a cycle, if any.\n", file);
+  fputs ("\n", file);
+  fputs ("index     the index of this child in the call graph listing,\n", file);
+  fputs ("          as an aid to locating it.\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("          * these fields are omitted for parents (or\n", file);
+  fputs ("          children) in the same cycle as the function.  If\n", file);
+  fputs ("          the function (or child) is a member of a cycle,\n", file);
+  fputs ("          the propagated times and propagation denominator\n", file);
+  fputs ("          represent the self time and descendent time of the\n", file);
+  fputs ("          cycle as a whole.\n", file);
+  fputs ("\n", file);
+  fputs ("          ** static-only parents and children are indicated\n", file);
+  fputs ("          by a call count of 0.\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs ("          cycle listings:\n", file);
+  fputs ("          the cycle as a whole is listed with the same\n", file);
+  fputs ("          fields as a function entry.  Below it are listed\n", file);
+  fputs ("          the members of the cycle, and their contributions\n", file);
+  fputs ("          to the time and call counts of the cycle.\n", file);
+  fputs ("\n", file);
+}

Added: branches/binutils/package/gprof/config.texi
===================================================================
--- branches/binutils/package/gprof/config.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/config.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1 @@
+ at set top_srcdir .././gprof

Added: branches/binutils/package/gprof/flat_bl.c
===================================================================
--- branches/binutils/package/gprof/flat_bl.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/flat_bl.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,39 @@
+/* ==> Do not modify this file!!  It is created automatically
+   from flat_bl.m using the gen-c-prog.awk script.  <== */
+
+#include <stdio.h>
+#include "ansidecl.h"
+
+void  flat_blurb (FILE *);
+void
+flat_blurb (file)
+     FILE *file;
+{
+  fputs ("\n", file);
+  fputs (" %         the percentage of the total running time of the\n", file);
+  fputs ("time       program used by this function.\n", file);
+  fputs ("\n", file);
+  fputs ("cumulative a running sum of the number of seconds accounted\n", file);
+  fputs (" seconds   for by this function and those listed above it.\n", file);
+  fputs ("\n", file);
+  fputs (" self      the number of seconds accounted for by this\n", file);
+  fputs ("seconds    function alone.  This is the major sort for this\n", file);
+  fputs ("           listing.\n", file);
+  fputs ("\n", file);
+  fputs ("calls      the number of times this function was invoked, if\n", file);
+  fputs ("           this function is profiled, else blank.\n", file);
+  fputs (" \n", file);
+  fputs (" self      the average number of milliseconds spent in this\n", file);
+  fputs ("ms/call    function per call, if this function is profiled,\n", file);
+  fputs ("	   else blank.\n", file);
+  fputs ("\n", file);
+  fputs (" total     the average number of milliseconds spent in this\n", file);
+  fputs ("ms/call    function and its descendents per call, if this \n", file);
+  fputs ("	   function is profiled, else blank.\n", file);
+  fputs ("\n", file);
+  fputs ("name       the name of the function.  This is the minor sort\n", file);
+  fputs ("           for this listing. The index shows the location of\n", file);
+  fputs ("	   the function in the gprof listing. If the index is\n", file);
+  fputs ("	   in parenthesis it shows where it would appear in\n", file);
+  fputs ("	   the gprof listing if it were to be printed.\n", file);
+}

Added: branches/binutils/package/gprof/fsf_callg_bl.c
===================================================================
--- branches/binutils/package/gprof/fsf_callg_bl.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/fsf_callg_bl.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,95 @@
+/* ==> Do not modify this file!!  It is created automatically
+   from fsf_callg_bl.m using the gen-c-prog.awk script.  <== */
+
+#include <stdio.h>
+#include "ansidecl.h"
+
+void  fsf_callg_blurb (FILE *);
+void
+fsf_callg_blurb (file)
+     FILE *file;
+{
+  fputs ("\n", file);
+  fputs (" This table describes the call tree of the program, and was sorted by\n", file);
+  fputs (" the total amount of time spent in each function and its children.\n", file);
+  fputs ("\n", file);
+  fputs (" Each entry in this table consists of several lines.  The line with the\n", file);
+  fputs (" index number at the left hand margin lists the current function.\n", file);
+  fputs (" The lines above it list the functions that called this function,\n", file);
+  fputs (" and the lines below it list the functions this one called.\n", file);
+  fputs (" This line lists:\n", file);
+  fputs ("     index	A unique number given to each element of the table.\n", file);
+  fputs ("		Index numbers are sorted numerically.\n", file);
+  fputs ("		The index number is printed next to every function name so\n", file);
+  fputs ("		it is easier to look up where the function in the table.\n", file);
+  fputs ("\n", file);
+  fputs ("     % time	This is the percentage of the `total' time that was spent\n", file);
+  fputs ("		in this function and its children.  Note that due to\n", file);
+  fputs ("		different viewpoints, functions excluded by options, etc,\n", file);
+  fputs ("		these numbers will NOT add up to 100%.\n", file);
+  fputs ("\n", file);
+  fputs ("     self	This is the total amount of time spent in this function.\n", file);
+  fputs ("\n", file);
+  fputs ("     children	This is the total amount of time propagated into this\n", file);
+  fputs ("		function by its children.\n", file);
+  fputs ("\n", file);
+  fputs ("     called	This is the number of times the function was called.\n", file);
+  fputs ("		If the function called itself recursively, the number\n", file);
+  fputs ("		only includes non-recursive calls, and is followed by\n", file);
+  fputs ("		a `+' and the number of recursive calls.\n", file);
+  fputs ("\n", file);
+  fputs ("     name	The name of the current function.  The index number is\n", file);
+  fputs ("		printed after it.  If the function is a member of a\n", file);
+  fputs ("		cycle, the cycle number is printed between the\n", file);
+  fputs ("		function's name and the index number.\n", file);
+  fputs ("\n", file);
+  fputs ("\n", file);
+  fputs (" For the function's parents, the fields have the following meanings:\n", file);
+  fputs ("\n", file);
+  fputs ("     self	This is the amount of time that was propagated directly\n", file);
+  fputs ("		from the function into this parent.\n", file);
+  fputs ("\n", file);
+  fputs ("     children	This is the amount of time that was propagated from\n", file);
+  fputs ("		the function's children into this parent.\n", file);
+  fputs ("\n", file);
+  fputs ("     called	This is the number of times this parent called the\n", file);
+  fputs ("		function `/' the total number of times the function\n", file);
+  fputs ("		was called.  Recursive calls to the function are not\n", file);
+  fputs ("		included in the number after the `/'.\n", file);
+  fputs ("\n", file);
+  fputs ("     name	This is the name of the parent.  The parent's index\n", file);
+  fputs ("		number is printed after it.  If the parent is a\n", file);
+  fputs ("		member of a cycle, the cycle number is printed between\n", file);
+  fputs ("		the name and the index number.\n", file);
+  fputs ("\n", file);
+  fputs (" If the parents of the function cannot be determined, the word\n", file);
+  fputs (" `<spontaneous>' is printed in the `name' field, and all the other\n", file);
+  fputs (" fields are blank.\n", file);
+  fputs ("\n", file);
+  fputs (" For the function's children, the fields have the following meanings:\n", file);
+  fputs ("\n", file);
+  fputs ("     self	This is the amount of time that was propagated directly\n", file);
+  fputs ("		from the child into the function.\n", file);
+  fputs ("\n", file);
+  fputs ("     children	This is the amount of time that was propagated from the\n", file);
+  fputs ("		child's children to the function.\n", file);
+  fputs ("\n", file);
+  fputs ("     called	This is the number of times the function called\n", file);
+  fputs ("		this child `/' the total number of times the child\n", file);
+  fputs ("		was called.  Recursive calls by the child are not\n", file);
+  fputs ("		listed in the number after the `/'.\n", file);
+  fputs ("\n", file);
+  fputs ("     name	This is the name of the child.  The child's index\n", file);
+  fputs ("		number is printed after it.  If the child is a\n", file);
+  fputs ("		member of a cycle, the cycle number is printed\n", file);
+  fputs ("		between the name and the index number.\n", file);
+  fputs ("\n", file);
+  fputs (" If there are any cycles (circles) in the call graph, there is an\n", file);
+  fputs (" entry for the cycle-as-a-whole.  This entry shows who called the\n", file);
+  fputs (" cycle (as parents) and the members of the cycle (as children.)\n", file);
+  fputs (" The `+' recursive calls entry shows the number of function calls that\n", file);
+  fputs (" were internal to the cycle, and the calls entry for each member shows,\n", file);
+  fputs (" for that member, how many times it was called from other members of\n", file);
+  fputs (" the cycle.\n", file);
+  fputs ("\n", file);
+}

Added: branches/binutils/package/gprof/gprof.1
===================================================================
--- branches/binutils/package/gprof/gprof.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/gprof.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,742 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "GPROF 1"
+.TH GPROF 1 "2006-04-16" "binutils-2.16.92" "GNU"
+.SH "NAME"
+gprof \- display call graph profile data
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+gprof [ \-[abcDhilLrsTvwxyz] ] [ \-[ACeEfFJnNOpPqQZ][\fIname\fR] ] 
+ [ \-I \fIdirs\fR ] [ \-d[\fInum\fR] ] [ \-k \fIfrom/to\fR ]
+ [ \-m \fImin-count\fR ] [ \-R \fImap_file\fR ] [ \-t \fItable-length\fR ]
+ [ \-\-[no\-]annotated\-source[=\fIname\fR] ] 
+ [ \-\-[no\-]exec\-counts[=\fIname\fR] ]
+ [ \-\-[no\-]flat\-profile[=\fIname\fR] ] [ \-\-[no\-]graph[=\fIname\fR] ]
+ [ \-\-[no\-]time=\fIname\fR] [ \-\-all\-lines ] [ \-\-brief ] 
+ [ \-\-debug[=\fIlevel\fR] ] [ \-\-function\-ordering ] 
+ [ \-\-file\-ordering ] [ \-\-directory\-path=\fIdirs\fR ]
+ [ \-\-display\-unused\-functions ] [ \-\-file\-format=\fIname\fR ]
+ [ \-\-file\-info ] [ \-\-help ] [ \-\-line ] [ \-\-min\-count=\fIn\fR ]
+ [ \-\-no\-static ] [ \-\-print\-path ] [ \-\-separate\-files ]
+ [ \-\-static\-call\-graph ] [ \-\-sum ] [ \-\-table\-length=\fIlen\fR ]
+ [ \-\-traditional ] [ \-\-version ] [ \-\-width=\fIn\fR ]
+ [ \-\-ignore\-non\-functions ] [ \-\-demangle[=\fI\s-1STYLE\s0\fR] ]
+ [ \-\-no\-demangle ] [ \fIimage-file\fR ] [ \fIprofile-file\fR ... ]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\f(CW\*(C`gprof\*(C'\fR produces an execution profile of C, Pascal, or Fortran77 
+programs.  The effect of called routines is incorporated in the profile 
+of each caller.  The profile data is taken from the call graph profile file
+(\fIgmon.out\fR default) which is created by programs
+that are compiled with the \fB\-pg\fR option of
+\&\f(CW\*(C`cc\*(C'\fR, \f(CW\*(C`pc\*(C'\fR, and \f(CW\*(C`f77\*(C'\fR.
+The \fB\-pg\fR option also links in versions of the library routines
+that are compiled for profiling.  \f(CW\*(C`Gprof\*(C'\fR reads the given object 
+file (the default is \f(CW\*(C`a.out\*(C'\fR) and establishes the relation between
+its symbol table and the call graph profile from \fIgmon.out\fR.
+If more than one profile file is specified, the \f(CW\*(C`gprof\*(C'\fR
+output shows the sum of the profile information in the given profile files.
+.PP
+\&\f(CW\*(C`Gprof\*(C'\fR calculates the amount of time spent in each routine.
+Next, these times are propagated along the edges of the call graph.
+Cycles are discovered, and calls into a cycle are made to share the time
+of the cycle.
+.PP
+Several forms of output are available from the analysis.
+.PP
+The \fIflat profile\fR shows how much time your program spent in each function,
+and how many times that function was called.  If you simply want to know
+which functions burn most of the cycles, it is stated concisely here.
+.PP
+The \fIcall graph\fR shows, for each function, which functions called it, which
+other functions it called, and how many times.  There is also an estimate
+of how much time was spent in the subroutines of each function.  This can
+suggest places where you might try to eliminate function calls that use a
+lot of time.  
+.PP
+The \fIannotated source\fR listing is a copy of the program's
+source code, labeled with the number of times each line of the
+program was executed.  
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+These options specify which of several output formats
+\&\f(CW\*(C`gprof\*(C'\fR should produce.
+.PP
+Many of these options take an optional \fIsymspec\fR to specify
+functions to be included or excluded.  These options can be
+specified multiple times, with different symspecs, to include
+or exclude sets of symbols.  
+.PP
+Specifying any of these options overrides the default (\fB\-p \-q\fR),
+which prints a flat profile and call graph analysis
+for all functions.
+.ie n .IP """\-A[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-A[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-A[symspec]"
+.PD 0
+.ie n .IP """\-\-annotated\-source[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-annotated\-source[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--annotated-source[=symspec]"
+.PD
+The \fB\-A\fR option causes \f(CW\*(C`gprof\*(C'\fR to print annotated source code.
+If \fIsymspec\fR is specified, print output only for matching symbols.
+.ie n .IP """\-b""" 4
+.el .IP "\f(CW\-b\fR" 4
+.IX Item "-b"
+.PD 0
+.ie n .IP """\-\-brief""" 4
+.el .IP "\f(CW\-\-brief\fR" 4
+.IX Item "--brief"
+.PD
+If the \fB\-b\fR option is given, \f(CW\*(C`gprof\*(C'\fR doesn't print the
+verbose blurbs that try to explain the meaning of all of the fields in
+the tables.  This is useful if you intend to print out the output, or
+are tired of seeing the blurbs.
+.ie n .IP """\-C[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-C[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-C[symspec]"
+.PD 0
+.ie n .IP """\-\-exec\-counts[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-exec\-counts[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--exec-counts[=symspec]"
+.PD
+The \fB\-C\fR option causes \f(CW\*(C`gprof\*(C'\fR to
+print a tally of functions and the number of times each was called.
+If \fIsymspec\fR is specified, print tally only for matching symbols.
+.Sp
+If the profile data file contains basic-block count records, specifying
+the \fB\-l\fR option, along with \fB\-C\fR, will cause basic-block
+execution counts to be tallied and displayed.
+.ie n .IP """\-i""" 4
+.el .IP "\f(CW\-i\fR" 4
+.IX Item "-i"
+.PD 0
+.ie n .IP """\-\-file\-info""" 4
+.el .IP "\f(CW\-\-file\-info\fR" 4
+.IX Item "--file-info"
+.PD
+The \fB\-i\fR option causes \f(CW\*(C`gprof\*(C'\fR to display summary information
+about the profile data file(s) and then exit.  The number of histogram,
+call graph, and basic-block count records is displayed.
+.ie n .IP """\-I \f(CIdirs\f(CW""" 4
+.el .IP "\f(CW\-I \f(CIdirs\f(CW\fR" 4
+.IX Item "-I dirs"
+.PD 0
+.ie n .IP """\-\-directory\-path=\f(CIdirs\f(CW""" 4
+.el .IP "\f(CW\-\-directory\-path=\f(CIdirs\f(CW\fR" 4
+.IX Item "--directory-path=dirs"
+.PD
+The \fB\-I\fR option specifies a list of search directories in
+which to find source files.  Environment variable \fI\s-1GPROF_PATH\s0\fR
+can also be used to convey this information.
+Used mostly for annotated source output.
+.ie n .IP """\-J[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-J[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-J[symspec]"
+.PD 0
+.ie n .IP """\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--no-annotated-source[=symspec]"
+.PD
+The \fB\-J\fR option causes \f(CW\*(C`gprof\*(C'\fR not to
+print annotated source code.
+If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints annotated source,
+but excludes matching symbols.
+.ie n .IP """\-L""" 4
+.el .IP "\f(CW\-L\fR" 4
+.IX Item "-L"
+.PD 0
+.ie n .IP """\-\-print\-path""" 4
+.el .IP "\f(CW\-\-print\-path\fR" 4
+.IX Item "--print-path"
+.PD
+Normally, source filenames are printed with the path
+component suppressed.  The \fB\-L\fR option causes \f(CW\*(C`gprof\*(C'\fR
+to print the full pathname of
+source filenames, which is determined
+from symbolic debugging information in the image file
+and is relative to the directory in which the compiler
+was invoked.
+.ie n .IP """\-p[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-p[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-p[symspec]"
+.PD 0
+.ie n .IP """\-\-flat\-profile[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-flat\-profile[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--flat-profile[=symspec]"
+.PD
+The \fB\-p\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a flat profile.
+If \fIsymspec\fR is specified, print flat profile only for matching symbols.
+.ie n .IP """\-P[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-P[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-P[symspec]"
+.PD 0
+.ie n .IP """\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--no-flat-profile[=symspec]"
+.PD
+The \fB\-P\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing a flat profile.
+If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a flat profile,
+but excludes matching symbols.
+.ie n .IP """\-q[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-q[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-q[symspec]"
+.PD 0
+.ie n .IP """\-\-graph[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-graph[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--graph[=symspec]"
+.PD
+The \fB\-q\fR option causes \f(CW\*(C`gprof\*(C'\fR to print the call graph analysis.
+If \fIsymspec\fR is specified, print call graph only for matching symbols
+and their children.
+.ie n .IP """\-Q[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-Q[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-Q[symspec]"
+.PD 0
+.ie n .IP """\-\-no\-graph[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-no\-graph[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--no-graph[=symspec]"
+.PD
+The \fB\-Q\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing the
+call graph.
+If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a call graph,
+but excludes matching symbols.
+.ie n .IP """\-t""" 4
+.el .IP "\f(CW\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.ie n .IP """\-\-table\-length=\f(CInum\f(CW""" 4
+.el .IP "\f(CW\-\-table\-length=\f(CInum\f(CW\fR" 4
+.IX Item "--table-length=num"
+.PD
+The \fB\-t\fR option causes the \fInum\fR most active source lines in
+each source file to be listed when source annotation is enabled.  The
+default is 10.
+.ie n .IP """\-y""" 4
+.el .IP "\f(CW\-y\fR" 4
+.IX Item "-y"
+.PD 0
+.ie n .IP """\-\-separate\-files""" 4
+.el .IP "\f(CW\-\-separate\-files\fR" 4
+.IX Item "--separate-files"
+.PD
+This option affects annotated source output only.
+Normally, \f(CW\*(C`gprof\*(C'\fR prints annotated source files
+to standard\-output.  If this option is specified,
+annotated source for a file named \fIpath/\fIfilename\fI\fR
+is generated in the file \fI\fIfilename\fI\-ann\fR.  If the underlying
+filesystem would truncate \fI\fIfilename\fI\-ann\fR so that it
+overwrites the original \fI\fIfilename\fI\fR, \f(CW\*(C`gprof\*(C'\fR generates
+annotated source in the file \fI\fIfilename\fI.ann\fR instead (if the
+original file name has an extension, that extension is \fIreplaced\fR
+with \fI.ann\fR).
+.ie n .IP """\-Z[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-Z[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-Z[symspec]"
+.PD 0
+.ie n .IP """\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--no-exec-counts[=symspec]"
+.PD
+The \fB\-Z\fR option causes \f(CW\*(C`gprof\*(C'\fR not to
+print a tally of functions and the number of times each was called.
+If \fIsymspec\fR is specified, print tally, but exclude matching symbols.
+.ie n .IP """\-r""" 4
+.el .IP "\f(CW\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.ie n .IP """\-\-function\-ordering""" 4
+.el .IP "\f(CW\-\-function\-ordering\fR" 4
+.IX Item "--function-ordering"
+.PD
+The \fB\-\-function\-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a
+suggested function ordering for the program based on profiling data.
+This option suggests an ordering which may improve paging, tlb and
+cache behavior for the program on systems which support arbitrary
+ordering of functions in an executable.
+.Sp
+The exact details of how to force the linker to place functions
+in a particular order is system dependent and out of the scope of this
+manual.
+.ie n .IP """\-R \f(CImap_file\f(CW""" 4
+.el .IP "\f(CW\-R \f(CImap_file\f(CW\fR" 4
+.IX Item "-R map_file"
+.PD 0
+.ie n .IP """\-\-file\-ordering \f(CImap_file\f(CW""" 4
+.el .IP "\f(CW\-\-file\-ordering \f(CImap_file\f(CW\fR" 4
+.IX Item "--file-ordering map_file"
+.PD
+The \fB\-\-file\-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a
+suggested .o link line ordering for the program based on profiling data.
+This option suggests an ordering which may improve paging, tlb and
+cache behavior for the program on systems which do not support arbitrary
+ordering of functions in an executable.
+.Sp
+Use of the \fB\-a\fR argument is highly recommended with this option.
+.Sp
+The \fImap_file\fR argument is a pathname to a file which provides
+function name to object file mappings.  The format of the file is similar to
+the output of the program \f(CW\*(C`nm\*(C'\fR.
+.Sp
+.Vb 8
+\&        c\-parse.o:00000000 T yyparse
+\&        c\-parse.o:00000004 C yyerrflag
+\&        c\-lang.o:00000000 T maybe_objc_method_name
+\&        c\-lang.o:00000000 T print_lang_statistics
+\&        c\-lang.o:00000000 T recognize_objc_keyword
+\&        c\-decl.o:00000000 T print_lang_identifier
+\&        c\-decl.o:00000000 T print_lang_type
+\&        ...
+.Ve
+.Sp
+To create a \fImap_file\fR with \s-1GNU\s0 \f(CW\*(C`nm\*(C'\fR, type a command like
+\&\f(CW\*(C`nm \-\-extern\-only \-\-defined\-only \-v \-\-print\-file\-name program\-name\*(C'\fR.
+.ie n .IP """\-T""" 4
+.el .IP "\f(CW\-T\fR" 4
+.IX Item "-T"
+.PD 0
+.ie n .IP """\-\-traditional""" 4
+.el .IP "\f(CW\-\-traditional\fR" 4
+.IX Item "--traditional"
+.PD
+The \fB\-T\fR option causes \f(CW\*(C`gprof\*(C'\fR to print its output in
+\&\*(L"traditional\*(R" \s-1BSD\s0 style.
+.ie n .IP """\-w \f(CIwidth\f(CW""" 4
+.el .IP "\f(CW\-w \f(CIwidth\f(CW\fR" 4
+.IX Item "-w width"
+.PD 0
+.ie n .IP """\-\-width=\f(CIwidth\f(CW""" 4
+.el .IP "\f(CW\-\-width=\f(CIwidth\f(CW\fR" 4
+.IX Item "--width=width"
+.PD
+Sets width of output lines to \fIwidth\fR.
+Currently only used when printing the function index at the bottom
+of the call graph.
+.ie n .IP """\-x""" 4
+.el .IP "\f(CW\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.ie n .IP """\-\-all\-lines""" 4
+.el .IP "\f(CW\-\-all\-lines\fR" 4
+.IX Item "--all-lines"
+.PD
+This option affects annotated source output only.
+By default, only the lines at the beginning of a basic-block
+are annotated.  If this option is specified, every line in
+a basic-block is annotated by repeating the annotation for the
+first line.  This behavior is similar to \f(CW\*(C`tcov\*(C'\fR's \fB\-a\fR.
+.ie n .IP """\-\-demangle[=\f(CIstyle\f(CW]""" 4
+.el .IP "\f(CW\-\-demangle[=\f(CIstyle\f(CW]\fR" 4
+.IX Item "--demangle[=style]"
+.PD 0
+.ie n .IP """\-\-no\-demangle""" 4
+.el .IP "\f(CW\-\-no\-demangle\fR" 4
+.IX Item "--no-demangle"
+.PD
+These options control whether \*(C+ symbol names should be demangled when
+printing output.  The default is to demangle symbols.  The
+\&\f(CW\*(C`\-\-no\-demangle\*(C'\fR option may be used to turn off demangling. Different 
+compilers have different mangling styles.  The optional demangling style 
+argument can be used to choose an appropriate demangling style for your 
+compiler.
+.Sh "Analysis Options"
+.IX Subsection "Analysis Options"
+.ie n .IP """\-a""" 4
+.el .IP "\f(CW\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.ie n .IP """\-\-no\-static""" 4
+.el .IP "\f(CW\-\-no\-static\fR" 4
+.IX Item "--no-static"
+.PD
+The \fB\-a\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress the printing of
+statically declared (private) functions.  (These are functions whose
+names are not listed as global, and which are not visible outside the
+file/function/block where they were defined.)  Time spent in these
+functions, calls to/from them, etc, will all be attributed to the
+function that was loaded directly before it in the executable file.
+This option affects both the flat profile and the call graph.
+.ie n .IP """\-c""" 4
+.el .IP "\f(CW\-c\fR" 4
+.IX Item "-c"
+.PD 0
+.ie n .IP """\-\-static\-call\-graph""" 4
+.el .IP "\f(CW\-\-static\-call\-graph\fR" 4
+.IX Item "--static-call-graph"
+.PD
+The \fB\-c\fR option causes the call graph of the program to be
+augmented by a heuristic which examines the text space of the object
+file and identifies function calls in the binary machine code.
+Since normal call graph records are only generated when functions are
+entered, this option identifies children that could have been called,
+but never were.  Calls to functions that were not compiled with
+profiling enabled are also identified, but only if symbol table
+entries are present for them.
+Calls to dynamic library routines are typically \fInot\fR found
+by this option.
+Parents or children identified via this heuristic
+are indicated in the call graph with call counts of \fB0\fR.
+.ie n .IP """\-D""" 4
+.el .IP "\f(CW\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.ie n .IP """\-\-ignore\-non\-functions""" 4
+.el .IP "\f(CW\-\-ignore\-non\-functions\fR" 4
+.IX Item "--ignore-non-functions"
+.PD
+The \fB\-D\fR option causes \f(CW\*(C`gprof\*(C'\fR to ignore symbols which
+are not known to be functions.  This option will give more accurate
+profile data on systems where it is supported (Solaris and \s-1HPUX\s0 for
+example).
+.ie n .IP """\-k \f(CIfrom\f(CW/\f(CIto\f(CW""" 4
+.el .IP "\f(CW\-k \f(CIfrom\f(CW/\f(CIto\f(CW\fR" 4
+.IX Item "-k from/to"
+The \fB\-k\fR option allows you to delete from the call graph any arcs from
+symbols matching symspec \fIfrom\fR to those matching symspec \fIto\fR.
+.ie n .IP """\-l""" 4
+.el .IP "\f(CW\-l\fR" 4
+.IX Item "-l"
+.PD 0
+.ie n .IP """\-\-line""" 4
+.el .IP "\f(CW\-\-line\fR" 4
+.IX Item "--line"
+.PD
+The \fB\-l\fR option enables line-by-line profiling, which causes
+histogram hits to be charged to individual source code lines,
+instead of functions.
+If the program was compiled with basic-block counting enabled,
+this option will also identify how many times each line of
+code was executed.
+While line-by-line profiling can help isolate where in a large function
+a program is spending its time, it also significantly increases
+the running time of \f(CW\*(C`gprof\*(C'\fR, and magnifies statistical
+inaccuracies.
+.ie n .IP """\-m \f(CInum\f(CW""" 4
+.el .IP "\f(CW\-m \f(CInum\f(CW\fR" 4
+.IX Item "-m num"
+.PD 0
+.ie n .IP """\-\-min\-count=\f(CInum\f(CW""" 4
+.el .IP "\f(CW\-\-min\-count=\f(CInum\f(CW\fR" 4
+.IX Item "--min-count=num"
+.PD
+This option affects execution count output only.
+Symbols that are executed less than \fInum\fR times are suppressed.
+.ie n .IP """\-n[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-n[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-n[symspec]"
+.PD 0
+.ie n .IP """\-\-time[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-time[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--time[=symspec]"
+.PD
+The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis,
+to only propagate times for symbols matching \fIsymspec\fR.
+.ie n .IP """\-N[\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-N[\f(CIsymspec\f(CW]\fR" 4
+.IX Item "-N[symspec]"
+.PD 0
+.ie n .IP """\-\-no\-time[=\f(CIsymspec\f(CW]""" 4
+.el .IP "\f(CW\-\-no\-time[=\f(CIsymspec\f(CW]\fR" 4
+.IX Item "--no-time[=symspec]"
+.PD
+The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis,
+not to propagate times for symbols matching \fIsymspec\fR.
+.ie n .IP """\-z""" 4
+.el .IP "\f(CW\-z\fR" 4
+.IX Item "-z"
+.PD 0
+.ie n .IP """\-\-display\-unused\-functions""" 4
+.el .IP "\f(CW\-\-display\-unused\-functions\fR" 4
+.IX Item "--display-unused-functions"
+.PD
+If you give the \fB\-z\fR option, \f(CW\*(C`gprof\*(C'\fR will mention all
+functions in the flat profile, even those that were never called, and
+that had no time spent in them.  This is useful in conjunction with the
+\&\fB\-c\fR option for discovering which routines were never called.
+.Sh "Miscellaneous Options"
+.IX Subsection "Miscellaneous Options"
+.ie n .IP """\-d[\f(CInum\f(CW]""" 4
+.el .IP "\f(CW\-d[\f(CInum\f(CW]\fR" 4
+.IX Item "-d[num]"
+.PD 0
+.ie n .IP """\-\-debug[=\f(CInum\f(CW]""" 4
+.el .IP "\f(CW\-\-debug[=\f(CInum\f(CW]\fR" 4
+.IX Item "--debug[=num]"
+.PD
+The \fB\-d\fR \fInum\fR option specifies debugging options.
+If \fInum\fR is not specified, enable all debugging.
+.ie n .IP """\-h""" 4
+.el .IP "\f(CW\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.ie n .IP """\-\-help""" 4
+.el .IP "\f(CW\-\-help\fR" 4
+.IX Item "--help"
+.PD
+The \fB\-h\fR option prints command line usage.
+.ie n .IP """\-O\f(CIname\f(CW""" 4
+.el .IP "\f(CW\-O\f(CIname\f(CW\fR" 4
+.IX Item "-Oname"
+.PD 0
+.ie n .IP """\-\-file\-format=\f(CIname\f(CW""" 4
+.el .IP "\f(CW\-\-file\-format=\f(CIname\f(CW\fR" 4
+.IX Item "--file-format=name"
+.PD
+Selects the format of the profile data files.  Recognized formats are
+\&\fBauto\fR (the default), \fBbsd\fR, \fB4.4bsd\fR, \fBmagic\fR, and
+\&\fBprof\fR (not yet supported).
+.ie n .IP """\-s""" 4
+.el .IP "\f(CW\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.ie n .IP """\-\-sum""" 4
+.el .IP "\f(CW\-\-sum\fR" 4
+.IX Item "--sum"
+.PD
+The \fB\-s\fR option causes \f(CW\*(C`gprof\*(C'\fR to summarize the information
+in the profile data files it read in, and write out a profile data
+file called \fIgmon.sum\fR, which contains all the information from
+the profile data files that \f(CW\*(C`gprof\*(C'\fR read in.  The file \fIgmon.sum\fR
+may be one of the specified input files; the effect of this is to
+merge the data in the other input files into \fIgmon.sum\fR.
+.Sp
+Eventually you can run \f(CW\*(C`gprof\*(C'\fR again without \fB\-s\fR to analyze the
+cumulative data in the file \fIgmon.sum\fR.
+.ie n .IP """\-v""" 4
+.el .IP "\f(CW\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.ie n .IP """\-\-version""" 4
+.el .IP "\f(CW\-\-version\fR" 4
+.IX Item "--version"
+.PD
+The \fB\-v\fR flag causes \f(CW\*(C`gprof\*(C'\fR to print the current version
+number, and then exit.
+.Sh "Deprecated Options"
+.IX Subsection "Deprecated Options"
+.RS 4
+These options have been replaced with newer versions that use symspecs.
+.RE
+.ie n .IP """\-e \f(CIfunction_name\f(CW""" 4
+.el .IP "\f(CW\-e \f(CIfunction_name\f(CW\fR" 4
+.IX Item "-e function_name"
+The \fB\-e\fR \fIfunction\fR option tells \f(CW\*(C`gprof\*(C'\fR to not print
+information about the function \fIfunction_name\fR (and its
+children...) in the call graph.  The function will still be listed
+as a child of any functions that call it, but its index number will be
+shown as \fB[not printed]\fR.  More than one \fB\-e\fR option may be
+given; only one \fIfunction_name\fR may be indicated with each \fB\-e\fR
+option. 
+.ie n .IP """\-E \f(CIfunction_name\f(CW""" 4
+.el .IP "\f(CW\-E \f(CIfunction_name\f(CW\fR" 4
+.IX Item "-E function_name"
+The \f(CW\*(C`\-E \f(CIfunction\f(CW\*(C'\fR option works like the \f(CW\*(C`\-e\*(C'\fR option, but
+time spent in the function (and children who were not called from
+anywhere else), will not be used to compute the percentages-of-time for
+the call graph.  More than one \fB\-E\fR option may be given; only one
+\&\fIfunction_name\fR may be indicated with each \fB\-E\fR option.
+.ie n .IP """\-f \f(CIfunction_name\f(CW""" 4
+.el .IP "\f(CW\-f \f(CIfunction_name\f(CW\fR" 4
+.IX Item "-f function_name"
+The \fB\-f\fR \fIfunction\fR option causes \f(CW\*(C`gprof\*(C'\fR to limit the
+call graph to the function \fIfunction_name\fR and its children (and
+their children...).  More than one \fB\-f\fR option may be given;
+only one \fIfunction_name\fR may be indicated with each \fB\-f\fR
+option.  
+.ie n .IP """\-F \f(CIfunction_name\f(CW""" 4
+.el .IP "\f(CW\-F \f(CIfunction_name\f(CW\fR" 4
+.IX Item "-F function_name"
+The \fB\-F\fR \fIfunction\fR option works like the \f(CW\*(C`\-f\*(C'\fR option, but
+only time spent in the function and its children (and their
+children...) will be used to determine total-time and
+percentages-of-time for the call graph.  More than one \fB\-F\fR option
+may be given; only one \fIfunction_name\fR may be indicated with each
+\&\fB\-F\fR option.  The \fB\-F\fR option overrides the \fB\-E\fR option.
+.SH "FILES"
+.IX Header "FILES"
+.ie n .IP """\f(CIa.out\f(CW""" 4
+.el .IP "\f(CW\f(CIa.out\f(CW\fR" 4
+.IX Item "a.out"
+the namelist and text space.
+.ie n .IP """\f(CIgmon.out\f(CW""" 4
+.el .IP "\f(CW\f(CIgmon.out\f(CW\fR" 4
+.IX Item "gmon.out"
+dynamic call graph and profile.
+.ie n .IP """\f(CIgmon.sum\f(CW""" 4
+.el .IP "\f(CW\f(CIgmon.sum\f(CW\fR" 4
+.IX Item "gmon.sum"
+summarized dynamic call graph and profile.  
+.SH "BUGS"
+.IX Header "BUGS"
+The granularity of the sampling is shown, but remains
+statistical at best.
+We assume that the time for each execution of a function
+can be expressed by the total time for the function divided
+by the number of times the function is called.
+Thus the time propagated along the call graph arcs to the function's
+parents is directly proportional to the number of times that
+arc is traversed.
+.PP
+Parents that are not themselves profiled will have the time of
+their profiled children propagated to them, but they will appear
+to be spontaneously invoked in the call graph listing, and will
+not have their time propagated further.
+Similarly, signal catchers, even though profiled, will appear
+to be spontaneous (although for more obscure reasons).
+Any profiled children of signal catchers should have their times
+propagated properly, unless the signal catcher was invoked during
+the execution of the profiling routine, in which case all is lost.
+.PP
+The profiled program must call \f(CW\*(C`exit\*(C'\fR(2)
+or return normally for the profiling information to be saved
+in the \fIgmon.out\fR file.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fImonitor\fR\|(3), \fIprofil\fR\|(2), \fIcc\fR\|(1), \fIprof\fR\|(1), and the Info entry for \fIgprof\fR.
+.PP
+\&\*(L"An Execution Profiler for Modular Programs\*(R",
+by S. Graham, P. Kessler, M. McKusick;
+Software \- Practice and Experience,
+Vol. 13, pp. 671\-685, 1983.
+.PP
+\&\*(L"gprof: A Call Graph Execution Profiler\*(R",
+by S. Graham, P. Kessler, M. McKusick;
+Proceedings of the \s-1SIGPLAN\s0 '82 Symposium on Compiler Construction,
+\&\s-1SIGPLAN\s0 Notices, Vol. 17, No  6, pp. 120\-126, June 1982.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (C) 1988, 92, 97, 98, 99, 2000, 2001, 2003 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/gprof/gprof.info
===================================================================
--- branches/binutils/package/gprof/gprof.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/gprof.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2313 @@
+This is .././gprof/gprof.info, produced by makeinfo version 4.8 from
+.././gprof/gprof.texi.
+
+START-INFO-DIR-ENTRY
+* gprof: (gprof).                Profiling your program's execution
+END-INFO-DIR-ENTRY
+
+   This file documents the gprof profiler of the GNU system.
+
+   Copyright (C) 1988, 92, 97, 98, 99, 2000, 2001, 2003 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".
+
+
+File: gprof.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+Profiling a Program: Where Does It Spend Its Time?
+**************************************************
+
+This manual describes the GNU profiler, `gprof', and how you can use it
+to determine which parts of a program are taking most of the execution
+time.  We assume that you know how to write, compile, and execute
+programs.  GNU `gprof' was written by Jay Fenlason.
+
+   This document is distributed under the terms of the GNU Free
+Documentation License.  A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+* Menu:
+
+* Introduction::        What profiling means, and why it is useful.
+
+* Compiling::           How to compile your program for profiling.
+* Executing::           Executing your program to generate profile data
+* Invoking::            How to run `gprof', and its options
+
+* Output::		Interpreting `gprof''s output
+
+* Inaccuracy::          Potential problems you should be aware of
+* How do I?::           Answers to common questions
+* Incompatibilities::   (between GNU `gprof' and Unix `gprof'.)
+* Details::             Details of how profiling is done
+* GNU Free Documentation License::  GNU Free Documentation License
+
+
+File: gprof.info,  Node: Introduction,  Next: Compiling,  Prev: Top,  Up: Top
+
+1 Introduction to Profiling
+***************************
+
+Profiling allows you to learn where your program spent its time and
+which functions called which other functions while it was executing.
+This information can show you which pieces of your program are slower
+than you expected, and might be candidates for rewriting to make your
+program execute faster.  It can also tell you which functions are being
+called more or less often than you expected.  This may help you spot
+bugs that had otherwise been unnoticed.
+
+   Since the profiler uses information collected during the actual
+execution of your program, it can be used on programs that are too
+large or too complex to analyze by reading the source.  However, how
+your program is run will affect the information that shows up in the
+profile data.  If you don't use some feature of your program while it
+is being profiled, no profile information will be generated for that
+feature.
+
+   Profiling has several steps:
+
+   * You must compile and link your program with profiling enabled.
+     *Note Compiling::.
+
+   * You must execute your program to generate a profile data file.
+     *Note Executing::.
+
+   * You must run `gprof' to analyze the profile data.  *Note
+     Invoking::.
+
+   The next three chapters explain these steps in greater detail.
+
+   Several forms of output are available from the analysis.
+
+   The "flat profile" shows how much time your program spent in each
+function, and how many times that function was called.  If you simply
+want to know which functions burn most of the cycles, it is stated
+concisely here.  *Note Flat Profile::.
+
+   The "call graph" shows, for each function, which functions called
+it, which other functions it called, and how many times.  There is also
+an estimate of how much time was spent in the subroutines of each
+function.  This can suggest places where you might try to eliminate
+function calls that use a lot of time.  *Note Call Graph::.
+
+   The "annotated source" listing is a copy of the program's source
+code, labeled with the number of times each line of the program was
+executed.  *Note Annotated Source::.
+
+   To better understand how profiling works, you may wish to read a
+description of its implementation.  *Note Implementation::.
+
+
+File: gprof.info,  Node: Compiling,  Next: Executing,  Prev: Introduction,  Up: Top
+
+2 Compiling a Program for Profiling
+***********************************
+
+The first step in generating profile information for your program is to
+compile and link it with profiling enabled.
+
+   To compile a source file for profiling, specify the `-pg' option when
+you run the compiler.  (This is in addition to the options you normally
+use.)
+
+   To link the program for profiling, if you use a compiler such as `cc'
+to do the linking, simply specify `-pg' in addition to your usual
+options.  The same option, `-pg', alters either compilation or linking
+to do what is necessary for profiling.  Here are examples:
+
+     cc -g -c myprog.c utils.c -pg
+     cc -o myprog myprog.o utils.o -pg
+
+   The `-pg' option also works with a command that both compiles and
+links:
+
+     cc -o myprog myprog.c utils.c -g -pg
+
+   Note: The `-pg' option must be part of your compilation options as
+well as your link options.  If it is not then no call-graph data will
+be gathered and when you run `gprof' you will get an error message like
+this:
+
+     gprof: gmon.out file is missing call-graph data
+
+   If you add the `-Q' switch to suppress the printing of the call
+graph data you will still be able to see the time samples:
+
+     Flat profile:
+
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self              self     total
+      time   seconds   seconds    calls  Ts/call  Ts/call  name
+      44.12      0.07     0.07                             zazLoop
+      35.29      0.14     0.06                             main
+      20.59      0.17     0.04                             bazMillion
+
+      %         the percentage of the total running time of the
+
+   If you run the linker `ld' directly instead of through a compiler
+such as `cc', you may have to specify a profiling startup file
+`gcrt0.o' as the first input file instead of the usual startup file
+`crt0.o'.  In addition, you would probably want to specify the
+profiling C library, `libc_p.a', by writing `-lc_p' instead of the
+usual `-lc'.  This is not absolutely necessary, but doing this gives
+you number-of-calls information for standard library functions such as
+`read' and `open'.  For example:
+
+     ld -o myprog /lib/gcrt0.o myprog.o utils.o -lc_p
+
+   If you compile only some of the modules of the program with `-pg',
+you can still profile the program, but you won't get complete
+information about the modules that were compiled without `-pg'.  The
+only information you get for the functions in those modules is the
+total time spent in them; there is no record of how many times they
+were called, or from where.  This will not affect the flat profile
+(except that the `calls' field for the functions will be blank), but
+will greatly reduce the usefulness of the call graph.
+
+   If you wish to perform line-by-line profiling, you will also need to
+specify the `-g' option, instructing the compiler to insert debugging
+symbols into the program that match program addresses to source code
+lines.  *Note Line-by-line::.
+
+   In addition to the `-pg' and `-g' options, older versions of GCC
+required you to specify the `-a' option when compiling in order to
+instrument it to perform basic-block counting.  Newer versions do not
+require this option and will not accept it; basic-block counting is
+always enabled when `-pg' is on.
+
+   When basic-block counting is enabled, as the program runs it will
+count how many times it executed each branch of each `if' statement,
+each iteration of each `do' loop, etc.  This will enable `gprof' to
+construct an annotated source code listing showing how many times each
+line of code was executed.
+
+   It also worth noting that GCC supports a different profiling method
+which is enabled by the `-fprofile-arcs', `-ftest-coverage' and
+`-fprofile-values' switches. These switches do not produce data which
+is useful to `gprof' however, so they are not discussed further here.
+There is also the `-finstrument-functions' switch which will cause GCC
+to insert calls to special user supplied instrumentation routines at
+the entry and exit of every function in their program.  This can be
+used to implement an alternative profiling scheme.
+
+
+File: gprof.info,  Node: Executing,  Next: Invoking,  Prev: Compiling,  Up: Top
+
+3 Executing the Program
+***********************
+
+Once the program is compiled for profiling, you must run it in order to
+generate the information that `gprof' needs.  Simply run the program as
+usual, using the normal arguments, file names, etc.  The program should
+run normally, producing the same output as usual.  It will, however, run
+somewhat slower than normal because of the time spent collecting and the
+writing the profile data.
+
+   The way you run the program--the arguments and input that you give
+it--may have a dramatic effect on what the profile information shows.
+The profile data will describe the parts of the program that were
+activated for the particular input you use.  For example, if the first
+command you give to your program is to quit, the profile data will show
+the time used in initialization and in cleanup, but not much else.
+
+   Your program will write the profile data into a file called
+`gmon.out' just before exiting.  If there is already a file called
+`gmon.out', its contents are overwritten.  There is currently no way to
+tell the program to write the profile data under a different name, but
+you can rename the file afterwards if you are concerned that it may be
+overwritten.
+
+   In order to write the `gmon.out' file properly, your program must
+exit normally: by returning from `main' or by calling `exit'.  Calling
+the low-level function `_exit' does not write the profile data, and
+neither does abnormal termination due to an unhandled signal.
+
+   The `gmon.out' file is written in the program's _current working
+directory_ at the time it exits.  This means that if your program calls
+`chdir', the `gmon.out' file will be left in the last directory your
+program `chdir''d to.  If you don't have permission to write in this
+directory, the file is not written, and you will get an error message.
+
+   Older versions of the GNU profiling library may also write a file
+called `bb.out'.  This file, if present, contains an human-readable
+listing of the basic-block execution counts.  Unfortunately, the
+appearance of a human-readable `bb.out' means the basic-block counts
+didn't get written into `gmon.out'.  The Perl script `bbconv.pl',
+included with the `gprof' source distribution, will convert a `bb.out'
+file into a format readable by `gprof'.  Invoke it like this:
+
+     bbconv.pl < bb.out > BH-DATA
+
+   This translates the information in `bb.out' into a form that `gprof'
+can understand.  But you still need to tell `gprof' about the existence
+of this translated information.  To do that, include BB-DATA on the
+`gprof' command line, _along with `gmon.out'_, like this:
+
+     gprof OPTIONS EXECUTABLE-FILE gmon.out BB-DATA [YET-MORE-PROFILE-DATA-FILES...] [> OUTFILE]
+
+
+File: gprof.info,  Node: Invoking,  Next: Output,  Prev: Executing,  Up: Top
+
+4 `gprof' Command Summary
+*************************
+
+After you have a profile data file `gmon.out', you can run `gprof' to
+interpret the information in it.  The `gprof' program prints a flat
+profile and a call graph on standard output.  Typically you would
+redirect the output of `gprof' into a file with `>'.
+
+   You run `gprof' like this:
+
+     gprof OPTIONS [EXECUTABLE-FILE [PROFILE-DATA-FILES...]] [> OUTFILE]
+
+Here square-brackets indicate optional arguments.
+
+   If you omit the executable file name, the file `a.out' is used.  If
+you give no profile data file name, the file `gmon.out' is used.  If
+any file is not in the proper format, or if the profile data file does
+not appear to belong to the executable file, an error message is
+printed.
+
+   You can give more than one profile data file by entering all their
+names after the executable file name; then the statistics in all the
+data files are summed together.
+
+   The order of these options does not matter.
+
+* Menu:
+
+* Output Options::      Controlling `gprof''s output style
+* Analysis Options::    Controlling how `gprof' analyses its data
+* Miscellaneous Options::
+* Deprecated Options::  Options you no longer need to use, but which
+                            have been retained for compatibility
+* Symspecs::            Specifying functions to include or exclude
+
+
+File: gprof.info,  Node: Output Options,  Next: Analysis Options,  Up: Invoking
+
+4.1 Output Options
+==================
+
+These options specify which of several output formats `gprof' should
+produce.
+
+   Many of these options take an optional "symspec" to specify
+functions to be included or excluded.  These options can be specified
+multiple times, with different symspecs, to include or exclude sets of
+symbols.  *Note Symspecs::.
+
+   Specifying any of these options overrides the default (`-p -q'),
+which prints a flat profile and call graph analysis for all functions.
+
+`-A[SYMSPEC]'
+`--annotated-source[=SYMSPEC]'
+     The `-A' option causes `gprof' to print annotated source code.  If
+     SYMSPEC is specified, print output only for matching symbols.
+     *Note Annotated Source::.
+
+`-b'
+`--brief'
+     If the `-b' option is given, `gprof' doesn't print the verbose
+     blurbs that try to explain the meaning of all of the fields in the
+     tables.  This is useful if you intend to print out the output, or
+     are tired of seeing the blurbs.
+
+`-C[SYMSPEC]'
+`--exec-counts[=SYMSPEC]'
+     The `-C' option causes `gprof' to print a tally of functions and
+     the number of times each was called.  If SYMSPEC is specified,
+     print tally only for matching symbols.
+
+     If the profile data file contains basic-block count records,
+     specifying the `-l' option, along with `-C', will cause basic-block
+     execution counts to be tallied and displayed.
+
+`-i'
+`--file-info'
+     The `-i' option causes `gprof' to display summary information
+     about the profile data file(s) and then exit.  The number of
+     histogram, call graph, and basic-block count records is displayed.
+
+`-I DIRS'
+`--directory-path=DIRS'
+     The `-I' option specifies a list of search directories in which to
+     find source files.  Environment variable GPROF_PATH can also be
+     used to convey this information.  Used mostly for annotated source
+     output.
+
+`-J[SYMSPEC]'
+`--no-annotated-source[=SYMSPEC]'
+     The `-J' option causes `gprof' not to print annotated source code.
+     If SYMSPEC is specified, `gprof' prints annotated source, but
+     excludes matching symbols.
+
+`-L'
+`--print-path'
+     Normally, source filenames are printed with the path component
+     suppressed.  The `-L' option causes `gprof' to print the full
+     pathname of source filenames, which is determined from symbolic
+     debugging information in the image file and is relative to the
+     directory in which the compiler was invoked.
+
+`-p[SYMSPEC]'
+`--flat-profile[=SYMSPEC]'
+     The `-p' option causes `gprof' to print a flat profile.  If
+     SYMSPEC is specified, print flat profile only for matching symbols.
+     *Note Flat Profile::.
+
+`-P[SYMSPEC]'
+`--no-flat-profile[=SYMSPEC]'
+     The `-P' option causes `gprof' to suppress printing a flat profile.
+     If SYMSPEC is specified, `gprof' prints a flat profile, but
+     excludes matching symbols.
+
+`-q[SYMSPEC]'
+`--graph[=SYMSPEC]'
+     The `-q' option causes `gprof' to print the call graph analysis.
+     If SYMSPEC is specified, print call graph only for matching symbols
+     and their children.  *Note Call Graph::.
+
+`-Q[SYMSPEC]'
+`--no-graph[=SYMSPEC]'
+     The `-Q' option causes `gprof' to suppress printing the call graph.
+     If SYMSPEC is specified, `gprof' prints a call graph, but excludes
+     matching symbols.
+
+`-t'
+`--table-length=NUM'
+     The `-t' option causes the NUM most active source lines in each
+     source file to be listed when source annotation is enabled.  The
+     default is 10.
+
+`-y'
+`--separate-files'
+     This option affects annotated source output only.  Normally,
+     `gprof' prints annotated source files to standard-output.  If this
+     option is specified, annotated source for a file named
+     `path/FILENAME' is generated in the file `FILENAME-ann'.  If the
+     underlying filesystem would truncate `FILENAME-ann' so that it
+     overwrites the original `FILENAME', `gprof' generates annotated
+     source in the file `FILENAME.ann' instead (if the original file
+     name has an extension, that extension is _replaced_ with `.ann').
+
+`-Z[SYMSPEC]'
+`--no-exec-counts[=SYMSPEC]'
+     The `-Z' option causes `gprof' not to print a tally of functions
+     and the number of times each was called.  If SYMSPEC is specified,
+     print tally, but exclude matching symbols.
+
+`-r'
+`--function-ordering'
+     The `--function-ordering' option causes `gprof' to print a
+     suggested function ordering for the program based on profiling
+     data.  This option suggests an ordering which may improve paging,
+     tlb and cache behavior for the program on systems which support
+     arbitrary ordering of functions in an executable.
+
+     The exact details of how to force the linker to place functions in
+     a particular order is system dependent and out of the scope of this
+     manual.
+
+`-R MAP_FILE'
+`--file-ordering MAP_FILE'
+     The `--file-ordering' option causes `gprof' to print a suggested
+     .o link line ordering for the program based on profiling data.
+     This option suggests an ordering which may improve paging, tlb and
+     cache behavior for the program on systems which do not support
+     arbitrary ordering of functions in an executable.
+
+     Use of the `-a' argument is highly recommended with this option.
+
+     The MAP_FILE argument is a pathname to a file which provides
+     function name to object file mappings.  The format of the file is
+     similar to the output of the program `nm'.
+
+          c-parse.o:00000000 T yyparse
+          c-parse.o:00000004 C yyerrflag
+          c-lang.o:00000000 T maybe_objc_method_name
+          c-lang.o:00000000 T print_lang_statistics
+          c-lang.o:00000000 T recognize_objc_keyword
+          c-decl.o:00000000 T print_lang_identifier
+          c-decl.o:00000000 T print_lang_type
+          ...
+
+     To create a MAP_FILE with GNU `nm', type a command like `nm
+     --extern-only --defined-only -v --print-file-name program-name'.
+
+`-T'
+`--traditional'
+     The `-T' option causes `gprof' to print its output in
+     "traditional" BSD style.
+
+`-w WIDTH'
+`--width=WIDTH'
+     Sets width of output lines to WIDTH.  Currently only used when
+     printing the function index at the bottom of the call graph.
+
+`-x'
+`--all-lines'
+     This option affects annotated source output only.  By default,
+     only the lines at the beginning of a basic-block are annotated.
+     If this option is specified, every line in a basic-block is
+     annotated by repeating the annotation for the first line.  This
+     behavior is similar to `tcov''s `-a'.
+
+`--demangle[=STYLE]'
+`--no-demangle'
+     These options control whether C++ symbol names should be demangled
+     when printing output.  The default is to demangle symbols.  The
+     `--no-demangle' option may be used to turn off demangling.
+     Different compilers have different mangling styles.  The optional
+     demangling style argument can be used to choose an appropriate
+     demangling style for your compiler.
+
+
+File: gprof.info,  Node: Analysis Options,  Next: Miscellaneous Options,  Prev: Output Options,  Up: Invoking
+
+4.2 Analysis Options
+====================
+
+`-a'
+`--no-static'
+     The `-a' option causes `gprof' to suppress the printing of
+     statically declared (private) functions.  (These are functions
+     whose names are not listed as global, and which are not visible
+     outside the file/function/block where they were defined.)  Time
+     spent in these functions, calls to/from them, etc, will all be
+     attributed to the function that was loaded directly before it in
+     the executable file.  This option affects both the flat profile
+     and the call graph.
+
+`-c'
+`--static-call-graph'
+     The `-c' option causes the call graph of the program to be
+     augmented by a heuristic which examines the text space of the
+     object file and identifies function calls in the binary machine
+     code.  Since normal call graph records are only generated when
+     functions are entered, this option identifies children that could
+     have been called, but never were.  Calls to functions that were
+     not compiled with profiling enabled are also identified, but only
+     if symbol table entries are present for them.  Calls to dynamic
+     library routines are typically _not_ found by this option.
+     Parents or children identified via this heuristic are indicated in
+     the call graph with call counts of `0'.
+
+`-D'
+`--ignore-non-functions'
+     The `-D' option causes `gprof' to ignore symbols which are not
+     known to be functions.  This option will give more accurate
+     profile data on systems where it is supported (Solaris and HPUX for
+     example).
+
+`-k FROM/TO'
+     The `-k' option allows you to delete from the call graph any arcs
+     from symbols matching symspec FROM to those matching symspec TO.
+
+`-l'
+`--line'
+     The `-l' option enables line-by-line profiling, which causes
+     histogram hits to be charged to individual source code lines,
+     instead of functions.  If the program was compiled with
+     basic-block counting enabled, this option will also identify how
+     many times each line of code was executed.  While line-by-line
+     profiling can help isolate where in a large function a program is
+     spending its time, it also significantly increases the running
+     time of `gprof', and magnifies statistical inaccuracies.  *Note
+     Sampling Error::.
+
+`-m NUM'
+`--min-count=NUM'
+     This option affects execution count output only.  Symbols that are
+     executed less than NUM times are suppressed.
+
+`-n[SYMSPEC]'
+`--time[=SYMSPEC]'
+     The `-n' option causes `gprof', in its call graph analysis, to
+     only propagate times for symbols matching SYMSPEC.
+
+`-N[SYMSPEC]'
+`--no-time[=SYMSPEC]'
+     The `-n' option causes `gprof', in its call graph analysis, not to
+     propagate times for symbols matching SYMSPEC.
+
+`-z'
+`--display-unused-functions'
+     If you give the `-z' option, `gprof' will mention all functions in
+     the flat profile, even those that were never called, and that had
+     no time spent in them.  This is useful in conjunction with the
+     `-c' option for discovering which routines were never called.
+
+
+
+File: gprof.info,  Node: Miscellaneous Options,  Next: Deprecated Options,  Prev: Analysis Options,  Up: Invoking
+
+4.3 Miscellaneous Options
+=========================
+
+`-d[NUM]'
+`--debug[=NUM]'
+     The `-d NUM' option specifies debugging options.  If NUM is not
+     specified, enable all debugging.  *Note Debugging::.
+
+`-h'
+`--help'
+     The `-h' option prints command line usage.
+
+`-ONAME'
+`--file-format=NAME'
+     Selects the format of the profile data files.  Recognized formats
+     are `auto' (the default), `bsd', `4.4bsd', `magic', and `prof'
+     (not yet supported).
+
+`-s'
+`--sum'
+     The `-s' option causes `gprof' to summarize the information in the
+     profile data files it read in, and write out a profile data file
+     called `gmon.sum', which contains all the information from the
+     profile data files that `gprof' read in.  The file `gmon.sum' may
+     be one of the specified input files; the effect of this is to
+     merge the data in the other input files into `gmon.sum'.
+
+     Eventually you can run `gprof' again without `-s' to analyze the
+     cumulative data in the file `gmon.sum'.
+
+`-v'
+`--version'
+     The `-v' flag causes `gprof' to print the current version number,
+     and then exit.
+
+
+
+File: gprof.info,  Node: Deprecated Options,  Next: Symspecs,  Prev: Miscellaneous Options,  Up: Invoking
+
+4.4 Deprecated Options
+======================
+
+     These options have been replaced with newer versions that use
+     symspecs.
+
+`-e FUNCTION_NAME'
+     The `-e FUNCTION' option tells `gprof' to not print information
+     about the function FUNCTION_NAME (and its children...) in the call
+     graph.  The function will still be listed as a child of any
+     functions that call it, but its index number will be shown as
+     `[not printed]'.  More than one `-e' option may be given; only one
+     FUNCTION_NAME may be indicated with each `-e' option.
+
+`-E FUNCTION_NAME'
+     The `-E FUNCTION' option works like the `-e' option, but time
+     spent in the function (and children who were not called from
+     anywhere else), will not be used to compute the
+     percentages-of-time for the call graph.  More than one `-E' option
+     may be given; only one FUNCTION_NAME may be indicated with each
+     `-E' option.
+
+`-f FUNCTION_NAME'
+     The `-f FUNCTION' option causes `gprof' to limit the call graph to
+     the function FUNCTION_NAME and its children (and their
+     children...).  More than one `-f' option may be given; only one
+     FUNCTION_NAME may be indicated with each `-f' option.
+
+`-F FUNCTION_NAME'
+     The `-F FUNCTION' option works like the `-f' option, but only time
+     spent in the function and its children (and their children...)
+     will be used to determine total-time and percentages-of-time for
+     the call graph.  More than one `-F' option may be given; only one
+     FUNCTION_NAME may be indicated with each `-F' option.  The `-F'
+     option overrides the `-E' option.
+
+
+   Note that only one function can be specified with each `-e', `-E',
+`-f' or `-F' option.  To specify more than one function, use multiple
+options.  For example, this command:
+
+     gprof -e boring -f foo -f bar myprogram > gprof.output
+
+lists in the call graph all functions that were reached from either
+`foo' or `bar' and were not reachable from `boring'.
+
+
+File: gprof.info,  Node: Symspecs,  Prev: Deprecated Options,  Up: Invoking
+
+4.5 Symspecs
+============
+
+Many of the output options allow functions to be included or excluded
+using "symspecs" (symbol specifications), which observe the following
+syntax:
+
+       filename_containing_a_dot
+     | funcname_not_containing_a_dot
+     | linenumber
+     | ( [ any_filename ] `:' ( any_funcname | linenumber ) )
+
+   Here are some sample symspecs:
+
+`main.c'
+     Selects everything in file `main.c'--the dot in the string tells
+     `gprof' to interpret the string as a filename, rather than as a
+     function name.  To select a file whose name does not contain a
+     dot, a trailing colon should be specified.  For example, `odd:' is
+     interpreted as the file named `odd'.
+
+`main'
+     Selects all functions named `main'.
+
+     Note that there may be multiple instances of the same function name
+     because some of the definitions may be local (i.e., static).
+     Unless a function name is unique in a program, you must use the
+     colon notation explained below to specify a function from a
+     specific source file.
+
+     Sometimes, function names contain dots.  In such cases, it is
+     necessary to add a leading colon to the name.  For example,
+     `:.mul' selects function `.mul'.
+
+     In some object file formats, symbols have a leading underscore.
+     `gprof' will normally not print these underscores.  When you name a
+     symbol in a symspec, you should type it exactly as `gprof' prints
+     it in its output.  For example, if the compiler produces a symbol
+     `_main' from your `main' function, `gprof' still prints it as
+     `main' in its output, so you should use `main' in symspecs.
+
+`main.c:main'
+     Selects function `main' in file `main.c'.
+
+`main.c:134'
+     Selects line 134 in file `main.c'.
+
+
+File: gprof.info,  Node: Output,  Next: Inaccuracy,  Prev: Invoking,  Up: Top
+
+5 Interpreting `gprof''s Output
+*******************************
+
+`gprof' can produce several different output styles, the most important
+of which are described below.  The simplest output styles (file
+information, execution count, and function and file ordering) are not
+described here, but are documented with the respective options that
+trigger them.  *Note Output Options::.
+
+* Menu:
+
+* Flat Profile::        The flat profile shows how much time was spent
+                            executing directly in each function.
+* Call Graph::          The call graph shows which functions called which
+                            others, and how much time each function used
+                            when its subroutine calls are included.
+* Line-by-line::        `gprof' can analyze individual source code lines
+* Annotated Source::    The annotated source listing displays source code
+                            labeled with execution counts
+
+
+File: gprof.info,  Node: Flat Profile,  Next: Call Graph,  Up: Output
+
+5.1 The Flat Profile
+====================
+
+The "flat profile" shows the total amount of time your program spent
+executing each function.  Unless the `-z' option is given, functions
+with no apparent time spent in them, and no apparent calls to them, are
+not mentioned.  Note that if a function was not compiled for profiling,
+and didn't run long enough to show up on the program counter histogram,
+it will be indistinguishable from a function that was never called.
+
+   This is part of a flat profile for a small program:
+
+     Flat profile:
+
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self              self     total
+      time   seconds   seconds    calls  ms/call  ms/call  name
+      33.34      0.02     0.02     7208     0.00     0.00  open
+      16.67      0.03     0.01      244     0.04     0.12  offtime
+      16.67      0.04     0.01        8     1.25     1.25  memccpy
+      16.67      0.05     0.01        7     1.43     1.43  write
+      16.67      0.06     0.01                             mcount
+       0.00      0.06     0.00      236     0.00     0.00  tzset
+       0.00      0.06     0.00      192     0.00     0.00  tolower
+       0.00      0.06     0.00       47     0.00     0.00  strlen
+       0.00      0.06     0.00       45     0.00     0.00  strchr
+       0.00      0.06     0.00        1     0.00    50.00  main
+       0.00      0.06     0.00        1     0.00     0.00  memcpy
+       0.00      0.06     0.00        1     0.00    10.11  print
+       0.00      0.06     0.00        1     0.00     0.00  profil
+       0.00      0.06     0.00        1     0.00    50.00  report
+     ...
+
+The functions are sorted by first by decreasing run-time spent in them,
+then by decreasing number of calls, then alphabetically by name.  The
+functions `mcount' and `profil' are part of the profiling apparatus and
+appear in every flat profile; their time gives a measure of the amount
+of overhead due to profiling.
+
+   Just before the column headers, a statement appears indicating how
+much time each sample counted as.  This "sampling period" estimates the
+margin of error in each of the time figures.  A time figure that is not
+much larger than this is not reliable.  In this example, each sample
+counted as 0.01 seconds, suggesting a 100 Hz sampling rate.  The
+program's total execution time was 0.06 seconds, as indicated by the
+`cumulative seconds' field.  Since each sample counted for 0.01
+seconds, this means only six samples were taken during the run.  Two of
+the samples occurred while the program was in the `open' function, as
+indicated by the `self seconds' field.  Each of the other four samples
+occurred one each in `offtime', `memccpy', `write', and `mcount'.
+Since only six samples were taken, none of these values can be regarded
+as particularly reliable.  In another run, the `self seconds' field for
+`mcount' might well be `0.00' or `0.02'.  *Note Sampling Error::, for a
+complete discussion.
+
+   The remaining functions in the listing (those whose `self seconds'
+field is `0.00') didn't appear in the histogram samples at all.
+However, the call graph indicated that they were called, so therefore
+they are listed, sorted in decreasing order by the `calls' field.
+Clearly some time was spent executing these functions, but the paucity
+of histogram samples prevents any determination of how much time each
+took.
+
+   Here is what the fields in each line mean:
+
+`% time'
+     This is the percentage of the total execution time your program
+     spent in this function.  These should all add up to 100%.
+
+`cumulative seconds'
+     This is the cumulative total number of seconds the computer spent
+     executing this functions, plus the time spent in all the functions
+     above this one in this table.
+
+`self seconds'
+     This is the number of seconds accounted for by this function alone.
+     The flat profile listing is sorted first by this number.
+
+`calls'
+     This is the total number of times the function was called.  If the
+     function was never called, or the number of times it was called
+     cannot be determined (probably because the function was not
+     compiled with profiling enabled), the "calls" field is blank.
+
+`self ms/call'
+     This represents the average number of milliseconds spent in this
+     function per call, if this function is profiled.  Otherwise, this
+     field is blank for this function.
+
+`total ms/call'
+     This represents the average number of milliseconds spent in this
+     function and its descendants per call, if this function is
+     profiled.  Otherwise, this field is blank for this function.  This
+     is the only field in the flat profile that uses call graph
+     analysis.
+
+`name'
+     This is the name of the function.   The flat profile is sorted by
+     this field alphabetically after the "self seconds" and "calls"
+     fields are sorted.
+
+
+File: gprof.info,  Node: Call Graph,  Next: Line-by-line,  Prev: Flat Profile,  Up: Output
+
+5.2 The Call Graph
+==================
+
+The "call graph" shows how much time was spent in each function and its
+children.  From this information, you can find functions that, while
+they themselves may not have used much time, called other functions
+that did use unusual amounts of time.
+
+   Here is a sample call from a small program.  This call came from the
+same `gprof' run as the flat profile example in the previous chapter.
+
+     granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds
+
+     index % time    self  children    called     name
+                                                      <spontaneous>
+     [1]    100.0    0.00    0.05                 start [1]
+                     0.00    0.05       1/1           main [2]
+                     0.00    0.00       1/2           on_exit [28]
+                     0.00    0.00       1/1           exit [59]
+     -----------------------------------------------
+                     0.00    0.05       1/1           start [1]
+     [2]    100.0    0.00    0.05       1         main [2]
+                     0.00    0.05       1/1           report [3]
+     -----------------------------------------------
+                     0.00    0.05       1/1           main [2]
+     [3]    100.0    0.00    0.05       1         report [3]
+                     0.00    0.03       8/8           timelocal [6]
+                     0.00    0.01       1/1           print [9]
+                     0.00    0.01       9/9           fgets [12]
+                     0.00    0.00      12/34          strncmp <cycle 1> [40]
+                     0.00    0.00       8/8           lookup [20]
+                     0.00    0.00       1/1           fopen [21]
+                     0.00    0.00       8/8           chewtime [24]
+                     0.00    0.00       8/16          skipspace [44]
+     -----------------------------------------------
+     [4]     59.8    0.01        0.02       8+472     <cycle 2 as a whole>	[4]
+                     0.01        0.02     244+260         offtime <cycle 2> [7]
+                     0.00        0.00     236+1           tzset <cycle 2> [26]
+     -----------------------------------------------
+
+   The lines full of dashes divide this table into "entries", one for
+each function.  Each entry has one or more lines.
+
+   In each entry, the primary line is the one that starts with an index
+number in square brackets.  The end of this line says which function
+the entry is for.  The preceding lines in the entry describe the
+callers of this function and the following lines describe its
+subroutines (also called "children" when we speak of the call graph).
+
+   The entries are sorted by time spent in the function and its
+subroutines.
+
+   The internal profiling function `mcount' (*note Flat Profile::) is
+never mentioned in the call graph.
+
+* Menu:
+
+* Primary::       Details of the primary line's contents.
+* Callers::       Details of caller-lines' contents.
+* Subroutines::   Details of subroutine-lines' contents.
+* Cycles::        When there are cycles of recursion,
+                   such as `a' calls `b' calls `a'...
+
+
+File: gprof.info,  Node: Primary,  Next: Callers,  Up: Call Graph
+
+5.2.1 The Primary Line
+----------------------
+
+The "primary line" in a call graph entry is the line that describes the
+function which the entry is about and gives the overall statistics for
+this function.
+
+   For reference, we repeat the primary line from the entry for function
+`report' in our main example, together with the heading line that shows
+the names of the fields:
+
+     index  % time    self  children called     name
+     ...
+     [3]    100.0    0.00    0.05       1         report [3]
+
+   Here is what the fields in the primary line mean:
+
+`index'
+     Entries are numbered with consecutive integers.  Each function
+     therefore has an index number, which appears at the beginning of
+     its primary line.
+
+     Each cross-reference to a function, as a caller or subroutine of
+     another, gives its index number as well as its name.  The index
+     number guides you if you wish to look for the entry for that
+     function.
+
+`% time'
+     This is the percentage of the total time that was spent in this
+     function, including time spent in subroutines called from this
+     function.
+
+     The time spent in this function is counted again for the callers of
+     this function.  Therefore, adding up these percentages is
+     meaningless.
+
+`self'
+     This is the total amount of time spent in this function.  This
+     should be identical to the number printed in the `seconds' field
+     for this function in the flat profile.
+
+`children'
+     This is the total amount of time spent in the subroutine calls
+     made by this function.  This should be equal to the sum of all the
+     `self' and `children' entries of the children listed directly
+     below this function.
+
+`called'
+     This is the number of times the function was called.
+
+     If the function called itself recursively, there are two numbers,
+     separated by a `+'.  The first number counts non-recursive calls,
+     and the second counts recursive calls.
+
+     In the example above, the function `report' was called once from
+     `main'.
+
+`name'
+     This is the name of the current function.  The index number is
+     repeated after it.
+
+     If the function is part of a cycle of recursion, the cycle number
+     is printed between the function's name and the index number (*note
+     Cycles::).  For example, if function `gnurr' is part of cycle
+     number one, and has index number twelve, its primary line would be
+     end like this:
+
+          gnurr <cycle 1> [12]
+
+
+File: gprof.info,  Node: Callers,  Next: Subroutines,  Prev: Primary,  Up: Call Graph
+
+5.2.2 Lines for a Function's Callers
+------------------------------------
+
+A function's entry has a line for each function it was called by.
+These lines' fields correspond to the fields of the primary line, but
+their meanings are different because of the difference in context.
+
+   For reference, we repeat two lines from the entry for the function
+`report', the primary line and one caller-line preceding it, together
+with the heading line that shows the names of the fields:
+
+     index  % time    self  children called     name
+     ...
+                     0.00    0.05       1/1           main [2]
+     [3]    100.0    0.00    0.05       1         report [3]
+
+   Here are the meanings of the fields in the caller-line for `report'
+called from `main':
+
+`self'
+     An estimate of the amount of time spent in `report' itself when it
+     was called from `main'.
+
+`children'
+     An estimate of the amount of time spent in subroutines of `report'
+     when `report' was called from `main'.
+
+     The sum of the `self' and `children' fields is an estimate of the
+     amount of time spent within calls to `report' from `main'.
+
+`called'
+     Two numbers: the number of times `report' was called from `main',
+     followed by the total number of non-recursive calls to `report'
+     from all its callers.
+
+`name and index number'
+     The name of the caller of `report' to which this line applies,
+     followed by the caller's index number.
+
+     Not all functions have entries in the call graph; some options to
+     `gprof' request the omission of certain functions.  When a caller
+     has no entry of its own, it still has caller-lines in the entries
+     of the functions it calls.
+
+     If the caller is part of a recursion cycle, the cycle number is
+     printed between the name and the index number.
+
+   If the identity of the callers of a function cannot be determined, a
+dummy caller-line is printed which has `<spontaneous>' as the "caller's
+name" and all other fields blank.  This can happen for signal handlers.
+
+
+File: gprof.info,  Node: Subroutines,  Next: Cycles,  Prev: Callers,  Up: Call Graph
+
+5.2.3 Lines for a Function's Subroutines
+----------------------------------------
+
+A function's entry has a line for each of its subroutines--in other
+words, a line for each other function that it called.  These lines'
+fields correspond to the fields of the primary line, but their meanings
+are different because of the difference in context.
+
+   For reference, we repeat two lines from the entry for the function
+`main', the primary line and a line for a subroutine, together with the
+heading line that shows the names of the fields:
+
+     index  % time    self  children called     name
+     ...
+     [2]    100.0    0.00    0.05       1         main [2]
+                     0.00    0.05       1/1           report [3]
+
+   Here are the meanings of the fields in the subroutine-line for `main'
+calling `report':
+
+`self'
+     An estimate of the amount of time spent directly within `report'
+     when `report' was called from `main'.
+
+`children'
+     An estimate of the amount of time spent in subroutines of `report'
+     when `report' was called from `main'.
+
+     The sum of the `self' and `children' fields is an estimate of the
+     total time spent in calls to `report' from `main'.
+
+`called'
+     Two numbers, the number of calls to `report' from `main' followed
+     by the total number of non-recursive calls to `report'.  This
+     ratio is used to determine how much of `report''s `self' and
+     `children' time gets credited to `main'.  *Note Assumptions::.
+
+`name'
+     The name of the subroutine of `main' to which this line applies,
+     followed by the subroutine's index number.
+
+     If the caller is part of a recursion cycle, the cycle number is
+     printed between the name and the index number.
+
+
+File: gprof.info,  Node: Cycles,  Prev: Subroutines,  Up: Call Graph
+
+5.2.4 How Mutually Recursive Functions Are Described
+----------------------------------------------------
+
+The graph may be complicated by the presence of "cycles of recursion"
+in the call graph.  A cycle exists if a function calls another function
+that (directly or indirectly) calls (or appears to call) the original
+function.  For example: if `a' calls `b', and `b' calls `a', then `a'
+and `b' form a cycle.
+
+   Whenever there are call paths both ways between a pair of functions,
+they belong to the same cycle.  If `a' and `b' call each other and `b'
+and `c' call each other, all three make one cycle.  Note that even if
+`b' only calls `a' if it was not called from `a', `gprof' cannot
+determine this, so `a' and `b' are still considered a cycle.
+
+   The cycles are numbered with consecutive integers.  When a function
+belongs to a cycle, each time the function name appears in the call
+graph it is followed by `<cycle NUMBER>'.
+
+   The reason cycles matter is that they make the time values in the
+call graph paradoxical.  The "time spent in children" of `a' should
+include the time spent in its subroutine `b' and in `b''s
+subroutines--but one of `b''s subroutines is `a'!  How much of `a''s
+time should be included in the children of `a', when `a' is indirectly
+recursive?
+
+   The way `gprof' resolves this paradox is by creating a single entry
+for the cycle as a whole.  The primary line of this entry describes the
+total time spent directly in the functions of the cycle.  The
+"subroutines" of the cycle are the individual functions of the cycle,
+and all other functions that were called directly by them.  The
+"callers" of the cycle are the functions, outside the cycle, that
+called functions in the cycle.
+
+   Here is an example portion of a call graph which shows a cycle
+containing functions `a' and `b'.  The cycle was entered by a call to
+`a' from `main'; both `a' and `b' called `c'.
+
+     index  % time    self  children called     name
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+     [3]     91.71    1.77        0    1+5    <cycle 1 as a whole> [3]
+                      1.02        0    3          b <cycle 1> [4]
+                      0.75        0    2          a <cycle 1> [5]
+     ----------------------------------------
+                                       3          a <cycle 1> [5]
+     [4]     52.85    1.02        0    0      b <cycle 1> [4]
+                                       2          a <cycle 1> [5]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+                                       2          b <cycle 1> [4]
+     [5]     38.86    0.75        0    1      a <cycle 1> [5]
+                                       3          b <cycle 1> [4]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+
+(The entire call graph for this program contains in addition an entry
+for `main', which calls `a', and an entry for `c', with callers `a' and
+`b'.)
+
+     index  % time    self  children called     name
+                                                  <spontaneous>
+     [1]    100.00       0     1.93    0      start [1]
+                      0.16     1.77    1/1        main [2]
+     ----------------------------------------
+                      0.16     1.77    1/1        start [1]
+     [2]    100.00    0.16     1.77    1      main [2]
+                      1.77        0    1/1        a <cycle 1> [5]
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+     [3]     91.71    1.77        0    1+5    <cycle 1 as a whole> [3]
+                      1.02        0    3          b <cycle 1> [4]
+                      0.75        0    2          a <cycle 1> [5]
+                         0        0    6/6        c [6]
+     ----------------------------------------
+                                       3          a <cycle 1> [5]
+     [4]     52.85    1.02        0    0      b <cycle 1> [4]
+                                       2          a <cycle 1> [5]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+                                       2          b <cycle 1> [4]
+     [5]     38.86    0.75        0    1      a <cycle 1> [5]
+                                       3          b <cycle 1> [4]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+                         0        0    3/6        b <cycle 1> [4]
+                         0        0    3/6        a <cycle 1> [5]
+     [6]      0.00       0        0    6      c [6]
+     ----------------------------------------
+
+   The `self' field of the cycle's primary line is the total time spent
+in all the functions of the cycle.  It equals the sum of the `self'
+fields for the individual functions in the cycle, found in the entry in
+the subroutine lines for these functions.
+
+   The `children' fields of the cycle's primary line and subroutine
+lines count only subroutines outside the cycle.  Even though `a' calls
+`b', the time spent in those calls to `b' is not counted in `a''s
+`children' time.  Thus, we do not encounter the problem of what to do
+when the time in those calls to `b' includes indirect recursive calls
+back to `a'.
+
+   The `children' field of a caller-line in the cycle's entry estimates
+the amount of time spent _in the whole cycle_, and its other
+subroutines, on the times when that caller called a function in the
+cycle.
+
+   The `calls' field in the primary line for the cycle has two numbers:
+first, the number of times functions in the cycle were called by
+functions outside the cycle; second, the number of times they were
+called by functions in the cycle (including times when a function in
+the cycle calls itself).  This is a generalization of the usual split
+into non-recursive and recursive calls.
+
+   The `calls' field of a subroutine-line for a cycle member in the
+cycle's entry says how many time that function was called from
+functions in the cycle.  The total of all these is the second number in
+the primary line's `calls' field.
+
+   In the individual entry for a function in a cycle, the other
+functions in the same cycle can appear as subroutines and as callers.
+These lines show how many times each function in the cycle called or
+was called from each other function in the cycle.  The `self' and
+`children' fields in these lines are blank because of the difficulty of
+defining meanings for them when recursion is going on.
+
+
+File: gprof.info,  Node: Line-by-line,  Next: Annotated Source,  Prev: Call Graph,  Up: Output
+
+5.3 Line-by-line Profiling
+==========================
+
+`gprof''s `-l' option causes the program to perform "line-by-line"
+profiling.  In this mode, histogram samples are assigned not to
+functions, but to individual lines of source code.  The program usually
+must be compiled with a `-g' option, in addition to `-pg', in order to
+generate debugging symbols for tracking source code lines.
+
+   The flat profile is the most useful output table in line-by-line
+mode.  The call graph isn't as useful as normal, since the current
+version of `gprof' does not propagate call graph arcs from source code
+lines to the enclosing function.  The call graph does, however, show
+each line of code that called each function, along with a count.
+
+   Here is a section of `gprof''s output, without line-by-line
+profiling.  Note that `ct_init' accounted for four histogram hits, and
+13327 calls to `init_block'.
+
+     Flat profile:
+
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self              self     total
+      time   seconds   seconds    calls  us/call  us/call  name
+      30.77      0.13     0.04     6335     6.31     6.31  ct_init
+
+
+     		     Call graph (explanation follows)
+
+
+     granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds
+
+     index % time    self  children    called     name
+
+                     0.00    0.00       1/13496       name_too_long
+                     0.00    0.00      40/13496       deflate
+                     0.00    0.00     128/13496       deflate_fast
+                     0.00    0.00   13327/13496       ct_init
+     [7]      0.0    0.00    0.00   13496         init_block
+
+   Now let's look at some of `gprof''s output from the same program run,
+this time with line-by-line profiling enabled.  Note that `ct_init''s
+four histogram hits are broken down into four lines of source code -
+one hit occurred on each of lines 349, 351, 382 and 385.  In the call
+graph, note how `ct_init''s 13327 calls to `init_block' are broken down
+into one call from line 396, 3071 calls from line 384, 3730 calls from
+line 385, and 6525 calls from 387.
+
+     Flat profile:
+
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self
+      time   seconds   seconds    calls  name
+       7.69      0.10     0.01           ct_init (trees.c:349)
+       7.69      0.11     0.01           ct_init (trees.c:351)
+       7.69      0.12     0.01           ct_init (trees.c:382)
+       7.69      0.13     0.01           ct_init (trees.c:385)
+
+
+     		     Call graph (explanation follows)
+
+
+     granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds
+
+       % time    self  children    called     name
+
+                 0.00    0.00       1/13496       name_too_long (gzip.c:1440)
+                 0.00    0.00       1/13496       deflate (deflate.c:763)
+                 0.00    0.00       1/13496       ct_init (trees.c:396)
+                 0.00    0.00       2/13496       deflate (deflate.c:727)
+                 0.00    0.00       4/13496       deflate (deflate.c:686)
+                 0.00    0.00       5/13496       deflate (deflate.c:675)
+                 0.00    0.00      12/13496       deflate (deflate.c:679)
+                 0.00    0.00      16/13496       deflate (deflate.c:730)
+                 0.00    0.00     128/13496       deflate_fast (deflate.c:654)
+                 0.00    0.00    3071/13496       ct_init (trees.c:384)
+                 0.00    0.00    3730/13496       ct_init (trees.c:385)
+                 0.00    0.00    6525/13496       ct_init (trees.c:387)
+     [6]  0.0    0.00    0.00   13496         init_block (trees.c:408)
+
+
+File: gprof.info,  Node: Annotated Source,  Prev: Line-by-line,  Up: Output
+
+5.4 The Annotated Source Listing
+================================
+
+`gprof''s `-A' option triggers an annotated source listing, which lists
+the program's source code, each function labeled with the number of
+times it was called.  You may also need to specify the `-I' option, if
+`gprof' can't find the source code files.
+
+   Compiling with `gcc ... -g -pg -a' augments your program with
+basic-block counting code, in addition to function counting code.  This
+enables `gprof' to determine how many times each line of code was
+executed.  For example, consider the following function, taken from
+gzip, with line numbers added:
+
+      1 ulg updcrc(s, n)
+      2     uch *s;
+      3     unsigned n;
+      4 {
+      5     register ulg c;
+      6
+      7     static ulg crc = (ulg)0xffffffffL;
+      8
+      9     if (s == NULL) {
+     10         c = 0xffffffffL;
+     11     } else {
+     12         c = crc;
+     13         if (n) do {
+     14             c = crc_32_tab[...];
+     15         } while (--n);
+     16     }
+     17     crc = c;
+     18     return c ^ 0xffffffffL;
+     19 }
+
+   `updcrc' has at least five basic-blocks.  One is the function
+itself.  The `if' statement on line 9 generates two more basic-blocks,
+one for each branch of the `if'.  A fourth basic-block results from the
+`if' on line 13, and the contents of the `do' loop form the fifth
+basic-block.  The compiler may also generate additional basic-blocks to
+handle various special cases.
+
+   A program augmented for basic-block counting can be analyzed with
+`gprof -l -A'.  I also suggest use of the `-x' option, which ensures
+that each line of code is labeled at least once.  Here is `updcrc''s
+annotated source listing for a sample `gzip' run:
+
+                     ulg updcrc(s, n)
+                         uch *s;
+                         unsigned n;
+                 2 ->{
+                         register ulg c;
+
+                         static ulg crc = (ulg)0xffffffffL;
+
+                 2 ->    if (s == NULL) {
+                 1 ->	c = 0xffffffffL;
+                 1 ->    } else {
+                 1 ->	c = crc;
+                 1 ->        if (n) do {
+             26312 ->            c = crc_32_tab[...];
+     26312,1,26311 ->        } while (--n);
+                         }
+                 2 ->    crc = c;
+                 2 ->    return c ^ 0xffffffffL;
+                 2 ->}
+
+   In this example, the function was called twice, passing once through
+each branch of the `if' statement.  The body of the `do' loop was
+executed a total of 26312 times.  Note how the `while' statement is
+annotated.  It began execution 26312 times, once for each iteration
+through the loop.  One of those times (the last time) it exited, while
+it branched back to the beginning of the loop 26311 times.
+
+
+File: gprof.info,  Node: Inaccuracy,  Next: How do I?,  Prev: Output,  Up: Top
+
+6 Inaccuracy of `gprof' Output
+******************************
+
+* Menu:
+
+* Sampling Error::      Statistical margins of error
+* Assumptions::         Estimating children times
+
+
+File: gprof.info,  Node: Sampling Error,  Next: Assumptions,  Up: Inaccuracy
+
+6.1 Statistical Sampling Error
+==============================
+
+The run-time figures that `gprof' gives you are based on a sampling
+process, so they are subject to statistical inaccuracy.  If a function
+runs only a small amount of time, so that on the average the sampling
+process ought to catch that function in the act only once, there is a
+pretty good chance it will actually find that function zero times, or
+twice.
+
+   By contrast, the number-of-calls and basic-block figures are derived
+by counting, not sampling.  They are completely accurate and will not
+vary from run to run if your program is deterministic.
+
+   The "sampling period" that is printed at the beginning of the flat
+profile says how often samples are taken.  The rule of thumb is that a
+run-time figure is accurate if it is considerably bigger than the
+sampling period.
+
+   The actual amount of error can be predicted.  For N samples, the
+_expected_ error is the square-root of N.  For example, if the sampling
+period is 0.01 seconds and `foo''s run-time is 1 second, N is 100
+samples (1 second/0.01 seconds), sqrt(N) is 10 samples, so the expected
+error in `foo''s run-time is 0.1 seconds (10*0.01 seconds), or ten
+percent of the observed value.  Again, if the sampling period is 0.01
+seconds and `bar''s run-time is 100 seconds, N is 10000 samples,
+sqrt(N) is 100 samples, so the expected error in `bar''s run-time is 1
+second, or one percent of the observed value.  It is likely to vary
+this much _on the average_ from one profiling run to the next.
+(_Sometimes_ it will vary more.)
+
+   This does not mean that a small run-time figure is devoid of
+information.  If the program's _total_ run-time is large, a small
+run-time for one function does tell you that that function used an
+insignificant fraction of the whole program's time.  Usually this means
+it is not worth optimizing.
+
+   One way to get more accuracy is to give your program more (but
+similar) input data so it will take longer.  Another way is to combine
+the data from several runs, using the `-s' option of `gprof'.  Here is
+how:
+
+  1. Run your program once.
+
+  2. Issue the command `mv gmon.out gmon.sum'.
+
+  3. Run your program again, the same as before.
+
+  4. Merge the new data in `gmon.out' into `gmon.sum' with this command:
+
+          gprof -s EXECUTABLE-FILE gmon.out gmon.sum
+
+  5. Repeat the last two steps as often as you wish.
+
+  6. Analyze the cumulative data using this command:
+
+          gprof EXECUTABLE-FILE gmon.sum > OUTPUT-FILE
+
+
+File: gprof.info,  Node: Assumptions,  Prev: Sampling Error,  Up: Inaccuracy
+
+6.2 Estimating `children' Times
+===============================
+
+Some of the figures in the call graph are estimates--for example, the
+`children' time values and all the time figures in caller and
+subroutine lines.
+
+   There is no direct information about these measurements in the
+profile data itself.  Instead, `gprof' estimates them by making an
+assumption about your program that might or might not be true.
+
+   The assumption made is that the average time spent in each call to
+any function `foo' is not correlated with who called `foo'.  If `foo'
+used 5 seconds in all, and 2/5 of the calls to `foo' came from `a',
+then `foo' contributes 2 seconds to `a''s `children' time, by
+assumption.
+
+   This assumption is usually true enough, but for some programs it is
+far from true.  Suppose that `foo' returns very quickly when its
+argument is zero; suppose that `a' always passes zero as an argument,
+while other callers of `foo' pass other arguments.  In this program,
+all the time spent in `foo' is in the calls from callers other than `a'.
+But `gprof' has no way of knowing this; it will blindly and incorrectly
+charge 2 seconds of time in `foo' to the children of `a'.
+
+   We hope some day to put more complete data into `gmon.out', so that
+this assumption is no longer needed, if we can figure out how.  For the
+nonce, the estimated figures are usually more useful than misleading.
+
+
+File: gprof.info,  Node: How do I?,  Next: Incompatibilities,  Prev: Inaccuracy,  Up: Top
+
+7 Answers to Common Questions
+*****************************
+
+How can I get more exact information about hot spots in my program?
+     Looking at the per-line call counts only tells part of the story.
+     Because `gprof' can only report call times and counts by function,
+     the best way to get finer-grained information on where the program
+     is spending its time is to re-factor large functions into sequences
+     of calls to smaller ones.  Beware however that this can introduce
+     artifical hot spots since compiling with `-pg' adds a significant
+     overhead to function calls.  An alternative solution is to use a
+     non-intrusive profiler, e.g. oprofile.
+
+How do I find which lines in my program were executed the most times?
+     Compile your program with basic-block counting enabled, run it,
+     then use the following pipeline:
+
+          gprof -l -C OBJFILE | sort -k 3 -n -r
+
+     This listing will show you the lines in your code executed most
+     often, but not necessarily those that consumed the most time.
+
+How do I find which lines in my program called a particular function?
+     Use `gprof -l' and lookup the function in the call graph.  The
+     callers will be broken down by function and line number.
+
+How do I analyze a program that runs for less than a second?
+     Try using a shell script like this one:
+
+          for i in `seq 1 100`; do
+            fastprog
+            mv gmon.out gmon.out.$i
+          done
+
+          gprof -s fastprog gmon.out.*
+
+          gprof fastprog gmon.sum
+
+     If your program is completely deterministic, all the call counts
+     will be simple multiples of 100 (i.e. a function called once in
+     each run will appear with a call count of 100).
+
+
+
+File: gprof.info,  Node: Incompatibilities,  Next: Details,  Prev: How do I?,  Up: Top
+
+8 Incompatibilities with Unix `gprof'
+*************************************
+
+GNU `gprof' and Berkeley Unix `gprof' use the same data file
+`gmon.out', and provide essentially the same information.  But there
+are a few differences.
+
+   * GNU `gprof' uses a new, generalized file format with support for
+     basic-block execution counts and non-realtime histograms.  A magic
+     cookie and version number allows `gprof' to easily identify new
+     style files.  Old BSD-style files can still be read.  *Note File
+     Format::.
+
+   * For a recursive function, Unix `gprof' lists the function as a
+     parent and as a child, with a `calls' field that lists the number
+     of recursive calls.  GNU `gprof' omits these lines and puts the
+     number of recursive calls in the primary line.
+
+   * When a function is suppressed from the call graph with `-e', GNU
+     `gprof' still lists it as a subroutine of functions that call it.
+
+   * GNU `gprof' accepts the `-k' with its argument in the form
+     `from/to', instead of `from to'.
+
+   * In the annotated source listing, if there are multiple basic
+     blocks on the same line, GNU `gprof' prints all of their counts,
+     separated by commas.
+
+   * The blurbs, field widths, and output formats are different.  GNU
+     `gprof' prints blurbs after the tables, so that you can see the
+     tables without skipping the blurbs.
+
+
+File: gprof.info,  Node: Details,  Next: GNU Free Documentation License,  Prev: Incompatibilities,  Up: Top
+
+9 Details of Profiling
+**********************
+
+* Menu:
+
+* Implementation::      How a program collects profiling information
+* File Format::         Format of `gmon.out' files
+* Internals::           `gprof''s internal operation
+* Debugging::           Using `gprof''s `-d' option
+
+
+File: gprof.info,  Node: Implementation,  Next: File Format,  Up: Details
+
+9.1 Implementation of Profiling
+===============================
+
+Profiling works by changing how every function in your program is
+compiled so that when it is called, it will stash away some information
+about where it was called from.  From this, the profiler can figure out
+what function called it, and can count how many times it was called.
+This change is made by the compiler when your program is compiled with
+the `-pg' option, which causes every function to call `mcount' (or
+`_mcount', or `__mcount', depending on the OS and compiler) as one of
+its first operations.
+
+   The `mcount' routine, included in the profiling library, is
+responsible for recording in an in-memory call graph table both its
+parent routine (the child) and its parent's parent.  This is typically
+done by examining the stack frame to find both the address of the
+child, and the return address in the original parent.  Since this is a
+very machine-dependent operation, `mcount' itself is typically a short
+assembly-language stub routine that extracts the required information,
+and then calls `__mcount_internal' (a normal C function) with two
+arguments - `frompc' and `selfpc'.  `__mcount_internal' is responsible
+for maintaining the in-memory call graph, which records `frompc',
+`selfpc', and the number of times each of these call arcs was traversed.
+
+   GCC Version 2 provides a magical function
+(`__builtin_return_address'), which allows a generic `mcount' function
+to extract the required information from the stack frame.  However, on
+some architectures, most notably the SPARC, using this builtin can be
+very computationally expensive, and an assembly language version of
+`mcount' is used for performance reasons.
+
+   Number-of-calls information for library routines is collected by
+using a special version of the C library.  The programs in it are the
+same as in the usual C library, but they were compiled with `-pg'.  If
+you link your program with `gcc ... -pg', it automatically uses the
+profiling version of the library.
+
+   Profiling also involves watching your program as it runs, and
+keeping a histogram of where the program counter happens to be every
+now and then.  Typically the program counter is looked at around 100
+times per second of run time, but the exact frequency may vary from
+system to system.
+
+   This is done is one of two ways.  Most UNIX-like operating systems
+provide a `profil()' system call, which registers a memory array with
+the kernel, along with a scale factor that determines how the program's
+address space maps into the array.  Typical scaling values cause every
+2 to 8 bytes of address space to map into a single array slot.  On
+every tick of the system clock (assuming the profiled program is
+running), the value of the program counter is examined and the
+corresponding slot in the memory array is incremented.  Since this is
+done in the kernel, which had to interrupt the process anyway to handle
+the clock interrupt, very little additional system overhead is required.
+
+   However, some operating systems, most notably Linux 2.0 (and
+earlier), do not provide a `profil()' system call.  On such a system,
+arrangements are made for the kernel to periodically deliver a signal
+to the process (typically via `setitimer()'), which then performs the
+same operation of examining the program counter and incrementing a slot
+in the memory array.  Since this method requires a signal to be
+delivered to user space every time a sample is taken, it uses
+considerably more overhead than kernel-based profiling.  Also, due to
+the added delay required to deliver the signal, this method is less
+accurate as well.
+
+   A special startup routine allocates memory for the histogram and
+either calls `profil()' or sets up a clock signal handler.  This
+routine (`monstartup') can be invoked in several ways.  On Linux
+systems, a special profiling startup file `gcrt0.o', which invokes
+`monstartup' before `main', is used instead of the default `crt0.o'.
+Use of this special startup file is one of the effects of using `gcc
+... -pg' to link.  On SPARC systems, no special startup files are used.
+Rather, the `mcount' routine, when it is invoked for the first time
+(typically when `main' is called), calls `monstartup'.
+
+   If the compiler's `-a' option was used, basic-block counting is also
+enabled.  Each object file is then compiled with a static array of
+counts, initially zero.  In the executable code, every time a new
+basic-block begins (i.e. when an `if' statement appears), an extra
+instruction is inserted to increment the corresponding count in the
+array.  At compile time, a paired array was constructed that recorded
+the starting address of each basic-block.  Taken together, the two
+arrays record the starting address of every basic-block, along with the
+number of times it was executed.
+
+   The profiling library also includes a function (`mcleanup') which is
+typically registered using `atexit()' to be called as the program
+exits, and is responsible for writing the file `gmon.out'.  Profiling
+is turned off, various headers are output, and the histogram is
+written, followed by the call-graph arcs and the basic-block counts.
+
+   The output from `gprof' gives no indication of parts of your program
+that are limited by I/O or swapping bandwidth.  This is because samples
+of the program counter are taken at fixed intervals of the program's
+run time.  Therefore, the time measurements in `gprof' output say
+nothing about time that your program was not running.  For example, a
+part of the program that creates so much data that it cannot all fit in
+physical memory at once may run very slowly due to thrashing, but
+`gprof' will say it uses little time.  On the other hand, sampling by
+run time has the advantage that the amount of load due to other users
+won't directly affect the output you get.
+
+
+File: gprof.info,  Node: File Format,  Next: Internals,  Prev: Implementation,  Up: Details
+
+9.2 Profiling Data File Format
+==============================
+
+The old BSD-derived file format used for profile data does not contain a
+magic cookie that allows to check whether a data file really is a
+`gprof' file.  Furthermore, it does not provide a version number, thus
+rendering changes to the file format almost impossible.  GNU `gprof'
+uses a new file format that provides these features.  For backward
+compatibility, GNU `gprof' continues to support the old BSD-derived
+format, but not all features are supported with it.  For example,
+basic-block execution counts cannot be accommodated by the old file
+format.
+
+   The new file format is defined in header file `gmon_out.h'.  It
+consists of a header containing the magic cookie and a version number,
+as well as some spare bytes available for future extensions.  All data
+in a profile data file is in the native format of the target for which
+the profile was collected.  GNU `gprof' adapts automatically to the
+byte-order in use.
+
+   In the new file format, the header is followed by a sequence of
+records.  Currently, there are three different record types: histogram
+records, call-graph arc records, and basic-block execution count
+records.  Each file can contain any number of each record type.  When
+reading a file, GNU `gprof' will ensure records of the same type are
+compatible with each other and compute the union of all records.  For
+example, for basic-block execution counts, the union is simply the sum
+of all execution counts for each basic-block.
+
+9.2.1 Histogram Records
+-----------------------
+
+Histogram records consist of a header that is followed by an array of
+bins.  The header contains the text-segment range that the histogram
+spans, the size of the histogram in bytes (unlike in the old BSD
+format, this does not include the size of the header), the rate of the
+profiling clock, and the physical dimension that the bin counts
+represent after being scaled by the profiling clock rate.  The physical
+dimension is specified in two parts: a long name of up to 15 characters
+and a single character abbreviation.  For example, a histogram
+representing real-time would specify the long name as "seconds" and the
+abbreviation as "s".  This feature is useful for architectures that
+support performance monitor hardware (which, fortunately, is becoming
+increasingly common).  For example, under DEC OSF/1, the "uprofile"
+command can be used to produce a histogram of, say, instruction cache
+misses.  In this case, the dimension in the histogram header could be
+set to "i-cache misses" and the abbreviation could be set to "1"
+(because it is simply a count, not a physical dimension).  Also, the
+profiling rate would have to be set to 1 in this case.
+
+   Histogram bins are 16-bit numbers and each bin represent an equal
+amount of text-space.  For example, if the text-segment is one thousand
+bytes long and if there are ten bins in the histogram, each bin
+represents one hundred bytes.
+
+9.2.2 Call-Graph Records
+------------------------
+
+Call-graph records have a format that is identical to the one used in
+the BSD-derived file format.  It consists of an arc in the call graph
+and a count indicating the number of times the arc was traversed during
+program execution.  Arcs are specified by a pair of addresses: the
+first must be within caller's function and the second must be within
+the callee's function.  When performing profiling at the function
+level, these addresses can point anywhere within the respective
+function.  However, when profiling at the line-level, it is better if
+the addresses are as close to the call-site/entry-point as possible.
+This will ensure that the line-level call-graph is able to identify
+exactly which line of source code performed calls to a function.
+
+9.2.3 Basic-Block Execution Count Records
+-----------------------------------------
+
+Basic-block execution count records consist of a header followed by a
+sequence of address/count pairs.  The header simply specifies the
+length of the sequence.  In an address/count pair, the address
+identifies a basic-block and the count specifies the number of times
+that basic-block was executed.  Any address within the basic-address can
+be used.
+
+
+File: gprof.info,  Node: Internals,  Next: Debugging,  Prev: File Format,  Up: Details
+
+9.3 `gprof''s Internal Operation
+================================
+
+Like most programs, `gprof' begins by processing its options.  During
+this stage, it may building its symspec list (`sym_ids.c:sym_id_add'),
+if options are specified which use symspecs.  `gprof' maintains a
+single linked list of symspecs, which will eventually get turned into
+12 symbol tables, organized into six include/exclude pairs - one pair
+each for the flat profile (INCL_FLAT/EXCL_FLAT), the call graph arcs
+(INCL_ARCS/EXCL_ARCS), printing in the call graph
+(INCL_GRAPH/EXCL_GRAPH), timing propagation in the call graph
+(INCL_TIME/EXCL_TIME), the annotated source listing
+(INCL_ANNO/EXCL_ANNO), and the execution count listing
+(INCL_EXEC/EXCL_EXEC).
+
+   After option processing, `gprof' finishes building the symspec list
+by adding all the symspecs in `default_excluded_list' to the exclude
+lists EXCL_TIME and EXCL_GRAPH, and if line-by-line profiling is
+specified, EXCL_FLAT as well.  These default excludes are not added to
+EXCL_ANNO, EXCL_ARCS, and EXCL_EXEC.
+
+   Next, the BFD library is called to open the object file, verify that
+it is an object file, and read its symbol table (`core.c:core_init'),
+using `bfd_canonicalize_symtab' after mallocing an appropriately sized
+array of symbols.  At this point, function mappings are read (if the
+`--file-ordering' option has been specified), and the core text space
+is read into memory (if the `-c' option was given).
+
+   `gprof''s own symbol table, an array of Sym structures, is now built.
+This is done in one of two ways, by one of two routines, depending on
+whether line-by-line profiling (`-l' option) has been enabled.  For
+normal profiling, the BFD canonical symbol table is scanned.  For
+line-by-line profiling, every text space address is examined, and a new
+symbol table entry gets created every time the line number changes.  In
+either case, two passes are made through the symbol table - one to
+count the size of the symbol table required, and the other to actually
+read the symbols.  In between the two passes, a single array of type
+`Sym' is created of the appropriate length.  Finally,
+`symtab.c:symtab_finalize' is called to sort the symbol table and
+remove duplicate entries (entries with the same memory address).
+
+   The symbol table must be a contiguous array for two reasons.  First,
+the `qsort' library function (which sorts an array) will be used to
+sort the symbol table.  Also, the symbol lookup routine
+(`symtab.c:sym_lookup'), which finds symbols based on memory address,
+uses a binary search algorithm which requires the symbol table to be a
+sorted array.  Function symbols are indicated with an `is_func' flag.
+Line number symbols have no special flags set.  Additionally, a symbol
+can have an `is_static' flag to indicate that it is a local symbol.
+
+   With the symbol table read, the symspecs can now be translated into
+Syms (`sym_ids.c:sym_id_parse').  Remember that a single symspec can
+match multiple symbols.  An array of symbol tables (`syms') is created,
+each entry of which is a symbol table of Syms to be included or
+excluded from a particular listing.  The master symbol table and the
+symspecs are examined by nested loops, and every symbol that matches a
+symspec is inserted into the appropriate syms table.  This is done
+twice, once to count the size of each required symbol table, and again
+to build the tables, which have been malloced between passes.  From now
+on, to determine whether a symbol is on an include or exclude symspec
+list, `gprof' simply uses its standard symbol lookup routine on the
+appropriate table in the `syms' array.
+
+   Now the profile data file(s) themselves are read
+(`gmon_io.c:gmon_out_read'), first by checking for a new-style
+`gmon.out' header, then assuming this is an old-style BSD `gmon.out' if
+the magic number test failed.
+
+   New-style histogram records are read by `hist.c:hist_read_rec'.  For
+the first histogram record, allocate a memory array to hold all the
+bins, and read them in.  When multiple profile data files (or files
+with multiple histogram records) are read, the starting address, ending
+address, number of bins and sampling rate must match between the
+various histograms, or a fatal error will result.  If everything
+matches, just sum the additional histograms into the existing in-memory
+array.
+
+   As each call graph record is read (`call_graph.c:cg_read_rec'), the
+parent and child addresses are matched to symbol table entries, and a
+call graph arc is created by `cg_arcs.c:arc_add', unless the arc fails
+a symspec check against INCL_ARCS/EXCL_ARCS.  As each arc is added, a
+linked list is maintained of the parent's child arcs, and of the child's
+parent arcs.  Both the child's call count and the arc's call count are
+incremented by the record's call count.
+
+   Basic-block records are read (`basic_blocks.c:bb_read_rec'), but
+only if line-by-line profiling has been selected.  Each basic-block
+address is matched to a corresponding line symbol in the symbol table,
+and an entry made in the symbol's bb_addr and bb_calls arrays.  Again,
+if multiple basic-block records are present for the same address, the
+call counts are cumulative.
+
+   A gmon.sum file is dumped, if requested (`gmon_io.c:gmon_out_write').
+
+   If histograms were present in the data files, assign them to symbols
+(`hist.c:hist_assign_samples') by iterating over all the sample bins
+and assigning them to symbols.  Since the symbol table is sorted in
+order of ascending memory addresses, we can simple follow along in the
+symbol table as we make our pass over the sample bins.  This step
+includes a symspec check against INCL_FLAT/EXCL_FLAT.  Depending on the
+histogram scale factor, a sample bin may span multiple symbols, in
+which case a fraction of the sample count is allocated to each symbol,
+proportional to the degree of overlap.  This effect is rare for normal
+profiling, but overlaps are more common during line-by-line profiling,
+and can cause each of two adjacent lines to be credited with half a
+hit, for example.
+
+   If call graph data is present, `cg_arcs.c:cg_assemble' is called.
+First, if `-c' was specified, a machine-dependent routine (`find_call')
+scans through each symbol's machine code, looking for subroutine call
+instructions, and adding them to the call graph with a zero call count.
+A topological sort is performed by depth-first numbering all the
+symbols (`cg_dfn.c:cg_dfn'), so that children are always numbered less
+than their parents, then making a array of pointers into the symbol
+table and sorting it into numerical order, which is reverse topological
+order (children appear before parents).  Cycles are also detected at
+this point, all members of which are assigned the same topological
+number.  Two passes are now made through this sorted array of symbol
+pointers.  The first pass, from end to beginning (parents to children),
+computes the fraction of child time to propagate to each parent and a
+print flag.  The print flag reflects symspec handling of
+INCL_GRAPH/EXCL_GRAPH, with a parent's include or exclude (print or no
+print) property being propagated to its children, unless they
+themselves explicitly appear in INCL_GRAPH or EXCL_GRAPH.  A second
+pass, from beginning to end (children to parents) actually propagates
+the timings along the call graph, subject to a check against
+INCL_TIME/EXCL_TIME.  With the print flag, fractions, and timings now
+stored in the symbol structures, the topological sort array is now
+discarded, and a new array of pointers is assembled, this time sorted
+by propagated time.
+
+   Finally, print the various outputs the user requested, which is now
+fairly straightforward.  The call graph (`cg_print.c:cg_print') and
+flat profile (`hist.c:hist_print') are regurgitations of values already
+computed.  The annotated source listing
+(`basic_blocks.c:print_annotated_source') uses basic-block information,
+if present, to label each line of code with call counts, otherwise only
+the function call counts are presented.
+
+   The function ordering code is marginally well documented in the
+source code itself (`cg_print.c').  Basically, the functions with the
+most use and the most parents are placed first, followed by other
+functions with the most use, followed by lower use functions, followed
+by unused functions at the end.
+
+
+File: gprof.info,  Node: Debugging,  Prev: Internals,  Up: Details
+
+9.3.1 Debugging `gprof'
+-----------------------
+
+If `gprof' was compiled with debugging enabled, the `-d' option
+triggers debugging output (to stdout) which can be helpful in
+understanding its operation.  The debugging number specified is
+interpreted as a sum of the following options:
+
+2 - Topological sort
+     Monitor depth-first numbering of symbols during call graph analysis
+
+4 - Cycles
+     Shows symbols as they are identified as cycle heads
+
+16 - Tallying
+     As the call graph arcs are read, show each arc and how the total
+     calls to each function are tallied
+
+32 - Call graph arc sorting
+     Details sorting individual parents/children within each call graph
+     entry
+
+64 - Reading histogram and call graph records
+     Shows address ranges of histograms as they are read, and each call
+     graph arc
+
+128 - Symbol table
+     Reading, classifying, and sorting the symbol table from the object
+     file.  For line-by-line profiling (`-l' option), also shows line
+     numbers being assigned to memory addresses.
+
+256 - Static call graph
+     Trace operation of `-c' option
+
+512 - Symbol table and arc table lookups
+     Detail operation of lookup routines
+
+1024 - Call graph propagation
+     Shows how function times are propagated along the call graph
+
+2048 - Basic-blocks
+     Shows basic-block records as they are read from profile data (only
+     meaningful with `-l' option)
+
+4096 - Symspecs
+     Shows symspec-to-symbol pattern matching operation
+
+8192 - Annotate source
+     Tracks operation of `-A' option
+
+
+File: gprof.info,  Node: GNU Free Documentation License,  Prev: Details,  Up: Top
+
+10 GNU Free Documentation License
+*********************************
+
+GNU Free Documentation License
+
+   Version 1.1, March 2000
+
+   Copyright (C) 2000  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.
+
+
+
+Tag Table:
+Node: Top735
+Node: Introduction1974
+Node: Compiling4304
+Node: Executing8522
+Node: Invoking11314
+Node: Output Options12729
+Node: Analysis Options19751
+Node: Miscellaneous Options22953
+Node: Deprecated Options24186
+Node: Symspecs26265
+Node: Output28091
+Node: Flat Profile29117
+Node: Call Graph34047
+Node: Primary37262
+Node: Callers39803
+Node: Subroutines41920
+Node: Cycles43729
+Node: Line-by-line50503
+Node: Annotated Source54237
+Node: Inaccuracy57093
+Node: Sampling Error57351
+Node: Assumptions59921
+Node: How do I?61390
+Node: Incompatibilities63206
+Node: Details64674
+Node: Implementation65067
+Node: File Format70964
+Node: Internals75254
+Node: Debugging83631
+Node: GNU Free Documentation License85236
+
+End Tag Table

Deleted: branches/binutils/package/gprof/po/.cvsignore
===================================================================
--- branches/binutils/package/gprof/po/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/po/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1 +0,0 @@
-*.gmo

Modified: branches/binutils/package/gprof/po/Make-in
===================================================================
--- branches/binutils/package/gprof/po/Make-in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/po/Make-in	2006-12-31 16:27:59 UTC (rev 19)
@@ -186,7 +186,7 @@
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp

Added: branches/binutils/package/gprof/po/da.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/da.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/de.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/de.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/es.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/gprof/po/es.po
===================================================================
--- branches/binutils/package/gprof/po/es.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/gprof/po/es.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,13 +1,13 @@
-# Mensajes en español para gprof 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para gprof 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gprof 2.15.96\n"
+"Project-Id-Version: gprof 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:05+1030\n"
-"PO-Revision-Date: 2005-03-14 17:12-0600\n"
+"POT-Creation-Date: 2005-10-01 07:23+0930\n"
+"PO-Revision-Date: 2006-05-26 13:16-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga at itam.mx>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -44,16 +44,16 @@
 msgstr "%s: aviso: ignorando las cuentas de ejecución de bloques básicos (use -l o --line)\n"
 
 #. FIXME: This only works if bfd_vma is unsigned long.
-#: basic_blocks.c:287 basic_blocks.c:297
+#: basic_blocks.c:289 basic_blocks.c:299
 #, c-format
 msgid "%s:%d: (%s:0x%lx) %lu executions\n"
 msgstr "%s:%d: (%s:0x%lx) %lu ejecuciones\n"
 
-#: basic_blocks.c:288 basic_blocks.c:298
+#: basic_blocks.c:290 basic_blocks.c:300
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: basic_blocks.c:541
+#: basic_blocks.c:543
 #, c-format
 msgid ""
 "\n"
@@ -70,7 +70,7 @@
 "     Línea     Cuenta\n"
 "\n"
 
-#: basic_blocks.c:565
+#: basic_blocks.c:567
 #, c-format
 msgid ""
 "\n"
@@ -81,22 +81,22 @@
 "Resumen de Ejecución:\n"
 "\n"
 
-#: basic_blocks.c:566
+#: basic_blocks.c:568
 #, c-format
 msgid "%9ld   Executable lines in this file\n"
 msgstr "%9ld   Líneas ejecutables en este fichero\n"
 
-#: basic_blocks.c:568
+#: basic_blocks.c:570
 #, c-format
 msgid "%9ld   Lines executed\n"
 msgstr "%9ld   Líneas ejecutadas\n"
 
-#: basic_blocks.c:569
+#: basic_blocks.c:571
 #, c-format
 msgid "%9.2f   Percent of the file executed\n"
 msgstr "%9.2f   Porcentaje ejecutado del fichero\n"
 
-#: basic_blocks.c:573
+#: basic_blocks.c:575
 #, c-format
 msgid ""
 "\n"
@@ -105,7 +105,7 @@
 "\n"
 "%9lu   Número total de ejecuciones de línea\n"
 
-#: basic_blocks.c:575
+#: basic_blocks.c:577
 #, c-format
 msgid "%9.2f   Average executions per line\n"
 msgstr "%9.2f   Ejecuciones promedio por línea\n"
@@ -241,37 +241,37 @@
 msgid "%s: unable to parse mapping file %s.\n"
 msgstr "%s: no se puede decodificar el fichero de mapeo %s.\n"
 
-#: corefile.c:155
+#: corefile.c:158
 #, c-format
 msgid "%s: %s: not in a.out format\n"
 msgstr "%s: %s: no está en el formato a.out\n"
 
-#: corefile.c:166
+#: corefile.c:169
 #, c-format
 msgid "%s: can't find .text section in %s\n"
 msgstr "%s: no se puede encontrar la sección .text en %s\n"
 
-#: corefile.c:224
+#: corefile.c:244
 #, c-format
 msgid "%s: ran out room for %lu bytes of text space\n"
 msgstr "%s: se terminó el espacio para %lu bytes de espacio de texto\n"
 
-#: corefile.c:238
+#: corefile.c:258
 #, c-format
 msgid "%s: can't do -c\n"
 msgstr "%s: no se puede hacer -c\n"
 
-#: corefile.c:272
+#: corefile.c:292
 #, c-format
 msgid "%s: -c not supported on architecture %s\n"
 msgstr "%s: -c no tiene soporte en la arquitectura %s\n"
 
-#: corefile.c:437
+#: corefile.c:457
 #, c-format
 msgid "%s: file `%s' has no symbols\n"
 msgstr "%s: el fichero `%s' no tiene símbolos\n"
 
-#: corefile.c:751
+#: corefile.c:771
 #, c-format
 msgid "%s: somebody miscounted: ltab.len=%d instead of %ld\n"
 msgstr "%s: alguien contó mal: ltab.len=%d en lugar de %ld\n"
@@ -281,94 +281,94 @@
 msgid "%s: address size has unexpected value of %u\n"
 msgstr "%s: el tamaño de la dirección tiene un valor inesperado de %u\n"
 
-#: gmon_io.c:317 gmon_io.c:413
+#: gmon_io.c:320 gmon_io.c:416
 #, c-format
 msgid "%s: file too short to be a gmon file\n"
 msgstr "%s: el fichero es muy corto para ser un fichero gmon\n"
 
-#: gmon_io.c:327 gmon_io.c:456
+#: gmon_io.c:330 gmon_io.c:459
 #, c-format
 msgid "%s: file `%s' has bad magic cookie\n"
 msgstr "%s: el fichero `%s' tiene una galleta mágica errónea\n"
 
-#: gmon_io.c:338
+#: gmon_io.c:341
 #, c-format
 msgid "%s: file `%s' has unsupported version %d\n"
 msgstr "%s: el fichero `%s' tiene la version %d que no tiene soporte\n"
 
-#: gmon_io.c:368
+#: gmon_io.c:371
 #, c-format
 msgid "%s: %s: found bad tag %d (file corrupted?)\n"
 msgstr "%s: %s: se encontró la marca errónea %d (¿fichero corrupto?)\n"
 
-#: gmon_io.c:435
+#: gmon_io.c:438
 #, c-format
 msgid "%s: profiling rate incompatible with first gmon file\n"
 msgstr "%s: tasa de análisis de perfil incompatible con el primer fichero gmon\n"
 
-#: gmon_io.c:483
+#: gmon_io.c:486
 #, c-format
 msgid "%s: incompatible with first gmon file\n"
 msgstr "%s: incompatible con el primer fichero gmon\n"
 
-#: gmon_io.c:511
+#: gmon_io.c:514
 #, c-format
 msgid "%s: file '%s' does not appear to be in gmon.out format\n"
 msgstr "%s: el fichero '%s' no parece estar en el formato gmon.out\n"
 
 # FIXME: comprobar con el código si bins es abreviatura de binarios o
 # se refiere a la denominación inglesa de 'papelera'. cfuga
-#: gmon_io.c:532
+#: gmon_io.c:535
 #, c-format
 msgid "%s: unexpected EOF after reading %d/%d bins\n"
 msgstr "%s: fin de fichero inesperado después de leer %d/%d binarios\n"
 
-#: gmon_io.c:565
+#: gmon_io.c:568
 #, c-format
 msgid "time is in ticks, not seconds\n"
 msgstr "el tiempo está en tics, no en segundos\n"
 
-#: gmon_io.c:571 gmon_io.c:747
+#: gmon_io.c:574 gmon_io.c:750
 #, c-format
 msgid "%s: don't know how to deal with file format %d\n"
 msgstr "%s: se desconoce cómo lidiar con el fichero de formato %d\n"
 
-#: gmon_io.c:578
+#: gmon_io.c:581
 #, c-format
 msgid "File `%s' (version %d) contains:\n"
 msgstr "El fichero `%s' (versión %d) contiene:\n"
 
-#: gmon_io.c:581
+#: gmon_io.c:584
 #, c-format
 msgid "\t%d histogram record\n"
 msgstr "\t%d registro de histograma\n"
 
-#: gmon_io.c:582
+#: gmon_io.c:585
 #, c-format
 msgid "\t%d histogram records\n"
 msgstr "\t%d registros de histogramas\n"
 
-#: gmon_io.c:584
+#: gmon_io.c:587
 #, c-format
 msgid "\t%d call-graph record\n"
 msgstr "\t%d registro de gráfico de llamadas\n"
 
-#: gmon_io.c:585
+#: gmon_io.c:588
 #, c-format
 msgid "\t%d call-graph records\n"
 msgstr "\t%d registros de gráficos de llamadas\n"
 
-#: gmon_io.c:587
+#: gmon_io.c:590
 #, c-format
 msgid "\t%d basic-block count record\n"
 msgstr "\t%d registro de cuenta de bloques básicos\n"
 
-#: gmon_io.c:588
+#: gmon_io.c:591
 #, c-format
 msgid "\t%d basic-block count records\n"
 msgstr "\t%d registros de cuentas de bloques básicos\n"
 
-#: gprof.c:160
+#: gprof.c:158
 #, c-format
 msgid ""
 "Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n"
@@ -399,58 +399,58 @@
 "\t[--demangle[=ESTILO]] [--no-demangle]\n"
 "\t[fichero-imagen] [fichero-perfil...]\n"
 
-#: gprof.c:176
+#: gprof.c:174
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
 
-#: gprof.c:248
+#: gprof.c:250
 #, c-format
 msgid "%s: debugging not supported; -d ignored\n"
 msgstr "%s: no hay soporte para depuración; se ignora -d\n"
 
-#: gprof.c:328
+#: gprof.c:330
 #, c-format
 msgid "%s: unknown file format %s\n"
 msgstr "%s: formato de fichero %s desconocido\n"
 
 #. This output is intended to follow the GNU standards document.
-#: gprof.c:412
+#: gprof.c:414
 #, c-format
 msgid "GNU gprof %s\n"
 msgstr "GNU gprof %s\n"
 
-#: gprof.c:413
+#: gprof.c:415
 #, c-format
 msgid "Based on BSD gprof, copyright 1983 Regents of the University of California.\n"
 msgstr "Basado en gprof de BSD, copyright 1983 Regents of the University of California.\n"
 
-#: gprof.c:414
+#: gprof.c:416
 #, c-format
 msgid "This program is free software.  This program has absolutely no warranty.\n"
 msgstr "Este programa es software libre.  Este programa no tiene ninguna garantía en lo absoluto.\n"
 
-#: gprof.c:455
+#: gprof.c:457
 #, c-format
 msgid "%s: unknown demangling style `%s'\n"
 msgstr "%s: estilo de desenredo desconocido `%s'\n"
 
-#: gprof.c:475
+#: gprof.c:477
 #, c-format
 msgid "%s: Only one of --function-ordering and --file-ordering may be specified.\n"
 msgstr "%s: Sólo se puede especificar uno de --function-ordering y --file-ordering.\n"
 
-#: gprof.c:525
+#: gprof.c:527
 #, c-format
 msgid "%s: sorry, file format `prof' is not yet supported\n"
 msgstr "%s: perdón, el formato de fichero `prof' aún no tiene soporte\n"
 
-#: gprof.c:574
+#: gprof.c:576
 #, c-format
 msgid "%s: gmon.out file is missing histogram\n"
 msgstr "%s: al fichero gmon.out le falta el histograma\n"
 
-#: gprof.c:581
+#: gprof.c:583
 #, c-format
 msgid "%s: gmon.out file is missing call-graph data\n"
 msgstr "%s: al fichero gmon.out le falta los datos del gráfico de llamadas\n"

Added: branches/binutils/package/gprof/po/fr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/fr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/ga.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/ga.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/id.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/id.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/pt_BR.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/pt_BR.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/rw.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/rw.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/sv.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/sv.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/tr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/tr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/gprof/po/vi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/gprof/po/vi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/include/opcode/ChangeLog
===================================================================
--- branches/binutils/package/include/opcode/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/include/opcode/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,7 @@
+2006-05-26  Richard Sandiford  <richard at codesourcery.com>
+
+	* m68k.h (mcf_mask): Define.
+
 2006-04-07  Joerg Wunsch <j.gnu at uriah.heep.sax.de>
 
 	* avr.h (AVR_ISA_PWMx): New.

Modified: branches/binutils/package/include/opcode/m68k.h
===================================================================
--- branches/binutils/package/include/opcode/m68k.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/include/opcode/m68k.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -42,6 +42,7 @@
 #define mcfisa_aa 0x4000	/* ColdFire ISA_A+.  */
 #define mcfisa_b 0x8000		/* ColdFire ISA_B.  */
 #define mcfusp   0x10000	/* ColdFire USP instructions.  */
+#define mcf_mask 0x1f200
 
 /* Handy aliases.  */
 #define	m68040up   (m68040 | m68060)

Modified: branches/binutils/package/ld/ChangeLog
===================================================================
--- branches/binutils/package/ld/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,90 @@
+2006-06-12  Fred Fish  <fnf at specifix.com>
+
+	* emulparams/elf32bmip.sh (OTHER_SECTIONS): Keep the
+	".mdebug.<abi>" and ".gcc_compiled_long<size>" sections
+	generated by mips gcc.
+
+2006-06-09  Alan Modra  <amodra at bigpond.net.au>
+
+	* ldlang.h (lang_input_statement_type): Use bitfields for booleans.
+	* ldlang.c (struct out_section_hash_entry): Rename from
+	output_statement_hash_entry.  Delete output_section_statement_type
+	entry.  Add statement_union_type entry.  Adjust all users.
+	(output_section_statement_table): Rename from output_statement_table.
+	Adjust all users.
+	(output_section_statement_newfunc): Rename from
+	output_statement_newfunc.  Adjust all users.
+	(output_section_statement_table_init): Rename from
+	output_statement_table_init.  Adjust all users.
+	(output_section_statement_table_free): Rename from
+	output_statement_table_free.  Adjust all users.
+
+2006-06-08  Alan Modra  <amodra at bigpond.net.au>
+
+	* emultempl/elf32.em (global_found): Make it a pointer.
+	(stat_needed, try_needed): Adjust.
+	(check_needed): Don't skip non-loaded as-needed entries.  Only
+	consider entries with both filename and the_bfd non-null.
+	(after_open): Try loading non-loaded as-needed libs to satisfy
+	DT_NEEDED libs.
+
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-02  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* Makefile.am (TEXI2DVI): Add -I $(top_srcdir)/../libiberty.
+	* Makefile.in: Regenerate.
+
+2006-05-30  Nick Clifton  <nickc at redhat.com>
+
+	* po/es.po: Updated Spanish translation.
+
+2006-05-24  Nick Clifton  <nickc at redhat.com>
+
+	* po/vi.po: Updated Vietnamese translation.
+
+2006-05-22  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* ld-mips-elf/textrel-1.d: Relax some patterns.
+
+2006-05-22  Nick Clifton  <nickc at redhat.com>
+
+	* scripttempl/elf32crx.sc (.rdata): Add .rodata.*.
+
+2006-05-05  Alan Modra  <amodra at bigpond.net.au>
+
+	* ld.texinfo: Document PowerPC and PowerPC64 options.
+	* gen-doc.texi: Enable.
+	* configdoc.texi: Regenerate.
+	* ld.info: Regenerate.
+
+2006-05-02  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* Makefile.am (AM_MAKEINFOFLAGS): Add libiberty.
+	(TEXI2POD): Use AM_MAKEINFOFLAGS.
+	(configdoc.texi): Don't set top_srcdir.
+	* ld.texinfo: Don't use top_srcdir.
+	* aclocal.m4, Makefile.in: Regenerated.
+
+2006-04-16  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* po/POTFILES.in: Regenerated.
+
+2006-04-16  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* config.in: Regenerated.
+
+2006-04-14  David Heine  <dlheine at tensilica.com>
+	    Bob Wilson  <bob.wilson at acm.org>
+
+	* emultempl/xtensaelf.em (elf_xtensa_before_allocation): Call new
+	function to strip inconsistent linkonce sections.
+	(input_section_linked_worker, input_section_linked): New.
+	(is_inconsistent_linkonce_section): New.
+	(xtensa_strip_inconsistent_linkonce_sections): New.
+
 2006-04-11  Diego Pettenò  <flameeyes at gentoo.org>
 
 	* emultempl/elf32.em: Add support for elf-hints.h on FreeBSD

Modified: branches/binutils/package/ld/Makefile.am
===================================================================
--- branches/binutils/package/ld/Makefile.am	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/Makefile.am	2006-12-31 16:27:59 UTC (rev 19)
@@ -46,7 +46,7 @@
 # Options to extract the man page from ld.texinfo
 MANCONF = -Dman
 
-TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 
 POD2MAN = pod2man --center="GNU Development Tools" \
 	--release="binutils-$(VERSION)" --section=1
@@ -97,8 +97,8 @@
 noinst_TEXINFOS = ldint.texinfo
 man_MANS = ld.1
 
-AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc
-TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc
+AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
+TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
 
 INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) -I$(top_srcdir)/../intl -I../intl $(HDEFINES) $(CFLAGS) -DLOCALEDIR="\"$(datadir)/locale\""
 
@@ -1702,7 +1702,6 @@
 configdoc.texi:	${DOCVER}-doc.texi
 	cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi
 	chmod u+w ./configdoc.texi
-	echo "@set top_srcdir $(top_srcdir)" >> ./configdoc.texi
 
 ldver.texi: $(srcdir)/../bfd/configure
 	rm -f $@

Modified: branches/binutils/package/ld/Makefile.in
===================================================================
--- branches/binutils/package/ld/Makefile.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/Makefile.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -14,8 +14,6 @@
 
 @SET_MAKE@
 
-SOURCES = $(ld_new_SOURCES) $(EXTRA_ld_new_SOURCES)
-
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -282,7 +280,7 @@
 
 # Options to extract the man page from ld.texinfo
 MANCONF = -Dman
-TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl
+TEXI2POD = perl $(BASEDIR)/etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
 POD2MAN = pod2man --center="GNU Development Tools" \
 	--release="binutils-$(VERSION)" --section=1
 
@@ -326,8 +324,8 @@
 info_TEXINFOS = ld.texinfo
 noinst_TEXINFOS = ldint.texinfo
 man_MANS = ld.1
-AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc
-TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc
+AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
+TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
 INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) -I$(top_srcdir)/../intl -I../intl $(HDEFINES) $(CFLAGS) -DLOCALEDIR="\"$(datadir)/locale\""
 BFDLIB = ../bfd/libbfd.la
 LIBIBERTY = ../libiberty/libiberty.a
@@ -801,9 +799,11 @@
 	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	am__cwd=`pwd` && cd $(srcdir) && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
-	for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-	  if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-	done; \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
 	cd "$$am__cwd"; \
 	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
 	 -o $@ $<; \
@@ -813,7 +813,7 @@
 	else \
 	  rc=$$?; \
 	  cd $(srcdir) && \
-	  $$restore $$backupdir/* `echo "$@" | sed 's|[^/]*$$||'`; \
+	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
 	fi; \
 	rm -rf $$backupdir; exit $$rc
 
@@ -845,6 +845,7 @@
 ld.pdf: ld.texinfo 
 ld.html: ld.texinfo 
 .dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	$(DVIPS) -o $@ $<
 
 uninstall-info-am:
@@ -2501,7 +2502,6 @@
 configdoc.texi:	${DOCVER}-doc.texi
 	cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi
 	chmod u+w ./configdoc.texi
-	echo "@set top_srcdir $(top_srcdir)" >> ./configdoc.texi
 
 ldver.texi: $(srcdir)/../bfd/configure
 	rm -f $@

Modified: branches/binutils/package/ld/aclocal.m4
===================================================================
--- branches/binutils/package/ld/aclocal.m4	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/aclocal.m4	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005  Free Software Foundation, Inc.
@@ -28,7 +28,7 @@
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.9.5])])
+	 [AM_AUTOMAKE_VERSION([1.9.6])])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 

Modified: branches/binutils/package/ld/config.in
===================================================================
--- branches/binutils/package/ld/config.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/config.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -54,6 +54,9 @@
    */
 #undef HAVE_DIRENT_H
 
+/* Define to 1 if you have the <elf-hints.h> header file. */
+#undef HAVE_ELF_HINTS_H
+
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 

Added: branches/binutils/package/ld/configdoc.texi
===================================================================
--- branches/binutils/package/ld/configdoc.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/configdoc.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,22 @@
+ at c ------------------------------ CONFIGURATION VARS:
+ at c 1. Inclusiveness of this manual
+ at set GENERIC
+
+ at c 2. Specific target machines
+ at set H8300
+ at set I960
+ at set ARM
+ at set HPPA
+ at set MMIX
+ at set MSP430
+ at set POWERPC
+ at set POWERPC64
+ at set TICOFF
+ at set WIN32
+ at set XTENSA
+
+ at c 3. Properties of this configuration
+ at clear SingleFormat
+ at set UsesEnvVars
+ at c ------------------------------ end CONFIGURATION VARS
+

Modified: branches/binutils/package/ld/emulparams/elf32bmip.sh
===================================================================
--- branches/binutils/package/ld/emulparams/elf32bmip.sh	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/emulparams/elf32bmip.sh	2006-12-31 16:27:59 UTC (rev 19)
@@ -34,6 +34,14 @@
 OTHER_SECTIONS='
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
 '
 ARCH=mips
 MACHINE=

Deleted: branches/binutils/package/ld/emultempl/bfin.em
===================================================================
--- branches/binutils/package/ld/emultempl/bfin.em	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/emultempl/bfin.em	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,174 +0,0 @@
-# This shell script emits a C file. -*- C -*-
-#   Copyright 2000, 2001, 2003 Free Software Foundation, Inc.
-#   Written by Michael Sokolov <msokolov at ivan.Harhan.ORG>, based on armelf.em
-#
-# This file is part of GLD, the Gnu Linker.
-#
-# 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 2 of the License, 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; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# This file is sourced from elf32.em, and defines some extra routines for bfin
-# embedded systems using ELF and for some other systems using bfin ELF.  While
-# it is sourced from elf32.em for all bfin ELF configurations, here we include
-# only the features we want depending on the configuration.
-
-case ${target} in
-  bfin*-*-elf)
-    echo "#define SUPPORT_EMBEDDED_RELOCS" >>e${EMULATION_NAME}.c
-    ;;
-esac
-
-cat >>e${EMULATION_NAME}.c <<EOF
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-static void check_sections (bfd *, asection *, void *);
-#endif
-
-/* This function is run after all the input files have been opened.  */
-
-static void
-bfin_elf_after_open (void)
-{
-  /* Call the standard elf routine.  */
-  gld${EMULATION_NAME}_after_open ();
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-  if (command_line.embedded_relocs
-      && (! link_info.relocatable))
-    {
-      bfd *abfd;
-
-      /* In the embedded relocs mode we create a .emreloc section for each
-	 input file with a nonzero .data section.  The BFD backend will fill in
-	 these sections with magic numbers which can be used to relocate the
-	 data section at run time.  */
-      for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-	{
-	  asection *datasec;
-
-	  /* As first-order business, make sure that each input BFD is either
-	     COFF or ELF.  We need to call a special BFD backend function to
-	     generate the embedded relocs, and we have such functions only for
-	     COFF and ELF.  */
-	  if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
-	      && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-	    einfo ("%F%B: all input objects must be COFF or ELF for --embedded-relocs\n");
-
-	  datasec = bfd_get_section_by_name (abfd, ".data");
-
-	  /* Note that we assume that the reloc_count field has already
-	     been set up.  We could call bfd_get_reloc_upper_bound, but
-	     that returns the size of a memory buffer rather than a reloc
-	     count.  We do not want to call bfd_canonicalize_reloc,
-	     because although it would always work it would force us to
-	     read in the relocs into BFD canonical form, which would waste
-	     a significant amount of time and memory.  */
-	  if (datasec != NULL && datasec->reloc_count > 0)
-	    {
-	      asection *relsec;
-
-	      relsec = bfd_make_section (abfd, ".emreloc");
-	      if (relsec == NULL
-		  || ! bfd_set_section_flags (abfd, relsec,
-					      (SEC_ALLOC
-					       | SEC_LOAD
-					       | SEC_HAS_CONTENTS
-					       | SEC_IN_MEMORY))
-		  || ! bfd_set_section_alignment (abfd, relsec, 2)
-		  || ! bfd_set_section_size (abfd, relsec,
-					     datasec->reloc_count * 12))
-		einfo ("%F%B: can not create .emreloc section: %E\n");
-	    }
-
-	  /* Double check that all other data sections are empty, as is
-	     required for embedded PIC code.  */
-	  bfd_map_over_sections (abfd, check_sections, datasec);
-	}
-    }
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-}
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-/* Check that of the data sections, only the .data section has
-   relocs.  This is called via bfd_map_over_sections.  */
-
-static void
-check_sections (bfd *abfd, asection *sec, void *datasec)
-{
-  if ((bfd_get_section_flags (abfd, sec) & SEC_DATA)
-      && sec != datasec
-      && sec->reloc_count != 0)
-    einfo ("%B%X: section %s has relocs; can not use --embedded-relocs\n",
-	   abfd, bfd_get_section_name (abfd, sec));
-}
-
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-
-/* This function is called after the section sizes and offsets have
-   been set.  */
-
-static void
-bfin_elf_after_allocation (void)
-{
-  /* Call the standard elf routine.  */
-  after_allocation_default ();
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-  if (command_line.embedded_relocs
-      && (! link_info.relocatable))
-    {
-      bfd *abfd;
-
-      /* If we are generating embedded relocs, call a special BFD backend
-	 routine to do the work.  */
-      for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-	{
-	  asection *datasec, *relsec;
-	  char *errmsg;
-
-	  datasec = bfd_get_section_by_name (abfd, ".data");
-
-	  if (datasec == NULL || datasec->reloc_count == 0)
-	    continue;
-
-	  relsec = bfd_get_section_by_name (abfd, ".emreloc");
-	  ASSERT (relsec != NULL);
-
-	  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-	    {
-	      if (! bfd_bfin_elf32_create_embedded_relocs (abfd, &link_info,
-							   datasec, relsec,
-							   &errmsg))
-		{
-		  if (errmsg == NULL)
-		    einfo ("%B%X: can not create runtime reloc information: %E\n",
-			   abfd);
-		  else
-		    einfo ("%X%B: can not create runtime reloc information: %s\n",
-			   abfd, errmsg);
-		}
-	    }
-	  else
-	    abort ();
-	}
-    }
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-}
-
-EOF
-
-# We have our own after_open and after_allocation functions, but they call
-# the standard routines, so give them a different name.
-LDEMUL_AFTER_OPEN=bfin_elf_after_open
-LDEMUL_AFTER_ALLOCATION=bfin_elf_after_allocation

Modified: branches/binutils/package/ld/emultempl/elf32.em
===================================================================
--- branches/binutils/package/ld/emultempl/elf32.em	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/emultempl/elf32.em	2006-12-31 16:27:59 UTC (rev 19)
@@ -148,7 +148,7 @@
 
 static struct bfd_link_needed_list *global_needed;
 static struct stat global_stat;
-static bfd_boolean global_found;
+static lang_input_statement_type *global_found;
 static struct bfd_link_needed_list *global_vercheck_needed;
 static bfd_boolean global_vercheck_failed;
 
@@ -229,12 +229,14 @@
   const char *suffix;
   const char *soname;
 
-  if (global_found)
+  if (global_found != NULL)
     return;
   if (s->the_bfd == NULL)
     return;
-  if (s->as_needed
-      && (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
+
+  /* If this input file was an as-needed entry, and wasn't found to be
+     needed at the stage it was linked, then don't say we have loaded it.  */
+  if ((bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
     return;
 
   if (bfd_stat (s->the_bfd, &st) != 0)
@@ -254,7 +256,7 @@
       && st.st_ino == global_stat.st_ino
       && st.st_ino != 0)
     {
-      global_found = TRUE;
+      global_found = s;
       return;
     }
 
@@ -398,9 +400,9 @@
   if (trace_file_tries)
     info_msg (_("found %s at %s\n"), soname, name);
 
-  global_found = FALSE;
+  global_found = NULL;
   lang_for_each_input_file (gld${EMULATION_NAME}_stat_needed);
-  if (global_found)
+  if (global_found != NULL)
     {
       /* Return TRUE to indicate that we found the file, even though
 	 we aren't going to do anything with it.  */
@@ -569,7 +571,7 @@
 		  if (fread (b, 1, hdr.dirlistlen + 1, f) ==
 		      hdr.dirlistlen + 1)
 		    ld_elf_hints = gld${EMULATION_NAME}_add_sysroot (b);
-		
+
 		  free (b);
 		}
 	    }
@@ -585,7 +587,7 @@
   needed.by = NULL;
   needed.name = name;
   return gld${EMULATION_NAME}_search_needed (ld_elf_hints, & needed,
-			       		     force);
+					     force);
 }
 EOF
     # FreeBSD
@@ -809,49 +811,45 @@
 static void
 gld${EMULATION_NAME}_check_needed (lang_input_statement_type *s)
 {
-  if (global_found)
+  const char *soname;
+
+  /* Stop looking if we've found a loaded lib.  */
+  if (global_found != NULL
+      && (bfd_elf_get_dyn_lib_class (global_found->the_bfd)
+	  & DYN_AS_NEEDED) == 0)
     return;
 
-  /* If this input file was an as-needed entry, and wasn't found to be
-     needed at the stage it was linked, then don't say we have loaded it.  */
-  if (s->as_needed
-      && (s->the_bfd == NULL
-	  || (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0))
+  if (s->filename == NULL || s->the_bfd == NULL)
     return;
 
-  if (s->filename != NULL)
+  /* Don't look for a second non-loaded as-needed lib.  */
+  if (global_found != NULL
+      && (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)
+    return;
+
+  if (strcmp (s->filename, global_needed->name) == 0)
     {
-      const char *f;
+      global_found = s;
+      return;
+    }
 
-      if (strcmp (s->filename, global_needed->name) == 0)
+  if (s->search_dirs_flag)
+    {
+      const char *f = strrchr (s->filename, '/');
+      if (f != NULL
+	  && strcmp (f + 1, global_needed->name) == 0)
 	{
-	  global_found = TRUE;
+	  global_found = s;
 	  return;
 	}
-
-      if (s->search_dirs_flag)
-	{
-	  f = strrchr (s->filename, '/');
-	  if (f != NULL
-	      && strcmp (f + 1, global_needed->name) == 0)
-	    {
-	      global_found = TRUE;
-	      return;
-	    }
-	}
     }
 
-  if (s->the_bfd != NULL)
+  soname = bfd_elf_get_dt_soname (s->the_bfd);
+  if (soname != NULL
+      && strcmp (soname, global_needed->name) == 0)
     {
-      const char *soname;
-
-      soname = bfd_elf_get_dt_soname (s->the_bfd);
-      if (soname != NULL
-	  && strcmp (soname, global_needed->name) == 0)
-	{
-	  global_found = TRUE;
-	  return;
-	}
+      global_found = s;
+      return;
     }
 }
 
@@ -904,9 +902,11 @@
 
       /* See if this file was included in the link explicitly.  */
       global_needed = l;
-      global_found = FALSE;
+      global_found = NULL;
       lang_for_each_input_file (gld${EMULATION_NAME}_check_needed);
-      if (global_found)
+      if (global_found != NULL
+	  && (bfd_elf_get_dyn_lib_class (global_found->the_bfd)
+	      & DYN_AS_NEEDED) == 0)
 	continue;
 
       n.by = l->by;
@@ -915,6 +915,15 @@
       if (trace_file_tries)
 	info_msg (_("%s needed by %B\n"), l->name, l->by);
 
+      /* As-needed libs specified on the command line (or linker script)
+	 take priority over libs found in search dirs.  */
+      if (global_found != NULL)
+	{
+	  nn.name = global_found->filename;
+	  if (gld${EMULATION_NAME}_try_needed (&nn, TRUE))
+	    continue;
+	}
+
       /* We need to find this file and include the symbol table.  We
 	 want to search for the file in the same way that the dynamic
 	 linker will search.  That means that we want to use
@@ -1725,7 +1734,7 @@
 #define OPTION_GROUP			(OPTION_ENABLE_NEW_DTAGS + 1)
 #define OPTION_EH_FRAME_HDR		(OPTION_GROUP + 1)
 #define OPTION_EXCLUDE_LIBS		(OPTION_EH_FRAME_HDR + 1)
-  
+
 static void
 gld${EMULATION_NAME}_add_options
   (int ns, char **shortopts, int nl, struct option **longopts,

Modified: branches/binutils/package/ld/emultempl/xtensaelf.em
===================================================================
--- branches/binutils/package/ld/emultempl/xtensaelf.em	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/emultempl/xtensaelf.em	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,5 @@
 # This shell script emits a C file. -*- C -*-
-#   Copyright 2003, 2004, 2005
+#   Copyright 2003, 2004, 2005, 2006
 #   Free Software Foundation, Inc.
 #
 # This file is part of GLD, the Gnu Linker.
@@ -32,6 +32,8 @@
 
 static void xtensa_wild_group_interleave (lang_statement_union_type *);
 static void xtensa_colocate_output_literals (lang_statement_union_type *);
+static void xtensa_strip_inconsistent_linkonce_sections
+  (lang_statement_list_type *);
 
 
 /* Flag for the emulation-specific "--no-relax" option.  */
@@ -370,6 +372,8 @@
   if (!disable_relaxation)
     command_line.relax = TRUE;
 
+  xtensa_strip_inconsistent_linkonce_sections (stat_ptr);
+
   gld${EMULATION_NAME}_before_allocation ();
 
   xtensa_wild_group_interleave (stat_ptr->head);
@@ -1157,7 +1161,146 @@
 #endif /* EXTRA_VALIDATION */
 
 
+/* Check if a particular section is included in the link.  This will only
+   be true for one instance of a particular linkonce section.  */
+
+static bfd_boolean input_section_found = FALSE;
+static asection *input_section_target = NULL;
+
 static void
+input_section_linked_worker (lang_statement_union_type *statement)
+{
+  if ((statement->header.type == lang_input_section_enum
+       && (statement->input_section.section == input_section_target)))
+    input_section_found = TRUE;
+}
+
+static bfd_boolean
+input_section_linked (asection *sec)
+{
+  input_section_found = FALSE;
+  input_section_target = sec;
+  lang_for_each_statement_worker (input_section_linked_worker, stat_ptr->head);
+  return input_section_found;
+}
+
+
+/* Strip out any linkonce literal sections or property tables where the
+   associated linkonce text is from a different object file.  Normally,
+   a matching set of linkonce sections is taken from the same object file,
+   but sometimes the files are compiled differently so that some of the
+   linkonce sections are not present in all files.  Stripping the
+   inconsistent sections like this is not completely robust -- a much
+   better solution is to use comdat groups.  */
+
+static int linkonce_len = sizeof (".gnu.linkonce.") - 1;
+
+static bfd_boolean
+is_inconsistent_linkonce_section (asection *sec)
+{
+  bfd *abfd = sec->owner;
+  const char *sec_name = bfd_get_section_name (abfd, sec);
+  char *prop_tag = 0;
+
+  if ((bfd_get_section_flags (abfd, sec) & SEC_LINK_ONCE) == 0
+      || strncmp (sec_name, ".gnu.linkonce.", linkonce_len) != 0)
+    return FALSE;
+
+  /* Check if this is an Xtensa property section.  */
+  if (strncmp (sec_name + linkonce_len, "p.", 2) == 0)
+    prop_tag = "p.";
+  else if (strncmp (sec_name + linkonce_len, "prop.", 5) == 0)
+    prop_tag = "prop.";
+  if (prop_tag)
+    {
+      int tag_len = strlen (prop_tag);
+      char *dep_sec_name = xmalloc (strlen (sec_name));
+      asection *dep_sec;
+
+      /* Get the associated linkonce text section and check if it is
+	 included in the link.  If not, this section is inconsistent
+	 and should be stripped.  */
+      strcpy (dep_sec_name, ".gnu.linkonce.");
+      strcat (dep_sec_name, sec_name + linkonce_len + tag_len);
+      dep_sec = bfd_get_section_by_name (abfd, dep_sec_name);
+      if (dep_sec == NULL || ! input_section_linked (dep_sec))
+	{
+	  free (dep_sec_name);
+	  return TRUE;
+	}
+      free (dep_sec_name);
+    }
+
+  return FALSE;
+}
+
+
+static void
+xtensa_strip_inconsistent_linkonce_sections (lang_statement_list_type *slist)
+{
+  lang_statement_union_type **s_p = &slist->head;
+  while (*s_p)
+    {
+      lang_statement_union_type *s = *s_p;
+      lang_statement_union_type *s_next = (*s_p)->header.next;
+
+      switch (s->header.type)
+	{
+	case lang_input_section_enum:
+	  if (is_inconsistent_linkonce_section (s->input_section.section))
+	    {
+	      *s_p = s_next;
+	      continue;
+	    }
+	  break;
+
+	case lang_constructors_statement_enum:
+	  xtensa_strip_inconsistent_linkonce_sections (&constructor_list);
+	  break;
+
+	case lang_output_section_statement_enum:
+	  if (s->output_section_statement.children.head)
+	    xtensa_strip_inconsistent_linkonce_sections
+	      (&s->output_section_statement.children);
+	  break;
+
+	case lang_wild_statement_enum:
+	  xtensa_strip_inconsistent_linkonce_sections
+	    (&s->wild_statement.children);
+	  break;
+
+	case lang_group_statement_enum:
+	  xtensa_strip_inconsistent_linkonce_sections
+	    (&s->group_statement.children);
+	  break;
+
+	case lang_data_statement_enum:
+	case lang_reloc_statement_enum:
+	case lang_object_symbols_statement_enum:
+	case lang_output_statement_enum:
+	case lang_target_statement_enum:
+	case lang_input_statement_enum:
+	case lang_assignment_statement_enum:
+	case lang_padding_statement_enum:
+	case lang_address_statement_enum:
+	case lang_fill_statement_enum:
+	  break;
+
+	default:
+	  FAIL ();
+	  break;
+	}
+
+      s_p = &(*s_p)->header.next;
+    }
+
+  /* Reset the tail of the list, in case the last entry was removed.  */
+  if (s_p != slist->tail)
+    slist->tail = s_p;
+}
+
+
+static void
 xtensa_wild_group_interleave_callback (lang_statement_union_type *statement)
 {
   lang_wild_statement_type *w;

Modified: branches/binutils/package/ld/gen-doc.texi
===================================================================
--- branches/binutils/package/ld/gen-doc.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/gen-doc.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -9,6 +9,8 @@
 @set HPPA
 @set MMIX
 @set MSP430
+ at set POWERPC
+ at set POWERPC64
 @set TICOFF
 @set WIN32
 @set XTENSA

Added: branches/binutils/package/ld/ld.1
===================================================================
--- branches/binutils/package/ld/ld.1	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ld.1	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,2071 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "LD 1"
+.TH LD 1 "2006-06-23" "binutils-2.17" "GNU Development Tools"
+.SH "NAME"
+ld \- Using LD, the GNU linker
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ld [\fBoptions\fR] \fIobjfile\fR ...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBld\fR combines a number of object and archive files, relocates
+their data and ties up symbol references. Usually the last step in
+compiling a program is to run \fBld\fR.
+.PP
+\&\fBld\fR accepts Linker Command Language files written in
+a superset of \s-1AT&T\s0's Link Editor Command Language syntax,
+to provide explicit and total control over the linking process.
+.PP
+This man page does not describe the command language; see the 
+\&\fBld\fR entry in \f(CW\*(C`info\*(C'\fR, or the manual
+ld: the \s-1GNU\s0 linker, for full details on the command language and 
+on other aspects of the \s-1GNU\s0 linker. 
+.PP
+This version of \fBld\fR uses the general purpose \s-1BFD\s0 libraries
+to operate on object files. This allows \fBld\fR to read, combine, and
+write object files in many different formats\-\-\-for example, \s-1COFF\s0 or
+\&\f(CW\*(C`a.out\*(C'\fR.  Different formats may be linked together to produce any
+available kind of object file.  
+.PP
+Aside from its flexibility, the \s-1GNU\s0 linker is more helpful than other
+linkers in providing diagnostic information.  Many linkers abandon
+execution immediately upon encountering an error; whenever possible,
+\&\fBld\fR continues executing, allowing you to identify other errors
+(or, in some cases, to get an output file in spite of the error).
+.PP
+The \s-1GNU\s0 linker \fBld\fR is meant to cover a broad range of situations,
+and to be as compatible as possible with other linkers.  As a result,
+you have many choices to control its behavior.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The linker supports a plethora of command-line options, but in actual
+practice few of them are used in any particular context.
+For instance, a frequent use of \fBld\fR is to link standard Unix
+object files on a standard, supported Unix system.  On such a system, to
+link a file \f(CW\*(C`hello.o\*(C'\fR:
+.PP
+.Vb 1
+\&        ld \-o <output> /lib/crt0.o hello.o \-lc
+.Ve
+.PP
+This tells \fBld\fR to produce a file called \fIoutput\fR as the
+result of linking the file \f(CW\*(C`/lib/crt0.o\*(C'\fR with \f(CW\*(C`hello.o\*(C'\fR and
+the library \f(CW\*(C`libc.a\*(C'\fR, which will come from the standard search
+directories.  (See the discussion of the \fB\-l\fR option below.)
+.PP
+Some of the command-line options to \fBld\fR may be specified at any
+point in the command line.  However, options which refer to files, such
+as \fB\-l\fR or \fB\-T\fR, cause the file to be read at the point at
+which the option appears in the command line, relative to the object
+files and other file options.  Repeating non-file options with a
+different argument will either have no further effect, or override prior
+occurrences (those further to the left on the command line) of that
+option.  Options which may be meaningfully specified more than once are
+noted in the descriptions below.
+.PP
+Non-option arguments are object files or archives which are to be linked
+together.  They may follow, precede, or be mixed in with command-line
+options, except that an object file argument may not be placed between
+an option and its argument.
+.PP
+Usually the linker is invoked with at least one object file, but you can
+specify other forms of binary input files using \fB\-l\fR, \fB\-R\fR,
+and the script command language.  If \fIno\fR binary input files at all
+are specified, the linker does not produce any output, and issues the
+message \fBNo input files\fR.
+.PP
+If the linker cannot recognize the format of an object file, it will
+assume that it is a linker script.  A script specified in this way
+augments the main linker script used for the link (either the default
+linker script or the one specified by using \fB\-T\fR).  This feature
+permits the linker to link against a file which appears to be an object
+or an archive, but actually merely defines some symbol values, or uses
+\&\f(CW\*(C`INPUT\*(C'\fR or \f(CW\*(C`GROUP\*(C'\fR to load other objects.  Note that
+specifying a script in this way merely augments the main linker script;
+use the \fB\-T\fR option to replace the default linker script entirely.
+.PP
+For options whose names are a single letter,
+option arguments must either follow the option letter without intervening
+whitespace, or be given as separate arguments immediately following the
+option that requires them.
+.PP
+For options whose names are multiple letters, either one dash or two can
+precede the option name; for example, \fB\-trace\-symbol\fR and
+\&\fB\-\-trace\-symbol\fR are equivalent.  Note\-\-\-there is one exception to
+this rule.  Multiple letter options that start with a lower case 'o' can
+only be preceeded by two dashes.  This is to reduce confusion with the
+\&\fB\-o\fR option.  So for example \fB\-omagic\fR sets the output file
+name to \fBmagic\fR whereas \fB\-\-omagic\fR sets the \s-1NMAGIC\s0 flag on the
+output.
+.PP
+Arguments to multiple-letter options must either be separated from the
+option name by an equals sign, or be given as separate arguments
+immediately following the option that requires them.  For example,
+\&\fB\-\-trace\-symbol foo\fR and \fB\-\-trace\-symbol=foo\fR are equivalent.
+Unique abbreviations of the names of multiple-letter options are
+accepted.
+.PP
+Note\-\-\-if the linker is being invoked indirectly, via a compiler driver
+(e.g. \fBgcc\fR) then all the linker command line options should be
+prefixed by \fB\-Wl,\fR (or whatever is appropriate for the particular
+compiler driver) like this:
+.PP
+.Vb 1
+\&          gcc \-Wl,\-\-startgroup foo.o bar.o \-Wl,\-\-endgroup
+.Ve
+.PP
+This is important, because otherwise the compiler driver program may
+silently drop the linker options, resulting in a bad link.
+.PP
+Here is a table of the generic command line switches accepted by the \s-1GNU\s0
+linker:
+.IP "\fB@\fR\fIfile\fR" 4
+.IX Item "@file"
+Read command-line options from \fIfile\fR.  The options read are
+inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
+does not exist, or cannot be read, then the option will be treated
+literally, and not removed.  
+.Sp
+Options in \fIfile\fR are separated by whitespace.  A whitespace
+character may be included in an option by surrounding the entire
+option in either single or double quotes.  Any character (including a
+backslash) may be included by prefixing the character to be included
+with a backslash.  The \fIfile\fR may itself contain additional
+@\fIfile\fR options; any such options will be processed recursively.
+.IP "\fB\-a\fR\fIkeyword\fR" 4
+.IX Item "-akeyword"
+This option is supported for \s-1HP/UX\s0 compatibility.  The \fIkeyword\fR
+argument must be one of the strings \fBarchive\fR, \fBshared\fR, or
+\&\fBdefault\fR.  \fB\-aarchive\fR is functionally equivalent to
+\&\fB\-Bstatic\fR, and the other two keywords are functionally equivalent
+to \fB\-Bdynamic\fR.  This option may be used any number of times.
+.IP "\fB\-A\fR\fIarchitecture\fR" 4
+.IX Item "-Aarchitecture"
+.PD 0
+.IP "\fB\-\-architecture=\fR\fIarchitecture\fR" 4
+.IX Item "--architecture=architecture"
+.PD
+In the current release of \fBld\fR, this option is useful only for the
+Intel 960 family of architectures.  In that \fBld\fR configuration, the
+\&\fIarchitecture\fR argument identifies the particular architecture in
+the 960 family, enabling some safeguards and modifying the
+archive-library search path.  
+.Sp
+Future releases of \fBld\fR may support similar functionality for
+other architecture families.
+.IP "\fB\-b\fR \fIinput-format\fR" 4
+.IX Item "-b input-format"
+.PD 0
+.IP "\fB\-\-format=\fR\fIinput-format\fR" 4
+.IX Item "--format=input-format"
+.PD
+\&\fBld\fR may be configured to support more than one kind of object
+file.  If your \fBld\fR is configured this way, you can use the
+\&\fB\-b\fR option to specify the binary format for input object files
+that follow this option on the command line.  Even when \fBld\fR is
+configured to support alternative object formats, you don't usually need
+to specify this, as \fBld\fR should be configured to expect as a
+default input format the most usual format on each machine.
+\&\fIinput-format\fR is a text string, the name of a particular format
+supported by the \s-1BFD\s0 libraries.  (You can list the available binary
+formats with \fBobjdump \-i\fR.)
+.Sp
+You may want to use this option if you are linking files with an unusual
+binary format.  You can also use \fB\-b\fR to switch formats explicitly (when
+linking object files of different formats), by including
+\&\fB\-b\fR \fIinput-format\fR before each group of object files in a
+particular format.
+.Sp
+The default format is taken from the environment variable
+\&\f(CW\*(C`GNUTARGET\*(C'\fR.
+.Sp
+You can also define the input format from a script, using the command
+\&\f(CW\*(C`TARGET\*(C'\fR;
+.IP "\fB\-c\fR \fIMRI-commandfile\fR" 4
+.IX Item "-c MRI-commandfile"
+.PD 0
+.IP "\fB\-\-mri\-script=\fR\fIMRI-commandfile\fR" 4
+.IX Item "--mri-script=MRI-commandfile"
+.PD
+For compatibility with linkers produced by \s-1MRI\s0, \fBld\fR accepts script
+files written in an alternate, restricted command language, described in
+the \s-1MRI\s0 Compatible Script Files section of \s-1GNU\s0 ld documentation.
+Introduce \s-1MRI\s0 script files with
+the option \fB\-c\fR; use the \fB\-T\fR option to run linker
+scripts written in the general-purpose \fBld\fR scripting language.
+If \fIMRI-cmdfile\fR does not exist, \fBld\fR looks for it in the directories
+specified by any \fB\-L\fR options.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-dc\fR" 4
+.IX Item "-dc"
+.IP "\fB\-dp\fR" 4
+.IX Item "-dp"
+.PD
+These three options are equivalent; multiple forms are supported for
+compatibility with other linkers.  They assign space to common symbols
+even if a relocatable output file is specified (with \fB\-r\fR).  The
+script command \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR has the same effect.
+.IP "\fB\-e\fR \fIentry\fR" 4
+.IX Item "-e entry"
+.PD 0
+.IP "\fB\-\-entry=\fR\fIentry\fR" 4
+.IX Item "--entry=entry"
+.PD
+Use \fIentry\fR as the explicit symbol for beginning execution of your
+program, rather than the default entry point.  If there is no symbol
+named \fIentry\fR, the linker will try to parse \fIentry\fR as a number,
+and use that as the entry address (the number will be interpreted in
+base 10; you may use a leading \fB0x\fR for base 16, or a leading
+\&\fB0\fR for base 8).  
+.IP "\fB\-\-exclude\-libs\fR \fIlib\fR\fB,\fR\fIlib\fR\fB,...\fR" 4
+.IX Item "--exclude-libs lib,lib,..."
+Specifies a list of archive libraries from which symbols should not be automatically
+exported. The library names may be delimited by commas or colons.  Specifying
+\&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fR excludes symbols in all archive libraries from
+automatic export.  This option is available only for the i386 \s-1PE\s0 targeted
+port of the linker and for \s-1ELF\s0 targeted ports.  For i386 \s-1PE\s0, symbols
+explicitly listed in a .def file are still exported, regardless of this
+option.  For \s-1ELF\s0 targeted ports, symbols affected by this option will
+be treated as hidden.
+.IP "\fB\-E\fR" 4
+.IX Item "-E"
+.PD 0
+.IP "\fB\-\-export\-dynamic\fR" 4
+.IX Item "--export-dynamic"
+.PD
+When creating a dynamically linked executable, add all symbols to the
+dynamic symbol table.  The dynamic symbol table is the set of symbols
+which are visible from dynamic objects at run time.
+.Sp
+If you do not use this option, the dynamic symbol table will normally
+contain only those symbols which are referenced by some dynamic object
+mentioned in the link.
+.Sp
+If you use \f(CW\*(C`dlopen\*(C'\fR to load a dynamic object which needs to refer
+back to the symbols defined by the program, rather than some other
+dynamic object, then you will probably need to use this option when
+linking the program itself.
+.Sp
+You can also use the version script to control what symbols should
+be added to the dynamic symbol table if the output format supports it.
+See the description of \fB\-\-version\-script\fR in \fB\s-1VERSION\s0\fR.
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+Link big-endian objects.  This affects the default output format.
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+Link little-endian objects.  This affects the default output format.
+.IP "\fB\-f\fR" 4
+.IX Item "-f"
+.PD 0
+.IP "\fB\-\-auxiliary\fR \fIname\fR" 4
+.IX Item "--auxiliary name"
+.PD
+When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_AUXILIARY\s0 field
+to the specified name.  This tells the dynamic linker that the symbol
+table of the shared object should be used as an auxiliary filter on the
+symbol table of the shared object \fIname\fR.
+.Sp
+If you later link a program against this filter object, then, when you
+run the program, the dynamic linker will see the \s-1DT_AUXILIARY\s0 field.  If
+the dynamic linker resolves any symbols from the filter object, it will
+first check whether there is a definition in the shared object
+\&\fIname\fR.  If there is one, it will be used instead of the definition
+in the filter object.  The shared object \fIname\fR need not exist.
+Thus the shared object \fIname\fR may be used to provide an alternative
+implementation of certain functions, perhaps for debugging or for
+machine specific performance.
+.Sp
+This option may be specified more than once.  The \s-1DT_AUXILIARY\s0 entries
+will be created in the order in which they appear on the command line.
+.IP "\fB\-F\fR \fIname\fR" 4
+.IX Item "-F name"
+.PD 0
+.IP "\fB\-\-filter\fR \fIname\fR" 4
+.IX Item "--filter name"
+.PD
+When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_FILTER\s0 field to
+the specified name.  This tells the dynamic linker that the symbol table
+of the shared object which is being created should be used as a filter
+on the symbol table of the shared object \fIname\fR.
+.Sp
+If you later link a program against this filter object, then, when you
+run the program, the dynamic linker will see the \s-1DT_FILTER\s0 field.  The
+dynamic linker will resolve symbols according to the symbol table of the
+filter object as usual, but it will actually link to the definitions
+found in the shared object \fIname\fR.  Thus the filter object can be
+used to select a subset of the symbols provided by the object
+\&\fIname\fR.
+.Sp
+Some older linkers used the \fB\-F\fR option throughout a compilation
+toolchain for specifying object-file format for both input and output
+object files.
+The \s-1GNU\s0 linker uses other mechanisms for this purpose: the
+\&\fB\-b\fR, \fB\-\-format\fR, \fB\-\-oformat\fR options, the 
+\&\f(CW\*(C`TARGET\*(C'\fR command in linker scripts, and the \f(CW\*(C`GNUTARGET\*(C'\fR
+environment variable.
+The \s-1GNU\s0 linker will ignore the \fB\-F\fR option when not
+creating an \s-1ELF\s0 shared object.
+.IP "\fB\-fini\fR \fIname\fR" 4
+.IX Item "-fini name"
+When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
+executable or shared object is unloaded, by setting \s-1DT_FINI\s0 to the
+address of the function.  By default, the linker uses \f(CW\*(C`_fini\*(C'\fR as
+the function to call.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+Ignored.  Provided for compatibility with other tools.
+.IP "\fB\-G\fR\fIvalue\fR" 4
+.IX Item "-Gvalue"
+.PD 0
+.IP "\fB\-\-gpsize=\fR\fIvalue\fR" 4
+.IX Item "--gpsize=value"
+.PD
+Set the maximum size of objects to be optimized using the \s-1GP\s0 register to
+\&\fIsize\fR.  This is only meaningful for object file formats such as
+\&\s-1MIPS\s0 \s-1ECOFF\s0 which supports putting large and small objects into different
+sections.  This is ignored for other object file formats.
+.IP "\fB\-h\fR\fIname\fR" 4
+.IX Item "-hname"
+.PD 0
+.IP "\fB\-soname=\fR\fIname\fR" 4
+.IX Item "-soname=name"
+.PD
+When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_SONAME\s0 field to
+the specified name.  When an executable is linked with a shared object
+which has a \s-1DT_SONAME\s0 field, then when the executable is run the dynamic
+linker will attempt to load the shared object specified by the \s-1DT_SONAME\s0
+field rather than the using the file name given to the linker.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+Perform an incremental link (same as option \fB\-r\fR).
+.IP "\fB\-init\fR \fIname\fR" 4
+.IX Item "-init name"
+When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
+executable or shared object is loaded, by setting \s-1DT_INIT\s0 to the address
+of the function.  By default, the linker uses \f(CW\*(C`_init\*(C'\fR as the
+function to call.
+.IP "\fB\-l\fR\fIarchive\fR" 4
+.IX Item "-larchive"
+.PD 0
+.IP "\fB\-\-library=\fR\fIarchive\fR" 4
+.IX Item "--library=archive"
+.PD
+Add archive file \fIarchive\fR to the list of files to link.  This
+option may be used any number of times.  \fBld\fR will search its
+path-list for occurrences of \f(CW\*(C`lib\f(CIarchive\f(CW.a\*(C'\fR for every
+\&\fIarchive\fR specified.
+.Sp
+On systems which support shared libraries, \fBld\fR may also search for
+libraries with extensions other than \f(CW\*(C`.a\*(C'\fR.  Specifically, on \s-1ELF\s0
+and SunOS systems, \fBld\fR will search a directory for a library with
+an extension of \f(CW\*(C`.so\*(C'\fR before searching for one with an extension of
+\&\f(CW\*(C`.a\*(C'\fR.  By convention, a \f(CW\*(C`.so\*(C'\fR extension indicates a shared
+library.
+.Sp
+The linker will search an archive only once, at the location where it is
+specified on the command line.  If the archive defines a symbol which
+was undefined in some object which appeared before the archive on the
+command line, the linker will include the appropriate file(s) from the
+archive.  However, an undefined symbol in an object appearing later on
+the command line will not cause the linker to search the archive again.
+.Sp
+See the \fB\-(\fR option for a way to force the linker to search
+archives multiple times.
+.Sp
+You may list the same archive multiple times on the command line.
+.Sp
+This type of archive searching is standard for Unix linkers.  However,
+if you are using \fBld\fR on \s-1AIX\s0, note that it is different from the
+behaviour of the \s-1AIX\s0 linker.
+.IP "\fB\-L\fR\fIsearchdir\fR" 4
+.IX Item "-Lsearchdir"
+.PD 0
+.IP "\fB\-\-library\-path=\fR\fIsearchdir\fR" 4
+.IX Item "--library-path=searchdir"
+.PD
+Add path \fIsearchdir\fR to the list of paths that \fBld\fR will search
+for archive libraries and \fBld\fR control scripts.  You may use this
+option any number of times.  The directories are searched in the order
+in which they are specified on the command line.  Directories specified
+on the command line are searched before the default directories.  All
+\&\fB\-L\fR options apply to all \fB\-l\fR options, regardless of the
+order in which the options appear.
+.Sp
+If \fIsearchdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced
+by the \fIsysroot prefix\fR, a path specified when the linker is configured.
+.Sp
+The default set of paths searched (without being specified with
+\&\fB\-L\fR) depends on which emulation mode \fBld\fR is using, and in
+some cases also on how it was configured.  
+.Sp
+The paths can also be specified in a link script with the
+\&\f(CW\*(C`SEARCH_DIR\*(C'\fR command.  Directories specified this way are searched
+at the point in which the linker script appears in the command line.
+.IP "\fB\-m\fR\fIemulation\fR" 4
+.IX Item "-memulation"
+Emulate the \fIemulation\fR linker.  You can list the available
+emulations with the \fB\-\-verbose\fR or \fB\-V\fR options.
+.Sp
+If the \fB\-m\fR option is not used, the emulation is taken from the
+\&\f(CW\*(C`LDEMULATION\*(C'\fR environment variable, if that is defined.
+.Sp
+Otherwise, the default emulation depends upon how the linker was
+configured.
+.IP "\fB\-M\fR" 4
+.IX Item "-M"
+.PD 0
+.IP "\fB\-\-print\-map\fR" 4
+.IX Item "--print-map"
+.PD
+Print a link map to the standard output.  A link map provides
+information about the link, including the following:
+.RS 4
+.IP "*" 4
+Where object files are mapped into memory.
+.IP "*" 4
+How common symbols are allocated.
+.IP "*" 4
+All archive members included in the link, with a mention of the symbol
+which caused the archive member to be brought in.
+.IP "*" 4
+The values assigned to symbols.
+.Sp
+Note \- symbols whose values are computed by an expression which
+involves a reference to a previous value of the same symbol may not
+have correct result displayed in the link map.  This is because the
+linker discards intermediate results and only retains the final value
+of an expression.  Under such circumstances the linker will display
+the final value enclosed by square brackets.  Thus for example a
+linker script containing:
+.Sp
+.Vb 3
+\&           foo = 1
+\&           foo = foo * 4
+\&           foo = foo + 8
+.Ve
+.Sp
+will produce the following output in the link map if the \fB\-M\fR
+option is used:
+.Sp
+.Vb 3
+\&           0x00000001                foo = 0x1
+\&           [0x0000000c]                foo = (foo * 0x4)
+\&           [0x0000000c]                foo = (foo + 0x8)
+.Ve
+.Sp
+See \fBExpressions\fR for more information about expressions in linker
+scripts.
+.RE
+.RS 4
+.RE
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-nmagic\fR" 4
+.IX Item "--nmagic"
+.PD
+Turn off page alignment of sections, and mark the output as
+\&\f(CW\*(C`NMAGIC\*(C'\fR if possible.
+.IP "\fB\-N\fR" 4
+.IX Item "-N"
+.PD 0
+.IP "\fB\-\-omagic\fR" 4
+.IX Item "--omagic"
+.PD
+Set the text and data sections to be readable and writable.  Also, do
+not page-align the data segment, and disable linking against shared
+libraries.  If the output format supports Unix style magic numbers,
+mark the output as \f(CW\*(C`OMAGIC\*(C'\fR. Note: Although a writable text section
+is allowed for PE-COFF targets, it does not conform to the format
+specification published by Microsoft.
+.IP "\fB\-\-no\-omagic\fR" 4
+.IX Item "--no-omagic"
+This option negates most of the effects of the \fB\-N\fR option.  It
+sets the text section to be read\-only, and forces the data segment to
+be page\-aligned.  Note \- this option does not enable linking against
+shared libraries.  Use \fB\-Bdynamic\fR for this.
+.IP "\fB\-o\fR \fIoutput\fR" 4
+.IX Item "-o output"
+.PD 0
+.IP "\fB\-\-output=\fR\fIoutput\fR" 4
+.IX Item "--output=output"
+.PD
+Use \fIoutput\fR as the name for the program produced by \fBld\fR; if this
+option is not specified, the name \fIa.out\fR is used by default.  The
+script command \f(CW\*(C`OUTPUT\*(C'\fR can also specify the output file name.
+.IP "\fB\-O\fR \fIlevel\fR" 4
+.IX Item "-O level"
+If \fIlevel\fR is a numeric values greater than zero \fBld\fR optimizes
+the output.  This might take significantly longer and therefore probably
+should only be enabled for the final binary.
+.IP "\fB\-q\fR" 4
+.IX Item "-q"
+.PD 0
+.IP "\fB\-\-emit\-relocs\fR" 4
+.IX Item "--emit-relocs"
+.PD
+Leave relocation sections and contents in fully linked exececutables.
+Post link analysis and optimization tools may need this information in
+order to perform correct modifications of executables.  This results
+in larger executables.
+.Sp
+This option is currently only supported on \s-1ELF\s0 platforms.
+.IP "\fB\-\-force\-dynamic\fR" 4
+.IX Item "--force-dynamic"
+Force the output file to have dynamic sections.  This option is specific
+to VxWorks targets.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.IP "\fB\-\-relocatable\fR" 4
+.IX Item "--relocatable"
+.PD
+Generate relocatable output\-\-\-i.e., generate an output file that can in
+turn serve as input to \fBld\fR.  This is often called \fIpartial
+linking\fR.  As a side effect, in environments that support standard Unix
+magic numbers, this option also sets the output file's magic number to
+\&\f(CW\*(C`OMAGIC\*(C'\fR.
+If this option is not specified, an absolute file is produced.  When
+linking \*(C+ programs, this option \fIwill not\fR resolve references to
+constructors; to do that, use \fB\-Ur\fR.
+.Sp
+When an input file does not have the same format as the output file,
+partial linking is only supported if that input file does not contain any
+relocations.  Different output formats can have further restrictions; for
+example some \f(CW\*(C`a.out\*(C'\fR\-based formats do not support partial linking
+with input files in other formats at all.
+.Sp
+This option does the same thing as \fB\-i\fR.
+.IP "\fB\-R\fR \fIfilename\fR" 4
+.IX Item "-R filename"
+.PD 0
+.IP "\fB\-\-just\-symbols=\fR\fIfilename\fR" 4
+.IX Item "--just-symbols=filename"
+.PD
+Read symbol names and their addresses from \fIfilename\fR, but do not
+relocate it or include it in the output.  This allows your output file
+to refer symbolically to absolute locations of memory defined in other
+programs.  You may use this option more than once.
+.Sp
+For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is
+followed by a directory name, rather than a file name, it is treated as
+the \fB\-rpath\fR option.
+.IP "\fB\-s\fR" 4
+.IX Item "-s"
+.PD 0
+.IP "\fB\-\-strip\-all\fR" 4
+.IX Item "--strip-all"
+.PD
+Omit all symbol information from the output file.
+.IP "\fB\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-strip\-debug\fR" 4
+.IX Item "--strip-debug"
+.PD
+Omit debugger symbol information (but not all symbols) from the output file.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+.PD 0
+.IP "\fB\-\-trace\fR" 4
+.IX Item "--trace"
+.PD
+Print the names of the input files as \fBld\fR processes them.
+.IP "\fB\-T\fR \fIscriptfile\fR" 4
+.IX Item "-T scriptfile"
+.PD 0
+.IP "\fB\-\-script=\fR\fIscriptfile\fR" 4
+.IX Item "--script=scriptfile"
+.PD
+Use \fIscriptfile\fR as the linker script.  This script replaces
+\&\fBld\fR's default linker script (rather than adding to it), so
+\&\fIcommandfile\fR must specify everything necessary to describe the
+output file.    If \fIscriptfile\fR does not exist in
+the current directory, \f(CW\*(C`ld\*(C'\fR looks for it in the directories
+specified by any preceding \fB\-L\fR options.  Multiple \fB\-T\fR
+options accumulate.
+.IP "\fB\-u\fR \fIsymbol\fR" 4
+.IX Item "-u symbol"
+.PD 0
+.IP "\fB\-\-undefined=\fR\fIsymbol\fR" 4
+.IX Item "--undefined=symbol"
+.PD
+Force \fIsymbol\fR to be entered in the output file as an undefined
+symbol.  Doing this may, for example, trigger linking of additional
+modules from standard libraries.  \fB\-u\fR may be repeated with
+different option arguments to enter additional undefined symbols.  This
+option is equivalent to the \f(CW\*(C`EXTERN\*(C'\fR linker script command.
+.IP "\fB\-Ur\fR" 4
+.IX Item "-Ur"
+For anything other than \*(C+ programs, this option is equivalent to
+\&\fB\-r\fR: it generates relocatable output\-\-\-i.e., an output file that can in
+turn serve as input to \fBld\fR.  When linking \*(C+ programs, \fB\-Ur\fR
+\&\fIdoes\fR resolve references to constructors, unlike \fB\-r\fR.
+It does not work to use \fB\-Ur\fR on files that were themselves linked
+with \fB\-Ur\fR; once the constructor table has been built, it cannot
+be added to.  Use \fB\-Ur\fR only for the last partial link, and
+\&\fB\-r\fR for the others.
+.IP "\fB\-\-unique[=\fR\fI\s-1SECTION\s0\fR\fB]\fR" 4
+.IX Item "--unique[=SECTION]"
+Creates a separate output section for every input section matching
+\&\fI\s-1SECTION\s0\fR, or if the optional wildcard \fI\s-1SECTION\s0\fR argument is
+missing, for every orphan input section.  An orphan section is one not
+specifically mentioned in a linker script.  You may use this option
+multiple times on the command line;  It prevents the normal merging of
+input sections with the same name, overriding output section assignments
+in a linker script.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD
+Display the version number for \fBld\fR.  The \fB\-V\fR option also
+lists the supported emulations.
+.IP "\fB\-x\fR" 4
+.IX Item "-x"
+.PD 0
+.IP "\fB\-\-discard\-all\fR" 4
+.IX Item "--discard-all"
+.PD
+Delete all local symbols.
+.IP "\fB\-X\fR" 4
+.IX Item "-X"
+.PD 0
+.IP "\fB\-\-discard\-locals\fR" 4
+.IX Item "--discard-locals"
+.PD
+Delete all temporary local symbols.  For most targets, this is all local
+symbols whose names begin with \fBL\fR.
+.IP "\fB\-y\fR \fIsymbol\fR" 4
+.IX Item "-y symbol"
+.PD 0
+.IP "\fB\-\-trace\-symbol=\fR\fIsymbol\fR" 4
+.IX Item "--trace-symbol=symbol"
+.PD
+Print the name of each linked file in which \fIsymbol\fR appears.  This
+option may be given any number of times.  On many systems it is necessary
+to prepend an underscore.
+.Sp
+This option is useful when you have an undefined symbol in your link but
+don't know where the reference is coming from.
+.IP "\fB\-Y\fR \fIpath\fR" 4
+.IX Item "-Y path"
+Add \fIpath\fR to the default library search path.  This option exists
+for Solaris compatibility.
+.IP "\fB\-z\fR \fIkeyword\fR" 4
+.IX Item "-z keyword"
+The recognized keywords are:
+.RS 4
+.IP "\fBcombreloc\fR" 4
+.IX Item "combreloc"
+Combines multiple reloc sections and sorts them to make dynamic symbol
+lookup caching possible.
+.IP "\fBdefs\fR" 4
+.IX Item "defs"
+Disallows undefined symbols in object files.  Undefined symbols in
+shared libraries are still allowed.
+.IP "\fBexecstack\fR" 4
+.IX Item "execstack"
+Marks the object as requiring executable stack.
+.IP "\fBinitfirst\fR" 4
+.IX Item "initfirst"
+This option is only meaningful when building a shared object.
+It marks the object so that its runtime initialization will occur
+before the runtime initialization of any other objects brought into
+the process at the same time.  Similarly the runtime finalization of
+the object will occur after the runtime finalization of any other
+objects.
+.IP "\fBinterpose\fR" 4
+.IX Item "interpose"
+Marks the object that its symbol table interposes before all symbols
+but the primary executable.
+.IP "\fBloadfltr\fR" 4
+.IX Item "loadfltr"
+Marks  the object that its filters be processed immediately at
+runtime.
+.IP "\fBmuldefs\fR" 4
+.IX Item "muldefs"
+Allows multiple definitions.
+.IP "\fBnocombreloc\fR" 4
+.IX Item "nocombreloc"
+Disables multiple reloc sections combining.
+.IP "\fBnocopyreloc\fR" 4
+.IX Item "nocopyreloc"
+Disables production of copy relocs.
+.IP "\fBnodefaultlib\fR" 4
+.IX Item "nodefaultlib"
+Marks the object that the search for dependencies of this object will
+ignore any default library search paths.
+.IP "\fBnodelete\fR" 4
+.IX Item "nodelete"
+Marks the object shouldn't be unloaded at runtime.
+.IP "\fBnodlopen\fR" 4
+.IX Item "nodlopen"
+Marks the object not available to \f(CW\*(C`dlopen\*(C'\fR.
+.IP "\fBnodump\fR" 4
+.IX Item "nodump"
+Marks the object can not be dumped by \f(CW\*(C`dldump\*(C'\fR.
+.IP "\fBnoexecstack\fR" 4
+.IX Item "noexecstack"
+Marks the object as not requiring executable stack.
+.IP "\fBnorelro\fR" 4
+.IX Item "norelro"
+Don't create an \s-1ELF\s0 \f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
+.IP "\fBnow\fR" 4
+.IX Item "now"
+When generating an executable or shared library, mark it to tell the
+dynamic linker to resolve all symbols when the program is started, or
+when the shared library is linked to using dlopen, instead of
+deferring function call resolution to the point when the function is
+first called.
+.IP "\fBorigin\fR" 4
+.IX Item "origin"
+Marks the object may contain \f(CW$ORIGIN\fR.
+.IP "\fBrelro\fR" 4
+.IX Item "relro"
+Create an \s-1ELF\s0 \f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
+.RE
+.RS 4
+.Sp
+Other keywords are ignored for Solaris compatibility.  
+.RE
+.IP "\fB\-(\fR \fIarchives\fR \fB\-)\fR" 4
+.IX Item "-( archives -)"
+.PD 0
+.IP "\fB\-\-start\-group\fR \fIarchives\fR \fB\-\-end\-group\fR" 4
+.IX Item "--start-group archives --end-group"
+.PD
+The \fIarchives\fR should be a list of archive files.  They may be
+either explicit file names, or \fB\-l\fR options.
+.Sp
+The specified archives are searched repeatedly until no new undefined
+references are created.  Normally, an archive is searched only once in
+the order that it is specified on the command line.  If a symbol in that
+archive is needed to resolve an undefined symbol referred to by an
+object in an archive that appears later on the command line, the linker
+would not be able to resolve that reference.  By grouping the archives,
+they all be searched repeatedly until all possible references are
+resolved.
+.Sp
+Using this option has a significant performance cost.  It is best to use
+it only when there are unavoidable circular references between two or
+more archives.
+.IP "\fB\-\-accept\-unknown\-input\-arch\fR" 4
+.IX Item "--accept-unknown-input-arch"
+.PD 0
+.IP "\fB\-\-no\-accept\-unknown\-input\-arch\fR" 4
+.IX Item "--no-accept-unknown-input-arch"
+.PD
+Tells the linker to accept input files whose architecture cannot be
+recognised.  The assumption is that the user knows what they are doing
+and deliberately wants to link in these unknown input files.  This was
+the default behaviour of the linker, before release 2.14.  The default
+behaviour from release 2.14 onwards is to reject such input files, and
+so the \fB\-\-accept\-unknown\-input\-arch\fR option has been added to
+restore the old behaviour.
+.IP "\fB\-\-as\-needed\fR" 4
+.IX Item "--as-needed"
+.PD 0
+.IP "\fB\-\-no\-as\-needed\fR" 4
+.IX Item "--no-as-needed"
+.PD
+This option affects \s-1ELF\s0 \s-1DT_NEEDED\s0 tags for dynamic libraries mentioned
+on the command line after the \fB\-\-as\-needed\fR option.  Normally,
+the linker will add a \s-1DT_NEEDED\s0 tag for each dynamic library mentioned
+on the command line, regardless of whether the library is actually
+needed.  \fB\-\-as\-needed\fR causes \s-1DT_NEEDED\s0 tags to only be emitted
+for libraries that satisfy some symbol reference from regular objects
+which is undefined at the point that the library was linked.
+\&\fB\-\-no\-as\-needed\fR restores the default behaviour.
+.IP "\fB\-\-add\-needed\fR" 4
+.IX Item "--add-needed"
+.PD 0
+.IP "\fB\-\-no\-add\-needed\fR" 4
+.IX Item "--no-add-needed"
+.PD
+This option affects the treatment of dynamic libraries from \s-1ELF\s0
+\&\s-1DT_NEEDED\s0 tags in dynamic libraries mentioned on the command line after
+the \fB\-\-no\-add\-needed\fR option.  Normally, the linker will add
+a \s-1DT_NEEDED\s0 tag for each dynamic library from \s-1DT_NEEDED\s0 tags.
+\&\fB\-\-no\-add\-needed\fR causes \s-1DT_NEEDED\s0 tags will never be emitted
+for those libraries from \s-1DT_NEEDED\s0 tags. \fB\-\-add\-needed\fR restores
+the default behaviour.
+.IP "\fB\-assert\fR \fIkeyword\fR" 4
+.IX Item "-assert keyword"
+This option is ignored for SunOS compatibility.
+.IP "\fB\-Bdynamic\fR" 4
+.IX Item "-Bdynamic"
+.PD 0
+.IP "\fB\-dy\fR" 4
+.IX Item "-dy"
+.IP "\fB\-call_shared\fR" 4
+.IX Item "-call_shared"
+.PD
+Link against dynamic libraries.  This is only meaningful on platforms
+for which shared libraries are supported.  This option is normally the
+default on such platforms.  The different variants of this option are
+for compatibility with various systems.  You may use this option
+multiple times on the command line: it affects library searching for
+\&\fB\-l\fR options which follow it.
+.IP "\fB\-Bgroup\fR" 4
+.IX Item "-Bgroup"
+Set the \f(CW\*(C`DF_1_GROUP\*(C'\fR flag in the \f(CW\*(C`DT_FLAGS_1\*(C'\fR entry in the dynamic
+section.  This causes the runtime linker to handle lookups in this
+object and its dependencies to be performed only inside the group.
+\&\fB\-\-unresolved\-symbols=report\-all\fR is implied.  This option is
+only meaningful on \s-1ELF\s0 platforms which support shared libraries.
+.IP "\fB\-Bstatic\fR" 4
+.IX Item "-Bstatic"
+.PD 0
+.IP "\fB\-dn\fR" 4
+.IX Item "-dn"
+.IP "\fB\-non_shared\fR" 4
+.IX Item "-non_shared"
+.IP "\fB\-static\fR" 4
+.IX Item "-static"
+.PD
+Do not link against shared libraries.  This is only meaningful on
+platforms for which shared libraries are supported.  The different
+variants of this option are for compatibility with various systems.  You
+may use this option multiple times on the command line: it affects
+library searching for \fB\-l\fR options which follow it.  This
+option also implies \fB\-\-unresolved\-symbols=report\-all\fR.  This
+option can be used with \fB\-shared\fR.  Doing so means that a
+shared library is being created but that all of the library's external
+references must be resolved by pulling in entries from static
+libraries. 
+.IP "\fB\-Bsymbolic\fR" 4
+.IX Item "-Bsymbolic"
+When creating a shared library, bind references to global symbols to the
+definition within the shared library, if any.  Normally, it is possible
+for a program linked against a shared library to override the definition
+within the shared library.  This option is only meaningful on \s-1ELF\s0
+platforms which support shared libraries.
+.IP "\fB\-\-check\-sections\fR" 4
+.IX Item "--check-sections"
+.PD 0
+.IP "\fB\-\-no\-check\-sections\fR" 4
+.IX Item "--no-check-sections"
+.PD
+Asks the linker \fInot\fR to check section addresses after they have
+been assigned to see if there are any overlaps.  Normally the linker will
+perform this check, and if it finds any overlaps it will produce
+suitable error messages.  The linker does know about, and does make
+allowances for sections in overlays.  The default behaviour can be
+restored by using the command line switch \fB\-\-check\-sections\fR.
+.IP "\fB\-\-cref\fR" 4
+.IX Item "--cref"
+Output a cross reference table.  If a linker map file is being
+generated, the cross reference table is printed to the map file.
+Otherwise, it is printed on the standard output.
+.Sp
+The format of the table is intentionally simple, so that it may be
+easily processed by a script if necessary.  The symbols are printed out,
+sorted by name.  For each symbol, a list of file names is given.  If the
+symbol is defined, the first file listed is the location of the
+definition.  The remaining files contain references to the symbol.
+.IP "\fB\-\-no\-define\-common\fR" 4
+.IX Item "--no-define-common"
+This option inhibits the assignment of addresses to common symbols.
+The script command \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fR has the same effect.
+.Sp
+The \fB\-\-no\-define\-common\fR option allows decoupling
+the decision to assign addresses to Common symbols from the choice
+of the output file type; otherwise a non-Relocatable output type
+forces assigning addresses to Common symbols.
+Using \fB\-\-no\-define\-common\fR allows Common symbols that are referenced
+from a shared library to be assigned addresses only in the main program.
+This eliminates the unused duplicate space in the shared library,
+and also prevents any possible confusion over resolving to the wrong
+duplicate when there are many dynamic modules with specialized search
+paths for runtime symbol resolution.
+.IP "\fB\-\-defsym\fR \fIsymbol\fR\fB=\fR\fIexpression\fR" 4
+.IX Item "--defsym symbol=expression"
+Create a global symbol in the output file, containing the absolute
+address given by \fIexpression\fR.  You may use this option as many
+times as necessary to define multiple symbols in the command line.  A
+limited form of arithmetic is supported for the \fIexpression\fR in this
+context: you may give a hexadecimal constant or the name of an existing
+symbol, or use \f(CW\*(C`+\*(C'\fR and \f(CW\*(C`\-\*(C'\fR to add or subtract hexadecimal
+constants or symbols.  If you need more elaborate expressions, consider
+using the linker command language from a script.  \fINote:\fR there should be no white
+space between \fIsymbol\fR, the equals sign ("\fB=\fR"), and
+\&\fIexpression\fR.
+.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
+.IX Item "--demangle[=style]"
+.PD 0
+.IP "\fB\-\-no\-demangle\fR" 4
+.IX Item "--no-demangle"
+.PD
+These options control whether to demangle symbol names in error messages
+and other output.  When the linker is told to demangle, it tries to
+present symbol names in a readable fashion: it strips leading
+underscores if they are used by the object file format, and converts \*(C+
+mangled symbol names into user readable names.  Different compilers have
+different mangling styles.  The optional demangling style argument can be used
+to choose an appropriate demangling style for your compiler.  The linker will
+demangle by default unless the environment variable \fB\s-1COLLECT_NO_DEMANGLE\s0\fR
+is set.  These options may be used to override the default.
+.IP "\fB\-\-dynamic\-linker\fR \fIfile\fR" 4
+.IX Item "--dynamic-linker file"
+Set the name of the dynamic linker.  This is only meaningful when
+generating dynamically linked \s-1ELF\s0 executables.  The default dynamic
+linker is normally correct; don't use this unless you know what you are
+doing.
+.IP "\fB\-\-fatal\-warnings\fR" 4
+.IX Item "--fatal-warnings"
+Treat all warnings as errors.
+.IP "\fB\-\-force\-exe\-suffix\fR" 4
+.IX Item "--force-exe-suffix"
+Make sure that an output file has a .exe suffix.
+.Sp
+If a successfully built fully linked output file does not have a
+\&\f(CW\*(C`.exe\*(C'\fR or \f(CW\*(C`.dll\*(C'\fR suffix, this option forces the linker to copy
+the output file to one of the same name with a \f(CW\*(C`.exe\*(C'\fR suffix. This
+option is useful when using unmodified Unix makefiles on a Microsoft
+Windows host, since some versions of Windows won't run an image unless
+it ends in a \f(CW\*(C`.exe\*(C'\fR suffix.
+.IP "\fB\-\-no\-gc\-sections\fR" 4
+.IX Item "--no-gc-sections"
+.PD 0
+.IP "\fB\-\-gc\-sections\fR" 4
+.IX Item "--gc-sections"
+.PD
+Enable garbage collection of unused input sections.  It is ignored on
+targets that do not support this option.  This option is not compatible
+with \fB\-r\fR. The default behaviour (of not performing this garbage
+collection) can be restored by specifying \fB\-\-no\-gc\-sections\fR on
+the command line.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Print a summary of the command-line options on the standard output and exit.
+.IP "\fB\-\-target\-help\fR" 4
+.IX Item "--target-help"
+Print a summary of all target specific options on the standard output and exit.
+.IP "\fB\-Map\fR \fImapfile\fR" 4
+.IX Item "-Map mapfile"
+Print a link map to the file \fImapfile\fR.  See the description of the
+\&\fB\-M\fR option, above.
+.IP "\fB\-\-no\-keep\-memory\fR" 4
+.IX Item "--no-keep-memory"
+\&\fBld\fR normally optimizes for speed over memory usage by caching the
+symbol tables of input files in memory.  This option tells \fBld\fR to
+instead optimize for memory usage, by rereading the symbol tables as
+necessary.  This may be required if \fBld\fR runs out of memory space
+while linking a large executable.
+.IP "\fB\-\-no\-undefined\fR" 4
+.IX Item "--no-undefined"
+.PD 0
+.IP "\fB\-z defs\fR" 4
+.IX Item "-z defs"
+.PD
+Report unresolved symbol references from regular object files.  This
+is done even if the linker is creating a non-symbolic shared library.
+The switch \fB\-\-[no\-]allow\-shlib\-undefined\fR controls the
+behaviour for reporting unresolved references found in shared
+libraries being linked in.  
+.IP "\fB\-\-allow\-multiple\-definition\fR" 4
+.IX Item "--allow-multiple-definition"
+.PD 0
+.IP "\fB\-z muldefs\fR" 4
+.IX Item "-z muldefs"
+.PD
+Normally when a symbol is defined multiple times, the linker will
+report a fatal error. These options allow multiple definitions and the
+first definition will be used.
+.IP "\fB\-\-allow\-shlib\-undefined\fR" 4
+.IX Item "--allow-shlib-undefined"
+.PD 0
+.IP "\fB\-\-no\-allow\-shlib\-undefined\fR" 4
+.IX Item "--no-allow-shlib-undefined"
+.PD
+Allows (the default) or disallows undefined symbols in shared libraries.
+This switch is similar to \fB\-\-no\-undefined\fR except that it
+determines the behaviour when the undefined symbols are in a
+shared library rather than a regular object file.  It does not affect
+how undefined symbols in regular object files are handled.
+.Sp
+The reason that \fB\-\-allow\-shlib\-undefined\fR is the default is that
+the shared library being specified at link time may not be the same as
+the one that is available at load time, so the symbols might actually be
+resolvable at load time.  Plus there are some systems, (eg BeOS) where
+undefined symbols in shared libraries is normal.  (The kernel patches
+them at load time to select which function is most appropriate 
+for the current architecture.  This is used for example to dynamically
+select an appropriate memset function).  Apparently it is also normal
+for \s-1HPPA\s0 shared libraries to have undefined symbols.
+.IP "\fB\-\-no\-undefined\-version\fR" 4
+.IX Item "--no-undefined-version"
+Normally when a symbol has an undefined version, the linker will ignore
+it. This option disallows symbols with undefined version and a fatal error
+will be issued instead.
+.IP "\fB\-\-default\-symver\fR" 4
+.IX Item "--default-symver"
+Create and use a default symbol version (the soname) for unversioned
+exported symbols.
+.IP "\fB\-\-default\-imported\-symver\fR" 4
+.IX Item "--default-imported-symver"
+Create and use a default symbol version (the soname) for unversioned
+imported symbols.
+.IP "\fB\-\-no\-warn\-mismatch\fR" 4
+.IX Item "--no-warn-mismatch"
+Normally \fBld\fR will give an error if you try to link together input
+files that are mismatched for some reason, perhaps because they have
+been compiled for different processors or for different endiannesses.
+This option tells \fBld\fR that it should silently permit such possible
+errors.  This option should only be used with care, in cases when you
+have taken some special action that ensures that the linker errors are
+inappropriate.
+.IP "\fB\-\-no\-whole\-archive\fR" 4
+.IX Item "--no-whole-archive"
+Turn off the effect of the \fB\-\-whole\-archive\fR option for subsequent
+archive files.
+.IP "\fB\-\-noinhibit\-exec\fR" 4
+.IX Item "--noinhibit-exec"
+Retain the executable output file whenever it is still usable.
+Normally, the linker will not produce an output file if it encounters
+errors during the link process; it exits without writing an output file
+when it issues any error whatsoever.
+.IP "\fB\-nostdlib\fR" 4
+.IX Item "-nostdlib"
+Only search library directories explicitly specified on the
+command line.  Library directories specified in linker scripts
+(including linker scripts specified on the command line) are ignored.
+.IP "\fB\-\-oformat\fR \fIoutput-format\fR" 4
+.IX Item "--oformat output-format"
+\&\fBld\fR may be configured to support more than one kind of object
+file.  If your \fBld\fR is configured this way, you can use the
+\&\fB\-\-oformat\fR option to specify the binary format for the output
+object file.  Even when \fBld\fR is configured to support alternative
+object formats, you don't usually need to specify this, as \fBld\fR
+should be configured to produce as a default output format the most
+usual format on each machine.  \fIoutput-format\fR is a text string, the
+name of a particular format supported by the \s-1BFD\s0 libraries.  (You can
+list the available binary formats with \fBobjdump \-i\fR.)  The script
+command \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR can also specify the output format, but
+this option overrides it.  
+.IP "\fB\-pie\fR" 4
+.IX Item "-pie"
+.PD 0
+.IP "\fB\-\-pic\-executable\fR" 4
+.IX Item "--pic-executable"
+.PD
+Create a position independent executable.  This is currently only supported on
+\&\s-1ELF\s0 platforms.  Position independent executables are similar to shared
+libraries in that they are relocated by the dynamic linker to the virtual
+address the \s-1OS\s0 chooses for them (which can vary between invocations).  Like
+normal dynamically linked executables they can be executed and symbols
+defined in the executable cannot be overridden by shared libraries.
+.IP "\fB\-qmagic\fR" 4
+.IX Item "-qmagic"
+This option is ignored for Linux compatibility.
+.IP "\fB\-Qy\fR" 4
+.IX Item "-Qy"
+This option is ignored for \s-1SVR4\s0 compatibility.
+.IP "\fB\-\-relax\fR" 4
+.IX Item "--relax"
+An option with machine dependent effects.
+This option is only supported on a few targets.
+.Sp
+On some platforms, the \fB\-\-relax\fR option performs global
+optimizations that become possible when the linker resolves addressing
+in the program, such as relaxing address modes and synthesizing new
+instructions in the output object file.
+.Sp
+On some platforms these link time global optimizations may make symbolic
+debugging of the resulting executable impossible.
+This is known to be
+the case for the Matsushita \s-1MN10200\s0 and \s-1MN10300\s0 family of processors.
+.Sp
+On platforms where this is not supported, \fB\-\-relax\fR is accepted,
+but ignored.
+.IP "\fB\-\-retain\-symbols\-file\fR \fIfilename\fR" 4
+.IX Item "--retain-symbols-file filename"
+Retain \fIonly\fR the symbols listed in the file \fIfilename\fR,
+discarding all others.  \fIfilename\fR is simply a flat file, with one
+symbol name per line.  This option is especially useful in environments
+(such as VxWorks)
+where a large global symbol table is accumulated gradually, to conserve
+run-time memory.
+.Sp
+\&\fB\-\-retain\-symbols\-file\fR does \fInot\fR discard undefined symbols,
+or symbols needed for relocations.
+.Sp
+You may only specify \fB\-\-retain\-symbols\-file\fR once in the command
+line.  It overrides \fB\-s\fR and \fB\-S\fR.
+.IP "\fB\-rpath\fR \fIdir\fR" 4
+.IX Item "-rpath dir"
+Add a directory to the runtime library search path.  This is used when
+linking an \s-1ELF\s0 executable with shared objects.  All \fB\-rpath\fR
+arguments are concatenated and passed to the runtime linker, which uses
+them to locate shared objects at runtime.  The \fB\-rpath\fR option is
+also used when locating shared objects which are needed by shared
+objects explicitly included in the link; see the description of the
+\&\fB\-rpath\-link\fR option.  If \fB\-rpath\fR is not used when linking an
+\&\s-1ELF\s0 executable, the contents of the environment variable
+\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR will be used if it is defined.
+.Sp
+The \fB\-rpath\fR option may also be used on SunOS.  By default, on
+SunOS, the linker will form a runtime search patch out of all the
+\&\fB\-L\fR options it is given.  If a \fB\-rpath\fR option is used, the
+runtime search path will be formed exclusively using the \fB\-rpath\fR
+options, ignoring the \fB\-L\fR options.  This can be useful when using
+gcc, which adds many \fB\-L\fR options which may be on \s-1NFS\s0 mounted
+filesystems.
+.Sp
+For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is
+followed by a directory name, rather than a file name, it is treated as
+the \fB\-rpath\fR option.
+.IP "\fB\-rpath\-link\fR \fI\s-1DIR\s0\fR" 4
+.IX Item "-rpath-link DIR"
+When using \s-1ELF\s0 or SunOS, one shared library may require another.  This
+happens when an \f(CW\*(C`ld \-shared\*(C'\fR link includes a shared library as one
+of the input files.
+.Sp
+When the linker encounters such a dependency when doing a non\-shared,
+non-relocatable link, it will automatically try to locate the required
+shared library and include it in the link, if it is not included
+explicitly.  In such a case, the \fB\-rpath\-link\fR option
+specifies the first set of directories to search.  The
+\&\fB\-rpath\-link\fR option may specify a sequence of directory names
+either by specifying a list of names separated by colons, or by
+appearing multiple times.
+.Sp
+This option should be used with caution as it overrides the search path
+that may have been hard compiled into a shared library. In such a case it
+is possible to use unintentionally a different search path than the
+runtime linker would do.
+.Sp
+The linker uses the following search paths to locate required shared
+libraries.
+.RS 4
+.IP "1." 4
+Any directories specified by \fB\-rpath\-link\fR options.
+.IP "2." 4
+Any directories specified by \fB\-rpath\fR options.  The difference
+between \fB\-rpath\fR and \fB\-rpath\-link\fR is that directories
+specified by \fB\-rpath\fR options are included in the executable and
+used at runtime, whereas the \fB\-rpath\-link\fR option is only effective
+at link time. It is for the native linker only.
+.IP "3." 4
+On an \s-1ELF\s0 system, if the \fB\-rpath\fR and \f(CW\*(C`rpath\-link\*(C'\fR options
+were not used, search the contents of the environment variable
+\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR. It is for the native linker only.
+.IP "4." 4
+On SunOS, if the \fB\-rpath\fR option was not used, search any
+directories specified using \fB\-L\fR options.
+.IP "5." 4
+For a native linker, the contents of the environment variable
+\&\f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR.
+.IP "6." 4
+For a native \s-1ELF\s0 linker, the directories in \f(CW\*(C`DT_RUNPATH\*(C'\fR or
+\&\f(CW\*(C`DT_RPATH\*(C'\fR of a shared library are searched for shared
+libraries needed by it. The \f(CW\*(C`DT_RPATH\*(C'\fR entries are ignored if
+\&\f(CW\*(C`DT_RUNPATH\*(C'\fR entries exist.
+.IP "7." 4
+The default directories, normally \fI/lib\fR and \fI/usr/lib\fR.
+.IP "8." 4
+For a native linker on an \s-1ELF\s0 system, if the file \fI/etc/ld.so.conf\fR
+exists, the list of directories found in that file.
+.RE
+.RS 4
+.Sp
+If the required shared library is not found, the linker will issue a
+warning and continue with the link.
+.RE
+.IP "\fB\-shared\fR" 4
+.IX Item "-shared"
+.PD 0
+.IP "\fB\-Bshareable\fR" 4
+.IX Item "-Bshareable"
+.PD
+Create a shared library.  This is currently only supported on \s-1ELF\s0, \s-1XCOFF\s0
+and SunOS platforms.  On SunOS, the linker will automatically create a
+shared library if the \fB\-e\fR option is not used and there are
+undefined symbols in the link.
+.IP "\fB\-\-sort\-common\fR" 4
+.IX Item "--sort-common"
+This option tells \fBld\fR to sort the common symbols by size when it
+places them in the appropriate output sections.  First come all the one
+byte symbols, then all the two byte, then all the four byte, and then
+everything else.  This is to prevent gaps between symbols due to
+alignment constraints.
+.IP "\fB\-\-sort\-section name\fR" 4
+.IX Item "--sort-section name"
+This option will apply \f(CW\*(C`SORT_BY_NAME\*(C'\fR to all wildcard section
+patterns in the linker script.
+.IP "\fB\-\-sort\-section alignment\fR" 4
+.IX Item "--sort-section alignment"
+This option will apply \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fR to all wildcard section
+patterns in the linker script.
+.IP "\fB\-\-split\-by\-file [\fR\fIsize\fR\fB]\fR" 4
+.IX Item "--split-by-file [size]"
+Similar to \fB\-\-split\-by\-reloc\fR but creates a new output section for
+each input file when \fIsize\fR is reached.  \fIsize\fR defaults to a
+size of 1 if not given.
+.IP "\fB\-\-split\-by\-reloc [\fR\fIcount\fR\fB]\fR" 4
+.IX Item "--split-by-reloc [count]"
+Tries to creates extra sections in the output file so that no single
+output section in the file contains more than \fIcount\fR relocations.
+This is useful when generating huge relocatable files for downloading into
+certain real time kernels with the \s-1COFF\s0 object file format; since \s-1COFF\s0
+cannot represent more than 65535 relocations in a single section.  Note
+that this will fail to work with object file formats which do not
+support arbitrary sections.  The linker will not split up individual
+input sections for redistribution, so if a single input section contains
+more than \fIcount\fR relocations one output section will contain that
+many relocations.  \fIcount\fR defaults to a value of 32768.
+.IP "\fB\-\-stats\fR" 4
+.IX Item "--stats"
+Compute and display statistics about the operation of the linker, such
+as execution time and memory usage.
+.IP "\fB\-\-sysroot=\fR\fIdirectory\fR" 4
+.IX Item "--sysroot=directory"
+Use \fIdirectory\fR as the location of the sysroot, overriding the
+configure-time default.  This option is only supported by linkers
+that were configured using \fB\-\-with\-sysroot\fR.
+.IP "\fB\-\-traditional\-format\fR" 4
+.IX Item "--traditional-format"
+For some targets, the output of \fBld\fR is different in some ways from
+the output of some existing linker.  This switch requests \fBld\fR to
+use the traditional format instead.
+.Sp
+For example, on SunOS, \fBld\fR combines duplicate entries in the
+symbol string table.  This can reduce the size of an output file with
+full debugging information by over 30 percent.  Unfortunately, the SunOS
+\&\f(CW\*(C`dbx\*(C'\fR program can not read the resulting program (\f(CW\*(C`gdb\*(C'\fR has no
+trouble).  The \fB\-\-traditional\-format\fR switch tells \fBld\fR to not
+combine duplicate entries.
+.IP "\fB\-\-section\-start\fR \fIsectionname\fR\fB=\fR\fIorg\fR" 4
+.IX Item "--section-start sectionname=org"
+Locate a section in the output file at the absolute
+address given by \fIorg\fR.  You may use this option as many
+times as necessary to locate multiple sections in the command
+line.
+\&\fIorg\fR must be a single hexadecimal integer;
+for compatibility with other linkers, you may omit the leading
+\&\fB0x\fR usually associated with hexadecimal values.  \fINote:\fR there
+should be no white space between \fIsectionname\fR, the equals
+sign ("\fB=\fR"), and \fIorg\fR.
+.IP "\fB\-Tbss\fR \fIorg\fR" 4
+.IX Item "-Tbss org"
+.PD 0
+.IP "\fB\-Tdata\fR \fIorg\fR" 4
+.IX Item "-Tdata org"
+.IP "\fB\-Ttext\fR \fIorg\fR" 4
+.IX Item "-Ttext org"
+.PD
+Same as \-\-section\-start, with \f(CW\*(C`.bss\*(C'\fR, \f(CW\*(C`.data\*(C'\fR or
+\&\f(CW\*(C`.text\*(C'\fR as the \fIsectionname\fR.
+.IP "\fB\-\-unresolved\-symbols=\fR\fImethod\fR" 4
+.IX Item "--unresolved-symbols=method"
+Determine how to handle unresolved symbols.  There are four possible
+values for \fBmethod\fR:
+.RS 4
+.IP "\fBignore-all\fR" 4
+.IX Item "ignore-all"
+Do not report any unresolved symbols.
+.IP "\fBreport-all\fR" 4
+.IX Item "report-all"
+Report all unresolved symbols.  This is the default.
+.IP "\fBignore-in-object-files\fR" 4
+.IX Item "ignore-in-object-files"
+Report unresolved symbols that are contained in shared libraries, but
+ignore them if they come from regular object files.
+.IP "\fBignore-in-shared-libs\fR" 4
+.IX Item "ignore-in-shared-libs"
+Report unresolved symbols that come from regular object files, but
+ignore them if they come from shared libraries.  This can be useful
+when creating a dynamic binary and it is known that all the shared
+libraries that it should be referencing are included on the linker's
+command line.
+.RE
+.RS 4
+.Sp
+The behaviour for shared libraries on their own can also be controlled
+by the \fB\-\-[no\-]allow\-shlib\-undefined\fR option.
+.Sp
+Normally the linker will generate an error message for each reported
+unresolved symbol but the option \fB\-\-warn\-unresolved\-symbols\fR
+can change this to a warning.
+.RE
+.IP "\fB\-\-dll\-verbose\fR" 4
+.IX Item "--dll-verbose"
+.PD 0
+.IP "\fB\-\-verbose\fR" 4
+.IX Item "--verbose"
+.PD
+Display the version number for \fBld\fR and list the linker emulations
+supported.  Display which input files can and cannot be opened.  Display
+the linker script being used by the linker.
+.IP "\fB\-\-version\-script=\fR\fIversion-scriptfile\fR" 4
+.IX Item "--version-script=version-scriptfile"
+Specify the name of a version script to the linker.  This is typically
+used when creating shared libraries to specify additional information
+about the version hierarchy for the library being created.  This option
+is only meaningful on \s-1ELF\s0 platforms which support shared libraries.
+.IP "\fB\-\-warn\-common\fR" 4
+.IX Item "--warn-common"
+Warn when a common symbol is combined with another common symbol or with
+a symbol definition.  Unix linkers allow this somewhat sloppy practise,
+but linkers on some other operating systems do not.  This option allows
+you to find potential problems from combining global symbols.
+Unfortunately, some C libraries use this practise, so you may get some
+warnings about symbols in the libraries as well as in your programs.
+.Sp
+There are three kinds of global symbols, illustrated here by C examples:
+.RS 4
+.IP "\fBint i = 1;\fR" 4
+.IX Item "int i = 1;"
+A definition, which goes in the initialized data section of the output
+file.
+.IP "\fBextern int i;\fR" 4
+.IX Item "extern int i;"
+An undefined reference, which does not allocate space.
+There must be either a definition or a common symbol for the
+variable somewhere.
+.IP "\fBint i;\fR" 4
+.IX Item "int i;"
+A common symbol.  If there are only (one or more) common symbols for a
+variable, it goes in the uninitialized data area of the output file.
+The linker merges multiple common symbols for the same variable into a
+single symbol.  If they are of different sizes, it picks the largest
+size.  The linker turns a common symbol into a declaration, if there is
+a definition of the same variable.
+.RE
+.RS 4
+.Sp
+The \fB\-\-warn\-common\fR option can produce five kinds of warnings.
+Each warning consists of a pair of lines: the first describes the symbol
+just encountered, and the second describes the previous symbol
+encountered with the same name.  One or both of the two symbols will be
+a common symbol.
+.IP "1." 4
+Turning a common symbol into a reference, because there is already a
+definition for the symbol.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: common of `<symbol>'
+\&           overridden by definition
+\&        <file>(<section>): warning: defined here
+.Ve
+.IP "2." 4
+Turning a common symbol into a reference, because a later definition for
+the symbol is encountered.  This is the same as the previous case,
+except that the symbols are encountered in a different order.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: definition of `<symbol>'
+\&           overriding common
+\&        <file>(<section>): warning: common is here
+.Ve
+.IP "3." 4
+Merging a common symbol with a previous same-sized common symbol.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: multiple common
+\&           of `<symbol>'
+\&        <file>(<section>): warning: previous common is here
+.Ve
+.IP "4." 4
+Merging a common symbol with a previous larger common symbol.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: common of `<symbol>'
+\&           overridden by larger common
+\&        <file>(<section>): warning: larger common is here
+.Ve
+.IP "5." 4
+Merging a common symbol with a previous smaller common symbol.  This is
+the same as the previous case, except that the symbols are
+encountered in a different order.
+.Sp
+.Vb 3
+\&        <file>(<section>): warning: common of `<symbol>'
+\&           overriding smaller common
+\&        <file>(<section>): warning: smaller common is here
+.Ve
+.RE
+.RS 4
+.RE
+.IP "\fB\-\-warn\-constructors\fR" 4
+.IX Item "--warn-constructors"
+Warn if any global constructors are used.  This is only useful for a few
+object file formats.  For formats like \s-1COFF\s0 or \s-1ELF\s0, the linker can not
+detect the use of global constructors.
+.IP "\fB\-\-warn\-multiple\-gp\fR" 4
+.IX Item "--warn-multiple-gp"
+Warn if multiple global pointer values are required in the output file.
+This is only meaningful for certain processors, such as the Alpha.
+Specifically, some processors put large-valued constants in a special
+section.  A special register (the global pointer) points into the middle
+of this section, so that constants can be loaded efficiently via a
+base-register relative addressing mode.  Since the offset in
+base-register relative mode is fixed and relatively small (e.g., 16
+bits), this limits the maximum size of the constant pool.  Thus, in
+large programs, it is often necessary to use multiple global pointer
+values in order to be able to address all possible constants.  This
+option causes a warning to be issued whenever this case occurs.
+.IP "\fB\-\-warn\-once\fR" 4
+.IX Item "--warn-once"
+Only warn once for each undefined symbol, rather than once per module
+which refers to it.
+.IP "\fB\-\-warn\-section\-align\fR" 4
+.IX Item "--warn-section-align"
+Warn if the address of an output section is changed because of
+alignment.  Typically, the alignment will be set by an input section.
+The address will only be changed if it not explicitly specified; that
+is, if the \f(CW\*(C`SECTIONS\*(C'\fR command does not specify a start address for
+the section.
+.IP "\fB\-\-warn\-shared\-textrel\fR" 4
+.IX Item "--warn-shared-textrel"
+Warn if the linker adds a \s-1DT_TEXTREL\s0 to a shared object.  
+.IP "\fB\-\-warn\-unresolved\-symbols\fR" 4
+.IX Item "--warn-unresolved-symbols"
+If the linker is going to report an unresolved symbol (see the option
+\&\fB\-\-unresolved\-symbols\fR) it will normally generate an error.
+This option makes it generate a warning instead.
+.IP "\fB\-\-error\-unresolved\-symbols\fR" 4
+.IX Item "--error-unresolved-symbols"
+This restores the linker's default behaviour of generating errors when
+it is reporting unresolved symbols.
+.IP "\fB\-\-whole\-archive\fR" 4
+.IX Item "--whole-archive"
+For each archive mentioned on the command line after the
+\&\fB\-\-whole\-archive\fR option, include every object file in the archive
+in the link, rather than searching the archive for the required object
+files.  This is normally used to turn an archive file into a shared
+library, forcing every object to be included in the resulting shared
+library.  This option may be used more than once.
+.Sp
+Two notes when using this option from gcc: First, gcc doesn't know
+about this option, so you have to use \fB\-Wl,\-whole\-archive\fR.
+Second, don't forget to use \fB\-Wl,\-no\-whole\-archive\fR after your
+list of archives, because gcc will add its own list of archives to
+your link and you may not want this flag to affect those as well.
+.IP "\fB\-\-wrap\fR \fIsymbol\fR" 4
+.IX Item "--wrap symbol"
+Use a wrapper function for \fIsymbol\fR.  Any undefined reference to
+\&\fIsymbol\fR will be resolved to \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR.  Any
+undefined reference to \f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR will be resolved to
+\&\fIsymbol\fR.
+.Sp
+This can be used to provide a wrapper for a system function.  The
+wrapper function should be called \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR.  If it
+wishes to call the system function, it should call
+\&\f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR.
+.Sp
+Here is a trivial example:
+.Sp
+.Vb 6
+\&        void *
+\&        __wrap_malloc (size_t c)
+\&        {
+\&          printf ("malloc called with %zu\en", c);
+\&          return __real_malloc (c);
+\&        }
+.Ve
+.Sp
+If you link other code with this file using \fB\-\-wrap malloc\fR, then
+all calls to \f(CW\*(C`malloc\*(C'\fR will call the function \f(CW\*(C`_\|_wrap_malloc\*(C'\fR
+instead.  The call to \f(CW\*(C`_\|_real_malloc\*(C'\fR in \f(CW\*(C`_\|_wrap_malloc\*(C'\fR will
+call the real \f(CW\*(C`malloc\*(C'\fR function.
+.Sp
+You may wish to provide a \f(CW\*(C`_\|_real_malloc\*(C'\fR function as well, so that
+links without the \fB\-\-wrap\fR option will succeed.  If you do this,
+you should not put the definition of \f(CW\*(C`_\|_real_malloc\*(C'\fR in the same
+file as \f(CW\*(C`_\|_wrap_malloc\*(C'\fR; if you do, the assembler may resolve the
+call before the linker has a chance to wrap it to \f(CW\*(C`malloc\*(C'\fR.
+.IP "\fB\-\-eh\-frame\-hdr\fR" 4
+.IX Item "--eh-frame-hdr"
+Request creation of \f(CW\*(C`.eh_frame_hdr\*(C'\fR section and \s-1ELF\s0
+\&\f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR segment header.
+.IP "\fB\-\-enable\-new\-dtags\fR" 4
+.IX Item "--enable-new-dtags"
+.PD 0
+.IP "\fB\-\-disable\-new\-dtags\fR" 4
+.IX Item "--disable-new-dtags"
+.PD
+This linker can create the new dynamic tags in \s-1ELF\s0. But the older \s-1ELF\s0
+systems may not understand them. If you specify
+\&\fB\-\-enable\-new\-dtags\fR, the dynamic tags will be created as needed.
+If you specify \fB\-\-disable\-new\-dtags\fR, no new dynamic tags will be
+created. By default, the new dynamic tags are not created. Note that
+those options are only available for \s-1ELF\s0 systems.
+.IP "\fB\-\-hash\-size=\fR\fInumber\fR" 4
+.IX Item "--hash-size=number"
+Set the default size of the linker's hash tables to a prime number
+close to \fInumber\fR.  Increasing this value can reduce the length of
+time it takes the linker to perform its tasks, at the expense of
+increasing the linker's memory requirements.  Similarly reducing this
+value can reduce the memory requirements at the expense of speed.
+.IP "\fB\-\-reduce\-memory\-overheads\fR" 4
+.IX Item "--reduce-memory-overheads"
+This option reduces memory requirements at ld runtime, at the expense of
+linking speed.  This was introduced to select the old O(n^2) algorithm
+for link map file generation, rather than the new O(n) algorithm which uses
+about 40% more memory for symbol storage.
+.Sp
+Another effect of the switch is to set the default hash table size to
+1021, which again saves memory at the cost of lengthening the linker's
+run time.  This is not done however if the \fB\-\-hash\-size\fR switch
+has been used.
+.Sp
+The \fB\-\-reduce\-memory\-overheads\fR switch may be also be used to
+enable other tradeoffs in future versions of the linker.
+.PP
+The i386 \s-1PE\s0 linker supports the \fB\-shared\fR option, which causes
+the output to be a dynamically linked library (\s-1DLL\s0) instead of a
+normal executable.  You should name the output \f(CW\*(C`*.dll\*(C'\fR when you
+use this option.  In addition, the linker fully supports the standard
+\&\f(CW\*(C`*.def\*(C'\fR files, which may be specified on the linker command line
+like an object file (in fact, it should precede archives it exports
+symbols from, to ensure that they get linked in, just like a normal
+object file).
+.PP
+In addition to the options common to all targets, the i386 \s-1PE\s0 linker
+support additional command line options that are specific to the i386
+\&\s-1PE\s0 target.  Options that take values may be separated from their
+values by either a space or an equals sign.
+.IP "\fB\-\-add\-stdcall\-alias\fR" 4
+.IX Item "--add-stdcall-alias"
+If given, symbols with a stdcall suffix (@\fInn\fR) will be exported
+as-is and also with the suffix stripped.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-base\-file\fR \fIfile\fR" 4
+.IX Item "--base-file file"
+Use \fIfile\fR as the name of a file in which to save the base
+addresses of all the relocations needed for generating DLLs with
+\&\fIdlltool\fR.
+[This is an i386 \s-1PE\s0 specific option]
+.IP "\fB\-\-dll\fR" 4
+.IX Item "--dll"
+Create a \s-1DLL\s0 instead of a regular executable.  You may also use
+\&\fB\-shared\fR or specify a \f(CW\*(C`LIBRARY\*(C'\fR in a given \f(CW\*(C`.def\*(C'\fR
+file.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-stdcall\-fixup\fR" 4
+.IX Item "--enable-stdcall-fixup"
+.PD 0
+.IP "\fB\-\-disable\-stdcall\-fixup\fR" 4
+.IX Item "--disable-stdcall-fixup"
+.PD
+If the link finds a symbol that it cannot resolve, it will attempt to
+do \*(L"fuzzy linking\*(R" by looking for another defined symbol that differs
+only in the format of the symbol name (cdecl vs stdcall) and will
+resolve that symbol by linking to the match.  For example, the
+undefined symbol \f(CW\*(C`_foo\*(C'\fR might be linked to the function
+\&\f(CW\*(C`_foo at 12\*(C'\fR, or the undefined symbol \f(CW\*(C`_bar at 16\*(C'\fR might be linked
+to the function \f(CW\*(C`_bar\*(C'\fR.  When the linker does this, it prints a
+warning, since it normally should have failed to link, but sometimes
+import libraries generated from third-party dlls may need this feature
+to be usable.  If you specify \fB\-\-enable\-stdcall\-fixup\fR, this
+feature is fully enabled and warnings are not printed.  If you specify
+\&\fB\-\-disable\-stdcall\-fixup\fR, this feature is disabled and such
+mismatches are considered to be errors.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-export\-all\-symbols\fR" 4
+.IX Item "--export-all-symbols"
+If given, all global symbols in the objects used to build a \s-1DLL\s0 will
+be exported by the \s-1DLL\s0.  Note that this is the default if there
+otherwise wouldn't be any exported symbols.  When symbols are
+explicitly exported via \s-1DEF\s0 files or implicitly exported via function
+attributes, the default is to not export anything else unless this
+option is given.  Note that the symbols \f(CW\*(C`DllMain at 12\*(C'\fR,
+\&\f(CW\*(C`DllEntryPoint at 0\*(C'\fR, \f(CW\*(C`DllMainCRTStartup at 12\*(C'\fR, and 
+\&\f(CW\*(C`impure_ptr\*(C'\fR will not be automatically
+exported.  Also, symbols imported from other DLLs will not be 
+re\-exported, nor will symbols specifying the \s-1DLL\s0's internal layout 
+such as those beginning with \f(CW\*(C`_head_\*(C'\fR or ending with 
+\&\f(CW\*(C`_iname\*(C'\fR.  In addition, no symbols from \f(CW\*(C`libgcc\*(C'\fR, 
+\&\f(CW\*(C`libstd++\*(C'\fR, \f(CW\*(C`libmingw32\*(C'\fR, or \f(CW\*(C`crtX.o\*(C'\fR will be exported.
+Symbols whose names begin with \f(CW\*(C`_\|_rtti_\*(C'\fR or \f(CW\*(C`_\|_builtin_\*(C'\fR will
+not be exported, to help with \*(C+ DLLs.  Finally, there is an
+extensive list of cygwin-private symbols that are not exported 
+(obviously, this applies on when building DLLs for cygwin targets).
+These cygwin-excludes are: \f(CW\*(C`_cygwin_dll_entry at 12\*(C'\fR, 
+\&\f(CW\*(C`_cygwin_crt0_common at 8\*(C'\fR, \f(CW\*(C`_cygwin_noncygwin_dll_entry at 12\*(C'\fR,
+\&\f(CW\*(C`_fmode\*(C'\fR, \f(CW\*(C`_impure_ptr\*(C'\fR, \f(CW\*(C`cygwin_attach_dll\*(C'\fR, 
+\&\f(CW\*(C`cygwin_premain0\*(C'\fR, \f(CW\*(C`cygwin_premain1\*(C'\fR, \f(CW\*(C`cygwin_premain2\*(C'\fR,
+\&\f(CW\*(C`cygwin_premain3\*(C'\fR, and \f(CW\*(C`environ\*(C'\fR. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4
+.IX Item "--exclude-symbols symbol,symbol,..."
+Specifies a list of symbols which should not be automatically
+exported.  The symbol names may be delimited by commas or colons.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-file\-alignment\fR" 4
+.IX Item "--file-alignment"
+Specify the file alignment.  Sections in the file will always begin at
+file offsets which are multiples of this number.  This defaults to
+512.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-heap\fR \fIreserve\fR" 4
+.IX Item "--heap reserve"
+.PD 0
+.IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4
+.IX Item "--heap reserve,commit"
+.PD
+Specify the amount of memory to reserve (and optionally commit) to be
+used as heap for this program.  The default is 1Mb reserved, 4K
+committed.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4
+.IX Item "--image-base value"
+Use \fIvalue\fR as the base address of your program or dll.  This is
+the lowest memory location that will be used when your program or dll
+is loaded.  To reduce the need to relocate and improve performance of
+your dlls, each should have a unique base address and not overlap any
+other dlls.  The default is 0x400000 for executables, and 0x10000000
+for dlls.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-kill\-at\fR" 4
+.IX Item "--kill-at"
+If given, the stdcall suffixes (@\fInn\fR) will be stripped from
+symbols before they are exported.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-large\-address\-aware\fR" 4
+.IX Item "--large-address-aware"
+If given, the appropriate bit in the \*(L"Charateristics\*(R" field of the \s-1COFF\s0
+header is set to indicate that this executable supports virtual addresses
+greater than 2 gigabytes.  This should be used in conjuction with the /3GB
+or /USERVA=\fIvalue\fR megabytes switch in the \*(L"[operating systems]\*(R"
+section of the \s-1BOOT\s0.INI.  Otherwise, this bit has no effect.
+[This option is specific to \s-1PE\s0 targeted ports of the linker]
+.IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4
+.IX Item "--major-image-version value"
+Sets the major number of the \*(L"image version\*(R".  Defaults to 1.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4
+.IX Item "--major-os-version value"
+Sets the major number of the \*(L"os version\*(R".  Defaults to 4.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4
+.IX Item "--major-subsystem-version value"
+Sets the major number of the \*(L"subsystem version\*(R".  Defaults to 4.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4
+.IX Item "--minor-image-version value"
+Sets the minor number of the \*(L"image version\*(R".  Defaults to 0.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4
+.IX Item "--minor-os-version value"
+Sets the minor number of the \*(L"os version\*(R".  Defaults to 0.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4
+.IX Item "--minor-subsystem-version value"
+Sets the minor number of the \*(L"subsystem version\*(R".  Defaults to 0.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-output\-def\fR \fIfile\fR" 4
+.IX Item "--output-def file"
+The linker will create the file \fIfile\fR which will contain a \s-1DEF\s0
+file corresponding to the \s-1DLL\s0 the linker is generating.  This \s-1DEF\s0 file
+(which should be called \f(CW\*(C`*.def\*(C'\fR) may be used to create an import
+library with \f(CW\*(C`dlltool\*(C'\fR or may be used as a reference to
+automatically or implicitly exported symbols.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-out\-implib\fR \fIfile\fR" 4
+.IX Item "--out-implib file"
+The linker will create the file \fIfile\fR which will contain an
+import lib corresponding to the \s-1DLL\s0 the linker is generating. This
+import lib (which should be called \f(CW\*(C`*.dll.a\*(C'\fR or \f(CW\*(C`*.a\*(C'\fR
+may be used to link clients against the generated \s-1DLL\s0; this behaviour
+makes it possible to skip a separate \f(CW\*(C`dlltool\*(C'\fR import library
+creation step.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-auto\-image\-base\fR" 4
+.IX Item "--enable-auto-image-base"
+Automatically choose the image base for DLLs, unless one is specified
+using the \f(CW\*(C`\-\-image\-base\*(C'\fR argument.  By using a hash generated
+from the dllname to create unique image bases for each \s-1DLL\s0, in-memory
+collisions and relocations which can delay program execution are
+avoided.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-disable\-auto\-image\-base\fR" 4
+.IX Item "--disable-auto-image-base"
+Do not automatically generate a unique image base.  If there is no
+user-specified image base (\f(CW\*(C`\-\-image\-base\*(C'\fR) then use the platform
+default.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4
+.IX Item "--dll-search-prefix string"
+When linking dynamically to a dll without an import library,
+search for \f(CW\*(C`<string><basename>.dll\*(C'\fR in preference to 
+\&\f(CW\*(C`lib<basename>.dll\*(C'\fR. This behaviour allows easy distinction
+between DLLs built for the various \*(L"subplatforms\*(R": native, cygwin,
+uwin, pw, etc.  For instance, cygwin DLLs typically use
+\&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-auto\-import\fR" 4
+.IX Item "--enable-auto-import"
+Do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for 
+\&\s-1DATA\s0 imports from DLLs, and create the necessary thunking symbols when 
+building the import libraries with those \s-1DATA\s0 exports. Note: Use of the
+\&'auto\-import' extension will cause the text section of the image file
+to be made writable. This does not conform to the PE-COFF format
+specification published by Microsoft.
+.Sp
+Using 'auto\-import' generally will 'just work' \*(-- but sometimes you may
+see this message:
+.Sp
+"variable '<var>' can't be auto\-imported. Please read the 
+documentation for ld's \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fR for details."
+.Sp
+This message occurs when some (sub)expression accesses an address 
+ultimately given by the sum of two constants (Win32 import tables only 
+allow one).  Instances where this may occur include accesses to member 
+fields of struct variables imported from a \s-1DLL\s0, as well as using a 
+constant index into an array variable imported from a \s-1DLL\s0.  Any 
+multiword variable (arrays, structs, long long, etc) may trigger
+this error condition.  However, regardless of the exact data type
+of the offending exported variable, ld will always detect it, issue
+the warning, and exit.
+.Sp
+There are several ways to address this difficulty, regardless of the
+data type of the exported variable:
+.Sp
+One way is to use \-\-enable\-runtime\-pseudo\-reloc switch. This leaves the task
+of adjusting references in your client code for runtime environment, so
+this method works only when runtime environment supports this feature.
+.Sp
+A second solution is to force one of the 'constants' to be a variable \*(-- 
+that is, unknown and un-optimizable at compile time.  For arrays, 
+there are two possibilities: a) make the indexee (the array's address) 
+a variable, or b) make the 'constant' index a variable.  Thus:
+.Sp
+.Vb 3
+\&        extern type extern_array[];
+\&        extern_array[1] \-\-> 
+\&           { volatile type *t=extern_array; t[1] }
+.Ve
+.Sp
+or
+.Sp
+.Vb 3
+\&        extern type extern_array[];
+\&        extern_array[1] \-\-> 
+\&           { volatile int t=1; extern_array[t] }
+.Ve
+.Sp
+For structs (and most other multiword data types) the only option 
+is to make the struct itself (or the long long, or the ...) variable:
+.Sp
+.Vb 3
+\&        extern struct s extern_struct;
+\&        extern_struct.field \-\-> 
+\&           { volatile struct s *t=&extern_struct; t\->field }
+.Ve
+.Sp
+or
+.Sp
+.Vb 3
+\&        extern long long extern_ll;
+\&        extern_ll \-\->
+\&          { volatile long long * local_ll=&extern_ll; *local_ll }
+.Ve
+.Sp
+A third method of dealing with this difficulty is to abandon
+\&'auto\-import' for the offending symbol and mark it with 
+\&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR.  However, in practise that
+requires using compile-time #defines to indicate whether you are
+building a \s-1DLL\s0, building client code that will link to the \s-1DLL\s0, or 
+merely building/linking to a static library.   In making the choice 
+between the various methods of resolving the 'direct address with 
+constant offset' problem, you should consider typical real-world usage:
+.Sp
+Original:
+.Sp
+.Vb 7
+\&        \-\-foo.h
+\&        extern int arr[];
+\&        \-\-foo.c
+\&        #include "foo.h"
+\&        void main(int argc, char **argv){
+\&          printf("%d\en",arr[1]);
+\&        }
+.Ve
+.Sp
+Solution 1:
+.Sp
+.Vb 9
+\&        \-\-foo.h
+\&        extern int arr[];
+\&        \-\-foo.c
+\&        #include "foo.h"
+\&        void main(int argc, char **argv){
+\&          /* This workaround is for win32 and cygwin; do not "optimize" */
+\&          volatile int *parr = arr;
+\&          printf("%d\en",parr[1]);
+\&        }
+.Ve
+.Sp
+Solution 2:
+.Sp
+.Vb 14
+\&        \-\-foo.h
+\&        /* Note: auto\-export is assumed (no __declspec(dllexport)) */
+\&        #if (defined(_WIN32) || defined(__CYGWIN__)) && \e
+\&          !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
+\&        #define FOO_IMPORT __declspec(dllimport)
+\&        #else
+\&        #define FOO_IMPORT
+\&        #endif
+\&        extern FOO_IMPORT int arr[];
+\&        \-\-foo.c
+\&        #include "foo.h"
+\&        void main(int argc, char **argv){
+\&          printf("%d\en",arr[1]);
+\&        }
+.Ve
+.Sp
+A fourth way to avoid this problem is to re-code your 
+library to use a functional interface rather than a data interface
+for the offending variables (e.g. \fIset_foo()\fR and \fIget_foo()\fR accessor
+functions).
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-disable\-auto\-import\fR" 4
+.IX Item "--disable-auto-import"
+Do not attempt to do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to 
+\&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for \s-1DATA\s0 imports from DLLs.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-runtime\-pseudo\-reloc\fR" 4
+.IX Item "--enable-runtime-pseudo-reloc"
+If your code contains expressions described in \-\-enable\-auto\-import section,
+that is, \s-1DATA\s0 imports from \s-1DLL\s0 with non-zero offset, this switch will create
+a vector of 'runtime pseudo relocations' which can be used by runtime
+environment to adjust references to such data in your client code. 
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-disable\-runtime\-pseudo\-reloc\fR" 4
+.IX Item "--disable-runtime-pseudo-reloc"
+Do not create pseudo relocations for non-zero offset \s-1DATA\s0 imports from
+DLLs.  This is the default.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-enable\-extra\-pe\-debug\fR" 4
+.IX Item "--enable-extra-pe-debug"
+Show additional debug info related to auto-import symbol thunking.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-section\-alignment\fR" 4
+.IX Item "--section-alignment"
+Sets the section alignment.  Sections in memory will always begin at
+addresses which are a multiple of this number.  Defaults to 0x1000.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-stack\fR \fIreserve\fR" 4
+.IX Item "--stack reserve"
+.PD 0
+.IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4
+.IX Item "--stack reserve,commit"
+.PD
+Specify the amount of memory to reserve (and optionally commit) to be
+used as stack for this program.  The default is 2Mb reserved, 4K
+committed.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.IP "\fB\-\-subsystem\fR \fIwhich\fR" 4
+.IX Item "--subsystem which"
+.PD 0
+.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4
+.IX Item "--subsystem which:major"
+.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4
+.IX Item "--subsystem which:major.minor"
+.PD
+Specifies the subsystem under which your program will execute.  The
+legal values for \fIwhich\fR are \f(CW\*(C`native\*(C'\fR, \f(CW\*(C`windows\*(C'\fR,
+\&\f(CW\*(C`console\*(C'\fR, \f(CW\*(C`posix\*(C'\fR, and \f(CW\*(C`xbox\*(C'\fR.  You may optionally set
+the subsystem version also.  Numeric values are also accepted for
+\&\fIwhich\fR.
+[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
+.PP
+The 68HC11 and 68HC12 linkers support specific options to control the
+memory bank switching mapping and trampoline code generation.
+.IP "\fB\-\-no\-trampoline\fR" 4
+.IX Item "--no-trampoline"
+This option disables the generation of trampoline. By default a trampoline
+is generated for each far function which is called using a \f(CW\*(C`jsr\*(C'\fR
+instruction (this happens when a pointer to a far function is taken).
+.IP "\fB\-\-bank\-window\fR \fIname\fR" 4
+.IX Item "--bank-window name"
+This option indicates to the linker the name of the memory region in
+the \fB\s-1MEMORY\s0\fR specification that describes the memory bank window.
+The definition of such region is then used by the linker to compute
+paging and addresses within the memory window.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+You can change the behaviour of \fBld\fR with the environment variables
+\&\f(CW\*(C`GNUTARGET\*(C'\fR,
+\&\f(CW\*(C`LDEMULATION\*(C'\fR and \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR.
+.PP
+\&\f(CW\*(C`GNUTARGET\*(C'\fR determines the input-file object format if you don't
+use \fB\-b\fR (or its synonym \fB\-\-format\fR).  Its value should be one
+of the \s-1BFD\s0 names for an input format.  If there is no
+\&\f(CW\*(C`GNUTARGET\*(C'\fR in the environment, \fBld\fR uses the natural format
+of the target. If \f(CW\*(C`GNUTARGET\*(C'\fR is set to \f(CW\*(C`default\*(C'\fR then \s-1BFD\s0
+attempts to discover the input format by examining binary input files;
+this method often succeeds, but there are potential ambiguities, since
+there is no method of ensuring that the magic number used to specify
+object-file formats is unique.  However, the configuration procedure for
+\&\s-1BFD\s0 on each system places the conventional format for that system first
+in the search\-list, so ambiguities are resolved in favor of convention.
+.PP
+\&\f(CW\*(C`LDEMULATION\*(C'\fR determines the default emulation if you don't use the
+\&\fB\-m\fR option.  The emulation can affect various aspects of linker
+behaviour, particularly the default linker script.  You can list the
+available emulations with the \fB\-\-verbose\fR or \fB\-V\fR options.  If
+the \fB\-m\fR option is not used, and the \f(CW\*(C`LDEMULATION\*(C'\fR environment
+variable is not defined, the default emulation depends upon how the
+linker was configured.
+.PP
+Normally, the linker will default to demangling symbols.  However, if
+\&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR is set in the environment, then it will
+default to not demangling symbols.  This environment variable is used in
+a similar fashion by the \f(CW\*(C`gcc\*(C'\fR linker wrapper program.  The default
+may be overridden by the \fB\-\-demangle\fR and \fB\-\-no\-demangle\fR
+options.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjcopy\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1) and
+the Info entries for \fIbinutils\fR and
+\&\fIld\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
+2002, 2003, 2004 Free Software Foundation, Inc.
+.PP
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the \s-1GNU\s0 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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".

Added: branches/binutils/package/ld/ld.info
===================================================================
--- branches/binutils/package/ld/ld.info	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ld.info	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6691 @@
+This is .././ld/ld.info, produced by makeinfo version 4.8 from
+.././ld/ld.texinfo.
+
+START-INFO-DIR-ENTRY
+* Ld: (ld).                       The GNU linker.
+END-INFO-DIR-ENTRY
+
+   This file documents the GNU linker LD version 2.17.
+
+   Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
+2002, 2003, 2004 Free Software Foundation, Inc.
+
+
+File: ld.info,  Node: Top,  Next: Overview,  Up: (dir)
+
+Using ld
+********
+
+This file documents the GNU linker ld version 2.17.
+
+   This document is distributed under the terms of the GNU Free
+Documentation License.  A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+* Menu:
+
+* Overview::                    Overview
+* Invocation::                  Invocation
+* Scripts::                     Linker Scripts
+
+* Machine Dependent::           Machine Dependent Features
+
+* BFD::                         BFD
+
+* Reporting Bugs::              Reporting Bugs
+* MRI::                         MRI Compatible Script Files
+* GNU Free Documentation License::  GNU Free Documentation License
+* Index::                       Index
+
+
+File: ld.info,  Node: Overview,  Next: Invocation,  Prev: Top,  Up: Top
+
+1 Overview
+**********
+
+`ld' combines a number of object and archive files, relocates their
+data and ties up symbol references. Usually the last step in compiling
+a program is to run `ld'.
+
+   `ld' accepts Linker Command Language files written in a superset of
+AT&T's Link Editor Command Language syntax, to provide explicit and
+total control over the linking process.
+
+   This version of `ld' uses the general purpose BFD libraries to
+operate on object files. This allows `ld' to read, combine, and write
+object files in many different formats--for example, COFF or `a.out'.
+Different formats may be linked together to produce any available kind
+of object file.  *Note BFD::, for more information.
+
+   Aside from its flexibility, the GNU linker is more helpful than other
+linkers in providing diagnostic information.  Many linkers abandon
+execution immediately upon encountering an error; whenever possible,
+`ld' continues executing, allowing you to identify other errors (or, in
+some cases, to get an output file in spite of the error).
+
+
+File: ld.info,  Node: Invocation,  Next: Scripts,  Prev: Overview,  Up: Top
+
+2 Invocation
+************
+
+The GNU linker `ld' is meant to cover a broad range of situations, and
+to be as compatible as possible with other linkers.  As a result, you
+have many choices to control its behavior.
+
+* Menu:
+
+* Options::                     Command Line Options
+* Environment::                 Environment Variables
+
+
+File: ld.info,  Node: Options,  Next: Environment,  Up: Invocation
+
+2.1 Command Line Options
+========================
+
+   The linker supports a plethora of command-line options, but in actual
+practice few of them are used in any particular context.  For instance,
+a frequent use of `ld' is to link standard Unix object files on a
+standard, supported Unix system.  On such a system, to link a file
+`hello.o':
+
+     ld -o OUTPUT /lib/crt0.o hello.o -lc
+
+   This tells `ld' to produce a file called OUTPUT as the result of
+linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a',
+which will come from the standard search directories.  (See the
+discussion of the `-l' option below.)
+
+   Some of the command-line options to `ld' may be specified at any
+point in the command line.  However, options which refer to files, such
+as `-l' or `-T', cause the file to be read at the point at which the
+option appears in the command line, relative to the object files and
+other file options.  Repeating non-file options with a different
+argument will either have no further effect, or override prior
+occurrences (those further to the left on the command line) of that
+option.  Options which may be meaningfully specified more than once are
+noted in the descriptions below.
+
+   Non-option arguments are object files or archives which are to be
+linked together.  They may follow, precede, or be mixed in with
+command-line options, except that an object file argument may not be
+placed between an option and its argument.
+
+   Usually the linker is invoked with at least one object file, but you
+can specify other forms of binary input files using `-l', `-R', and the
+script command language.  If _no_ binary input files at all are
+specified, the linker does not produce any output, and issues the
+message `No input files'.
+
+   If the linker cannot recognize the format of an object file, it will
+assume that it is a linker script.  A script specified in this way
+augments the main linker script used for the link (either the default
+linker script or the one specified by using `-T').  This feature
+permits the linker to link against a file which appears to be an object
+or an archive, but actually merely defines some symbol values, or uses
+`INPUT' or `GROUP' to load other objects.  Note that specifying a
+script in this way merely augments the main linker script; use the `-T'
+option to replace the default linker script entirely.  *Note Scripts::.
+
+   For options whose names are a single letter, option arguments must
+either follow the option letter without intervening whitespace, or be
+given as separate arguments immediately following the option that
+requires them.
+
+   For options whose names are multiple letters, either one dash or two
+can precede the option name; for example, `-trace-symbol' and
+`--trace-symbol' are equivalent.  Note--there is one exception to this
+rule.  Multiple letter options that start with a lower case 'o' can
+only be preceeded by two dashes.  This is to reduce confusion with the
+`-o' option.  So for example `-omagic' sets the output file name to
+`magic' whereas `--omagic' sets the NMAGIC flag on the output.
+
+   Arguments to multiple-letter options must either be separated from
+the option name by an equals sign, or be given as separate arguments
+immediately following the option that requires them.  For example,
+`--trace-symbol foo' and `--trace-symbol=foo' are equivalent.  Unique
+abbreviations of the names of multiple-letter options are accepted.
+
+   Note--if the linker is being invoked indirectly, via a compiler
+driver (e.g. `gcc') then all the linker command line options should be
+prefixed by `-Wl,' (or whatever is appropriate for the particular
+compiler driver) like this:
+
+       gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
+
+   This is important, because otherwise the compiler driver program may
+silently drop the linker options, resulting in a bad link.
+
+   Here is a table of the generic command line switches accepted by the
+GNU linker:
+
+`@FILE'
+     Read command-line options from FILE.  The options read are
+     inserted in place of the original @FILE option.  If FILE does not
+     exist, or cannot be read, then the option will be treated
+     literally, and not removed.
+
+     Options in FILE are separated by whitespace.  A whitespace
+     character may be included in an option by surrounding the entire
+     option in either single or double quotes.  Any character
+     (including a backslash) may be included by prefixing the character
+     to be included with a backslash.  The FILE may itself contain
+     additional @FILE options; any such options will be processed
+     recursively.
+
+`-aKEYWORD'
+     This option is supported for HP/UX compatibility.  The KEYWORD
+     argument must be one of the strings `archive', `shared', or
+     `default'.  `-aarchive' is functionally equivalent to `-Bstatic',
+     and the other two keywords are functionally equivalent to
+     `-Bdynamic'.  This option may be used any number of times.
+
+`-AARCHITECTURE'
+`--architecture=ARCHITECTURE'
+     In the current release of `ld', this option is useful only for the
+     Intel 960 family of architectures.  In that `ld' configuration, the
+     ARCHITECTURE argument identifies the particular architecture in
+     the 960 family, enabling some safeguards and modifying the
+     archive-library search path.  *Note `ld' and the Intel 960 family:
+     i960, for details.
+
+     Future releases of `ld' may support similar functionality for
+     other architecture families.
+
+`-b INPUT-FORMAT'
+`--format=INPUT-FORMAT'
+     `ld' may be configured to support more than one kind of object
+     file.  If your `ld' is configured this way, you can use the `-b'
+     option to specify the binary format for input object files that
+     follow this option on the command line.  Even when `ld' is
+     configured to support alternative object formats, you don't
+     usually need to specify this, as `ld' should be configured to
+     expect as a default input format the most usual format on each
+     machine.  INPUT-FORMAT is a text string, the name of a particular
+     format supported by the BFD libraries.  (You can list the
+     available binary formats with `objdump -i'.)  *Note BFD::.
+
+     You may want to use this option if you are linking files with an
+     unusual binary format.  You can also use `-b' to switch formats
+     explicitly (when linking object files of different formats), by
+     including `-b INPUT-FORMAT' before each group of object files in a
+     particular format.
+
+     The default format is taken from the environment variable
+     `GNUTARGET'.  *Note Environment::.  You can also define the input
+     format from a script, using the command `TARGET'; see *Note Format
+     Commands::.
+
+`-c MRI-COMMANDFILE'
+`--mri-script=MRI-COMMANDFILE'
+     For compatibility with linkers produced by MRI, `ld' accepts script
+     files written in an alternate, restricted command language,
+     described in *Note MRI Compatible Script Files: MRI.  Introduce
+     MRI script files with the option `-c'; use the `-T' option to run
+     linker scripts written in the general-purpose `ld' scripting
+     language.  If MRI-CMDFILE does not exist, `ld' looks for it in the
+     directories specified by any `-L' options.
+
+`-d'
+`-dc'
+`-dp'
+     These three options are equivalent; multiple forms are supported
+     for compatibility with other linkers.  They assign space to common
+     symbols even if a relocatable output file is specified (with
+     `-r').  The script command `FORCE_COMMON_ALLOCATION' has the same
+     effect.  *Note Miscellaneous Commands::.
+
+`-e ENTRY'
+`--entry=ENTRY'
+     Use ENTRY as the explicit symbol for beginning execution of your
+     program, rather than the default entry point.  If there is no
+     symbol named ENTRY, the linker will try to parse ENTRY as a number,
+     and use that as the entry address (the number will be interpreted
+     in base 10; you may use a leading `0x' for base 16, or a leading
+     `0' for base 8).  *Note Entry Point::, for a discussion of defaults
+     and other ways of specifying the entry point.
+
+`--exclude-libs LIB,LIB,...'
+     Specifies a list of archive libraries from which symbols should
+     not be automatically exported. The library names may be delimited
+     by commas or colons.  Specifying `--exclude-libs ALL' excludes
+     symbols in all archive libraries from automatic export.  This
+     option is available only for the i386 PE targeted port of the
+     linker and for ELF targeted ports.  For i386 PE, symbols
+     explicitly listed in a .def file are still exported, regardless of
+     this option.  For ELF targeted ports, symbols affected by this
+     option will be treated as hidden.
+
+`-E'
+`--export-dynamic'
+     When creating a dynamically linked executable, add all symbols to
+     the dynamic symbol table.  The dynamic symbol table is the set of
+     symbols which are visible from dynamic objects at run time.
+
+     If you do not use this option, the dynamic symbol table will
+     normally contain only those symbols which are referenced by some
+     dynamic object mentioned in the link.
+
+     If you use `dlopen' to load a dynamic object which needs to refer
+     back to the symbols defined by the program, rather than some other
+     dynamic object, then you will probably need to use this option when
+     linking the program itself.
+
+     You can also use the version script to control what symbols should
+     be added to the dynamic symbol table if the output format supports
+     it.  See the description of `--version-script' in *Note VERSION::.
+
+`-EB'
+     Link big-endian objects.  This affects the default output format.
+
+`-EL'
+     Link little-endian objects.  This affects the default output
+     format.
+
+`-f'
+`--auxiliary NAME'
+     When creating an ELF shared object, set the internal DT_AUXILIARY
+     field to the specified name.  This tells the dynamic linker that
+     the symbol table of the shared object should be used as an
+     auxiliary filter on the symbol table of the shared object NAME.
+
+     If you later link a program against this filter object, then, when
+     you run the program, the dynamic linker will see the DT_AUXILIARY
+     field.  If the dynamic linker resolves any symbols from the filter
+     object, it will first check whether there is a definition in the
+     shared object NAME.  If there is one, it will be used instead of
+     the definition in the filter object.  The shared object NAME need
+     not exist.  Thus the shared object NAME may be used to provide an
+     alternative implementation of certain functions, perhaps for
+     debugging or for machine specific performance.
+
+     This option may be specified more than once.  The DT_AUXILIARY
+     entries will be created in the order in which they appear on the
+     command line.
+
+`-F NAME'
+`--filter NAME'
+     When creating an ELF shared object, set the internal DT_FILTER
+     field to the specified name.  This tells the dynamic linker that
+     the symbol table of the shared object which is being created
+     should be used as a filter on the symbol table of the shared
+     object NAME.
+
+     If you later link a program against this filter object, then, when
+     you run the program, the dynamic linker will see the DT_FILTER
+     field.  The dynamic linker will resolve symbols according to the
+     symbol table of the filter object as usual, but it will actually
+     link to the definitions found in the shared object NAME.  Thus the
+     filter object can be used to select a subset of the symbols
+     provided by the object NAME.
+
+     Some older linkers used the `-F' option throughout a compilation
+     toolchain for specifying object-file format for both input and
+     output object files.  The GNU linker uses other mechanisms for
+     this purpose: the `-b', `--format', `--oformat' options, the
+     `TARGET' command in linker scripts, and the `GNUTARGET'
+     environment variable.  The GNU linker will ignore the `-F' option
+     when not creating an ELF shared object.
+
+`-fini NAME'
+     When creating an ELF executable or shared object, call NAME when
+     the executable or shared object is unloaded, by setting DT_FINI to
+     the address of the function.  By default, the linker uses `_fini'
+     as the function to call.
+
+`-g'
+     Ignored.  Provided for compatibility with other tools.
+
+`-GVALUE'
+`--gpsize=VALUE'
+     Set the maximum size of objects to be optimized using the GP
+     register to SIZE.  This is only meaningful for object file formats
+     such as MIPS ECOFF which supports putting large and small objects
+     into different sections.  This is ignored for other object file
+     formats.
+
+`-hNAME'
+`-soname=NAME'
+     When creating an ELF shared object, set the internal DT_SONAME
+     field to the specified name.  When an executable is linked with a
+     shared object which has a DT_SONAME field, then when the
+     executable is run the dynamic linker will attempt to load the
+     shared object specified by the DT_SONAME field rather than the
+     using the file name given to the linker.
+
+`-i'
+     Perform an incremental link (same as option `-r').
+
+`-init NAME'
+     When creating an ELF executable or shared object, call NAME when
+     the executable or shared object is loaded, by setting DT_INIT to
+     the address of the function.  By default, the linker uses `_init'
+     as the function to call.
+
+`-lARCHIVE'
+`--library=ARCHIVE'
+     Add archive file ARCHIVE to the list of files to link.  This
+     option may be used any number of times.  `ld' will search its
+     path-list for occurrences of `libARCHIVE.a' for every ARCHIVE
+     specified.
+
+     On systems which support shared libraries, `ld' may also search for
+     libraries with extensions other than `.a'.  Specifically, on ELF
+     and SunOS systems, `ld' will search a directory for a library with
+     an extension of `.so' before searching for one with an extension of
+     `.a'.  By convention, a `.so' extension indicates a shared library.
+
+     The linker will search an archive only once, at the location where
+     it is specified on the command line.  If the archive defines a
+     symbol which was undefined in some object which appeared before
+     the archive on the command line, the linker will include the
+     appropriate file(s) from the archive.  However, an undefined
+     symbol in an object appearing later on the command line will not
+     cause the linker to search the archive again.
+
+     See the `-(' option for a way to force the linker to search
+     archives multiple times.
+
+     You may list the same archive multiple times on the command line.
+
+     This type of archive searching is standard for Unix linkers.
+     However, if you are using `ld' on AIX, note that it is different
+     from the behaviour of the AIX linker.
+
+`-LSEARCHDIR'
+`--library-path=SEARCHDIR'
+     Add path SEARCHDIR to the list of paths that `ld' will search for
+     archive libraries and `ld' control scripts.  You may use this
+     option any number of times.  The directories are searched in the
+     order in which they are specified on the command line.
+     Directories specified on the command line are searched before the
+     default directories.  All `-L' options apply to all `-l' options,
+     regardless of the order in which the options appear.
+
+     If SEARCHDIR begins with `=', then the `=' will be replaced by the
+     "sysroot prefix", a path specified when the linker is configured.
+
+     The default set of paths searched (without being specified with
+     `-L') depends on which emulation mode `ld' is using, and in some
+     cases also on how it was configured.  *Note Environment::.
+
+     The paths can also be specified in a link script with the
+     `SEARCH_DIR' command.  Directories specified this way are searched
+     at the point in which the linker script appears in the command
+     line.
+
+`-mEMULATION'
+     Emulate the EMULATION linker.  You can list the available
+     emulations with the `--verbose' or `-V' options.
+
+     If the `-m' option is not used, the emulation is taken from the
+     `LDEMULATION' environment variable, if that is defined.
+
+     Otherwise, the default emulation depends upon how the linker was
+     configured.
+
+`-M'
+`--print-map'
+     Print a link map to the standard output.  A link map provides
+     information about the link, including the following:
+
+        * Where object files are mapped into memory.
+
+        * How common symbols are allocated.
+
+        * All archive members included in the link, with a mention of
+          the symbol which caused the archive member to be brought in.
+
+        * The values assigned to symbols.
+
+          Note - symbols whose values are computed by an expression
+          which involves a reference to a previous value of the same
+          symbol may not have correct result displayed in the link map.
+          This is because the linker discards intermediate results and
+          only retains the final value of an expression.  Under such
+          circumstances the linker will display the final value
+          enclosed by square brackets.  Thus for example a linker
+          script containing:
+
+                  foo = 1
+                  foo = foo * 4
+                  foo = foo + 8
+
+          will produce the following output in the link map if the `-M'
+          option is used:
+
+                  0x00000001                foo = 0x1
+                  [0x0000000c]                foo = (foo * 0x4)
+                  [0x0000000c]                foo = (foo + 0x8)
+
+          See *Note Expressions:: for more information about
+          expressions in linker scripts.
+
+`-n'
+`--nmagic'
+     Turn off page alignment of sections, and mark the output as
+     `NMAGIC' if possible.
+
+`-N'
+`--omagic'
+     Set the text and data sections to be readable and writable.  Also,
+     do not page-align the data segment, and disable linking against
+     shared libraries.  If the output format supports Unix style magic
+     numbers, mark the output as `OMAGIC'. Note: Although a writable
+     text section is allowed for PE-COFF targets, it does not conform
+     to the format specification published by Microsoft.
+
+`--no-omagic'
+     This option negates most of the effects of the `-N' option.  It
+     sets the text section to be read-only, and forces the data segment
+     to be page-aligned.  Note - this option does not enable linking
+     against shared libraries.  Use `-Bdynamic' for this.
+
+`-o OUTPUT'
+`--output=OUTPUT'
+     Use OUTPUT as the name for the program produced by `ld'; if this
+     option is not specified, the name `a.out' is used by default.  The
+     script command `OUTPUT' can also specify the output file name.
+
+`-O LEVEL'
+     If LEVEL is a numeric values greater than zero `ld' optimizes the
+     output.  This might take significantly longer and therefore
+     probably should only be enabled for the final binary.
+
+`-q'
+`--emit-relocs'
+     Leave relocation sections and contents in fully linked
+     exececutables.  Post link analysis and optimization tools may need
+     this information in order to perform correct modifications of
+     executables.  This results in larger executables.
+
+     This option is currently only supported on ELF platforms.
+
+`--force-dynamic'
+     Force the output file to have dynamic sections.  This option is
+     specific to VxWorks targets.
+
+`-r'
+`--relocatable'
+     Generate relocatable output--i.e., generate an output file that
+     can in turn serve as input to `ld'.  This is often called "partial
+     linking".  As a side effect, in environments that support standard
+     Unix magic numbers, this option also sets the output file's magic
+     number to `OMAGIC'.  If this option is not specified, an absolute
+     file is produced.  When linking C++ programs, this option _will
+     not_ resolve references to constructors; to do that, use `-Ur'.
+
+     When an input file does not have the same format as the output
+     file, partial linking is only supported if that input file does
+     not contain any relocations.  Different output formats can have
+     further restrictions; for example some `a.out'-based formats do
+     not support partial linking with input files in other formats at
+     all.
+
+     This option does the same thing as `-i'.
+
+`-R FILENAME'
+`--just-symbols=FILENAME'
+     Read symbol names and their addresses from FILENAME, but do not
+     relocate it or include it in the output.  This allows your output
+     file to refer symbolically to absolute locations of memory defined
+     in other programs.  You may use this option more than once.
+
+     For compatibility with other ELF linkers, if the `-R' option is
+     followed by a directory name, rather than a file name, it is
+     treated as the `-rpath' option.
+
+`-s'
+`--strip-all'
+     Omit all symbol information from the output file.
+
+`-S'
+`--strip-debug'
+     Omit debugger symbol information (but not all symbols) from the
+     output file.
+
+`-t'
+`--trace'
+     Print the names of the input files as `ld' processes them.
+
+`-T SCRIPTFILE'
+`--script=SCRIPTFILE'
+     Use SCRIPTFILE as the linker script.  This script replaces `ld''s
+     default linker script (rather than adding to it), so COMMANDFILE
+     must specify everything necessary to describe the output file.
+     *Note Scripts::.  If SCRIPTFILE does not exist in the current
+     directory, `ld' looks for it in the directories specified by any
+     preceding `-L' options.  Multiple `-T' options accumulate.
+
+`-u SYMBOL'
+`--undefined=SYMBOL'
+     Force SYMBOL to be entered in the output file as an undefined
+     symbol.  Doing this may, for example, trigger linking of additional
+     modules from standard libraries.  `-u' may be repeated with
+     different option arguments to enter additional undefined symbols.
+     This option is equivalent to the `EXTERN' linker script command.
+
+`-Ur'
+     For anything other than C++ programs, this option is equivalent to
+     `-r': it generates relocatable output--i.e., an output file that
+     can in turn serve as input to `ld'.  When linking C++ programs,
+     `-Ur' _does_ resolve references to constructors, unlike `-r'.  It
+     does not work to use `-Ur' on files that were themselves linked
+     with `-Ur'; once the constructor table has been built, it cannot
+     be added to.  Use `-Ur' only for the last partial link, and `-r'
+     for the others.
+
+`--unique[=SECTION]'
+     Creates a separate output section for every input section matching
+     SECTION, or if the optional wildcard SECTION argument is missing,
+     for every orphan input section.  An orphan section is one not
+     specifically mentioned in a linker script.  You may use this option
+     multiple times on the command line;  It prevents the normal
+     merging of input sections with the same name, overriding output
+     section assignments in a linker script.
+
+`-v'
+`--version'
+`-V'
+     Display the version number for `ld'.  The `-V' option also lists
+     the supported emulations.
+
+`-x'
+`--discard-all'
+     Delete all local symbols.
+
+`-X'
+`--discard-locals'
+     Delete all temporary local symbols.  For most targets, this is all
+     local symbols whose names begin with `L'.
+
+`-y SYMBOL'
+`--trace-symbol=SYMBOL'
+     Print the name of each linked file in which SYMBOL appears.  This
+     option may be given any number of times.  On many systems it is
+     necessary to prepend an underscore.
+
+     This option is useful when you have an undefined symbol in your
+     link but don't know where the reference is coming from.
+
+`-Y PATH'
+     Add PATH to the default library search path.  This option exists
+     for Solaris compatibility.
+
+`-z KEYWORD'
+     The recognized keywords are:
+    `combreloc'
+          Combines multiple reloc sections and sorts them to make
+          dynamic symbol lookup caching possible.
+
+    `defs'
+          Disallows undefined symbols in object files.  Undefined
+          symbols in shared libraries are still allowed.
+
+    `execstack'
+          Marks the object as requiring executable stack.
+
+    `initfirst'
+          This option is only meaningful when building a shared object.
+          It marks the object so that its runtime initialization will
+          occur before the runtime initialization of any other objects
+          brought into the process at the same time.  Similarly the
+          runtime finalization of the object will occur after the
+          runtime finalization of any other objects.
+
+    `interpose'
+          Marks the object that its symbol table interposes before all
+          symbols but the primary executable.
+
+    `loadfltr'
+          Marks  the object that its filters be processed immediately at
+          runtime.
+
+    `muldefs'
+          Allows multiple definitions.
+
+    `nocombreloc'
+          Disables multiple reloc sections combining.
+
+    `nocopyreloc'
+          Disables production of copy relocs.
+
+    `nodefaultlib'
+          Marks the object that the search for dependencies of this
+          object will ignore any default library search paths.
+
+    `nodelete'
+          Marks the object shouldn't be unloaded at runtime.
+
+    `nodlopen'
+          Marks the object not available to `dlopen'.
+
+    `nodump'
+          Marks the object can not be dumped by `dldump'.
+
+    `noexecstack'
+          Marks the object as not requiring executable stack.
+
+    `norelro'
+          Don't create an ELF `PT_GNU_RELRO' segment header in the
+          object.
+
+    `now'
+          When generating an executable or shared library, mark it to
+          tell the dynamic linker to resolve all symbols when the
+          program is started, or when the shared library is linked to
+          using dlopen, instead of deferring function call resolution
+          to the point when the function is first called.
+
+    `origin'
+          Marks the object may contain $ORIGIN.
+
+    `relro'
+          Create an ELF `PT_GNU_RELRO' segment header in the object.
+
+
+     Other keywords are ignored for Solaris compatibility.
+
+`-( ARCHIVES -)'
+`--start-group ARCHIVES --end-group'
+     The ARCHIVES should be a list of archive files.  They may be
+     either explicit file names, or `-l' options.
+
+     The specified archives are searched repeatedly until no new
+     undefined references are created.  Normally, an archive is
+     searched only once in the order that it is specified on the
+     command line.  If a symbol in that archive is needed to resolve an
+     undefined symbol referred to by an object in an archive that
+     appears later on the command line, the linker would not be able to
+     resolve that reference.  By grouping the archives, they all be
+     searched repeatedly until all possible references are resolved.
+
+     Using this option has a significant performance cost.  It is best
+     to use it only when there are unavoidable circular references
+     between two or more archives.
+
+`--accept-unknown-input-arch'
+`--no-accept-unknown-input-arch'
+     Tells the linker to accept input files whose architecture cannot be
+     recognised.  The assumption is that the user knows what they are
+     doing and deliberately wants to link in these unknown input files.
+     This was the default behaviour of the linker, before release
+     2.14.  The default behaviour from release 2.14 onwards is to
+     reject such input files, and so the `--accept-unknown-input-arch'
+     option has been added to restore the old behaviour.
+
+`--as-needed'
+`--no-as-needed'
+     This option affects ELF DT_NEEDED tags for dynamic libraries
+     mentioned on the command line after the `--as-needed' option.
+     Normally, the linker will add a DT_NEEDED tag for each dynamic
+     library mentioned on the command line, regardless of whether the
+     library is actually needed.  `--as-needed' causes DT_NEEDED tags
+     to only be emitted for libraries that satisfy some symbol
+     reference from regular objects which is undefined at the point
+     that the library was linked.  `--no-as-needed' restores the
+     default behaviour.
+
+`--add-needed'
+`--no-add-needed'
+     This option affects the treatment of dynamic libraries from ELF
+     DT_NEEDED tags in dynamic libraries mentioned on the command line
+     after the `--no-add-needed' option.  Normally, the linker will add
+     a DT_NEEDED tag for each dynamic library from DT_NEEDED tags.
+     `--no-add-needed' causes DT_NEEDED tags will never be emitted for
+     those libraries from DT_NEEDED tags. `--add-needed' restores the
+     default behaviour.
+
+`-assert KEYWORD'
+     This option is ignored for SunOS compatibility.
+
+`-Bdynamic'
+`-dy'
+`-call_shared'
+     Link against dynamic libraries.  This is only meaningful on
+     platforms for which shared libraries are supported.  This option
+     is normally the default on such platforms.  The different variants
+     of this option are for compatibility with various systems.  You
+     may use this option multiple times on the command line: it affects
+     library searching for `-l' options which follow it.
+
+`-Bgroup'
+     Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic
+     section.  This causes the runtime linker to handle lookups in this
+     object and its dependencies to be performed only inside the group.
+     `--unresolved-symbols=report-all' is implied.  This option is only
+     meaningful on ELF platforms which support shared libraries.
+
+`-Bstatic'
+`-dn'
+`-non_shared'
+`-static'
+     Do not link against shared libraries.  This is only meaningful on
+     platforms for which shared libraries are supported.  The different
+     variants of this option are for compatibility with various
+     systems.  You may use this option multiple times on the command
+     line: it affects library searching for `-l' options which follow
+     it.  This option also implies `--unresolved-symbols=report-all'.
+     This option can be used with `-shared'.  Doing so means that a
+     shared library is being created but that all of the library's
+     external references must be resolved by pulling in entries from
+     static libraries.
+
+`-Bsymbolic'
+     When creating a shared library, bind references to global symbols
+     to the definition within the shared library, if any.  Normally, it
+     is possible for a program linked against a shared library to
+     override the definition within the shared library.  This option is
+     only meaningful on ELF platforms which support shared libraries.
+
+`--check-sections'
+`--no-check-sections'
+     Asks the linker _not_ to check section addresses after they have
+     been assigned to see if there are any overlaps.  Normally the
+     linker will perform this check, and if it finds any overlaps it
+     will produce suitable error messages.  The linker does know about,
+     and does make allowances for sections in overlays.  The default
+     behaviour can be restored by using the command line switch
+     `--check-sections'.
+
+`--cref'
+     Output a cross reference table.  If a linker map file is being
+     generated, the cross reference table is printed to the map file.
+     Otherwise, it is printed on the standard output.
+
+     The format of the table is intentionally simple, so that it may be
+     easily processed by a script if necessary.  The symbols are
+     printed out, sorted by name.  For each symbol, a list of file
+     names is given.  If the symbol is defined, the first file listed
+     is the location of the definition.  The remaining files contain
+     references to the symbol.
+
+`--no-define-common'
+     This option inhibits the assignment of addresses to common symbols.
+     The script command `INHIBIT_COMMON_ALLOCATION' has the same effect.
+     *Note Miscellaneous Commands::.
+
+     The `--no-define-common' option allows decoupling the decision to
+     assign addresses to Common symbols from the choice of the output
+     file type; otherwise a non-Relocatable output type forces
+     assigning addresses to Common symbols.  Using `--no-define-common'
+     allows Common symbols that are referenced from a shared library to
+     be assigned addresses only in the main program.  This eliminates
+     the unused duplicate space in the shared library, and also
+     prevents any possible confusion over resolving to the wrong
+     duplicate when there are many dynamic modules with specialized
+     search paths for runtime symbol resolution.
+
+`--defsym SYMBOL=EXPRESSION'
+     Create a global symbol in the output file, containing the absolute
+     address given by EXPRESSION.  You may use this option as many
+     times as necessary to define multiple symbols in the command line.
+     A limited form of arithmetic is supported for the EXPRESSION in
+     this context: you may give a hexadecimal constant or the name of
+     an existing symbol, or use `+' and `-' to add or subtract
+     hexadecimal constants or symbols.  If you need more elaborate
+     expressions, consider using the linker command language from a
+     script (*note Assignment: Symbol Definitions: Assignments.).
+     _Note:_ there should be no white space between SYMBOL, the equals
+     sign ("<=>"), and EXPRESSION.
+
+`--demangle[=STYLE]'
+`--no-demangle'
+     These options control whether to demangle symbol names in error
+     messages and other output.  When the linker is told to demangle,
+     it tries to present symbol names in a readable fashion: it strips
+     leading underscores if they are used by the object file format,
+     and converts C++ mangled symbol names into user readable names.
+     Different compilers have different mangling styles.  The optional
+     demangling style argument can be used to choose an appropriate
+     demangling style for your compiler.  The linker will demangle by
+     default unless the environment variable `COLLECT_NO_DEMANGLE' is
+     set.  These options may be used to override the default.
+
+`--dynamic-linker FILE'
+     Set the name of the dynamic linker.  This is only meaningful when
+     generating dynamically linked ELF executables.  The default dynamic
+     linker is normally correct; don't use this unless you know what
+     you are doing.
+
+`--fatal-warnings'
+     Treat all warnings as errors.
+
+`--force-exe-suffix'
+     Make sure that an output file has a .exe suffix.
+
+     If a successfully built fully linked output file does not have a
+     `.exe' or `.dll' suffix, this option forces the linker to copy the
+     output file to one of the same name with a `.exe' suffix. This
+     option is useful when using unmodified Unix makefiles on a
+     Microsoft Windows host, since some versions of Windows won't run
+     an image unless it ends in a `.exe' suffix.
+
+`--no-gc-sections'
+`--gc-sections'
+     Enable garbage collection of unused input sections.  It is ignored
+     on targets that do not support this option.  This option is not
+     compatible with `-r'. The default behaviour (of not performing
+     this garbage collection) can be restored by specifying
+     `--no-gc-sections' on the command line.
+
+`--help'
+     Print a summary of the command-line options on the standard output
+     and exit.
+
+`--target-help'
+     Print a summary of all target specific options on the standard
+     output and exit.
+
+`-Map MAPFILE'
+     Print a link map to the file MAPFILE.  See the description of the
+     `-M' option, above.
+
+`--no-keep-memory'
+     `ld' normally optimizes for speed over memory usage by caching the
+     symbol tables of input files in memory.  This option tells `ld' to
+     instead optimize for memory usage, by rereading the symbol tables
+     as necessary.  This may be required if `ld' runs out of memory
+     space while linking a large executable.
+
+`--no-undefined'
+`-z defs'
+     Report unresolved symbol references from regular object files.
+     This is done even if the linker is creating a non-symbolic shared
+     library.  The switch `--[no-]allow-shlib-undefined' controls the
+     behaviour for reporting unresolved references found in shared
+     libraries being linked in.
+
+`--allow-multiple-definition'
+`-z muldefs'
+     Normally when a symbol is defined multiple times, the linker will
+     report a fatal error. These options allow multiple definitions and
+     the first definition will be used.
+
+`--allow-shlib-undefined'
+`--no-allow-shlib-undefined'
+     Allows (the default) or disallows undefined symbols in shared
+     libraries.  This switch is similar to `--no-undefined' except that
+     it determines the behaviour when the undefined symbols are in a
+     shared library rather than a regular object file.  It does not
+     affect how undefined symbols in regular object files are handled.
+
+     The reason that `--allow-shlib-undefined' is the default is that
+     the shared library being specified at link time may not be the
+     same as the one that is available at load time, so the symbols
+     might actually be resolvable at load time.  Plus there are some
+     systems, (eg BeOS) where undefined symbols in shared libraries is
+     normal.  (The kernel patches them at load time to select which
+     function is most appropriate for the current architecture.  This
+     is used for example to dynamically select an appropriate memset
+     function).  Apparently it is also normal for HPPA shared libraries
+     to have undefined symbols.
+
+`--no-undefined-version'
+     Normally when a symbol has an undefined version, the linker will
+     ignore it. This option disallows symbols with undefined version
+     and a fatal error will be issued instead.
+
+`--default-symver'
+     Create and use a default symbol version (the soname) for
+     unversioned exported symbols.
+
+`--default-imported-symver'
+     Create and use a default symbol version (the soname) for
+     unversioned imported symbols.
+
+`--no-warn-mismatch'
+     Normally `ld' will give an error if you try to link together input
+     files that are mismatched for some reason, perhaps because they
+     have been compiled for different processors or for different
+     endiannesses.  This option tells `ld' that it should silently
+     permit such possible errors.  This option should only be used with
+     care, in cases when you have taken some special action that
+     ensures that the linker errors are inappropriate.
+
+`--no-whole-archive'
+     Turn off the effect of the `--whole-archive' option for subsequent
+     archive files.
+
+`--noinhibit-exec'
+     Retain the executable output file whenever it is still usable.
+     Normally, the linker will not produce an output file if it
+     encounters errors during the link process; it exits without
+     writing an output file when it issues any error whatsoever.
+
+`-nostdlib'
+     Only search library directories explicitly specified on the
+     command line.  Library directories specified in linker scripts
+     (including linker scripts specified on the command line) are
+     ignored.
+
+`--oformat OUTPUT-FORMAT'
+     `ld' may be configured to support more than one kind of object
+     file.  If your `ld' is configured this way, you can use the
+     `--oformat' option to specify the binary format for the output
+     object file.  Even when `ld' is configured to support alternative
+     object formats, you don't usually need to specify this, as `ld'
+     should be configured to produce as a default output format the most
+     usual format on each machine.  OUTPUT-FORMAT is a text string, the
+     name of a particular format supported by the BFD libraries.  (You
+     can list the available binary formats with `objdump -i'.)  The
+     script command `OUTPUT_FORMAT' can also specify the output format,
+     but this option overrides it.  *Note BFD::.
+
+`-pie'
+`--pic-executable'
+     Create a position independent executable.  This is currently only
+     supported on ELF platforms.  Position independent executables are
+     similar to shared libraries in that they are relocated by the
+     dynamic linker to the virtual address the OS chooses for them
+     (which can vary between invocations).  Like normal dynamically
+     linked executables they can be executed and symbols defined in the
+     executable cannot be overridden by shared libraries.
+
+`-qmagic'
+     This option is ignored for Linux compatibility.
+
+`-Qy'
+     This option is ignored for SVR4 compatibility.
+
+`--relax'
+     An option with machine dependent effects.  This option is only
+     supported on a few targets.  *Note `ld' and the H8/300: H8/300.
+     *Note `ld' and the Intel 960 family: i960.  *Note `ld' and Xtensa
+     Processors: Xtensa.  *Note `ld' and PowerPC 32-bit ELF Support:
+     PowerPC ELF32.
+
+     On some platforms, the `--relax' option performs global
+     optimizations that become possible when the linker resolves
+     addressing in the program, such as relaxing address modes and
+     synthesizing new instructions in the output object file.
+
+     On some platforms these link time global optimizations may make
+     symbolic debugging of the resulting executable impossible.  This
+     is known to be the case for the Matsushita MN10200 and MN10300
+     family of processors.
+
+     On platforms where this is not supported, `--relax' is accepted,
+     but ignored.
+
+`--retain-symbols-file FILENAME'
+     Retain _only_ the symbols listed in the file FILENAME, discarding
+     all others.  FILENAME is simply a flat file, with one symbol name
+     per line.  This option is especially useful in environments (such
+     as VxWorks) where a large global symbol table is accumulated
+     gradually, to conserve run-time memory.
+
+     `--retain-symbols-file' does _not_ discard undefined symbols, or
+     symbols needed for relocations.
+
+     You may only specify `--retain-symbols-file' once in the command
+     line.  It overrides `-s' and `-S'.
+
+`-rpath DIR'
+     Add a directory to the runtime library search path.  This is used
+     when linking an ELF executable with shared objects.  All `-rpath'
+     arguments are concatenated and passed to the runtime linker, which
+     uses them to locate shared objects at runtime.  The `-rpath'
+     option is also used when locating shared objects which are needed
+     by shared objects explicitly included in the link; see the
+     description of the `-rpath-link' option.  If `-rpath' is not used
+     when linking an ELF executable, the contents of the environment
+     variable `LD_RUN_PATH' will be used if it is defined.
+
+     The `-rpath' option may also be used on SunOS.  By default, on
+     SunOS, the linker will form a runtime search patch out of all the
+     `-L' options it is given.  If a `-rpath' option is used, the
+     runtime search path will be formed exclusively using the `-rpath'
+     options, ignoring the `-L' options.  This can be useful when using
+     gcc, which adds many `-L' options which may be on NFS mounted
+     filesystems.
+
+     For compatibility with other ELF linkers, if the `-R' option is
+     followed by a directory name, rather than a file name, it is
+     treated as the `-rpath' option.
+
+`-rpath-link DIR'
+     When using ELF or SunOS, one shared library may require another.
+     This happens when an `ld -shared' link includes a shared library
+     as one of the input files.
+
+     When the linker encounters such a dependency when doing a
+     non-shared, non-relocatable link, it will automatically try to
+     locate the required shared library and include it in the link, if
+     it is not included explicitly.  In such a case, the `-rpath-link'
+     option specifies the first set of directories to search.  The
+     `-rpath-link' option may specify a sequence of directory names
+     either by specifying a list of names separated by colons, or by
+     appearing multiple times.
+
+     This option should be used with caution as it overrides the search
+     path that may have been hard compiled into a shared library. In
+     such a case it is possible to use unintentionally a different
+     search path than the runtime linker would do.
+
+     The linker uses the following search paths to locate required
+     shared libraries.
+       1. Any directories specified by `-rpath-link' options.
+
+       2. Any directories specified by `-rpath' options.  The difference
+          between `-rpath' and `-rpath-link' is that directories
+          specified by `-rpath' options are included in the executable
+          and used at runtime, whereas the `-rpath-link' option is only
+          effective at link time. It is for the native linker only.
+
+       3. On an ELF system, if the `-rpath' and `rpath-link' options
+          were not used, search the contents of the environment variable
+          `LD_RUN_PATH'. It is for the native linker only.
+
+       4. On SunOS, if the `-rpath' option was not used, search any
+          directories specified using `-L' options.
+
+       5. For a native linker, the contents of the environment variable
+          `LD_LIBRARY_PATH'.
+
+       6. For a native ELF linker, the directories in `DT_RUNPATH' or
+          `DT_RPATH' of a shared library are searched for shared
+          libraries needed by it. The `DT_RPATH' entries are ignored if
+          `DT_RUNPATH' entries exist.
+
+       7. The default directories, normally `/lib' and `/usr/lib'.
+
+       8. For a native linker on an ELF system, if the file
+          `/etc/ld.so.conf' exists, the list of directories found in
+          that file.
+
+     If the required shared library is not found, the linker will issue
+     a warning and continue with the link.
+
+`-shared'
+`-Bshareable'
+     Create a shared library.  This is currently only supported on ELF,
+     XCOFF and SunOS platforms.  On SunOS, the linker will
+     automatically create a shared library if the `-e' option is not
+     used and there are undefined symbols in the link.
+
+`--sort-common'
+     This option tells `ld' to sort the common symbols by size when it
+     places them in the appropriate output sections.  First come all
+     the one byte symbols, then all the two byte, then all the four
+     byte, and then everything else.  This is to prevent gaps between
+     symbols due to alignment constraints.
+
+`--sort-section name'
+     This option will apply `SORT_BY_NAME' to all wildcard section
+     patterns in the linker script.
+
+`--sort-section alignment'
+     This option will apply `SORT_BY_ALIGNMENT' to all wildcard section
+     patterns in the linker script.
+
+`--split-by-file [SIZE]'
+     Similar to `--split-by-reloc' but creates a new output section for
+     each input file when SIZE is reached.  SIZE defaults to a size of
+     1 if not given.
+
+`--split-by-reloc [COUNT]'
+     Tries to creates extra sections in the output file so that no
+     single output section in the file contains more than COUNT
+     relocations.  This is useful when generating huge relocatable
+     files for downloading into certain real time kernels with the COFF
+     object file format; since COFF cannot represent more than 65535
+     relocations in a single section.  Note that this will fail to work
+     with object file formats which do not support arbitrary sections.
+     The linker will not split up individual input sections for
+     redistribution, so if a single input section contains more than
+     COUNT relocations one output section will contain that many
+     relocations.  COUNT defaults to a value of 32768.
+
+`--stats'
+     Compute and display statistics about the operation of the linker,
+     such as execution time and memory usage.
+
+`--sysroot=DIRECTORY'
+     Use DIRECTORY as the location of the sysroot, overriding the
+     configure-time default.  This option is only supported by linkers
+     that were configured using `--with-sysroot'.
+
+`--traditional-format'
+     For some targets, the output of `ld' is different in some ways from
+     the output of some existing linker.  This switch requests `ld' to
+     use the traditional format instead.
+
+     For example, on SunOS, `ld' combines duplicate entries in the
+     symbol string table.  This can reduce the size of an output file
+     with full debugging information by over 30 percent.
+     Unfortunately, the SunOS `dbx' program can not read the resulting
+     program (`gdb' has no trouble).  The `--traditional-format' switch
+     tells `ld' to not combine duplicate entries.
+
+`--section-start SECTIONNAME=ORG'
+     Locate a section in the output file at the absolute address given
+     by ORG.  You may use this option as many times as necessary to
+     locate multiple sections in the command line.  ORG must be a
+     single hexadecimal integer; for compatibility with other linkers,
+     you may omit the leading `0x' usually associated with hexadecimal
+     values.  _Note:_ there should be no white space between
+     SECTIONNAME, the equals sign ("<=>"), and ORG.
+
+`-Tbss ORG'
+`-Tdata ORG'
+`-Ttext ORG'
+     Same as -section-start, with `.bss', `.data' or `.text' as the
+     SECTIONNAME.
+
+`--unresolved-symbols=METHOD'
+     Determine how to handle unresolved symbols.  There are four
+     possible values for `method':
+
+    `ignore-all'
+          Do not report any unresolved symbols.
+
+    `report-all'
+          Report all unresolved symbols.  This is the default.
+
+    `ignore-in-object-files'
+          Report unresolved symbols that are contained in shared
+          libraries, but ignore them if they come from regular object
+          files.
+
+    `ignore-in-shared-libs'
+          Report unresolved symbols that come from regular object
+          files, but ignore them if they come from shared libraries.
+          This can be useful when creating a dynamic binary and it is
+          known that all the shared libraries that it should be
+          referencing are included on the linker's command line.
+
+     The behaviour for shared libraries on their own can also be
+     controlled by the `--[no-]allow-shlib-undefined' option.
+
+     Normally the linker will generate an error message for each
+     reported unresolved symbol but the option
+     `--warn-unresolved-symbols' can change this to a warning.
+
+`--dll-verbose'
+`--verbose'
+     Display the version number for `ld' and list the linker emulations
+     supported.  Display which input files can and cannot be opened.
+     Display the linker script being used by the linker.
+
+`--version-script=VERSION-SCRIPTFILE'
+     Specify the name of a version script to the linker.  This is
+     typically used when creating shared libraries to specify
+     additional information about the version hierarchy for the library
+     being created.  This option is only meaningful on ELF platforms
+     which support shared libraries.  *Note VERSION::.
+
+`--warn-common'
+     Warn when a common symbol is combined with another common symbol
+     or with a symbol definition.  Unix linkers allow this somewhat
+     sloppy practise, but linkers on some other operating systems do
+     not.  This option allows you to find potential problems from
+     combining global symbols.  Unfortunately, some C libraries use
+     this practise, so you may get some warnings about symbols in the
+     libraries as well as in your programs.
+
+     There are three kinds of global symbols, illustrated here by C
+     examples:
+
+    `int i = 1;'
+          A definition, which goes in the initialized data section of
+          the output file.
+
+    `extern int i;'
+          An undefined reference, which does not allocate space.  There
+          must be either a definition or a common symbol for the
+          variable somewhere.
+
+    `int i;'
+          A common symbol.  If there are only (one or more) common
+          symbols for a variable, it goes in the uninitialized data
+          area of the output file.  The linker merges multiple common
+          symbols for the same variable into a single symbol.  If they
+          are of different sizes, it picks the largest size.  The
+          linker turns a common symbol into a declaration, if there is
+          a definition of the same variable.
+
+     The `--warn-common' option can produce five kinds of warnings.
+     Each warning consists of a pair of lines: the first describes the
+     symbol just encountered, and the second describes the previous
+     symbol encountered with the same name.  One or both of the two
+     symbols will be a common symbol.
+
+       1. Turning a common symbol into a reference, because there is
+          already a definition for the symbol.
+               FILE(SECTION): warning: common of `SYMBOL'
+                  overridden by definition
+               FILE(SECTION): warning: defined here
+
+       2. Turning a common symbol into a reference, because a later
+          definition for the symbol is encountered.  This is the same
+          as the previous case, except that the symbols are encountered
+          in a different order.
+               FILE(SECTION): warning: definition of `SYMBOL'
+                  overriding common
+               FILE(SECTION): warning: common is here
+
+       3. Merging a common symbol with a previous same-sized common
+          symbol.
+               FILE(SECTION): warning: multiple common
+                  of `SYMBOL'
+               FILE(SECTION): warning: previous common is here
+
+       4. Merging a common symbol with a previous larger common symbol.
+               FILE(SECTION): warning: common of `SYMBOL'
+                  overridden by larger common
+               FILE(SECTION): warning: larger common is here
+
+       5. Merging a common symbol with a previous smaller common
+          symbol.  This is the same as the previous case, except that
+          the symbols are encountered in a different order.
+               FILE(SECTION): warning: common of `SYMBOL'
+                  overriding smaller common
+               FILE(SECTION): warning: smaller common is here
+
+`--warn-constructors'
+     Warn if any global constructors are used.  This is only useful for
+     a few object file formats.  For formats like COFF or ELF, the
+     linker can not detect the use of global constructors.
+
+`--warn-multiple-gp'
+     Warn if multiple global pointer values are required in the output
+     file.  This is only meaningful for certain processors, such as the
+     Alpha.  Specifically, some processors put large-valued constants
+     in a special section.  A special register (the global pointer)
+     points into the middle of this section, so that constants can be
+     loaded efficiently via a base-register relative addressing mode.
+     Since the offset in base-register relative mode is fixed and
+     relatively small (e.g., 16 bits), this limits the maximum size of
+     the constant pool.  Thus, in large programs, it is often necessary
+     to use multiple global pointer values in order to be able to
+     address all possible constants.  This option causes a warning to
+     be issued whenever this case occurs.
+
+`--warn-once'
+     Only warn once for each undefined symbol, rather than once per
+     module which refers to it.
+
+`--warn-section-align'
+     Warn if the address of an output section is changed because of
+     alignment.  Typically, the alignment will be set by an input
+     section.  The address will only be changed if it not explicitly
+     specified; that is, if the `SECTIONS' command does not specify a
+     start address for the section (*note SECTIONS::).
+
+`--warn-shared-textrel'
+     Warn if the linker adds a DT_TEXTREL to a shared object.
+
+`--warn-unresolved-symbols'
+     If the linker is going to report an unresolved symbol (see the
+     option `--unresolved-symbols') it will normally generate an error.
+     This option makes it generate a warning instead.
+
+`--error-unresolved-symbols'
+     This restores the linker's default behaviour of generating errors
+     when it is reporting unresolved symbols.
+
+`--whole-archive'
+     For each archive mentioned on the command line after the
+     `--whole-archive' option, include every object file in the archive
+     in the link, rather than searching the archive for the required
+     object files.  This is normally used to turn an archive file into
+     a shared library, forcing every object to be included in the
+     resulting shared library.  This option may be used more than once.
+
+     Two notes when using this option from gcc: First, gcc doesn't know
+     about this option, so you have to use `-Wl,-whole-archive'.
+     Second, don't forget to use `-Wl,-no-whole-archive' after your
+     list of archives, because gcc will add its own list of archives to
+     your link and you may not want this flag to affect those as well.
+
+`--wrap SYMBOL'
+     Use a wrapper function for SYMBOL.  Any undefined reference to
+     SYMBOL will be resolved to `__wrap_SYMBOL'.  Any undefined
+     reference to `__real_SYMBOL' will be resolved to SYMBOL.
+
+     This can be used to provide a wrapper for a system function.  The
+     wrapper function should be called `__wrap_SYMBOL'.  If it wishes
+     to call the system function, it should call `__real_SYMBOL'.
+
+     Here is a trivial example:
+
+          void *
+          __wrap_malloc (size_t c)
+          {
+            printf ("malloc called with %zu\n", c);
+            return __real_malloc (c);
+          }
+
+     If you link other code with this file using `--wrap malloc', then
+     all calls to `malloc' will call the function `__wrap_malloc'
+     instead.  The call to `__real_malloc' in `__wrap_malloc' will call
+     the real `malloc' function.
+
+     You may wish to provide a `__real_malloc' function as well, so that
+     links without the `--wrap' option will succeed.  If you do this,
+     you should not put the definition of `__real_malloc' in the same
+     file as `__wrap_malloc'; if you do, the assembler may resolve the
+     call before the linker has a chance to wrap it to `malloc'.
+
+`--eh-frame-hdr'
+     Request creation of `.eh_frame_hdr' section and ELF
+     `PT_GNU_EH_FRAME' segment header.
+
+`--enable-new-dtags'
+`--disable-new-dtags'
+     This linker can create the new dynamic tags in ELF. But the older
+     ELF systems may not understand them. If you specify
+     `--enable-new-dtags', the dynamic tags will be created as needed.
+     If you specify `--disable-new-dtags', no new dynamic tags will be
+     created. By default, the new dynamic tags are not created. Note
+     that those options are only available for ELF systems.
+
+`--hash-size=NUMBER'
+     Set the default size of the linker's hash tables to a prime number
+     close to NUMBER.  Increasing this value can reduce the length of
+     time it takes the linker to perform its tasks, at the expense of
+     increasing the linker's memory requirements.  Similarly reducing
+     this value can reduce the memory requirements at the expense of
+     speed.
+
+`--reduce-memory-overheads'
+     This option reduces memory requirements at ld runtime, at the
+     expense of linking speed.  This was introduced to select the old
+     O(n^2) algorithm for link map file generation, rather than the new
+     O(n) algorithm which uses about 40% more memory for symbol storage.
+
+     Another effect of the switch is to set the default hash table size
+     to 1021, which again saves memory at the cost of lengthening the
+     linker's run time.  This is not done however if the `--hash-size'
+     switch has been used.
+
+     The `--reduce-memory-overheads' switch may be also be used to
+     enable other tradeoffs in future versions of the linker.
+
+
+2.1.1 Options Specific to i386 PE Targets
+-----------------------------------------
+
+The i386 PE linker supports the `-shared' option, which causes the
+output to be a dynamically linked library (DLL) instead of a normal
+executable.  You should name the output `*.dll' when you use this
+option.  In addition, the linker fully supports the standard `*.def'
+files, which may be specified on the linker command line like an object
+file (in fact, it should precede archives it exports symbols from, to
+ensure that they get linked in, just like a normal object file).
+
+   In addition to the options common to all targets, the i386 PE linker
+support additional command line options that are specific to the i386
+PE target.  Options that take values may be separated from their values
+by either a space or an equals sign.
+
+`--add-stdcall-alias'
+     If given, symbols with a stdcall suffix (@NN) will be exported
+     as-is and also with the suffix stripped.  [This option is specific
+     to the i386 PE targeted port of the linker]
+
+`--base-file FILE'
+     Use FILE as the name of a file in which to save the base addresses
+     of all the relocations needed for generating DLLs with `dlltool'.
+     [This is an i386 PE specific option]
+
+`--dll'
+     Create a DLL instead of a regular executable.  You may also use
+     `-shared' or specify a `LIBRARY' in a given `.def' file.  [This
+     option is specific to the i386 PE targeted port of the linker]
+
+`--enable-stdcall-fixup'
+`--disable-stdcall-fixup'
+     If the link finds a symbol that it cannot resolve, it will attempt
+     to do "fuzzy linking" by looking for another defined symbol that
+     differs only in the format of the symbol name (cdecl vs stdcall)
+     and will resolve that symbol by linking to the match.  For
+     example, the undefined symbol `_foo' might be linked to the
+     function `_foo at 12', or the undefined symbol `_bar at 16' might be
+     linked to the function `_bar'.  When the linker does this, it
+     prints a warning, since it normally should have failed to link,
+     but sometimes import libraries generated from third-party dlls may
+     need this feature to be usable.  If you specify
+     `--enable-stdcall-fixup', this feature is fully enabled and
+     warnings are not printed.  If you specify
+     `--disable-stdcall-fixup', this feature is disabled and such
+     mismatches are considered to be errors.  [This option is specific
+     to the i386 PE targeted port of the linker]
+
+`--export-all-symbols'
+     If given, all global symbols in the objects used to build a DLL
+     will be exported by the DLL.  Note that this is the default if
+     there otherwise wouldn't be any exported symbols.  When symbols are
+     explicitly exported via DEF files or implicitly exported via
+     function attributes, the default is to not export anything else
+     unless this option is given.  Note that the symbols `DllMain at 12',
+     `DllEntryPoint at 0', `DllMainCRTStartup at 12', and `impure_ptr' will
+     not be automatically exported.  Also, symbols imported from other
+     DLLs will not be re-exported, nor will symbols specifying the
+     DLL's internal layout such as those beginning with `_head_' or
+     ending with `_iname'.  In addition, no symbols from `libgcc',
+     `libstd++', `libmingw32', or `crtX.o' will be exported.  Symbols
+     whose names begin with `__rtti_' or `__builtin_' will not be
+     exported, to help with C++ DLLs.  Finally, there is an extensive
+     list of cygwin-private symbols that are not exported (obviously,
+     this applies on when building DLLs for cygwin targets).  These
+     cygwin-excludes are: `_cygwin_dll_entry at 12',
+     `_cygwin_crt0_common at 8', `_cygwin_noncygwin_dll_entry at 12',
+     `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0',
+     `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and
+     `environ'.  [This option is specific to the i386 PE targeted port
+     of the linker]
+
+`--exclude-symbols SYMBOL,SYMBOL,...'
+     Specifies a list of symbols which should not be automatically
+     exported.  The symbol names may be delimited by commas or colons.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--file-alignment'
+     Specify the file alignment.  Sections in the file will always
+     begin at file offsets which are multiples of this number.  This
+     defaults to 512.  [This option is specific to the i386 PE targeted
+     port of the linker]
+
+`--heap RESERVE'
+`--heap RESERVE,COMMIT'
+     Specify the amount of memory to reserve (and optionally commit) to
+     be used as heap for this program.  The default is 1Mb reserved, 4K
+     committed.  [This option is specific to the i386 PE targeted port
+     of the linker]
+
+`--image-base VALUE'
+     Use VALUE as the base address of your program or dll.  This is the
+     lowest memory location that will be used when your program or dll
+     is loaded.  To reduce the need to relocate and improve performance
+     of your dlls, each should have a unique base address and not
+     overlap any other dlls.  The default is 0x400000 for executables,
+     and 0x10000000 for dlls.  [This option is specific to the i386 PE
+     targeted port of the linker]
+
+`--kill-at'
+     If given, the stdcall suffixes (@NN) will be stripped from symbols
+     before they are exported.  [This option is specific to the i386 PE
+     targeted port of the linker]
+
+`--large-address-aware'
+     If given, the appropriate bit in the "Charateristics" field of the
+     COFF header is set to indicate that this executable supports
+     virtual addresses greater than 2 gigabytes.  This should be used
+     in conjuction with the /3GB or /USERVA=VALUE megabytes switch in
+     the "[operating systems]" section of the BOOT.INI.  Otherwise,
+     this bit has no effect.  [This option is specific to PE targeted
+     ports of the linker]
+
+`--major-image-version VALUE'
+     Sets the major number of the "image version".  Defaults to 1.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--major-os-version VALUE'
+     Sets the major number of the "os version".  Defaults to 4.  [This
+     option is specific to the i386 PE targeted port of the linker]
+
+`--major-subsystem-version VALUE'
+     Sets the major number of the "subsystem version".  Defaults to 4.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--minor-image-version VALUE'
+     Sets the minor number of the "image version".  Defaults to 0.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--minor-os-version VALUE'
+     Sets the minor number of the "os version".  Defaults to 0.  [This
+     option is specific to the i386 PE targeted port of the linker]
+
+`--minor-subsystem-version VALUE'
+     Sets the minor number of the "subsystem version".  Defaults to 0.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--output-def FILE'
+     The linker will create the file FILE which will contain a DEF file
+     corresponding to the DLL the linker is generating.  This DEF file
+     (which should be called `*.def') may be used to create an import
+     library with `dlltool' or may be used as a reference to
+     automatically or implicitly exported symbols.  [This option is
+     specific to the i386 PE targeted port of the linker]
+
+`--out-implib FILE'
+     The linker will create the file FILE which will contain an import
+     lib corresponding to the DLL the linker is generating. This import
+     lib (which should be called `*.dll.a' or `*.a' may be used to link
+     clients against the generated DLL; this behaviour makes it
+     possible to skip a separate `dlltool' import library creation step.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--enable-auto-image-base'
+     Automatically choose the image base for DLLs, unless one is
+     specified using the `--image-base' argument.  By using a hash
+     generated from the dllname to create unique image bases for each
+     DLL, in-memory collisions and relocations which can delay program
+     execution are avoided.  [This option is specific to the i386 PE
+     targeted port of the linker]
+
+`--disable-auto-image-base'
+     Do not automatically generate a unique image base.  If there is no
+     user-specified image base (`--image-base') then use the platform
+     default.  [This option is specific to the i386 PE targeted port of
+     the linker]
+
+`--dll-search-prefix STRING'
+     When linking dynamically to a dll without an import library,
+     search for `<string><basename>.dll' in preference to
+     `lib<basename>.dll'. This behaviour allows easy distinction
+     between DLLs built for the various "subplatforms": native, cygwin,
+     uwin, pw, etc.  For instance, cygwin DLLs typically use
+     `--dll-search-prefix=cyg'.  [This option is specific to the i386
+     PE targeted port of the linker]
+
+`--enable-auto-import'
+     Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA
+     imports from DLLs, and create the necessary thunking symbols when
+     building the import libraries with those DATA exports. Note: Use
+     of the 'auto-import' extension will cause the text section of the
+     image file to be made writable. This does not conform to the
+     PE-COFF format specification published by Microsoft.
+
+     Using 'auto-import' generally will 'just work' - but sometimes you
+     may see this message:
+
+     "variable '<var>' can't be auto-imported. Please read the
+     documentation for ld's `--enable-auto-import' for details."
+
+     This message occurs when some (sub)expression accesses an address
+     ultimately given by the sum of two constants (Win32 import tables
+     only allow one).  Instances where this may occur include accesses
+     to member fields of struct variables imported from a DLL, as well
+     as using a constant index into an array variable imported from a
+     DLL.  Any multiword variable (arrays, structs, long long, etc) may
+     trigger this error condition.  However, regardless of the exact
+     data type of the offending exported variable, ld will always
+     detect it, issue the warning, and exit.
+
+     There are several ways to address this difficulty, regardless of
+     the data type of the exported variable:
+
+     One way is to use -enable-runtime-pseudo-reloc switch. This leaves
+     the task of adjusting references in your client code for runtime
+     environment, so this method works only when runtime environment
+     supports this feature.
+
+     A second solution is to force one of the 'constants' to be a
+     variable - that is, unknown and un-optimizable at compile time.
+     For arrays, there are two possibilities: a) make the indexee (the
+     array's address) a variable, or b) make the 'constant' index a
+     variable.  Thus:
+
+          extern type extern_array[];
+          extern_array[1] -->
+             { volatile type *t=extern_array; t[1] }
+
+     or
+
+          extern type extern_array[];
+          extern_array[1] -->
+             { volatile int t=1; extern_array[t] }
+
+     For structs (and most other multiword data types) the only option
+     is to make the struct itself (or the long long, or the ...)
+     variable:
+
+          extern struct s extern_struct;
+          extern_struct.field -->
+             { volatile struct s *t=&extern_struct; t->field }
+
+     or
+
+          extern long long extern_ll;
+          extern_ll -->
+            { volatile long long * local_ll=&extern_ll; *local_ll }
+
+     A third method of dealing with this difficulty is to abandon
+     'auto-import' for the offending symbol and mark it with
+     `__declspec(dllimport)'.  However, in practise that requires using
+     compile-time #defines to indicate whether you are building a DLL,
+     building client code that will link to the DLL, or merely
+     building/linking to a static library.   In making the choice
+     between the various methods of resolving the 'direct address with
+     constant offset' problem, you should consider typical real-world
+     usage:
+
+     Original:
+          --foo.h
+          extern int arr[];
+          --foo.c
+          #include "foo.h"
+          void main(int argc, char **argv){
+            printf("%d\n",arr[1]);
+          }
+
+     Solution 1:
+          --foo.h
+          extern int arr[];
+          --foo.c
+          #include "foo.h"
+          void main(int argc, char **argv){
+            /* This workaround is for win32 and cygwin; do not "optimize" */
+            volatile int *parr = arr;
+            printf("%d\n",parr[1]);
+          }
+
+     Solution 2:
+          --foo.h
+          /* Note: auto-export is assumed (no __declspec(dllexport)) */
+          #if (defined(_WIN32) || defined(__CYGWIN__)) && \
+            !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
+          #define FOO_IMPORT __declspec(dllimport)
+          #else
+          #define FOO_IMPORT
+          #endif
+          extern FOO_IMPORT int arr[];
+          --foo.c
+          #include "foo.h"
+          void main(int argc, char **argv){
+            printf("%d\n",arr[1]);
+          }
+
+     A fourth way to avoid this problem is to re-code your library to
+     use a functional interface rather than a data interface for the
+     offending variables (e.g. set_foo() and get_foo() accessor
+     functions).  [This option is specific to the i386 PE targeted port
+     of the linker]
+
+`--disable-auto-import'
+     Do not attempt to do sophisticated linking of `_symbol' to
+     `__imp__symbol' for DATA imports from DLLs.  [This option is
+     specific to the i386 PE targeted port of the linker]
+
+`--enable-runtime-pseudo-reloc'
+     If your code contains expressions described in -enable-auto-import
+     section, that is, DATA imports from DLL with non-zero offset, this
+     switch will create a vector of 'runtime pseudo relocations' which
+     can be used by runtime environment to adjust references to such
+     data in your client code.  [This option is specific to the i386 PE
+     targeted port of the linker]
+
+`--disable-runtime-pseudo-reloc'
+     Do not create pseudo relocations for non-zero offset DATA imports
+     from DLLs.  This is the default.  [This option is specific to the
+     i386 PE targeted port of the linker]
+
+`--enable-extra-pe-debug'
+     Show additional debug info related to auto-import symbol thunking.
+     [This option is specific to the i386 PE targeted port of the
+     linker]
+
+`--section-alignment'
+     Sets the section alignment.  Sections in memory will always begin
+     at addresses which are a multiple of this number.  Defaults to
+     0x1000.  [This option is specific to the i386 PE targeted port of
+     the linker]
+
+`--stack RESERVE'
+`--stack RESERVE,COMMIT'
+     Specify the amount of memory to reserve (and optionally commit) to
+     be used as stack for this program.  The default is 2Mb reserved, 4K
+     committed.  [This option is specific to the i386 PE targeted port
+     of the linker]
+
+`--subsystem WHICH'
+`--subsystem WHICH:MAJOR'
+`--subsystem WHICH:MAJOR.MINOR'
+     Specifies the subsystem under which your program will execute.  The
+     legal values for WHICH are `native', `windows', `console',
+     `posix', and `xbox'.  You may optionally set the subsystem version
+     also.  Numeric values are also accepted for WHICH.  [This option
+     is specific to the i386 PE targeted port of the linker]
+
+
+
+File: ld.info,  Node: Environment,  Prev: Options,  Up: Invocation
+
+2.2 Environment Variables
+=========================
+
+You can change the behaviour of `ld' with the environment variables
+`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'.
+
+   `GNUTARGET' determines the input-file object format if you don't use
+`-b' (or its synonym `--format').  Its value should be one of the BFD
+names for an input format (*note BFD::).  If there is no `GNUTARGET' in
+the environment, `ld' uses the natural format of the target. If
+`GNUTARGET' is set to `default' then BFD attempts to discover the input
+format by examining binary input files; this method often succeeds, but
+there are potential ambiguities, since there is no method of ensuring
+that the magic number used to specify object-file formats is unique.
+However, the configuration procedure for BFD on each system places the
+conventional format for that system first in the search-list, so
+ambiguities are resolved in favor of convention.
+
+   `LDEMULATION' determines the default emulation if you don't use the
+`-m' option.  The emulation can affect various aspects of linker
+behaviour, particularly the default linker script.  You can list the
+available emulations with the `--verbose' or `-V' options.  If the `-m'
+option is not used, and the `LDEMULATION' environment variable is not
+defined, the default emulation depends upon how the linker was
+configured.
+
+   Normally, the linker will default to demangling symbols.  However, if
+`COLLECT_NO_DEMANGLE' is set in the environment, then it will default
+to not demangling symbols.  This environment variable is used in a
+similar fashion by the `gcc' linker wrapper program.  The default may
+be overridden by the `--demangle' and `--no-demangle' options.
+
+
+File: ld.info,  Node: Scripts,  Next: Machine Dependent,  Prev: Invocation,  Up: Top
+
+3 Linker Scripts
+****************
+
+Every link is controlled by a "linker script".  This script is written
+in the linker command language.
+
+   The main purpose of the linker script is to describe how the
+sections in the input files should be mapped into the output file, and
+to control the memory layout of the output file.  Most linker scripts
+do nothing more than this.  However, when necessary, the linker script
+can also direct the linker to perform many other operations, using the
+commands described below.
+
+   The linker always uses a linker script.  If you do not supply one
+yourself, the linker will use a default script that is compiled into the
+linker executable.  You can use the `--verbose' command line option to
+display the default linker script.  Certain command line options, such
+as `-r' or `-N', will affect the default linker script.
+
+   You may supply your own linker script by using the `-T' command line
+option.  When you do this, your linker script will replace the default
+linker script.
+
+   You may also use linker scripts implicitly by naming them as input
+files to the linker, as though they were files to be linked.  *Note
+Implicit Linker Scripts::.
+
+* Menu:
+
+* Basic Script Concepts::	Basic Linker Script Concepts
+* Script Format::		Linker Script Format
+* Simple Example::		Simple Linker Script Example
+* Simple Commands::		Simple Linker Script Commands
+* Assignments::			Assigning Values to Symbols
+* SECTIONS::			SECTIONS Command
+* MEMORY::			MEMORY Command
+* PHDRS::			PHDRS Command
+* VERSION::			VERSION Command
+* Expressions::			Expressions in Linker Scripts
+* Implicit Linker Scripts::	Implicit Linker Scripts
+
+
+File: ld.info,  Node: Basic Script Concepts,  Next: Script Format,  Up: Scripts
+
+3.1 Basic Linker Script Concepts
+================================
+
+We need to define some basic concepts and vocabulary in order to
+describe the linker script language.
+
+   The linker combines input files into a single output file.  The
+output file and each input file are in a special data format known as an
+"object file format".  Each file is called an "object file".  The
+output file is often called an "executable", but for our purposes we
+will also call it an object file.  Each object file has, among other
+things, a list of "sections".  We sometimes refer to a section in an
+input file as an "input section"; similarly, a section in the output
+file is an "output section".
+
+   Each section in an object file has a name and a size.  Most sections
+also have an associated block of data, known as the "section contents".
+A section may be marked as "loadable", which mean that the contents
+should be loaded into memory when the output file is run.  A section
+with no contents may be "allocatable", which means that an area in
+memory should be set aside, but nothing in particular should be loaded
+there (in some cases this memory must be zeroed out).  A section which
+is neither loadable nor allocatable typically contains some sort of
+debugging information.
+
+   Every loadable or allocatable output section has two addresses.  The
+first is the "VMA", or virtual memory address.  This is the address the
+section will have when the output file is run.  The second is the
+"LMA", or load memory address.  This is the address at which the
+section will be loaded.  In most cases the two addresses will be the
+same.  An example of when they might be different is when a data section
+is loaded into ROM, and then copied into RAM when the program starts up
+(this technique is often used to initialize global variables in a ROM
+based system).  In this case the ROM address would be the LMA, and the
+RAM address would be the VMA.
+
+   You can see the sections in an object file by using the `objdump'
+program with the `-h' option.
+
+   Every object file also has a list of "symbols", known as the "symbol
+table".  A symbol may be defined or undefined.  Each symbol has a name,
+and each defined symbol has an address, among other information.  If
+you compile a C or C++ program into an object file, you will get a
+defined symbol for every defined function and global or static
+variable.  Every undefined function or global variable which is
+referenced in the input file will become an undefined symbol.
+
+   You can see the symbols in an object file by using the `nm' program,
+or by using the `objdump' program with the `-t' option.
+
+
+File: ld.info,  Node: Script Format,  Next: Simple Example,  Prev: Basic Script Concepts,  Up: Scripts
+
+3.2 Linker Script Format
+========================
+
+Linker scripts are text files.
+
+   You write a linker script as a series of commands.  Each command is
+either a keyword, possibly followed by arguments, or an assignment to a
+symbol.  You may separate commands using semicolons.  Whitespace is
+generally ignored.
+
+   Strings such as file or format names can normally be entered
+directly.  If the file name contains a character such as a comma which
+would otherwise serve to separate file names, you may put the file name
+in double quotes.  There is no way to use a double quote character in a
+file name.
+
+   You may include comments in linker scripts just as in C, delimited by
+`/*' and `*/'.  As in C, comments are syntactically equivalent to
+whitespace.
+
+
+File: ld.info,  Node: Simple Example,  Next: Simple Commands,  Prev: Script Format,  Up: Scripts
+
+3.3 Simple Linker Script Example
+================================
+
+Many linker scripts are fairly simple.
+
+   The simplest possible linker script has just one command:
+`SECTIONS'.  You use the `SECTIONS' command to describe the memory
+layout of the output file.
+
+   The `SECTIONS' command is a powerful command.  Here we will describe
+a simple use of it.  Let's assume your program consists only of code,
+initialized data, and uninitialized data.  These will be in the
+`.text', `.data', and `.bss' sections, respectively.  Let's assume
+further that these are the only sections which appear in your input
+files.
+
+   For this example, let's say that the code should be loaded at address
+0x10000, and that the data should start at address 0x8000000.  Here is a
+linker script which will do that:
+     SECTIONS
+     {
+       . = 0x10000;
+       .text : { *(.text) }
+       . = 0x8000000;
+       .data : { *(.data) }
+       .bss : { *(.bss) }
+     }
+
+   You write the `SECTIONS' command as the keyword `SECTIONS', followed
+by a series of symbol assignments and output section descriptions
+enclosed in curly braces.
+
+   The first line inside the `SECTIONS' command of the above example
+sets the value of the special symbol `.', which is the location
+counter.  If you do not specify the address of an output section in some
+other way (other ways are described later), the address is set from the
+current value of the location counter.  The location counter is then
+incremented by the size of the output section.  At the start of the
+`SECTIONS' command, the location counter has the value `0'.
+
+   The second line defines an output section, `.text'.  The colon is
+required syntax which may be ignored for now.  Within the curly braces
+after the output section name, you list the names of the input sections
+which should be placed into this output section.  The `*' is a wildcard
+which matches any file name.  The expression `*(.text)' means all
+`.text' input sections in all input files.
+
+   Since the location counter is `0x10000' when the output section
+`.text' is defined, the linker will set the address of the `.text'
+section in the output file to be `0x10000'.
+
+   The remaining lines define the `.data' and `.bss' sections in the
+output file.  The linker will place the `.data' output section at
+address `0x8000000'.  After the linker places the `.data' output
+section, the value of the location counter will be `0x8000000' plus the
+size of the `.data' output section.  The effect is that the linker will
+place the `.bss' output section immediately after the `.data' output
+section in memory.
+
+   The linker will ensure that each output section has the required
+alignment, by increasing the location counter if necessary.  In this
+example, the specified addresses for the `.text' and `.data' sections
+will probably satisfy any alignment constraints, but the linker may
+have to create a small gap between the `.data' and `.bss' sections.
+
+   That's it!  That's a simple and complete linker script.
+
+
+File: ld.info,  Node: Simple Commands,  Next: Assignments,  Prev: Simple Example,  Up: Scripts
+
+3.4 Simple Linker Script Commands
+=================================
+
+In this section we describe the simple linker script commands.
+
+* Menu:
+
+* Entry Point::			Setting the entry point
+* File Commands::		Commands dealing with files
+
+* Format Commands::		Commands dealing with object file formats
+
+* Miscellaneous Commands::	Other linker script commands
+
+
+File: ld.info,  Node: Entry Point,  Next: File Commands,  Up: Simple Commands
+
+3.4.1 Setting the Entry Point
+-----------------------------
+
+The first instruction to execute in a program is called the "entry
+point".  You can use the `ENTRY' linker script command to set the entry
+point.  The argument is a symbol name:
+     ENTRY(SYMBOL)
+
+   There are several ways to set the entry point.  The linker will set
+the entry point by trying each of the following methods in order, and
+stopping when one of them succeeds:
+   * the `-e' ENTRY command-line option;
+
+   * the `ENTRY(SYMBOL)' command in a linker script;
+
+   * the value of the symbol `start', if defined;
+
+   * the address of the first byte of the `.text' section, if present;
+
+   * The address `0'.
+
+
+File: ld.info,  Node: File Commands,  Next: Format Commands,  Prev: Entry Point,  Up: Simple Commands
+
+3.4.2 Commands Dealing with Files
+---------------------------------
+
+Several linker script commands deal with files.
+
+`INCLUDE FILENAME'
+     Include the linker script FILENAME at this point.  The file will
+     be searched for in the current directory, and in any directory
+     specified with the `-L' option.  You can nest calls to `INCLUDE'
+     up to 10 levels deep.
+
+`INPUT(FILE, FILE, ...)'
+`INPUT(FILE FILE ...)'
+     The `INPUT' command directs the linker to include the named files
+     in the link, as though they were named on the command line.
+
+     For example, if you always want to include `subr.o' any time you do
+     a link, but you can't be bothered to put it on every link command
+     line, then you can put `INPUT (subr.o)' in your linker script.
+
+     In fact, if you like, you can list all of your input files in the
+     linker script, and then invoke the linker with nothing but a `-T'
+     option.
+
+     In case a "sysroot prefix" is configured, and the filename starts
+     with the `/' character, and the script being processed was located
+     inside the "sysroot prefix", the filename will be looked for in
+     the "sysroot prefix".  Otherwise, the linker will try to open the
+     file in the current directory.  If it is not found, the linker
+     will search through the archive library search path.  See the
+     description of `-L' in *Note Command Line Options: Options.
+
+     If you use `INPUT (-lFILE)', `ld' will transform the name to
+     `libFILE.a', as with the command line argument `-l'.
+
+     When you use the `INPUT' command in an implicit linker script, the
+     files will be included in the link at the point at which the linker
+     script file is included.  This can affect archive searching.
+
+`GROUP(FILE, FILE, ...)'
+`GROUP(FILE FILE ...)'
+     The `GROUP' command is like `INPUT', except that the named files
+     should all be archives, and they are searched repeatedly until no
+     new undefined references are created.  See the description of `-('
+     in *Note Command Line Options: Options.
+
+`AS_NEEDED(FILE, FILE, ...)'
+`AS_NEEDED(FILE FILE ...)'
+     This construct can appear only inside of the `INPUT' or `GROUP'
+     commands, among other filenames.  The files listed will be handled
+     as if they appear directly in the `INPUT' or `GROUP' commands,
+     with the exception of ELF shared libraries, that will be added only
+     when they are actually needed.  This construct essentially enables
+     `--as-needed' option for all the files listed inside of it and
+     restores previous `--as-needed' resp. `--no-as-needed' setting
+     afterwards.
+
+`OUTPUT(FILENAME)'
+     The `OUTPUT' command names the output file.  Using
+     `OUTPUT(FILENAME)' in the linker script is exactly like using `-o
+     FILENAME' on the command line (*note Command Line Options:
+     Options.).  If both are used, the command line option takes
+     precedence.
+
+     You can use the `OUTPUT' command to define a default name for the
+     output file other than the usual default of `a.out'.
+
+`SEARCH_DIR(PATH)'
+     The `SEARCH_DIR' command adds PATH to the list of paths where `ld'
+     looks for archive libraries.  Using `SEARCH_DIR(PATH)' is exactly
+     like using `-L PATH' on the command line (*note Command Line
+     Options: Options.).  If both are used, then the linker will search
+     both paths.  Paths specified using the command line option are
+     searched first.
+
+`STARTUP(FILENAME)'
+     The `STARTUP' command is just like the `INPUT' command, except
+     that FILENAME will become the first input file to be linked, as
+     though it were specified first on the command line.  This may be
+     useful when using a system in which the entry point is always the
+     start of the first file.
+
+
+File: ld.info,  Node: Format Commands,  Next: Miscellaneous Commands,  Prev: File Commands,  Up: Simple Commands
+
+3.4.3 Commands Dealing with Object File Formats
+-----------------------------------------------
+
+A couple of linker script commands deal with object file formats.
+
+`OUTPUT_FORMAT(BFDNAME)'
+`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)'
+     The `OUTPUT_FORMAT' command names the BFD format to use for the
+     output file (*note BFD::).  Using `OUTPUT_FORMAT(BFDNAME)' is
+     exactly like using `--oformat BFDNAME' on the command line (*note
+     Command Line Options: Options.).  If both are used, the command
+     line option takes precedence.
+
+     You can use `OUTPUT_FORMAT' with three arguments to use different
+     formats based on the `-EB' and `-EL' command line options.  This
+     permits the linker script to set the output format based on the
+     desired endianness.
+
+     If neither `-EB' nor `-EL' are used, then the output format will
+     be the first argument, DEFAULT.  If `-EB' is used, the output
+     format will be the second argument, BIG.  If `-EL' is used, the
+     output format will be the third argument, LITTLE.
+
+     For example, the default linker script for the MIPS ELF target
+     uses this command:
+          OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
+     This says that the default format for the output file is
+     `elf32-bigmips', but if the user uses the `-EL' command line
+     option, the output file will be created in the `elf32-littlemips'
+     format.
+
+`TARGET(BFDNAME)'
+     The `TARGET' command names the BFD format to use when reading input
+     files.  It affects subsequent `INPUT' and `GROUP' commands.  This
+     command is like using `-b BFDNAME' on the command line (*note
+     Command Line Options: Options.).  If the `TARGET' command is used
+     but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also
+     used to set the format for the output file.  *Note BFD::.
+
+
+File: ld.info,  Node: Miscellaneous Commands,  Prev: Format Commands,  Up: Simple Commands
+
+3.4.4 Other Linker Script Commands
+----------------------------------
+
+There are a few other linker scripts commands.
+
+`ASSERT(EXP, MESSAGE)'
+     Ensure that EXP is non-zero.  If it is zero, then exit the linker
+     with an error code, and print MESSAGE.
+
+`EXTERN(SYMBOL SYMBOL ...)'
+     Force SYMBOL to be entered in the output file as an undefined
+     symbol.  Doing this may, for example, trigger linking of additional
+     modules from standard libraries.  You may list several SYMBOLs for
+     each `EXTERN', and you may use `EXTERN' multiple times.  This
+     command has the same effect as the `-u' command-line option.
+
+`FORCE_COMMON_ALLOCATION'
+     This command has the same effect as the `-d' command-line option:
+     to make `ld' assign space to common symbols even if a relocatable
+     output file is specified (`-r').
+
+`INHIBIT_COMMON_ALLOCATION'
+     This command has the same effect as the `--no-define-common'
+     command-line option: to make `ld' omit the assignment of addresses
+     to common symbols even for a non-relocatable output file.
+
+`NOCROSSREFS(SECTION SECTION ...)'
+     This command may be used to tell `ld' to issue an error about any
+     references among certain output sections.
+
+     In certain types of programs, particularly on embedded systems when
+     using overlays, when one section is loaded into memory, another
+     section will not be.  Any direct references between the two
+     sections would be errors.  For example, it would be an error if
+     code in one section called a function defined in the other section.
+
+     The `NOCROSSREFS' command takes a list of output section names.  If
+     `ld' detects any cross references between the sections, it reports
+     an error and returns a non-zero exit status.  Note that the
+     `NOCROSSREFS' command uses output section names, not input section
+     names.
+
+`OUTPUT_ARCH(BFDARCH)'
+     Specify a particular output machine architecture.  The argument is
+     one of the names used by the BFD library (*note BFD::).  You can
+     see the architecture of an object file by using the `objdump'
+     program with the `-f' option.
+
+
+File: ld.info,  Node: Assignments,  Next: SECTIONS,  Prev: Simple Commands,  Up: Scripts
+
+3.5 Assigning Values to Symbols
+===============================
+
+You may assign a value to a symbol in a linker script.  This will define
+the symbol and place it into the symbol table with a global scope.
+
+* Menu:
+
+* Simple Assignments::		Simple Assignments
+* PROVIDE::			PROVIDE
+* PROVIDE_HIDDEN::		PROVIDE_HIDDEN
+* Source Code Reference::	How to use a linker script defined symbol in source code
+
+
+File: ld.info,  Node: Simple Assignments,  Next: PROVIDE,  Up: Assignments
+
+3.5.1 Simple Assignments
+------------------------
+
+You may assign to a symbol using any of the C assignment operators:
+
+`SYMBOL = EXPRESSION ;'
+`SYMBOL += EXPRESSION ;'
+`SYMBOL -= EXPRESSION ;'
+`SYMBOL *= EXPRESSION ;'
+`SYMBOL /= EXPRESSION ;'
+`SYMBOL <<= EXPRESSION ;'
+`SYMBOL >>= EXPRESSION ;'
+`SYMBOL &= EXPRESSION ;'
+`SYMBOL |= EXPRESSION ;'
+
+   The first case will define SYMBOL to the value of EXPRESSION.  In
+the other cases, SYMBOL must already be defined, and the value will be
+adjusted accordingly.
+
+   The special symbol name `.' indicates the location counter.  You may
+only use this within a `SECTIONS' command.  *Note Location Counter::.
+
+   The semicolon after EXPRESSION is required.
+
+   Expressions are defined below; see *Note Expressions::.
+
+   You may write symbol assignments as commands in their own right, or
+as statements within a `SECTIONS' command, or as part of an output
+section description in a `SECTIONS' command.
+
+   The section of the symbol will be set from the section of the
+expression; for more information, see *Note Expression Section::.
+
+   Here is an example showing the three different places that symbol
+assignments may be used:
+
+     floating_point = 0;
+     SECTIONS
+     {
+       .text :
+         {
+           *(.text)
+           _etext = .;
+         }
+       _bdata = (. + 3) & ~ 3;
+       .data : { *(.data) }
+     }
+   In this example, the symbol `floating_point' will be defined as
+zero.  The symbol `_etext' will be defined as the address following the
+last `.text' input section.  The symbol `_bdata' will be defined as the
+address following the `.text' output section aligned upward to a 4 byte
+boundary.
+
+
+File: ld.info,  Node: PROVIDE,  Next: PROVIDE_HIDDEN,  Prev: Simple Assignments,  Up: Assignments
+
+3.5.2 PROVIDE
+-------------
+
+In some cases, it is desirable for a linker script to define a symbol
+only if it is referenced and is not defined by any object included in
+the link.  For example, traditional linkers defined the symbol `etext'.
+However, ANSI C requires that the user be able to use `etext' as a
+function name without encountering an error.  The `PROVIDE' keyword may
+be used to define a symbol, such as `etext', only if it is referenced
+but not defined.  The syntax is `PROVIDE(SYMBOL = EXPRESSION)'.
+
+   Here is an example of using `PROVIDE' to define `etext':
+     SECTIONS
+     {
+       .text :
+         {
+           *(.text)
+           _etext = .;
+           PROVIDE(etext = .);
+         }
+     }
+
+   In this example, if the program defines `_etext' (with a leading
+underscore), the linker will give a multiple definition error.  If, on
+the other hand, the program defines `etext' (with no leading
+underscore), the linker will silently use the definition in the program.
+If the program references `etext' but does not define it, the linker
+will use the definition in the linker script.
+
+
+File: ld.info,  Node: PROVIDE_HIDDEN,  Next: Source Code Reference,  Prev: PROVIDE,  Up: Assignments
+
+3.5.3 PROVIDE_HIDDEN
+--------------------
+
+Similar to `PROVIDE'.  For ELF targeted ports, the symbol will be
+hidden and won't be exported.
+
+
+File: ld.info,  Node: Source Code Reference,  Prev: PROVIDE_HIDDEN,  Up: Assignments
+
+3.5.4 Source Code Reference
+---------------------------
+
+Accessing a linker script defined variable from source code is not
+intuitive.  In particular a linker script symbol is not equivalent to a
+variable declaration in a high level language, it is instead a symbol
+that does not have a value.
+
+   Before going further, it is important to note that compilers often
+transform names in the source code into different names when they are
+stored in the symbol table.  For example, Fortran compilers commonly
+prepend or append an underscore, and C++ performs extensive `name
+mangling'.  Therefore there might be a discrepancy between the name of
+a variable as it is used in source code and the name of the same
+variable as it is defined in a linker script.  For example in C a
+linker script variable might be referred to as:
+
+       extern int foo;
+
+   But in the linker script it might be defined as:
+
+       _foo = 1000;
+
+   In the remaining examples however it is assumed that no name
+transformation has taken place.
+
+   When a symbol is declared in a high level language such as C, two
+things happen.  The first is that the compiler reserves enough space in
+the program's memory to hold the _value_ of the symbol.  The second is
+that the compiler creates an entry in the program's symbol table which
+holds the symbol's _address_.  ie the symbol table contains the address
+of the block of memory holding the symbol's value.  So for example the
+following C declaration, at file scope:
+
+       int foo = 1000;
+
+   creates a entry called `foo' in the symbol table.  This entry holds
+the address of an `int' sized block of memory where the number 1000 is
+initially stored.
+
+   When a program references a symbol the compiler generates code that
+first accesses the symbol table to find the address of the symbol's
+memory block and then code to read the value from that memory block.
+So:
+
+       foo = 1;
+
+   looks up the symbol `foo' in the symbol table, gets the address
+associated with this symbol and then writes the value 1 into that
+address.  Whereas:
+
+       int * a = & foo;
+
+   looks up the symbol `foo' in the symbol table, gets it address and
+then copies this address into the block of memory associated with the
+variable `a'.
+
+   Linker scripts symbol declarations, by contrast, create an entry in
+the symbol table but do not assign any memory to them.  Thus they are
+an address without a value.  So for example the linker script
+definition:
+
+       foo = 1000;
+
+   creates an entry in the symbol table called `foo' which holds the
+address of memory location 1000, but nothing special is stored at
+address 1000.  This means that you cannot access the _value_ of a
+linker script defined symbol - it has no value - all you can do is
+access the _address_ of a linker script defined symbol.
+
+   Hence when you are using a linker script defined symbol in source
+code you should always take the address of the symbol, and never
+attempt to use its value.  For example suppose you want to copy the
+contents of a section of memory called .ROM into a section called
+.FLASH and the linker script contains these declarations:
+
+       start_of_ROM   = .ROM;
+       end_of_ROM     = .ROM + sizeof (.ROM) - 1;
+       start_of_FLASH = .FLASH;
+
+   Then the C source code to perform the copy would be:
+
+       extern char start_of_ROM, end_of_ROM, start_of_FLASH;
+
+       memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM);
+
+   Note the use of the `&' operators.  These are correct.
+
+
+File: ld.info,  Node: SECTIONS,  Next: MEMORY,  Prev: Assignments,  Up: Scripts
+
+3.6 SECTIONS Command
+====================
+
+The `SECTIONS' command tells the linker how to map input sections into
+output sections, and how to place the output sections in memory.
+
+   The format of the `SECTIONS' command is:
+     SECTIONS
+     {
+       SECTIONS-COMMAND
+       SECTIONS-COMMAND
+       ...
+     }
+
+   Each SECTIONS-COMMAND may of be one of the following:
+
+   * an `ENTRY' command (*note Entry command: Entry Point.)
+
+   * a symbol assignment (*note Assignments::)
+
+   * an output section description
+
+   * an overlay description
+
+   The `ENTRY' command and symbol assignments are permitted inside the
+`SECTIONS' command for convenience in using the location counter in
+those commands.  This can also make the linker script easier to
+understand because you can use those commands at meaningful points in
+the layout of the output file.
+
+   Output section descriptions and overlay descriptions are described
+below.
+
+   If you do not use a `SECTIONS' command in your linker script, the
+linker will place each input section into an identically named output
+section in the order that the sections are first encountered in the
+input files.  If all input sections are present in the first file, for
+example, the order of sections in the output file will match the order
+in the first input file.  The first section will be at address zero.
+
+* Menu:
+
+* Output Section Description::	Output section description
+* Output Section Name::		Output section name
+* Output Section Address::	Output section address
+* Input Section::		Input section description
+* Output Section Data::		Output section data
+* Output Section Keywords::	Output section keywords
+* Output Section Discarding::	Output section discarding
+* Output Section Attributes::	Output section attributes
+* Overlay Description::		Overlay description
+
+
+File: ld.info,  Node: Output Section Description,  Next: Output Section Name,  Up: SECTIONS
+
+3.6.1 Output Section Description
+--------------------------------
+
+The full description of an output section looks like this:
+     SECTION [ADDRESS] [(TYPE)] :
+       [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
+       {
+         OUTPUT-SECTION-COMMAND
+         OUTPUT-SECTION-COMMAND
+         ...
+       } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
+
+   Most output sections do not use most of the optional section
+attributes.
+
+   The whitespace around SECTION is required, so that the section name
+is unambiguous.  The colon and the curly braces are also required.  The
+line breaks and other white space are optional.
+
+   Each OUTPUT-SECTION-COMMAND may be one of the following:
+
+   * a symbol assignment (*note Assignments::)
+
+   * an input section description (*note Input Section::)
+
+   * data values to include directly (*note Output Section Data::)
+
+   * a special output section keyword (*note Output Section Keywords::)
+
+
+File: ld.info,  Node: Output Section Name,  Next: Output Section Address,  Prev: Output Section Description,  Up: SECTIONS
+
+3.6.2 Output Section Name
+-------------------------
+
+The name of the output section is SECTION.  SECTION must meet the
+constraints of your output format.  In formats which only support a
+limited number of sections, such as `a.out', the name must be one of
+the names supported by the format (`a.out', for example, allows only
+`.text', `.data' or `.bss'). If the output format supports any number
+of sections, but with numbers and not names (as is the case for Oasys),
+the name should be supplied as a quoted numeric string.  A section name
+may consist of any sequence of characters, but a name which contains
+any unusual characters such as commas must be quoted.
+
+   The output section name `/DISCARD/' is special; *Note Output Section
+Discarding::.
+
+
+File: ld.info,  Node: Output Section Address,  Next: Input Section,  Prev: Output Section Name,  Up: SECTIONS
+
+3.6.3 Output Section Address
+----------------------------
+
+The ADDRESS is an expression for the VMA (the virtual memory address)
+of the output section.  If you do not provide ADDRESS, the linker will
+set it based on REGION if present, or otherwise based on the current
+value of the location counter.
+
+   If you provide ADDRESS, the address of the output section will be
+set to precisely that.  If you provide neither ADDRESS nor REGION, then
+the address of the output section will be set to the current value of
+the location counter aligned to the alignment requirements of the
+output section.  The alignment requirement of the output section is the
+strictest alignment of any input section contained within the output
+section.
+
+   For example,
+     .text . : { *(.text) }
+   and
+     .text : { *(.text) }
+   are subtly different.  The first will set the address of the `.text'
+output section to the current value of the location counter.  The
+second will set it to the current value of the location counter aligned
+to the strictest alignment of a `.text' input section.
+
+   The ADDRESS may be an arbitrary expression; *Note Expressions::.
+For example, if you want to align the section on a 0x10 byte boundary,
+so that the lowest four bits of the section address are zero, you could
+do something like this:
+     .text ALIGN(0x10) : { *(.text) }
+   This works because `ALIGN' returns the current location counter
+aligned upward to the specified value.
+
+   Specifying ADDRESS for a section will change the value of the
+location counter.
+
+
+File: ld.info,  Node: Input Section,  Next: Output Section Data,  Prev: Output Section Address,  Up: SECTIONS
+
+3.6.4 Input Section Description
+-------------------------------
+
+The most common output section command is an input section description.
+
+   The input section description is the most basic linker script
+operation.  You use output sections to tell the linker how to lay out
+your program in memory.  You use input section descriptions to tell the
+linker how to map the input files into your memory layout.
+
+* Menu:
+
+* Input Section Basics::	Input section basics
+* Input Section Wildcards::	Input section wildcard patterns
+* Input Section Common::	Input section for common symbols
+* Input Section Keep::		Input section and garbage collection
+* Input Section Example::	Input section example
+
+
+File: ld.info,  Node: Input Section Basics,  Next: Input Section Wildcards,  Up: Input Section
+
+3.6.4.1 Input Section Basics
+............................
+
+An input section description consists of a file name optionally followed
+by a list of section names in parentheses.
+
+   The file name and the section name may be wildcard patterns, which we
+describe further below (*note Input Section Wildcards::).
+
+   The most common input section description is to include all input
+sections with a particular name in the output section.  For example, to
+include all input `.text' sections, you would write:
+     *(.text)
+   Here the `*' is a wildcard which matches any file name.  To exclude
+a list of files from matching the file name wildcard, EXCLUDE_FILE may
+be used to match all files except the ones specified in the
+EXCLUDE_FILE list.  For example:
+     (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors))
+   will cause all .ctors sections from all files except `crtend.o' and
+`otherfile.o' to be included.
+
+   There are two ways to include more than one section:
+     *(.text .rdata)
+     *(.text) *(.rdata)
+   The difference between these is the order in which the `.text' and
+`.rdata' input sections will appear in the output section.  In the
+first example, they will be intermingled, appearing in the same order as
+they are found in the linker input.  In the second example, all `.text'
+input sections will appear first, followed by all `.rdata' input
+sections.
+
+   You can specify a file name to include sections from a particular
+file.  You would do this if one or more of your files contain special
+data that needs to be at a particular location in memory.  For example:
+     data.o(.data)
+
+   If you use a file name without a list of sections, then all sections
+in the input file will be included in the output section.  This is not
+commonly done, but it may by useful on occasion.  For example:
+     data.o
+
+   When you use a file name which does not contain any wild card
+characters, the linker will first see if you also specified the file
+name on the linker command line or in an `INPUT' command.  If you did
+not, the linker will attempt to open the file as an input file, as
+though it appeared on the command line.  Note that this differs from an
+`INPUT' command, because the linker will not search for the file in the
+archive search path.
+
+
+File: ld.info,  Node: Input Section Wildcards,  Next: Input Section Common,  Prev: Input Section Basics,  Up: Input Section
+
+3.6.4.2 Input Section Wildcard Patterns
+.......................................
+
+In an input section description, either the file name or the section
+name or both may be wildcard patterns.
+
+   The file name of `*' seen in many examples is a simple wildcard
+pattern for the file name.
+
+   The wildcard patterns are like those used by the Unix shell.
+
+`*'
+     matches any number of characters
+
+`?'
+     matches any single character
+
+`[CHARS]'
+     matches a single instance of any of the CHARS; the `-' character
+     may be used to specify a range of characters, as in `[a-z]' to
+     match any lower case letter
+
+`\'
+     quotes the following character
+
+   When a file name is matched with a wildcard, the wildcard characters
+will not match a `/' character (used to separate directory names on
+Unix).  A pattern consisting of a single `*' character is an exception;
+it will always match any file name, whether it contains a `/' or not.
+In a section name, the wildcard characters will match a `/' character.
+
+   File name wildcard patterns only match files which are explicitly
+specified on the command line or in an `INPUT' command.  The linker
+does not search directories to expand wildcards.
+
+   If a file name matches more than one wildcard pattern, or if a file
+name appears explicitly and is also matched by a wildcard pattern, the
+linker will use the first match in the linker script.  For example, this
+sequence of input section descriptions is probably in error, because the
+`data.o' rule will not be used:
+     .data : { *(.data) }
+     .data1 : { data.o(.data) }
+
+   Normally, the linker will place files and sections matched by
+wildcards in the order in which they are seen during the link.  You can
+change this by using the `SORT_BY_NAME' keyword, which appears before a
+wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)').  When
+the `SORT_BY_NAME' keyword is used, the linker will sort the files or
+sections into ascending order by name before placing them in the output
+file.
+
+   `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The
+difference is `SORT_BY_ALIGNMENT' will sort sections into ascending
+order by alignment before placing them in the output file.
+
+   `SORT' is an alias for `SORT_BY_NAME'.
+
+   When there are nested section sorting commands in linker script,
+there can be at most 1 level of nesting for section sorting commands.
+
+  1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)).
+     It will sort the input sections by name first, then by alignment
+     if 2 sections have the same name.
+
+  2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)).
+     It will sort the input sections by alignment first, then by name
+     if 2 sections have the same alignment.
+
+  3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is
+     treated the same as `SORT_BY_NAME' (wildcard section pattern).
+
+  4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section
+     pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard
+     section pattern).
+
+  5. All other nested section sorting commands are invalid.
+
+   When both command line section sorting option and linker script
+section sorting command are used, section sorting command always takes
+precedence over the command line option.
+
+   If the section sorting command in linker script isn't nested, the
+command line option will make the section sorting command to be treated
+as nested sorting command.
+
+  1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections
+     alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT'
+     (wildcard section pattern)).
+
+  2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with
+     `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT'
+     (`SORT_BY_NAME' (wildcard section pattern)).
+
+   If the section sorting command in linker script is nested, the
+command line option will be ignored.
+
+   If you ever get confused about where input sections are going, use
+the `-M' linker option to generate a map file.  The map file shows
+precisely how input sections are mapped to output sections.
+
+   This example shows how wildcard patterns might be used to partition
+files.  This linker script directs the linker to place all `.text'
+sections in `.text' and all `.bss' sections in `.bss'.  The linker will
+place the `.data' section from all files beginning with an upper case
+character in `.DATA'; for all other files, the linker will place the
+`.data' section in `.data'.
+     SECTIONS {
+       .text : { *(.text) }
+       .DATA : { [A-Z]*(.data) }
+       .data : { *(.data) }
+       .bss : { *(.bss) }
+     }
+
+
+File: ld.info,  Node: Input Section Common,  Next: Input Section Keep,  Prev: Input Section Wildcards,  Up: Input Section
+
+3.6.4.3 Input Section for Common Symbols
+........................................
+
+A special notation is needed for common symbols, because in many object
+file formats common symbols do not have a particular input section.  The
+linker treats common symbols as though they are in an input section
+named `COMMON'.
+
+   You may use file names with the `COMMON' section just as with any
+other input sections.  You can use this to place common symbols from a
+particular input file in one section while common symbols from other
+input files are placed in another section.
+
+   In most cases, common symbols in input files will be placed in the
+`.bss' section in the output file.  For example:
+     .bss { *(.bss) *(COMMON) }
+
+   Some object file formats have more than one type of common symbol.
+For example, the MIPS ELF object file format distinguishes standard
+common symbols and small common symbols.  In this case, the linker will
+use a different special section name for other types of common symbols.
+In the case of MIPS ELF, the linker uses `COMMON' for standard common
+symbols and `.scommon' for small common symbols.  This permits you to
+map the different types of common symbols into memory at different
+locations.
+
+   You will sometimes see `[COMMON]' in old linker scripts.  This
+notation is now considered obsolete.  It is equivalent to `*(COMMON)'.
+
+
+File: ld.info,  Node: Input Section Keep,  Next: Input Section Example,  Prev: Input Section Common,  Up: Input Section
+
+3.6.4.4 Input Section and Garbage Collection
+............................................
+
+When link-time garbage collection is in use (`--gc-sections'), it is
+often useful to mark sections that should not be eliminated.  This is
+accomplished by surrounding an input section's wildcard entry with
+`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'.
+
+
+File: ld.info,  Node: Input Section Example,  Prev: Input Section Keep,  Up: Input Section
+
+3.6.4.5 Input Section Example
+.............................
+
+The following example is a complete linker script.  It tells the linker
+to read all of the sections from file `all.o' and place them at the
+start of output section `outputa' which starts at location `0x10000'.
+All of section `.input1' from file `foo.o' follows immediately, in the
+same output section.  All of section `.input2' from `foo.o' goes into
+output section `outputb', followed by section `.input1' from `foo1.o'.
+All of the remaining `.input1' and `.input2' sections from any files
+are written to output section `outputc'.
+
+     SECTIONS {
+       outputa 0x10000 :
+         {
+         all.o
+         foo.o (.input1)
+         }
+       outputb :
+         {
+         foo.o (.input2)
+         foo1.o (.input1)
+         }
+       outputc :
+         {
+         *(.input1)
+         *(.input2)
+         }
+     }
+
+
+File: ld.info,  Node: Output Section Data,  Next: Output Section Keywords,  Prev: Input Section,  Up: SECTIONS
+
+3.6.5 Output Section Data
+-------------------------
+
+You can include explicit bytes of data in an output section by using
+`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section
+command.  Each keyword is followed by an expression in parentheses
+providing the value to store (*note Expressions::).  The value of the
+expression is stored at the current value of the location counter.
+
+   The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two,
+four, and eight bytes (respectively).  After storing the bytes, the
+location counter is incremented by the number of bytes stored.
+
+   For example, this will store the byte 1 followed by the four byte
+value of the symbol `addr':
+     BYTE(1)
+     LONG(addr)
+
+   When using a 64 bit host or target, `QUAD' and `SQUAD' are the same;
+they both store an 8 byte, or 64 bit, value.  When both host and target
+are 32 bits, an expression is computed as 32 bits.  In this case `QUAD'
+stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32
+bit value sign extended to 64 bits.
+
+   If the object file format of the output file has an explicit
+endianness, which is the normal case, the value will be stored in that
+endianness.  When the object file format does not have an explicit
+endianness, as is true of, for example, S-records, the value will be
+stored in the endianness of the first input object file.
+
+   Note--these commands only work inside a section description and not
+between them, so the following will produce an error from the linker:
+     SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } }
+   whereas this will work:
+     SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } }
+
+   You may use the `FILL' command to set the fill pattern for the
+current section.  It is followed by an expression in parentheses.  Any
+otherwise unspecified regions of memory within the section (for example,
+gaps left due to the required alignment of input sections) are filled
+with the value of the expression, repeated as necessary.  A `FILL'
+statement covers memory locations after the point at which it occurs in
+the section definition; by including more than one `FILL' statement,
+you can have different fill patterns in different parts of an output
+section.
+
+   This example shows how to fill unspecified regions of memory with the
+value `0x90':
+     FILL(0x90909090)
+
+   The `FILL' command is similar to the `=FILLEXP' output section
+attribute, but it only affects the part of the section following the
+`FILL' command, rather than the entire section.  If both are used, the
+`FILL' command takes precedence.  *Note Output Section Fill::, for
+details on the fill expression.
+
+
+File: ld.info,  Node: Output Section Keywords,  Next: Output Section Discarding,  Prev: Output Section Data,  Up: SECTIONS
+
+3.6.6 Output Section Keywords
+-----------------------------
+
+There are a couple of keywords which can appear as output section
+commands.
+
+`CREATE_OBJECT_SYMBOLS'
+     The command tells the linker to create a symbol for each input
+     file.  The name of each symbol will be the name of the
+     corresponding input file.  The section of each symbol will be the
+     output section in which the `CREATE_OBJECT_SYMBOLS' command
+     appears.
+
+     This is conventional for the a.out object file format.  It is not
+     normally used for any other object file format.
+
+`CONSTRUCTORS'
+     When linking using the a.out object file format, the linker uses an
+     unusual set construct to support C++ global constructors and
+     destructors.  When linking object file formats which do not support
+     arbitrary sections, such as ECOFF and XCOFF, the linker will
+     automatically recognize C++ global constructors and destructors by
+     name.  For these object file formats, the `CONSTRUCTORS' command
+     tells the linker to place constructor information in the output
+     section where the `CONSTRUCTORS' command appears.  The
+     `CONSTRUCTORS' command is ignored for other object file formats.
+
+     The symbol `__CTOR_LIST__' marks the start of the global
+     constructors, and the symbol `__CTOR_END__' marks the end.
+     Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and
+     end of the global destructors.  The first word in the list is the
+     number of entries, followed by the address of each constructor or
+     destructor, followed by a zero word.  The compiler must arrange to
+     actually run the code.  For these object file formats GNU C++
+     normally calls constructors from a subroutine `__main'; a call to
+     `__main' is automatically inserted into the startup code for
+     `main'.  GNU C++ normally runs destructors either by using
+     `atexit', or directly from the function `exit'.
+
+     For object file formats such as `COFF' or `ELF' which support
+     arbitrary section names, GNU C++ will normally arrange to put the
+     addresses of global constructors and destructors into the `.ctors'
+     and `.dtors' sections.  Placing the following sequence into your
+     linker script will build the sort of table which the GNU C++
+     runtime code expects to see.
+
+                __CTOR_LIST__ = .;
+                LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
+                *(.ctors)
+                LONG(0)
+                __CTOR_END__ = .;
+                __DTOR_LIST__ = .;
+                LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
+                *(.dtors)
+                LONG(0)
+                __DTOR_END__ = .;
+
+     If you are using the GNU C++ support for initialization priority,
+     which provides some control over the order in which global
+     constructors are run, you must sort the constructors at link time
+     to ensure that they are executed in the correct order.  When using
+     the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)'
+     instead.  When using the `.ctors' and `.dtors' sections, use
+     `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of
+     just `*(.ctors)' and `*(.dtors)'.
+
+     Normally the compiler and linker will handle these issues
+     automatically, and you will not need to concern yourself with
+     them.  However, you may need to consider this if you are using C++
+     and writing your own linker scripts.
+
+
+
+File: ld.info,  Node: Output Section Discarding,  Next: Output Section Attributes,  Prev: Output Section Keywords,  Up: SECTIONS
+
+3.6.7 Output Section Discarding
+-------------------------------
+
+The linker will not create output section which do not have any
+contents.  This is for convenience when referring to input sections that
+may or may not be present in any of the input files.  For example:
+     .foo { *(.foo) }
+   will only create a `.foo' section in the output file if there is a
+`.foo' section in at least one input file.
+
+   If you use anything other than an input section description as an
+output section command, such as a symbol assignment, then the output
+section will always be created, even if there are no matching input
+sections.
+
+   The special output section name `/DISCARD/' may be used to discard
+input sections.  Any input sections which are assigned to an output
+section named `/DISCARD/' are not included in the output file.
+
+
+File: ld.info,  Node: Output Section Attributes,  Next: Overlay Description,  Prev: Output Section Discarding,  Up: SECTIONS
+
+3.6.8 Output Section Attributes
+-------------------------------
+
+We showed above that the full description of an output section looked
+like this:
+     SECTION [ADDRESS] [(TYPE)] :
+       [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)]
+       {
+         OUTPUT-SECTION-COMMAND
+         OUTPUT-SECTION-COMMAND
+         ...
+       } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
+We've already described SECTION, ADDRESS, and
+OUTPUT-SECTION-COMMAND.  In this section we will describe the remaining
+section attributes.
+
+* Menu:
+
+* Output Section Type::		Output section type
+* Output Section LMA::		Output section LMA
+* Forced Output Alignment::	Forced Output Alignment
+* Forced Input Alignment::	Forced Input Alignment
+* Output Section Region::	Output section region
+* Output Section Phdr::		Output section phdr
+* Output Section Fill::		Output section fill
+
+
+File: ld.info,  Node: Output Section Type,  Next: Output Section LMA,  Up: Output Section Attributes
+
+3.6.8.1 Output Section Type
+...........................
+
+Each output section may have a type.  The type is a keyword in
+parentheses.  The following types are defined:
+
+`NOLOAD'
+     The section should be marked as not loadable, so that it will not
+     be loaded into memory when the program is run.
+
+`DSECT'
+`COPY'
+`INFO'
+`OVERLAY'
+     These type names are supported for backward compatibility, and are
+     rarely used.  They all have the same effect: the section should be
+     marked as not allocatable, so that no memory is allocated for the
+     section when the program is run.
+
+   The linker normally sets the attributes of an output section based on
+the input sections which map into it.  You can override this by using
+the section type.  For example, in the script sample below, the `ROM'
+section is addressed at memory location `0' and does not need to be
+loaded when the program is run.  The contents of the `ROM' section will
+appear in the linker output file as usual.
+     SECTIONS {
+       ROM 0 (NOLOAD) : { ... }
+       ...
+     }
+
+
+File: ld.info,  Node: Output Section LMA,  Next: Forced Output Alignment,  Prev: Output Section Type,  Up: Output Section Attributes
+
+3.6.8.2 Output Section LMA
+..........................
+
+Every section has a virtual address (VMA) and a load address (LMA); see
+*Note Basic Script Concepts::.  The address expression which may appear
+in an output section description sets the VMA (*note Output Section
+Address::).
+
+   The linker will normally set the LMA equal to the VMA.  You can
+change that by using the `AT' keyword.  The expression LMA that follows
+the `AT' keyword specifies the load address of the section.
+
+   Alternatively, with `AT>LMA_REGION' expression, you may specify a
+memory region for the section's load address. *Note MEMORY::.  Note
+that if the section has not had a VMA assigned to it then the linker
+will use the LMA_REGION as the VMA region as well.  *Note Output
+Section Region::.
+
+   This feature is designed to make it easy to build a ROM image.  For
+example, the following linker script creates three output sections: one
+called `.text', which starts at `0x1000', one called `.mdata', which is
+loaded at the end of the `.text' section even though its VMA is
+`0x2000', and one called `.bss' to hold uninitialized data at address
+`0x3000'.  The symbol `_data' is defined with the value `0x2000', which
+shows that the location counter holds the VMA value, not the LMA value.
+
+     SECTIONS
+       {
+       .text 0x1000 : { *(.text) _etext = . ; }
+       .mdata 0x2000 :
+         AT ( ADDR (.text) + SIZEOF (.text) )
+         { _data = . ; *(.data); _edata = . ;  }
+       .bss 0x3000 :
+         { _bstart = . ;  *(.bss) *(COMMON) ; _bend = . ;}
+     }
+
+   The run-time initialization code for use with a program generated
+with this linker script would include something like the following, to
+copy the initialized data from the ROM image to its runtime address.
+Notice how this code takes advantage of the symbols defined by the
+linker script.
+
+     extern char _etext, _data, _edata, _bstart, _bend;
+     char *src = &_etext;
+     char *dst = &_data;
+
+     /* ROM has data at end of text; copy it. */
+     while (dst < &_edata) {
+       *dst++ = *src++;
+     }
+
+     /* Zero bss */
+     for (dst = &_bstart; dst< &_bend; dst++)
+       *dst = 0;
+
+
+File: ld.info,  Node: Forced Output Alignment,  Next: Forced Input Alignment,  Prev: Output Section LMA,  Up: Output Section Attributes
+
+3.6.8.3 Forced Output Alignment
+...............................
+
+You can increase an output section's alignment by using ALIGN.
+
+
+File: ld.info,  Node: Forced Input Alignment,  Next: Output Section Region,  Prev: Forced Output Alignment,  Up: Output Section Attributes
+
+3.6.8.4 Forced Input Alignment
+..............................
+
+You can force input section alignment within an output section by using
+SUBALIGN.  The value specified overrides any alignment given by input
+sections, whether larger or smaller.
+
+
+File: ld.info,  Node: Output Section Region,  Next: Output Section Phdr,  Prev: Forced Input Alignment,  Up: Output Section Attributes
+
+3.6.8.5 Output Section Region
+.............................
+
+You can assign a section to a previously defined region of memory by
+using `>REGION'.  *Note MEMORY::.
+
+   Here is a simple example:
+     MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 }
+     SECTIONS { ROM : { *(.text) } >rom }
+
+
+File: ld.info,  Node: Output Section Phdr,  Next: Output Section Fill,  Prev: Output Section Region,  Up: Output Section Attributes
+
+3.6.8.6 Output Section Phdr
+...........................
+
+You can assign a section to a previously defined program segment by
+using `:PHDR'.  *Note PHDRS::.  If a section is assigned to one or more
+segments, then all subsequent allocated sections will be assigned to
+those segments as well, unless they use an explicitly `:PHDR' modifier.
+You can use `:NONE' to tell the linker to not put the section in any
+segment at all.
+
+   Here is a simple example:
+     PHDRS { text PT_LOAD ; }
+     SECTIONS { .text : { *(.text) } :text }
+
+
+File: ld.info,  Node: Output Section Fill,  Prev: Output Section Phdr,  Up: Output Section Attributes
+
+3.6.8.7 Output Section Fill
+...........................
+
+You can set the fill pattern for an entire section by using `=FILLEXP'.
+FILLEXP is an expression (*note Expressions::).  Any otherwise
+unspecified regions of memory within the output section (for example,
+gaps left due to the required alignment of input sections) will be
+filled with the value, repeated as necessary.  If the fill expression
+is a simple hex number, ie. a string of hex digit starting with `0x'
+and without a trailing `k' or `M', then an arbitrarily long sequence of
+hex digits can be used to specify the fill pattern;  Leading zeros
+become part of the pattern too.  For all other cases, including extra
+parentheses or a unary `+', the fill pattern is the four least
+significant bytes of the value of the expression.  In all cases, the
+number is big-endian.
+
+   You can also change the fill value with a `FILL' command in the
+output section commands; (*note Output Section Data::).
+
+   Here is a simple example:
+     SECTIONS { .text : { *(.text) } =0x90909090 }
+
+
+File: ld.info,  Node: Overlay Description,  Prev: Output Section Attributes,  Up: SECTIONS
+
+3.6.9 Overlay Description
+-------------------------
+
+An overlay description provides an easy way to describe sections which
+are to be loaded as part of a single memory image but are to be run at
+the same memory address.  At run time, some sort of overlay manager will
+copy the overlaid sections in and out of the runtime memory address as
+required, perhaps by simply manipulating addressing bits.  This approach
+can be useful, for example, when a certain region of memory is faster
+than another.
+
+   Overlays are described using the `OVERLAY' command.  The `OVERLAY'
+command is used within a `SECTIONS' command, like an output section
+description.  The full syntax of the `OVERLAY' command is as follows:
+     OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )]
+       {
+         SECNAME1
+           {
+             OUTPUT-SECTION-COMMAND
+             OUTPUT-SECTION-COMMAND
+             ...
+           } [:PHDR...] [=FILL]
+         SECNAME2
+           {
+             OUTPUT-SECTION-COMMAND
+             OUTPUT-SECTION-COMMAND
+             ...
+           } [:PHDR...] [=FILL]
+         ...
+       } [>REGION] [:PHDR...] [=FILL]
+
+   Everything is optional except `OVERLAY' (a keyword), and each
+section must have a name (SECNAME1 and SECNAME2 above).  The section
+definitions within the `OVERLAY' construct are identical to those
+within the general `SECTIONS' contruct (*note SECTIONS::), except that
+no addresses and no memory regions may be defined for sections within
+an `OVERLAY'.
+
+   The sections are all defined with the same starting address.  The
+load addresses of the sections are arranged such that they are
+consecutive in memory starting at the load address used for the
+`OVERLAY' as a whole (as with normal section definitions, the load
+address is optional, and defaults to the start address; the start
+address is also optional, and defaults to the current value of the
+location counter).
+
+   If the `NOCROSSREFS' keyword is used, and there any references among
+the sections, the linker will report an error.  Since the sections all
+run at the same address, it normally does not make sense for one
+section to refer directly to another.  *Note NOCROSSREFS: Miscellaneous
+Commands.
+
+   For each section within the `OVERLAY', the linker automatically
+defines two symbols.  The symbol `__load_start_SECNAME' is defined as
+the starting load address of the section.  The symbol
+`__load_stop_SECNAME' is defined as the final load address of the
+section.  Any characters within SECNAME which are not legal within C
+identifiers are removed.  C (or assembler) code may use these symbols
+to move the overlaid sections around as necessary.
+
+   At the end of the overlay, the value of the location counter is set
+to the start address of the overlay plus the size of the largest
+section.
+
+   Here is an example.  Remember that this would appear inside a
+`SECTIONS' construct.
+       OVERLAY 0x1000 : AT (0x4000)
+        {
+          .text0 { o1/*.o(.text) }
+          .text1 { o2/*.o(.text) }
+        }
+This will define both `.text0' and `.text1' to start at address
+0x1000.  `.text0' will be loaded at address 0x4000, and `.text1' will
+be loaded immediately after `.text0'.  The following symbols will be
+defined: `__load_start_text0', `__load_stop_text0',
+`__load_start_text1', `__load_stop_text1'.
+
+   C code to copy overlay `.text1' into the overlay area might look
+like the following.
+
+       extern char __load_start_text1, __load_stop_text1;
+       memcpy ((char *) 0x1000, &__load_start_text1,
+               &__load_stop_text1 - &__load_start_text1);
+
+   Note that the `OVERLAY' command is just syntactic sugar, since
+everything it does can be done using the more basic commands.  The above
+example could have been written identically as follows.
+
+       .text0 0x1000 : AT (0x4000) { o1/*.o(.text) }
+       __load_start_text0 = LOADADDR (.text0);
+       __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0);
+       .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) }
+       __load_start_text1 = LOADADDR (.text1);
+       __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1);
+       . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
+
+
+File: ld.info,  Node: MEMORY,  Next: PHDRS,  Prev: SECTIONS,  Up: Scripts
+
+3.7 MEMORY Command
+==================
+
+The linker's default configuration permits allocation of all available
+memory.  You can override this by using the `MEMORY' command.
+
+   The `MEMORY' command describes the location and size of blocks of
+memory in the target.  You can use it to describe which memory regions
+may be used by the linker, and which memory regions it must avoid.  You
+can then assign sections to particular memory regions.  The linker will
+set section addresses based on the memory regions, and will warn about
+regions that become too full.  The linker will not shuffle sections
+around to fit into the available regions.
+
+   A linker script may contain at most one use of the `MEMORY' command.
+However, you can define as many blocks of memory within it as you
+wish.  The syntax is:
+     MEMORY
+       {
+         NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN
+         ...
+       }
+
+   The NAME is a name used in the linker script to refer to the region.
+The region name has no meaning outside of the linker script.  Region
+names are stored in a separate name space, and will not conflict with
+symbol names, file names, or section names.  Each memory region must
+have a distinct name.
+
+   The ATTR string is an optional list of attributes that specify
+whether to use a particular memory region for an input section which is
+not explicitly mapped in the linker script.  As described in *Note
+SECTIONS::, if you do not specify an output section for some input
+section, the linker will create an output section with the same name as
+the input section.  If you define region attributes, the linker will use
+them to select the memory region for the output section that it creates.
+
+   The ATTR string must consist only of the following characters:
+`R'
+     Read-only section
+
+`W'
+     Read/write section
+
+`X'
+     Executable section
+
+`A'
+     Allocatable section
+
+`I'
+     Initialized section
+
+`L'
+     Same as `I'
+
+`!'
+     Invert the sense of any of the preceding attributes
+
+   If a unmapped section matches any of the listed attributes other than
+`!', it will be placed in the memory region.  The `!' attribute
+reverses this test, so that an unmapped section will be placed in the
+memory region only if it does not match any of the listed attributes.
+
+   The ORIGIN is an numerical expression for the start address of the
+memory region.  The expression must evaluate to a constant and it
+cannot involve any symbols.  The keyword `ORIGIN' may be abbreviated to
+`org' or `o' (but not, for example, `ORG').
+
+   The LEN is an expression for the size in bytes of the memory region.
+As with the ORIGIN expression, the expression must be numerical only
+and must evaluate to a constant.  The keyword `LENGTH' may be
+abbreviated to `len' or `l'.
+
+   In the following example, we specify that there are two memory
+regions available for allocation: one starting at `0' for 256 kilobytes,
+and the other starting at `0x40000000' for four megabytes.  The linker
+will place into the `rom' memory region every section which is not
+explicitly mapped into a memory region, and is either read-only or
+executable.  The linker will place other sections which are not
+explicitly mapped into a memory region into the `ram' memory region.
+
+     MEMORY
+       {
+         rom (rx)  : ORIGIN = 0, LENGTH = 256K
+         ram (!rx) : org = 0x40000000, l = 4M
+       }
+
+   Once you define a memory region, you can direct the linker to place
+specific output sections into that memory region by using the `>REGION'
+output section attribute.  For example, if you have a memory region
+named `mem', you would use `>mem' in the output section definition.
+*Note Output Section Region::.  If no address was specified for the
+output section, the linker will set the address to the next available
+address within the memory region.  If the combined output sections
+directed to a memory region are too large for the region, the linker
+will issue an error message.
+
+   It is possible to access the origin and length of a memory in an
+expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions:
+
+       _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
+
+
+File: ld.info,  Node: PHDRS,  Next: VERSION,  Prev: MEMORY,  Up: Scripts
+
+3.8 PHDRS Command
+=================
+
+The ELF object file format uses "program headers", also knows as
+"segments".  The program headers describe how the program should be
+loaded into memory.  You can print them out by using the `objdump'
+program with the `-p' option.
+
+   When you run an ELF program on a native ELF system, the system loader
+reads the program headers in order to figure out how to load the
+program.  This will only work if the program headers are set correctly.
+This manual does not describe the details of how the system loader
+interprets program headers; for more information, see the ELF ABI.
+
+   The linker will create reasonable program headers by default.
+However, in some cases, you may need to specify the program headers more
+precisely.  You may use the `PHDRS' command for this purpose.  When the
+linker sees the `PHDRS' command in the linker script, it will not
+create any program headers other than the ones specified.
+
+   The linker only pays attention to the `PHDRS' command when
+generating an ELF output file.  In other cases, the linker will simply
+ignore `PHDRS'.
+
+   This is the syntax of the `PHDRS' command.  The words `PHDRS',
+`FILEHDR', `AT', and `FLAGS' are keywords.
+
+     PHDRS
+     {
+       NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ]
+             [ FLAGS ( FLAGS ) ] ;
+     }
+
+   The NAME is used only for reference in the `SECTIONS' command of the
+linker script.  It is not put into the output file.  Program header
+names are stored in a separate name space, and will not conflict with
+symbol names, file names, or section names.  Each program header must
+have a distinct name.
+
+   Certain program header types describe segments of memory which the
+system loader will load from the file.  In the linker script, you
+specify the contents of these segments by placing allocatable output
+sections in the segments.  You use the `:PHDR' output section attribute
+to place a section in a particular segment.  *Note Output Section
+Phdr::.
+
+   It is normal to put certain sections in more than one segment.  This
+merely implies that one segment of memory contains another.  You may
+repeat `:PHDR', using it once for each segment which should contain the
+section.
+
+   If you place a section in one or more segments using `:PHDR', then
+the linker will place all subsequent allocatable sections which do not
+specify `:PHDR' in the same segments.  This is for convenience, since
+generally a whole set of contiguous sections will be placed in a single
+segment.  You can use `:NONE' to override the default segment and tell
+the linker to not put the section in any segment at all.
+
+   You may use the `FILEHDR' and `PHDRS' keywords appear after the
+program header type to further describe the contents of the segment.
+The `FILEHDR' keyword means that the segment should include the ELF
+file header.  The `PHDRS' keyword means that the segment should include
+the ELF program headers themselves.
+
+   The TYPE may be one of the following.  The numbers indicate the
+value of the keyword.
+
+`PT_NULL' (0)
+     Indicates an unused program header.
+
+`PT_LOAD' (1)
+     Indicates that this program header describes a segment to be
+     loaded from the file.
+
+`PT_DYNAMIC' (2)
+     Indicates a segment where dynamic linking information can be found.
+
+`PT_INTERP' (3)
+     Indicates a segment where the name of the program interpreter may
+     be found.
+
+`PT_NOTE' (4)
+     Indicates a segment holding note information.
+
+`PT_SHLIB' (5)
+     A reserved program header type, defined but not specified by the
+     ELF ABI.
+
+`PT_PHDR' (6)
+     Indicates a segment where the program headers may be found.
+
+EXPRESSION
+     An expression giving the numeric type of the program header.  This
+     may be used for types not defined above.
+
+   You can specify that a segment should be loaded at a particular
+address in memory by using an `AT' expression.  This is identical to the
+`AT' command used as an output section attribute (*note Output Section
+LMA::).  The `AT' command for a program header overrides the output
+section attribute.
+
+   The linker will normally set the segment flags based on the sections
+which comprise the segment.  You may use the `FLAGS' keyword to
+explicitly specify the segment flags.  The value of FLAGS must be an
+integer.  It is used to set the `p_flags' field of the program header.
+
+   Here is an example of `PHDRS'.  This shows a typical set of program
+headers used on a native ELF system.
+
+     PHDRS
+     {
+       headers PT_PHDR PHDRS ;
+       interp PT_INTERP ;
+       text PT_LOAD FILEHDR PHDRS ;
+       data PT_LOAD ;
+       dynamic PT_DYNAMIC ;
+     }
+
+     SECTIONS
+     {
+       . = SIZEOF_HEADERS;
+       .interp : { *(.interp) } :text :interp
+       .text : { *(.text) } :text
+       .rodata : { *(.rodata) } /* defaults to :text */
+       ...
+       . = . + 0x1000; /* move to a new page in memory */
+       .data : { *(.data) } :data
+       .dynamic : { *(.dynamic) } :data :dynamic
+       ...
+     }
+
+
+File: ld.info,  Node: VERSION,  Next: Expressions,  Prev: PHDRS,  Up: Scripts
+
+3.9 VERSION Command
+===================
+
+The linker supports symbol versions when using ELF.  Symbol versions are
+only useful when using shared libraries.  The dynamic linker can use
+symbol versions to select a specific version of a function when it runs
+a program that may have been linked against an earlier version of the
+shared library.
+
+   You can include a version script directly in the main linker script,
+or you can supply the version script as an implicit linker script.  You
+can also use the `--version-script' linker option.
+
+   The syntax of the `VERSION' command is simply
+     VERSION { version-script-commands }
+
+   The format of the version script commands is identical to that used
+by Sun's linker in Solaris 2.5.  The version script defines a tree of
+version nodes.  You specify the node names and interdependencies in the
+version script.  You can specify which symbols are bound to which
+version nodes, and you can reduce a specified set of symbols to local
+scope so that they are not globally visible outside of the shared
+library.
+
+   The easiest way to demonstrate the version script language is with a
+few examples.
+
+     VERS_1.1 {
+     	 global:
+     		 foo1;
+     	 local:
+     		 old*;
+     		 original*;
+     		 new*;
+     };
+
+     VERS_1.2 {
+     		 foo2;
+     } VERS_1.1;
+
+     VERS_2.0 {
+     		 bar1; bar2;
+     	 extern "C++" {
+     		 ns::*;
+     		 "int f(int, double)";
+              }
+     } VERS_1.2;
+
+   This example version script defines three version nodes.  The first
+version node defined is `VERS_1.1'; it has no other dependencies.  The
+script binds the symbol `foo1' to `VERS_1.1'.  It reduces a number of
+symbols to local scope so that they are not visible outside of the
+shared library; this is done using wildcard patterns, so that any
+symbol whose name begins with `old', `original', or `new' is matched.
+The wildcard patterns available are the same as those used in the shell
+when matching filenames (also known as "globbing").  However, if you
+specify the symbol name inside double quotes, then the name is treated
+as literal, rather than as a glob pattern.
+
+   Next, the version script defines node `VERS_1.2'.  This node depends
+upon `VERS_1.1'.  The script binds the symbol `foo2' to the version
+node `VERS_1.2'.
+
+   Finally, the version script defines node `VERS_2.0'.  This node
+depends upon `VERS_1.2'.  The scripts binds the symbols `bar1' and
+`bar2' are bound to the version node `VERS_2.0'.
+
+   When the linker finds a symbol defined in a library which is not
+specifically bound to a version node, it will effectively bind it to an
+unspecified base version of the library.  You can bind all otherwise
+unspecified symbols to a given version node by using `global: *;'
+somewhere in the version script.
+
+   The names of the version nodes have no specific meaning other than
+what they might suggest to the person reading them.  The `2.0' version
+could just as well have appeared in between `1.1' and `1.2'.  However,
+this would be a confusing way to write a version script.
+
+   Node name can be omited, provided it is the only version node in the
+version script.  Such version script doesn't assign any versions to
+symbols, only selects which symbols will be globally visible out and
+which won't.
+
+     { global: foo; bar; local: *; };
+
+   When you link an application against a shared library that has
+versioned symbols, the application itself knows which version of each
+symbol it requires, and it also knows which version nodes it needs from
+each shared library it is linked against.  Thus at runtime, the dynamic
+loader can make a quick check to make sure that the libraries you have
+linked against do in fact supply all of the version nodes that the
+application will need to resolve all of the dynamic symbols.  In this
+way it is possible for the dynamic linker to know with certainty that
+all external symbols that it needs will be resolvable without having to
+search for each symbol reference.
+
+   The symbol versioning is in effect a much more sophisticated way of
+doing minor version checking that SunOS does.  The fundamental problem
+that is being addressed here is that typically references to external
+functions are bound on an as-needed basis, and are not all bound when
+the application starts up.  If a shared library is out of date, a
+required interface may be missing; when the application tries to use
+that interface, it may suddenly and unexpectedly fail.  With symbol
+versioning, the user will get a warning when they start their program if
+the libraries being used with the application are too old.
+
+   There are several GNU extensions to Sun's versioning approach.  The
+first of these is the ability to bind a symbol to a version node in the
+source file where the symbol is defined instead of in the versioning
+script.  This was done mainly to reduce the burden on the library
+maintainer.  You can do this by putting something like:
+     __asm__(".symver original_foo,foo at VERS_1.1");
+   in the C source file.  This renames the function `original_foo' to
+be an alias for `foo' bound to the version node `VERS_1.1'.  The
+`local:' directive can be used to prevent the symbol `original_foo'
+from being exported. A `.symver' directive takes precedence over a
+version script.
+
+   The second GNU extension is to allow multiple versions of the same
+function to appear in a given shared library.  In this way you can make
+an incompatible change to an interface without increasing the major
+version number of the shared library, while still allowing applications
+linked against the old interface to continue to function.
+
+   To do this, you must use multiple `.symver' directives in the source
+file.  Here is an example:
+
+     __asm__(".symver original_foo,foo@");
+     __asm__(".symver old_foo,foo at VERS_1.1");
+     __asm__(".symver old_foo1,foo at VERS_1.2");
+     __asm__(".symver new_foo,foo@@VERS_2.0");
+
+   In this example, `foo@' represents the symbol `foo' bound to the
+unspecified base version of the symbol.  The source file that contains
+this example would define 4 C functions: `original_foo', `old_foo',
+`old_foo1', and `new_foo'.
+
+   When you have multiple definitions of a given symbol, there needs to
+be some way to specify a default version to which external references to
+this symbol will be bound.  You can do this with the `foo@@VERS_2.0'
+type of `.symver' directive.  You can only declare one version of a
+symbol as the default in this manner; otherwise you would effectively
+have multiple definitions of the same symbol.
+
+   If you wish to bind a reference to a specific version of the symbol
+within the shared library, you can use the aliases of convenience
+(i.e., `old_foo'), or you can use the `.symver' directive to
+specifically bind to an external version of the function in question.
+
+   You can also specify the language in the version script:
+
+     VERSION extern "lang" { version-script-commands }
+
+   The supported `lang's are `C', `C++', and `Java'.  The linker will
+iterate over the list of symbols at the link time and demangle them
+according to `lang' before matching them to the patterns specified in
+`version-script-commands'.
+
+   Demangled names may contains spaces and other special characters.  As
+described above, you can use a glob pattern to match demangled names,
+or you can use a double-quoted string to match the string exactly.  In
+the latter case, be aware that minor differences (such as differing
+whitespace) between the version script and the demangler output will
+cause a mismatch.  As the exact string generated by the demangler might
+change in the future, even if the mangled name does not, you should
+check that all of your version directives are behaving as you expect
+when you upgrade.
+
+
+File: ld.info,  Node: Expressions,  Next: Implicit Linker Scripts,  Prev: VERSION,  Up: Scripts
+
+3.10 Expressions in Linker Scripts
+==================================
+
+The syntax for expressions in the linker script language is identical to
+that of C expressions.  All expressions are evaluated as integers.  All
+expressions are evaluated in the same size, which is 32 bits if both the
+host and target are 32 bits, and is otherwise 64 bits.
+
+   You can use and set symbol values in expressions.
+
+   The linker defines several special purpose builtin functions for use
+in expressions.
+
+* Menu:
+
+* Constants::			Constants
+* Symbols::			Symbol Names
+* Orphan Sections::		Orphan Sections
+* Location Counter::		The Location Counter
+* Operators::			Operators
+* Evaluation::			Evaluation
+* Expression Section::		The Section of an Expression
+* Builtin Functions::		Builtin Functions
+
+
+File: ld.info,  Node: Constants,  Next: Symbols,  Up: Expressions
+
+3.10.1 Constants
+----------------
+
+All constants are integers.
+
+   As in C, the linker considers an integer beginning with `0' to be
+octal, and an integer beginning with `0x' or `0X' to be hexadecimal.
+The linker considers other integers to be decimal.
+
+   In addition, you can use the suffixes `K' and `M' to scale a
+constant by `1024' or `1024*1024' respectively. For example, the
+following all refer to the same quantity:
+     _fourk_1 = 4K;
+     _fourk_2 = 4096;
+     _fourk_3 = 0x1000;
+
+
+File: ld.info,  Node: Symbols,  Next: Orphan Sections,  Prev: Constants,  Up: Expressions
+
+3.10.2 Symbol Names
+-------------------
+
+Unless quoted, symbol names start with a letter, underscore, or period
+and may include letters, digits, underscores, periods, and hyphens.
+Unquoted symbol names must not conflict with any keywords.  You can
+specify a symbol which contains odd characters or has the same name as a
+keyword by surrounding the symbol name in double quotes:
+     "SECTION" = 9;
+     "with a space" = "also with a space" + 10;
+
+   Since symbols can contain many non-alphabetic characters, it is
+safest to delimit symbols with spaces.  For example, `A-B' is one
+symbol, whereas `A - B' is an expression involving subtraction.
+
+
+File: ld.info,  Node: Orphan Sections,  Next: Location Counter,  Prev: Symbols,  Up: Expressions
+
+3.10.3 Orphan Sections
+----------------------
+
+Orphan sections are sections present in the input files which are not
+explicitly placed into the output file by the linker script.  The
+linker will still copy these sections into the output file, but it has
+to guess as to where they should be placed.  The linker uses a simple
+heuristic to do this.  It attempts to place orphan sections after
+non-orphan sections of the same attribute, such as code vs data,
+loadable vs non-loadable, etc.  If there is not enough room to do this
+then it places at the end of the file.
+
+   For ELF targets, the attribute of the section includes section type
+as well as section flag.
+
+
+File: ld.info,  Node: Location Counter,  Next: Operators,  Prev: Orphan Sections,  Up: Expressions
+
+3.10.4 The Location Counter
+---------------------------
+
+The special linker variable "dot" `.' always contains the current
+output location counter.  Since the `.' always refers to a location in
+an output section, it may only appear in an expression within a
+`SECTIONS' command.  The `.' symbol may appear anywhere that an
+ordinary symbol is allowed in an expression.
+
+   Assigning a value to `.' will cause the location counter to be
+moved.  This may be used to create holes in the output section.  The
+location counter may never be moved backwards.
+
+     SECTIONS
+     {
+       output :
+         {
+           file1(.text)
+           . = . + 1000;
+           file2(.text)
+           . += 1000;
+           file3(.text)
+         } = 0x12345678;
+     }
+   In the previous example, the `.text' section from `file1' is located
+at the beginning of the output section `output'.  It is followed by a
+1000 byte gap.  Then the `.text' section from `file2' appears, also
+with a 1000 byte gap following before the `.text' section from `file3'.
+The notation `= 0x12345678' specifies what data to write in the gaps
+(*note Output Section Fill::).
+
+   Note: `.' actually refers to the byte offset from the start of the
+current containing object.  Normally this is the `SECTIONS' statement,
+whose start address is 0, hence `.' can be used as an absolute address.
+If `.' is used inside a section description however, it refers to the
+byte offset from the start of that section, not an absolute address.
+Thus in a script like this:
+
+     SECTIONS
+     {
+         . = 0x100
+         .text: {
+           *(.text)
+           . = 0x200
+         }
+         . = 0x500
+         .data: {
+           *(.data)
+           . += 0x600
+         }
+     }
+
+   The `.text' section will be assigned a starting address of 0x100 and
+a size of exactly 0x200 bytes, even if there is not enough data in the
+`.text' input sections to fill this area.  (If there is too much data,
+an error will be produced because this would be an attempt to move `.'
+backwards).  The `.data' section will start at 0x500 and it will have
+an extra 0x600 bytes worth of space after the end of the values from
+the `.data' input sections and before the end of the `.data' output
+section itself.
+
+   Setting symbols to the value of the location counter outside of an
+output section statement can result in unexpected values if the linker
+needs to place orphan sections.  For example, given the following:
+
+     SECTIONS
+     {
+         start_of_text = . ;
+         .text: { *(.text) }
+         end_of_text = . ;
+
+         start_of_data = . ;
+         .data: { *(.data) }
+         end_of_data = . ;
+     }
+
+   If the linker needs to place some input section, e.g. `.rodata', not
+mentioned in the script, it might choose to place that section between
+`.text' and `.data'.  You might think the linker should place `.rodata'
+on the blank line in the above script, but blank lines are of no
+particular significance to the linker.  As well, the linker doesn't
+associate the above symbol names with their sections.  Instead, it
+assumes that all assignments or other statements belong to the previous
+output section, except for the special case of an assignment to `.'.
+I.e., the linker will place the orphan `.rodata' section as if the
+script was written as follows:
+
+     SECTIONS
+     {
+         start_of_text = . ;
+         .text: { *(.text) }
+         end_of_text = . ;
+
+         start_of_data = . ;
+         .rodata: { *(.rodata) }
+         .data: { *(.data) }
+         end_of_data = . ;
+     }
+
+   This may or may not be the script author's intention for the value of
+`start_of_data'.  One way to influence the orphan section placement is
+to assign the location counter to itself, as the linker assumes that an
+assignment to `.' is setting the start address of a following output
+section and thus should be grouped with that section.  So you could
+write:
+
+     SECTIONS
+     {
+         start_of_text = . ;
+         .text: { *(.text) }
+         end_of_text = . ;
+
+         . = . ;
+         start_of_data = . ;
+         .data: { *(.data) }
+         end_of_data = . ;
+     }
+
+   Now, the orphan `.rodata' section will be placed between
+`end_of_text' and `start_of_data'.
+
+
+File: ld.info,  Node: Operators,  Next: Evaluation,  Prev: Location Counter,  Up: Expressions
+
+3.10.5 Operators
+----------------
+
+The linker recognizes the standard C set of arithmetic operators, with
+the standard bindings and precedence levels:
+     precedence      associativity   Operators                Notes
+     (highest)
+     1               left            !  -  ~                  (1)
+     2               left            *  /  %
+     3               left            +  -
+     4               left            >>  <<
+     5               left            ==  !=  >  <  <=  >=
+     6               left            &
+     7               left            |
+     8               left            &&
+     9               left            ||
+     10              right           ? :
+     11              right           &=  +=  -=  *=  /=       (2)
+     (lowest)
+   Notes: (1) Prefix operators (2) *Note Assignments::.
+
+
+File: ld.info,  Node: Evaluation,  Next: Expression Section,  Prev: Operators,  Up: Expressions
+
+3.10.6 Evaluation
+-----------------
+
+The linker evaluates expressions lazily.  It only computes the value of
+an expression when absolutely necessary.
+
+   The linker needs some information, such as the value of the start
+address of the first section, and the origins and lengths of memory
+regions, in order to do any linking at all.  These values are computed
+as soon as possible when the linker reads in the linker script.
+
+   However, other values (such as symbol values) are not known or needed
+until after storage allocation.  Such values are evaluated later, when
+other information (such as the sizes of output sections) is available
+for use in the symbol assignment expression.
+
+   The sizes of sections cannot be known until after allocation, so
+assignments dependent upon these are not performed until after
+allocation.
+
+   Some expressions, such as those depending upon the location counter
+`.', must be evaluated during section allocation.
+
+   If the result of an expression is required, but the value is not
+available, then an error results.  For example, a script like the
+following
+     SECTIONS
+       {
+         .text 9+this_isnt_constant :
+           { *(.text) }
+       }
+will cause the error message `non constant expression for initial
+address'.
+
+
+File: ld.info,  Node: Expression Section,  Next: Builtin Functions,  Prev: Evaluation,  Up: Expressions
+
+3.10.7 The Section of an Expression
+-----------------------------------
+
+When the linker evaluates an expression, the result is either absolute
+or relative to some section.  A relative expression is expressed as a
+fixed offset from the base of a section.
+
+   The position of the expression within the linker script determines
+whether it is absolute or relative.  An expression which appears within
+an output section definition is relative to the base of the output
+section.  An expression which appears elsewhere will be absolute.
+
+   A symbol set to a relative expression will be relocatable if you
+request relocatable output using the `-r' option.  That means that a
+further link operation may change the value of the symbol.  The symbol's
+section will be the section of the relative expression.
+
+   A symbol set to an absolute expression will retain the same value
+through any further link operation.  The symbol will be absolute, and
+will not have any particular associated section.
+
+   You can use the builtin function `ABSOLUTE' to force an expression
+to be absolute when it would otherwise be relative.  For example, to
+create an absolute symbol set to the address of the end of the output
+section `.data':
+     SECTIONS
+       {
+         .data : { *(.data) _edata = ABSOLUTE(.); }
+       }
+   If `ABSOLUTE' were not used, `_edata' would be relative to the
+`.data' section.
+
+
+File: ld.info,  Node: Builtin Functions,  Prev: Expression Section,  Up: Expressions
+
+3.10.8 Builtin Functions
+------------------------
+
+The linker script language includes a number of builtin functions for
+use in linker script expressions.
+
+`ABSOLUTE(EXP)'
+     Return the absolute (non-relocatable, as opposed to non-negative)
+     value of the expression EXP.  Primarily useful to assign an
+     absolute value to a symbol within a section definition, where
+     symbol values are normally section relative.  *Note Expression
+     Section::.
+
+`ADDR(SECTION)'
+     Return the absolute address (the VMA) of the named SECTION.  Your
+     script must previously have defined the location of that section.
+     In the following example, `symbol_1' and `symbol_2' are assigned
+     identical values:
+          SECTIONS { ...
+            .output1 :
+              {
+              start_of_output_1 = ABSOLUTE(.);
+              ...
+              }
+            .output :
+              {
+              symbol_1 = ADDR(.output1);
+              symbol_2 = start_of_output_1;
+              }
+          ... }
+
+`ALIGN(ALIGN)'
+`ALIGN(EXP,ALIGN)'
+     Return the location counter (`.') or arbitrary expression aligned
+     to the next ALIGN boundary.  The single operand `ALIGN' doesn't
+     change the value of the location counter--it just does arithmetic
+     on it.  The two operand `ALIGN' allows an arbitrary expression to
+     be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(.,
+     ALIGN)').
+
+     Here is an example which aligns the output `.data' section to the
+     next `0x2000' byte boundary after the preceding section and sets a
+     variable within the section to the next `0x8000' boundary after the
+     input sections:
+          SECTIONS { ...
+            .data ALIGN(0x2000): {
+              *(.data)
+              variable = ALIGN(0x8000);
+            }
+          ... }
+     The first use of `ALIGN' in this example specifies the
+     location of a section because it is used as the optional ADDRESS
+     attribute of a section definition (*note Output Section
+     Address::).  The second use of `ALIGN' is used to defines the
+     value of a symbol.
+
+     The builtin function `NEXT' is closely related to `ALIGN'.
+
+`BLOCK(EXP)'
+     This is a synonym for `ALIGN', for compatibility with older linker
+     scripts.  It is most often seen when setting the address of an
+     output section.
+
+`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)'
+     This is equivalent to either
+          (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1)))
+     or
+          (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE)))
+     depending on whether the latter uses fewer COMMONPAGESIZE sized
+     pages for the data segment (area between the result of this
+     expression and `DATA_SEGMENT_END') than the former or not.  If the
+     latter form is used, it means COMMONPAGESIZE bytes of runtime
+     memory will be saved at the expense of up to COMMONPAGESIZE wasted
+     bytes in the on-disk file.
+
+     This expression can only be used directly in `SECTIONS' commands,
+     not in any output section descriptions and only once in the linker
+     script.  COMMONPAGESIZE should be less or equal to MAXPAGESIZE and
+     should be the system page size the object wants to be optimized
+     for (while still working on system page sizes up to MAXPAGESIZE).
+
+     Example:
+            . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
+
+`DATA_SEGMENT_END(EXP)'
+     This defines the end of data segment for `DATA_SEGMENT_ALIGN'
+     evaluation purposes.
+
+            . = DATA_SEGMENT_END(.);
+
+`DATA_SEGMENT_RELRO_END(OFFSET, EXP)'
+     This defines the end of the `PT_GNU_RELRO' segment when `-z relro'
+     option is used.  Second argument is returned.  When `-z relro'
+     option is not present, `DATA_SEGMENT_RELRO_END' does nothing,
+     otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is
+     aligned to the most commonly used page boundary for particular
+     target.  If present in the linker script, it must always come in
+     between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'.
+
+            . = DATA_SEGMENT_RELRO_END(24, .);
+
+`DEFINED(SYMBOL)'
+     Return 1 if SYMBOL is in the linker global symbol table and is
+     defined before the statement using DEFINED in the script, otherwise
+     return 0.  You can use this function to provide default values for
+     symbols.  For example, the following script fragment shows how to
+     set a global symbol `begin' to the first location in the `.text'
+     section--but if a symbol called `begin' already existed, its value
+     is preserved:
+
+          SECTIONS { ...
+            .text : {
+              begin = DEFINED(begin) ? begin : . ;
+              ...
+            }
+            ...
+          }
+
+`LENGTH(MEMORY)'
+     Return the length of the memory region named MEMORY.
+
+`LOADADDR(SECTION)'
+     Return the absolute LMA of the named SECTION.  This is normally
+     the same as `ADDR', but it may be different if the `AT' attribute
+     is used in the output section definition (*note Output Section
+     LMA::).
+
+`MAX(EXP1, EXP2)'
+     Returns the maximum of EXP1 and EXP2.
+
+`MIN(EXP1, EXP2)'
+     Returns the minimum of EXP1 and EXP2.
+
+`NEXT(EXP)'
+     Return the next unallocated address that is a multiple of EXP.
+     This function is closely related to `ALIGN(EXP)'; unless you use
+     the `MEMORY' command to define discontinuous memory for the output
+     file, the two functions are equivalent.
+
+`ORIGIN(MEMORY)'
+     Return the origin of the memory region named MEMORY.
+
+`SEGMENT_START(SEGMENT, DEFAULT)'
+     Return the base address of the named SEGMENT.  If an explicit
+     value has been given for this segment (with a command-line `-T'
+     option) that value will be returned; otherwise the value will be
+     DEFAULT.  At present, the `-T' command-line option can only be
+     used to set the base address for the "text", "data", and "bss"
+     sections, but you use `SEGMENT_START' with any segment name.
+
+`SIZEOF(SECTION)'
+     Return the size in bytes of the named SECTION, if that section has
+     been allocated.  If the section has not been allocated when this is
+     evaluated, the linker will report an error.  In the following
+     example, `symbol_1' and `symbol_2' are assigned identical values:
+          SECTIONS{ ...
+            .output {
+              .start = . ;
+              ...
+              .end = . ;
+              }
+            symbol_1 = .end - .start ;
+            symbol_2 = SIZEOF(.output);
+          ... }
+
+`SIZEOF_HEADERS'
+`sizeof_headers'
+     Return the size in bytes of the output file's headers.  This is
+     information which appears at the start of the output file.  You
+     can use this number when setting the start address of the first
+     section, if you choose, to facilitate paging.
+
+     When producing an ELF output file, if the linker script uses the
+     `SIZEOF_HEADERS' builtin function, the linker must compute the
+     number of program headers before it has determined all the section
+     addresses and sizes.  If the linker later discovers that it needs
+     additional program headers, it will report an error `not enough
+     room for program headers'.  To avoid this error, you must avoid
+     using the `SIZEOF_HEADERS' function, or you must rework your linker
+     script to avoid forcing the linker to use additional program
+     headers, or you must define the program headers yourself using the
+     `PHDRS' command (*note PHDRS::).
+
+
+File: ld.info,  Node: Implicit Linker Scripts,  Prev: Expressions,  Up: Scripts
+
+3.11 Implicit Linker Scripts
+============================
+
+If you specify a linker input file which the linker can not recognize as
+an object file or an archive file, it will try to read the file as a
+linker script.  If the file can not be parsed as a linker script, the
+linker will report an error.
+
+   An implicit linker script will not replace the default linker script.
+
+   Typically an implicit linker script would contain only symbol
+assignments, or the `INPUT', `GROUP', or `VERSION' commands.
+
+   Any input files read because of an implicit linker script will be
+read at the position in the command line where the implicit linker
+script was read.  This can affect archive searching.
+
+
+File: ld.info,  Node: Machine Dependent,  Next: BFD,  Prev: Scripts,  Up: Top
+
+4 Machine Dependent Features
+****************************
+
+`ld' has additional features on some platforms; the following sections
+describe them.  Machines where `ld' has no additional functionality are
+not listed.
+
+* Menu:
+
+
+* H8/300::                      `ld' and the H8/300
+
+* i960::                        `ld' and the Intel 960 family
+
+* ARM::				`ld' and the ARM family
+
+* HPPA ELF32::                  `ld' and HPPA 32-bit ELF
+
+* MMIX::			`ld' and MMIX
+
+* MSP430::			`ld' and MSP430
+
+* PowerPC ELF32::		`ld' and PowerPC 32-bit ELF Support
+
+* PowerPC64 ELF64::		`ld' and PowerPC64 64-bit ELF Support
+
+* TI COFF::                     `ld' and TI COFF
+
+* WIN32::                       `ld' and WIN32 (cygwin/mingw)
+
+* Xtensa::                      `ld' and Xtensa Processors
+
+
+File: ld.info,  Node: H8/300,  Next: i960,  Up: Machine Dependent
+
+4.1 `ld' and the H8/300
+=======================
+
+For the H8/300, `ld' can perform these global optimizations when you
+specify the `--relax' command-line option.
+
+_relaxing address modes_
+     `ld' finds all `jsr' and `jmp' instructions whose targets are
+     within eight bits, and turns them into eight-bit program-counter
+     relative `bsr' and `bra' instructions, respectively.
+
+_synthesizing instructions_
+     `ld' finds all `mov.b' instructions which use the sixteen-bit
+     absolute address form, but refer to the top page of memory, and
+     changes them to use the eight-bit address form.  (That is: the
+     linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the
+     address AA is in the top page of memory).
+
+_bit manipulation instructions_
+     `ld' finds all bit manipulation instructions like `band, bclr,
+     biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst,
+     bxor' which use 32 bit and 16 bit absolute address form, but refer
+     to the top page of memory, and changes them to use the 8 bit
+     address form.  (That is: the linker turns `bset #xx:3,`@'AA:32'
+     into `bset #xx:3,`@'AA:8' whenever the address AA is in the top
+     page of memory).
+
+_system control instructions_
+     `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit
+     absolute address form, but refer to the top page of memory, and
+     changes them to use 16 bit address form.  (That is: the linker
+     turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the
+     address AA is in the top page of memory).
+
+
+File: ld.info,  Node: i960,  Next: ARM,  Prev: H8/300,  Up: Machine Dependent
+
+4.2 `ld' and the Intel 960 Family
+=================================
+
+You can use the `-AARCHITECTURE' command line option to specify one of
+the two-letter names identifying members of the 960 family; the option
+specifies the desired output target, and warns of any incompatible
+instructions in the input files.  It also modifies the linker's search
+strategy for archive libraries, to support the use of libraries
+specific to each particular architecture, by including in the search
+loop names suffixed with the string identifying the architecture.
+
+   For example, if your `ld' command line included `-ACA' as well as
+`-ltry', the linker would look (in its built-in search paths, and in
+any paths you specify with `-L') for a library with the names
+
+     try
+     libtry.a
+     tryca
+     libtryca.a
+
+The first two possibilities would be considered in any event; the last
+two are due to the use of `-ACA'.
+
+   You can meaningfully use `-A' more than once on a command line, since
+the 960 architecture family allows combination of target architectures;
+each use will add another pair of name variants to search for when `-l'
+specifies a library.
+
+   `ld' supports the `--relax' option for the i960 family.  If you
+specify `--relax', `ld' finds all `balx' and `calx' instructions whose
+targets are within 24 bits, and turns them into 24-bit program-counter
+relative `bal' and `cal' instructions, respectively.  `ld' also turns
+`cal' instructions into `bal' instructions when it determines that the
+target subroutine is a leaf routine (that is, the target subroutine does
+not itself call any subroutines).
+
+
+File: ld.info,  Node: ARM,  Next: HPPA ELF32,  Prev: i960,  Up: Machine Dependent
+
+4.3 `ld' and the ARM family
+===========================
+
+For the ARM, `ld' will generate code stubs to allow functions calls
+betweem ARM and Thumb code.  These stubs only work with code that has
+been compiled and assembled with the `-mthumb-interwork' command line
+option.  If it is necessary to link with old ARM object files or
+libraries, which have not been compiled with the -mthumb-interwork
+option then the `--support-old-code' command line switch should be
+given to the linker.  This will make it generate larger stub functions
+which will work with non-interworking aware ARM code.  Note, however,
+the linker does not support generating stubs for function calls to
+non-interworking aware Thumb code.
+
+   The `--thumb-entry' switch is a duplicate of the generic `--entry'
+switch, in that it sets the program's starting address.  But it also
+sets the bottom bit of the address, so that it can be branched to using
+a BX instruction, and the program will start executing in Thumb mode
+straight away.
+
+   The `--be8' switch instructs `ld' to generate BE8 format
+executables.  This option is only valid when linking big-endian objects.
+The resulting image will contain big-endian data and little-endian code.
+
+   The `R_ARM_TARGET1' relocation is typically used for entries in the
+`.init_array' section.  It is interpreted as either `R_ARM_REL32' or
+`R_ARM_ABS32', depending on the target.  The `--target1-rel' and
+`--target1-abs' switches override the default.
+
+   The `--target2=type' switch overrides the default definition of the
+`R_ARM_TARGET2' relocation.  Valid values for `type', their meanings,
+and target defaults are as follows:
+`rel'
+     `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi)
+
+`abs'
+     `R_ARM_ABS32' (arm*-*-symbianelf)
+
+`got-rel'
+     `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd)
+
+   The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification)
+enables objects compiled for the ARMv4 architecture to be
+interworking-safe when linked with other objects compiled for ARMv4t,
+but also allows pure ARMv4 binaries to be built from the same ARMv4
+objects.
+
+   In the latter case, the switch `--fix-v4bx' must be passed to the
+linker, which causes v4t `BX rM' instructions to be rewritten as `MOV
+PC,rM', since v4 processors do not have a `BX' instruction.
+
+   In the former case, the switch should not be used, and `R_ARM_V4BX'
+relocations are ignored.
+
+   The `--use-blx' switch enables the linker to use ARM/Thumb BLX
+instructions (available on ARMv5t and above) in various situations.
+Currently it is used to perform calls via the PLT from Thumb code using
+BLX rather than using BX and a mode-switching stub before each PLT
+entry. This should lead to such calls executing slightly faster.
+
+   This option is enabled implicitly for SymbianOS, so there is no need
+to specify it if you are using that target.
+
+
+File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: ARM,  Up: Machine Dependent
+
+4.4 `ld' and HPPA 32-bit ELF Support
+====================================
+
+When generating a shared library, `ld' will by default generate import
+stubs suitable for use with a single sub-space application.  The
+`--multi-subspace' switch causes `ld' to generate export stubs, and
+different (larger) import stubs suitable for use with multiple
+sub-spaces.
+
+   Long branch stubs and import/export stubs are placed by `ld' in stub
+sections located between groups of input sections.  `--stub-group-size'
+specifies the maximum size of a group of input sections handled by one
+stub section.  Since branch offsets are signed, a stub section may
+serve two groups of input sections, one group before the stub section,
+and one group after it.  However, when using conditional branches that
+require stubs, it may be better (for branch prediction) that stub
+sections only serve one group of input sections.  A negative value for
+`N' chooses this scheme, ensuring that branches to stubs always use a
+negative offset.  Two special values of `N' are recognized, `1' and
+`-1'.  These both instruct `ld' to automatically size input section
+groups for the branch types detected, with the same behaviour regarding
+stub placement as other positive or negative values of `N' respectively.
+
+   Note that `--stub-group-size' does not split input sections.  A
+single input section larger than the group size specified will of course
+create a larger group (of one section).  If input sections are too
+large, it may not be possible for a branch to reach its stub.
+
+
+File: ld.info,  Node: MMIX,  Next: MSP430,  Prev: HPPA ELF32,  Up: Machine Dependent
+
+4.5 `ld' and MMIX
+=================
+
+For MMIX, there is a choice of generating `ELF' object files or `mmo'
+object files when linking.  The simulator `mmix' understands the `mmo'
+format.  The binutils `objcopy' utility can translate between the two
+formats.
+
+   There is one special section, the `.MMIX.reg_contents' section.
+Contents in this section is assumed to correspond to that of global
+registers, and symbols referring to it are translated to special
+symbols, equal to registers.  In a final link, the start address of the
+`.MMIX.reg_contents' section corresponds to the first allocated global
+register multiplied by 8.  Register `$255' is not included in this
+section; it is always set to the program entry, which is at the symbol
+`Main' for `mmo' files.
+
+   Symbols with the prefix `__.MMIX.start.', for example
+`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must
+be only one each, even if they are local.  The default linker script
+uses these to set the default start address of a section.
+
+   Initial and trailing multiples of zero-valued 32-bit words in a
+section, are left out from an mmo file.
+
+
+File: ld.info,  Node: MSP430,  Next: PowerPC ELF32,  Prev: MMIX,  Up: Machine Dependent
+
+4.6 `ld' and MSP430
+===================
+
+For the MSP430 it is possible to select the MPU architecture.  The flag
+`-m [mpu type]' will select an appropriate linker script for selected
+MPU type.  (To get a list of known MPUs just pass `-m help' option to
+the linker).
+
+   The linker will recognize some extra sections which are MSP430
+specific:
+
+``.vectors''
+     Defines a portion of ROM where interrupt vectors located.
+
+``.bootloader''
+     Defines the bootloader portion of the ROM (if applicable).  Any
+     code in this section will be uploaded to the MPU.
+
+``.infomem''
+     Defines an information memory section (if applicable).  Any code in
+     this section will be uploaded to the MPU.
+
+``.infomemnobits''
+     This is the same as the `.infomem' section except that any code in
+     this section will not be uploaded to the MPU.
+
+``.noinit''
+     Denotes a portion of RAM located above `.bss' section.
+
+     The last two sections are used by gcc.
+
+
+File: ld.info,  Node: PowerPC ELF32,  Next: PowerPC64 ELF64,  Prev: MSP430,  Up: Machine Dependent
+
+4.7 `ld' and PowerPC 32-bit ELF Support
+=======================================
+
+Branches on PowerPC processors are limited to a signed 26-bit
+displacement, which may result in `ld' giving `relocation truncated to
+fit' errors with very large programs.  `--relax' enables the generation
+of trampolines that can access the entire 32-bit address space.  These
+trampolines are inserted at section boundaries, so may not themselves
+be reachable if an input section exceeds 33M in size.
+
+`--bss-plt'
+     Current PowerPC GCC accepts a `-msecure-plt' option that generates
+     code capable of using a newer PLT and GOT layout that has the
+     security advantage of no executable section ever needing to be
+     writable and no writable section ever being executable.  PowerPC
+     `ld' will generate this layout, including stubs to access the PLT,
+     if all input files (including startup and static libraries) were
+     compiled with `-msecure-plt'.  `--bss-plt' forces the old BSS PLT
+     (and GOT layout) which can give slightly better performance.
+
+`--sdata-got'
+     The new secure PLT and GOT are placed differently relative to other
+     sections compared to older BSS PLT and GOT placement.  The
+     location of `.plt' must change because the new secure PLT is an
+     initialized section while the old PLT is uninitialized.  The
+     reason for the `.got' change is more subtle:  The new placement
+     allows `.got' to be read-only in applications linked with `-z
+     relro -z now'.  However, this placement means that `.sdata' cannot
+     always be used in shared libraries, because the PowerPC ABI
+     accesses `.sdata' in shared libraries from the GOT pointer.
+     `--sdata-got' forces the old GOT placement.  PowerPC GCC doesn't
+     use `.sdata' in shared libraries, so this option is really only
+     useful for other compilers that may do so.
+
+`--emit-stub-syms'
+     This option causes `ld' to label linker stubs with a local symbol
+     that encodes the stub type and destination.
+
+`--no-tls-optimize'
+     PowerPC `ld' normally performs some optimization of code sequences
+     used to access Thread-Local Storage.  Use this option to disable
+     the optimization.
+
+
+File: ld.info,  Node: PowerPC64 ELF64,  Next: TI COFF,  Prev: PowerPC ELF32,  Up: Machine Dependent
+
+4.8 `ld' and PowerPC64 64-bit ELF Support
+=========================================
+
+`--stub-group-size'
+     Long branch stubs, PLT call stubs  and TOC adjusting stubs are
+     placed by `ld' in stub sections located between groups of input
+     sections.  `--stub-group-size' specifies the maximum size of a
+     group of input sections handled by one stub section.  Since branch
+     offsets are signed, a stub section may serve two groups of input
+     sections, one group before the stub section, and one group after
+     it.  However, when using conditional branches that require stubs,
+     it may be better (for branch prediction) that stub sections only
+     serve one group of input sections.  A negative value for `N'
+     chooses this scheme, ensuring that branches to stubs always use a
+     negative offset.  Two special values of `N' are recognized, `1'
+     and `-1'.  These both instruct `ld' to automatically size input
+     section groups for the branch types detected, with the same
+     behaviour regarding stub placement as other positive or negative
+     values of `N' respectively.
+
+     Note that `--stub-group-size' does not split input sections.  A
+     single input section larger than the group size specified will of
+     course create a larger group (of one section).  If input sections
+     are too large, it may not be possible for a branch to reach its
+     stub.
+
+`--emit-stub-syms'
+     This option causes `ld' to label linker stubs with a local symbol
+     that encodes the stub type and destination.
+
+`--dotsyms, --no-dotsyms'
+     These two options control how `ld' interprets version patterns in
+     a version script.  Older PowerPC64 compilers emitted both a
+     function descriptor symbol with the same name as the function, and
+     a code entry symbol with the name prefixed by a dot (`.').  To
+     properly version a function `foo', the version script thus needs
+     to control both `foo' and `.foo'.  The option `--dotsyms', on by
+     default, automatically adds the required dot-prefixed patterns.
+     Use `--no-dotsyms' to disable this feature.
+
+`--no-tls-optimize'
+     PowerPC64 `ld' normally performs some optimization of code
+     sequences used to access Thread-Local Storage.  Use this option to
+     disable the optimization.
+
+`--no-opd-optimize'
+     PowerPC64 `ld' normally removes `.opd' section entries
+     corresponding to deleted link-once functions, or functions removed
+     by the action of `--gc-sections' or linker scrip `/DISCARD/'.  Use
+     this option to disable `.opd' optimization.
+
+`--non-overlapping-opd'
+     Some PowerPC64 compilers have an option to generate compressed
+     `.opd' entries spaced 16 bytes apart, overlapping the third word,
+     the static chain pointer (unused in C) with the first word of the
+     next entry.  This option expands such entries to the full 24 bytes.
+
+`--no-toc-optimize'
+     PowerPC64 `ld' normally removes unused `.toc' section entries.
+     Such entries are detected by examining relocations that reference
+     the TOC in code sections.  A reloc in a deleted code section marks
+     a TOC word as unneeded, while a reloc in a kept code section marks
+     a TOC word as needed.  Since the TOC may reference itself, TOC
+     relocs are also examined.  TOC words marked as both needed and
+     unneeded will of course be kept.  TOC words without any referencing
+     reloc are assumed to be part of a multi-word entry, and are kept or
+     discarded as per the nearest marked preceding word.  This works
+     reliably for compiler generated code, but may be incorrect if
+     assembly code is used to insert TOC entries.  Use this option to
+     disable the optimization.
+
+`--no-multi-toc'
+     By default, PowerPC64 GCC generates code for a TOC model where TOC
+     entries are accessed with a 16-bit offset from r2.  This limits the
+     total TOC size to 64K.  PowerPC64 `ld' extends this limit by
+     grouping code sections such that each group uses less than 64K for
+     its TOC entries, then inserts r2 adjusting stubs between
+     inter-group calls.  `ld' does not split apart input sections, so
+     cannot help if a single input file has a `.toc' section that
+     exceeds 64K, most likely from linking multiple files with `ld -r'.
+     Use this option to turn off this feature.
+
+
+File: ld.info,  Node: TI COFF,  Next: WIN32,  Prev: PowerPC64 ELF64,  Up: Machine Dependent
+
+4.9 `ld''s Support for Various TI COFF Versions
+===============================================
+
+The `--format' switch allows selection of one of the various TI COFF
+versions.  The latest of this writing is 2; versions 0 and 1 are also
+supported.  The TI COFF versions also vary in header byte-order format;
+`ld' will read any version or byte order, but the output header format
+depends on the default specified by the specific target.
+
+
+File: ld.info,  Node: WIN32,  Next: Xtensa,  Prev: TI COFF,  Up: Machine Dependent
+
+4.10 `ld' and WIN32 (cygwin/mingw)
+==================================
+
+This section describes some of the win32 specific `ld' issues.  See
+*Note Command Line Options: Options. for detailed decription of the
+command line options mentioned here.
+
+_import libraries_
+     The standard Windows linker creates and uses so-called import
+     libraries, which contains information for linking to dll's.  They
+     are regular static archives and are handled as any other static
+     archive.  The cygwin and mingw ports of `ld' have specific support
+     for creating such libraries provided with the `--out-implib'
+     command line option.
+
+_exporting DLL symbols_
+     The cygwin/mingw `ld' has several ways to export symbols for dll's.
+
+    _using auto-export functionality_
+          By default `ld' exports symbols with the auto-export
+          functionality, which is controlled by the following command
+          line options:
+
+             * -export-all-symbols   [This is the default]
+
+             * -exclude-symbols
+
+             * -exclude-libs
+
+          If, however, `--export-all-symbols' is not given explicitly
+          on the command line, then the default auto-export behavior
+          will be _disabled_ if either of the following are true:
+
+             * A DEF file is used.
+
+             * Any symbol in any object file was marked with the
+               __declspec(dllexport) attribute.
+
+    _using a DEF file_
+          Another way of exporting symbols is using a DEF file.  A DEF
+          file is an ASCII file containing definitions of symbols which
+          should be exported when a dll is created.  Usually it is
+          named `<dll name>.def' and is added as any other object file
+          to the linker's command line.  The file's name must end in
+          `.def' or `.DEF'.
+
+               gcc -o <output> <objectfiles> <dll name>.def
+
+          Using a DEF file turns off the normal auto-export behavior,
+          unless the `--export-all-symbols' option is also used.
+
+          Here is an example of a DEF file for a shared library called
+          `xyz.dll':
+
+               LIBRARY "xyz.dll" BASE=0x20000000
+
+               EXPORTS
+               foo
+               bar
+               _bar = bar
+               another_foo = abc.dll.afoo
+               var1 DATA
+
+          This example defines a DLL with a non-default base address
+          and five symbols in the export table. The third exported
+          symbol `_bar' is an alias for the second. The fourth symbol,
+          `another_foo' is resolved by "forwarding" to another module
+          and treating it as an alias for `afoo' exported from the DLL
+          `abc.dll'. The final symbol `var1' is declared to be a data
+          object.
+
+          The optional `LIBRARY <name>' command indicates the _internal_
+          name of the output DLL. If `<name>' does not include a suffix,
+          the default library suffix, `.DLL' is appended.
+
+          When the .DEF file is used to build an application. rather
+          than a library, the `NAME <name>' command shoud be used
+          instead of `LIBRARY'. If `<name>' does not include a suffix,
+          the default executable suffix, `.EXE' is appended.
+
+          With either `LIBRARY <name>' or `NAME <name>' the optional
+          specification `BASE = <number>' may be used to specify a
+          non-default base address for the image.
+
+          If neither `LIBRARY <name>' nor  `NAME <name>' is specified,
+          or they specify an empty string, the internal name is the
+          same as the filename specified on the command line.
+
+          The complete specification of an export symbol is:
+
+               EXPORTS
+                 ( (  ( <name1> [ = <name2> ] )
+                    | ( <name1> = <module-name> . <external-name>))
+                 [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) *
+
+          Declares `<name1>' as an exported symbol from the DLL, or
+          declares `<name1>' as an exported alias for `<name2>'; or
+          declares `<name1>' as a "forward" alias for the symbol
+          `<external-name>' in the DLL `<module-name>'.  Optionally,
+          the symbol may be exported by the specified ordinal
+          `<integer>' alias.
+
+          The optional keywords that follow the declaration indicate:
+
+          `NONAME': Do not put the symbol name in the DLL's export
+          table.  It will still be exported by its ordinal alias
+          (either the value specified by the .def specification or,
+          otherwise, the value assigned by the linker). The symbol
+          name, however, does remain visible in the import library (if
+          any), unless `PRIVATE' is also specified.
+
+          `DATA': The symbol is a variable or object, rather than a
+          function.  The import lib will export only an indirect
+          reference to `foo' as the symbol `_imp__foo' (ie, `foo' must
+          be resolved as `*_imp__foo').
+
+          `CONSTANT': Like `DATA', but put the undecorated `foo' as
+          well as `_imp__foo' into the import library. Both refer to the
+          read-only import address table's pointer to the variable, not
+          to the variable itself. This can be dangerous. If the user
+          code fails to add the `dllimport' attribute and also fails to
+          explicitly add the extra indirection that the use of the
+          attribute enforces, the application will behave unexpectedly.
+
+          `PRIVATE': Put the symbol in the DLL's export table, but do
+          not put it into the static import library used to resolve
+          imports at link time. The symbol can still be imported using
+          the `LoadLibrary/GetProcAddress' API at runtime or by by
+          using the GNU ld extension of linking directly to the DLL
+          without an import library.
+
+          See ld/deffilep.y in the binutils sources for the full
+          specification of other DEF file statements
+
+          While linking a shared dll, `ld' is able to create a DEF file
+          with the `--output-def <file>' command line option.
+
+    _Using decorations_
+          Another way of marking symbols for export is to modify the
+          source code itself, so that when building the DLL each symbol
+          to be exported is declared as:
+
+               __declspec(dllexport) int a_variable
+               __declspec(dllexport) void a_function(int with_args)
+
+          All such symbols will be exported from the DLL.  If, however,
+          any of the object files in the DLL contain symbols decorated
+          in this way, then the normal auto-export behavior is
+          disabled, unless the `--export-all-symbols' option is also
+          used.
+
+          Note that object files that wish to access these symbols must
+          _not_ decorate them with dllexport.  Instead, they should use
+          dllimport, instead:
+
+               __declspec(dllimport) int a_variable
+               __declspec(dllimport) void a_function(int with_args)
+
+          This complicates the structure of library header files,
+          because when included by the library itself the header must
+          declare the variables and functions as dllexport, but when
+          included by client code the header must declare them as
+          dllimport.  There are a number of idioms that are typically
+          used to do this; often client code can omit the __declspec()
+          declaration completely.  See `--enable-auto-import' and
+          `automatic data imports' for more imformation.
+
+_automatic data imports_
+     The standard Windows dll format supports data imports from dlls
+     only by adding special decorations (dllimport/dllexport), which
+     let the compiler produce specific assembler instructions to deal
+     with this issue.  This increases the effort necessary to port
+     existing Un*x code to these platforms, especially for large c++
+     libraries and applications.  The auto-import feature, which was
+     initially provided by Paul Sokolovsky, allows one to omit the
+     decorations to archieve a behavior that conforms to that on
+     POSIX/Un*x platforms. This feature is enabled with the
+     `--enable-auto-import' command-line option, although it is enabled
+     by default on cygwin/mingw.  The `--enable-auto-import' option
+     itself now serves mainly to suppress any warnings that are
+     ordinarily emitted when linked objects trigger the feature's use.
+
+     auto-import of variables does not always work flawlessly without
+     additional assistance.  Sometimes, you will see this message
+
+     "variable '<var>' can't be auto-imported. Please read the
+     documentation for ld's `--enable-auto-import' for details."
+
+     The `--enable-auto-import' documentation explains why this error
+     occurs, and several methods that can be used to overcome this
+     difficulty.  One of these methods is the _runtime pseudo-relocs_
+     feature, described below.
+
+     For complex variables imported from DLLs (such as structs or
+     classes), object files typically contain a base address for the
+     variable and an offset (_addend_) within the variable-to specify a
+     particular field or public member, for instance.  Unfortunately,
+     the runtime loader used in win32 environments is incapable of
+     fixing these references at runtime without the additional
+     information supplied by dllimport/dllexport decorations.  The
+     standard auto-import feature described above is unable to resolve
+     these references.
+
+     The `--enable-runtime-pseudo-relocs' switch allows these
+     references to be resolved without error, while leaving the task of
+     adjusting the references themselves (with their non-zero addends)
+     to specialized code provided by the runtime environment.  Recent
+     versions of the cygwin and mingw environments and compilers
+     provide this runtime support; older versions do not.  However, the
+     support is only necessary on the developer's platform; the
+     compiled result will run without error on an older system.
+
+     `--enable-runtime-pseudo-relocs' is not the default; it must be
+     explicitly enabled as needed.
+
+_direct linking to a dll_
+     The cygwin/mingw ports of `ld' support the direct linking,
+     including data symbols, to a dll without the usage of any import
+     libraries.  This is much faster and uses much less memory than
+     does the traditional import library method, expecially when
+     linking large libraries or applications.  When `ld' creates an
+     import lib, each function or variable exported from the dll is
+     stored in its own bfd, even though a single bfd could contain many
+     exports.  The overhead involved in storing, loading, and
+     processing so many bfd's is quite large, and explains the
+     tremendous time, memory, and storage needed to link against
+     particularly large or complex libraries when using import libs.
+
+     Linking directly to a dll uses no extra command-line switches
+     other than `-L' and `-l', because `ld' already searches for a
+     number of names to match each library.  All that is needed from
+     the developer's perspective is an understanding of this search, in
+     order to force ld to select the dll instead of an import library.
+
+     For instance, when ld is called with the argument `-lxxx' it will
+     attempt to find, in the first directory of its search path,
+
+          libxxx.dll.a
+          xxx.dll.a
+          libxxx.a
+          cygxxx.dll (*)
+          libxxx.dll
+          xxx.dll
+
+     before moving on to the next directory in the search path.
+
+     (*) Actually, this is not `cygxxx.dll' but in fact is
+     `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option
+     `--dll-search-prefix=<prefix>'. In the case of cygwin, the
+     standard gcc spec file includes `--dll-search-prefix=cyg', so in
+     effect we actually search for `cygxxx.dll'.
+
+     Other win32-based unix environments, such as mingw or pw32, may
+     use other `<prefix>'es, although at present only cygwin makes use
+     of this feature.  It was originally intended to help avoid name
+     conflicts among dll's built for the various win32/un*x
+     environments, so that (for example) two versions of a zlib dll
+     could coexist on the same machine.
+
+     The generic cygwin/mingw path layout uses a `bin' directory for
+     applications and dll's and a `lib' directory for the import
+     libraries (using cygwin nomenclature):
+
+          bin/
+          	cygxxx.dll
+          lib/
+          	libxxx.dll.a   (in case of dll's)
+          	libxxx.a       (in case of static archive)
+
+     Linking directly to a dll without using the import library can be
+     done two ways:
+
+     1. Use the dll directly by adding the `bin' path to the link line
+          gcc -Wl,-verbose  -o a.exe -L../bin/ -lxxx
+
+     However, as the dll's often have version numbers appended to their
+     names (`cygncurses-5.dll') this will often fail, unless one
+     specifies `-L../bin -lncurses-5' to include the version.  Import
+     libs are generally not versioned, and do not have this difficulty.
+
+     2. Create a symbolic link from the dll to a file in the `lib'
+     directory according to the above mentioned search pattern.  This
+     should be used to avoid unwanted changes in the tools needed for
+     making the app/dll.
+
+          ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a]
+
+     Then you can link without any make environment changes.
+
+          gcc -Wl,-verbose  -o a.exe -L../lib/ -lxxx
+
+     This technique also avoids the version number problems, because
+     the following is perfectly legal
+
+          bin/
+          	cygxxx-5.dll
+          lib/
+          	libxxx.dll.a -> ../bin/cygxxx-5.dll
+
+     Linking directly to a dll without using an import lib will work
+     even when auto-import features are exercised, and even when
+     `--enable-runtime-pseudo-relocs' is used.
+
+     Given the improvements in speed and memory usage, one might
+     justifiably wonder why import libraries are used at all.  There
+     are two reasons:
+
+     1. Until recently, the link-directly-to-dll functionality did _not_
+     work with auto-imported data.
+
+     2. Sometimes it is necessary to include pure static objects within
+     the import library (which otherwise contains only bfd's for
+     indirection symbols that point to the exports of a dll).  Again,
+     the import lib for the cygwin kernel makes use of this ability,
+     and it is not possible to do this without an import lib.
+
+     So, import libs are not going away.  But the ability to replace
+     true import libs with a simple symbolic link to (or a copy of) a
+     dll, in most cases, is a useful addition to the suite of tools
+     binutils makes available to the win32 developer.  Given the
+     massive improvements in memory requirements during linking, storage
+     requirements, and linking speed, we expect that many developers
+     will soon begin to use this feature whenever possible.
+
+_symbol aliasing_
+
+    _adding additional names_
+          Sometimes, it is useful to export symbols with additional
+          names.  A symbol `foo' will be exported as `foo', but it can
+          also be exported as `_foo' by using special directives in the
+          DEF file when creating the dll.  This will affect also the
+          optional created import library.  Consider the following DEF
+          file:
+
+               LIBRARY "xyz.dll" BASE=0x61000000
+
+               EXPORTS
+               foo
+               _foo = foo
+
+          The line `_foo = foo' maps the symbol `foo' to `_foo'.
+
+          Another method for creating a symbol alias is to create it in
+          the source code using the "weak" attribute:
+
+               void foo () { /* Do something.  */; }
+               void _foo () __attribute__ ((weak, alias ("foo")));
+
+          See the gcc manual for more information about attributes and
+          weak symbols.
+
+    _renaming symbols_
+          Sometimes it is useful to rename exports.  For instance, the
+          cygwin kernel does this regularly.  A symbol `_foo' can be
+          exported as `foo' but not as `_foo' by using special
+          directives in the DEF file. (This will also affect the import
+          library, if it is created).  In the following example:
+
+               LIBRARY "xyz.dll" BASE=0x61000000
+
+               EXPORTS
+               _foo = foo
+
+          The line `_foo = foo' maps the exported symbol `foo' to
+          `_foo'.
+
+     Note: using a DEF file disables the default auto-export behavior,
+     unless the `--export-all-symbols' command line option is used.
+     If, however, you are trying to rename symbols, then you should list
+     _all_ desired exports in the DEF file, including the symbols that
+     are not being renamed, and do _not_ use the `--export-all-symbols'
+     option.  If you list only the renamed symbols in the DEF file, and
+     use `--export-all-symbols' to handle the other symbols, then the
+     both the new names _and_ the original names for the renamed
+     symbols will be exported.  In effect, you'd be aliasing those
+     symbols, not renaming them, which is probably not what you wanted.
+
+_weak externals_
+     The Windows object format, PE, specifies a form of weak symbols
+     called weak externals.  When a weak symbol is linked and the
+     symbol is not defined, the weak symbol becomes an alias for some
+     other symbol.  There are three variants of weak externals:
+        * Definition is searched for in objects and libraries,
+          historically called lazy externals.
+
+        * Definition is searched for only in other objects, not in
+          libraries.  This form is not presently implemented.
+
+        * No search; the symbol is an alias.  This form is not presently
+          implemented.
+     As a GNU extension, weak symbols that do not specify an alternate
+     symbol are supported.  If the symbol is undefined when linking,
+     the symbol uses a default value.
+
+
+File: ld.info,  Node: Xtensa,  Prev: WIN32,  Up: Machine Dependent
+
+4.11 `ld' and Xtensa Processors
+===============================
+
+The default `ld' behavior for Xtensa processors is to interpret
+`SECTIONS' commands so that lists of explicitly named sections in a
+specification with a wildcard file will be interleaved when necessary to
+keep literal pools within the range of PC-relative load offsets.  For
+example, with the command:
+
+     SECTIONS
+     {
+       .text : {
+         *(.literal .text)
+       }
+     }
+
+`ld' may interleave some of the `.literal' and `.text' sections from
+different object files to ensure that the literal pools are within the
+range of PC-relative load offsets.  A valid interleaving might place
+the `.literal' sections from an initial group of files followed by the
+`.text' sections of that group of files.  Then, the `.literal' sections
+from the rest of the files and the `.text' sections from the rest of
+the files would follow.
+
+   Relaxation is enabled by default for the Xtensa version of `ld' and
+provides two important link-time optimizations.  The first optimization
+is to combine identical literal values to reduce code size.  A redundant
+literal will be removed and all the `L32R' instructions that use it
+will be changed to reference an identical literal, as long as the
+location of the replacement literal is within the offset range of all
+the `L32R' instructions.  The second optimization is to remove
+unnecessary overhead from assembler-generated "longcall" sequences of
+`L32R'/`CALLXN' when the target functions are within range of direct
+`CALLN' instructions.
+
+   For each of these cases where an indirect call sequence can be
+optimized to a direct call, the linker will change the `CALLXN'
+instruction to a `CALLN' instruction, remove the `L32R' instruction,
+and remove the literal referenced by the `L32R' instruction if it is
+not used for anything else.  Removing the `L32R' instruction always
+reduces code size but can potentially hurt performance by changing the
+alignment of subsequent branch targets.  By default, the linker will
+always preserve alignments, either by switching some instructions
+between 24-bit encodings and the equivalent density instructions or by
+inserting a no-op in place of the `L32R' instruction that was removed.
+If code size is more important than performance, the `--size-opt'
+option can be used to prevent the linker from widening density
+instructions or inserting no-ops, except in a few cases where no-ops
+are required for correctness.
+
+   The following Xtensa-specific command-line options can be used to
+control the linker:
+
+`--no-relax'
+     Since the Xtensa version of `ld' enables the `--relax' option by
+     default, the `--no-relax' option is provided to disable relaxation.
+
+`--size-opt'
+     When optimizing indirect calls to direct calls, optimize for code
+     size more than performance.  With this option, the linker will not
+     insert no-ops or widen density instructions to preserve branch
+     target alignment.  There may still be some cases where no-ops are
+     required to preserve the correctness of the code.
+
+
+File: ld.info,  Node: BFD,  Next: Reporting Bugs,  Prev: Machine Dependent,  Up: Top
+
+5 BFD
+*****
+
+The linker accesses object and archive files using the BFD libraries.
+These libraries allow the linker to use the same routines to operate on
+object files whatever the object file format.  A different object file
+format can be supported simply by creating a new BFD back end and adding
+it to the library.  To conserve runtime memory, however, the linker and
+associated tools are usually configured to support only a subset of the
+object file formats available.  You can use `objdump -i' (*note
+objdump: (binutils.info)objdump.) to list all the formats available for
+your configuration.
+
+   As with most implementations, BFD is a compromise between several
+conflicting requirements. The major factor influencing BFD design was
+efficiency: any time used converting between formats is time which
+would not have been spent had BFD not been involved. This is partly
+offset by abstraction payback; since BFD simplifies applications and
+back ends, more time and care may be spent optimizing algorithms for a
+greater speed.
+
+   One minor artifact of the BFD solution which you should bear in mind
+is the potential for information loss.  There are two places where
+useful information can be lost using the BFD mechanism: during
+conversion and during output. *Note BFD information loss::.
+
+* Menu:
+
+* BFD outline::                 How it works: an outline of BFD
+
+
+File: ld.info,  Node: BFD outline,  Up: BFD
+
+5.1 How It Works: An Outline of BFD
+===================================
+
+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
+
+
+File: ld.info,  Node: BFD information loss,  Next: Canonical format,  Up: BFD outline
+
+5.1.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.
+
+
+File: ld.info,  Node: Canonical format,  Prev: BFD information loss,  Up: BFD outline
+
+5.1.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).
+
+
+File: ld.info,  Node: Reporting Bugs,  Next: MRI,  Prev: BFD,  Up: Top
+
+6 Reporting Bugs
+****************
+
+Your bug reports play an essential role in making `ld' reliable.
+
+   Reporting a bug may help you by bringing a solution to your problem,
+or it may not.  But in any case the principal function of a bug report
+is to help the entire community by making the next version of `ld' work
+better.  Bug reports are your contribution to the maintenance of `ld'.
+
+   In order for a bug report to serve its purpose, you must include the
+information that enables us to fix the bug.
+
+* Menu:
+
+* Bug Criteria::                Have you found a bug?
+* Bug Reporting::               How to report bugs
+
+
+File: ld.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
+
+6.1 Have You Found a Bug?
+=========================
+
+If you are not sure whether you have found a bug, here are some
+guidelines:
+
+   * If the linker gets a fatal signal, for any input whatever, that is
+     a `ld' bug.  Reliable linkers never crash.
+
+   * If `ld' produces an error message for valid input, that is a bug.
+
+   * If `ld' does not produce an error message for invalid input, that
+     may be a bug.  In the general case, the linker can not verify that
+     object files are correct.
+
+   * If you are an experienced user of linkers, your suggestions for
+     improvement of `ld' are welcome in any case.
+
+
+File: ld.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
+
+6.2 How to Report Bugs
+======================
+
+A number of companies and individuals offer support for GNU products.
+If you obtained `ld' from a support organization, we recommend you
+contact that organization first.
+
+   You can find contact information for many support companies and
+individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
+
+   Otherwise, send bug reports for `ld' to `bug-binutils at gnu.org'.
+
+   The fundamental principle of reporting bugs usefully is this:
+*report all the facts*.  If you are not sure whether to state a fact or
+leave it out, state it!
+
+   Often people omit facts because they think they know what causes the
+problem and assume that some details do not matter.  Thus, you might
+assume that the name of a symbol you use in an example does not matter.
+Well, probably it does not, but one cannot be sure.  Perhaps the bug
+is a stray memory reference which happens to fetch from the location
+where that name is stored in memory; perhaps, if the name were
+different, the contents of that location would fool the linker into
+doing the right thing despite the bug.  Play it safe and give a
+specific, complete example.  That is the easiest thing for you to do,
+and the most helpful.
+
+   Keep in mind that the purpose of a bug report is to enable us to fix
+the bug if it is new to us.  Therefore, always write your bug reports
+on the assumption that the bug has not been reported previously.
+
+   Sometimes people give a few sketchy facts and ask, "Does this ring a
+bell?"  This cannot help us fix a bug, so it is basically useless.  We
+respond by asking for enough details to enable us to investigate.  You
+might as well expedite matters by sending them to begin with.
+
+   To enable us to fix the bug, you should include all these things:
+
+   * The version of `ld'.  `ld' announces it if you start it with the
+     `--version' argument.
+
+     Without this, we will not know whether there is any point in
+     looking for the bug in the current version of `ld'.
+
+   * Any patches you may have applied to the `ld' source, including any
+     patches made to the `BFD' library.
+
+   * The type of machine you are using, and the operating system name
+     and version number.
+
+   * What compiler (and its version) was used to compile `ld'--e.g.
+     "`gcc-2.7'".
+
+   * The command arguments you gave the linker to link your example and
+     observe the bug.  To guarantee you will not omit something
+     important, list them all.  A copy of the Makefile (or the output
+     from make) is sufficient.
+
+     If we were to try to guess the arguments, we would probably guess
+     wrong and then we might not encounter the bug.
+
+   * A complete input file, or set of input files, that will reproduce
+     the bug.  It is generally most helpful to send the actual object
+     files provided that they are reasonably small.  Say no more than
+     10K.  For bigger files you can either make them available by FTP
+     or HTTP or else state that you are willing to send the object
+     file(s) to whomever requests them.  (Note - your email will be
+     going to a mailing list, so we do not want to clog it up with
+     large attachments).  But small attachments are best.
+
+     If the source files were assembled using `gas' or compiled using
+     `gcc', then it may be OK to send the source files rather than the
+     object files.  In this case, be sure to say exactly what version of
+     `gas' or `gcc' was used to produce the object files.  Also say how
+     `gas' or `gcc' were configured.
+
+   * A description of what behavior you observe that you believe is
+     incorrect.  For example, "It gets a fatal signal."
+
+     Of course, if the bug is that `ld' gets a fatal signal, then we
+     will certainly notice it.  But if the bug is incorrect output, we
+     might not notice unless it is glaringly wrong.  You might as well
+     not give us a chance to make a mistake.
+
+     Even if the problem you experience is a fatal signal, you should
+     still say so explicitly.  Suppose something strange is going on,
+     such as, your copy of `ld' is out of synch, or you have
+     encountered a bug in the C library on your system.  (This has
+     happened!)  Your copy might crash and ours would not.  If you told
+     us to expect a crash, then when ours fails to crash, we would know
+     that the bug was not happening for us.  If you had not told us to
+     expect a crash, then we would not be able to draw any conclusion
+     from our observations.
+
+   * If you wish to suggest changes to the `ld' source, send us context
+     diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
+     Always send diffs from the old file to the new file.  If you even
+     discuss something in the `ld' source, refer to it by context, not
+     by line number.
+
+     The line numbers in our development sources will not match those
+     in your sources.  Your line numbers would convey no useful
+     information to us.
+
+   Here are some things that are not necessary:
+
+   * A description of the envelope of the bug.
+
+     Often people who encounter a bug spend a lot of time investigating
+     which changes to the input file will make the bug go away and which
+     changes will not affect it.
+
+     This is often time consuming and not very useful, because the way
+     we will find the bug is by running a single example under the
+     debugger with breakpoints, not by pure deduction from a series of
+     examples.  We recommend that you save your time for something else.
+
+     Of course, if you can find a simpler example to report _instead_
+     of the original one, that is a convenience for us.  Errors in the
+     output will be easier to spot, running under the debugger will take
+     less time, and so on.
+
+     However, simplification is not vital; if you do not want to do
+     this, report the bug anyway and send us the entire test case you
+     used.
+
+   * A patch for the bug.
+
+     A patch for the bug does help us if it is a good one.  But do not
+     omit the necessary information, such as the test case, on the
+     assumption that a patch is all we need.  We might see problems
+     with your patch and decide to fix the problem another way, or we
+     might not understand it at all.
+
+     Sometimes with a program as complicated as `ld' it is very hard to
+     construct an example that will make the program follow a certain
+     path through the code.  If you do not send us the example, we will
+     not be able to construct one, so we will not be able to verify
+     that the bug is fixed.
+
+     And if we cannot understand what bug you are trying to fix, or why
+     your patch should be an improvement, we will not install it.  A
+     test case will help us to understand.
+
+   * A guess about what the bug is or what it depends on.
+
+     Such guesses are usually wrong.  Even we cannot guess right about
+     such things without first using the debugger to find the facts.
+
+
+File: ld.info,  Node: MRI,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
+
+Appendix A MRI Compatible Script Files
+**************************************
+
+To aid users making the transition to GNU `ld' from the MRI linker,
+`ld' can use MRI compatible linker scripts as an alternative to the
+more general-purpose linker scripting language described in *Note
+Scripts::.  MRI compatible linker scripts have a much simpler command
+set than the scripting language otherwise used with `ld'.  GNU `ld'
+supports the most commonly used MRI linker commands; these commands are
+described here.
+
+   In general, MRI scripts aren't of much use with the `a.out' object
+file format, since it only has three sections and MRI scripts lack some
+features to make use of them.
+
+   You can specify a file containing an MRI-compatible script using the
+`-c' command-line option.
+
+   Each command in an MRI-compatible script occupies its own line; each
+command line starts with the keyword that identifies the command (though
+blank lines are also allowed for punctuation).  If a line of an
+MRI-compatible script begins with an unrecognized keyword, `ld' issues
+a warning message, but continues processing the script.
+
+   Lines beginning with `*' are comments.
+
+   You can write these commands using all upper-case letters, or all
+lower case; for example, `chip' is the same as `CHIP'.  The following
+list shows only the upper-case form of each command.
+
+`ABSOLUTE SECNAME'
+`ABSOLUTE SECNAME, SECNAME, ... SECNAME'
+     Normally, `ld' includes in the output file all sections from all
+     the input files.  However, in an MRI-compatible script, you can
+     use the `ABSOLUTE' command to restrict the sections that will be
+     present in your output program.  If the `ABSOLUTE' command is used
+     at all in a script, then only the sections named explicitly in
+     `ABSOLUTE' commands will appear in the linker output.  You can
+     still use other input sections (whatever you select on the command
+     line, or using `LOAD') to resolve addresses in the output file.
+
+`ALIAS OUT-SECNAME, IN-SECNAME'
+     Use this command to place the data from input section IN-SECNAME
+     in a section called OUT-SECNAME in the linker output file.
+
+     IN-SECNAME may be an integer.
+
+`ALIGN SECNAME = EXPRESSION'
+     Align the section called SECNAME to EXPRESSION.  The EXPRESSION
+     should be a power of two.
+
+`BASE EXPRESSION'
+     Use the value of EXPRESSION as the lowest address (other than
+     absolute addresses) in the output file.
+
+`CHIP EXPRESSION'
+`CHIP EXPRESSION, EXPRESSION'
+     This command does nothing; it is accepted only for compatibility.
+
+`END'
+     This command does nothing whatever; it's only accepted for
+     compatibility.
+
+`FORMAT OUTPUT-FORMAT'
+     Similar to the `OUTPUT_FORMAT' command in the more general linker
+     language, but restricted to one of these output formats:
+
+       1. S-records, if OUTPUT-FORMAT is `S'
+
+       2. IEEE, if OUTPUT-FORMAT is `IEEE'
+
+       3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is
+          `COFF'
+
+`LIST ANYTHING...'
+     Print (to the standard output file) a link map, as produced by the
+     `ld' command-line option `-M'.
+
+     The keyword `LIST' may be followed by anything on the same line,
+     with no change in its effect.
+
+`LOAD FILENAME'
+`LOAD FILENAME, FILENAME, ... FILENAME'
+     Include one or more object file FILENAME in the link; this has the
+     same effect as specifying FILENAME directly on the `ld' command
+     line.
+
+`NAME OUTPUT-NAME'
+     OUTPUT-NAME is the name for the program produced by `ld'; the
+     MRI-compatible command `NAME' is equivalent to the command-line
+     option `-o' or the general script language command `OUTPUT'.
+
+`ORDER SECNAME, SECNAME, ... SECNAME'
+`ORDER SECNAME SECNAME SECNAME'
+     Normally, `ld' orders the sections in its output file in the order
+     in which they first appear in the input files.  In an
+     MRI-compatible script, you can override this ordering with the
+     `ORDER' command.  The sections you list with `ORDER' will appear
+     first in your output file, in the order specified.
+
+`PUBLIC NAME=EXPRESSION'
+`PUBLIC NAME,EXPRESSION'
+`PUBLIC NAME EXPRESSION'
+     Supply a value (EXPRESSION) for external symbol NAME used in the
+     linker input files.
+
+`SECT SECNAME, EXPRESSION'
+`SECT SECNAME=EXPRESSION'
+`SECT SECNAME EXPRESSION'
+     You can use any of these three forms of the `SECT' command to
+     specify the start address (EXPRESSION) for section SECNAME.  If
+     you have more than one `SECT' statement for the same SECNAME, only
+     the _first_ sets the start address.
+
+
+File: ld.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: MRI,  Up: Top
+
+Appendix B 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.
+
+
+File: ld.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+ [index ]
+* Menu:
+
+* ":                                     Symbols.            (line    6)
+* -(:                                    Options.            (line  609)
+* --accept-unknown-input-arch:           Options.            (line  627)
+* --add-needed:                          Options.            (line  649)
+* --add-stdcall-alias:                   Options.            (line 1343)
+* --allow-multiple-definition:           Options.            (line  819)
+* --allow-shlib-undefined:               Options.            (line  825)
+* --architecture=ARCH:                   Options.            (line  104)
+* --as-needed:                           Options.            (line  637)
+* --auxiliary:                           Options.            (line  205)
+* --base-file:                           Options.            (line 1348)
+* --be8:                                 ARM.                (line   23)
+* --bss-plt:                             PowerPC ELF32.      (line   13)
+* --check-sections:                      Options.            (line  701)
+* --cref:                                Options.            (line  711)
+* --default-imported-symver:             Options.            (line  853)
+* --default-symver:                      Options.            (line  849)
+* --defsym SYMBOL=EXP:                   Options.            (line  739)
+* --demangle[=STYLE]:                    Options.            (line  752)
+* --disable-auto-image-base:             Options.            (line 1495)
+* --disable-auto-import:                 Options.            (line 1624)
+* --disable-new-dtags:                   Options.            (line 1295)
+* --disable-runtime-pseudo-reloc:        Options.            (line 1637)
+* --disable-stdcall-fixup:               Options.            (line 1358)
+* --discard-all:                         Options.            (line  513)
+* --discard-locals:                      Options.            (line  517)
+* --dll:                                 Options.            (line 1353)
+* --dll-search-prefix:                   Options.            (line 1501)
+* --dotsyms:                             PowerPC64 ELF64.    (line   33)
+* --dynamic-linker FILE:                 Options.            (line  765)
+* --eh-frame-hdr:                        Options.            (line 1291)
+* --emit-relocs:                         Options.            (line  415)
+* --emit-stub-syms <1>:                  PowerPC64 ELF64.    (line   29)
+* --emit-stub-syms:                      PowerPC ELF32.      (line   37)
+* --enable-auto-image-base:              Options.            (line 1487)
+* --enable-auto-import:                  Options.            (line 1510)
+* --enable-extra-pe-debug:               Options.            (line 1642)
+* --enable-new-dtags:                    Options.            (line 1295)
+* --enable-runtime-pseudo-reloc:         Options.            (line 1629)
+* --enable-stdcall-fixup:                Options.            (line 1358)
+* --entry=ENTRY:                         Options.            (line  158)
+* --error-unresolved-symbols:            Options.            (line 1244)
+* --exclude-libs:                        Options.            (line  168)
+* --exclude-symbols:                     Options.            (line 1400)
+* --export-all-symbols:                  Options.            (line 1376)
+* --export-dynamic:                      Options.            (line  179)
+* --fatal-warnings:                      Options.            (line  771)
+* --file-alignment:                      Options.            (line 1406)
+* --filter:                              Options.            (line  226)
+* --fix-v4bx:                            ARM.                (line   44)
+* --force-dynamic:                       Options.            (line  424)
+* --force-exe-suffix:                    Options.            (line  774)
+* --format=FORMAT:                       Options.            (line  115)
+* --format=VERSION:                      TI COFF.            (line    6)
+* --gc-sections:                         Options.            (line  784)
+* --gpsize:                              Options.            (line  259)
+* --hash-size=NUMBER:                    Options.            (line 1304)
+* --heap:                                Options.            (line 1412)
+* --help:                                Options.            (line  792)
+* --image-base:                          Options.            (line 1419)
+* --just-symbols=FILE:                   Options.            (line  447)
+* --kill-at:                             Options.            (line 1428)
+* --large-address-aware:                 Options.            (line 1433)
+* --library-path=DIR:                    Options.            (line  315)
+* --library=ARCHIVE:                     Options.            (line  285)
+* --major-image-version:                 Options.            (line 1442)
+* --major-os-version:                    Options.            (line 1447)
+* --major-subsystem-version:             Options.            (line 1451)
+* --minor-image-version:                 Options.            (line 1456)
+* --minor-os-version:                    Options.            (line 1461)
+* --minor-subsystem-version:             Options.            (line 1465)
+* --mri-script=MRI-CMDFILE:              Options.            (line  139)
+* --multi-subspace:                      HPPA ELF32.         (line    6)
+* --nmagic:                              Options.            (line  384)
+* --no-accept-unknown-input-arch:        Options.            (line  627)
+* --no-add-needed:                       Options.            (line  649)
+* --no-allow-shlib-undefined:            Options.            (line  825)
+* --no-as-needed:                        Options.            (line  637)
+* --no-check-sections:                   Options.            (line  701)
+* --no-define-common:                    Options.            (line  723)
+* --no-demangle:                         Options.            (line  752)
+* --no-dotsyms:                          PowerPC64 ELF64.    (line   33)
+* --no-gc-sections:                      Options.            (line  784)
+* --no-keep-memory:                      Options.            (line  804)
+* --no-multi-toc:                        PowerPC64 ELF64.    (line   74)
+* --no-omagic:                           Options.            (line  398)
+* --no-opd-optimize:                     PowerPC64 ELF64.    (line   48)
+* --no-relax:                            Xtensa.             (line   56)
+* --no-tls-optimize <1>:                 PowerPC64 ELF64.    (line   43)
+* --no-tls-optimize:                     PowerPC ELF32.      (line   41)
+* --no-toc-optimize:                     PowerPC64 ELF64.    (line   60)
+* --no-undefined:                        Options.            (line  811)
+* --no-undefined-version:                Options.            (line  844)
+* --no-warn-mismatch:                    Options.            (line  857)
+* --no-whole-archive:                    Options.            (line  866)
+* --noinhibit-exec:                      Options.            (line  870)
+* --non-overlapping-opd:                 PowerPC64 ELF64.    (line   54)
+* --oformat:                             Options.            (line  882)
+* --omagic:                              Options.            (line  389)
+* --out-implib:                          Options.            (line 1478)
+* --output-def:                          Options.            (line 1470)
+* --output=OUTPUT:                       Options.            (line  404)
+* --pic-executable:                      Options.            (line  895)
+* --print-map:                           Options.            (line  347)
+* --reduce-memory-overheads:             Options.            (line 1312)
+* --relax:                               Options.            (line  911)
+* --relax on i960:                       i960.               (line   31)
+* --relax on PowerPC:                    PowerPC ELF32.      (line    6)
+* --relax on Xtensa:                     Xtensa.             (line   27)
+* --relocatable:                         Options.            (line  428)
+* --script=SCRIPT:                       Options.            (line  471)
+* --sdata-got:                           PowerPC ELF32.      (line   23)
+* --section-alignment:                   Options.            (line 1647)
+* --section-start SECTIONNAME=ORG:       Options.            (line 1081)
+* --sort-common:                         Options.            (line 1028)
+* --sort-section alignment:              Options.            (line 1038)
+* --sort-section name:                   Options.            (line 1034)
+* --split-by-file:                       Options.            (line 1042)
+* --split-by-reloc:                      Options.            (line 1047)
+* --stack:                               Options.            (line 1653)
+* --stats:                               Options.            (line 1060)
+* --strip-all:                           Options.            (line  458)
+* --strip-debug:                         Options.            (line  462)
+* --stub-group-size:                     PowerPC64 ELF64.    (line    6)
+* --stub-group-size=N:                   HPPA ELF32.         (line   12)
+* --subsystem:                           Options.            (line 1660)
+* --support-old-code:                    ARM.                (line    6)
+* --sysroot:                             Options.            (line 1064)
+* --target-help:                         Options.            (line  796)
+* --target1-abs:                         ARM.                (line   27)
+* --target1-rel:                         ARM.                (line   27)
+* --target2=TYPE:                        ARM.                (line   32)
+* --thumb-entry=ENTRY:                   ARM.                (line   17)
+* --trace:                               Options.            (line  467)
+* --trace-symbol=SYMBOL:                 Options.            (line  522)
+* --traditional-format:                  Options.            (line 1069)
+* --undefined=SYMBOL:                    Options.            (line  480)
+* --unique[=SECTION]:                    Options.            (line  498)
+* --unresolved-symbols:                  Options.            (line 1096)
+* --use-blx:                             ARM.                (line   57)
+* --verbose:                             Options.            (line 1125)
+* --version:                             Options.            (line  507)
+* --version-script=VERSION-SCRIPTFILE:   Options.            (line 1131)
+* --warn-common:                         Options.            (line 1138)
+* --warn-constructors:                   Options.            (line 1206)
+* --warn-multiple-gp:                    Options.            (line 1211)
+* --warn-once:                           Options.            (line 1225)
+* --warn-section-align:                  Options.            (line 1229)
+* --warn-shared-textrel:                 Options.            (line 1236)
+* --warn-unresolved-symbols:             Options.            (line 1239)
+* --whole-archive:                       Options.            (line 1248)
+* --wrap:                                Options.            (line 1262)
+* -AARCH:                                Options.            (line  103)
+* -aKEYWORD:                             Options.            (line   96)
+* -assert KEYWORD:                       Options.            (line  659)
+* -b FORMAT:                             Options.            (line  115)
+* -Bdynamic:                             Options.            (line  662)
+* -Bgroup:                               Options.            (line  672)
+* -Bshareable:                           Options.            (line 1020)
+* -Bstatic:                              Options.            (line  679)
+* -Bsymbolic:                            Options.            (line  694)
+* -c MRI-CMDFILE:                        Options.            (line  139)
+* -call_shared:                          Options.            (line  662)
+* -d:                                    Options.            (line  149)
+* -dc:                                   Options.            (line  149)
+* -dn:                                   Options.            (line  679)
+* -dp:                                   Options.            (line  149)
+* -dy:                                   Options.            (line  662)
+* -E:                                    Options.            (line  179)
+* -e ENTRY:                              Options.            (line  158)
+* -EB:                                   Options.            (line  198)
+* -EL:                                   Options.            (line  201)
+* -F:                                    Options.            (line  226)
+* -f:                                    Options.            (line  205)
+* -fini:                                 Options.            (line  250)
+* -G:                                    Options.            (line  259)
+* -g:                                    Options.            (line  256)
+* -hNAME:                                Options.            (line  267)
+* -i:                                    Options.            (line  276)
+* -IFILE:                                Options.            (line  765)
+* -init:                                 Options.            (line  279)
+* -lARCHIVE:                             Options.            (line  285)
+* -LDIR:                                 Options.            (line  315)
+* -M:                                    Options.            (line  347)
+* -m EMULATION:                          Options.            (line  337)
+* -Map:                                  Options.            (line  800)
+* -N:                                    Options.            (line  389)
+* -n:                                    Options.            (line  384)
+* -non_shared:                           Options.            (line  679)
+* -nostdlib:                             Options.            (line  876)
+* -O LEVEL:                              Options.            (line  410)
+* -o OUTPUT:                             Options.            (line  404)
+* -pie:                                  Options.            (line  895)
+* -q:                                    Options.            (line  415)
+* -qmagic:                               Options.            (line  905)
+* -Qy:                                   Options.            (line  908)
+* -r:                                    Options.            (line  428)
+* -R FILE:                               Options.            (line  447)
+* -rpath:                                Options.            (line  945)
+* -rpath-link:                           Options.            (line  967)
+* -S:                                    Options.            (line  462)
+* -s:                                    Options.            (line  458)
+* -shared:                               Options.            (line 1020)
+* -soname=NAME:                          Options.            (line  267)
+* -static:                               Options.            (line  679)
+* -t:                                    Options.            (line  467)
+* -T SCRIPT:                             Options.            (line  471)
+* -Tbss ORG:                             Options.            (line 1090)
+* -Tdata ORG:                            Options.            (line 1090)
+* -Ttext ORG:                            Options.            (line 1090)
+* -u SYMBOL:                             Options.            (line  480)
+* -Ur:                                   Options.            (line  488)
+* -V:                                    Options.            (line  507)
+* -v:                                    Options.            (line  507)
+* -X:                                    Options.            (line  517)
+* -x:                                    Options.            (line  513)
+* -Y PATH:                               Options.            (line  531)
+* -y SYMBOL:                             Options.            (line  522)
+* -z defs:                               Options.            (line  811)
+* -z KEYWORD:                            Options.            (line  535)
+* -z muldefs:                            Options.            (line  819)
+* .:                                     Location Counter.   (line    6)
+* /DISCARD/:                             Output Section Discarding.
+                                                             (line   18)
+* :PHDR:                                 Output Section Phdr.
+                                                             (line    6)
+* =FILLEXP:                              Output Section Fill.
+                                                             (line    6)
+* >REGION:                               Output Section Region.
+                                                             (line    6)
+* [COMMON]:                              Input Section Common.
+                                                             (line   29)
+* ABSOLUTE (MRI):                        MRI.                (line   33)
+* absolute and relocatable symbols:      Expression Section. (line    6)
+* absolute expressions:                  Expression Section. (line    6)
+* ABSOLUTE(EXP):                         Builtin Functions.  (line   10)
+* ADDR(SECTION):                         Builtin Functions.  (line   17)
+* address, section:                      Output Section Address.
+                                                             (line    6)
+* ALIAS (MRI):                           MRI.                (line   44)
+* ALIGN (MRI):                           MRI.                (line   50)
+* align expression:                      Builtin Functions.  (line   36)
+* align location counter:                Builtin Functions.  (line   36)
+* ALIGN(ALIGN):                          Builtin Functions.  (line   36)
+* ALIGN(EXP,ALIGN):                      Builtin Functions.  (line   36)
+* ALIGN(SECTION_ALIGN):                  Forced Output Alignment.
+                                                             (line    6)
+* allocating memory:                     MEMORY.             (line    6)
+* architecture:                          Miscellaneous Commands.
+                                                             (line   46)
+* architectures:                         Options.            (line  103)
+* archive files, from cmd line:          Options.            (line  285)
+* archive search path in linker script:  File Commands.      (line   71)
+* arithmetic:                            Expressions.        (line    6)
+* arithmetic operators:                  Operators.          (line    6)
+* ARM interworking support:              ARM.                (line    6)
+* AS_NEEDED(FILES):                      File Commands.      (line   51)
+* ASSERT:                                Miscellaneous Commands.
+                                                             (line    9)
+* assertion in linker script:            Miscellaneous Commands.
+                                                             (line    9)
+* assignment in scripts:                 Assignments.        (line    6)
+* AT(LMA):                               Output Section LMA. (line    6)
+* AT>LMA_REGION:                         Output Section LMA. (line    6)
+* automatic data imports:                WIN32.              (line  170)
+* back end:                              BFD.                (line    6)
+* BASE (MRI):                            MRI.                (line   54)
+* BE8:                                   ARM.                (line   23)
+* BFD canonical format:                  Canonical format.   (line   11)
+* BFD requirements:                      BFD.                (line   16)
+* big-endian objects:                    Options.            (line  198)
+* binary input format:                   Options.            (line  115)
+* BLOCK(EXP):                            Builtin Functions.  (line   62)
+* bug criteria:                          Bug Criteria.       (line    6)
+* bug reports:                           Bug Reporting.      (line    6)
+* bugs in ld:                            Reporting Bugs.     (line    6)
+* BYTE(EXPRESSION):                      Output Section Data.
+                                                             (line    6)
+* C++ constructors, arranging in link:   Output Section Keywords.
+                                                             (line   19)
+* CHIP (MRI):                            MRI.                (line   58)
+* COLLECT_NO_DEMANGLE:                   Environment.        (line   29)
+* combining symbols, warnings on:        Options.            (line 1138)
+* command files:                         Scripts.            (line    6)
+* command line:                          Options.            (line    6)
+* common allocation:                     Options.            (line  149)
+* common allocation in linker script:    Miscellaneous Commands.
+                                                             (line   20)
+* common symbol placement:               Input Section Common.
+                                                             (line    6)
+* compatibility, MRI:                    Options.            (line  139)
+* constants in linker scripts:           Constants.          (line    6)
+* CONSTRUCTORS:                          Output Section Keywords.
+                                                             (line   19)
+* constructors:                          Options.            (line  488)
+* constructors, arranging in link:       Output Section Keywords.
+                                                             (line   19)
+* crash of linker:                       Bug Criteria.       (line    9)
+* CREATE_OBJECT_SYMBOLS:                 Output Section Keywords.
+                                                             (line    9)
+* creating a DEF file:                   WIN32.              (line  137)
+* cross reference table:                 Options.            (line  711)
+* cross references:                      Miscellaneous Commands.
+                                                             (line   30)
+* current output location:               Location Counter.   (line    6)
+* data:                                  Output Section Data.
+                                                             (line    6)
+* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions.
+                                                             (line   67)
+* DATA_SEGMENT_END(EXP):                 Builtin Functions.  (line   88)
+* DATA_SEGMENT_RELRO_END(OFFSET, EXP):   Builtin Functions.  (line   94)
+* dbx:                                   Options.            (line 1074)
+* DEF files, creating:                   Options.            (line 1470)
+* default emulation:                     Environment.        (line   21)
+* default input format:                  Environment.        (line    9)
+* DEFINED(SYMBOL):                       Builtin Functions.  (line  105)
+* deleting local symbols:                Options.            (line  513)
+* demangling, default:                   Environment.        (line   29)
+* demangling, from command line:         Options.            (line  752)
+* direct linking to a dll:               WIN32.              (line  218)
+* discarding sections:                   Output Section Discarding.
+                                                             (line    6)
+* discontinuous memory:                  MEMORY.             (line    6)
+* DLLs, creating:                        Options.            (line 1376)
+* DLLs, linking to:                      Options.            (line 1501)
+* dot:                                   Location Counter.   (line    6)
+* dot inside sections:                   Location Counter.   (line   34)
+* dot outside sections:                  Location Counter.   (line   64)
+* dynamic linker, from command line:     Options.            (line  765)
+* dynamic symbol table:                  Options.            (line  179)
+* ELF program headers:                   PHDRS.              (line    6)
+* emulation:                             Options.            (line  337)
+* emulation, default:                    Environment.        (line   21)
+* END (MRI):                             MRI.                (line   62)
+* endianness:                            Options.            (line  198)
+* entry point:                           Entry Point.        (line    6)
+* entry point, from command line:        Options.            (line  158)
+* entry point, thumb:                    ARM.                (line   17)
+* ENTRY(SYMBOL):                         Entry Point.        (line    6)
+* error on valid input:                  Bug Criteria.       (line   12)
+* example of linker script:              Simple Example.     (line    6)
+* exporting DLL symbols:                 WIN32.              (line   19)
+* expression evaluation order:           Evaluation.         (line    6)
+* expression sections:                   Expression Section. (line    6)
+* expression, absolute:                  Builtin Functions.  (line   10)
+* expressions:                           Expressions.        (line    6)
+* EXTERN:                                Miscellaneous Commands.
+                                                             (line   13)
+* fatal signal:                          Bug Criteria.       (line    9)
+* file name wildcard patterns:           Input Section Wildcards.
+                                                             (line    6)
+* FILEHDR:                               PHDRS.              (line   61)
+* filename symbols:                      Output Section Keywords.
+                                                             (line    9)
+* fill pattern, entire section:          Output Section Fill.
+                                                             (line    6)
+* FILL(EXPRESSION):                      Output Section Data.
+                                                             (line   39)
+* finalization function:                 Options.            (line  250)
+* first input file:                      File Commands.      (line   79)
+* first instruction:                     Entry Point.        (line    6)
+* FIX_V4BX:                              ARM.                (line   44)
+* FORCE_COMMON_ALLOCATION:               Miscellaneous Commands.
+                                                             (line   20)
+* forcing input section alignment:       Forced Input Alignment.
+                                                             (line    6)
+* forcing output section alignment:      Forced Output Alignment.
+                                                             (line    6)
+* forcing the creation of dynamic sections: Options.         (line  424)
+* FORMAT (MRI):                          MRI.                (line   66)
+* functions in expressions:              Builtin Functions.  (line    6)
+* garbage collection <1>:                Input Section Keep. (line    6)
+* garbage collection:                    Options.            (line  784)
+* generating optimized output:           Options.            (line  410)
+* GNU linker:                            Overview.           (line    6)
+* GNUTARGET:                             Environment.        (line    9)
+* GROUP(FILES):                          File Commands.      (line   44)
+* grouping input files:                  File Commands.      (line   44)
+* groups of archives:                    Options.            (line  609)
+* H8/300 support:                        H8/300.             (line    6)
+* header size:                           Builtin Functions.  (line  170)
+* heap size:                             Options.            (line 1412)
+* help:                                  Options.            (line  792)
+* holes:                                 Location Counter.   (line   12)
+* holes, filling:                        Output Section Data.
+                                                             (line   39)
+* HPPA multiple sub-space stubs:         HPPA ELF32.         (line    6)
+* HPPA stub grouping:                    HPPA ELF32.         (line   12)
+* i960 support:                          i960.               (line    6)
+* image base:                            Options.            (line 1419)
+* implicit linker scripts:               Implicit Linker Scripts.
+                                                             (line    6)
+* import libraries:                      WIN32.              (line   10)
+* INCLUDE FILENAME:                      File Commands.      (line    9)
+* including a linker script:             File Commands.      (line    9)
+* including an entire archive:           Options.            (line 1248)
+* incremental link:                      Options.            (line  276)
+* INHIBIT_COMMON_ALLOCATION:             Miscellaneous Commands.
+                                                             (line   25)
+* initialization function:               Options.            (line  279)
+* initialized data in ROM:               Output Section LMA. (line   21)
+* input file format in linker script:    Format Commands.    (line   35)
+* input filename symbols:                Output Section Keywords.
+                                                             (line    9)
+* input files in linker scripts:         File Commands.      (line   16)
+* input files, displaying:               Options.            (line  467)
+* input format:                          Options.            (line  115)
+* input object files in linker scripts:  File Commands.      (line   16)
+* input section alignment:               Forced Input Alignment.
+                                                             (line    6)
+* input section basics:                  Input Section Basics.
+                                                             (line    6)
+* input section wildcards:               Input Section Wildcards.
+                                                             (line    6)
+* input sections:                        Input Section.      (line    6)
+* INPUT(FILES):                          File Commands.      (line   16)
+* integer notation:                      Constants.          (line    6)
+* integer suffixes:                      Constants.          (line   12)
+* internal object-file format:           Canonical format.   (line   11)
+* invalid input:                         Bug Criteria.       (line   14)
+* K and M integer suffixes:              Constants.          (line   12)
+* KEEP:                                  Input Section Keep. (line    6)
+* l =:                                   MEMORY.             (line   72)
+* L, deleting symbols beginning:         Options.            (line  517)
+* lazy evaluation:                       Evaluation.         (line    6)
+* ld bugs, reporting:                    Bug Reporting.      (line    6)
+* LDEMULATION:                           Environment.        (line   21)
+* len =:                                 MEMORY.             (line   72)
+* LENGTH =:                              MEMORY.             (line   72)
+* LENGTH(MEMORY):                        Builtin Functions.  (line  122)
+* library search path in linker script:  File Commands.      (line   71)
+* link map:                              Options.            (line  347)
+* link-time runtime library search path: Options.            (line  967)
+* linker crash:                          Bug Criteria.       (line    9)
+* linker script concepts:                Basic Script Concepts.
+                                                             (line    6)
+* linker script example:                 Simple Example.     (line    6)
+* linker script file commands:           File Commands.      (line    6)
+* linker script format:                  Script Format.      (line    6)
+* linker script input object files:      File Commands.      (line   16)
+* linker script simple commands:         Simple Commands.    (line    6)
+* linker scripts:                        Scripts.            (line    6)
+* LIST (MRI):                            MRI.                (line   77)
+* little-endian objects:                 Options.            (line  201)
+* LOAD (MRI):                            MRI.                (line   84)
+* load address:                          Output Section LMA. (line    6)
+* LOADADDR(SECTION):                     Builtin Functions.  (line  125)
+* loading, preventing:                   Output Section Type.
+                                                             (line   22)
+* local symbols, deleting:               Options.            (line  517)
+* location counter:                      Location Counter.   (line    6)
+* LONG(EXPRESSION):                      Output Section Data.
+                                                             (line    6)
+* M and K integer suffixes:              Constants.          (line   12)
+* machine architecture:                  Miscellaneous Commands.
+                                                             (line   46)
+* machine dependencies:                  Machine Dependent.  (line    6)
+* mapping input sections to output sections: Input Section.  (line    6)
+* MAX:                                   Builtin Functions.  (line  130)
+* MEMORY:                                MEMORY.             (line    6)
+* memory region attributes:              MEMORY.             (line   32)
+* memory regions:                        MEMORY.             (line    6)
+* memory regions and sections:           Output Section Region.
+                                                             (line    6)
+* memory usage:                          Options.            (line  804)
+* MIN:                                   Builtin Functions.  (line  133)
+* MRI compatibility:                     MRI.                (line    6)
+* MSP430 extra sections:                 MSP430.             (line   11)
+* NAME (MRI):                            MRI.                (line   90)
+* name, section:                         Output Section Name.
+                                                             (line    6)
+* names:                                 Symbols.            (line    6)
+* naming the output file:                Options.            (line  404)
+* NEXT(EXP):                             Builtin Functions.  (line  137)
+* NMAGIC:                                Options.            (line  384)
+* NOCROSSREFS(SECTIONS):                 Miscellaneous Commands.
+                                                             (line   30)
+* NOLOAD:                                Output Section Type.
+                                                             (line   22)
+* not enough room for program headers:   Builtin Functions.  (line  175)
+* o =:                                   MEMORY.             (line   67)
+* objdump -i:                            BFD.                (line    6)
+* object file management:                BFD.                (line    6)
+* object files:                          Options.            (line   29)
+* object formats available:              BFD.                (line    6)
+* object size:                           Options.            (line  259)
+* OMAGIC:                                Options.            (line  389)
+* opening object files:                  BFD outline.        (line    6)
+* operators for arithmetic:              Operators.          (line    6)
+* options:                               Options.            (line    6)
+* ORDER (MRI):                           MRI.                (line   95)
+* org =:                                 MEMORY.             (line   67)
+* ORIGIN =:                              MEMORY.             (line   67)
+* ORIGIN(MEMORY):                        Builtin Functions.  (line  143)
+* orphan:                                Orphan Sections.    (line    6)
+* output file after errors:              Options.            (line  870)
+* output file format in linker script:   Format Commands.    (line   10)
+* output file name in linker scripot:    File Commands.      (line   61)
+* output section alignment:              Forced Output Alignment.
+                                                             (line    6)
+* output section attributes:             Output Section Attributes.
+                                                             (line    6)
+* output section data:                   Output Section Data.
+                                                             (line    6)
+* OUTPUT(FILENAME):                      File Commands.      (line   61)
+* OUTPUT_ARCH(BFDARCH):                  Miscellaneous Commands.
+                                                             (line   46)
+* OUTPUT_FORMAT(BFDNAME):                Format Commands.    (line   10)
+* OVERLAY:                               Overlay Description.
+                                                             (line    6)
+* overlays:                              Overlay Description.
+                                                             (line    6)
+* partial link:                          Options.            (line  428)
+* PHDRS:                                 PHDRS.              (line    6)
+* position independent executables:      Options.            (line  897)
+* PowerPC ELF32 options:                 PowerPC ELF32.      (line   13)
+* PowerPC GOT:                           PowerPC ELF32.      (line   23)
+* PowerPC long branches:                 PowerPC ELF32.      (line    6)
+* PowerPC PLT:                           PowerPC ELF32.      (line   13)
+* PowerPC stub symbols:                  PowerPC ELF32.      (line   37)
+* PowerPC TLS optimization:              PowerPC ELF32.      (line   41)
+* PowerPC64 dot symbols:                 PowerPC64 ELF64.    (line   33)
+* PowerPC64 ELF64 options:               PowerPC64 ELF64.    (line    6)
+* PowerPC64 multi-TOC:                   PowerPC64 ELF64.    (line   74)
+* PowerPC64 OPD optimization:            PowerPC64 ELF64.    (line   48)
+* PowerPC64 OPD spacing:                 PowerPC64 ELF64.    (line   54)
+* PowerPC64 stub grouping:               PowerPC64 ELF64.    (line    6)
+* PowerPC64 stub symbols:                PowerPC64 ELF64.    (line   29)
+* PowerPC64 TLS optimization:            PowerPC64 ELF64.    (line   43)
+* PowerPC64 TOC optimization:            PowerPC64 ELF64.    (line   60)
+* precedence in expressions:             Operators.          (line    6)
+* prevent unnecessary loading:           Output Section Type.
+                                                             (line   22)
+* program headers:                       PHDRS.              (line    6)
+* program headers and sections:          Output Section Phdr.
+                                                             (line    6)
+* program headers, not enough room:      Builtin Functions.  (line  175)
+* program segments:                      PHDRS.              (line    6)
+* PROVIDE:                               PROVIDE.            (line    6)
+* PROVIDE_HIDDEN:                        PROVIDE_HIDDEN.     (line    6)
+* PUBLIC (MRI):                          MRI.                (line  103)
+* QUAD(EXPRESSION):                      Output Section Data.
+                                                             (line    6)
+* quoted symbol names:                   Symbols.            (line    6)
+* read-only text:                        Options.            (line  384)
+* read/write from cmd line:              Options.            (line  389)
+* regions of memory:                     MEMORY.             (line    6)
+* relative expressions:                  Expression Section. (line    6)
+* relaxing addressing modes:             Options.            (line  911)
+* relaxing on H8/300:                    H8/300.             (line    9)
+* relaxing on i960:                      i960.               (line   31)
+* relaxing on Xtensa:                    Xtensa.             (line   27)
+* relocatable and absolute symbols:      Expression Section. (line    6)
+* relocatable output:                    Options.            (line  428)
+* removing sections:                     Output Section Discarding.
+                                                             (line    6)
+* reporting bugs in ld:                  Reporting Bugs.     (line    6)
+* requirements for BFD:                  BFD.                (line   16)
+* retain relocations in final executable: Options.           (line  415)
+* retaining specified symbols:           Options.            (line  931)
+* ROM initialized data:                  Output Section LMA. (line   21)
+* round up expression:                   Builtin Functions.  (line   36)
+* round up location counter:             Builtin Functions.  (line   36)
+* runtime library name:                  Options.            (line  267)
+* runtime library search path:           Options.            (line  945)
+* runtime pseudo-relocation:             WIN32.              (line  196)
+* scaled integers:                       Constants.          (line   12)
+* scommon section:                       Input Section Common.
+                                                             (line   20)
+* script files:                          Options.            (line  471)
+* scripts:                               Scripts.            (line    6)
+* search directory, from cmd line:       Options.            (line  315)
+* search path in linker script:          File Commands.      (line   71)
+* SEARCH_DIR(PATH):                      File Commands.      (line   71)
+* SECT (MRI):                            MRI.                (line  109)
+* section address:                       Output Section Address.
+                                                             (line    6)
+* section address in expression:         Builtin Functions.  (line   17)
+* section alignment, warnings on:        Options.            (line 1229)
+* section data:                          Output Section Data.
+                                                             (line    6)
+* section fill pattern:                  Output Section Fill.
+                                                             (line    6)
+* section load address:                  Output Section LMA. (line    6)
+* section load address in expression:    Builtin Functions.  (line  125)
+* section name:                          Output Section Name.
+                                                             (line    6)
+* section name wildcard patterns:        Input Section Wildcards.
+                                                             (line    6)
+* section size:                          Builtin Functions.  (line  154)
+* section, assigning to memory region:   Output Section Region.
+                                                             (line    6)
+* section, assigning to program header:  Output Section Phdr.
+                                                             (line    6)
+* SECTIONS:                              SECTIONS.           (line    6)
+* sections, discarding:                  Output Section Discarding.
+                                                             (line    6)
+* segment origins, cmd line:             Options.            (line 1090)
+* SEGMENT_START(SEGMENT, DEFAULT):       Builtin Functions.  (line  146)
+* segments, ELF:                         PHDRS.              (line    6)
+* shared libraries:                      Options.            (line 1022)
+* SHORT(EXPRESSION):                     Output Section Data.
+                                                             (line    6)
+* SIZEOF(SECTION):                       Builtin Functions.  (line  154)
+* SIZEOF_HEADERS:                        Builtin Functions.  (line  170)
+* small common symbols:                  Input Section Common.
+                                                             (line   20)
+* SORT:                                  Input Section Wildcards.
+                                                             (line   58)
+* SORT_BY_ALIGNMENT:                     Input Section Wildcards.
+                                                             (line   54)
+* SORT_BY_NAME:                          Input Section Wildcards.
+                                                             (line   46)
+* SQUAD(EXPRESSION):                     Output Section Data.
+                                                             (line    6)
+* stack size:                            Options.            (line 1653)
+* standard Unix system:                  Options.            (line    7)
+* start of execution:                    Entry Point.        (line    6)
+* STARTUP(FILENAME):                     File Commands.      (line   79)
+* strip all symbols:                     Options.            (line  458)
+* strip debugger symbols:                Options.            (line  462)
+* stripping all but some symbols:        Options.            (line  931)
+* SUBALIGN(SUBSECTION_ALIGN):            Forced Input Alignment.
+                                                             (line    6)
+* suffixes for integers:                 Constants.          (line   12)
+* symbol defaults:                       Builtin Functions.  (line  105)
+* symbol definition, scripts:            Assignments.        (line    6)
+* symbol names:                          Symbols.            (line    6)
+* symbol tracing:                        Options.            (line  522)
+* symbol versions:                       VERSION.            (line    6)
+* symbol-only input:                     Options.            (line  447)
+* symbols, from command line:            Options.            (line  739)
+* symbols, relocatable and absolute:     Expression Section. (line    6)
+* symbols, retaining selectively:        Options.            (line  931)
+* synthesizing linker:                   Options.            (line  911)
+* synthesizing on H8/300:                H8/300.             (line   14)
+* TARGET(BFDNAME):                       Format Commands.    (line   35)
+* TARGET1:                               ARM.                (line   27)
+* TARGET2:                               ARM.                (line   32)
+* thumb entry point:                     ARM.                (line   17)
+* TI COFF versions:                      TI COFF.            (line    6)
+* traditional format:                    Options.            (line 1069)
+* unallocated address, next:             Builtin Functions.  (line  137)
+* undefined symbol:                      Options.            (line  480)
+* undefined symbol in linker script:     Miscellaneous Commands.
+                                                             (line   13)
+* undefined symbols, warnings on:        Options.            (line 1225)
+* uninitialized data placement:          Input Section Common.
+                                                             (line    6)
+* unspecified memory:                    Output Section Data.
+                                                             (line   39)
+* usage:                                 Options.            (line  792)
+* USE_BLX:                               ARM.                (line   57)
+* using a DEF file:                      WIN32.              (line   42)
+* using auto-export functionality:       WIN32.              (line   22)
+* Using decorations:                     WIN32.              (line  141)
+* variables, defining:                   Assignments.        (line    6)
+* verbose:                               Options.            (line 1125)
+* version:                               Options.            (line  507)
+* version script:                        VERSION.            (line    6)
+* version script, symbol versions:       Options.            (line 1131)
+* VERSION {script text}:                 VERSION.            (line    6)
+* versions of symbols:                   VERSION.            (line    6)
+* warnings, on combining symbols:        Options.            (line 1138)
+* warnings, on section alignment:        Options.            (line 1229)
+* warnings, on undefined symbols:        Options.            (line 1225)
+* weak externals:                        WIN32.              (line  380)
+* what is this?:                         Overview.           (line    6)
+* wildcard file name patterns:           Input Section Wildcards.
+                                                             (line    6)
+* Xtensa options:                        Xtensa.             (line   56)
+* Xtensa processors:                     Xtensa.             (line    6)
+
+
+
+Tag Table:
+Node: Top347
+Node: Overview1109
+Node: Invocation2223
+Node: Options2631
+Node: Environment77286
+Node: Scripts79046
+Node: Basic Script Concepts80780
+Node: Script Format83487
+Node: Simple Example84350
+Node: Simple Commands87446
+Node: Entry Point87897
+Node: File Commands88656
+Node: Format Commands92522
+Node: Miscellaneous Commands94488
+Node: Assignments96718
+Node: Simple Assignments97209
+Node: PROVIDE98945
+Node: PROVIDE_HIDDEN100150
+Node: Source Code Reference100394
+Node: SECTIONS103974
+Node: Output Section Description105865
+Node: Output Section Name106918
+Node: Output Section Address107794
+Node: Input Section109443
+Node: Input Section Basics110244
+Node: Input Section Wildcards112596
+Node: Input Section Common117329
+Node: Input Section Keep118811
+Node: Input Section Example119301
+Node: Output Section Data120269
+Node: Output Section Keywords123046
+Node: Output Section Discarding126615
+Node: Output Section Attributes127571
+Node: Output Section Type128575
+Node: Output Section LMA129729
+Node: Forced Output Alignment132000
+Node: Forced Input Alignment132268
+Node: Output Section Region132653
+Node: Output Section Phdr133083
+Node: Output Section Fill133747
+Node: Overlay Description134889
+Node: MEMORY139137
+Node: PHDRS143337
+Node: VERSION148376
+Node: Expressions156167
+Node: Constants157045
+Node: Symbols157606
+Node: Orphan Sections158344
+Node: Location Counter159107
+Node: Operators163411
+Node: Evaluation164333
+Node: Expression Section165697
+Node: Builtin Functions167186
+Node: Implicit Linker Scripts174678
+Node: Machine Dependent175453
+Node: H8/300176314
+Node: i960177939
+Node: ARM179624
+Node: HPPA ELF32182540
+Node: MMIX184163
+Node: MSP430185380
+Node: PowerPC ELF32186428
+Node: PowerPC64 ELF64188719
+Node: TI COFF193133
+Node: WIN32193665
+Node: Xtensa211739
+Node: BFD214861
+Node: BFD outline216316
+Node: BFD information loss217602
+Node: Canonical format220119
+Node: Reporting Bugs224476
+Node: Bug Criteria225170
+Node: Bug Reporting225869
+Node: MRI232894
+Node: GNU Free Documentation License237537
+Node: Index257251
+
+End Tag Table

Modified: branches/binutils/package/ld/ld.texinfo
===================================================================
--- branches/binutils/package/ld/ld.texinfo	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ld.texinfo	2006-12-31 16:27:59 UTC (rev 19)
@@ -40,6 +40,8 @@
 @set MSP430
 @set PDP11
 @set PJ
+ at set POWERPC
+ at set POWERPC64
 @set SH
 @set SPARC
 @set TIC54X
@@ -156,6 +158,12 @@
 @ifset M68HC11
 * M68HC11/68HC12::              ld and the Motorola 68HC11 and 68HC12 families
 @end ifset
+ at ifset POWERPC
+* PowerPC ELF32::               ld and PowerPC 32-bit ELF Support
+ at end ifset
+ at ifset POWERPC64
+* PowerPC64 ELF64::             ld and PowerPC64 64-bit ELF Support
+ at end ifset
 @ifset TICOFF
 * TI COFF::                     ld and the TI COFF
 @end ifset
@@ -342,7 +350,7 @@
 linker:
 
 @table @gcctabopt
- at include @value{top_srcdir}/../libiberty/at-file.texi
+ at include at-file.texi
 
 @kindex -a at var{keyword}
 @item -a at var{keyword}
@@ -1383,6 +1391,9 @@
 @ifset M68HC11
 @xref{M68HC11/68HC12,, at command{ld} and the 68HC11 and 68HC12}.
 @end ifset
+ at ifset POWERPC
+ at xref{PowerPC ELF32,, at command{ld} and PowerPC 32-bit ELF Support}.
+ at end ifset
 
 On some platforms, the @samp{--relax} option performs global
 optimizations that become possible when the linker resolves addressing
@@ -5111,6 +5122,12 @@
 @ifset M68HC11
 * M68HC11/68HC12::		@code{ld} and the Motorola 68HC11 and 68HC12 families
 @end ifset
+ at ifset POWERPC
+* PowerPC ELF32::		@command{ld} and PowerPC 32-bit ELF Support
+ at end ifset
+ at ifset POWERPC64
+* PowerPC64 ELF64::		@command{ld} and PowerPC64 64-bit ELF Support
+ at end ifset
 @ifset TICOFF
 * TI COFF::                     @command{ld} and TI COFF
 @end ifset
@@ -5502,6 +5519,183 @@
 @end ifclear
 @end ifset
 
+ at ifset POWERPC
+ at ifclear GENERIC
+ at raisesections
+ at end ifclear
+
+ at node PowerPC ELF32
+ at section @command{ld} and PowerPC 32-bit ELF Support
+ at cindex PowerPC long branches
+ at kindex --relax on PowerPC
+Branches on PowerPC processors are limited to a signed 26-bit
+displacement, which may result in @command{ld} giving
+ at samp{relocation truncated to fit} errors with very large programs.
+ at samp{--relax} enables the generation of trampolines that can access
+the entire 32-bit address space.  These trampolines are inserted at
+section boundaries, so may not themselves be reachable if an input
+section exceeds 33M in size.
+
+ at cindex PowerPC ELF32 options
+ at table @option
+ at cindex PowerPC PLT
+ at kindex --bss-plt
+ at item --bss-plt
+Current PowerPC GCC accepts a @samp{-msecure-plt} option that
+generates code capable of using a newer PLT and GOT layout that has
+the security advantage of no executable section ever needing to be
+writable and no writable section ever being executable.  PowerPC
+ at command{ld} will generate this layout, including stubs to access the
+PLT, if all input files (including startup and static libraries) were
+compiled with @samp{-msecure-plt}.  @samp{--bss-plt} forces the old
+BSS PLT (and GOT layout) which can give slightly better performance.
+
+ at cindex PowerPC GOT
+ at kindex --sdata-got
+ at item --sdata-got
+The new secure PLT and GOT are placed differently relative to other
+sections compared to older BSS PLT and GOT placement.  The location of
+ at code{.plt} must change because the new secure PLT is an initialized
+section while the old PLT is uninitialized.  The reason for the
+ at code{.got} change is more subtle:  The new placement allows
+ at code{.got} to be read-only in applications linked with
+ at samp{-z relro -z now}.  However, this placement means that
+ at code{.sdata} cannot always be used in shared libraries, because the
+PowerPC ABI accesses @code{.sdata} in shared libraries from the GOT
+pointer.  @samp{--sdata-got} forces the old GOT placement.  PowerPC
+GCC doesn't use @code{.sdata} in shared libraries, so this option is
+really only useful for other compilers that may do so.
+
+ at cindex PowerPC stub symbols
+ at kindex --emit-stub-syms
+ at item --emit-stub-syms
+This option causes @command{ld} to label linker stubs with a local
+symbol that encodes the stub type and destination.
+
+ at cindex PowerPC TLS optimization
+ at kindex --no-tls-optimize
+ at item --no-tls-optimize
+PowerPC @command{ld} normally performs some optimization of code
+sequences used to access Thread-Local Storage.  Use this option to
+disable the optimization.
+ at end table
+
+ at ifclear GENERIC
+ at lowersections
+ at end ifclear
+ at end ifset
+
+ at ifset POWERPC64
+ at ifclear GENERIC
+ at raisesections
+ at end ifclear
+
+ at node PowerPC64 ELF64
+ at section @command{ld} and PowerPC64 64-bit ELF Support
+
+ at cindex PowerPC64 ELF64 options
+ at table @option
+ at cindex PowerPC64 stub grouping
+ at kindex --stub-group-size
+ at item --stub-group-size
+Long branch stubs, PLT call stubs  and TOC adjusting stubs are placed
+by @command{ld} in stub sections located between groups of input sections.
+ at samp{--stub-group-size} specifies the maximum size of a group of input
+sections handled by one stub section.  Since branch offsets are signed,
+a stub section may serve two groups of input sections, one group before
+the stub section, and one group after it.  However, when using
+conditional branches that require stubs, it may be better (for branch
+prediction) that stub sections only serve one group of input sections.
+A negative value for @samp{N} chooses this scheme, ensuring that
+branches to stubs always use a negative offset.  Two special values of
+ at samp{N} are recognized, @samp{1} and @samp{-1}.  These both instruct
+ at command{ld} to automatically size input section groups for the branch types
+detected, with the same behaviour regarding stub placement as other
+positive or negative values of @samp{N} respectively.
+
+Note that @samp{--stub-group-size} does not split input sections.  A
+single input section larger than the group size specified will of course
+create a larger group (of one section).  If input sections are too
+large, it may not be possible for a branch to reach its stub.
+
+ at cindex PowerPC64 stub symbols
+ at kindex --emit-stub-syms
+ at item --emit-stub-syms
+This option causes @command{ld} to label linker stubs with a local
+symbol that encodes the stub type and destination.
+
+ at cindex PowerPC64 dot symbols
+ at kindex --dotsyms
+ at kindex --no-dotsyms
+ at item --dotsyms, --no-dotsyms
+These two options control how @command{ld} interprets version patterns
+in a version script.  Older PowerPC64 compilers emitted both a
+function descriptor symbol with the same name as the function, and a
+code entry symbol with the name prefixed by a dot (@samp{.}).  To
+properly version a function @samp{foo}, the version script thus needs
+to control both @samp{foo} and @samp{.foo}.  The option
+ at samp{--dotsyms}, on by default, automatically adds the required
+dot-prefixed patterns.  Use @samp{--no-dotsyms} to disable this
+feature.
+
+ at cindex PowerPC64 TLS optimization
+ at kindex --no-tls-optimize
+ at item --no-tls-optimize
+PowerPC64 @command{ld} normally performs some optimization of code
+sequences used to access Thread-Local Storage.  Use this option to
+disable the optimization.
+
+ at cindex PowerPC64 OPD optimization
+ at kindex --no-opd-optimize
+ at item --no-opd-optimize
+PowerPC64 @command{ld} normally removes @code{.opd} section entries
+corresponding to deleted link-once functions, or functions removed by
+the action of @samp{--gc-sections} or linker scrip @code{/DISCARD/}.
+Use this option to disable @code{.opd} optimization.
+
+ at cindex PowerPC64 OPD spacing
+ at kindex --non-overlapping-opd
+ at item --non-overlapping-opd
+Some PowerPC64 compilers have an option to generate compressed
+ at code{.opd} entries spaced 16 bytes apart, overlapping the third word,
+the static chain pointer (unused in C) with the first word of the next
+entry.  This option expands such entries to the full 24 bytes.
+
+ at cindex PowerPC64 TOC optimization
+ at kindex --no-toc-optimize
+ at item --no-toc-optimize
+PowerPC64 @command{ld} normally removes unused @code{.toc} section
+entries.  Such entries are detected by examining relocations that
+reference the TOC in code sections.  A reloc in a deleted code section
+marks a TOC word as unneeded, while a reloc in a kept code section
+marks a TOC word as needed.  Since the TOC may reference itself, TOC
+relocs are also examined.  TOC words marked as both needed and
+unneeded will of course be kept.  TOC words without any referencing
+reloc are assumed to be part of a multi-word entry, and are kept or
+discarded as per the nearest marked preceding word.  This works
+reliably for compiler generated code, but may be incorrect if assembly
+code is used to insert TOC entries.  Use this option to disable the
+optimization.
+
+ at cindex PowerPC64 multi-TOC
+ at kindex --no-multi-toc
+ at item --no-multi-toc
+By default, PowerPC64 GCC generates code for a TOC model where TOC
+entries are accessed with a 16-bit offset from r2.  This limits the
+total TOC size to 64K.  PowerPC64 @command{ld} extends this limit by
+grouping code sections such that each group uses less than 64K for its
+TOC entries, then inserts r2 adjusting stubs between inter-group
+calls.  @command{ld} does not split apart input sections, so cannot
+help if a single input file has a @code{.toc} section that exceeds
+64K, most likely from linking multiple files with @command{ld -r}.
+Use this option to turn off this feature.
+ at end table
+
+ at ifclear GENERIC
+ at lowersections
+ at end ifclear
+ at end ifset
+
 @ifset TICOFF
 @ifclear GENERIC
 @raisesections

Added: branches/binutils/package/ld/ldgram.c
===================================================================
--- branches/binutils/package/ld/ldgram.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ldgram.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4163 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     INT = 258,
+     NAME = 259,
+     LNAME = 260,
+     OREQ = 261,
+     ANDEQ = 262,
+     RSHIFTEQ = 263,
+     LSHIFTEQ = 264,
+     DIVEQ = 265,
+     MULTEQ = 266,
+     MINUSEQ = 267,
+     PLUSEQ = 268,
+     OROR = 269,
+     ANDAND = 270,
+     NE = 271,
+     EQ = 272,
+     GE = 273,
+     LE = 274,
+     RSHIFT = 275,
+     LSHIFT = 276,
+     UNARY = 277,
+     END = 278,
+     ALIGN_K = 279,
+     BLOCK = 280,
+     BIND = 281,
+     QUAD = 282,
+     SQUAD = 283,
+     LONG = 284,
+     SHORT = 285,
+     BYTE = 286,
+     SECTIONS = 287,
+     PHDRS = 288,
+     DATA_SEGMENT_ALIGN = 289,
+     DATA_SEGMENT_RELRO_END = 290,
+     DATA_SEGMENT_END = 291,
+     SORT_BY_NAME = 292,
+     SORT_BY_ALIGNMENT = 293,
+     SIZEOF_HEADERS = 294,
+     OUTPUT_FORMAT = 295,
+     FORCE_COMMON_ALLOCATION = 296,
+     OUTPUT_ARCH = 297,
+     INHIBIT_COMMON_ALLOCATION = 298,
+     SEGMENT_START = 299,
+     INCLUDE = 300,
+     MEMORY = 301,
+     DEFSYMEND = 302,
+     NOLOAD = 303,
+     DSECT = 304,
+     COPY = 305,
+     INFO = 306,
+     OVERLAY = 307,
+     DEFINED = 308,
+     TARGET_K = 309,
+     SEARCH_DIR = 310,
+     MAP = 311,
+     ENTRY = 312,
+     NEXT = 313,
+     SIZEOF = 314,
+     ADDR = 315,
+     LOADADDR = 316,
+     MAX_K = 317,
+     MIN_K = 318,
+     STARTUP = 319,
+     HLL = 320,
+     SYSLIB = 321,
+     FLOAT = 322,
+     NOFLOAT = 323,
+     NOCROSSREFS = 324,
+     ORIGIN = 325,
+     FILL = 326,
+     LENGTH = 327,
+     CREATE_OBJECT_SYMBOLS = 328,
+     INPUT = 329,
+     GROUP = 330,
+     OUTPUT = 331,
+     CONSTRUCTORS = 332,
+     ALIGNMOD = 333,
+     AT = 334,
+     SUBALIGN = 335,
+     PROVIDE = 336,
+     PROVIDE_HIDDEN = 337,
+     AS_NEEDED = 338,
+     CHIP = 339,
+     LIST = 340,
+     SECT = 341,
+     ABSOLUTE = 342,
+     LOAD = 343,
+     NEWLINE = 344,
+     ENDWORD = 345,
+     ORDER = 346,
+     NAMEWORD = 347,
+     ASSERT_K = 348,
+     FORMAT = 349,
+     PUBLIC = 350,
+     BASE = 351,
+     ALIAS = 352,
+     TRUNCATE = 353,
+     REL = 354,
+     INPUT_SCRIPT = 355,
+     INPUT_MRI_SCRIPT = 356,
+     INPUT_DEFSYM = 357,
+     CASE = 358,
+     EXTERN = 359,
+     START = 360,
+     VERS_TAG = 361,
+     VERS_IDENTIFIER = 362,
+     GLOBAL = 363,
+     LOCAL = 364,
+     VERSIONK = 365,
+     INPUT_VERSION_SCRIPT = 366,
+     KEEP = 367,
+     ONLY_IF_RO = 368,
+     ONLY_IF_RW = 369,
+     SPECIAL = 370,
+     EXCLUDE_FILE = 371
+   };
+#endif
+/* Tokens.  */
+#define INT 258
+#define NAME 259
+#define LNAME 260
+#define OREQ 261
+#define ANDEQ 262
+#define RSHIFTEQ 263
+#define LSHIFTEQ 264
+#define DIVEQ 265
+#define MULTEQ 266
+#define MINUSEQ 267
+#define PLUSEQ 268
+#define OROR 269
+#define ANDAND 270
+#define NE 271
+#define EQ 272
+#define GE 273
+#define LE 274
+#define RSHIFT 275
+#define LSHIFT 276
+#define UNARY 277
+#define END 278
+#define ALIGN_K 279
+#define BLOCK 280
+#define BIND 281
+#define QUAD 282
+#define SQUAD 283
+#define LONG 284
+#define SHORT 285
+#define BYTE 286
+#define SECTIONS 287
+#define PHDRS 288
+#define DATA_SEGMENT_ALIGN 289
+#define DATA_SEGMENT_RELRO_END 290
+#define DATA_SEGMENT_END 291
+#define SORT_BY_NAME 292
+#define SORT_BY_ALIGNMENT 293
+#define SIZEOF_HEADERS 294
+#define OUTPUT_FORMAT 295
+#define FORCE_COMMON_ALLOCATION 296
+#define OUTPUT_ARCH 297
+#define INHIBIT_COMMON_ALLOCATION 298
+#define SEGMENT_START 299
+#define INCLUDE 300
+#define MEMORY 301
+#define DEFSYMEND 302
+#define NOLOAD 303
+#define DSECT 304
+#define COPY 305
+#define INFO 306
+#define OVERLAY 307
+#define DEFINED 308
+#define TARGET_K 309
+#define SEARCH_DIR 310
+#define MAP 311
+#define ENTRY 312
+#define NEXT 313
+#define SIZEOF 314
+#define ADDR 315
+#define LOADADDR 316
+#define MAX_K 317
+#define MIN_K 318
+#define STARTUP 319
+#define HLL 320
+#define SYSLIB 321
+#define FLOAT 322
+#define NOFLOAT 323
+#define NOCROSSREFS 324
+#define ORIGIN 325
+#define FILL 326
+#define LENGTH 327
+#define CREATE_OBJECT_SYMBOLS 328
+#define INPUT 329
+#define GROUP 330
+#define OUTPUT 331
+#define CONSTRUCTORS 332
+#define ALIGNMOD 333
+#define AT 334
+#define SUBALIGN 335
+#define PROVIDE 336
+#define PROVIDE_HIDDEN 337
+#define AS_NEEDED 338
+#define CHIP 339
+#define LIST 340
+#define SECT 341
+#define ABSOLUTE 342
+#define LOAD 343
+#define NEWLINE 344
+#define ENDWORD 345
+#define ORDER 346
+#define NAMEWORD 347
+#define ASSERT_K 348
+#define FORMAT 349
+#define PUBLIC 350
+#define BASE 351
+#define ALIAS 352
+#define TRUNCATE 353
+#define REL 354
+#define INPUT_SCRIPT 355
+#define INPUT_MRI_SCRIPT 356
+#define INPUT_DEFSYM 357
+#define CASE 358
+#define EXTERN 359
+#define START 360
+#define VERS_TAG 361
+#define VERS_IDENTIFIER 362
+#define GLOBAL 363
+#define LOCAL 364
+#define VERSIONK 365
+#define INPUT_VERSION_SCRIPT 366
+#define KEEP 367
+#define ONLY_IF_RO 368
+#define ONLY_IF_RW 369
+#define SPECIAL 370
+#define EXCLUDE_FILE 371
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 22 "ldgram.y"
+
+/*
+
+ */
+
+#define DONTDECLARE_MALLOC
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "bfdlink.h"
+#include "ld.h"
+#include "ldexp.h"
+#include "ldver.h"
+#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
+#include "ldmisc.h"
+#include "ldmain.h"
+#include "mri.h"
+#include "ldctor.h"
+#include "ldlex.h"
+
+#ifndef YYDEBUG
+#define YYDEBUG 1
+#endif
+
+static enum section_type sectype;
+static lang_memory_region_type *region;
+
+FILE *saved_script_handle = NULL;
+bfd_boolean force_make_executable = FALSE;
+
+bfd_boolean ldgram_in_script = FALSE;
+bfd_boolean ldgram_had_equals = FALSE;
+bfd_boolean ldgram_had_keep = FALSE;
+char *ldgram_vers_current_lang = NULL;
+
+#define ERROR_NAME_MAX 20
+static char *error_names[ERROR_NAME_MAX];
+static int error_index;
+#define PUSH_ERROR(x) if (error_index < ERROR_NAME_MAX) error_names[error_index] = x; error_index++;
+#define POP_ERROR()   error_index--;
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 65 "ldgram.y"
+typedef union YYSTYPE {
+  bfd_vma integer;
+  struct big_int
+    {
+      bfd_vma integer;
+      char *str;
+    } bigint;
+  fill_type *fill;
+  char *name;
+  const char *cname;
+  struct wildcard_spec wildcard;
+  struct wildcard_list *wildcard_list;
+  struct name_list *name_list;
+  int token;
+  union etree_union *etree;
+  struct phdr_info
+    {
+      bfd_boolean filehdr;
+      bfd_boolean phdrs;
+      union etree_union *at;
+      union etree_union *flags;
+    } phdr;
+  struct lang_nocrossref *nocrossref;
+  struct lang_output_section_phdr_list *section_phdr;
+  struct bfd_elf_version_deps *deflist;
+  struct bfd_elf_version_expr *versyms;
+  struct bfd_elf_version_tree *versnode;
+} YYSTYPE;
+/* Line 196 of yacc.c.  */
+#line 390 "ldgram.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 402 "ldgram.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+	&& (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  14
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   1716
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  140
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  114
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  333
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  707
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   371
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   138,     2,     2,     2,    34,    21,     2,
+      37,   135,    32,    30,   133,    31,     2,    33,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    16,   134,
+      24,     6,    25,    15,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   136,     2,   137,    20,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,    53,    19,    54,   139,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     7,     8,     9,    10,    11,    12,    13,    14,    17,
+      18,    22,    23,    26,    27,    28,    29,    35,    36,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     6,     9,    12,    15,    17,    18,    23,
+      24,    27,    31,    32,    35,    40,    42,    44,    47,    49,
+      54,    59,    63,    66,    71,    75,    80,    85,    90,    95,
+     100,   103,   106,   109,   114,   119,   122,   125,   128,   131,
+     132,   138,   141,   142,   146,   149,   150,   152,   156,   158,
+     162,   163,   165,   169,   171,   174,   178,   179,   182,   185,
+     186,   188,   190,   192,   194,   196,   198,   200,   202,   204,
+     206,   211,   216,   221,   226,   235,   240,   242,   244,   249,
+     250,   256,   261,   262,   268,   273,   278,   280,   284,   287,
+     289,   293,   296,   297,   303,   304,   312,   313,   320,   325,
+     328,   331,   332,   337,   340,   341,   349,   351,   353,   355,
+     357,   363,   368,   373,   381,   389,   397,   405,   414,   417,
+     419,   423,   425,   427,   431,   436,   438,   439,   445,   448,
+     450,   452,   454,   459,   461,   466,   471,   474,   476,   477,
+     479,   481,   483,   485,   487,   489,   491,   494,   495,   497,
+     499,   501,   503,   505,   507,   509,   511,   513,   515,   519,
+     523,   530,   537,   539,   540,   546,   549,   553,   554,   555,
+     563,   567,   571,   572,   576,   578,   581,   583,   586,   591,
+     596,   600,   604,   606,   611,   615,   616,   618,   620,   621,
+     624,   628,   629,   632,   635,   639,   644,   647,   650,   653,
+     657,   661,   665,   669,   673,   677,   681,   685,   689,   693,
+     697,   701,   705,   709,   713,   717,   723,   727,   731,   736,
+     738,   740,   745,   750,   755,   760,   765,   772,   779,   786,
+     791,   798,   803,   805,   812,   819,   826,   831,   836,   840,
+     841,   846,   847,   852,   853,   858,   859,   861,   863,   865,
+     866,   867,   868,   869,   870,   871,   891,   892,   893,   894,
+     895,   896,   915,   916,   917,   925,   927,   929,   931,   933,
+     935,   939,   940,   943,   947,   950,   957,   968,   971,   973,
+     974,   976,   979,   980,   981,   985,   986,   987,   988,   989,
+    1001,  1006,  1007,  1010,  1011,  1012,  1019,  1021,  1022,  1026,
+    1032,  1033,  1037,  1038,  1041,  1042,  1048,  1050,  1053,  1058,
+    1064,  1071,  1073,  1076,  1077,  1080,  1085,  1090,  1099,  1101,
+    1103,  1107,  1111,  1112,  1122,  1123,  1131,  1133,  1137,  1139,
+    1143,  1145,  1149,  1150
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+     141,     0,    -1,   116,   155,    -1,   117,   145,    -1,   127,
+     242,    -1,   118,   143,    -1,     4,    -1,    -1,   144,     4,
+       6,   204,    -1,    -1,   146,   147,    -1,   147,   148,   105,
+      -1,    -1,   100,   204,    -1,   100,   204,   133,   204,    -1,
+       4,    -1,   101,    -1,   107,   150,    -1,   106,    -1,   111,
+       4,     6,   204,    -1,   111,     4,   133,   204,    -1,   111,
+       4,   204,    -1,   110,     4,    -1,   102,     4,   133,   204,
+      -1,   102,     4,   204,    -1,   102,     4,     6,   204,    -1,
+      38,     4,     6,   204,    -1,    38,     4,   133,   204,    -1,
+      94,     4,     6,   204,    -1,    94,     4,   133,   204,    -1,
+     103,   152,    -1,   104,   151,    -1,   108,     4,    -1,   113,
+       4,   133,     4,    -1,   113,     4,   133,     3,    -1,   112,
+     204,    -1,   114,     3,    -1,   119,   153,    -1,   120,   154,
+      -1,    -1,    61,   142,   149,   147,    36,    -1,   121,     4,
+      -1,    -1,   150,   133,     4,    -1,   150,     4,    -1,    -1,
+       4,    -1,   151,   133,     4,    -1,     4,    -1,   152,   133,
+       4,    -1,    -1,     4,    -1,   153,   133,     4,    -1,     4,
+      -1,   154,     4,    -1,   154,   133,     4,    -1,    -1,   156,
+     157,    -1,   157,   158,    -1,    -1,   186,    -1,   165,    -1,
+     234,    -1,   195,    -1,   196,    -1,   198,    -1,   200,    -1,
+     167,    -1,   244,    -1,   134,    -1,    70,    37,     4,   135,
+      -1,    71,    37,   142,   135,    -1,    92,    37,   142,   135,
+      -1,    56,    37,     4,   135,    -1,    56,    37,     4,   133,
+       4,   133,     4,   135,    -1,    58,    37,     4,   135,    -1,
+      57,    -1,    59,    -1,    90,    37,   161,   135,    -1,    -1,
+      91,   159,    37,   161,   135,    -1,    72,    37,   142,   135,
+      -1,    -1,    61,   142,   160,   157,    36,    -1,    85,    37,
+     201,   135,    -1,   120,    37,   154,   135,    -1,     4,    -1,
+     161,   133,     4,    -1,   161,     4,    -1,     5,    -1,   161,
+     133,     5,    -1,   161,     5,    -1,    -1,    99,    37,   162,
+     161,   135,    -1,    -1,   161,   133,    99,    37,   163,   161,
+     135,    -1,    -1,   161,    99,    37,   164,   161,   135,    -1,
+      46,    53,   166,    54,    -1,   166,   210,    -1,   166,   167,
+      -1,    -1,    73,    37,     4,   135,    -1,   184,   183,    -1,
+      -1,   109,   168,    37,   204,   133,     4,   135,    -1,     4,
+      -1,    32,    -1,    15,    -1,   169,    -1,   132,    37,   171,
+     135,   169,    -1,    51,    37,   169,   135,    -1,    52,    37,
+     169,   135,    -1,    51,    37,    52,    37,   169,   135,   135,
+      -1,    51,    37,    51,    37,   169,   135,   135,    -1,    52,
+      37,    51,    37,   169,   135,   135,    -1,    52,    37,    52,
+      37,   169,   135,   135,    -1,    51,    37,   132,    37,   171,
+     135,   169,   135,    -1,   171,   169,    -1,   169,    -1,   172,
+     185,   170,    -1,   170,    -1,     4,    -1,   136,   172,   137,
+      -1,   170,    37,   172,   135,    -1,   173,    -1,    -1,   128,
+      37,   175,   173,   135,    -1,   184,   183,    -1,    89,    -1,
+     134,    -1,    93,    -1,    51,    37,    93,   135,    -1,   174,
+      -1,   179,    37,   202,   135,    -1,    87,    37,   180,   135,
+      -1,   177,   176,    -1,   176,    -1,    -1,   177,    -1,    41,
+      -1,    42,    -1,    43,    -1,    44,    -1,    45,    -1,   202,
+      -1,     6,   180,    -1,    -1,    14,    -1,    13,    -1,    12,
+      -1,    11,    -1,    10,    -1,     9,    -1,     8,    -1,     7,
+      -1,   134,    -1,   133,    -1,     4,     6,   202,    -1,     4,
+     182,   202,    -1,    97,    37,     4,     6,   202,   135,    -1,
+      98,    37,     4,     6,   202,   135,    -1,   133,    -1,    -1,
+      62,    53,   188,   187,    54,    -1,   187,   188,    -1,   187,
+     133,   188,    -1,    -1,    -1,     4,   189,   192,    16,   190,
+     185,   191,    -1,    86,     6,   202,    -1,    88,     6,   202,
+      -1,    -1,    37,   193,   135,    -1,   194,    -1,   193,   194,
+      -1,     4,    -1,   138,     4,    -1,    80,    37,   142,   135,
+      -1,    81,    37,   197,   135,    -1,    81,    37,   135,    -1,
+     197,   185,   142,    -1,   142,    -1,    82,    37,   199,   135,
+      -1,   199,   185,   142,    -1,    -1,    83,    -1,    84,    -1,
+      -1,     4,   201,    -1,     4,   133,   201,    -1,    -1,   203,
+     204,    -1,    31,   204,    -1,    37,   204,   135,    -1,    74,
+      37,   204,   135,    -1,   138,   204,    -1,    30,   204,    -1,
+     139,   204,    -1,   204,    32,   204,    -1,   204,    33,   204,
+      -1,   204,    34,   204,    -1,   204,    30,   204,    -1,   204,
+      31,   204,    -1,   204,    29,   204,    -1,   204,    28,   204,
+      -1,   204,    23,   204,    -1,   204,    22,   204,    -1,   204,
+      27,   204,    -1,   204,    26,   204,    -1,   204,    24,   204,
+      -1,   204,    25,   204,    -1,   204,    21,   204,    -1,   204,
+      20,   204,    -1,   204,    19,   204,    -1,   204,    15,   204,
+      16,   204,    -1,   204,    18,   204,    -1,   204,    17,   204,
+      -1,    69,    37,     4,   135,    -1,     3,    -1,    55,    -1,
+      75,    37,     4,   135,    -1,    76,    37,     4,   135,    -1,
+      77,    37,     4,   135,    -1,   103,    37,   204,   135,    -1,
+      38,    37,   204,   135,    -1,    38,    37,   204,   133,   204,
+     135,    -1,    48,    37,   204,   133,   204,   135,    -1,    49,
+      37,   204,   133,   204,   135,    -1,    50,    37,   204,   135,
+      -1,    60,    37,     4,   133,   204,   135,    -1,    39,    37,
+     204,   135,    -1,     4,    -1,    78,    37,   204,   133,   204,
+     135,    -1,    79,    37,   204,   133,   204,   135,    -1,   109,
+      37,   204,   133,     4,   135,    -1,    86,    37,     4,   135,
+      -1,    88,    37,     4,   135,    -1,    95,    25,     4,    -1,
+      -1,    95,    37,   204,   135,    -1,    -1,    38,    37,   204,
+     135,    -1,    -1,    96,    37,   204,   135,    -1,    -1,   129,
+      -1,   130,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     4,   211,   225,   206,   207,   208,   212,   209,    53,
+     213,   178,    54,   214,   228,   205,   229,   181,   215,   185,
+      -1,    -1,    -1,    -1,    -1,    -1,    68,   216,   226,   227,
+     206,   208,   217,    53,   218,   230,    54,   219,   228,   205,
+     229,   181,   220,   185,    -1,    -1,    -1,    91,   221,   225,
+     222,    53,   166,    54,    -1,    64,    -1,    65,    -1,    66,
+      -1,    67,    -1,    68,    -1,    37,   223,   135,    -1,    -1,
+      37,   135,    -1,   204,   224,    16,    -1,   224,    16,    -1,
+      40,    37,   204,   135,   224,    16,    -1,    40,    37,   204,
+     135,    39,    37,   204,   135,   224,    16,    -1,   204,    16,
+      -1,    16,    -1,    -1,    85,    -1,    25,     4,    -1,    -1,
+      -1,   229,    16,     4,    -1,    -1,    -1,    -1,    -1,   230,
+       4,   231,    53,   178,    54,   232,   229,   181,   233,   185,
+      -1,    47,    53,   235,    54,    -1,    -1,   235,   236,    -1,
+      -1,    -1,     4,   237,   239,   240,   238,   134,    -1,   204,
+      -1,    -1,     4,   241,   240,    -1,    95,    37,   204,   135,
+     240,    -1,    -1,    37,   204,   135,    -1,    -1,   243,   246,
+      -1,    -1,   245,   126,    53,   246,    54,    -1,   247,    -1,
+     246,   247,    -1,    53,   249,    54,   134,    -1,   122,    53,
+     249,    54,   134,    -1,   122,    53,   249,    54,   248,   134,
+      -1,   122,    -1,   248,   122,    -1,    -1,   250,   134,    -1,
+     124,    16,   250,   134,    -1,   125,    16,   250,   134,    -1,
+     124,    16,   250,   134,   125,    16,   250,   134,    -1,   123,
+      -1,     4,    -1,   250,   134,   123,    -1,   250,   134,     4,
+      -1,    -1,   250,   134,   120,     4,    53,   251,   250,   253,
+      54,    -1,    -1,   120,     4,    53,   252,   250,   253,    54,
+      -1,   124,    -1,   250,   134,   124,    -1,   125,    -1,   250,
+     134,   125,    -1,   120,    -1,   250,   134,   120,    -1,    -1,
+     134,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   162,   162,   163,   164,   165,   169,   173,   173,   183,
+     183,   196,   197,   201,   202,   203,   206,   209,   210,   211,
+     213,   215,   217,   219,   221,   223,   225,   227,   229,   231,
+     233,   234,   235,   237,   239,   241,   243,   245,   246,   248,
+     247,   251,   253,   257,   258,   259,   263,   265,   269,   271,
+     276,   277,   278,   282,   284,   286,   291,   291,   302,   303,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   321,   323,   325,   328,   330,   332,   334,   336,   338,
+     337,   341,   344,   343,   347,   351,   355,   358,   361,   364,
+     367,   370,   374,   373,   378,   377,   382,   381,   388,   392,
+     393,   394,   398,   400,   401,   401,   409,   413,   417,   424,
+     430,   436,   442,   448,   454,   460,   466,   472,   481,   490,
+     501,   510,   521,   529,   533,   540,   542,   541,   548,   549,
+     553,   554,   559,   564,   565,   570,   577,   578,   581,   583,
+     587,   589,   591,   593,   595,   600,   607,   609,   613,   615,
+     617,   619,   621,   623,   625,   627,   632,   632,   637,   641,
+     649,   653,   661,   661,   665,   669,   670,   671,   676,   675,
+     683,   691,   699,   700,   704,   705,   709,   711,   716,   721,
+     722,   727,   729,   735,   737,   739,   743,   745,   751,   754,
+     763,   774,   774,   780,   782,   784,   786,   788,   790,   793,
+     795,   797,   799,   801,   803,   805,   807,   809,   811,   813,
+     815,   817,   819,   821,   823,   825,   827,   829,   831,   833,
+     835,   838,   840,   842,   844,   846,   848,   850,   852,   854,
+     856,   865,   867,   869,   871,   873,   875,   877,   883,   884,
+     888,   889,   893,   894,   898,   899,   903,   904,   905,   906,
+     909,   913,   916,   922,   924,   909,   931,   933,   935,   940,
+     942,   930,   952,   954,   952,   962,   963,   964,   965,   966,
+     970,   971,   972,   976,   977,   982,   983,   988,   989,   994,
+     995,  1000,  1002,  1007,  1010,  1023,  1027,  1032,  1034,  1025,
+    1042,  1045,  1047,  1051,  1052,  1051,  1061,  1106,  1109,  1121,
+    1130,  1133,  1142,  1142,  1156,  1156,  1166,  1167,  1171,  1175,
+    1179,  1186,  1190,  1198,  1201,  1205,  1209,  1213,  1220,  1224,
+    1228,  1232,  1237,  1236,  1250,  1249,  1259,  1263,  1267,  1271,
+    1275,  1279,  1285,  1287
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "INT", "NAME", "LNAME", "'='", "OREQ",
+  "ANDEQ", "RSHIFTEQ", "LSHIFTEQ", "DIVEQ", "MULTEQ", "MINUSEQ", "PLUSEQ",
+  "'?'", "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "NE", "EQ", "'<'",
+  "'>'", "GE", "LE", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'",
+  "UNARY", "END", "'('", "ALIGN_K", "BLOCK", "BIND", "QUAD", "SQUAD",
+  "LONG", "SHORT", "BYTE", "SECTIONS", "PHDRS", "DATA_SEGMENT_ALIGN",
+  "DATA_SEGMENT_RELRO_END", "DATA_SEGMENT_END", "SORT_BY_NAME",
+  "SORT_BY_ALIGNMENT", "'{'", "'}'", "SIZEOF_HEADERS", "OUTPUT_FORMAT",
+  "FORCE_COMMON_ALLOCATION", "OUTPUT_ARCH", "INHIBIT_COMMON_ALLOCATION",
+  "SEGMENT_START", "INCLUDE", "MEMORY", "DEFSYMEND", "NOLOAD", "DSECT",
+  "COPY", "INFO", "OVERLAY", "DEFINED", "TARGET_K", "SEARCH_DIR", "MAP",
+  "ENTRY", "NEXT", "SIZEOF", "ADDR", "LOADADDR", "MAX_K", "MIN_K",
+  "STARTUP", "HLL", "SYSLIB", "FLOAT", "NOFLOAT", "NOCROSSREFS", "ORIGIN",
+  "FILL", "LENGTH", "CREATE_OBJECT_SYMBOLS", "INPUT", "GROUP", "OUTPUT",
+  "CONSTRUCTORS", "ALIGNMOD", "AT", "SUBALIGN", "PROVIDE",
+  "PROVIDE_HIDDEN", "AS_NEEDED", "CHIP", "LIST", "SECT", "ABSOLUTE",
+  "LOAD", "NEWLINE", "ENDWORD", "ORDER", "NAMEWORD", "ASSERT_K", "FORMAT",
+  "PUBLIC", "BASE", "ALIAS", "TRUNCATE", "REL", "INPUT_SCRIPT",
+  "INPUT_MRI_SCRIPT", "INPUT_DEFSYM", "CASE", "EXTERN", "START",
+  "VERS_TAG", "VERS_IDENTIFIER", "GLOBAL", "LOCAL", "VERSIONK",
+  "INPUT_VERSION_SCRIPT", "KEEP", "ONLY_IF_RO", "ONLY_IF_RW", "SPECIAL",
+  "EXCLUDE_FILE", "','", "';'", "')'", "'['", "']'", "'!'", "'~'",
+  "$accept", "file", "filename", "defsym_expr", "@1", "mri_script_file",
+  "@2", "mri_script_lines", "mri_script_command", "@3", "ordernamelist",
+  "mri_load_name_list", "mri_abs_name_list", "casesymlist",
+  "extern_name_list", "script_file", "@4", "ifile_list", "ifile_p1", "@5",
+  "@6", "input_list", "@7", "@8", "@9", "sections", "sec_or_group_p1",
+  "statement_anywhere", "@10", "wildcard_name", "wildcard_spec",
+  "exclude_name_list", "file_NAME_list", "input_section_spec_no_keep",
+  "input_section_spec", "@11", "statement", "statement_list",
+  "statement_list_opt", "length", "fill_exp", "fill_opt", "assign_op",
+  "end", "assignment", "opt_comma", "memory", "memory_spec_list",
+  "memory_spec", "@12", "origin_spec", "length_spec", "attributes_opt",
+  "attributes_list", "attributes_string", "startup", "high_level_library",
+  "high_level_library_NAME_list", "low_level_library",
+  "low_level_library_NAME_list", "floating_point_support",
+  "nocrossref_list", "mustbe_exp", "@13", "exp", "memspec_at_opt",
+  "opt_at", "opt_align", "opt_subalign", "sect_constraint", "section",
+  "@14", "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23",
+  "@24", "@25", "type", "atype", "opt_exp_with_type",
+  "opt_exp_without_type", "opt_nocrossrefs", "memspec_opt", "phdr_opt",
+  "overlay_section", "@26", "@27", "@28", "phdrs", "phdr_list", "phdr",
+  "@29", "@30", "phdr_type", "phdr_qualifiers", "phdr_val",
+  "version_script_file", "@31", "version", "@32", "vers_nodes",
+  "vers_node", "verdep", "vers_tag", "vers_defns", "@33", "@34",
+  "opt_semicolon", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,    61,   261,   262,   263,
+     264,   265,   266,   267,   268,    63,    58,   269,   270,   124,
+      94,    38,   271,   272,    60,    62,   273,   274,   275,   276,
+      43,    45,    42,    47,    37,   277,   278,    40,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   123,   125,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
+     369,   370,   371,    44,    59,    41,    91,    93,    33,   126
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,   140,   141,   141,   141,   141,   142,   144,   143,   146,
+     145,   147,   147,   148,   148,   148,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   148,   148,   148,   148,   149,
+     148,   148,   148,   150,   150,   150,   151,   151,   152,   152,
+     153,   153,   153,   154,   154,   154,   156,   155,   157,   157,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   159,
+     158,   158,   160,   158,   158,   158,   161,   161,   161,   161,
+     161,   161,   162,   161,   163,   161,   164,   161,   165,   166,
+     166,   166,   167,   167,   168,   167,   169,   169,   169,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   171,   171,
+     172,   172,   173,   173,   173,   174,   175,   174,   176,   176,
+     176,   176,   176,   176,   176,   176,   177,   177,   178,   178,
+     179,   179,   179,   179,   179,   180,   181,   181,   182,   182,
+     182,   182,   182,   182,   182,   182,   183,   183,   184,   184,
+     184,   184,   185,   185,   186,   187,   187,   187,   189,   188,
+     190,   191,   192,   192,   193,   193,   194,   194,   195,   196,
+     196,   197,   197,   198,   199,   199,   200,   200,   201,   201,
+     201,   203,   202,   204,   204,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   204,   204,   205,   205,
+     206,   206,   207,   207,   208,   208,   209,   209,   209,   209,
+     211,   212,   213,   214,   215,   210,   216,   217,   218,   219,
+     220,   210,   221,   222,   210,   223,   223,   223,   223,   223,
+     224,   224,   224,   225,   225,   225,   225,   226,   226,   227,
+     227,   228,   228,   229,   229,   230,   231,   232,   233,   230,
+     234,   235,   235,   237,   238,   236,   239,   240,   240,   240,
+     241,   241,   243,   242,   245,   244,   246,   246,   247,   247,
+     247,   248,   248,   249,   249,   249,   249,   249,   250,   250,
+     250,   250,   251,   250,   252,   250,   250,   250,   250,   250,
+     250,   250,   253,   253
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     2,     2,     2,     2,     1,     0,     4,     0,
+       2,     3,     0,     2,     4,     1,     1,     2,     1,     4,
+       4,     3,     2,     4,     3,     4,     4,     4,     4,     4,
+       2,     2,     2,     4,     4,     2,     2,     2,     2,     0,
+       5,     2,     0,     3,     2,     0,     1,     3,     1,     3,
+       0,     1,     3,     1,     2,     3,     0,     2,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       4,     4,     4,     4,     8,     4,     1,     1,     4,     0,
+       5,     4,     0,     5,     4,     4,     1,     3,     2,     1,
+       3,     2,     0,     5,     0,     7,     0,     6,     4,     2,
+       2,     0,     4,     2,     0,     7,     1,     1,     1,     1,
+       5,     4,     4,     7,     7,     7,     7,     8,     2,     1,
+       3,     1,     1,     3,     4,     1,     0,     5,     2,     1,
+       1,     1,     4,     1,     4,     4,     2,     1,     0,     1,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
+       6,     6,     1,     0,     5,     2,     3,     0,     0,     7,
+       3,     3,     0,     3,     1,     2,     1,     2,     4,     4,
+       3,     3,     1,     4,     3,     0,     1,     1,     0,     2,
+       3,     0,     2,     2,     3,     4,     2,     2,     2,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     5,     3,     3,     4,     1,
+       1,     4,     4,     4,     4,     4,     6,     6,     6,     4,
+       6,     4,     1,     6,     6,     6,     4,     4,     3,     0,
+       4,     0,     4,     0,     4,     0,     1,     1,     1,     0,
+       0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
+       0,    18,     0,     0,     7,     1,     1,     1,     1,     1,
+       3,     0,     2,     3,     2,     6,    10,     2,     1,     0,
+       1,     2,     0,     0,     3,     0,     0,     0,     0,    11,
+       4,     0,     2,     0,     0,     6,     1,     0,     3,     5,
+       0,     3,     0,     2,     0,     5,     1,     2,     4,     5,
+       6,     1,     2,     0,     2,     4,     4,     8,     1,     1,
+       3,     3,     0,     9,     0,     7,     1,     3,     1,     3,
+       1,     3,     0,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned short int yydefact[] =
+{
+       0,    56,     9,     7,   302,     0,     2,    59,     3,    12,
+       5,     0,     4,     0,     1,    57,    10,     0,   313,     0,
+     303,   306,     0,     0,     0,     0,    76,     0,    77,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   186,   187,
+       0,     0,    79,     0,     0,     0,   104,     0,    69,    58,
+      61,    67,     0,    60,    63,    64,    65,    66,    62,    68,
+       0,    15,     0,     0,     0,     0,    16,     0,     0,     0,
+      18,    45,     0,     0,     0,     0,     0,     0,    50,     0,
+       0,     0,     0,   319,   330,   318,   326,   328,     0,     0,
+     313,   307,   191,   155,   154,   153,   152,   151,   150,   149,
+     148,   191,   101,   291,     0,     0,     6,    82,     0,     0,
+       0,     0,     0,     0,     0,   185,   188,     0,     0,     0,
+       0,     0,     0,     0,   157,   156,   103,     0,     0,    39,
+       0,   219,   232,     0,     0,     0,     0,     0,     0,     0,
+       0,   220,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    13,     0,    48,    30,
+      46,    31,    17,    32,    22,     0,    35,     0,    36,    51,
+      37,    53,    38,    41,    11,     8,     0,     0,     0,     0,
+     314,     0,   158,     0,   159,     0,     0,     0,     0,    59,
+     168,   167,     0,     0,     0,     0,     0,   180,   182,   163,
+     163,   188,     0,    86,    89,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    12,     0,     0,   197,
+     193,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
+     198,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    24,     0,     0,    44,     0,     0,     0,
+      21,     0,     0,    54,     0,   324,   326,   328,     0,     0,
+     308,   321,   331,   320,   327,   329,     0,   192,   250,    98,
+     256,   262,   100,    99,   293,   290,   292,     0,    73,    75,
+     304,   172,     0,    70,    71,    81,   102,   178,   162,   179,
+       0,   183,     0,   188,   189,    84,    92,    88,    91,     0,
+       0,    78,     0,    72,   191,   191,     0,    85,     0,    26,
+      27,    42,    28,    29,   194,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   217,   216,   214,   213,   212,   207,   206,
+     210,   211,   209,   208,   205,   204,   202,   203,   199,   200,
+     201,    14,    25,    23,    49,    47,    43,    19,    20,    34,
+      33,    52,    55,     0,   315,   316,     0,   311,   309,     0,
+     271,     0,   271,     0,     0,    83,     0,     0,   164,     0,
+     165,   181,   184,   190,     0,    96,    87,    90,     0,    80,
+       0,     0,     0,   305,    40,     0,   225,   231,     0,     0,
+     229,     0,   218,   195,   221,   222,   223,     0,     0,   236,
+     237,   224,     0,     0,   332,   329,   322,   312,   310,     0,
+       0,   271,     0,   241,   278,     0,   279,   263,   296,   297,
+       0,   176,     0,     0,   174,     0,   166,     0,     0,    94,
+     160,   161,     0,     0,     0,     0,     0,     0,     0,     0,
+     215,   333,     0,     0,     0,   265,   266,   267,   268,   269,
+     272,     0,     0,     0,     0,   274,     0,   243,   277,   280,
+     241,     0,   300,     0,   294,     0,   177,   173,   175,     0,
+     163,    93,     0,     0,   105,   226,   227,   228,   230,   233,
+     234,   235,   325,     0,   332,   270,     0,   273,     0,     0,
+     245,   245,   101,     0,   297,     0,     0,    74,   191,     0,
+      97,     0,   317,     0,   271,     0,     0,     0,   251,   257,
+       0,     0,   298,     0,   295,   170,     0,   169,    95,   323,
+       0,     0,   240,     0,     0,   249,     0,   264,   301,   297,
+     191,     0,   275,   242,     0,   246,   247,   248,     0,   258,
+     299,   171,     0,   244,   252,   285,   271,   138,     0,     0,
+     122,   108,   107,   140,   141,   142,   143,   144,     0,     0,
+       0,   129,   131,     0,     0,   130,     0,   109,     0,   125,
+     133,   137,   139,     0,     0,     0,   286,   259,   276,     0,
+       0,   191,   126,     0,   106,     0,   121,   163,     0,   136,
+     253,   191,   128,     0,   282,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   145,     0,   119,     0,     0,   123,
+       0,   163,   282,     0,   138,     0,   239,     0,     0,   132,
+       0,   111,     0,     0,   112,   135,   106,     0,     0,   118,
+     120,   124,   239,   134,     0,   281,     0,   283,     0,     0,
+       0,     0,     0,   127,   110,   283,   287,     0,   147,     0,
+       0,     0,     0,     0,   147,   283,   238,   191,     0,   260,
+     114,   113,     0,   115,   116,   254,   147,   146,   284,   163,
+     117,   163,   288,   261,   255,   163,   289
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,     5,   107,    10,    11,     8,     9,    16,    81,   216,
+     162,   161,   159,   170,   172,     6,     7,    15,    49,   118,
+     189,   206,   404,   503,   458,    50,   185,    51,   122,   597,
+     598,   637,   617,   599,   600,   635,   601,   602,   603,   604,
+     633,   689,   101,   126,    52,   640,    53,   302,   191,   301,
+     500,   547,   397,   453,   454,    54,    55,   199,    56,   200,
+      57,   202,   634,   183,   221,   667,   487,   520,   538,   568,
+     293,   390,   555,   577,   642,   701,   391,   556,   575,   624,
+     699,   392,   491,   481,   442,   443,   446,   490,   646,   678,
+     578,   623,   685,   705,    58,   186,   296,   393,   526,   449,
+     494,   524,    12,    13,    59,    60,    20,    21,   389,    88,
+      89,   474,   383,   472
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -601
+static const short int yypact[] =
+{
+     110,  -601,  -601,  -601,  -601,    51,  -601,  -601,  -601,  -601,
+    -601,    14,  -601,    -9,  -601,   696,  1513,    59,    97,   -21,
+      -9,  -601,   860,    36,    44,    92,  -601,   103,  -601,   144,
+     120,   141,   164,   168,   179,   181,   187,   198,  -601,  -601,
+     212,   223,  -601,   255,   258,   261,  -601,   262,  -601,  -601,
+    -601,  -601,    76,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
+     174,  -601,   232,   144,   297,   589,  -601,   301,   302,   305,
+    -601,  -601,   306,   309,   310,   589,   311,   313,   314,   316,
+     317,   221,   589,  -601,   328,  -601,   320,   324,   279,   205,
+      97,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
+    -601,  -601,  -601,  -601,   337,   338,  -601,  -601,   344,   345,
+     144,   144,   346,   144,    35,  -601,   348,    26,   321,   144,
+     350,   359,   327,   316,  -601,  -601,  -601,   319,     9,  -601,
+      41,  -601,  -601,   589,   589,   589,   339,   340,   347,   355,
+     364,  -601,   365,   366,   367,   374,   375,   376,   381,   384,
+     385,   387,   394,   395,   589,   589,  1322,   331,  -601,   249,
+    -601,   250,    17,  -601,  -601,   445,  1682,   254,  -601,  -601,
+     263,  -601,    18,  -601,  -601,  1682,   380,   199,   199,   304,
+     265,   390,  -601,   589,  -601,   369,    46,   -90,   300,  -601,
+    -601,  -601,   312,   315,   318,   330,   336,  -601,  -601,   119,
+     131,    32,   342,  -601,  -601,   402,    12,    26,   353,   435,
+     439,   589,    69,    -9,   589,   589,  -601,   589,   589,  -601,
+    -601,   905,   589,   589,   589,   589,   589,   442,   448,   589,
+     450,   454,   455,   589,   589,   468,   469,   589,   589,  -601,
+    -601,   589,   589,   589,   589,   589,   589,   589,   589,   589,
+     589,   589,   589,   589,   589,   589,   589,   589,   589,   589,
+     589,   589,   589,  1682,   475,   477,  -601,   481,   589,   589,
+    1682,   226,   485,  -601,   486,  -601,  -601,  -601,   357,   368,
+    -601,  -601,   492,  -601,  -601,  -601,   -48,  1682,   860,  -601,
+    -601,  -601,  -601,  -601,  -601,  -601,  -601,   500,  -601,  -601,
+     767,   471,    10,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
+     144,  -601,   144,   348,  -601,  -601,  -601,  -601,  -601,   472,
+      78,  -601,    24,  -601,  -601,  -601,  1342,  -601,   -12,  1682,
+    1682,  1535,  1682,  1682,  -601,   885,   925,  1362,  1382,   945,
+     373,   377,   965,   378,   382,   383,  1439,  1459,   391,   392,
+    1004,  1479,  1642,   982,  1121,  1259,  1397,   707,   677,   677,
+     573,   573,   573,   573,   210,   210,   247,   247,  -601,  -601,
+    -601,  1682,  1682,  1682,  -601,  -601,  -601,  1682,  1682,  -601,
+    -601,  -601,  -601,   199,   274,   265,   457,  -601,  -601,   -46,
+      30,   512,    30,   589,   397,  -601,     8,   495,  -601,   344,
+    -601,  -601,  -601,  -601,    26,  -601,  -601,  -601,   488,  -601,
+     399,   400,   528,  -601,  -601,   589,  -601,  -601,   589,   589,
+    -601,   589,  -601,  -601,  -601,  -601,  -601,   589,   589,  -601,
+    -601,  -601,   534,   589,   405,   525,  -601,  -601,  -601,   208,
+     507,  1501,   529,   451,  -601,  1662,   462,  -601,  1682,    19,
+     548,  -601,   549,     6,  -601,   470,  -601,   115,    26,  -601,
+    -601,  -601,   420,  1024,  1044,  1064,  1084,  1104,  1143,   422,
+    1682,   265,   504,   199,   199,  -601,  -601,  -601,  -601,  -601,
+    -601,   424,   589,   362,   547,  -601,   531,   532,  -601,  -601,
+     451,   513,   536,   539,  -601,   434,  -601,  -601,  -601,   565,
+     449,  -601,   126,    26,  -601,  -601,  -601,  -601,  -601,  -601,
+    -601,  -601,  -601,   460,   405,  -601,  1163,  -601,   589,   558,
+     503,   503,  -601,   589,    19,   589,   476,  -601,  -601,   508,
+    -601,   132,   265,   555,    87,  1183,   589,   574,  -601,  -601,
+     389,  1203,  -601,  1223,  -601,  -601,   606,  -601,  -601,  -601,
+     576,   598,  -601,  1243,   589,   159,   563,  -601,  -601,    19,
+    -601,   589,  -601,  -601,  1282,  -601,  -601,  -601,   564,  -601,
+    -601,  -601,  1302,  -601,  -601,  -601,   581,   628,    48,   607,
+     675,  -601,  -601,  -601,  -601,  -601,  -601,  -601,   585,   587,
+     588,  -601,  -601,   592,   593,  -601,   219,  -601,   594,  -601,
+    -601,  -601,   628,   579,   597,    76,  -601,  -601,  -601,   323,
+     363,  -601,  -601,    62,  -601,   599,  -601,    -5,   219,  -601,
+    -601,  -601,  -601,   582,   615,   604,   605,   510,   609,   517,
+     610,   611,   518,   519,  -601,    83,  -601,    23,   293,  -601,
+     219,   158,   615,   520,   628,   652,   562,    62,    62,  -601,
+      62,  -601,    62,    62,  -601,  -601,   524,   526,    62,  -601,
+    -601,  -601,   562,  -601,   608,  -601,   649,  -601,   541,   543,
+      31,   556,   559,  -601,  -601,  -601,  -601,   686,    42,   560,
+     561,    62,   578,   583,    42,  -601,  -601,  -601,   689,  -601,
+    -601,  -601,   584,  -601,  -601,  -601,    42,  -601,  -601,   449,
+    -601,   449,  -601,  -601,  -601,   449,  -601
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+    -601,  -601,   -57,  -601,  -601,  -601,  -601,   483,  -601,  -601,
+    -601,  -601,  -601,  -601,   591,  -601,  -601,   527,  -601,  -601,
+    -601,  -196,  -601,  -601,  -601,  -601,   175,  -180,  -601,   -73,
+    -559,    70,   104,    88,  -601,  -601,   122,  -601,   100,  -601,
+      58,  -600,  -601,   142,  -553,  -198,  -601,  -601,  -277,  -601,
+    -601,  -601,  -601,  -601,   295,  -601,  -601,  -601,  -601,  -601,
+    -601,  -175,   -92,  -601,   -62,    84,   259,  -601,   229,  -601,
+    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
+    -601,  -601,  -601,  -601,  -422,   371,  -601,  -601,   109,  -558,
+    -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,  -601,
+    -484,  -601,  -601,  -601,  -601,  -601,   546,   -16,  -601,   671,
+    -170,  -601,  -601,   251
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -305
+static const short int yytable[] =
+{
+     182,   310,   312,   156,    91,   292,   129,   278,   279,   184,
+     451,   322,   451,   166,   190,   214,   317,   318,    17,   484,
+     175,   266,   273,   492,   605,   400,   314,   614,   317,   318,
+     203,   204,    90,   131,   132,   614,   201,   616,   581,   106,
+     542,    18,   413,   297,    18,   298,   581,   217,   687,   605,
+     294,    14,   606,   193,   194,   582,   196,   198,   688,   616,
+     133,   134,   208,   582,   398,    82,   614,   439,   136,   137,
+     440,   219,   220,   273,   387,   570,   437,   581,   138,   139,
+     140,   660,   406,   407,   695,   141,   388,   656,   438,   102,
+     142,   605,   239,   240,   582,   263,   702,   103,   581,   143,
+     295,    83,   607,   270,   144,   145,   146,   147,   148,   149,
+      19,   319,   551,    19,   493,   582,   150,   684,   151,   317,
+     318,   287,   456,   319,   483,   205,   550,   696,   308,   104,
+     317,   318,   639,   152,   615,   589,   317,   318,   403,   153,
+     105,   497,   215,   399,   452,   320,   452,   321,   106,   326,
+     267,   274,   329,   330,   579,   332,   333,   320,   658,   409,
+     335,   336,   337,   338,   339,   313,   681,   342,   154,   155,
+     197,   346,   347,   108,   218,   350,   351,   408,   109,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
+     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
+     373,   110,   274,    83,   327,   111,   377,   378,   457,   124,
+     125,   131,   132,   434,   319,   594,   112,    84,   113,   596,
+      85,    86,    87,   614,   114,   319,     1,     2,     3,   379,
+     380,   319,   410,   411,   581,   115,   128,     4,   133,   134,
+     255,   256,   257,   258,   259,   135,   136,   137,   320,   116,
+     501,   582,   308,   401,   309,   402,   138,   139,   140,   320,
+     117,   530,   502,   141,   308,   320,   311,   548,   142,   281,
+     615,   589,   475,   476,   477,   478,   479,   143,   281,   257,
+     258,   259,   144,   145,   146,   147,   148,   149,   565,   566,
+     567,   308,   119,   661,   150,   120,   151,   614,   121,   123,
+     127,   130,   529,   513,   514,   157,   158,   531,   581,   160,
+     163,   152,    91,   164,   165,   167,   168,   153,   169,    84,
+     171,   173,    85,   276,   277,   582,   174,   614,   441,   445,
+     441,   448,   176,   179,   131,   132,   177,   261,   581,   180,
+     178,   187,   188,   480,   625,   626,   154,   155,   190,   192,
+     195,   594,   201,   463,   209,   582,   464,   465,   207,   466,
+     292,   133,   134,   210,   211,   467,   468,   614,   135,   136,
+     137,   470,   213,   288,   625,   626,   222,   223,   581,   138,
+     139,   140,   264,   265,   224,   282,   141,   271,   283,   284,
+     285,   142,   225,   288,   282,   582,   272,   283,   284,   435,
+     143,   226,   227,   228,   229,   144,   145,   146,   147,   148,
+     149,   230,   231,   232,   630,   631,   627,   150,   233,   151,
+     516,   234,   235,   289,   236,   628,   475,   476,   477,   478,
+     479,   237,   238,   275,   152,   299,   545,   290,   280,   316,
+     153,   324,    34,   557,   286,   325,   340,   303,   131,   132,
+     304,   268,   341,   305,   343,   628,   535,   290,   344,   345,
+     291,   541,    34,   543,   262,   306,    44,    45,   571,   154,
+     155,   307,   348,   349,   553,   133,   134,   315,    46,   374,
+     291,   375,   135,   136,   137,   376,    44,    45,   323,   381,
+     382,   384,   564,   138,   139,   140,   386,   480,    46,   572,
+     141,   703,   385,   704,   394,   142,   421,   706,   396,   405,
+     436,   455,   422,   424,   143,   131,   132,   425,   426,   144,
+     145,   146,   147,   148,   149,   459,   429,   430,   444,   643,
+     450,   150,   462,   151,   460,   461,   629,   632,   469,   471,
+     636,   473,   133,   134,   482,   485,   486,   489,   152,   135,
+     136,   137,   495,   496,   153,   504,   499,   511,   512,   515,
+     138,   139,   140,   517,   659,   629,   522,   141,   518,   527,
+     519,   528,   142,   523,   668,   669,   525,   636,   269,   671,
+     672,   143,   308,   154,   155,   674,   144,   145,   146,   147,
+     148,   149,   131,   132,   532,   536,   546,   659,   150,   537,
+     151,   253,   254,   255,   256,   257,   258,   259,   692,   549,
+     544,   554,   560,   561,   562,   152,   569,   574,   483,   133,
+     134,   153,   609,   608,   610,   611,   135,   136,   137,   612,
+     613,   618,   580,   620,   621,   644,   638,   138,   139,   140,
+     645,   647,   648,   581,   141,   649,   650,   652,   653,   142,
+     154,   155,   651,   654,   655,   663,   665,   666,   143,  -122,
+     582,   673,   676,   144,   145,   146,   147,   148,   149,   583,
+     584,   585,   586,   587,   677,   150,   679,   151,   680,   588,
+     589,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     686,   682,   152,   698,   683,   690,   691,   540,   153,   331,
+      22,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,  -106,   693,   212,   590,   300,   591,   694,   700,
+     670,   592,   641,   657,   619,    44,    45,   154,   155,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,    23,    24,   664,   697,   675,   622,   498,   521,
+     539,   662,    25,    26,    27,    28,   593,    29,    30,   328,
+     594,   181,   595,   447,   596,   533,    31,    32,    33,    34,
+       0,    22,     0,     0,     0,     0,    35,    36,    37,    38,
+      39,    40,     0,     0,     0,     0,    41,    42,    43,     0,
+       0,     0,     0,    44,    45,     0,     0,     0,     0,     0,
+       0,     0,     0,   395,     0,    46,     0,     0,     0,     0,
+       0,     0,     0,    23,    24,     0,    47,     0,     0,     0,
+       0,     0,  -304,    25,    26,    27,    28,     0,    29,    30,
+      48,     0,     0,     0,     0,     0,     0,    31,    32,    33,
+      34,     0,     0,     0,     0,     0,     0,    35,    36,    37,
+      38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
+       0,     0,     0,     0,    44,    45,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,     0,    46,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    47,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     241,    48,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     241,     0,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     241,     0,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     241,     0,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     241,     0,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,     0,   415,   241,
+     416,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   241,
+     334,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   241,
+     417,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   241,
+     420,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   241,
+     423,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   241,
+       0,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   431,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,     0,     0,   241,   505,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   241,   506,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   241,   507,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   241,   508,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   241,   509,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   241,     0,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   510,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,     0,     0,     0,   241,   534,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,   552,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,   558,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,   559,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,   563,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,     0,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   573,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,     0,     0,     0,     0,     0,   576,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   241,   260,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   241,   412,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   241,   418,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,     0,   419,   241,    61,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,     0,     0,   483,    61,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    62,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   414,   427,    62,    63,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   428,     0,     0,     0,    63,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    64,     0,     0,
+       0,     0,   432,    65,    66,    67,    68,    69,   -42,    70,
+      71,    72,     0,    73,    74,    75,    76,    77,     0,    64,
+       0,     0,    78,    79,    80,    65,    66,    67,    68,    69,
+       0,    70,    71,    72,     0,    73,    74,    75,    76,    77,
+       0,     0,     0,     0,    78,    79,    80,   241,   433,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,   488,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   241,     0,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259
+};
+
+static const short int yycheck[] =
+{
+      92,   199,   200,    65,    20,   185,    63,   177,   178,   101,
+       4,   207,     4,    75,     4,     6,     4,     5,     4,   441,
+      82,     4,     4,     4,   577,   302,   201,     4,     4,     5,
+       4,     5,    53,     3,     4,     4,     4,   596,    15,     4,
+     524,    53,    54,   133,    53,   135,    15,     6,     6,   602,
+       4,     0,     4,   110,   111,    32,   113,   114,    16,   618,
+      30,    31,   119,    32,    54,     6,     4,    37,    38,    39,
+      40,   133,   134,     4,   122,   559,   122,    15,    48,    49,
+      50,   640,     4,     5,   684,    55,   134,     4,   134,    53,
+      60,   644,   154,   155,    32,   157,   696,    53,    15,    69,
+      54,     4,    54,   165,    74,    75,    76,    77,    78,    79,
+     122,    99,   534,   122,    95,    32,    86,   675,    88,     4,
+       5,   183,   399,    99,    37,    99,    39,   685,   133,    37,
+       4,     5,   137,   103,    51,    52,     4,     5,   313,   109,
+      37,   135,   133,   133,   138,   133,   138,   135,     4,   211,
+     133,   133,   214,   215,   576,   217,   218,   133,   135,   135,
+     222,   223,   224,   225,   226,   133,   135,   229,   138,   139,
+     135,   233,   234,    53,   133,   237,   238,    99,    37,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,    37,   133,     4,   135,    37,   268,   269,   404,   133,
+     134,     3,     4,   383,    99,   132,    37,   120,    37,   136,
+     123,   124,   125,     4,    37,    99,   116,   117,   118,     3,
+       4,    99,   324,   325,    15,    37,     4,   127,    30,    31,
+      30,    31,    32,    33,    34,    37,    38,    39,   133,    37,
+     135,    32,   133,   310,   135,   312,    48,    49,    50,   133,
+      37,   135,   458,    55,   133,   133,   135,   135,    60,     4,
+      51,    52,    64,    65,    66,    67,    68,    69,     4,    32,
+      33,    34,    74,    75,    76,    77,    78,    79,   129,   130,
+     131,   133,    37,   135,    86,    37,    88,     4,    37,    37,
+     126,     4,   500,   473,   474,     4,     4,   503,    15,     4,
+       4,   103,   328,     4,     4,     4,     3,   109,     4,   120,
+       4,     4,   123,   124,   125,    32,   105,     4,   390,   391,
+     392,   393,     4,    54,     3,     4,    16,     6,    15,   134,
+      16,     4,     4,   135,    51,    52,   138,   139,     4,     4,
+       4,   132,     4,   415,     4,    32,   418,   419,    37,   421,
+     540,    30,    31,     4,    37,   427,   428,     4,    37,    38,
+      39,   433,    53,     4,    51,    52,    37,    37,    15,    48,
+      49,    50,   133,   133,    37,   120,    55,   133,   123,   124,
+     125,    60,    37,     4,   120,    32,   133,   123,   124,   125,
+      69,    37,    37,    37,    37,    74,    75,    76,    77,    78,
+      79,    37,    37,    37,    51,    52,    93,    86,    37,    88,
+     482,    37,    37,    54,    37,   132,    64,    65,    66,    67,
+      68,    37,    37,    53,   103,   135,   528,    68,   134,    37,
+     109,     6,    73,    54,    54,     6,     4,   135,     3,     4,
+     135,     6,     4,   135,     4,   132,   518,    68,     4,     4,
+      91,   523,    73,   525,   133,   135,    97,    98,   560,   138,
+     139,   135,     4,     4,   536,    30,    31,   135,   109,     4,
+      91,     4,    37,    38,    39,     4,    97,    98,   135,     4,
+       4,   134,   554,    48,    49,    50,     4,   135,   109,   561,
+      55,   699,   134,   701,     4,    60,   133,   705,    37,    37,
+      53,    16,   135,   135,    69,     3,     4,   135,   135,    74,
+      75,    76,    77,    78,    79,    37,   135,   135,    16,   621,
+     133,    86,     4,    88,   135,   135,   609,   610,     4,   134,
+     613,    16,    30,    31,    37,    16,    95,    85,   103,    37,
+      38,    39,     4,     4,   109,   135,    86,   135,    54,   135,
+      48,    49,    50,    16,   637,   638,    53,    55,    37,   135,
+      38,     6,    60,    37,   647,   648,    37,   650,   133,   652,
+     653,    69,   133,   138,   139,   658,    74,    75,    76,    77,
+      78,    79,     3,     4,   134,    37,    88,   670,    86,    96,
+      88,    28,    29,    30,    31,    32,    33,    34,   681,    54,
+     134,    37,     6,    37,    16,   103,    53,    53,    37,    30,
+      31,   109,    37,    16,    37,    37,    37,    38,    39,    37,
+      37,    37,     4,    54,    37,    53,    37,    48,    49,    50,
+      25,    37,    37,    15,    55,   135,    37,    37,    37,    60,
+     138,   139,   135,   135,   135,   135,     4,    95,    69,   135,
+      32,   135,    54,    74,    75,    76,    77,    78,    79,    41,
+      42,    43,    44,    45,    25,    86,   135,    88,   135,    51,
+      52,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+       4,   135,   103,     4,   135,   135,   135,   522,   109,   216,
+       4,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    37,   135,   123,    87,   189,    89,   135,   135,
+     650,    93,   618,   635,   602,    97,    98,   138,   139,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    46,    47,   644,   687,   662,   605,   453,   490,
+     521,   642,    56,    57,    58,    59,   128,    61,    62,   213,
+     132,    90,   134,   392,   136,   514,    70,    71,    72,    73,
+      -1,     4,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
+      84,    85,    -1,    -1,    -1,    -1,    90,    91,    92,    -1,
+      -1,    -1,    -1,    97,    98,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    36,    -1,   109,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    46,    47,    -1,   120,    -1,    -1,    -1,
+      -1,    -1,   126,    56,    57,    58,    59,    -1,    61,    62,
+     134,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,
+      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
+      83,    84,    85,    -1,    -1,    -1,    -1,    90,    91,    92,
+      -1,    -1,    -1,    -1,    97,    98,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    -1,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      15,   134,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    -1,   133,    15,
+     135,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
+     135,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
+     135,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
+     135,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
+     135,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
+      -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,   135,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    -1,    15,   135,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    15,   135,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    15,   135,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    15,   135,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    15,   135,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    15,    -1,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,   135,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,    -1,    -1,    15,   135,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,   135,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,   135,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,   135,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,   135,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,    -1,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,   135,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    -1,    -1,   135,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    15,   133,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    15,   133,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    15,   133,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    -1,   133,    15,     4,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    -1,    -1,    37,     4,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    36,   133,    38,    61,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   133,    -1,    -1,    -1,    61,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
+      -1,    -1,   133,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,    -1,   110,   111,   112,   113,   114,    -1,    94,
+      -1,    -1,   119,   120,   121,   100,   101,   102,   103,   104,
+      -1,   106,   107,   108,    -1,   110,   111,   112,   113,   114,
+      -1,    -1,    -1,    -1,   119,   120,   121,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    15,    -1,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,   116,   117,   118,   127,   141,   155,   156,   145,   146,
+     143,   144,   242,   243,     0,   157,   147,     4,    53,   122,
+     246,   247,     4,    46,    47,    56,    57,    58,    59,    61,
+      62,    70,    71,    72,    73,    80,    81,    82,    83,    84,
+      85,    90,    91,    92,    97,    98,   109,   120,   134,   158,
+     165,   167,   184,   186,   195,   196,   198,   200,   234,   244,
+     245,     4,    38,    61,    94,   100,   101,   102,   103,   104,
+     106,   107,   108,   110,   111,   112,   113,   114,   119,   120,
+     121,   148,     6,     4,   120,   123,   124,   125,   249,   250,
+      53,   247,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,   182,    53,    53,    37,    37,     4,   142,    53,    37,
+      37,    37,    37,    37,    37,    37,    37,    37,   159,    37,
+      37,    37,   168,    37,   133,   134,   183,   126,     4,   142,
+       4,     3,     4,    30,    31,    37,    38,    39,    48,    49,
+      50,    55,    60,    69,    74,    75,    76,    77,    78,    79,
+      86,    88,   103,   109,   138,   139,   204,     4,     4,   152,
+       4,   151,   150,     4,     4,     4,   204,     4,     3,     4,
+     153,     4,   154,     4,   105,   204,     4,    16,    16,    54,
+     134,   249,   202,   203,   202,   166,   235,     4,     4,   160,
+       4,   188,     4,   142,   142,     4,   142,   135,   142,   197,
+     199,     4,   201,     4,     5,    99,   161,    37,   142,     4,
+       4,    37,   154,    53,     6,   133,   149,     6,   133,   204,
+     204,   204,    37,    37,    37,    37,    37,    37,    37,    37,
+      37,    37,    37,    37,    37,    37,    37,    37,    37,   204,
+     204,    15,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+     133,     6,   133,   204,   133,   133,     4,   133,     6,   133,
+     204,   133,   133,     4,   133,    53,   124,   125,   250,   250,
+     134,     4,   120,   123,   124,   125,    54,   204,     4,    54,
+      68,    91,   167,   210,     4,    54,   236,   133,   135,   135,
+     157,   189,   187,   135,   135,   135,   135,   135,   133,   135,
+     185,   135,   185,   133,   201,   135,    37,     4,     5,    99,
+     133,   135,   161,   135,     6,     6,   204,   135,   246,   204,
+     204,   147,   204,   204,   135,   204,   204,   204,   204,   204,
+       4,     4,   204,     4,     4,     4,   204,   204,     4,     4,
+     204,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,     4,     4,     4,   204,   204,     3,
+       4,     4,     4,   252,   134,   134,     4,   122,   134,   248,
+     211,   216,   221,   237,     4,    36,    37,   192,    54,   133,
+     188,   142,   142,   201,   162,    37,     4,     5,    99,   135,
+     202,   202,   133,    54,    36,   133,   135,   135,   133,   133,
+     135,   133,   135,   135,   135,   135,   135,   133,   133,   135,
+     135,   135,   133,    16,   250,   125,    53,   122,   134,    37,
+      40,   204,   224,   225,    16,   204,   226,   225,   204,   239,
+     133,     4,   138,   193,   194,    16,   188,   161,   164,    37,
+     135,   135,     4,   204,   204,   204,   204,   204,   204,     4,
+     204,   134,   253,    16,   251,    64,    65,    66,    67,    68,
+     135,   223,    37,    37,   224,    16,    95,   206,    16,    85,
+     227,   222,     4,    95,   240,     4,     4,   135,   194,    86,
+     190,   135,   161,   163,   135,   135,   135,   135,   135,   135,
+     135,   135,    54,   250,   250,   135,   204,    16,    37,    38,
+     207,   206,    53,    37,   241,    37,   238,   135,     6,   185,
+     135,   161,   134,   253,   135,   204,    37,    96,   208,   208,
+     166,   204,   240,   204,   134,   202,    88,   191,   135,    54,
+      39,   224,   135,   204,    37,   212,   217,    54,   135,   135,
+       6,    37,    16,   135,   204,   129,   130,   131,   209,    53,
+     240,   202,   204,   135,    53,   218,   135,   213,   230,   224,
+       4,    15,    32,    41,    42,    43,    44,    45,    51,    52,
+      87,    89,    93,   128,   132,   134,   136,   169,   170,   173,
+     174,   176,   177,   178,   179,   184,     4,    54,    16,    37,
+      37,    37,    37,    37,     4,    51,   170,   172,    37,   176,
+      54,    37,   183,   231,   219,    51,    52,    93,   132,   169,
+      51,    52,   169,   180,   202,   175,   169,   171,    37,   137,
+     185,   172,   214,   202,    53,    25,   228,    37,    37,   135,
+      37,   135,    37,    37,   135,   135,     4,   173,   135,   169,
+     170,   135,   228,   135,   178,     4,    95,   205,   169,   169,
+     171,   169,   169,   135,   169,   205,    54,    25,   229,   135,
+     135,   135,   135,   135,   229,   232,     4,     6,    16,   181,
+     135,   135,   169,   135,   135,   181,   229,   180,     4,   220,
+     135,   215,   181,   185,   185,   233,   185
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (0)
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr,					\
+                  Type, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
+#endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (Rule);		\
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short int *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	short int *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 7:
+#line 173 "ldgram.y"
+    { ldlex_defsym(); }
+    break;
+
+  case 8:
+#line 175 "ldgram.y"
+    {
+		  ldlex_popstate();
+		  lang_add_assignment(exp_assop((yyvsp[-1].token),(yyvsp[-2].name),(yyvsp[0].etree)));
+		}
+    break;
+
+  case 9:
+#line 183 "ldgram.y"
+    {
+		  ldlex_mri_script ();
+		  PUSH_ERROR (_("MRI style script"));
+		}
+    break;
+
+  case 10:
+#line 188 "ldgram.y"
+    {
+		  ldlex_popstate ();
+		  mri_draw_tree ();
+		  POP_ERROR ();
+		}
+    break;
+
+  case 15:
+#line 203 "ldgram.y"
+    {
+			einfo(_("%P%F: unrecognised keyword in MRI style script '%s'\n"),(yyvsp[0].name));
+			}
+    break;
+
+  case 16:
+#line 206 "ldgram.y"
+    {
+			config.map_filename = "-";
+			}
+    break;
+
+  case 19:
+#line 212 "ldgram.y"
+    { mri_public((yyvsp[-2].name), (yyvsp[0].etree)); }
+    break;
+
+  case 20:
+#line 214 "ldgram.y"
+    { mri_public((yyvsp[-2].name), (yyvsp[0].etree)); }
+    break;
+
+  case 21:
+#line 216 "ldgram.y"
+    { mri_public((yyvsp[-1].name), (yyvsp[0].etree)); }
+    break;
+
+  case 22:
+#line 218 "ldgram.y"
+    { mri_format((yyvsp[0].name)); }
+    break;
+
+  case 23:
+#line 220 "ldgram.y"
+    { mri_output_section((yyvsp[-2].name), (yyvsp[0].etree));}
+    break;
+
+  case 24:
+#line 222 "ldgram.y"
+    { mri_output_section((yyvsp[-1].name), (yyvsp[0].etree));}
+    break;
+
+  case 25:
+#line 224 "ldgram.y"
+    { mri_output_section((yyvsp[-2].name), (yyvsp[0].etree));}
+    break;
+
+  case 26:
+#line 226 "ldgram.y"
+    { mri_align((yyvsp[-2].name),(yyvsp[0].etree)); }
+    break;
+
+  case 27:
+#line 228 "ldgram.y"
+    { mri_align((yyvsp[-2].name),(yyvsp[0].etree)); }
+    break;
+
+  case 28:
+#line 230 "ldgram.y"
+    { mri_alignmod((yyvsp[-2].name),(yyvsp[0].etree)); }
+    break;
+
+  case 29:
+#line 232 "ldgram.y"
+    { mri_alignmod((yyvsp[-2].name),(yyvsp[0].etree)); }
+    break;
+
+  case 32:
+#line 236 "ldgram.y"
+    { mri_name((yyvsp[0].name)); }
+    break;
+
+  case 33:
+#line 238 "ldgram.y"
+    { mri_alias((yyvsp[-2].name),(yyvsp[0].name),0);}
+    break;
+
+  case 34:
+#line 240 "ldgram.y"
+    { mri_alias ((yyvsp[-2].name), 0, (int) (yyvsp[0].bigint).integer); }
+    break;
+
+  case 35:
+#line 242 "ldgram.y"
+    { mri_base((yyvsp[0].etree)); }
+    break;
+
+  case 36:
+#line 244 "ldgram.y"
+    { mri_truncate ((unsigned int) (yyvsp[0].bigint).integer); }
+    break;
+
+  case 39:
+#line 248 "ldgram.y"
+    { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); }
+    break;
+
+  case 40:
+#line 250 "ldgram.y"
+    { ldlex_popstate (); }
+    break;
+
+  case 41:
+#line 252 "ldgram.y"
+    { lang_add_entry ((yyvsp[0].name), FALSE); }
+    break;
+
+  case 43:
+#line 257 "ldgram.y"
+    { mri_order((yyvsp[0].name)); }
+    break;
+
+  case 44:
+#line 258 "ldgram.y"
+    { mri_order((yyvsp[0].name)); }
+    break;
+
+  case 46:
+#line 264 "ldgram.y"
+    { mri_load((yyvsp[0].name)); }
+    break;
+
+  case 47:
+#line 265 "ldgram.y"
+    { mri_load((yyvsp[0].name)); }
+    break;
+
+  case 48:
+#line 270 "ldgram.y"
+    { mri_only_load((yyvsp[0].name)); }
+    break;
+
+  case 49:
+#line 272 "ldgram.y"
+    { mri_only_load((yyvsp[0].name)); }
+    break;
+
+  case 50:
+#line 276 "ldgram.y"
+    { (yyval.name) = NULL; }
+    break;
+
+  case 53:
+#line 283 "ldgram.y"
+    { ldlang_add_undef ((yyvsp[0].name)); }
+    break;
+
+  case 54:
+#line 285 "ldgram.y"
+    { ldlang_add_undef ((yyvsp[0].name)); }
+    break;
+
+  case 55:
+#line 287 "ldgram.y"
+    { ldlang_add_undef ((yyvsp[0].name)); }
+    break;
+
+  case 56:
+#line 291 "ldgram.y"
+    {
+	 ldlex_both();
+	}
+    break;
+
+  case 57:
+#line 295 "ldgram.y"
+    {
+	ldlex_popstate();
+	}
+    break;
+
+  case 70:
+#line 320 "ldgram.y"
+    { lang_add_target((yyvsp[-1].name)); }
+    break;
+
+  case 71:
+#line 322 "ldgram.y"
+    { ldfile_add_library_path ((yyvsp[-1].name), FALSE); }
+    break;
+
+  case 72:
+#line 324 "ldgram.y"
+    { lang_add_output((yyvsp[-1].name), 1); }
+    break;
+
+  case 73:
+#line 326 "ldgram.y"
+    { lang_add_output_format ((yyvsp[-1].name), (char *) NULL,
+					    (char *) NULL, 1); }
+    break;
+
+  case 74:
+#line 329 "ldgram.y"
+    { lang_add_output_format ((yyvsp[-5].name), (yyvsp[-3].name), (yyvsp[-1].name), 1); }
+    break;
+
+  case 75:
+#line 331 "ldgram.y"
+    { ldfile_set_output_arch ((yyvsp[-1].name), bfd_arch_unknown); }
+    break;
+
+  case 76:
+#line 333 "ldgram.y"
+    { command_line.force_common_definition = TRUE ; }
+    break;
+
+  case 77:
+#line 335 "ldgram.y"
+    { command_line.inhibit_common_definition = TRUE ; }
+    break;
+
+  case 79:
+#line 338 "ldgram.y"
+    { lang_enter_group (); }
+    break;
+
+  case 80:
+#line 340 "ldgram.y"
+    { lang_leave_group (); }
+    break;
+
+  case 81:
+#line 342 "ldgram.y"
+    { lang_add_map((yyvsp[-1].name)); }
+    break;
+
+  case 82:
+#line 344 "ldgram.y"
+    { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); }
+    break;
+
+  case 83:
+#line 346 "ldgram.y"
+    { ldlex_popstate (); }
+    break;
+
+  case 84:
+#line 348 "ldgram.y"
+    {
+		  lang_add_nocrossref ((yyvsp[-1].nocrossref));
+		}
+    break;
+
+  case 86:
+#line 356 "ldgram.y"
+    { lang_add_input_file((yyvsp[0].name),lang_input_file_is_search_file_enum,
+				 (char *)NULL); }
+    break;
+
+  case 87:
+#line 359 "ldgram.y"
+    { lang_add_input_file((yyvsp[0].name),lang_input_file_is_search_file_enum,
+				 (char *)NULL); }
+    break;
+
+  case 88:
+#line 362 "ldgram.y"
+    { lang_add_input_file((yyvsp[0].name),lang_input_file_is_search_file_enum,
+				 (char *)NULL); }
+    break;
+
+  case 89:
+#line 365 "ldgram.y"
+    { lang_add_input_file((yyvsp[0].name),lang_input_file_is_l_enum,
+				 (char *)NULL); }
+    break;
+
+  case 90:
+#line 368 "ldgram.y"
+    { lang_add_input_file((yyvsp[0].name),lang_input_file_is_l_enum,
+				 (char *)NULL); }
+    break;
+
+  case 91:
+#line 371 "ldgram.y"
+    { lang_add_input_file((yyvsp[0].name),lang_input_file_is_l_enum,
+				 (char *)NULL); }
+    break;
+
+  case 92:
+#line 374 "ldgram.y"
+    { (yyval.integer) = as_needed; as_needed = TRUE; }
+    break;
+
+  case 93:
+#line 376 "ldgram.y"
+    { as_needed = (yyvsp[-2].integer); }
+    break;
+
+  case 94:
+#line 378 "ldgram.y"
+    { (yyval.integer) = as_needed; as_needed = TRUE; }
+    break;
+
+  case 95:
+#line 380 "ldgram.y"
+    { as_needed = (yyvsp[-2].integer); }
+    break;
+
+  case 96:
+#line 382 "ldgram.y"
+    { (yyval.integer) = as_needed; as_needed = TRUE; }
+    break;
+
+  case 97:
+#line 384 "ldgram.y"
+    { as_needed = (yyvsp[-2].integer); }
+    break;
+
+  case 102:
+#line 399 "ldgram.y"
+    { lang_add_entry ((yyvsp[-1].name), FALSE); }
+    break;
+
+  case 104:
+#line 401 "ldgram.y"
+    {ldlex_expression ();}
+    break;
+
+  case 105:
+#line 402 "ldgram.y"
+    { ldlex_popstate ();
+		  lang_add_assignment (exp_assert ((yyvsp[-3].etree), (yyvsp[-1].name))); }
+    break;
+
+  case 106:
+#line 410 "ldgram.y"
+    {
+			  (yyval.cname) = (yyvsp[0].name);
+			}
+    break;
+
+  case 107:
+#line 414 "ldgram.y"
+    {
+			  (yyval.cname) = "*";
+			}
+    break;
+
+  case 108:
+#line 418 "ldgram.y"
+    {
+			  (yyval.cname) = "?";
+			}
+    break;
+
+  case 109:
+#line 425 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[0].cname);
+			  (yyval.wildcard).sorted = none;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 110:
+#line 431 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[0].cname);
+			  (yyval.wildcard).sorted = none;
+			  (yyval.wildcard).exclude_name_list = (yyvsp[-2].name_list);
+			}
+    break;
+
+  case 111:
+#line 437 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-1].cname);
+			  (yyval.wildcard).sorted = by_name;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 112:
+#line 443 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-1].cname);
+			  (yyval.wildcard).sorted = by_alignment;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 113:
+#line 449 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-2].cname);
+			  (yyval.wildcard).sorted = by_name_alignment;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 114:
+#line 455 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-2].cname);
+			  (yyval.wildcard).sorted = by_name;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 115:
+#line 461 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-2].cname);
+			  (yyval.wildcard).sorted = by_alignment_name;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 116:
+#line 467 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-2].cname);
+			  (yyval.wildcard).sorted = by_alignment;
+			  (yyval.wildcard).exclude_name_list = NULL;
+			}
+    break;
+
+  case 117:
+#line 473 "ldgram.y"
+    {
+			  (yyval.wildcard).name = (yyvsp[-1].cname);
+			  (yyval.wildcard).sorted = by_name;
+			  (yyval.wildcard).exclude_name_list = (yyvsp[-3].name_list);
+			}
+    break;
+
+  case 118:
+#line 482 "ldgram.y"
+    {
+			  struct name_list *tmp;
+			  tmp = (struct name_list *) xmalloc (sizeof *tmp);
+			  tmp->name = (yyvsp[0].cname);
+			  tmp->next = (yyvsp[-1].name_list);
+			  (yyval.name_list) = tmp;
+			}
+    break;
+
+  case 119:
+#line 491 "ldgram.y"
+    {
+			  struct name_list *tmp;
+			  tmp = (struct name_list *) xmalloc (sizeof *tmp);
+			  tmp->name = (yyvsp[0].cname);
+			  tmp->next = NULL;
+			  (yyval.name_list) = tmp;
+			}
+    break;
+
+  case 120:
+#line 502 "ldgram.y"
+    {
+			  struct wildcard_list *tmp;
+			  tmp = (struct wildcard_list *) xmalloc (sizeof *tmp);
+			  tmp->next = (yyvsp[-2].wildcard_list);
+			  tmp->spec = (yyvsp[0].wildcard);
+			  (yyval.wildcard_list) = tmp;
+			}
+    break;
+
+  case 121:
+#line 511 "ldgram.y"
+    {
+			  struct wildcard_list *tmp;
+			  tmp = (struct wildcard_list *) xmalloc (sizeof *tmp);
+			  tmp->next = NULL;
+			  tmp->spec = (yyvsp[0].wildcard);
+			  (yyval.wildcard_list) = tmp;
+			}
+    break;
+
+  case 122:
+#line 522 "ldgram.y"
+    {
+			  struct wildcard_spec tmp;
+			  tmp.name = (yyvsp[0].name);
+			  tmp.exclude_name_list = NULL;
+			  tmp.sorted = none;
+			  lang_add_wild (&tmp, NULL, ldgram_had_keep);
+			}
+    break;
+
+  case 123:
+#line 530 "ldgram.y"
+    {
+			  lang_add_wild (NULL, (yyvsp[-1].wildcard_list), ldgram_had_keep);
+			}
+    break;
+
+  case 124:
+#line 534 "ldgram.y"
+    {
+			  lang_add_wild (&(yyvsp[-3].wildcard), (yyvsp[-1].wildcard_list), ldgram_had_keep);
+			}
+    break;
+
+  case 126:
+#line 542 "ldgram.y"
+    { ldgram_had_keep = TRUE; }
+    break;
+
+  case 127:
+#line 544 "ldgram.y"
+    { ldgram_had_keep = FALSE; }
+    break;
+
+  case 129:
+#line 550 "ldgram.y"
+    {
+ 		lang_add_attribute(lang_object_symbols_statement_enum);
+	      	}
+    break;
+
+  case 131:
+#line 555 "ldgram.y"
+    {
+
+		  lang_add_attribute(lang_constructors_statement_enum);
+		}
+    break;
+
+  case 132:
+#line 560 "ldgram.y"
+    {
+		  constructors_sorted = TRUE;
+		  lang_add_attribute (lang_constructors_statement_enum);
+		}
+    break;
+
+  case 134:
+#line 566 "ldgram.y"
+    {
+			  lang_add_data ((int) (yyvsp[-3].integer), (yyvsp[-1].etree));
+			}
+    break;
+
+  case 135:
+#line 571 "ldgram.y"
+    {
+			  lang_add_fill ((yyvsp[-1].fill));
+			}
+    break;
+
+  case 140:
+#line 588 "ldgram.y"
+    { (yyval.integer) = (yyvsp[0].token); }
+    break;
+
+  case 141:
+#line 590 "ldgram.y"
+    { (yyval.integer) = (yyvsp[0].token); }
+    break;
+
+  case 142:
+#line 592 "ldgram.y"
+    { (yyval.integer) = (yyvsp[0].token); }
+    break;
+
+  case 143:
+#line 594 "ldgram.y"
+    { (yyval.integer) = (yyvsp[0].token); }
+    break;
+
+  case 144:
+#line 596 "ldgram.y"
+    { (yyval.integer) = (yyvsp[0].token); }
+    break;
+
+  case 145:
+#line 601 "ldgram.y"
+    {
+		  (yyval.fill) = exp_get_fill ((yyvsp[0].etree), 0, "fill value");
+		}
+    break;
+
+  case 146:
+#line 608 "ldgram.y"
+    { (yyval.fill) = (yyvsp[0].fill); }
+    break;
+
+  case 147:
+#line 609 "ldgram.y"
+    { (yyval.fill) = (fill_type *) 0; }
+    break;
+
+  case 148:
+#line 614 "ldgram.y"
+    { (yyval.token) = '+'; }
+    break;
+
+  case 149:
+#line 616 "ldgram.y"
+    { (yyval.token) = '-'; }
+    break;
+
+  case 150:
+#line 618 "ldgram.y"
+    { (yyval.token) = '*'; }
+    break;
+
+  case 151:
+#line 620 "ldgram.y"
+    { (yyval.token) = '/'; }
+    break;
+
+  case 152:
+#line 622 "ldgram.y"
+    { (yyval.token) = LSHIFT; }
+    break;
+
+  case 153:
+#line 624 "ldgram.y"
+    { (yyval.token) = RSHIFT; }
+    break;
+
+  case 154:
+#line 626 "ldgram.y"
+    { (yyval.token) = '&'; }
+    break;
+
+  case 155:
+#line 628 "ldgram.y"
+    { (yyval.token) = '|'; }
+    break;
+
+  case 158:
+#line 638 "ldgram.y"
+    {
+		  lang_add_assignment (exp_assop ((yyvsp[-1].token), (yyvsp[-2].name), (yyvsp[0].etree)));
+		}
+    break;
+
+  case 159:
+#line 642 "ldgram.y"
+    {
+		  lang_add_assignment (exp_assop ('=', (yyvsp[-2].name),
+						  exp_binop ((yyvsp[-1].token),
+							     exp_nameop (NAME,
+									 (yyvsp[-2].name)),
+							     (yyvsp[0].etree))));
+		}
+    break;
+
+  case 160:
+#line 650 "ldgram.y"
+    {
+		  lang_add_assignment (exp_provide ((yyvsp[-3].name), (yyvsp[-1].etree), FALSE));
+		}
+    break;
+
+  case 161:
+#line 654 "ldgram.y"
+    {
+		  lang_add_assignment (exp_provide ((yyvsp[-3].name), (yyvsp[-1].etree), TRUE));
+		}
+    break;
+
+  case 168:
+#line 676 "ldgram.y"
+    { region = lang_memory_region_lookup ((yyvsp[0].name), TRUE); }
+    break;
+
+  case 169:
+#line 679 "ldgram.y"
+    {}
+    break;
+
+  case 170:
+#line 684 "ldgram.y"
+    {
+		  region->origin = exp_get_vma ((yyvsp[0].etree), 0, "origin");
+		  region->current = region->origin;
+		}
+    break;
+
+  case 171:
+#line 692 "ldgram.y"
+    {
+		  region->length = exp_get_vma ((yyvsp[0].etree), -1, "length");
+		}
+    break;
+
+  case 172:
+#line 699 "ldgram.y"
+    { /* dummy action to avoid bison 1.25 error message */ }
+    break;
+
+  case 176:
+#line 710 "ldgram.y"
+    { lang_set_flags (region, (yyvsp[0].name), 0); }
+    break;
+
+  case 177:
+#line 712 "ldgram.y"
+    { lang_set_flags (region, (yyvsp[0].name), 1); }
+    break;
+
+  case 178:
+#line 717 "ldgram.y"
+    { lang_startup((yyvsp[-1].name)); }
+    break;
+
+  case 180:
+#line 723 "ldgram.y"
+    { ldemul_hll((char *)NULL); }
+    break;
+
+  case 181:
+#line 728 "ldgram.y"
+    { ldemul_hll((yyvsp[0].name)); }
+    break;
+
+  case 182:
+#line 730 "ldgram.y"
+    { ldemul_hll((yyvsp[0].name)); }
+    break;
+
+  case 184:
+#line 738 "ldgram.y"
+    { ldemul_syslib((yyvsp[0].name)); }
+    break;
+
+  case 186:
+#line 744 "ldgram.y"
+    { lang_float(TRUE); }
+    break;
+
+  case 187:
+#line 746 "ldgram.y"
+    { lang_float(FALSE); }
+    break;
+
+  case 188:
+#line 751 "ldgram.y"
+    {
+		  (yyval.nocrossref) = NULL;
+		}
+    break;
+
+  case 189:
+#line 755 "ldgram.y"
+    {
+		  struct lang_nocrossref *n;
+
+		  n = (struct lang_nocrossref *) xmalloc (sizeof *n);
+		  n->name = (yyvsp[-1].name);
+		  n->next = (yyvsp[0].nocrossref);
+		  (yyval.nocrossref) = n;
+		}
+    break;
+
+  case 190:
+#line 764 "ldgram.y"
+    {
+		  struct lang_nocrossref *n;
+
+		  n = (struct lang_nocrossref *) xmalloc (sizeof *n);
+		  n->name = (yyvsp[-2].name);
+		  n->next = (yyvsp[0].nocrossref);
+		  (yyval.nocrossref) = n;
+		}
+    break;
+
+  case 191:
+#line 774 "ldgram.y"
+    { ldlex_expression (); }
+    break;
+
+  case 192:
+#line 776 "ldgram.y"
+    { ldlex_popstate (); (yyval.etree)=(yyvsp[0].etree);}
+    break;
+
+  case 193:
+#line 781 "ldgram.y"
+    { (yyval.etree) = exp_unop ('-', (yyvsp[0].etree)); }
+    break;
+
+  case 194:
+#line 783 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-1].etree); }
+    break;
+
+  case 195:
+#line 785 "ldgram.y"
+    { (yyval.etree) = exp_unop ((int) (yyvsp[-3].integer),(yyvsp[-1].etree)); }
+    break;
+
+  case 196:
+#line 787 "ldgram.y"
+    { (yyval.etree) = exp_unop ('!', (yyvsp[0].etree)); }
+    break;
+
+  case 197:
+#line 789 "ldgram.y"
+    { (yyval.etree) = (yyvsp[0].etree); }
+    break;
+
+  case 198:
+#line 791 "ldgram.y"
+    { (yyval.etree) = exp_unop ('~', (yyvsp[0].etree));}
+    break;
+
+  case 199:
+#line 794 "ldgram.y"
+    { (yyval.etree) = exp_binop ('*', (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 200:
+#line 796 "ldgram.y"
+    { (yyval.etree) = exp_binop ('/', (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 201:
+#line 798 "ldgram.y"
+    { (yyval.etree) = exp_binop ('%', (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 202:
+#line 800 "ldgram.y"
+    { (yyval.etree) = exp_binop ('+', (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 203:
+#line 802 "ldgram.y"
+    { (yyval.etree) = exp_binop ('-' , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 204:
+#line 804 "ldgram.y"
+    { (yyval.etree) = exp_binop (LSHIFT , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 205:
+#line 806 "ldgram.y"
+    { (yyval.etree) = exp_binop (RSHIFT , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 206:
+#line 808 "ldgram.y"
+    { (yyval.etree) = exp_binop (EQ , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 207:
+#line 810 "ldgram.y"
+    { (yyval.etree) = exp_binop (NE , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 208:
+#line 812 "ldgram.y"
+    { (yyval.etree) = exp_binop (LE , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 209:
+#line 814 "ldgram.y"
+    { (yyval.etree) = exp_binop (GE , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 210:
+#line 816 "ldgram.y"
+    { (yyval.etree) = exp_binop ('<' , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 211:
+#line 818 "ldgram.y"
+    { (yyval.etree) = exp_binop ('>' , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 212:
+#line 820 "ldgram.y"
+    { (yyval.etree) = exp_binop ('&' , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 213:
+#line 822 "ldgram.y"
+    { (yyval.etree) = exp_binop ('^' , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 214:
+#line 824 "ldgram.y"
+    { (yyval.etree) = exp_binop ('|' , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 215:
+#line 826 "ldgram.y"
+    { (yyval.etree) = exp_trinop ('?' , (yyvsp[-4].etree), (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 216:
+#line 828 "ldgram.y"
+    { (yyval.etree) = exp_binop (ANDAND , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 217:
+#line 830 "ldgram.y"
+    { (yyval.etree) = exp_binop (OROR , (yyvsp[-2].etree), (yyvsp[0].etree)); }
+    break;
+
+  case 218:
+#line 832 "ldgram.y"
+    { (yyval.etree) = exp_nameop (DEFINED, (yyvsp[-1].name)); }
+    break;
+
+  case 219:
+#line 834 "ldgram.y"
+    { (yyval.etree) = exp_bigintop ((yyvsp[0].bigint).integer, (yyvsp[0].bigint).str); }
+    break;
+
+  case 220:
+#line 836 "ldgram.y"
+    { (yyval.etree) = exp_nameop (SIZEOF_HEADERS,0); }
+    break;
+
+  case 221:
+#line 839 "ldgram.y"
+    { (yyval.etree) = exp_nameop (SIZEOF,(yyvsp[-1].name)); }
+    break;
+
+  case 222:
+#line 841 "ldgram.y"
+    { (yyval.etree) = exp_nameop (ADDR,(yyvsp[-1].name)); }
+    break;
+
+  case 223:
+#line 843 "ldgram.y"
+    { (yyval.etree) = exp_nameop (LOADADDR,(yyvsp[-1].name)); }
+    break;
+
+  case 224:
+#line 845 "ldgram.y"
+    { (yyval.etree) = exp_unop (ABSOLUTE, (yyvsp[-1].etree)); }
+    break;
+
+  case 225:
+#line 847 "ldgram.y"
+    { (yyval.etree) = exp_unop (ALIGN_K,(yyvsp[-1].etree)); }
+    break;
+
+  case 226:
+#line 849 "ldgram.y"
+    { (yyval.etree) = exp_binop (ALIGN_K,(yyvsp[-3].etree),(yyvsp[-1].etree)); }
+    break;
+
+  case 227:
+#line 851 "ldgram.y"
+    { (yyval.etree) = exp_binop (DATA_SEGMENT_ALIGN, (yyvsp[-3].etree), (yyvsp[-1].etree)); }
+    break;
+
+  case 228:
+#line 853 "ldgram.y"
+    { (yyval.etree) = exp_binop (DATA_SEGMENT_RELRO_END, (yyvsp[-1].etree), (yyvsp[-3].etree)); }
+    break;
+
+  case 229:
+#line 855 "ldgram.y"
+    { (yyval.etree) = exp_unop (DATA_SEGMENT_END, (yyvsp[-1].etree)); }
+    break;
+
+  case 230:
+#line 857 "ldgram.y"
+    { /* The operands to the expression node are
+			     placed in the opposite order from the way
+			     in which they appear in the script as
+			     that allows us to reuse more code in
+			     fold_binary.  */
+			  (yyval.etree) = exp_binop (SEGMENT_START,
+					  (yyvsp[-1].etree),
+					  exp_nameop (NAME, (yyvsp[-3].name))); }
+    break;
+
+  case 231:
+#line 866 "ldgram.y"
+    { (yyval.etree) = exp_unop (ALIGN_K,(yyvsp[-1].etree)); }
+    break;
+
+  case 232:
+#line 868 "ldgram.y"
+    { (yyval.etree) = exp_nameop (NAME,(yyvsp[0].name)); }
+    break;
+
+  case 233:
+#line 870 "ldgram.y"
+    { (yyval.etree) = exp_binop (MAX_K, (yyvsp[-3].etree), (yyvsp[-1].etree) ); }
+    break;
+
+  case 234:
+#line 872 "ldgram.y"
+    { (yyval.etree) = exp_binop (MIN_K, (yyvsp[-3].etree), (yyvsp[-1].etree) ); }
+    break;
+
+  case 235:
+#line 874 "ldgram.y"
+    { (yyval.etree) = exp_assert ((yyvsp[-3].etree), (yyvsp[-1].name)); }
+    break;
+
+  case 236:
+#line 876 "ldgram.y"
+    { (yyval.etree) = exp_nameop (ORIGIN, (yyvsp[-1].name)); }
+    break;
+
+  case 237:
+#line 878 "ldgram.y"
+    { (yyval.etree) = exp_nameop (LENGTH, (yyvsp[-1].name)); }
+    break;
+
+  case 238:
+#line 883 "ldgram.y"
+    { (yyval.name) = (yyvsp[0].name); }
+    break;
+
+  case 239:
+#line 884 "ldgram.y"
+    { (yyval.name) = 0; }
+    break;
+
+  case 240:
+#line 888 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-1].etree); }
+    break;
+
+  case 241:
+#line 889 "ldgram.y"
+    { (yyval.etree) = 0; }
+    break;
+
+  case 242:
+#line 893 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-1].etree); }
+    break;
+
+  case 243:
+#line 894 "ldgram.y"
+    { (yyval.etree) = 0; }
+    break;
+
+  case 244:
+#line 898 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-1].etree); }
+    break;
+
+  case 245:
+#line 899 "ldgram.y"
+    { (yyval.etree) = 0; }
+    break;
+
+  case 246:
+#line 903 "ldgram.y"
+    { (yyval.token) = ONLY_IF_RO; }
+    break;
+
+  case 247:
+#line 904 "ldgram.y"
+    { (yyval.token) = ONLY_IF_RW; }
+    break;
+
+  case 248:
+#line 905 "ldgram.y"
+    { (yyval.token) = SPECIAL; }
+    break;
+
+  case 249:
+#line 906 "ldgram.y"
+    { (yyval.token) = 0; }
+    break;
+
+  case 250:
+#line 909 "ldgram.y"
+    { ldlex_expression(); }
+    break;
+
+  case 251:
+#line 913 "ldgram.y"
+    { ldlex_popstate (); ldlex_script (); }
+    break;
+
+  case 252:
+#line 916 "ldgram.y"
+    {
+			  lang_enter_output_section_statement((yyvsp[-8].name), (yyvsp[-6].etree),
+							      sectype,
+							      (yyvsp[-4].etree), (yyvsp[-3].etree), (yyvsp[-5].etree), (yyvsp[-1].token));
+			}
+    break;
+
+  case 253:
+#line 922 "ldgram.y"
+    { ldlex_popstate (); ldlex_expression (); }
+    break;
+
+  case 254:
+#line 924 "ldgram.y"
+    {
+		  ldlex_popstate ();
+		  lang_leave_output_section_statement ((yyvsp[0].fill), (yyvsp[-3].name), (yyvsp[-1].section_phdr), (yyvsp[-2].name));
+		}
+    break;
+
+  case 255:
+#line 929 "ldgram.y"
+    {}
+    break;
+
+  case 256:
+#line 931 "ldgram.y"
+    { ldlex_expression (); }
+    break;
+
+  case 257:
+#line 933 "ldgram.y"
+    { ldlex_popstate (); ldlex_script (); }
+    break;
+
+  case 258:
+#line 935 "ldgram.y"
+    {
+			  lang_enter_overlay ((yyvsp[-5].etree), (yyvsp[-2].etree));
+			}
+    break;
+
+  case 259:
+#line 940 "ldgram.y"
+    { ldlex_popstate (); ldlex_expression (); }
+    break;
+
+  case 260:
+#line 942 "ldgram.y"
+    {
+			  ldlex_popstate ();
+			  lang_leave_overlay ((yyvsp[-11].etree), (int) (yyvsp[-12].integer),
+					      (yyvsp[0].fill), (yyvsp[-3].name), (yyvsp[-1].section_phdr), (yyvsp[-2].name));
+			}
+    break;
+
+  case 262:
+#line 952 "ldgram.y"
+    { ldlex_expression (); }
+    break;
+
+  case 263:
+#line 954 "ldgram.y"
+    {
+		  ldlex_popstate ();
+		  lang_add_assignment (exp_assop ('=', ".", (yyvsp[0].etree)));
+		}
+    break;
+
+  case 265:
+#line 962 "ldgram.y"
+    { sectype = noload_section; }
+    break;
+
+  case 266:
+#line 963 "ldgram.y"
+    { sectype = dsect_section; }
+    break;
+
+  case 267:
+#line 964 "ldgram.y"
+    { sectype = copy_section; }
+    break;
+
+  case 268:
+#line 965 "ldgram.y"
+    { sectype = info_section; }
+    break;
+
+  case 269:
+#line 966 "ldgram.y"
+    { sectype = overlay_section; }
+    break;
+
+  case 271:
+#line 971 "ldgram.y"
+    { sectype = normal_section; }
+    break;
+
+  case 272:
+#line 972 "ldgram.y"
+    { sectype = normal_section; }
+    break;
+
+  case 273:
+#line 976 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-2].etree); }
+    break;
+
+  case 274:
+#line 977 "ldgram.y"
+    { (yyval.etree) = (etree_type *)NULL;  }
+    break;
+
+  case 275:
+#line 982 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-3].etree); }
+    break;
+
+  case 276:
+#line 984 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-7].etree); }
+    break;
+
+  case 277:
+#line 988 "ldgram.y"
+    { (yyval.etree) = (yyvsp[-1].etree); }
+    break;
+
+  case 278:
+#line 989 "ldgram.y"
+    { (yyval.etree) = (etree_type *) NULL;  }
+    break;
+
+  case 279:
+#line 994 "ldgram.y"
+    { (yyval.integer) = 0; }
+    break;
+
+  case 280:
+#line 996 "ldgram.y"
+    { (yyval.integer) = 1; }
+    break;
+
+  case 281:
+#line 1001 "ldgram.y"
+    { (yyval.name) = (yyvsp[0].name); }
+    break;
+
+  case 282:
+#line 1002 "ldgram.y"
+    { (yyval.name) = DEFAULT_MEMORY_REGION; }
+    break;
+
+  case 283:
+#line 1007 "ldgram.y"
+    {
+		  (yyval.section_phdr) = NULL;
+		}
+    break;
+
+  case 284:
+#line 1011 "ldgram.y"
+    {
+		  struct lang_output_section_phdr_list *n;
+
+		  n = ((struct lang_output_section_phdr_list *)
+		       xmalloc (sizeof *n));
+		  n->name = (yyvsp[0].name);
+		  n->used = FALSE;
+		  n->next = (yyvsp[-2].section_phdr);
+		  (yyval.section_phdr) = n;
+		}
+    break;
+
+  case 286:
+#line 1027 "ldgram.y"
+    {
+			  ldlex_script ();
+			  lang_enter_overlay_section ((yyvsp[0].name));
+			}
+    break;
+
+  case 287:
+#line 1032 "ldgram.y"
+    { ldlex_popstate (); ldlex_expression (); }
+    break;
+
+  case 288:
+#line 1034 "ldgram.y"
+    {
+			  ldlex_popstate ();
+			  lang_leave_overlay_section ((yyvsp[0].fill), (yyvsp[-1].section_phdr));
+			}
+    break;
+
+  case 293:
+#line 1051 "ldgram.y"
+    { ldlex_expression (); }
+    break;
+
+  case 294:
+#line 1052 "ldgram.y"
+    { ldlex_popstate (); }
+    break;
+
+  case 295:
+#line 1054 "ldgram.y"
+    {
+		  lang_new_phdr ((yyvsp[-5].name), (yyvsp[-3].etree), (yyvsp[-2].phdr).filehdr, (yyvsp[-2].phdr).phdrs, (yyvsp[-2].phdr).at,
+				 (yyvsp[-2].phdr).flags);
+		}
+    break;
+
+  case 296:
+#line 1062 "ldgram.y"
+    {
+		  (yyval.etree) = (yyvsp[0].etree);
+
+		  if ((yyvsp[0].etree)->type.node_class == etree_name
+		      && (yyvsp[0].etree)->type.node_code == NAME)
+		    {
+		      const char *s;
+		      unsigned int i;
+		      static const char * const phdr_types[] =
+			{
+			  "PT_NULL", "PT_LOAD", "PT_DYNAMIC",
+			  "PT_INTERP", "PT_NOTE", "PT_SHLIB",
+			  "PT_PHDR", "PT_TLS"
+			};
+
+		      s = (yyvsp[0].etree)->name.name;
+		      for (i = 0;
+			   i < sizeof phdr_types / sizeof phdr_types[0];
+			   i++)
+			if (strcmp (s, phdr_types[i]) == 0)
+			  {
+			    (yyval.etree) = exp_intop (i);
+			    break;
+			  }
+		      if (i == sizeof phdr_types / sizeof phdr_types[0])
+			{
+			  if (strcmp (s, "PT_GNU_EH_FRAME") == 0)
+			    (yyval.etree) = exp_intop (0x6474e550);
+			  else if (strcmp (s, "PT_GNU_STACK") == 0)
+			    (yyval.etree) = exp_intop (0x6474e551);
+			  else
+			    {
+			      einfo (_("\
+%X%P:%S: unknown phdr type `%s' (try integer literal)\n"),
+				     s);
+			      (yyval.etree) = exp_intop (0);
+			    }
+			}
+		    }
+		}
+    break;
+
+  case 297:
+#line 1106 "ldgram.y"
+    {
+		  memset (&(yyval.phdr), 0, sizeof (struct phdr_info));
+		}
+    break;
+
+  case 298:
+#line 1110 "ldgram.y"
+    {
+		  (yyval.phdr) = (yyvsp[0].phdr);
+		  if (strcmp ((yyvsp[-2].name), "FILEHDR") == 0 && (yyvsp[-1].etree) == NULL)
+		    (yyval.phdr).filehdr = TRUE;
+		  else if (strcmp ((yyvsp[-2].name), "PHDRS") == 0 && (yyvsp[-1].etree) == NULL)
+		    (yyval.phdr).phdrs = TRUE;
+		  else if (strcmp ((yyvsp[-2].name), "FLAGS") == 0 && (yyvsp[-1].etree) != NULL)
+		    (yyval.phdr).flags = (yyvsp[-1].etree);
+		  else
+		    einfo (_("%X%P:%S: PHDRS syntax error at `%s'\n"), (yyvsp[-2].name));
+		}
+    break;
+
+  case 299:
+#line 1122 "ldgram.y"
+    {
+		  (yyval.phdr) = (yyvsp[0].phdr);
+		  (yyval.phdr).at = (yyvsp[-2].etree);
+		}
+    break;
+
+  case 300:
+#line 1130 "ldgram.y"
+    {
+		  (yyval.etree) = NULL;
+		}
+    break;
+
+  case 301:
+#line 1134 "ldgram.y"
+    {
+		  (yyval.etree) = (yyvsp[-1].etree);
+		}
+    break;
+
+  case 302:
+#line 1142 "ldgram.y"
+    {
+		  ldlex_version_file ();
+		  PUSH_ERROR (_("VERSION script"));
+		}
+    break;
+
+  case 303:
+#line 1147 "ldgram.y"
+    {
+		  ldlex_popstate ();
+		  POP_ERROR ();
+		}
+    break;
+
+  case 304:
+#line 1156 "ldgram.y"
+    {
+		  ldlex_version_script ();
+		}
+    break;
+
+  case 305:
+#line 1160 "ldgram.y"
+    {
+		  ldlex_popstate ();
+		}
+    break;
+
+  case 308:
+#line 1172 "ldgram.y"
+    {
+		  lang_register_vers_node (NULL, (yyvsp[-2].versnode), NULL);
+		}
+    break;
+
+  case 309:
+#line 1176 "ldgram.y"
+    {
+		  lang_register_vers_node ((yyvsp[-4].name), (yyvsp[-2].versnode), NULL);
+		}
+    break;
+
+  case 310:
+#line 1180 "ldgram.y"
+    {
+		  lang_register_vers_node ((yyvsp[-5].name), (yyvsp[-3].versnode), (yyvsp[-1].deflist));
+		}
+    break;
+
+  case 311:
+#line 1187 "ldgram.y"
+    {
+		  (yyval.deflist) = lang_add_vers_depend (NULL, (yyvsp[0].name));
+		}
+    break;
+
+  case 312:
+#line 1191 "ldgram.y"
+    {
+		  (yyval.deflist) = lang_add_vers_depend ((yyvsp[-1].deflist), (yyvsp[0].name));
+		}
+    break;
+
+  case 313:
+#line 1198 "ldgram.y"
+    {
+		  (yyval.versnode) = lang_new_vers_node (NULL, NULL);
+		}
+    break;
+
+  case 314:
+#line 1202 "ldgram.y"
+    {
+		  (yyval.versnode) = lang_new_vers_node ((yyvsp[-1].versyms), NULL);
+		}
+    break;
+
+  case 315:
+#line 1206 "ldgram.y"
+    {
+		  (yyval.versnode) = lang_new_vers_node ((yyvsp[-1].versyms), NULL);
+		}
+    break;
+
+  case 316:
+#line 1210 "ldgram.y"
+    {
+		  (yyval.versnode) = lang_new_vers_node (NULL, (yyvsp[-1].versyms));
+		}
+    break;
+
+  case 317:
+#line 1214 "ldgram.y"
+    {
+		  (yyval.versnode) = lang_new_vers_node ((yyvsp[-5].versyms), (yyvsp[-1].versyms));
+		}
+    break;
+
+  case 318:
+#line 1221 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern (NULL, (yyvsp[0].name), ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 319:
+#line 1225 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern (NULL, (yyvsp[0].name), ldgram_vers_current_lang, TRUE);
+		}
+    break;
+
+  case 320:
+#line 1229 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), (yyvsp[0].name), ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 321:
+#line 1233 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), (yyvsp[0].name), ldgram_vers_current_lang, TRUE);
+		}
+    break;
+
+  case 322:
+#line 1237 "ldgram.y"
+    {
+			  (yyval.name) = ldgram_vers_current_lang;
+			  ldgram_vers_current_lang = (yyvsp[-1].name);
+			}
+    break;
+
+  case 323:
+#line 1242 "ldgram.y"
+    {
+			  struct bfd_elf_version_expr *pat;
+			  for (pat = (yyvsp[-2].versyms); pat->next != NULL; pat = pat->next);
+			  pat->next = (yyvsp[-8].versyms);
+			  (yyval.versyms) = (yyvsp[-2].versyms);
+			  ldgram_vers_current_lang = (yyvsp[-3].name);
+			}
+    break;
+
+  case 324:
+#line 1250 "ldgram.y"
+    {
+			  (yyval.name) = ldgram_vers_current_lang;
+			  ldgram_vers_current_lang = (yyvsp[-1].name);
+			}
+    break;
+
+  case 325:
+#line 1255 "ldgram.y"
+    {
+			  (yyval.versyms) = (yyvsp[-2].versyms);
+			  ldgram_vers_current_lang = (yyvsp[-3].name);
+			}
+    break;
+
+  case 326:
+#line 1260 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern (NULL, "global", ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 327:
+#line 1264 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), "global", ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 328:
+#line 1268 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern (NULL, "local", ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 329:
+#line 1272 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), "local", ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 330:
+#line 1276 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern (NULL, "extern", ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+  case 331:
+#line 1280 "ldgram.y"
+    {
+		  (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), "extern", ldgram_vers_current_lang, FALSE);
+		}
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 3882 "ldgram.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  int yytype = YYTRANSLATE (yychar);
+	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+	  YYSIZE_T yysize = yysize0;
+	  YYSIZE_T yysize1;
+	  int yysize_overflow = 0;
+	  char *yymsg = 0;
+#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+	  int yyx;
+
+#if 0
+	  /* This is so xgettext sees the translatable formats that are
+	     constructed on the fly.  */
+	  YY_("syntax error, unexpected %s");
+	  YY_("syntax error, unexpected %s, expecting %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+	  char *yyfmt;
+	  char const *yyf;
+	  static char const yyunexpected[] = "syntax error, unexpected %s";
+	  static char const yyexpecting[] = ", expecting %s";
+	  static char const yyor[] = " or %s";
+	  char yyformat[sizeof yyunexpected
+			+ sizeof yyexpecting - 1
+			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+			   * (sizeof yyor - 1))];
+	  char const *yyprefix = yyexpecting;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 1;
+
+	  yyarg[0] = yytname[yytype];
+	  yyfmt = yystpcpy (yyformat, yyunexpected);
+
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+		  {
+		    yycount = 1;
+		    yysize = yysize0;
+		    yyformat[sizeof yyunexpected - 1] = '\0';
+		    break;
+		  }
+		yyarg[yycount++] = yytname[yyx];
+		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+		yysize_overflow |= yysize1 < yysize;
+		yysize = yysize1;
+		yyfmt = yystpcpy (yyfmt, yyprefix);
+		yyprefix = yyor;
+	      }
+
+	  yyf = YY_(yyformat);
+	  yysize1 = yysize + yystrlen (yyf);
+	  yysize_overflow |= yysize1 < yysize;
+	  yysize = yysize1;
+
+	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+	    yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg)
+	    {
+	      /* Avoid sprintf, as that infringes on the user's name space.
+		 Don't have undefined behavior even if the translation
+		 produced a string with the wrong number of "%s"s.  */
+	      char *yyp = yymsg;
+	      int yyi = 0;
+	      while ((*yyp = *yyf))
+		{
+		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		    {
+		      yyp += yytnamerr (yyp, yyarg[yyi++]);
+		      yyf += 2;
+		    }
+		  else
+		    {
+		      yyp++;
+		      yyf++;
+		    }
+		}
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
+	    }
+	  else
+	    {
+	      yyerror (YY_("syntax error"));
+	      goto yyexhaustedlab;
+	    }
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+        }
+      else
+	{
+	  yydestruct ("Error: discarding", yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
+}
+
+
+#line 1290 "ldgram.y"
+
+void
+yyerror(arg)
+     const char *arg;
+{
+  if (ldfile_assumed_script)
+    einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
+	   ldfile_input_filename);
+  if (error_index > 0 && error_index < ERROR_NAME_MAX)
+     einfo ("%P%F:%S: %s in %s\n", arg, error_names[error_index-1]);
+  else
+     einfo ("%P%F:%S: %s\n", arg);
+}
+

Added: branches/binutils/package/ld/ldgram.h
===================================================================
--- branches/binutils/package/ld/ldgram.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ldgram.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,307 @@
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   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 2, 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; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     INT = 258,
+     NAME = 259,
+     LNAME = 260,
+     OREQ = 261,
+     ANDEQ = 262,
+     RSHIFTEQ = 263,
+     LSHIFTEQ = 264,
+     DIVEQ = 265,
+     MULTEQ = 266,
+     MINUSEQ = 267,
+     PLUSEQ = 268,
+     OROR = 269,
+     ANDAND = 270,
+     NE = 271,
+     EQ = 272,
+     GE = 273,
+     LE = 274,
+     RSHIFT = 275,
+     LSHIFT = 276,
+     UNARY = 277,
+     END = 278,
+     ALIGN_K = 279,
+     BLOCK = 280,
+     BIND = 281,
+     QUAD = 282,
+     SQUAD = 283,
+     LONG = 284,
+     SHORT = 285,
+     BYTE = 286,
+     SECTIONS = 287,
+     PHDRS = 288,
+     DATA_SEGMENT_ALIGN = 289,
+     DATA_SEGMENT_RELRO_END = 290,
+     DATA_SEGMENT_END = 291,
+     SORT_BY_NAME = 292,
+     SORT_BY_ALIGNMENT = 293,
+     SIZEOF_HEADERS = 294,
+     OUTPUT_FORMAT = 295,
+     FORCE_COMMON_ALLOCATION = 296,
+     OUTPUT_ARCH = 297,
+     INHIBIT_COMMON_ALLOCATION = 298,
+     SEGMENT_START = 299,
+     INCLUDE = 300,
+     MEMORY = 301,
+     DEFSYMEND = 302,
+     NOLOAD = 303,
+     DSECT = 304,
+     COPY = 305,
+     INFO = 306,
+     OVERLAY = 307,
+     DEFINED = 308,
+     TARGET_K = 309,
+     SEARCH_DIR = 310,
+     MAP = 311,
+     ENTRY = 312,
+     NEXT = 313,
+     SIZEOF = 314,
+     ADDR = 315,
+     LOADADDR = 316,
+     MAX_K = 317,
+     MIN_K = 318,
+     STARTUP = 319,
+     HLL = 320,
+     SYSLIB = 321,
+     FLOAT = 322,
+     NOFLOAT = 323,
+     NOCROSSREFS = 324,
+     ORIGIN = 325,
+     FILL = 326,
+     LENGTH = 327,
+     CREATE_OBJECT_SYMBOLS = 328,
+     INPUT = 329,
+     GROUP = 330,
+     OUTPUT = 331,
+     CONSTRUCTORS = 332,
+     ALIGNMOD = 333,
+     AT = 334,
+     SUBALIGN = 335,
+     PROVIDE = 336,
+     PROVIDE_HIDDEN = 337,
+     AS_NEEDED = 338,
+     CHIP = 339,
+     LIST = 340,
+     SECT = 341,
+     ABSOLUTE = 342,
+     LOAD = 343,
+     NEWLINE = 344,
+     ENDWORD = 345,
+     ORDER = 346,
+     NAMEWORD = 347,
+     ASSERT_K = 348,
+     FORMAT = 349,
+     PUBLIC = 350,
+     BASE = 351,
+     ALIAS = 352,
+     TRUNCATE = 353,
+     REL = 354,
+     INPUT_SCRIPT = 355,
+     INPUT_MRI_SCRIPT = 356,
+     INPUT_DEFSYM = 357,
+     CASE = 358,
+     EXTERN = 359,
+     START = 360,
+     VERS_TAG = 361,
+     VERS_IDENTIFIER = 362,
+     GLOBAL = 363,
+     LOCAL = 364,
+     VERSIONK = 365,
+     INPUT_VERSION_SCRIPT = 366,
+     KEEP = 367,
+     ONLY_IF_RO = 368,
+     ONLY_IF_RW = 369,
+     SPECIAL = 370,
+     EXCLUDE_FILE = 371
+   };
+#endif
+/* Tokens.  */
+#define INT 258
+#define NAME 259
+#define LNAME 260
+#define OREQ 261
+#define ANDEQ 262
+#define RSHIFTEQ 263
+#define LSHIFTEQ 264
+#define DIVEQ 265
+#define MULTEQ 266
+#define MINUSEQ 267
+#define PLUSEQ 268
+#define OROR 269
+#define ANDAND 270
+#define NE 271
+#define EQ 272
+#define GE 273
+#define LE 274
+#define RSHIFT 275
+#define LSHIFT 276
+#define UNARY 277
+#define END 278
+#define ALIGN_K 279
+#define BLOCK 280
+#define BIND 281
+#define QUAD 282
+#define SQUAD 283
+#define LONG 284
+#define SHORT 285
+#define BYTE 286
+#define SECTIONS 287
+#define PHDRS 288
+#define DATA_SEGMENT_ALIGN 289
+#define DATA_SEGMENT_RELRO_END 290
+#define DATA_SEGMENT_END 291
+#define SORT_BY_NAME 292
+#define SORT_BY_ALIGNMENT 293
+#define SIZEOF_HEADERS 294
+#define OUTPUT_FORMAT 295
+#define FORCE_COMMON_ALLOCATION 296
+#define OUTPUT_ARCH 297
+#define INHIBIT_COMMON_ALLOCATION 298
+#define SEGMENT_START 299
+#define INCLUDE 300
+#define MEMORY 301
+#define DEFSYMEND 302
+#define NOLOAD 303
+#define DSECT 304
+#define COPY 305
+#define INFO 306
+#define OVERLAY 307
+#define DEFINED 308
+#define TARGET_K 309
+#define SEARCH_DIR 310
+#define MAP 311
+#define ENTRY 312
+#define NEXT 313
+#define SIZEOF 314
+#define ADDR 315
+#define LOADADDR 316
+#define MAX_K 317
+#define MIN_K 318
+#define STARTUP 319
+#define HLL 320
+#define SYSLIB 321
+#define FLOAT 322
+#define NOFLOAT 323
+#define NOCROSSREFS 324
+#define ORIGIN 325
+#define FILL 326
+#define LENGTH 327
+#define CREATE_OBJECT_SYMBOLS 328
+#define INPUT 329
+#define GROUP 330
+#define OUTPUT 331
+#define CONSTRUCTORS 332
+#define ALIGNMOD 333
+#define AT 334
+#define SUBALIGN 335
+#define PROVIDE 336
+#define PROVIDE_HIDDEN 337
+#define AS_NEEDED 338
+#define CHIP 339
+#define LIST 340
+#define SECT 341
+#define ABSOLUTE 342
+#define LOAD 343
+#define NEWLINE 344
+#define ENDWORD 345
+#define ORDER 346
+#define NAMEWORD 347
+#define ASSERT_K 348
+#define FORMAT 349
+#define PUBLIC 350
+#define BASE 351
+#define ALIAS 352
+#define TRUNCATE 353
+#define REL 354
+#define INPUT_SCRIPT 355
+#define INPUT_MRI_SCRIPT 356
+#define INPUT_DEFSYM 357
+#define CASE 358
+#define EXTERN 359
+#define START 360
+#define VERS_TAG 361
+#define VERS_IDENTIFIER 362
+#define GLOBAL 363
+#define LOCAL 364
+#define VERSIONK 365
+#define INPUT_VERSION_SCRIPT 366
+#define KEEP 367
+#define ONLY_IF_RO 368
+#define ONLY_IF_RW 369
+#define SPECIAL 370
+#define EXCLUDE_FILE 371
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 65 "ldgram.y"
+typedef union YYSTYPE {
+  bfd_vma integer;
+  struct big_int
+    {
+      bfd_vma integer;
+      char *str;
+    } bigint;
+  fill_type *fill;
+  char *name;
+  const char *cname;
+  struct wildcard_spec wildcard;
+  struct wildcard_list *wildcard_list;
+  struct name_list *name_list;
+  int token;
+  union etree_union *etree;
+  struct phdr_info
+    {
+      bfd_boolean filehdr;
+      bfd_boolean phdrs;
+      union etree_union *at;
+      union etree_union *flags;
+    } phdr;
+  struct lang_nocrossref *nocrossref;
+  struct lang_output_section_phdr_list *section_phdr;
+  struct bfd_elf_version_deps *deflist;
+  struct bfd_elf_version_expr *versyms;
+  struct bfd_elf_version_tree *versnode;
+} YYSTYPE;
+/* Line 1447 of yacc.c.  */
+#line 299 "ldgram.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
+
+

Modified: branches/binutils/package/ld/ldlang.c
===================================================================
--- branches/binutils/package/ld/ldlang.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ldlang.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -870,26 +870,26 @@
   return new_afile (name, file_type, target, TRUE);
 }
 
-struct output_statement_hash_entry
+struct out_section_hash_entry
 {
   struct bfd_hash_entry root;
-  lang_output_section_statement_type os;
+  lang_statement_union_type s;
 };
 
 /* The hash table.  */
 
-static struct bfd_hash_table output_statement_table;
+static struct bfd_hash_table output_section_statement_table;
 
 /* Support routines for the hash table used by lang_output_section_find,
    initialize the table, fill in an entry and remove the table.  */
 
 static struct bfd_hash_entry *
-output_statement_newfunc (struct bfd_hash_entry *entry, 
-			  struct bfd_hash_table *table,
-			  const char *string)
+output_section_statement_newfunc (struct bfd_hash_entry *entry, 
+				  struct bfd_hash_table *table,
+				  const char *string)
 {
   lang_output_section_statement_type **nextp;
-  struct output_statement_hash_entry *ret;
+  struct out_section_hash_entry *ret;
 
   if (entry == NULL)
     {
@@ -902,49 +902,48 @@
   if (entry == NULL)
     return entry;
 
-  ret = (struct output_statement_hash_entry *) entry;
-  memset (&ret->os, 0, sizeof (ret->os));
-  ret->os.header.type = lang_output_section_statement_enum;
-  ret->os.subsection_alignment = -1;
-  ret->os.section_alignment = -1;
-  ret->os.block_value = 1;
-  lang_list_init (&ret->os.children);
-  lang_statement_append (stat_ptr,
-			 (lang_statement_union_type *) &ret->os,
-			 &ret->os.header.next);
+  ret = (struct out_section_hash_entry *) entry;
+  memset (&ret->s, 0, sizeof (ret->s));
+  ret->s.header.type = lang_output_section_statement_enum;
+  ret->s.output_section_statement.subsection_alignment = -1;
+  ret->s.output_section_statement.section_alignment = -1;
+  ret->s.output_section_statement.block_value = 1;
+  lang_list_init (&ret->s.output_section_statement.children);
+  lang_statement_append (stat_ptr, &ret->s, &ret->s.header.next);
 
   /* For every output section statement added to the list, except the
      first one, lang_output_section_statement.tail points to the "next"
      field of the last element of the list.  */
   if (lang_output_section_statement.head != NULL)
-    ret->os.prev = (lang_output_section_statement_type *)
-      ((char *) lang_output_section_statement.tail
-       - offsetof (lang_output_section_statement_type, next));
+    ret->s.output_section_statement.prev
+      = ((lang_output_section_statement_type *)
+	 ((char *) lang_output_section_statement.tail
+	  - offsetof (lang_output_section_statement_type, next)));
 
   /* GCC's strict aliasing rules prevent us from just casting the
      address, so we store the pointer in a variable and cast that
      instead.  */
-  nextp = &ret->os.next;
+  nextp = &ret->s.output_section_statement.next;
   lang_statement_append (&lang_output_section_statement,
-			 (lang_statement_union_type *) &ret->os,
+			 &ret->s,
 			 (lang_statement_union_type **) nextp);
   return &ret->root;
 }
 
 static void
-output_statement_table_init (void)
+output_section_statement_table_init (void)
 {
-  if (!bfd_hash_table_init_n (&output_statement_table,
-			      output_statement_newfunc,
-			      sizeof (struct output_statement_hash_entry),
+  if (!bfd_hash_table_init_n (&output_section_statement_table,
+			      output_section_statement_newfunc,
+			      sizeof (struct out_section_hash_entry),
 			      61))
     einfo (_("%P%F: can not create hash table: %E\n"));
 }
 
 static void
-output_statement_table_free (void)
+output_section_statement_table_free (void)
 {
-  bfd_hash_table_free (&output_statement_table);
+  bfd_hash_table_free (&output_section_statement_table);
 }
 
 /* Build enough state so that the parser can build its tree.  */
@@ -956,7 +955,7 @@
 
   stat_ptr = &statement_list;
 
-  output_statement_table_init ();
+  output_section_statement_table_init ();
 
   lang_list_init (stat_ptr);
 
@@ -986,7 +985,7 @@
 void
 lang_finish (void)
 {
-  output_statement_table_free ();
+  output_section_statement_table_free ();
 }
 
 /*----------------------------------------------------------------------
@@ -1073,24 +1072,25 @@
 lang_output_section_statement_type *
 lang_output_section_find (const char *const name)
 {
-  struct output_statement_hash_entry *entry;
+  struct out_section_hash_entry *entry;
   unsigned long hash;
 
-  entry = ((struct output_statement_hash_entry *)
-	   bfd_hash_lookup (&output_statement_table, name, FALSE, FALSE));
+  entry = ((struct out_section_hash_entry *)
+	   bfd_hash_lookup (&output_section_statement_table, name,
+			    FALSE, FALSE));
   if (entry == NULL)
     return NULL;
 
   hash = entry->root.hash;
   do
     {
-      if (entry->os.constraint != -1)
-	return &entry->os;
-      entry = (struct output_statement_hash_entry *) entry->root.next;
+      if (entry->s.output_section_statement.constraint != -1)
+	return &entry->s.output_section_statement;
+      entry = (struct out_section_hash_entry *) entry->root.next;
     }
   while (entry != NULL
 	 && entry->root.hash == hash
-	 && strcmp (name, entry->os.name) == 0);
+	 && strcmp (name, entry->s.output_section_statement.name) == 0);
 
   return NULL;
 }
@@ -1098,39 +1098,43 @@
 static lang_output_section_statement_type *
 lang_output_section_statement_lookup_1 (const char *const name, int constraint)
 {
-  struct output_statement_hash_entry *entry;
-  struct output_statement_hash_entry *last_ent;
+  struct out_section_hash_entry *entry;
+  struct out_section_hash_entry *last_ent;
   unsigned long hash;
 
-  entry = ((struct output_statement_hash_entry *)
-	   bfd_hash_lookup (&output_statement_table, name, TRUE, FALSE));
+  entry = ((struct out_section_hash_entry *)
+	   bfd_hash_lookup (&output_section_statement_table, name,
+			    TRUE, FALSE));
   if (entry == NULL)
     {
       einfo (_("%P%F: failed creating section `%s': %E\n"), name);
       return NULL;
     }
 
-  if (entry->os.name != NULL)
+  if (entry->s.output_section_statement.name != NULL)
     {
       /* We have a section of this name, but it might not have the correct
 	 constraint.  */
       hash = entry->root.hash;
       do
 	{
-	  if (entry->os.constraint != -1
+	  if (entry->s.output_section_statement.constraint != -1
 	      && (constraint == 0
-		  || (constraint == entry->os.constraint
+		  || (constraint == entry->s.output_section_statement.constraint
 		      && constraint != SPECIAL)))
-	    return &entry->os;
+	    return &entry->s.output_section_statement;
 	  last_ent = entry;
-	  entry = (struct output_statement_hash_entry *) entry->root.next;
+	  entry = (struct out_section_hash_entry *) entry->root.next;
 	}
       while (entry != NULL
 	     && entry->root.hash == hash
-	     && strcmp (name, entry->os.name) == 0);
+	     && strcmp (name, entry->s.output_section_statement.name) == 0);
 
-      entry = ((struct output_statement_hash_entry *)
-	       output_statement_newfunc (NULL, &output_statement_table, name));
+      entry
+	= ((struct out_section_hash_entry *)
+	   output_section_statement_newfunc (NULL,
+					     &output_section_statement_table,
+					     name));
       if (entry == NULL)
 	{
 	  einfo (_("%P%F: failed creating section `%s': %E\n"), name);
@@ -1140,9 +1144,9 @@
       last_ent->root.next = &entry->root;
     }
 
-  entry->os.name = name;
-  entry->os.constraint = constraint;
-  return &entry->os;
+  entry->s.output_section_statement.name = name;
+  entry->s.output_section_statement.constraint = constraint;
+  return &entry->s.output_section_statement;
 }
 
 lang_output_section_statement_type *

Modified: branches/binutils/package/ld/ldlang.h
===================================================================
--- branches/binutils/package/ld/ldlang.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ldlang.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -231,7 +231,6 @@
 
   bfd *the_bfd;
 
-  bfd_boolean closed;
   file_ptr passive_position;
 
   /* Symbol table of the file.  */
@@ -245,40 +244,42 @@
   /* Point to the next file, but skips archive contents.  */
   union lang_statement_union *next_real_file;
 
-  bfd_boolean is_archive;
+  const char *target;
 
+  unsigned int closed : 1;
+  unsigned int is_archive : 1;
+
   /* 1 means search a set of directories for this file.  */
-  bfd_boolean search_dirs_flag;
+  unsigned int search_dirs_flag : 1;
 
   /* 1 means this was found in a search directory marked as sysrooted,
      if search_dirs_flag is false, otherwise, that it should be
      searched in ld_sysroot before any other location, as long as it
      starts with a slash.  */
-  bfd_boolean sysrooted;
+  unsigned int sysrooted : 1;
 
   /* 1 means this is base file of incremental load.
      Do not load this file's text or data.
      Also default text_start to after this file's bss.  */
-  bfd_boolean just_syms_flag;
+  unsigned int just_syms_flag : 1;
 
   /* Whether to search for this entry as a dynamic archive.  */
-  bfd_boolean dynamic;
+  unsigned int dynamic : 1;
 
   /* Whether DT_NEEDED tags should be added for dynamic libraries in
      DT_NEEDED tags from this entry.  */
-  bfd_boolean add_needed;
+  unsigned int add_needed : 1;
 
   /* Whether this entry should cause a DT_NEEDED tag only when
      satisfying references from regular files, or always.  */
-  bfd_boolean as_needed;
+  unsigned int as_needed : 1;
 
   /* Whether to include the entire contents of an archive.  */
-  bfd_boolean whole_archive;
+  unsigned int whole_archive : 1;
 
-  bfd_boolean loaded;
+  unsigned int loaded : 1;
 
-  const char *target;
-  bfd_boolean real;
+  unsigned int real : 1;
 } lang_input_statement_type;
 
 typedef struct

Added: branches/binutils/package/ld/ldlex.c
===================================================================
--- branches/binutils/package/ld/ldlex.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ldlex.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3833 @@
+/* A lexical scanner generated by flex */
+
+/* Scanner skeleton version:
+ * $Header: /cvs/src/src/ld/Attic/ldlex.c,v 1.1.16.1 2006/04/16 18:36:47 drow Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+#include <errno.h>
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart( yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+
+extern int yyleng;
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		yyless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the yyless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		*yy_cp = yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, yytext_ptr )
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int yy_size_t;
+
+
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE yy_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER yy_current_buffer
+
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+
+
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 1;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart YY_PROTO(( FILE *input_file ));
+
+void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void yy_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
+void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+
+YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
+YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+
+static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void yy_flex_free YY_PROTO(( void * ));
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! yy_current_buffer ) \
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+	yy_current_buffer->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+typedef int yy_state_type;
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state YY_PROTO(( void ));
+static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
+static int yy_get_next_buffer YY_PROTO(( void ));
+static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	yytext_ptr = yy_bp; \
+	yyleng = (int) (yy_cp - yy_bp); \
+	yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
+	yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 182
+#define YY_END_OF_BUFFER 183
+static yyconst short int yy_accept[1301] =
+    {   0,
+        0,    0,  162,  162,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  183,  182,
+      180,  165,  164,   32,  180,  162,   38,   29,   44,   43,
+       34,   35,   28,   36,  162,   37,    8,    8,   45,   46,
+       39,   40,   27,   33,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,   10,    9,  162,  110,  108,  162,   42,
+       30,   41,   31,  181,  165,   32,  181,  160,   38,   29,
+       44,   43,   34,   35,   28,   36,  160,   37,    8,    8,
+       45,   46,   39,   40,   27,   33,  160,  160,  160,  160,
+
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,   10,    9,  160,  160,   42,   30,   41,   31,  160,
+        8,    8,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      110,  108,    4,    3,    2,    4,    5,  121,  120,  159,
+       34,   35,   28,   36,  159,   37,    8,    8,   45,   46,
+       40,   33,  159,  159,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  159,   10,    9,  159,  159,  159,  159,
+      159,  159,  159,  159,  159,  159,  159,   31,  179,  177,
+      178,  180,  172,  171,  166,  173,  174,  170,  170,  170,
+
+      170,  175,  176,  165,   15,    0,  163,  162,    8,   26,
+       24,   22,   20,   21,    1,   23,    8,    8,  162,   18,
+       17,   14,   16,   19,  162,  162,  162,  162,  114,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,   25,   13,  160,    6,   22,   20,
+       21,    0,    1,   23,    8,    0,    7,    7,    8,    7,
+       14,  160,    7,    7,    7,  160,  160,  114,    7,  160,
+
+      160,    7,  160,  160,  160,    7,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,    7,  160,    8,    8,    0,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,    4,    4,  120,  120,  159,    6,  122,   22,   23,
+      123,  159,    7,    7,    7,  159,  159,  159,    7,  159,
+        7,    7,  159,  159,  159,  159,  159,  159,  159,  159,
+        7,  159,  159,  159,    7,  159,    7,    7,  159,  159,
+
+      159,  159,  159,  159,  159,  159,  179,  178,  171,  170,
+        0,  170,  170,  170,   11,   12,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,   86,  162,  162,  162,
+      162,  162,  162,  162,  162,   68,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  111,  109,  162,    8,  161,    8,  160,    7,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,   59,   60,  160,  160,  160,
+
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+       86,  160,  160,  160,  160,   68,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  111,  109,    4,    8,  159,  159,  159,  159,  159,
+      124,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  159,  159,  159,  141,  159,  159,  159,
+      159,  159,  159,  159,  159,  159,  159,  170,  170,  170,
+      162,   57,  162,  162,   51,  162,   93,  162,  102,  162,
+      162,  162,  162,  162,  162,  162,   82,  162,  162,  162,
+
+      162,  103,  162,  162,  118,  162,  162,   91,  162,   64,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,   89,
+      162,  162,  162,  162,  162,   99,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  160,   57,  160,  160,  160,
+       51,  160,  102,  160,  160,  160,  160,  160,  103,  118,
+      160,  160,   64,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,   93,  160,  160,  160,  160,
+       82,  160,  160,  160,  160,  160,   91,  160,  160,  160,
+      160,  160,   89,  160,  160,  160,   99,  160,  160,  160,
+      160,  160,  159,  159,  159,  128,  136,  127,  159,  159,
+
+      138,  131,  134,  159,  159,  139,  159,  159,  159,  159,
+      159,  145,  153,  144,  159,  159,  156,  148,  151,  159,
+      159,  157,  159,  159,  170,  170,  170,  162,   53,  162,
+       50,  162,  162,  162,  162,  101,   62,  162,  162,   88,
+      162,   74,  162,  162,   73,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  113,  162,  162,  162,  162,
+       92,  162,  162,  162,   90,  162,  162,  162,  162,  162,
+      162,  162,  160,   53,  160,  160,   50,  160,  160,  101,
+      160,   74,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,   62,  160,
+
+       88,  160,  160,  160,   73,  160,  160,  160,  160,  113,
+      160,  160,   92,  160,   90,  160,  160,  160,  160,  159,
+      129,  126,  159,  159,  138,  138,  133,  159,  137,  159,
+      159,  146,  143,  159,  159,  156,  156,  150,  159,  155,
+      159,  170,  170,  168,  162,  162,  162,  162,  162,  162,
+      162,   63,  162,  162,  162,   52,  162,   47,  162,  162,
+      100,  162,   48,   72,  162,  162,  162,  162,  162,   69,
+      162,  162,  162,  162,   87,   70,  162,  162,  162,  160,
+       61,  160,  160,  160,  160,   52,  160,  160,  100,  160,
+       48,  160,  160,  160,   69,  160,  160,  160,  160,  160,
+
+      160,   63,  160,  160,  160,   47,  160,   72,  160,  160,
+      160,  160,  160,   87,   70,  160,  159,  159,   63,  135,
+      132,  159,  159,  159,  154,  152,  149,  159,  169,  167,
+      162,  162,  162,  162,  162,   76,  162,  162,  112,  162,
+      162,  162,   94,  162,  162,   96,  116,  162,  162,  162,
+      162,  162,  107,   83,  162,   49,  162,  162,  160,  160,
+      160,   76,  160,  160,  160,  160,  104,  116,  160,  160,
+      107,  160,  160,  160,  160,  160,  160,  112,  160,   94,
+      160,   96,  160,  160,  160,   83,   49,  159,  159,  159,
+      159,  159,  159,  140,  162,  162,  162,  162,  162,  162,
+
+      162,   58,  162,  162,  162,  162,  162,  162,   81,  162,
+      162,  162,  115,  158,  162,  140,  160,  160,  160,   58,
+      160,  160,  160,  160,  160,  115,  158,  160,  160,  160,
+      160,  160,  160,  160,  160,   81,  160,  140,  125,  130,
+      158,  142,  147,   75,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,   75,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  162,
+      162,  162,  162,  162,  162,  162,  105,  106,  162,  162,
+      162,   71,  162,  162,  162,  162,  162,  160,  160,  160,
+
+      105,  106,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  160,   71,  160,  160,  162,  162,  162,  162,  162,
+      162,   95,   85,  162,  162,  162,  162,  162,  162,  162,
+      160,  160,   95,  160,  160,  160,  160,  160,  160,  160,
+      160,   85,  160,  160,  160,   78,  162,  162,  119,  162,
+      162,  162,  162,  162,  162,  162,   97,  162,  160,  119,
+      160,  160,  160,  160,   78,  160,  160,  160,  160,  160,
+       97,  162,  162,  162,  162,   84,  162,   67,  162,  162,
+      162,  160,  160,   67,  160,  160,  160,  160,  160,   84,
+      160,  162,  162,  162,  162,  162,  162,  117,   66,  162,
+
+       65,  160,  160,  160,  117,   66,   65,  160,  160,  160,
+      160,  162,  162,  162,  162,  162,  162,  162,  160,  160,
+      160,  160,  160,  160,  160,  162,  162,   56,  162,  162,
+      162,  162,  160,   56,  160,  160,  160,  160,  160,  162,
+      162,  162,  162,  162,   98,  160,  160,  160,  160,  160,
+       98,  162,   54,  162,  162,  162,   54,  160,  160,  160,
+      160,  162,  162,  162,  162,  160,  160,  160,  160,  162,
+      162,  162,  162,  160,  160,  160,  160,   77,  162,  162,
+      162,  160,   77,  160,  160,   55,  162,  162,   55,  160,
+      160,   79,  162,   79,  160,  162,  160,   80,   80,    0
+
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    4,    5,    6,    7,    8,    9,    1,   10,
+       11,   12,   13,   14,   15,   16,   17,   18,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   20,   21,   22,
+       23,   24,   25,    1,   26,   27,   28,   29,   30,   31,
+       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+       42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
+       52,   53,   54,   55,   56,    1,   57,   58,   59,   60,
+
+       61,   62,   63,   64,   65,   16,   66,   67,   68,   69,
+       70,   71,   16,   72,   73,   74,   75,   16,   16,   76,
+       16,   77,   78,   79,   80,   81,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst int yy_meta[82] =
+    {   0,
+        1,    1,    2,    3,    1,    1,    4,    1,    1,    1,
+        1,    5,    6,    7,    8,    9,   10,   11,   11,    8,
+        1,    1,    7,    1,    5,   11,   11,   11,   11,   11,
+       11,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    8,    4,    8,    3,    9,   11,   11,   11,   11,
+       11,   11,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    1,    1,    1,
+       10
+    } ;
+
+static yyconst short int yy_base[1323] =
+    {   0,
+        0,    0,    0,    0,   81,    0,  156,    0,  226,  306,
+      386,    0,  164,  174,  467,  548,  629,  710, 2217, 2218,
+     2218, 2214, 2218, 2192, 2209,  774, 2218,  155, 2218, 2218,
+     2190, 2189,    0, 2188,    0,  156,  304,  235,    0, 2218,
+      149, 2187,  181,    0,  230,  172,  159,  181,  171,  221,
+     2166, 2171, 2168, 2176,  226,  139,  230,  240,  229, 2159,
+      304, 2178, 2173,    0,    0, 2144, 2140, 2128, 2134, 2218,
+      185, 2218,    0, 2218, 2196, 2174, 2191,  819, 2218,  254,
+     2218, 2218, 2172, 2171, 2218,  198,    0,  270,  864,  143,
+     2218, 2218,  246, 2170,  261, 2218,  923,  330,  466,  470,
+
+      489,  498, 2149, 2152, 2160,  258,  263,  260,  252, 2146,
+      302, 2218, 2218,  547, 2123, 2218,  273, 2218,    0,  982,
+      638,  717,  550,  328,  323,  325,  253,  339, 2150, 2147,
+      341,  468,  483,  462,  496, 2139,  574, 2158, 2153, 2124,
+     2120, 2108, 1027, 2218, 2218,    0, 2218, 2218, 2176, 1072,
+     2155, 2154, 2218, 2153,    0, 2152,    0,  292, 2218,    0,
+     2151, 2218, 1117,  504,  556,  548,  572,  585,  299, 2147,
+     2129, 2125,  143, 2127, 2218, 2218,  596,  553,  618,  668,
+      631,  312, 2112, 2096, 2092,  443, 2094,    0, 2163, 2218,
+        0, 2152, 2218,    0, 2218, 2218, 2218, 2143,  512,  577,
+
+      454, 2218, 2218, 2160, 2218, 2156, 2218,    0, 1176, 2218,
+     2218,    0,    0,    0,    0,    0,  728,    0,  623, 2137,
+     2218,    0, 2218, 2136, 2114, 2128, 2122, 2099,    0, 2115,
+     2113, 2107,  557, 2121, 2105, 2118, 2118, 2102,  536, 2109,
+     2105, 2101, 2103, 2105,  636, 2111, 2101,  634, 2098, 2100,
+     2088,  634, 2099, 2101, 2089, 2103, 2103, 2091, 2104,  652,
+     2089, 2077, 2084, 2096, 2079, 2098, 2096, 2078, 2078, 2077,
+     2046, 2049, 2054, 2039, 2218, 2218,    0, 1227, 2218, 2218,
+     2218,    0, 2218,    0,  307,  731,    0, 2218, 2218,    0,
+     2218,  714,  779,  782,    0, 2081,  168,    0,  785, 2075,
+
+     2073, 2071,  814,  825, 2081, 2082, 2069, 2077, 2077, 2067,
+     2079, 2055, 2064, 2053,  500, 2064, 2066, 2069, 2058, 2065,
+     2045, 2065, 2067,  828, 2016,  634,  848,    0, 2048, 2062,
+     2045,  640, 2059, 2043, 2056, 2041,  638, 2048, 2044, 2040,
+     2045,  729,  659,  495, 2043,  666, 2035, 2049, 2049, 2051,
+      746, 2036, 2032, 2028, 2047, 2028, 2028, 2027, 1996, 1999,
+     2004,    0, 1278, 2063, 2218,    0, 1329,    0,    0, 2218,
+        0,  711,  738,  715,    0, 2031,  861,  862, 2030, 2034,
+     2017, 2018, 2016, 2033, 2020, 2028, 2029, 2027, 2028, 2007,
+      788, 1987,  791,  882, 1986, 1990, 1975, 1976, 1974, 1989,
+
+     1977, 1984, 1985, 1983, 1984, 1965, 2037,    0,    0, 2018,
+     2017,  666,  566,  558, 2218, 2218, 1996, 1992, 2002, 1994,
+     2003, 2003, 2000, 1985, 1978, 2001, 2000, 1991, 1996, 1980,
+     1985, 1991, 1983, 1993, 1990, 1971,    0, 1979, 1975, 1980,
+     1967, 1971, 1979, 1981, 1977,    0, 1968, 1962, 1963, 1968,
+     1964, 1953, 1970, 1960, 1957, 1956, 1951, 1968, 1953, 1950,
+     1956, 1950, 1962, 1946, 1962, 1963, 1945, 1961, 1949, 1953,
+     1940, 1913,    0,    0, 1921,    0,    0,  718, 1941,  900,
+     1948, 1949, 1939, 1948, 1948, 1925, 1948,  932, 1945, 1935,
+     1925, 1930, 1928, 1936, 1938,    0,    0, 1921, 1922, 1924,
+
+     1913, 1930, 1918, 1913, 1921, 1928, 1929, 1930, 1885, 1893,
+     1910, 1922, 1907, 1924, 1915, 1905, 1917, 1909, 1919, 1916,
+        0, 1906, 1908, 1895, 1908,    0, 1899, 1901, 1896, 1893,
+     1892, 1905, 1890, 1887, 1888, 1885, 1903, 1885, 1890, 1894,
+     1881,    0,    0,    0,    0, 1884,  667, 1884, 1873, 1851,
+        0, 1851, 1835, 1825, 1838, 1836, 1831, 1813, 1794, 1785,
+     1783, 1750,  682, 1743, 1742, 1731,    0, 1740, 1725, 1640,
+     1653, 1651, 1650, 1643, 1635, 1636, 1638,  274,  668,  741,
+     1669,    0, 1666, 1674,    0, 1667,    0, 1657,    0, 1656,
+     1644, 1660, 1653, 1647, 1650, 1652,    0, 1649, 1663, 1650,
+
+     1644,    0, 1662, 1643,    0, 1642, 1660,    0, 1642,    0,
+     1644, 1643, 1656, 1625, 1646, 1633, 1641, 1633, 1642,    0,
+     1647, 1640, 1643, 1627, 1631, 1614, 1635, 1639, 1622, 1629,
+     1631, 1634, 1629, 1590, 1586, 1618,    0, 1615, 1610, 1622,
+        0, 1614,    0, 1588, 1601, 1589, 1587, 1591,    0,    0,
+     1586, 1604,    0, 1589, 1602, 1571, 1592, 1588, 1590, 1593,
+     1582, 1587, 1583, 1552, 1548,    0, 1572, 1571, 1565, 1571,
+        0, 1568, 1581, 1564, 1582, 1563,    0, 1564, 1566, 1559,
+     1567, 1559,    0, 1574, 1567, 1555, 1543, 1569, 1552, 1562,
+     1565, 1560, 1556, 1548, 1552,    0,    0,    0, 1547, 1563,
+
+     1397,    0,    0, 1545, 1553,    0, 1541, 1557, 1517, 1510,
+     1508,    0,    0,    0, 1504, 1518, 1477,    0,    0, 1502,
+     1508,    0, 1498, 1511,  748,  756,  743, 1518,    0, 1530,
+        0, 1511, 1523, 1508, 1521,    0,    0, 1521, 1510,    0,
+     1492,    0, 1518, 1512,    0, 1512, 1515, 1493, 1498, 1515,
+     1511, 1505, 1499, 1492, 1510,    0, 1506, 1501, 1493, 1492,
+        0, 1499, 1502, 1502,    0, 1481, 1492, 1498, 1479, 1483,
+     1447, 1459, 1474,    0, 1474, 1488,    0, 1473, 1486,    0,
+     1486,    0, 1481, 1484, 1468, 1482, 1476, 1470, 1482, 1478,
+     1467, 1474, 1478, 1469, 1422, 1434, 1452, 1464,    0, 1454,
+
+        0, 1436, 1461, 1450,    0, 1430, 1448, 1428, 1446,    0,
+     1438, 1430,    0, 1442,    0,  197,  249,  302,  443,  466,
+        0,  502,  516,  561,    0, 1557,    0,  585,    0,  592,
+      566,    0,  649,  653,  651,    0, 1637,    0,  720,    0,
+      724,  775,  801,  767,  772,  810,  794,  786,  823,  831,
+      833,    0,  843,  844,  830,    0,  856,    0,  843,  851,
+        0,  872,    0,  851,  858,  880,  855,  873,  870,  861,
+      868,  883,  890,  901,    0,    0,  896,  862,  882,  894,
+        0,  917,  917,  919,  927,    0,  929,  918,    0,  933,
+        0,  915,  940,  926,  917,  937,  943,  904,  923,  940,
+
+      932,    0,  961,  960,  946,    0,  947,  938,  945,  940,
+      958,  948,  961,    0,    0,  964,  959,  965,    0,    0,
+        0,  961,  933,  944,    0,    0,    0,  941,  996,  997,
+      988,  989,  992,  981,  990,    0,  967,  984,    0,  969,
+      983,  984,    0,  972, 1003,    0,  974, 1002,  988,  977,
+     1002,  980,    0,    0,  998,    0,  977,  983, 1018, 1019,
+     1018,    0,  995, 1009, 1016, 1004,    0, 1005, 1006, 1030,
+        0, 1025, 1004, 1002, 1039, 1028, 1029,    0, 1014,    0,
+     1045,    0, 1043, 1029, 1018,    0,    0, 1045, 1048, 1048,
+     1018, 1020, 1020,    0, 1053, 1038, 1065, 1055, 1063, 1057,
+
+     1068,    0, 1067, 1061, 1062, 1066, 1074, 1074,    0, 1065,
+     1080, 1085,    0,    0, 1051,    0, 1084, 1076, 1084,    0,
+     1086, 1074, 1085, 1075, 1090,    0,    0, 1060, 1077, 1096,
+     1087, 1098, 1084, 1088, 1103,    0, 1112,    0,    0,    0,
+        0,    0,    0,    0, 1099, 1105, 1111, 1108, 1111, 1112,
+     1122, 1115, 1128, 1115, 1125, 1117, 1116, 1136, 1127, 1139,
+     1110,    0, 1138, 1135, 1139, 1132, 1137, 1128, 1156, 1126,
+     1144, 1150, 1148, 1148, 1161, 1147, 1148, 1155, 1170, 1154,
+     1168, 1160, 1163, 1161, 1170, 1165,    0,    0, 1177, 1173,
+     1184,    0, 1189, 1187, 1183, 1180, 1159, 1181, 1184, 1178,
+
+        0,    0, 1194, 1198, 1196, 1166, 1184, 1198, 1189, 1192,
+     1198, 1194,    0, 1205, 1202, 1197, 1215, 1202, 1218, 1210,
+     1212,    0,    0, 1225, 1223, 1216, 1230, 1229, 1232, 1203,
+     1221, 1237,    0, 1239, 1226, 1240, 1210, 1228, 1245, 1235,
+     1237,    0, 1250, 1245, 1248,    0, 1234, 1224,    0, 1225,
+     1242, 1238, 1260, 1246, 1249, 1255,    0, 1226, 1243,    0,
+     1270, 1256, 1259, 1231,    0, 1265, 1255, 1272, 1268, 1276,
+        0, 1261, 1298, 1292, 1280,    0, 1281,    0, 1277, 1284,
+     1250, 1299, 1287,    0, 1283, 1257, 1275, 1306, 1294,    0,
+     1296, 1299, 1308, 1310, 1320, 1314, 1296,    0,    0, 1323,
+
+        0, 1317, 1322, 1332,    0,    0,    0, 1319, 1327, 1310,
+     1338, 1319, 1336, 1342, 1335, 1336, 1348, 1336, 1342, 1348,
+     1341, 1329, 1343, 1355, 1343, 1345, 1352,    0, 1342, 1352,
+     1356, 1349, 1364,    0, 1357, 1366, 1370, 1375, 1368, 1387,
+     1376, 1376, 1389, 1386,    0, 1385, 1385, 1399, 1399, 1391,
+        0, 1389,    0, 1374, 1405, 1392,    0, 1377, 1394, 1409,
+     1396, 1400, 1408, 1394, 1412, 1411, 1405, 1398, 1416, 1401,
+     1407, 1413, 1422, 1410, 1406, 1417, 1427,    0, 1425, 1415,
+     1411, 1428,    0, 1418, 1414,    0, 1421, 1427,    0, 1423,
+     1429,    0, 1424,    0, 1425, 1427, 1428,    0,    0, 2218,
+
+     1717, 1728, 1739, 1750, 1761, 1772, 1780, 1788, 1796, 1807,
+     1815, 1826, 1837, 1848, 1851, 1860, 1868, 1457, 1879, 1890,
+     1901, 1912
+    } ;
+
+static yyconst short int yy_def[1323] =
+    {   0,
+     1301, 1301, 1300,    3, 1300,    5,    5,    7, 1302, 1302,
+     1300,   11, 1303, 1303, 1304, 1304, 1305, 1305, 1300, 1300,
+     1300, 1300, 1300, 1300, 1306, 1307, 1300, 1300, 1300, 1300,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1300,
+     1300, 1307, 1300, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1300,
+     1300, 1300, 1307, 1300, 1300, 1300, 1306, 1308, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1308, 1308, 1300,   89,
+     1300, 1300, 1300, 1300, 1300, 1300, 1308,   97,   97,   97,
+
+       97,   97, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1300, 1300,   97, 1308, 1300, 1300, 1300, 1308, 1308,
+     1300, 1300, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1309, 1300, 1300, 1309, 1300, 1300, 1310, 1311,
+     1312, 1300, 1300, 1300, 1311, 1311,   89,   89, 1300, 1313,
+     1300, 1300, 1311,  163,  163,  163,  163,  163, 1311, 1311,
+     1311, 1311, 1311, 1311, 1300, 1300,  163,  163,  163,  163,
+      163, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1300, 1300,
+     1314, 1300, 1300, 1315, 1300, 1300, 1300, 1316, 1316, 1316,
+
+     1316, 1300, 1300, 1300, 1300, 1306, 1300, 1307, 1307, 1300,
+     1300, 1307, 1307, 1307, 1307, 1307, 1307, 1307,  209, 1300,
+     1300, 1307, 1300, 1300, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1300, 1300, 1308, 1308, 1300, 1300,
+     1300, 1317, 1300, 1308,   89,   89,  286, 1300, 1300, 1318,
+     1300,   97,   97,   97, 1308, 1308, 1308, 1308,   97, 1308,
+
+     1308, 1308,   97,   97, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308,   97, 1308,  120, 1300, 1318, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1309, 1309, 1310, 1300, 1311, 1311, 1312, 1312, 1300,
+     1313,  163,  163,  163, 1311, 1311,  163,  163, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
+      163, 1311,  163,  163, 1311, 1311, 1311, 1311, 1311, 1311,
+
+     1311, 1311, 1311, 1311, 1311, 1311, 1300, 1314, 1315, 1316,
+     1300, 1316, 1316, 1316, 1300, 1300, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1308, 1317, 1318, 1308,   97,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308,   97, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1309, 1311, 1311, 1311, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1316, 1316, 1316,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
+
+     1319, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1311, 1320, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1316, 1316, 1316, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1311,
+     1311, 1311, 1311, 1311, 1321, 1319, 1311, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1322, 1320, 1311, 1311, 1311,
+     1311, 1316, 1316, 1316, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1311, 1311, 1311, 1311,
+     1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1316, 1316,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1311, 1311, 1311,
+     1311, 1311, 1311, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1311, 1311, 1311,
+     1311, 1311, 1311, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308,
+
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+
+     1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
+     1308, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
+     1308, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1307, 1307,
+     1307, 1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1307,
+     1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1308,
+     1308, 1307, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308,
+     1308, 1307, 1307, 1307, 1307, 1308, 1308, 1308, 1308, 1307,
+     1307, 1307, 1307, 1308, 1308, 1308, 1308, 1307, 1307, 1307,
+     1307, 1308, 1308, 1308, 1308, 1307, 1307, 1307, 1308, 1308,
+     1308, 1307, 1307, 1308, 1308, 1307, 1308, 1307, 1308,    0,
+
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300
+    } ;
+
+static yyconst short int yy_nxt[2300] =
+    {   0,
+       21,   22,   23,   24,   25,   21,   26,   27,   28,   29,
+       30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
+       40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
+       50,   51,   52,   53,   35,   54,   55,   56,   57,   58,
+       59,   60,   35,   61,   62,   35,   63,   35,   35,   35,
+       35,   64,   35,   65,   21,   35,   66,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   67,   35,   35,   68,
+       35,   35,   69,   35,   35,   35,   35,   70,   71,   72,
+       73,   74,   75,   23,   76,   77,   74,   78,   79,   80,
+       81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
+
+       91,   92,   93,   94,   95,   96,   97,   98,   99,  100,
+      101,  102,  103,   87,  104,   87,  105,  106,  107,  108,
+      109,  110,   87,   87,  111,   87,   87,   87,   87,   87,
+       87,   87,  112,   87,  113,   74,   87,  114,  102,  102,
+      102,  102,  102,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,  115,   87,   87,   87,   87,  116,  117,
+      118,  119,  120,  210,  249,  189,  190,  215,  250,  191,
+      220,  221,  388,  121,  122,  189,  190,  211,  216,  191,
+      192,  123,  124,  125,  126,  127,  128,  389,  129,  130,
+      192,  288,  131,  132,  133,  134,  135,  136,  233,  137,
+
+      138,  234,  139,  223,  224,  230,  235,  275,  231,  238,
+      236,  482,  140,   87,   87,   87,   87,   87,  288,  239,
+      281,  232,  141,  483,  237,  142,   74,   74,   20,   74,
+       74,   74,  143,   74,   74,   74,   74,   74,  144,   74,
+      145,  193,  913,  121,  122,   74,   74,   74,  147,   74,
+       74,  193,  217,  217,  240,  247,  225,  241,  226,  251,
+      242,  257,  210,  276,  282,  248,  227,  220,  221,  252,
+      218,  258,  218,  228,  229,  914,  211,   74,  253,   74,
+       74,  283,  254,  223,  224,  255,  256,  310,  312,  314,
+      316,  336,  284,  411,  317,  275,  313,  311,  318,  315,
+
+      218,  337,  218,   74,   74,   74,   74,   74,   20,   74,
+       74,   74,  143,   74,   74,   74,   74,   74,  144,   74,
+      145,  217,  217,  121,  122,   74,   74,   74,  147,   74,
+       74,  320,  383,  260,  725,  321,  261,  262,  384,  218,
+      288,  218,  322,  263,  264,  265,  915,  323,  266,  267,
+      334,  276,  219,  268,  335,  288,  299,   74,  299,   74,
+       74,  300,  332,  300,  301,  333,  301,  288,  305,  218,
+      310,  218,  338,  277,  277,  339,  399,  331,  340,  219,
+      343,  400,  288,   74,   74,   74,   21,   22,  148,   24,
+       21,  149,  150,   27,   28,   29,   30,  151,  152,  153,
+
+      154,  155,  156,  157,  158,  159,  160,   41,  161,   43,
+      162,  163,  164,  165,  166,  167,  168,  155,  155,  155,
+      155,  155,  169,  155,  170,  171,  172,  155,  155,  173,
+      174,  155,  155,  155,  155,  155,  155,  175,  155,  176,
+       21,  155,  177,  178,  179,  166,  180,  181,  155,  155,
+      155,  155,  182,  155,  183,  184,  185,  155,  186,  187,
+      155,  155,  155,   70,   71,   72,  188,   21,  189,  190,
+       21,   21,  191,  411,   21,   21,   21,   21,   21,   21,
+      195,   21,  916,  192,   21,   21,  195,  195,   21,   21,
+       21,   21,  299,  344,  299,  303,  299,  345,  299,  304,
+
+      316,  313,  277,  404,  317,  302,  277,  347,  348,  277,
+      277,  917,  314,  305,  277,  299,  405,  299,   21,   21,
+       21,   21,  346,  414,  299,  277,  299,  499,  349,  377,
+      374,  411,  277,  277,  277,  526,  500,  306,  319,  918,
+      366,  277,  277,  496,  196,   21,  197,   21,   21,  189,
+      190,   21,   21,  191,  919,   21,   21,   21,   21,   21,
+       21,  195,   21,  431,  192,   21,   21,  195,  195,   21,
+       21,   21,   21,  299,  374,  299,  329,  411,  330,  374,
+      432,  378,  374,  277,  366,  411,  296,  412,  379,  366,
+      277,  277,  366,  297,  298,  424,  411,  425,  374,   21,
+
+       21,   21,   21,  351,  324,  920,  352,  321,  366,  393,
+      380,  374,  921,  353,  322,  354,  580,  922,  355,  323,
+      381,  366,  374,  356,  382,  196,   21,  197,   21,   21,
+      189,  190,  366,   25,  191,  579,   21,   21,   21,   21,
+      923,   21,  195,  413,  374,  192,   21,   21,  195,  195,
+       21,   21,   21,  391,  366,  327,  327,  374,  208,  444,
+      208,  449,  392,  438,  450,  490,  439,  366,  440,  476,
+      451,  476,  445,  289,  394,  289,  441,  459,  513,  460,
+      486,  395,  517,  461,  495,  411,  328,  411,  208,  199,
+      208,  200,  694,  499,  374,  201,  528,  525,  695,  476,
+
+      398,  476,  500,  289,  366,  289,  202,   21,  203,   21,
+       21,  189,  190,  328,   25,  191,  924,   21,   21,   21,
+       21,  925,   21,  195,  926,  726,  192,   21,   21,  195,
+      195,   21,   21,   21,  327,  327,  396,  374,  710,  578,
+      299,  374,  299,  397,  711,  217,  217,  366,  286,  286,
+      277,  366,  289,  289,  289,  289,  522,  277,  277,  492,
+      411,  523,  411,  218,  374,  218, 1300,  411, 1300,  524,
+      199,  533,  200,  534,  366,  411,  201,  505,  927,  288,
+      928,  546,  289,  289,  289,  289,  411,  202,   21,  203,
+       21,  209,  209,  218,  411,  218, 1300,  727, 1300,  209,
+
+      209,  209,  209,  209,  209,  299,  288,  299,  299,  844,
+      480,  299,  843,  299,  374,  277,  931,  374,  277,  842,
+      411,  277,  479,  277,  366,  277,  277,  366,  277,  277,
+      209,  209,  209,  209,  209,  209,  278,  278,  932,  933,
+      299,  934,  299,  929,  278,  278,  278,  278,  278,  278,
+      277,  299,  935,  299,  299,  488,  299,  277,  487,  936,
+      562,  277,  937,  564,  277,  327,  327,  930,  277,  277,
+      938,  277,  277,  939,  940,  278,  278,  278,  278,  278,
+      278,  285,  285,  289,  941,  289,  942,  374,  374,  286,
+      287,  286,  287,  286,  286,  943,  288,  366,  366,  289,
+
+      509,  289,  944,  288,  548,  549,  945,  946,  374,  947,
+      948,  949,  290,  289,  950,  289,  951,  952,  366,  953,
+      286,  287,  286,  287,  286,  286,  299,  288,  299,  289,
+      954,  289,  955,  288,  956,  957,  277,  958,  959,  290,
+      292,  292,  637,  277,  277,  960,  961,  962,  292,  293,
+      292,  294,  292,  292,  565,  295,  963,  964,  299,  296,
+      299,  965,  295,  966,  967,  645,  297,  298,  277,  968,
+      969,  295,  970,  971,  972,  277,  277,  973,  974,  292,
+      299,  292,  299,  292,  292,  975,  295,  976,  977,  978,
+      979,  980,  295,  981,  982,  983,  984,  985,  295,  326,
+
+      326,  986,  987,  988,  989,  990,  991,  326,  326,  326,
+      326,  326,  326,  992,  993,  411,  411,  994,  995,  996,
+      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1007,
+     1008, 1009, 1010, 1006, 1011, 1012, 1013, 1014,  326,  326,
+      326,  326,  326,  326,  363,  363, 1015, 1016, 1017, 1018,
+     1019, 1020,  363,  363,  363,  363,  363,  363, 1021, 1022,
+     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
+     1033, 1035, 1036, 1037, 1038, 1034, 1039, 1040, 1041, 1042,
+     1043, 1044, 1045,  363,  363,  363,  363,  363,  363,  367,
+      367, 1046, 1047, 1048, 1049, 1050, 1051,  367,  367,  367,
+
+      367,  367,  367, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
+     1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
+     1070, 1071, 1072, 1060, 1073, 1074, 1075, 1076,  367,  367,
+      367,  367,  367,  367,  372,  372, 1077, 1078, 1080, 1081,
+     1082, 1083,  372,  373,  372,  374,  372,  372, 1084,  375,
+     1079, 1085, 1086,  376, 1087, 1089,  375, 1090, 1091, 1092,
+     1093, 1094, 1088, 1095, 1096,  375, 1097, 1098, 1099, 1100,
+     1103, 1101, 1104,  372,  374,  372,  374,  372,  372, 1102,
+      375, 1105, 1106, 1107, 1108, 1109,  375, 1110, 1111, 1112,
+     1113, 1114,  375,  209,  209, 1115, 1116, 1117, 1118, 1119,
+
+     1120,  209,  209,  209,  209,  209,  209, 1121, 1122, 1123,
+     1124,  218, 1125,  218, 1126, 1127, 1128, 1129, 1130, 1131,
+     1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
+     1142, 1143,  209,  209,  209,  209,  209,  209, 1144, 1145,
+     1146,  218, 1147,  218,  278,  278, 1148, 1149, 1150, 1151,
+     1152, 1153,  278,  278,  278,  278,  278,  278, 1154, 1155,
+     1156, 1157,  476, 1158,  476, 1159, 1160, 1161, 1162, 1163,
+     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
+     1174, 1175, 1176,  278,  278,  278,  278,  278,  278, 1177,
+     1178, 1179,  476, 1180,  476,  363,  363, 1181, 1182, 1183,
+
+     1184, 1185, 1186,  363,  363,  363,  363,  363,  363, 1187,
+     1188, 1189, 1190,  544, 1191,  544, 1192, 1196, 1197, 1198,
+     1199, 1200, 1201, 1193, 1202, 1205, 1206, 1194, 1203, 1207,
+     1208, 1209, 1210, 1211,  363,  363,  363,  363,  363,  363,
+     1195, 1204, 1212,  544, 1213,  544,  367,  367, 1214, 1215,
+     1216, 1217, 1218, 1219,  367,  367,  367,  367,  367,  367,
+     1220, 1221, 1222, 1223,  545, 1224,  545, 1225, 1226, 1227,
+     1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237,
+     1238, 1239, 1240, 1241, 1242,  367,  367,  367,  367,  367,
+      367, 1243, 1244, 1245,  545, 1246,  545,  825,  825, 1247,
+
+      825,  825,  825, 1248,  825,  825,  825,  825,  825, 1249,
+      825, 1250, 1251, 1252, 1253, 1254, 1255,  825,  825,  825,
+      825,  825, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
+     1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273,
+     1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
+     1284,  825, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
+     1293, 1294, 1295, 1296, 1297, 1298, 1299,  478,  912,  911,
+      910,  909,  908,  907,  825,  825,  825,  836,  836,  906,
+      836,  836,  836,  905,  836,  836,  836,  836,  836,  904,
+      836,  903,  902,  901,  900,  899,  898,  836,  836,  836,
+
+      836,  836,  897,  896,  895,  894,  893,  892,  891,  890,
+      889,  888,  887,  886,  885,  884,  883,  882,  881,  880,
+      879,  878,  877,  876,  875,  874,  873,  872,  871,  870,
+      869,  836,  868,  867,  866,  865,  864,  863,  862,  861,
+      860,  859,  858,  857,  856,  855,  854,  853,  852,  851,
+      850,  849,  848,  847,  836,  836,  836,  825,  825,  846,
+      825,  825,  825,  845,  825,  825,  825,  825,  825,  841,
+      825,  840,  839,  838,  835,  834,  833,  825,  825,  825,
+      825,  825,  832,  831,  830,  829,  828,  827,  824,  823,
+      822,  821,  820,  819,  818,  817,  816,  815,  814,  813,
+
+      812,  811,  810,  809,  808,  807,  806,  805,  804,  803,
+      802,  825,  801,  800,  799,  798,  797,  796,  795,  794,
+      793,  792,  791,  790,  789,  788,  787,  786,  785,  784,
+      783,  782,  781,  780,  825,  825,  825,  836,  836,  779,
+      836,  836,  836,  778,  836,  836,  836,  836,  836,  777,
+      836,  776,  775,  774,  773,  772,  771,  836,  836,  836,
+      836,  836,  770,  769,  768,  767,  766,  765,  764,  763,
+      762,  761,  760,  759,  758,  757,  756,  755,  754,  753,
+      752,  751,  750,  749,  748,  747,  746,  745,  744,  743,
+      742,  836,  741,  740,  739,  738,  737,  736,  735,  734,
+
+      733,  732,  731,  730,  729,  728,  724,  723,  722,  721,
+      720,  719,  718,  717,  836,  836,  836,   20,   20,   20,
+       20,   20,   20,   20,   20,   20,   20,   20,  146,  146,
+      146,  146,  146,  146,  146,  146,  146,  146,  146,   21,
+       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  198,  198,  198,  198,  198,  198,  198,  198,  198,
+      198,  198,  206,  206,  206,  206,  206,  206,  206,  206,
+      206,  206,  206,  208,  208,  208,  208,  208,  208,  208,
+      208,  277,  716,  277,  277,  277,  277,  277,  277,  362,
+
+      715,  714,  713,  712,  362,  362,  362,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  366,  709,
+      366,  708,  366,  366,  366,  366,  368,  707,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  371,  706,  371,
+      371,  371,  371,  371,  371,  371,  371,  371,  408,  705,
+      408,  408,  408,  408,  408,  408,  408,  408,  408,  409,
+      704,  409,  410,  410,  410,  703,  702,  410,  410,  701,
+      410,  477,  700,  477,  477,  477,  477,  477,  477,  826,
+      699,  826,  826,  826,  826,  826,  826,  826,  826,  826,
+      837,  698,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  825,  697,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  836,  696,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  693,  692,  691,  690,  689,  688,  687,
+      686,  685,  684,  683,  682,  681,  680,  679,  678,  677,
+      676,  675,  674,  673,  672,  671,  670,  669,  645,  668,
+      667,  666,  637,  665,  664,  663,  662,  661,  660,  659,
+      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
+      648,  647,  646,  644,  643,  642,  641,  640,  639,  638,
+      636,  635,  634,  633,  632,  631,  630,  629,  628,  627,
+      626,  625,  624,  623,  622,  621,  620,  619,  618,  617,
+
+      616,  615,  614,  613,  612,  611,  610,  609,  608,  607,
+      606,  605,  604,  603,  602,  601,  600,  599,  598,  597,
+      596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
+      586,  585,  584,  583,  582,  581,  410,  411,  407,  577,
+      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
+      566,  563,  561,  560,  559,  558,  557,  556,  555,  554,
+      553,  552,  551,  550,  547,  365,  543,  542,  509,  541,
+      540,  539,  538,  537,  536,  535,  532,  531,  530,  529,
+      527,  521,  520,  519,  518,  516,  515,  487,  514,  512,
+      511,  479,  510,  508,  507,  506,  505,  504,  503,  502,
+
+      501,  498,  497,  496,  495,  494,  493,  492,  491,  490,
+      489,  486,  485,  484,  481,  475,  474,  473,  472,  471,
+      470,  469,  468,  467,  466,  465,  464,  463,  462,  458,
+      457,  456,  455,  454,  453,  452,  448,  447,  446,  443,
+      442,  437,  436,  435,  434,  433,  430,  429,  428,  427,
+      426,  423,  422,  421,  420,  419,  418,  417,  416,  415,
+      207,  204,  411,  283,  407,  406,  403,  402,  401,  390,
+      387,  386,  385,  291,  370,  281,  280,  369,  365,  361,
+      360,  359,  358,  357,  350,  342,  341,  325,  319,  309,
+      308,  307,  291,  280,  279,  207,  205,  204,  274,  273,
+
+      272,  271,  270,  269,  259,  246,  245,  244,  243,  222,
+      214,  213,  212,  207,  205,  204, 1300,   19, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300
+
+    } ;
+
+static yyconst short int yy_chk[2300] =
+    {   0,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    7,   28,   56,   13,   13,   36,   56,   13,
+       41,   41,  173,    7,    7,   14,   14,   28,   36,   14,
+       13,    7,    7,    7,    7,    7,    7,  173,    7,    7,
+       14,   90,    7,    7,    7,    7,    7,    7,   47,    7,
+
+        7,   47,    7,   43,   43,   46,   48,   71,   46,   49,
+       48,  297,    7,    7,    7,    7,    7,    7,   90,   49,
+       86,   46,    7,  297,   48,    7,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,   13,  816,    9,    9,    9,    9,    9,    9,    9,
+        9,   14,   38,   38,   50,   55,   45,   50,   45,   57,
+       50,   59,   80,   71,   86,   55,   45,   93,   93,   57,
+       38,   59,   38,   45,   45,  817,   80,    9,   58,    9,
+        9,   88,   58,   95,   95,   58,   58,  106,  107,  108,
+      109,  127,   88,  578,  109,  117,  107,  106,  109,  108,
+
+       38,  127,   38,    9,    9,    9,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   37,   37,   10,   10,   10,   10,   10,   10,   10,
+       10,  111,  169,   61,  578,  111,   61,   61,  169,   37,
+      158,   37,  111,   61,   61,   61,  818,  111,   61,   61,
+      126,  117,   37,   61,  126,  285,   98,   10,   98,   10,
+       10,  124,  125,   98,  124,  125,   98,  158,  126,   37,
+      131,   37,  128,   98,   98,  128,  182,  124,  128,   37,
+      131,  182,  285,   10,   10,   10,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   11,   11,   11,   11,   11,   15,   15,   15,
+       15,   15,   15,  201,   15,   15,   15,   15,   15,   15,
+       15,   15,  819,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   99,  132,   99,  100,  100,  132,  100,  100,
+
+      134,  132,   99,  186,  134,   99,  100,  134,  134,   99,
+       99,  820,  133,  100,  100,  101,  186,  101,   15,   15,
+       15,   15,  133,  201,  102,  101,  102,  315,  135,  164,
+      164,  199,  101,  101,  102,  344,  315,  101,  135,  822,
+      164,  102,  102,  344,   15,   15,   15,   15,   16,   16,
+       16,   16,   16,   16,  823,   16,   16,   16,   16,   16,
+       16,   16,   16,  239,   16,   16,   16,   16,   16,   16,
+       16,   16,   16,  114,  166,  114,  123,  414,  123,  178,
+      239,  165,  165,  114,  166,  413,  123,  199,  165,  178,
+      114,  114,  165,  123,  123,  233,  200,  233,  167,   16,
+
+       16,   16,   16,  137,  114,  824,  137,  137,  167,  178,
+      167,  168,  828,  137,  137,  137,  414,  830,  137,  137,
+      167,  168,  177,  137,  168,   16,   16,   16,   16,   17,
+       17,   17,  177,   17,   17,  413,   17,   17,   17,   17,
+      831,   17,   17,  200,  179,   17,   17,   17,   17,   17,
+       17,   17,   17,  177,  179,  121,  121,  181,  219,  248,
+      219,  252,  177,  245,  252,  337,  245,  181,  245,  326,
+      252,  326,  248,  121,  179,  121,  245,  260,  332,  260,
+      332,  179,  337,  260,  343,  412,  121,  579,  219,   17,
+      219,   17,  547,  346,  180,   17,  346,  343,  547,  326,
+
+      181,  326,  346,  121,  180,  121,   17,   17,   17,   17,
+       18,   18,   18,  121,   18,   18,  833,   18,   18,   18,
+       18,  834,   18,   18,  835,  579,   18,   18,   18,   18,
+       18,   18,   18,   18,  122,  122,  180,  372,  563,  412,
+      292,  374,  292,  180,  563,  217,  217,  372,  286,  286,
+      292,  374,  122,  478,  122,  478,  342,  292,  292,  342,
+      580,  342,  727,  217,  373,  217,  286,  725,  286,  342,
+       18,  351,   18,  351,  373,  726,   18,  351,  839,  286,
+      841,  373,  122,  478,  122,  478,  844,   18,   18,   18,
+       18,   26,   26,  217,  842,  217,  286,  580,  286,   26,
+
+       26,   26,   26,   26,   26,  293,  286,  293,  294,  727,
+      294,  299,  726,  299,  391,  293,  845,  393,  294,  725,
+      843,  299,  293,  293,  391,  294,  294,  393,  299,  299,
+       26,   26,   26,   26,   26,   26,   78,   78,  846,  847,
+      303,  848,  303,  842,   78,   78,   78,   78,   78,   78,
+      303,  304,  849,  304,  324,  304,  324,  303,  303,  850,
+      391,  304,  851,  393,  324,  327,  327,  843,  304,  304,
+      853,  324,  324,  854,  855,   78,   78,   78,   78,   78,
+       78,   89,   89,  327,  857,  327,  859,  377,  378,   89,
+       89,   89,   89,   89,   89,  860,   89,  377,  378,   89,
+
+      324,   89,  862,   89,  377,  378,  864,  865,  394,  866,
+      867,  868,   89,  327,  869,  327,  870,  871,  394,  872,
+       89,   89,   89,   89,   89,   89,  480,   89,  480,   89,
+      873,   89,  874,   89,  877,  878,  480,  879,  880,   89,
+       97,   97,  480,  480,  480,  882,  883,  884,   97,   97,
+       97,   97,   97,   97,  394,   97,  885,  887,  488,   97,
+      488,  888,   97,  890,  892,  488,   97,   97,  488,  893,
+      894,   97,  895,  896,  897,  488,  488,  898,  899,   97,
+       97,   97,   97,   97,   97,  900,   97,  901,  903,  904,
+      905,  907,   97,  908,  909,  910,  911,  912,   97,  120,
+
+      120,  913,  916,  917,  918,  922,  923,  120,  120,  120,
+      120,  120,  120,  924,  928,  929,  930,  931,  932,  933,
+      934,  935,  937,  938,  940,  941,  942,  944,  945,  947,
+      948,  949,  950,  945,  951,  952,  955,  957,  120,  120,
+      120,  120,  120,  120,  143,  143,  958,  959,  960,  961,
+      963,  964,  143,  143,  143,  143,  143,  143,  965,  966,
+      968,  969,  970,  972,  973,  974,  975,  976,  977,  979,
+      981,  983,  984,  985,  988,  981,  989,  990,  991,  992,
+      993,  995,  996,  143,  143,  143,  143,  143,  143,  150,
+      150,  997,  998,  999, 1000, 1001, 1003,  150,  150,  150,
+
+      150,  150,  150, 1004, 1005, 1006, 1007, 1008, 1010, 1011,
+     1012, 1015, 1017, 1018, 1019, 1021, 1022, 1023, 1024, 1025,
+     1028, 1029, 1030, 1012, 1031, 1032, 1033, 1034,  150,  150,
+      150,  150,  150,  150,  163,  163, 1035, 1037, 1045, 1046,
+     1047, 1048,  163,  163,  163,  163,  163,  163, 1049,  163,
+     1037, 1050, 1051,  163, 1052, 1053,  163, 1054, 1055, 1056,
+     1057, 1058, 1052, 1059, 1060,  163, 1061, 1063, 1064, 1065,
+     1067, 1066, 1068,  163,  163,  163,  163,  163,  163, 1066,
+      163, 1069, 1070, 1071, 1072, 1073,  163, 1074, 1075, 1076,
+     1077, 1078,  163,  209,  209, 1079, 1080, 1081, 1082, 1083,
+
+     1084,  209,  209,  209,  209,  209,  209, 1085, 1086, 1089,
+     1090,  209, 1091,  209, 1093, 1094, 1095, 1096, 1097, 1098,
+     1099, 1100, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
+     1111, 1112,  209,  209,  209,  209,  209,  209, 1114, 1115,
+     1116,  209, 1117,  209,  278,  278, 1118, 1119, 1120, 1121,
+     1124, 1125,  278,  278,  278,  278,  278,  278, 1126, 1127,
+     1128, 1129,  278, 1130,  278, 1131, 1132, 1134, 1135, 1136,
+     1137, 1138, 1139, 1140, 1141, 1143, 1144, 1145, 1147, 1148,
+     1150, 1151, 1152,  278,  278,  278,  278,  278,  278, 1153,
+     1154, 1155,  278, 1156,  278,  363,  363, 1158, 1159, 1161,
+
+     1162, 1163, 1164,  363,  363,  363,  363,  363,  363, 1166,
+     1167, 1168, 1169,  363, 1170,  363, 1172, 1174, 1175, 1177,
+     1179, 1180, 1181, 1173, 1182, 1183, 1185, 1173, 1182, 1186,
+     1187, 1188, 1189, 1191,  363,  363,  363,  363,  363,  363,
+     1173, 1182, 1192,  363, 1193,  363,  367,  367, 1194, 1195,
+     1196, 1197, 1200, 1202,  367,  367,  367,  367,  367,  367,
+     1203, 1204, 1208, 1209,  367, 1210,  367, 1211, 1212, 1213,
+     1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
+     1224, 1225, 1226, 1227, 1229,  367,  367,  367,  367,  367,
+      367, 1230, 1231, 1232,  367, 1233,  367,  701,  701, 1235,
+
+      701,  701,  701, 1236,  701,  701,  701,  701,  701, 1237,
+      701, 1238, 1239, 1240, 1241, 1242, 1243,  701,  701,  701,
+      701,  701, 1244, 1246, 1247, 1248, 1249, 1250, 1252, 1254,
+     1255, 1256, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
+     1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
+     1276,  701, 1277, 1279, 1280, 1281, 1282, 1284, 1285, 1287,
+     1288, 1290, 1291, 1293, 1295, 1296, 1297, 1318,  814,  812,
+      811,  809,  808,  807,  701,  701,  701,  717,  717,  806,
+      717,  717,  717,  804,  717,  717,  717,  717,  717,  803,
+      717,  802,  800,  798,  797,  796,  795,  717,  717,  717,
+
+      717,  717,  794,  793,  792,  791,  790,  789,  788,  787,
+      786,  785,  784,  783,  781,  779,  778,  776,  775,  773,
+      772,  771,  770,  769,  768,  767,  766,  764,  763,  762,
+      760,  717,  759,  758,  757,  755,  754,  753,  752,  751,
+      750,  749,  748,  747,  746,  744,  743,  741,  739,  738,
+      735,  734,  733,  732,  717,  717,  717,  826,  826,  730,
+      826,  826,  826,  728,  826,  826,  826,  826,  826,  724,
+      826,  723,  721,  720,  716,  715,  711,  826,  826,  826,
+      826,  826,  710,  709,  708,  707,  705,  704,  700,  699,
+      695,  694,  693,  692,  691,  690,  689,  688,  687,  686,
+
+      685,  684,  682,  681,  680,  679,  678,  676,  675,  674,
+      673,  826,  672,  670,  669,  668,  667,  665,  664,  663,
+      662,  661,  660,  659,  658,  657,  656,  655,  654,  652,
+      651,  648,  647,  646,  826,  826,  826,  837,  837,  645,
+      837,  837,  837,  644,  837,  837,  837,  837,  837,  642,
+      837,  640,  639,  638,  636,  635,  634,  837,  837,  837,
+      837,  837,  633,  632,  631,  630,  629,  628,  627,  626,
+      625,  624,  623,  622,  621,  619,  618,  617,  616,  615,
+      614,  613,  612,  611,  609,  607,  606,  604,  603,  601,
+      600,  837,  599,  598,  596,  595,  594,  593,  592,  591,
+
+      590,  588,  586,  584,  583,  581,  577,  576,  575,  574,
+      573,  572,  571,  570,  837,  837,  837, 1301, 1301, 1301,
+     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1302, 1302,
+     1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1303,
+     1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303,
+     1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304,
+     1304, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305,
+     1305, 1305, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
+     1306, 1306, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
+     1307, 1308,  569, 1308, 1308, 1308, 1308, 1308, 1308, 1309,
+
+      568,  566,  565,  564, 1309, 1309, 1309, 1310, 1310, 1310,
+     1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1311,  562,
+     1311,  561, 1311, 1311, 1311, 1311, 1312,  560, 1312, 1312,
+     1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313,  559, 1313,
+     1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1314,  558,
+     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1315,
+      557, 1315, 1316, 1316, 1316,  556,  555, 1316, 1316,  554,
+     1316, 1317,  553, 1317, 1317, 1317, 1317, 1317, 1317, 1319,
+      552, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319,
+     1320,  550, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,
+
+     1320, 1321,  549, 1321, 1321, 1321, 1321, 1321, 1321, 1321,
+     1321, 1321, 1322,  548, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322,  546,  541,  540,  539,  538,  537,  536,
+      535,  534,  533,  532,  531,  530,  529,  528,  527,  525,
+      524,  523,  522,  520,  519,  518,  517,  516,  515,  514,
+      513,  512,  511,  510,  509,  508,  507,  506,  505,  504,
+      503,  502,  501,  500,  499,  498,  495,  494,  493,  492,
+      491,  490,  489,  487,  486,  485,  484,  483,  482,  481,
+      479,  475,  472,  471,  470,  469,  468,  467,  466,  465,
+      464,  463,  462,  461,  460,  459,  458,  457,  456,  455,
+
+      454,  453,  452,  451,  450,  449,  448,  447,  445,  444,
+      443,  442,  441,  440,  439,  438,  436,  435,  434,  433,
+      432,  431,  430,  429,  428,  427,  426,  425,  424,  423,
+      422,  421,  420,  419,  418,  417,  411,  410,  407,  406,
+      405,  404,  403,  402,  401,  400,  399,  398,  397,  396,
+      395,  392,  390,  389,  388,  387,  386,  385,  384,  383,
+      382,  381,  380,  379,  376,  364,  361,  360,  359,  358,
+      357,  356,  355,  354,  353,  352,  350,  349,  348,  347,
+      345,  341,  340,  339,  338,  336,  335,  334,  333,  331,
+      330,  329,  325,  323,  322,  321,  320,  319,  318,  317,
+
+      316,  314,  313,  312,  311,  310,  309,  308,  307,  306,
+      305,  302,  301,  300,  296,  274,  273,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  262,  261,  259,
+      258,  257,  256,  255,  254,  253,  251,  250,  249,  247,
+      246,  244,  243,  242,  241,  240,  238,  237,  236,  235,
+      234,  232,  231,  230,  228,  227,  226,  225,  224,  220,
+      206,  204,  198,  192,  189,  187,  185,  184,  183,  174,
+      172,  171,  170,  161,  156,  154,  152,  151,  149,  142,
+      141,  140,  139,  138,  136,  130,  129,  115,  110,  105,
+      104,  103,   94,   84,   83,   77,   76,   75,   69,   68,
+
+       67,   66,   63,   62,   60,   54,   53,   52,   51,   42,
+       34,   32,   31,   25,   24,   22,   19, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
+     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300
+
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "ldlex.l"
+#define INITIAL 0
+#line 2 "ldlex.l"
+
+/* Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+   2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
+
+   This file is part of GLD, the Gnu Linker.
+
+   GLD 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.
+
+   GLD 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 GLD; see the file COPYING.  If not, write to the Free
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+/*
+This was written by steve chamberlain
+                    sac at cygnus.com
+*/
+
+
+#include <stdio.h>
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "safe-ctype.h"
+#include "bfdlink.h"
+#include "ld.h"
+#include "ldmisc.h"
+#include "ldexp.h"
+#include "ldlang.h"
+#include <ldgram.h>
+#include "ldfile.h"
+#include "ldlex.h"
+#include "ldmain.h"
+#include "libiberty.h"
+
+/* The type of top-level parser input.
+   yylex and yyparse (indirectly) both check this.  */
+input_type parser_input;
+
+/* Line number in the current input file.
+   (FIXME Actually, it doesn't appear to get reset for each file?)  */
+unsigned int lineno = 1;
+
+/* The string we are currently lexing, or NULL if we are reading a
+   file.  */
+const char *lex_string = NULL;
+
+/* Support for flex reading from more than one input file (stream).
+   `include_stack' is flex's input state for each open file;
+   `file_name_stack' is the file names.  `lineno_stack' is the current
+   line numbers.
+
+   If `include_stack_ptr' is 0, we haven't started reading anything yet.
+   Otherwise, stack elements 0 through `include_stack_ptr - 1' are valid.  */
+
+#undef YY_INPUT
+#define YY_INPUT(buf,result,max_size) yy_input (buf, &result, max_size)
+
+#define YY_NO_UNPUT
+
+#define MAX_INCLUDE_DEPTH 10
+static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
+static const char *file_name_stack[MAX_INCLUDE_DEPTH];
+static unsigned int lineno_stack[MAX_INCLUDE_DEPTH];
+static unsigned int include_stack_ptr = 0;
+static int vers_node_nesting = 0;
+
+static void yy_input (char *, int *, int);
+static void comment (void);
+static void lex_warn_invalid (char *where, char *what);
+
+/* STATES
+	EXPRESSION	definitely in an expression
+	SCRIPT		definitely in a script
+	BOTH		either EXPRESSION or SCRIPT
+	DEFSYMEXP	in an argument to -defsym
+        MRI             in an MRI script
+	VERS_START	starting a Sun style mapfile
+	VERS_SCRIPT	a Sun style mapfile
+	VERS_NODE	a node within a Sun style mapfile
+*/
+#define RTOKEN(x)  {  yylval.token = x; return x; }
+
+/* Some versions of flex want this.  */
+#ifndef yywrap
+int yywrap (void) { return 1; }
+#endif
+#define SCRIPT 1
+
+#define EXPRESSION 2
+
+#define BOTH 3
+
+#define DEFSYMEXP 4
+
+#define MRI 5
+
+#define VERS_START 6
+
+#define VERS_SCRIPT 7
+
+#define VERS_NODE 8
+
+#line 1422 "ldlex.c"
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap YY_PROTO(( void ));
+#else
+extern int yywrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void yyunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int yyinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int yy_start_stack_ptr = 0;
+static int yy_start_stack_depth = 0;
+static int *yy_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void yy_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( yy_current_buffer->yy_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int yylex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+
+#line 123 "ldlex.l"
+
+
+  if (parser_input != input_selected)
+    {
+      /* The first token of the input determines the initial parser state.  */
+      input_type t = parser_input;
+      parser_input = input_selected;
+      switch (t)
+	{
+	case input_script: return INPUT_SCRIPT; break;
+	case input_mri_script: return INPUT_MRI_SCRIPT; break;
+	case input_version_script: return INPUT_VERSION_SCRIPT; break;
+	case input_defsym: return INPUT_DEFSYM; break;
+	default: abort ();
+	}
+    }
+
+#line 1602 "ldlex.c"
+
+	if ( yy_init )
+		{
+		yy_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! yy_start )
+			yy_start = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! yy_current_buffer )
+			yy_current_buffer =
+				yy_create_buffer( yyin, YY_BUF_SIZE );
+
+		yy_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = yy_c_buf_p;
+
+		/* Support of yytext. */
+		*yy_cp = yy_hold_char;
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = yy_start;
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yy_last_accepting_state = yy_current_state;
+				yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 1301 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 2218 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yy_hold_char;
+			yy_cp = yy_last_accepting_cpos;
+			yy_current_state = yy_last_accepting_state;
+			goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 140 "ldlex.l"
+{ comment (); }
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 143 "ldlex.l"
+{ RTOKEN('-');}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 144 "ldlex.l"
+{ RTOKEN('+');}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 145 "ldlex.l"
+{ yylval.name = xstrdup (yytext); return NAME; }
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 146 "ldlex.l"
+{ RTOKEN('='); }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 148 "ldlex.l"
+{
+  				yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
+				yylval.bigint.str = NULL;
+				return INT;
+			}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 154 "ldlex.l"
+{
+				   int ibase ;
+				   switch (yytext[yyleng - 1]) {
+				    case 'X':
+				    case 'x':
+				    case 'H':
+				    case 'h':
+				     ibase = 16;
+				     break;
+				    case 'O':
+				    case 'o':
+				     ibase = 8;
+				     break;
+				    case 'B':
+				    case 'b':
+				     ibase = 2;
+				     break;
+				    default:
+				     ibase = 10;
+				   }
+				   yylval.integer = bfd_scan_vma (yytext, 0,
+								  ibase);
+				   yylval.bigint.str = NULL;
+				   return INT;
+				 }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 179 "ldlex.l"
+{
+				  char *s = yytext;
+				  int ibase = 0;
+
+				  if (*s == '$')
+				    {
+				      ++s;
+				      ibase = 16;
+				    }
+				  yylval.integer = bfd_scan_vma (s, 0, ibase);
+				  yylval.bigint.str = NULL;
+				  if (yytext[yyleng - 1] == 'M'
+				      || yytext[yyleng - 1] == 'm')
+				    {
+				      yylval.integer *= 1024 * 1024;
+				    }
+				  else if (yytext[yyleng - 1] == 'K'
+				      || yytext[yyleng - 1]=='k')
+				    {
+				      yylval.integer *= 1024;
+				    }
+				  else if (yytext[0] == '0'
+					   && (yytext[1] == 'x'
+					       || yytext[1] == 'X'))
+				    {
+				      yylval.bigint.str = xstrdup (yytext + 2);
+				    }
+				  return INT;
+				}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 208 "ldlex.l"
+{ RTOKEN(']');}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 209 "ldlex.l"
+{ RTOKEN('[');}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 210 "ldlex.l"
+{ RTOKEN(LSHIFTEQ);}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 211 "ldlex.l"
+{ RTOKEN(RSHIFTEQ);}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 212 "ldlex.l"
+{ RTOKEN(OROR);}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 213 "ldlex.l"
+{ RTOKEN(EQ);}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 214 "ldlex.l"
+{ RTOKEN(NE);}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 215 "ldlex.l"
+{ RTOKEN(GE);}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 216 "ldlex.l"
+{ RTOKEN(LE);}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 217 "ldlex.l"
+{ RTOKEN(LSHIFT);}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 218 "ldlex.l"
+{ RTOKEN(RSHIFT);}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 219 "ldlex.l"
+{ RTOKEN(PLUSEQ);}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 220 "ldlex.l"
+{ RTOKEN(MINUSEQ);}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 221 "ldlex.l"
+{ RTOKEN(MULTEQ);}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 222 "ldlex.l"
+{ RTOKEN(DIVEQ);}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 223 "ldlex.l"
+{ RTOKEN(ANDEQ);}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 224 "ldlex.l"
+{ RTOKEN(OREQ);}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 225 "ldlex.l"
+{ RTOKEN(ANDAND);}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 226 "ldlex.l"
+{ RTOKEN('>');}
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 227 "ldlex.l"
+{ RTOKEN(',');}
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 228 "ldlex.l"
+{ RTOKEN('&');}
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 229 "ldlex.l"
+{ RTOKEN('|');}
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 230 "ldlex.l"
+{ RTOKEN('~');}
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 231 "ldlex.l"
+{ RTOKEN('!');}
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 232 "ldlex.l"
+{ RTOKEN('?');}
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 233 "ldlex.l"
+{ RTOKEN('*');}
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 234 "ldlex.l"
+{ RTOKEN('+');}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 235 "ldlex.l"
+{ RTOKEN('-');}
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 236 "ldlex.l"
+{ RTOKEN('/');}
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 237 "ldlex.l"
+{ RTOKEN('%');}
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 238 "ldlex.l"
+{ RTOKEN('<');}
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 239 "ldlex.l"
+{ RTOKEN('=');}
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 240 "ldlex.l"
+{ RTOKEN('}') ; }
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 241 "ldlex.l"
+{ RTOKEN('{'); }
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 242 "ldlex.l"
+{ RTOKEN(')');}
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 243 "ldlex.l"
+{ RTOKEN('(');}
+	YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 244 "ldlex.l"
+{ RTOKEN(':'); }
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 245 "ldlex.l"
+{ RTOKEN(';');}
+	YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 246 "ldlex.l"
+{ RTOKEN(MEMORY);}
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 247 "ldlex.l"
+{ RTOKEN(ORIGIN);}
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 248 "ldlex.l"
+{ RTOKEN(VERSIONK);}
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 249 "ldlex.l"
+{ RTOKEN(BLOCK);}
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 250 "ldlex.l"
+{ RTOKEN(BIND);}
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 251 "ldlex.l"
+{ RTOKEN(LENGTH);}
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 252 "ldlex.l"
+{ RTOKEN(ALIGN_K);}
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 253 "ldlex.l"
+{ RTOKEN(DATA_SEGMENT_ALIGN);}
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 254 "ldlex.l"
+{ RTOKEN(DATA_SEGMENT_RELRO_END);}
+	YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 255 "ldlex.l"
+{ RTOKEN(DATA_SEGMENT_END);}
+	YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 256 "ldlex.l"
+{ RTOKEN(ADDR);}
+	YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 257 "ldlex.l"
+{ RTOKEN(LOADADDR);}
+	YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 258 "ldlex.l"
+{ RTOKEN(MAX_K); }
+	YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 259 "ldlex.l"
+{ RTOKEN(MIN_K); }
+	YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 260 "ldlex.l"
+{ RTOKEN(ASSERT_K); }
+	YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 261 "ldlex.l"
+{ RTOKEN(ENTRY);}
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 262 "ldlex.l"
+{ RTOKEN(EXTERN);}
+	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 263 "ldlex.l"
+{ RTOKEN(NEXT);}
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 264 "ldlex.l"
+{ RTOKEN(SIZEOF_HEADERS);}
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 265 "ldlex.l"
+{ RTOKEN(SIZEOF_HEADERS);}
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 266 "ldlex.l"
+{ RTOKEN(SEGMENT_START);}
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 267 "ldlex.l"
+{ RTOKEN(MAP);}
+	YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 268 "ldlex.l"
+{ RTOKEN(SIZEOF);}
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 269 "ldlex.l"
+{ RTOKEN(TARGET_K);}
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 270 "ldlex.l"
+{ RTOKEN(SEARCH_DIR);}
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 271 "ldlex.l"
+{ RTOKEN(OUTPUT);}
+	YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 272 "ldlex.l"
+{ RTOKEN(INPUT);}
+	YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 273 "ldlex.l"
+{ RTOKEN(GROUP);}
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 274 "ldlex.l"
+{ RTOKEN(AS_NEEDED);}
+	YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 275 "ldlex.l"
+{ RTOKEN(DEFINED);}
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 276 "ldlex.l"
+{ RTOKEN(CREATE_OBJECT_SYMBOLS);}
+	YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 277 "ldlex.l"
+{ RTOKEN( CONSTRUCTORS);}
+	YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 278 "ldlex.l"
+{ RTOKEN(FORCE_COMMON_ALLOCATION);}
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 279 "ldlex.l"
+{ RTOKEN(INHIBIT_COMMON_ALLOCATION);}
+	YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 280 "ldlex.l"
+{ RTOKEN(SECTIONS);}
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 281 "ldlex.l"
+{ RTOKEN(FILL);}
+	YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 282 "ldlex.l"
+{ RTOKEN(STARTUP);}
+	YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 283 "ldlex.l"
+{ RTOKEN(OUTPUT_FORMAT);}
+	YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 284 "ldlex.l"
+{ RTOKEN( OUTPUT_ARCH);}
+	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 285 "ldlex.l"
+{ RTOKEN(HLL);}
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 286 "ldlex.l"
+{ RTOKEN(SYSLIB);}
+	YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 287 "ldlex.l"
+{ RTOKEN(FLOAT);}
+	YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 288 "ldlex.l"
+{ RTOKEN( QUAD);}
+	YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 289 "ldlex.l"
+{ RTOKEN( SQUAD);}
+	YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 290 "ldlex.l"
+{ RTOKEN( LONG);}
+	YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 291 "ldlex.l"
+{ RTOKEN( SHORT);}
+	YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 292 "ldlex.l"
+{ RTOKEN( BYTE);}
+	YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 293 "ldlex.l"
+{ RTOKEN(NOFLOAT);}
+	YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 294 "ldlex.l"
+{ RTOKEN(NOCROSSREFS);}
+	YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 295 "ldlex.l"
+{ RTOKEN(OVERLAY); }
+	YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 296 "ldlex.l"
+{ RTOKEN(SORT_BY_NAME); }
+	YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 297 "ldlex.l"
+{ RTOKEN(SORT_BY_ALIGNMENT); }
+	YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 298 "ldlex.l"
+{ RTOKEN(SORT_BY_NAME); }
+	YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 299 "ldlex.l"
+{ RTOKEN(NOLOAD);}
+	YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 300 "ldlex.l"
+{ RTOKEN(DSECT);}
+	YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 301 "ldlex.l"
+{ RTOKEN(COPY);}
+	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 302 "ldlex.l"
+{ RTOKEN(INFO);}
+	YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 303 "ldlex.l"
+{ RTOKEN(OVERLAY);}
+	YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 304 "ldlex.l"
+{ RTOKEN(ONLY_IF_RO); }
+	YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 305 "ldlex.l"
+{ RTOKEN(ONLY_IF_RW); }
+	YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 306 "ldlex.l"
+{ RTOKEN(SPECIAL); }
+	YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 307 "ldlex.l"
+{ RTOKEN(ORIGIN);}
+	YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 308 "ldlex.l"
+{ RTOKEN(ORIGIN);}
+	YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 309 "ldlex.l"
+{ RTOKEN( LENGTH);}
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 310 "ldlex.l"
+{ RTOKEN( LENGTH);}
+	YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 311 "ldlex.l"
+{ RTOKEN(INCLUDE);}
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 312 "ldlex.l"
+{ RTOKEN (PHDRS); }
+	YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 313 "ldlex.l"
+{ RTOKEN(AT);}
+	YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 314 "ldlex.l"
+{ RTOKEN(SUBALIGN);}
+	YY_BREAK
+case 116:
+YY_RULE_SETUP
+#line 315 "ldlex.l"
+{ RTOKEN(PROVIDE); }
+	YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 316 "ldlex.l"
+{ RTOKEN(PROVIDE_HIDDEN); }
+	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 317 "ldlex.l"
+{ RTOKEN(KEEP); }
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 318 "ldlex.l"
+{ RTOKEN(EXCLUDE_FILE); }
+	YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 319 "ldlex.l"
+{ ++ lineno; }
+	YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 320 "ldlex.l"
+{ ++ lineno;  RTOKEN(NEWLINE); }
+	YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 321 "ldlex.l"
+{ /* Mri comment line */ }
+	YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 322 "ldlex.l"
+{ /* Mri comment line */ }
+	YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 323 "ldlex.l"
+{ RTOKEN(ENDWORD); }
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 324 "ldlex.l"
+{ RTOKEN(ALIGNMOD);}
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 325 "ldlex.l"
+{ RTOKEN(ALIGN_K);}
+	YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 326 "ldlex.l"
+{ RTOKEN(CHIP); }
+	YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 327 "ldlex.l"
+{ RTOKEN(BASE); }
+	YY_BREAK
+case 129:
+YY_RULE_SETUP
+#line 328 "ldlex.l"
+{ RTOKEN(ALIAS); }
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 329 "ldlex.l"
+{ RTOKEN(TRUNCATE); }
+	YY_BREAK
+case 131:
+YY_RULE_SETUP
+#line 330 "ldlex.l"
+{ RTOKEN(LOAD); }
+	YY_BREAK
+case 132:
+YY_RULE_SETUP
+#line 331 "ldlex.l"
+{ RTOKEN(PUBLIC); }
+	YY_BREAK
+case 133:
+YY_RULE_SETUP
+#line 332 "ldlex.l"
+{ RTOKEN(ORDER); }
+	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 333 "ldlex.l"
+{ RTOKEN(NAMEWORD); }
+	YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 334 "ldlex.l"
+{ RTOKEN(FORMAT); }
+	YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 335 "ldlex.l"
+{ RTOKEN(CASE); }
+	YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 336 "ldlex.l"
+{ RTOKEN(START); }
+	YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 337 "ldlex.l"
+{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
+	YY_BREAK
+case 139:
+YY_RULE_SETUP
+#line 338 "ldlex.l"
+{ RTOKEN(SECT); }
+	YY_BREAK
+case 140:
+YY_RULE_SETUP
+#line 339 "ldlex.l"
+{ RTOKEN(ABSOLUTE); }
+	YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 340 "ldlex.l"
+{ RTOKEN(ENDWORD); }
+	YY_BREAK
+case 142:
+YY_RULE_SETUP
+#line 341 "ldlex.l"
+{ RTOKEN(ALIGNMOD);}
+	YY_BREAK
+case 143:
+YY_RULE_SETUP
+#line 342 "ldlex.l"
+{ RTOKEN(ALIGN_K);}
+	YY_BREAK
+case 144:
+YY_RULE_SETUP
+#line 343 "ldlex.l"
+{ RTOKEN(CHIP); }
+	YY_BREAK
+case 145:
+YY_RULE_SETUP
+#line 344 "ldlex.l"
+{ RTOKEN(BASE); }
+	YY_BREAK
+case 146:
+YY_RULE_SETUP
+#line 345 "ldlex.l"
+{ RTOKEN(ALIAS); }
+	YY_BREAK
+case 147:
+YY_RULE_SETUP
+#line 346 "ldlex.l"
+{ RTOKEN(TRUNCATE); }
+	YY_BREAK
+case 148:
+YY_RULE_SETUP
+#line 347 "ldlex.l"
+{ RTOKEN(LOAD); }
+	YY_BREAK
+case 149:
+YY_RULE_SETUP
+#line 348 "ldlex.l"
+{ RTOKEN(PUBLIC); }
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 349 "ldlex.l"
+{ RTOKEN(ORDER); }
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 350 "ldlex.l"
+{ RTOKEN(NAMEWORD); }
+	YY_BREAK
+case 152:
+YY_RULE_SETUP
+#line 351 "ldlex.l"
+{ RTOKEN(FORMAT); }
+	YY_BREAK
+case 153:
+YY_RULE_SETUP
+#line 352 "ldlex.l"
+{ RTOKEN(CASE); }
+	YY_BREAK
+case 154:
+YY_RULE_SETUP
+#line 353 "ldlex.l"
+{ RTOKEN(EXTERN); }
+	YY_BREAK
+case 155:
+YY_RULE_SETUP
+#line 354 "ldlex.l"
+{ RTOKEN(START); }
+	YY_BREAK
+case 156:
+YY_RULE_SETUP
+#line 355 "ldlex.l"
+{ RTOKEN(LIST); /* LIST and ignore to end of line */ }
+	YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 356 "ldlex.l"
+{ RTOKEN(SECT); }
+	YY_BREAK
+case 158:
+YY_RULE_SETUP
+#line 357 "ldlex.l"
+{ RTOKEN(ABSOLUTE); }
+	YY_BREAK
+case 159:
+YY_RULE_SETUP
+#line 359 "ldlex.l"
+{
+/* Filename without commas, needed to parse mri stuff */
+				 yylval.name = xstrdup (yytext);
+				  return NAME;
+				}
+	YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 366 "ldlex.l"
+{
+				 yylval.name = xstrdup (yytext);
+				  return NAME;
+				}
+	YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 370 "ldlex.l"
+{
+				  yylval.name = xstrdup (yytext + 2);
+				  return LNAME;
+				}
+	YY_BREAK
+case 162:
+YY_RULE_SETUP
+#line 374 "ldlex.l"
+{
+		/* Annoyingly, this pattern can match comments, and we have
+		   longest match issues to consider.  So if the first two
+		   characters are a comment opening, put the input back and
+		   try again.  */
+		if (yytext[0] == '/' && yytext[1] == '*')
+		  {
+		    yyless (2);
+		    comment ();
+		  }
+		else
+		  {
+		    yylval.name = xstrdup (yytext);
+		    return NAME;
+		  }
+	}
+	YY_BREAK
+case 163:
+YY_RULE_SETUP
+#line 391 "ldlex.l"
+{
+					/* No matter the state, quotes
+					   give what's inside */
+					yylval.name = xstrdup (yytext + 1);
+					yylval.name[yyleng - 2] = 0;
+					return NAME;
+				}
+	YY_BREAK
+case 164:
+YY_RULE_SETUP
+#line 398 "ldlex.l"
+{ lineno++;}
+	YY_BREAK
+case 165:
+YY_RULE_SETUP
+#line 399 "ldlex.l"
+{ }
+	YY_BREAK
+case 166:
+YY_RULE_SETUP
+#line 401 "ldlex.l"
+{ return *yytext; }
+	YY_BREAK
+case 167:
+YY_RULE_SETUP
+#line 403 "ldlex.l"
+{ RTOKEN(GLOBAL); }
+	YY_BREAK
+case 168:
+YY_RULE_SETUP
+#line 405 "ldlex.l"
+{ RTOKEN(LOCAL); }
+	YY_BREAK
+case 169:
+YY_RULE_SETUP
+#line 407 "ldlex.l"
+{ RTOKEN(EXTERN); }
+	YY_BREAK
+case 170:
+YY_RULE_SETUP
+#line 409 "ldlex.l"
+{ yylval.name = xstrdup (yytext);
+				  return VERS_IDENTIFIER; }
+	YY_BREAK
+case 171:
+YY_RULE_SETUP
+#line 412 "ldlex.l"
+{ yylval.name = xstrdup (yytext);
+				  return VERS_TAG; }
+	YY_BREAK
+case 172:
+YY_RULE_SETUP
+#line 415 "ldlex.l"
+{ BEGIN(VERS_SCRIPT); return *yytext; }
+	YY_BREAK
+case 173:
+YY_RULE_SETUP
+#line 417 "ldlex.l"
+{ BEGIN(VERS_NODE);
+				  vers_node_nesting = 0;
+				  return *yytext;
+				}
+	YY_BREAK
+case 174:
+YY_RULE_SETUP
+#line 421 "ldlex.l"
+{ return *yytext; }
+	YY_BREAK
+case 175:
+YY_RULE_SETUP
+#line 422 "ldlex.l"
+{ vers_node_nesting++; return *yytext; }
+	YY_BREAK
+case 176:
+YY_RULE_SETUP
+#line 423 "ldlex.l"
+{ if (--vers_node_nesting < 0)
+				    BEGIN(VERS_SCRIPT);
+				  return *yytext;
+				}
+	YY_BREAK
+case 177:
+YY_RULE_SETUP
+#line 428 "ldlex.l"
+{ lineno++; }
+	YY_BREAK
+case 178:
+YY_RULE_SETUP
+#line 430 "ldlex.l"
+{ /* Eat up comments */ }
+	YY_BREAK
+case 179:
+YY_RULE_SETUP
+#line 432 "ldlex.l"
+{ /* Eat up whitespace */ }
+	YY_BREAK
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(SCRIPT):
+case YY_STATE_EOF(EXPRESSION):
+case YY_STATE_EOF(BOTH):
+case YY_STATE_EOF(DEFSYMEXP):
+case YY_STATE_EOF(MRI):
+case YY_STATE_EOF(VERS_START):
+case YY_STATE_EOF(VERS_SCRIPT):
+case YY_STATE_EOF(VERS_NODE):
+#line 434 "ldlex.l"
+{
+  include_stack_ptr--;
+
+  if (include_stack_ptr == 0)
+  {
+    yyterminate ();
+  }
+  else
+  {
+    yy_switch_to_buffer (include_stack[include_stack_ptr]);
+  }
+
+  ldfile_input_filename = file_name_stack[include_stack_ptr - 1];
+  lineno = lineno_stack[include_stack_ptr];
+
+  return END;
+}
+	YY_BREAK
+case 180:
+YY_RULE_SETUP
+#line 452 "ldlex.l"
+lex_warn_invalid (" in script", yytext);
+	YY_BREAK
+case 181:
+YY_RULE_SETUP
+#line 453 "ldlex.l"
+lex_warn_invalid (" in expression", yytext);
+	YY_BREAK
+case 182:
+YY_RULE_SETUP
+#line 455 "ldlex.l"
+ECHO;
+	YY_BREAK
+#line 2718 "ldlex.c"
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between yy_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yy_n_chars = yy_current_buffer->yy_n_chars;
+			yy_current_buffer->yy_input_file = yyin;
+			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = yy_c_buf_p;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yy_did_buffer_switch_on_eof = 0;
+
+				if ( yywrap() )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yy_c_buf_p =
+					yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yy_c_buf_p =
+				&yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+				yy_current_state = yy_get_previous_state();
+
+				yy_cp = yy_c_buf_p;
+				yy_bp = yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of yylex */
+
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int yy_get_next_buffer()
+	{
+	register char *dest = yy_current_buffer->yy_ch_buf;
+	register char *source = yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( yy_current_buffer->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			yy_current_buffer->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = yy_current_buffer;
+
+			int yy_c_buf_p_offset =
+				(int) (yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yy_flex_realloc( (void *) b->yy_ch_buf,
+							 b->yy_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = yy_current_buffer->yy_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+			yy_n_chars, num_to_read );
+
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	if ( yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart( yyin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			yy_current_buffer->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yy_n_chars += number_to_move;
+	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+static yy_state_type yy_get_previous_state()
+	{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+
+	yy_current_state = yy_start;
+
+	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yy_last_accepting_state = yy_current_state;
+			yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 1301 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+	}
+
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
+#else
+static yy_state_type yy_try_NUL_trans( yy_current_state )
+yy_state_type yy_current_state;
+#endif
+	{
+	register int yy_is_jam;
+	register char *yy_cp = yy_c_buf_p;
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yy_last_accepting_state = yy_current_state;
+		yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 1301 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 1300);
+
+	return yy_is_jam ? 0 : yy_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void yyunput( int c, register char *yy_bp )
+#else
+static void yyunput( c, yy_bp )
+int c;
+register char *yy_bp;
+#endif
+	{
+	register char *yy_cp = yy_c_buf_p;
+
+	/* undo effects of setting up yytext */
+	*yy_cp = yy_hold_char;
+
+	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = yy_n_chars + 2;
+		register char *dest = &yy_current_buffer->yy_ch_buf[
+					yy_current_buffer->yy_buf_size + 2];
+		register char *source =
+				&yy_current_buffer->yy_ch_buf[number_to_move];
+
+		while ( source > yy_current_buffer->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		yy_current_buffer->yy_n_chars =
+			yy_n_chars = yy_current_buffer->yy_buf_size;
+
+		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+
+	yytext_ptr = yy_bp;
+	yy_hold_char = *yy_cp;
+	yy_c_buf_p = yy_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifdef __cplusplus
+static int yyinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*yy_c_buf_p = yy_hold_char;
+
+	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+			/* This was really a NUL. */
+			*yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yy_c_buf_p - yytext_ptr;
+			++yy_c_buf_p;
+
+			switch ( yy_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart( yyin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap() )
+						return EOF;
+
+					if ( ! yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					yy_c_buf_p = yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
+	*yy_c_buf_p = '\0';	/* preserve yytext */
+	yy_hold_char = *++yy_c_buf_p;
+
+
+	return c;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yyrestart( FILE *input_file )
+#else
+void yyrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! yy_current_buffer )
+		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+	yy_init_buffer( yy_current_buffer, input_file );
+	yy_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void yy_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( yy_current_buffer == new_buffer )
+		return;
+
+	if ( yy_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*yy_c_buf_p = yy_hold_char;
+		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+		yy_current_buffer->yy_n_chars = yy_n_chars;
+		}
+
+	yy_current_buffer = new_buffer;
+	yy_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yy_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_load_buffer_state( void )
+#else
+void yy_load_buffer_state()
+#endif
+	{
+	yy_n_chars = yy_current_buffer->yy_n_chars;
+	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+	yyin = yy_current_buffer->yy_input_file;
+	yy_hold_char = *yy_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE yy_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_delete_buffer( YY_BUFFER_STATE b )
+#else
+void yy_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == yy_current_buffer )
+		yy_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yy_flex_free( (void *) b->yy_ch_buf );
+
+	yy_flex_free( (void *) b );
+	}
+
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#ifndef YY_ALWAYS_INTERACTIVE
+#ifndef YY_NEVER_INTERACTIVE
+extern int isatty YY_PROTO(( int ));
+#endif
+#endif
+#endif
+
+#ifdef YY_USE_PROTOS
+void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void yy_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	yy_flush_buffer( b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->yy_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->yy_is_interactive = 0;
+#else
+	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void yy_flush_buffer( YY_BUFFER_STATE b )
+#else
+void yy_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == yy_current_buffer )
+		yy_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
+#else
+YY_BUFFER_STATE yy_scan_buffer( base, size )
+char *base;
+yy_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
+#else
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
+#endif
+	{
+	int len;
+	for ( len = 0; yy_str[len]; ++len )
+		;
+
+	return yy_scan_bytes( yy_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
+#else
+YY_BUFFER_STATE yy_scan_bytes( bytes, len )
+yyconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) yy_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void yy_push_state( int new_state )
+#else
+static void yy_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( yy_start_stack_ptr >= yy_start_stack_depth )
+		{
+		yy_size_t new_size;
+
+		yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yy_start_stack_depth * sizeof( int );
+
+		if ( ! yy_start_stack )
+			yy_start_stack = (int *) yy_flex_alloc( new_size );
+
+		else
+			yy_start_stack = (int *) yy_flex_realloc(
+					(void *) yy_start_stack, new_size );
+
+		if ( ! yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void yy_pop_state()
+	{
+	if ( --yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(yy_start_stack[yy_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int yy_top_state()
+	{
+	return yy_start_stack[yy_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void yy_fatal_error( yyconst char msg[] )
+#else
+static void yy_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+		yytext[yyleng] = yy_hold_char; \
+		yy_c_buf_p = yytext + n; \
+		yy_hold_char = *yy_c_buf_p; \
+		*yy_c_buf_p = '\0'; \
+		yyleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef yytext_ptr
+#ifdef YY_USE_PROTOS
+static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
+#else
+static void yy_flex_strncpy( s1, s2, n )
+char *s1;
+yyconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_alloc( yy_size_t size )
+#else
+static void *yy_flex_alloc( size )
+yy_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *yy_flex_realloc( void *ptr, yy_size_t size )
+#else
+static void *yy_flex_realloc( ptr, size )
+void *ptr;
+yy_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void yy_flex_free( void *ptr )
+#else
+static void yy_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	yylex();
+	return 0;
+	}
+#endif
+#line 455 "ldlex.l"
+
+
+
+/* Switch flex to reading script file NAME, open on FILE,
+   saving the current input info on the include stack.  */
+
+void
+lex_push_file (FILE *file, const char *name)
+{
+  if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
+    {
+      einfo ("%F:includes nested too deeply\n");
+    }
+  file_name_stack[include_stack_ptr] = name;
+  lineno_stack[include_stack_ptr] = lineno;
+  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
+
+  include_stack_ptr++;
+  lineno = 1;
+  yyin = file;
+  yy_switch_to_buffer (yy_create_buffer (yyin, YY_BUF_SIZE));
+}
+
+/* Return a newly created flex input buffer containing STRING,
+   which is SIZE bytes long.  */
+
+static YY_BUFFER_STATE
+yy_create_string_buffer (const char *string, size_t size)
+{
+  YY_BUFFER_STATE b;
+
+  /* Calls to m-alloc get turned by sed into xm-alloc.  */
+  b = malloc (sizeof (struct yy_buffer_state));
+  b->yy_input_file = 0;
+  b->yy_buf_size = size;
+
+  /* yy_ch_buf has to be 2 characters longer than the size given because
+     we need to put in 2 end-of-buffer characters.  */
+  b->yy_ch_buf = malloc ((unsigned) (b->yy_buf_size + 3));
+
+  b->yy_ch_buf[0] = '\n';
+  strcpy (b->yy_ch_buf+1, string);
+  b->yy_ch_buf[size+1] = YY_END_OF_BUFFER_CHAR;
+  b->yy_ch_buf[size+2] = YY_END_OF_BUFFER_CHAR;
+  b->yy_n_chars = size+1;
+  b->yy_buf_pos = &b->yy_ch_buf[1];
+
+  b->yy_is_our_buffer = 1;
+  b->yy_is_interactive = 0;
+  b->yy_at_bol = 1;
+  b->yy_fill_buffer = 0;
+
+  /* flex 2.4.7 changed the interface.  FIXME: We should not be using
+     a flex internal interface in the first place!  */
+#ifdef YY_BUFFER_NEW
+  b->yy_buffer_status = YY_BUFFER_NEW;
+#else
+  b->yy_eof_status = EOF_NOT_SEEN;
+#endif
+
+  return b;
+}
+
+/* Switch flex to reading from STRING, saving the current input info
+   on the include stack.  */
+
+void
+lex_redirect (const char *string)
+{
+  YY_BUFFER_STATE tmp;
+
+  yy_init = 0;
+  if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
+    {
+      einfo("%F: macros nested too deeply\n");
+    }
+  file_name_stack[include_stack_ptr] = "redirect";
+  lineno_stack[include_stack_ptr] = lineno;
+  include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
+  include_stack_ptr++;
+  lineno = 1;
+  tmp = yy_create_string_buffer (string, strlen (string));
+  yy_switch_to_buffer (tmp);
+}
+
+/* Functions to switch to a different flex start condition,
+   saving the current start condition on `state_stack'.  */
+
+static int state_stack[MAX_INCLUDE_DEPTH * 2];
+static int *state_stack_p = state_stack;
+
+void
+ldlex_script (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (SCRIPT);
+}
+
+void
+ldlex_mri_script (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (MRI);
+}
+
+void
+ldlex_version_script (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (VERS_START);
+}
+
+void
+ldlex_version_file (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (VERS_SCRIPT);
+}
+
+void
+ldlex_defsym (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (DEFSYMEXP);
+}
+
+void
+ldlex_expression (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (EXPRESSION);
+}
+
+void
+ldlex_both (void)
+{
+  *(state_stack_p)++ = yy_start;
+  BEGIN (BOTH);
+}
+
+void
+ldlex_popstate (void)
+{
+  yy_start = *(--state_stack_p);
+}
+
+
+/* Place up to MAX_SIZE characters in BUF and return in *RESULT
+   either the number of characters read, or 0 to indicate EOF.  */
+
+static void
+yy_input (char *buf, int *result, int max_size)
+{
+  *result = 0;
+  if (YY_CURRENT_BUFFER->yy_input_file)
+    {
+      if (yyin)
+	{
+	  *result = fread (buf, 1, max_size, yyin);
+	  if (*result < max_size && ferror (yyin))
+	    einfo ("%F%P: read in flex scanner failed\n");
+	}
+    }
+}
+
+/* Eat the rest of a C-style comment.  */
+
+static void
+comment (void)
+{
+  int c;
+
+  while (1)
+  {
+    c = input();
+    while (c != '*' && c != EOF)
+    {
+      if (c == '\n')
+	lineno++;
+      c = input();
+    }
+
+    if (c == '*')
+    {
+      c = input();
+      while (c == '*')
+       c = input();
+      if (c == '/')
+       break;			/* found the end */
+    }
+
+    if (c == '\n')
+      lineno++;
+
+    if (c == EOF)
+    {
+      einfo( "%F%P: EOF in comment\n");
+      break;
+    }
+  }
+}
+
+/* Warn the user about a garbage character WHAT in the input
+   in context WHERE.  */
+
+static void
+lex_warn_invalid (char *where, char *what)
+{
+  char buf[5];
+
+  /* If we have found an input file whose format we do not recognize,
+     and we are therefore treating it as a linker script, and we find
+     an invalid character, then most likely this is a real object file
+     of some different format.  Treat it as such.  */
+  if (ldfile_assumed_script)
+    {
+      bfd_set_error (bfd_error_file_not_recognized);
+      einfo ("%F%s: file not recognized: %E\n", ldfile_input_filename);
+    }
+
+  if (! ISPRINT (*what))
+    {
+      sprintf (buf, "\\%03o", (unsigned int) *what);
+      what = buf;
+    }
+
+  einfo ("%P:%S: ignoring invalid character `%s'%s\n", what, where);
+}

Added: branches/binutils/package/ld/ldver.texi
===================================================================
--- branches/binutils/package/ld/ldver.texi	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/ldver.texi	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1 @@
+ at set VERSION 2.17

Deleted: branches/binutils/package/ld/po/.cvsignore
===================================================================
--- branches/binutils/package/ld/po/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/po/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1 +0,0 @@
-*.gmo

Modified: branches/binutils/package/ld/po/Make-in
===================================================================
--- branches/binutils/package/ld/po/Make-in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/po/Make-in	2006-12-31 16:27:59 UTC (rev 19)
@@ -186,7 +186,7 @@
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp

Modified: branches/binutils/package/ld/po/POTFILES.in
===================================================================
--- branches/binutils/package/ld/po/POTFILES.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/po/POTFILES.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,4 +1,5 @@
 deffile.h
+elf-hints-local.h
 emultempl/armcoff.em
 emultempl/pe.em
 ldcref.c

Added: branches/binutils/package/ld/po/da.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/da.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/ld/po/es.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/ld/po/es.po
===================================================================
--- branches/binutils/package/ld/po/es.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/po/es.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,13 +1,13 @@
-# Mensajes en español para ld 2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para ld 2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: ld 2.15.96\n"
+"Project-Id-Version: ld 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:05+1030\n"
-"PO-Revision-Date: 2005-03-14 17:12-0600\n"
+"POT-Creation-Date: 2006-03-25 18:36+0100\n"
+"PO-Revision-Date: 2006-05-26 16:31-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga at itam.mx>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -29,15 +29,15 @@
 msgid "Errors encountered processing file %s"
 msgstr "Errores encontrados al procesar el fichero %s"
 
-#: emultempl/armcoff.em:188 emultempl/pe.em:1455
+#: emultempl/armcoff.em:190 emultempl/pe.em:1460
 msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
 msgstr "%P: aviso: '--thumb-entry %s' se impone a '-e %s'\n"
 
-#: emultempl/armcoff.em:193 emultempl/pe.em:1460
+#: emultempl/armcoff.em:195 emultempl/pe.em:1465
 msgid "%P: warning: connot find thumb start symbol %s\n"
 msgstr "%P: aviso: no se puede encontrar el símbolo de inicio thumb %s\n"
 
-#: emultempl/pe.em:301
+#: emultempl/pe.em:304
 #, c-format
 msgid "  --base_file <basefile>             Generate a base file for relocatable DLLs\n"
 msgstr "  --base_file <ficherobase>          Genera un fichero base para DLLs reubicables\n"
@@ -45,132 +45,132 @@
 # DLL son las siglas en inglés de `Biblioteca de Enlace Dinámico'.
 # El problema es que las siglas en español (BED) no están muy extendidas.
 # Se dejó `DLL' sin traducir en todas las ocasiones. cfuga
-#: emultempl/pe.em:302
+#: emultempl/pe.em:305
 #, c-format
 msgid "  --dll                              Set image base to the default for DLLs\n"
 msgstr "  --dll                              Establece la imagen base por defecto para las DLLs\n"
 
-#: emultempl/pe.em:303
+#: emultempl/pe.em:306
 #, c-format
 msgid "  --file-alignment <size>            Set file alignment\n"
 msgstr "  --file-alignment <tamaño>          Establece el fichero de alineación\n"
 
-#: emultempl/pe.em:304
+#: emultempl/pe.em:307
 #, c-format
 msgid "  --heap <size>                      Set initial size of the heap\n"
 msgstr "  --heap <tamaño>                    Establece el tamaño inicial del montón\n"
 
-#: emultempl/pe.em:305
+#: emultempl/pe.em:308
 #, c-format
 msgid "  --image-base <address>             Set start address of the executable\n"
 msgstr "  --image-base <dirección>           Establece la dirección de inicio del ejecutable\n"
 
-#: emultempl/pe.em:306
+#: emultempl/pe.em:309
 #, c-format
 msgid "  --major-image-version <number>     Set version number of the executable\n"
 msgstr "  --major-image-version <número>     Establece el número de versión del ejecutable\n"
 
-#: emultempl/pe.em:307
+#: emultempl/pe.em:310
 #, c-format
 msgid "  --major-os-version <number>        Set minimum required OS version\n"
 msgstr "  --major-os-version <número>        Establece la versión mínima requerida del SO\n"
 
-#: emultempl/pe.em:308
+#: emultempl/pe.em:311
 #, c-format
 msgid "  --major-subsystem-version <number> Set minimum required OS subsystem version\n"
 msgstr "  --major-subsystem-version <número> Establece la versión mínima requerida del subsistema del SO\n"
 
-#: emultempl/pe.em:309
+#: emultempl/pe.em:312
 #, c-format
 msgid "  --minor-image-version <number>     Set revision number of the executable\n"
 msgstr "  --minor-image-version <número>     Establece el número de revisión del ejecutable\n"
 
-#: emultempl/pe.em:310
+#: emultempl/pe.em:313
 #, c-format
 msgid "  --minor-os-version <number>        Set minimum required OS revision\n"
 msgstr "  --minor-os-version <número>        Establece la revisión mínima requerida del SO\n"
 
-#: emultempl/pe.em:311
+#: emultempl/pe.em:314
 #, c-format
 msgid "  --minor-subsystem-version <number> Set minimum required OS subsystem revision\n"
 msgstr "  --minor-subsystem-version <número> Establece la revisión mínima requerida del subsistema del SO\n"
 
-#: emultempl/pe.em:312
+#: emultempl/pe.em:315
 #, c-format
 msgid "  --section-alignment <size>         Set section alignment\n"
 msgstr "  --section-alignment <tamaño>       Establece la alineación de la sección\n"
 
-#: emultempl/pe.em:313
+#: emultempl/pe.em:316
 #, c-format
 msgid "  --stack <size>                     Set size of the initial stack\n"
 msgstr "  --stack <size>                     Establece el tamaño de la pila inicial\n"
 
-#: emultempl/pe.em:314
+#: emultempl/pe.em:317
 #, c-format
 msgid "  --subsystem <name>[:<version>]     Set required OS subsystem [& version]\n"
 msgstr "  --subsystem <nombre>[:<versión>]   Establece el subsistema [y versión] requeridos del SO\n"
 
-#: emultempl/pe.em:315
+#: emultempl/pe.em:318
 #, c-format
 msgid "  --support-old-code                 Support interworking with old code\n"
 msgstr "  --support-old-code                 Soporte para interoperar con código antiguo\n"
 
-#: emultempl/pe.em:316
+#: emultempl/pe.em:319
 #, c-format
 msgid "  --thumb-entry=<symbol>             Set the entry point to be Thumb <symbol>\n"
 msgstr "  --thumb-entry=<símbolo>            Establece el punto de entrada para el símbolo Thumb <símbolo>\n"
 
-#: emultempl/pe.em:318
+#: emultempl/pe.em:321
 #, c-format
 msgid "  --add-stdcall-alias                Export symbols with and without @nn\n"
 msgstr "  --add-stdcall-alias                Exportar símbolos con y sin @nn\n"
 
-#: emultempl/pe.em:319
+#: emultempl/pe.em:322
 #, c-format
 msgid "  --disable-stdcall-fixup            Don't link _sym to _sym at nn\n"
 msgstr "  --disable-stdcall-fixup            No enlazar _sym con _sym at nn\n"
 
-#: emultempl/pe.em:320
+#: emultempl/pe.em:323
 #, c-format
 msgid "  --enable-stdcall-fixup             Link _sym to _sym at nn without warnings\n"
 msgstr "  --enable-stdcall-fixup             Enlazar _sym con _sym at nn sin avisos\n"
 
-#: emultempl/pe.em:321
+#: emultempl/pe.em:324
 #, c-format
 msgid "  --exclude-symbols sym,sym,...      Exclude symbols from automatic export\n"
 msgstr "  --exclude-symbols sim,sim,...      Excluye los símbolos de la exportación automática\n"
 
-#: emultempl/pe.em:322
+#: emultempl/pe.em:325
 #, c-format
 msgid "  --exclude-libs lib,lib,...         Exclude libraries from automatic export\n"
 msgstr "  --exclude-libs bib,bib,...         Excluye las bibliotecas de la exportación automática\n"
 
-#: emultempl/pe.em:323
+#: emultempl/pe.em:326
 #, c-format
 msgid "  --export-all-symbols               Automatically export all globals to DLL\n"
 msgstr "  --export-all-symbols               Exporta automáticamente todos los globales a la DLL\n"
 
-#: emultempl/pe.em:324
+#: emultempl/pe.em:327
 #, c-format
 msgid "  --kill-at                          Remove @nn from exported symbols\n"
 msgstr "  --kill-at                          Elimina @nn de los símbolos exportados\n"
 
-#: emultempl/pe.em:325
+#: emultempl/pe.em:328
 #, c-format
 msgid "  --out-implib <file>                Generate import library\n"
 msgstr "  --out-implib <fichero>             Generar una biblioteca de importación\n"
 
-#: emultempl/pe.em:326
+#: emultempl/pe.em:329
 #, c-format
 msgid "  --output-def <file>                Generate a .DEF file for the built DLL\n"
 msgstr "  --output-def <fichero>             Generar un fichero .DEF para la DLL construida\n"
 
-#: emultempl/pe.em:327
+#: emultempl/pe.em:330
 #, c-format
 msgid "  --warn-duplicate-exports           Warn about duplicate exports.\n"
 msgstr "  --warn-duplicate-exports           Avisar sobre exportaciones duplicadas.\n"
 
-#: emultempl/pe.em:328
+#: emultempl/pe.em:331
 #, c-format
 msgid ""
 "  --compat-implib                    Create backward compatible import libs;\n"
@@ -179,7 +179,7 @@
 "  --compat-implib                    Crear bibliotecas de importación compatibles hacia atrás;\n"
 "                                       cerar además __imp_<SÍMBOLO>.\n"
 
-#: emultempl/pe.em:330
+#: emultempl/pe.em:333
 #, c-format
 msgid ""
 "  --enable-auto-image-base           Automatically choose image base for DLLs\n"
@@ -188,12 +188,12 @@
 "  --enable-auto-image-base           Escoger automáticamente la imagen base para las DLLs\n"
 "                                       a menos que el usuario especifique una\n"
 
-#: emultempl/pe.em:332
+#: emultempl/pe.em:335
 #, c-format
 msgid "  --disable-auto-image-base          Do not auto-choose image base. (default)\n"
 msgstr "  --disable-auto-image-base          No escoger automáticamente una imagen base. (por defecto)\n"
 
-#: emultempl/pe.em:333
+#: emultempl/pe.em:336
 #, c-format
 msgid ""
 "  --dll-search-prefix=<string>       When linking dynamically to a dll without\n"
@@ -204,7 +204,7 @@
 "                                       biblioteca de importación, usar <cadena><nombrebase>.dll \n"
 "                                       en lugar de lib<nombrebase>.dll \n"
 
-#: emultempl/pe.em:336
+#: emultempl/pe.em:339
 #, c-format
 msgid ""
 "  --enable-auto-import               Do sophistcated linking of _sym to\n"
@@ -213,12 +213,12 @@
 "  --enable-auto-import               Hacer enlazado sofisticado de _sym a\n"
 "                                       __imp_sym para las referencias DATA\n"
 
-#: emultempl/pe.em:338
+#: emultempl/pe.em:341
 #, c-format
 msgid "  --disable-auto-import              Do not auto-import DATA items from DLLs\n"
 msgstr "  --disable-auto-import              No importar automáticamente elementos DATA de las DLLs\n"
 
-#: emultempl/pe.em:339
+#: emultempl/pe.em:342
 #, c-format
 msgid ""
 "  --enable-runtime-pseudo-reloc      Work around auto-import limitations by\n"
@@ -229,7 +229,7 @@
 "                                       agregando pseudo-reubicaciones resueltas\n"
 "                                       al momento de ejecución.\n"
 
-#: emultempl/pe.em:342
+#: emultempl/pe.em:345
 #, c-format
 msgid ""
 "  --disable-runtime-pseudo-reloc     Do not add runtime pseudo-relocations for\n"
@@ -238,7 +238,7 @@
 "  --disable-runtime-pseudo-reloc     No agregar pseudo-reubicaciones al momento\n"
 "                                       de ejecución para DATOS autoimportados.\n"
 
-#: emultempl/pe.em:344
+#: emultempl/pe.em:347
 #, c-format
 msgid ""
 "  --enable-extra-pe-debug            Enable verbose debug output when building\n"
@@ -247,7 +247,7 @@
 "  --enable-extra-pe-debug            Activa la salida de depuración detallada al construir\n"
 "                                       o enlazar a DLLs (en part. con auto-importación)\n"
 
-#: emultempl/pe.em:347
+#: emultempl/pe.em:350
 #, c-format
 msgid ""
 "  --large-address-aware              Executable supports virtual addresses\n"
@@ -256,82 +256,82 @@
 "  --large-address-aware              El ejecutable tiene soporte para direcciones\n"
 "                                       virtuales mayores a 2 gigabytes\n"
 
-#: emultempl/pe.em:414
+#: emultempl/pe.em:417
 msgid "%P: warning: bad version number in -subsystem option\n"
 msgstr "%P: aviso: número de versión erróneo en la opción -subsystem\n"
 
-#: emultempl/pe.em:445
+#: emultempl/pe.em:448
 msgid "%P%F: invalid subsystem type %s\n"
 msgstr "%P%F: tipo de subsistema %s inválido\n"
 
-#: emultempl/pe.em:484
+#: emultempl/pe.em:487
 msgid "%P%F: invalid hex number for PE parameter '%s'\n"
 msgstr "%P%F: número hexadecimal inválido para el parámetro PE '%s'\n"
 
-#: emultempl/pe.em:501
+#: emultempl/pe.em:504
 msgid "%P%F: strange hex info for PE parameter '%s'\n"
 msgstr "%P%F: información hexadecimal extraña para el parámetro PE '%s'\n"
 
-#: emultempl/pe.em:518
+#: emultempl/pe.em:521
 #, c-format
 msgid "%s: Can't open base file %s\n"
 msgstr "%s: No se puede abrir el fichero base %s\n"
 
-#: emultempl/pe.em:734
+#: emultempl/pe.em:737
 msgid "%P: warning, file alignment > section alignment.\n"
 msgstr "%P: aviso, alineación del fichero > alineación de la sección.\n"
 
-#: emultempl/pe.em:821 emultempl/pe.em:848
+#: emultempl/pe.em:824 emultempl/pe.em:851
 #, c-format
 msgid "Warning: resolving %s by linking to %s\n"
 msgstr "Aviso: resolviendo %s al enlazar con %s\n"
 
-#: emultempl/pe.em:826 emultempl/pe.em:853
+#: emultempl/pe.em:829 emultempl/pe.em:856
 msgid "Use --enable-stdcall-fixup to disable these warnings\n"
 msgstr "Use --enable-stdcall-fixup para desactivar estos avisos\n"
 
-#: emultempl/pe.em:827 emultempl/pe.em:854
+#: emultempl/pe.em:830 emultempl/pe.em:857
 msgid "Use --disable-stdcall-fixup to disable these fixups\n"
 msgstr "Use --disable-stdcall-fixup para desactivar estas composturas\n"
 
-#: emultempl/pe.em:873
+#: emultempl/pe.em:876
 #, c-format
 msgid "%C: Cannot get section contents - auto-import exception\n"
 msgstr "%C: No se puede obtener el contenido de la sección - excepción de auto-importación\n"
 
-#: emultempl/pe.em:910
+#: emultempl/pe.em:913
 #, c-format
 msgid "Info: resolving %s by linking to %s (auto-import)\n"
 msgstr "Información: resolviendo %s al enlazar con %s (auto-importación)\n"
 
-#: emultempl/pe.em:983
+#: emultempl/pe.em:986
 msgid "%F%P: PE operations on non PE file.\n"
 msgstr "%F%P: operaciones PE en un fichero que no es PE.\n"
 
-#: emultempl/pe.em:1258
+#: emultempl/pe.em:1261
 #, c-format
 msgid "Errors encountered processing file %s\n"
 msgstr "Se encontraron errores al procesar el fichero %s\n"
 
-#: emultempl/pe.em:1281
+#: emultempl/pe.em:1284
 #, c-format
 msgid "Errors encountered processing file %s for interworking"
 msgstr "Se encontraron errores el procesar el fichero %s para interoperabilidad"
 
-#: emultempl/pe.em:1340 ldexp.c:570 ldlang.c:2408 ldlang.c:5135 ldlang.c:5166
-#: ldmain.c:1161
+#: emultempl/pe.em:1345 ldexp.c:522 ldlang.c:2946 ldlang.c:5800 ldlang.c:5831
+#: ldmain.c:1167
 msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
 msgstr "%P%F: falló bfd_link_hash_lookup: %E\n"
 
-#: ldcref.c:153
+#: ldcref.c:154
 msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
 msgstr "%X%P: falló bfd_hash_table_init de la tabla cref: %E\n"
 
-#: ldcref.c:159
+#: ldcref.c:160
 msgid "%X%P: cref_hash_lookup failed: %E\n"
 msgstr "%X%P: falló cref_hash_lookup: %E\n"
 
-#: ldcref.c:225
+#: ldcref.c:226
 #, c-format
 msgid ""
 "\n"
@@ -342,33 +342,33 @@
 "Tabla de Referencias Cruzadas\n"
 "\n"
 
-#: ldcref.c:226
+#: ldcref.c:227
 msgid "Symbol"
 msgstr "Símbolo"
 
-#: ldcref.c:234
+#: ldcref.c:235
 #, c-format
 msgid "File\n"
 msgstr "Fichero\n"
 
-#: ldcref.c:238
+#: ldcref.c:239
 #, c-format
 msgid "No symbols\n"
 msgstr "No hay símbolos\n"
 
-#: ldcref.c:359 ldcref.c:478
+#: ldcref.c:360 ldcref.c:482
 msgid "%B%F: could not read symbols; %E\n"
 msgstr "%B%F: no se pueden leer símbolos; %E\n"
 
-#: ldcref.c:363 ldcref.c:482 ldmain.c:1226 ldmain.c:1230
+#: ldcref.c:364 ldcref.c:486 ldmain.c:1232 ldmain.c:1236
 msgid "%B%F: could not read symbols: %E\n"
 msgstr "%B%F: no se pueden leer símbolos: %E\n"
 
-#: ldcref.c:414
+#: ldcref.c:415
 msgid "%P: symbol `%T' missing from main hash table\n"
 msgstr "%P: falta el símbolo `%T' de la tabla principal de dispersión\n"
 
-#: ldcref.c:547 ldcref.c:554 ldmain.c:1273 ldmain.c:1280
+#: ldcref.c:557 ldcref.c:564 ldmain.c:1279 ldmain.c:1286
 msgid "%B%F: could not read relocs: %E\n"
 msgstr "%B%F: no se pueden leer las reubicaciones: %E\n"
 
@@ -376,7 +376,7 @@
 #. in OUTSECNAME.  This reloc is from a section which is
 #. mapped into a section from which references to OUTSECNAME
 #. are prohibited.  We must report an error.
-#: ldcref.c:573
+#: ldcref.c:591
 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
 msgstr "%X%C: referencia cruzada prohibida de %s a `%T' en %s\n"
 
@@ -406,83 +406,83 @@
 "Conjunto            Símbolo\n"
 "\n"
 
-#: ldemul.c:227
+#: ldemul.c:236
 #, c-format
 msgid "%S SYSLIB ignored\n"
 msgstr "%S se ignora SYSLIB\n"
 
-#: ldemul.c:233
+#: ldemul.c:242
 #, c-format
 msgid "%S HLL ignored\n"
 msgstr "%S se ignora HLL\n"
 
-#: ldemul.c:253
+#: ldemul.c:262
 msgid "%P: unrecognised emulation mode: %s\n"
 msgstr "%P: no se reconoce el modo de emulación: %s\n"
 
-#: ldemul.c:254
+#: ldemul.c:263
 msgid "Supported emulations: "
 msgstr "Emulaciones con soporte: "
 
-#: ldemul.c:296
+#: ldemul.c:305
 #, c-format
 msgid "  no emulation specific options.\n"
 msgstr "  no hay opciones específicas de emulación.\n"
 
-#: ldexp.c:379
+#: ldexp.c:338
 #, c-format
 msgid "%F%S %% by zero\n"
 msgstr "%F%S %% por cero\n"
 
-#: ldexp.c:386
+#: ldexp.c:346
 #, c-format
 msgid "%F%S / by zero\n"
 msgstr "%F%S / por cero\n"
 
-#: ldexp.c:583
+#: ldexp.c:536
 #, c-format
 msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
 msgstr "%X%S: símbolo `%s' sin resolución referenciado en la expresión\n"
 
-#: ldexp.c:604
+#: ldexp.c:547
 #, c-format
 msgid "%F%S: undefined symbol `%s' referenced in expression\n"
 msgstr "%F%S: símbolo `%s' indefinido referenciado en la expresión\n"
 
-#: ldexp.c:665 ldexp.c:678
+#: ldexp.c:608 ldexp.c:621
 #, c-format
 msgid "%F%S: undefined MEMORY region `%s' referenced in expression\n"
 msgstr "%F%S: región MEMORY `%s' indefinida referenciada en la expresión\n"
 
-#: ldexp.c:757
+#: ldexp.c:683
 #, c-format
 msgid "%F%S can not PROVIDE assignment to location counter\n"
 msgstr "%F%S no puede hacer una asignación PROVIDE al contador de ubicación\n"
 
-#: ldexp.c:770
+#: ldexp.c:697
 #, c-format
 msgid "%F%S invalid assignment to location counter\n"
 msgstr "%F%S asignación inválida al contador de ubicación\n"
 
-#: ldexp.c:774
+#: ldexp.c:700
 #, c-format
 msgid "%F%S assignment to location counter invalid outside of SECTION\n"
 msgstr "%F%S asignación al contador de ubicación es inválida fuera de SECTION\n"
 
-#: ldexp.c:783
+#: ldexp.c:709
 msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
 msgstr "%F%S no se puede mover el contador de ubicación hacia atrás (de %V a %V)\n"
 
-#: ldexp.c:810
+#: ldexp.c:748
 msgid "%P%F:%s: hash creation failed\n"
 msgstr "%P%F:%s: falló la creación de la dispersión\n"
 
-#: ldexp.c:1077 ldexp.c:1109
+#: ldexp.c:1000 ldexp.c:1025
 #, c-format
 msgid "%F%S nonconstant expression for %s\n"
 msgstr "%F%S expresión no constante para %s\n"
 
-#: ldexp.c:1163
+#: ldexp.c:1082
 #, c-format
 msgid "%F%S non constant expression for %s\n"
 msgstr "%F%S expresión no constante para %s\n"
@@ -543,19 +543,23 @@
 msgid "%P%F: cannot represent machine `%s'\n"
 msgstr "%P%F: no se puede representar la máquina `%s'\n"
 
-#: ldlang.c:511
-msgid "%P%F: out of memory during initialization"
-msgstr "%P%F: memoria agotada durante la inicialización"
+#: ldlang.c:940 ldlang.c:982 ldlang.c:2695
+msgid "%P%F: can not create hash table: %E\n"
+msgstr "%P%F: no se puede crear la tabla de dispersión: %E\n"
 
-#: ldlang.c:551
+#: ldlang.c:1025
 msgid "%P:%S: warning: redeclaration of memory region '%s'\n"
 msgstr "%P:%S: aviso: redeclaración de la región de memoria '%s'\n"
 
-#: ldlang.c:557
+#: ldlang.c:1031
 msgid "%P:%S: warning: memory region %s not declared\n"
 msgstr "%P:%S: aviso: no se declaró la región %s\n"
 
-#: ldlang.c:1073
+#: ldlang.c:1108 ldlang.c:1135
+msgid "%P%F: failed creating section `%s': %E\n"
+msgstr "%P%F: falló la creación de la sección `%s': %E\n"
+
+#: ldlang.c:1601
 msgid ""
 "\n"
 "Memory Configuration\n"
@@ -565,23 +569,23 @@
 "Configuración de la Memoria\n"
 "\n"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Name"
 msgstr "Nombre"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Origin"
 msgstr "Origen"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Length"
 msgstr "Longitud"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Attributes"
 msgstr "Atributos"
 
-#: ldlang.c:1115
+#: ldlang.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -592,158 +596,154 @@
 "Guión del enlazador y mapa de memoria\n"
 "\n"
 
-#: ldlang.c:1183
+#: ldlang.c:1709
 msgid "%P%F: Illegal use of `%s' section\n"
 msgstr "%P%F: Uso ilegal de la sección `%s'\n"
 
-#: ldlang.c:1193
+#: ldlang.c:1716
 msgid "%P%F: output format %s cannot represent section called %s\n"
 msgstr "%P%F: el formato de salida %s no puede representar la sección llamada %s\n"
 
-#: ldlang.c:1775
+#: ldlang.c:2313
 msgid "%B: file not recognized: %E\n"
 msgstr "%B: fichero no reconocido: %E\n"
 
-#: ldlang.c:1776
+#: ldlang.c:2314
 msgid "%B: matching formats:"
 msgstr "%B: formatos coincidentes:"
 
-#: ldlang.c:1783
+#: ldlang.c:2321
 msgid "%F%B: file not recognized: %E\n"
 msgstr "%F%B: fichero no reconocido: %E\n"
 
-#: ldlang.c:1847
+#: ldlang.c:2385
 msgid "%F%B: member %B in archive is not an object\n"
 msgstr "%F%B: el miembro %B en el archivo no es un objeto\n"
 
-#: ldlang.c:1858 ldlang.c:1872
+#: ldlang.c:2396 ldlang.c:2410
 msgid "%F%B: could not read symbols: %E\n"
 msgstr "%F%B: no se puede leer símbolos: %E\n"
 
-#: ldlang.c:2127
+#: ldlang.c:2665
 msgid "%P: warning: could not find any targets that match endianness requirement\n"
 msgstr "%P: aviso: no se puede encontrar ningún objetivo que coincida con los requerimientos de endianess\n"
 
-#: ldlang.c:2141
+#: ldlang.c:2679
 msgid "%P%F: target %s not found\n"
 msgstr "%P%F: no se encuentra el objetivo %s\n"
 
-#: ldlang.c:2143
+#: ldlang.c:2681
 msgid "%P%F: cannot open output file %s: %E\n"
 msgstr "%P%F: no se puede abrir el fichero de salida %s: %E\n"
 
-#: ldlang.c:2149
+#: ldlang.c:2687
 msgid "%P%F:%s: can not make object file: %E\n"
 msgstr "%P%F:%s: no se puede hacer el fichero objeto: %E\n"
 
-#: ldlang.c:2153
+#: ldlang.c:2691
 msgid "%P%F:%s: can not set architecture: %E\n"
 msgstr "%P%F:%s: no se puede establecer la arquitectura: %E\n"
 
-#: ldlang.c:2157
-msgid "%P%F: can not create link hash table: %E\n"
-msgstr "%P%F: no se puede crear la tabla de dispersión de enlace: %E\n"
-
-#: ldlang.c:2301
+#: ldlang.c:2839
 msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
 msgstr "%P%F: falló bfd_hash_lookup al crear el símbolo %s\n"
 
-#: ldlang.c:2319
+#: ldlang.c:2857
 msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
 msgstr "%P%F: falló bfd_hash_allocate al crear el símbolo %s\n"
 
-#: ldlang.c:2710
+#: ldlang.c:3288
 msgid " load address 0x%V"
 msgstr " cargar la dirección 0x%V"
 
-#: ldlang.c:2874
+#: ldlang.c:3528
 msgid "%W (size before relaxing)\n"
 msgstr "%W (tamaño antes de la relajación)\n"
 
-#: ldlang.c:2961
+#: ldlang.c:3615
 #, c-format
 msgid "Address of section %s set to "
 msgstr "La dirección de la sección %s se estableció a "
 
-#: ldlang.c:3114
+#: ldlang.c:3768
 #, c-format
 msgid "Fail with %d\n"
 msgstr "Falló con %d\n"
 
-#: ldlang.c:3351
+#: ldlang.c:4040
 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
 msgstr "%X%P: la sección %s [%V -> %V] sobreescribe a la sección %s [%V -> %V]\n"
 
-#: ldlang.c:3379
+#: ldlang.c:4065
 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
 msgstr "%X%P: la dirección 0x%v de %B sección %s no está dentro de la región %s\n"
 
-#: ldlang.c:3388
+#: ldlang.c:4074
 msgid "%X%P: region %s is full (%B section %s)\n"
 msgstr "%X%P: la región %s está llena (%B sección %s)\n"
 
-#: ldlang.c:3439
+#: ldlang.c:4114
+#, c-format
+msgid "%F%S: non constant or forward reference address expression for section %s\n"
+msgstr "%F%S: expresión de dirección de referencia hacia adelante o no constante para la sección %s\n"
+
+#: ldlang.c:4139
 msgid "%P%X: Internal error on COFF shared library section %s\n"
 msgstr "%P%X: Error interno en la sección %s de biblioteca compartida COFF\n"
 
-#: ldlang.c:3493
+#: ldlang.c:4197
 msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
 msgstr "%P%F: aviso: no se especificó una región de memoria para la sección cargable `%s'\n"
 
-#: ldlang.c:3498
+#: ldlang.c:4202
 msgid "%P: warning: no memory region specified for loadable section `%s'\n"
 msgstr "%P: aviso: no se especificó una región de memoria para la sección cargable `%s'\n"
 
-#: ldlang.c:3515
-msgid "%P: warning: changing start of section %s by %u bytes\n"
-msgstr "%P: aviso: cambiando el inicio de la sección %s por %u bytes\n"
+#: ldlang.c:4224
+msgid "%P: warning: changing start of section %s by %lu bytes\n"
+msgstr "%P: aviso: cambiando el inicio de la sección %s por %lu bytes\n"
 
-#: ldlang.c:3532
-#, c-format
-msgid "%F%S: non constant or forward reference address expression for section %s\n"
-msgstr "%F%S: expresión de dirección de referencia hacia adelante o no constante para la sección %s\n"
-
-#: ldlang.c:3703
+#: ldlang.c:4388
 msgid "%P%F: can't relax section: %E\n"
 msgstr "%P%F: no se puede relajar la sección: %E\n"
 
-#: ldlang.c:3960
+#: ldlang.c:4636
 msgid "%F%P: invalid data statement\n"
 msgstr "%F%P: declaración inválida de datos\n"
 
-#: ldlang.c:3999
+#: ldlang.c:4669
 msgid "%F%P: invalid reloc statement\n"
 msgstr "%F%P: declaración inválida de reubicación\n"
 
-#: ldlang.c:4141
+#: ldlang.c:4802
 msgid "%P%F:%s: can't set start address\n"
 msgstr "%P%F:%s: no se puede establecer la dirección de inicio\n"
 
-#: ldlang.c:4154 ldlang.c:4173
+#: ldlang.c:4815 ldlang.c:4834
 msgid "%P%F: can't set start address\n"
 msgstr "%P%F: no se puede establecer la dirección de inicio\n"
 
-#: ldlang.c:4166
+#: ldlang.c:4827
 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
 msgstr "%P: aviso: no se puede encontrar el símbolo de entrada %s; usando por defecto %V\n"
 
-#: ldlang.c:4178
+#: ldlang.c:4839
 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
 msgstr "%P: aviso: no se puede encontrar el símbolo de entrada %s; no se establece la dirección de inicio\n"
 
-#: ldlang.c:4227
+#: ldlang.c:4888
 msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"
 msgstr "%P%F: No tiene soporte el enlazado reubicable con reubicaciones del formato %s (%B) al formato %s (%B)\n"
 
-#: ldlang.c:4237
+#: ldlang.c:4898
 msgid "%P: warning: %s architecture of input file `%B' is incompatible with %s output\n"
 msgstr "%P: aviso: la arquitectura %s del fichero de entrada `%B' es incompatible con la salida %s\n"
 
-#: ldlang.c:4259
+#: ldlang.c:4920
 msgid "%P%X: failed to merge target specific data of file %B\n"
 msgstr "%P%X: falló la mezcla de datos específicos de objetivo del fichero %B\n"
 
-#: ldlang.c:4343
+#: ldlang.c:5004
 msgid ""
 "\n"
 "Allocating common symbols\n"
@@ -751,7 +751,7 @@
 "\n"
 "Asignando símbolos comunes\n"
 
-#: ldlang.c:4344
+#: ldlang.c:5005
 msgid ""
 "Common symbol       size              file\n"
 "\n"
@@ -759,158 +759,154 @@
 "Símbolo común       tamaño            fichero\n"
 "\n"
 
-#: ldlang.c:4470
+#: ldlang.c:5131
 msgid "%P%F: invalid syntax in flags\n"
 msgstr "%P%F: sintaxis inválida en los interruptores\n"
 
-#: ldlang.c:4740
+#: ldlang.c:5406
 msgid "%P%F: Failed to create hash table\n"
 msgstr "%P%F: Falló al crear la tabla de dispersión\n"
 
-#: ldlang.c:5057
-msgid "%P%Fmultiple STARTUP files\n"
-msgstr "%P%Fficheros STARTUP múltiples\n"
+#: ldlang.c:5722
+msgid "%P%F: multiple STARTUP files\n"
+msgstr "%P%F: ficheros STARTUP múltiples\n"
 
-#: ldlang.c:5105
+#: ldlang.c:5770
 msgid "%X%P:%S: section has both a load address and a load region\n"
 msgstr "%X%P:%S: la sección tiene tanto una dirección de carga como una región de carga\n"
 
-#: ldlang.c:5345
+#: ldlang.c:6007
 msgid "%F%P: bfd_record_phdr failed: %E\n"
 msgstr "%F%P: falló bfd_record_phdr: %E\n"
 
-#: ldlang.c:5365
+#: ldlang.c:6027
 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
 msgstr "%X%P: se asignó la sección `%s' al phdr no existente `%s'\n"
 
-#: ldlang.c:5751
+#: ldlang.c:6418
 msgid "%X%P: unknown language `%s' in version information\n"
 msgstr "%X%P: lenguaje `%s' desconocido en la información de la versión\n"
 
-#: ldlang.c:5893
+#: ldlang.c:6560
 msgid "%X%P: anonymous version tag cannot be combined with other version tags\n"
 msgstr "%X%P: la marca de versión anónima no se puede combinar con otras marcas de versión\n"
 
-#: ldlang.c:5902
+#: ldlang.c:6569
 msgid "%X%P: duplicate version tag `%s'\n"
 msgstr "%X%P: marca de versión `%s' duplicada\n"
 
-#: ldlang.c:5922 ldlang.c:5931 ldlang.c:5948 ldlang.c:5958
+#: ldlang.c:6589 ldlang.c:6598 ldlang.c:6615 ldlang.c:6625
 msgid "%X%P: duplicate expression `%s' in version information\n"
 msgstr "%X%P: expresión `%s' duplicada en la información de la versión\n"
 
-#: ldlang.c:5998
+#: ldlang.c:6665
 msgid "%X%P: unable to find version dependency `%s'\n"
 msgstr "%X%P: no se puede encontrar la dependencia de versión `%s'\n"
 
-#: ldlang.c:6020
+#: ldlang.c:6687
 msgid "%X%P: unable to read .exports section contents\n"
 msgstr "%X%P: no se pueden leer los contenidos de la sección .exports\n"
 
-#: ldmain.c:229
+#: ldmain.c:232
 msgid "%X%P: can't set BFD default target to `%s': %E\n"
 msgstr "%X%P: no se puede establecer el objetivo BFD por defecto a `%s': %E\n"
 
-#: ldmain.c:341
+#: ldmain.c:345
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: no se pueden usar juntos -relax y -r\n"
 
-#: ldmain.c:343
+#: ldmain.c:347
 msgid "%P%F: -r and -shared may not be used together\n"
 msgstr "%P%F: no se pueden usar juntos -r y -shared\n"
 
-#: ldmain.c:347
-msgid "%P%F: -static and -shared may not be used together\n"
-msgstr "%P%F: no se pueden usar juntos -static y -shared\n"
-
-#: ldmain.c:352
+#: ldmain.c:353
 msgid "%P%F: -F may not be used without -shared\n"
 msgstr "%P%F: no se puede usar -F sin -shared\n"
 
-#: ldmain.c:354
+#: ldmain.c:355
 msgid "%P%F: -f may not be used without -shared\n"
 msgstr "%P%F: no se puede usar -f sin -shared\n"
 
-#: ldmain.c:396
+#: ldmain.c:397
 msgid "using external linker script:"
 msgstr "usando el guión externo del enlazador:"
 
-#: ldmain.c:398
+#: ldmain.c:399
 msgid "using internal linker script:"
 msgstr "usando el guión interno del enlazador:"
 
-#: ldmain.c:432
+#: ldmain.c:433
 msgid "%P%F: no input files\n"
 msgstr "%P%F: no hay ficheros de entrada\n"
 
-#: ldmain.c:436
+#: ldmain.c:437
 msgid "%P: mode %s\n"
 msgstr "%P: modo %s\n"
 
-#: ldmain.c:452
+#: ldmain.c:453
 msgid "%P%F: cannot open map file %s: %E\n"
 msgstr "%P%F: no se puede encontrar el fichero de mapeo %s: %E\n"
 
-#: ldmain.c:482
+#: ldmain.c:485
 msgid "%P: link errors found, deleting executable `%s'\n"
 msgstr "%P: se encontraron errores de enlace, borrando el ejecutable `%s'\n"
 
-#: ldmain.c:491
+#: ldmain.c:494
 msgid "%F%B: final close failed: %E\n"
 msgstr "%F%B: falló el cerrado final: %E\n"
 
-#: ldmain.c:517
+#: ldmain.c:520
 msgid "%X%P: unable to open for source of copy `%s'\n"
 msgstr "%X%P: no se puede abrir para la fuente de la copia `%s'\n"
 
-#: ldmain.c:520
+#: ldmain.c:523
 msgid "%X%P: unable to open for destination of copy `%s'\n"
 msgstr "%X%P: no se puede abrir para el destino de la copia `%s'\n"
 
-#: ldmain.c:527
+#: ldmain.c:530
 msgid "%P: Error writing file `%s'\n"
 msgstr "%P: Error al escribir el fichero `%s'\n"
 
-#: ldmain.c:532 pe-dll.c:1447
+#: ldmain.c:535 pe-dll.c:1494
 #, c-format
 msgid "%P: Error closing file `%s'\n"
 msgstr "%P: Error al cerrar el fichero `%s'\n"
 
-#: ldmain.c:548
+#: ldmain.c:551
 #, c-format
 msgid "%s: total time in link: %ld.%06ld\n"
 msgstr "%s: tiempo total en el enlazado: %ld.%06ld\n"
 
-#: ldmain.c:551
+#: ldmain.c:554
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr "%s: tamaño de los datos %ld\n"
 
-#: ldmain.c:634
+#: ldmain.c:637
 msgid "%P%F: missing argument to -m\n"
 msgstr "%P%F: falta el argumento para -m\n"
 
-#: ldmain.c:780 ldmain.c:798 ldmain.c:828
+#: ldmain.c:784 ldmain.c:803 ldmain.c:834
 msgid "%P%F: bfd_hash_table_init failed: %E\n"
 msgstr "%P%F: falló bfd_hash_table_init: %E\n"
 
-#: ldmain.c:784 ldmain.c:802
+#: ldmain.c:788 ldmain.c:807
 msgid "%P%F: bfd_hash_lookup failed: %E\n"
 msgstr "%P%F: falló bfd_hash_lookup: %E\n"
 
-#: ldmain.c:816
+#: ldmain.c:821
 msgid "%X%P: error: duplicate retain-symbols-file\n"
 msgstr "%X%P: error: fichero de símbolos a retener duplicado\n"
 
-#: ldmain.c:858
+#: ldmain.c:864
 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
 msgstr "%P%F: falló bfd_hash_lookup para la inserción: %E\n"
 
-#: ldmain.c:863
+#: ldmain.c:869
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
 msgstr "%P `-retain-symbols-file' se impone a `-s' y `-S'\n"
 
-#: ldmain.c:938
+#: ldmain.c:944
 #, c-format
 msgid ""
 "Archive member included because of file (symbol)\n"
@@ -919,173 +915,169 @@
 "Se incluyó el miembro del archivo debido al fichero (símbolo)\n"
 "\n"
 
-#: ldmain.c:1008
+#: ldmain.c:1014
 msgid "%X%C: multiple definition of `%T'\n"
 msgstr "%X%C: definiciones múltiples de `%T'\n"
 
-#: ldmain.c:1011
+#: ldmain.c:1017
 msgid "%D: first defined here\n"
 msgstr "%D: primero se definió aquí\n"
 
-#: ldmain.c:1015
+#: ldmain.c:1021
 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
 msgstr "%P: Desactivandola la relajación: no trabajará con definiciones múltiples\n"
 
 # FIXME: Revisar en el código fuente si `common' se refiere a una orden o
 # se puede sustituir por `común'. cfuga
-#: ldmain.c:1045
+#: ldmain.c:1051
 msgid "%B: warning: definition of `%T' overriding common\n"
 msgstr "%B: aviso: la definición de `%T' se impone a common\n"
 
-#: ldmain.c:1048
+#: ldmain.c:1054
 msgid "%B: warning: common is here\n"
 msgstr "%B: aviso: common está aquí\n"
 
-#: ldmain.c:1055
+#: ldmain.c:1061
 msgid "%B: warning: common of `%T' overridden by definition\n"
 msgstr "%B: aviso: el common de `%T' es sobrepasado por definición\n"
 
-#: ldmain.c:1058
+#: ldmain.c:1064
 msgid "%B: warning: defined here\n"
 msgstr "%B: aviso: definido aquí\n"
 
-#: ldmain.c:1065
+#: ldmain.c:1071
 msgid "%B: warning: common of `%T' overridden by larger common\n"
 msgstr "%B: aviso: el common de `%T' es sobrepasado por un common más grande\n"
 
-#: ldmain.c:1068
+#: ldmain.c:1074
 msgid "%B: warning: larger common is here\n"
 msgstr "%B: aviso: el common más grande está aquí\n"
 
-#: ldmain.c:1072
+#: ldmain.c:1078
 msgid "%B: warning: common of `%T' overriding smaller common\n"
 msgstr "%B: aviso: el common de `%T' es sobrepasado por un common más pequeño\n"
 
-#: ldmain.c:1075
+#: ldmain.c:1081
 msgid "%B: warning: smaller common is here\n"
 msgstr "%B: aviso: el common más pequeño está aquí\n"
 
-#: ldmain.c:1079
+#: ldmain.c:1085
 msgid "%B: warning: multiple common of `%T'\n"
 msgstr "%B: aviso: common múltiple de `%T'\n"
 
-#: ldmain.c:1081
+#: ldmain.c:1087
 msgid "%B: warning: previous common is here\n"
 msgstr "%B: aviso: el common previo está aquí\n"
 
-#: ldmain.c:1101 ldmain.c:1139
+#: ldmain.c:1107 ldmain.c:1145
 msgid "%P: warning: global constructor %s used\n"
 msgstr "%P: aviso: se usó el constructor global %s\n"
 
-#: ldmain.c:1149
+#: ldmain.c:1155
 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
 msgstr "%P%F: error del frente trasero de BFD: BFD_RELOC_CTOR sin soporte\n"
 
 #. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1203 ldmain.c:1205 ldmain.c:1207 ldmain.c:1245 ldmain.c:1293
+#: ldmain.c:1209 ldmain.c:1211 ldmain.c:1213 ldmain.c:1251 ldmain.c:1299
 msgid "warning: "
 msgstr "aviso: "
 
-#: ldmain.c:1327
+#: ldmain.c:1334
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
 msgstr "%F%P: falló bfd_hash_table_init: %E\n"
 
-#: ldmain.c:1334
+#: ldmain.c:1341
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
 msgstr "%F%P: falló bfd_hash_lookup: %E\n"
 
-#: ldmain.c:1355
+#: ldmain.c:1362
 msgid "%X%C: undefined reference to `%T'\n"
 msgstr "%X%C: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1358
+#: ldmain.c:1365
 msgid "%C: warning: undefined reference to `%T'\n"
 msgstr "%C: aviso: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1364
+#: ldmain.c:1371
 msgid "%X%D: more undefined references to `%T' follow\n"
 msgstr "%X%D: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1367
+#: ldmain.c:1374
 msgid "%D: warning: more undefined references to `%T' follow\n"
 msgstr "%D: aviso: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1378
+#: ldmain.c:1385
 msgid "%X%B: undefined reference to `%T'\n"
 msgstr "%X%B: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1381
+#: ldmain.c:1388
 msgid "%B: warning: undefined reference to `%T'\n"
 msgstr "%B: aviso: referencia a `%T' sin definir\n"
 
-#: ldmain.c:1387
+#: ldmain.c:1394
 msgid "%X%B: more undefined references to `%T' follow\n"
 msgstr "%X%B: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1390
+#: ldmain.c:1397
 msgid "%B: warning: more undefined references to `%T' follow\n"
 msgstr "%B: aviso: más referencias a `%T' sin definir a continuación\n"
 
-#: ldmain.c:1425 ldmain.c:1478 ldmain.c:1496
-msgid "%P%X: generated"
-msgstr "%P%X: generado"
-
-#: ldmain.c:1432
+#: ldmain.c:1436
 msgid " additional relocation overflows omitted from the output\n"
 msgstr " se omitieron desbordamientos de reubicación adicionales de la salida\n"
 
-#: ldmain.c:1445
+#: ldmain.c:1449
 msgid " relocation truncated to fit: %s against undefined symbol `%T'"
 msgstr " reubicación truncada para ajustar: %s contra el símbolo `%T' sin definir"
 
-#: ldmain.c:1450
+#: ldmain.c:1454
 msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"
 msgstr " reubicación truncada para ajustar: %s contra el símbolo `%T' definido en la sección %A en %B"
 
-#: ldmain.c:1460
+#: ldmain.c:1466
 msgid " relocation truncated to fit: %s against `%T'"
 msgstr " reubicación truncada para ajustar: %s contra `%T'"
 
-#: ldmain.c:1481
+#: ldmain.c:1483
 #, c-format
-msgid "dangerous relocation: %s\n"
-msgstr "reubicación peligrosa: %s\n"
+msgid "%X%C: dangerous relocation: %s\n"
+msgstr "%X%C: reubicación peligrosa: %s\n"
 
-#: ldmain.c:1499
-msgid " reloc refers to symbol `%T' which is not being output\n"
-msgstr " la reubicación se refiere al símbolo `%T' el cual no se muestra\n"
+#: ldmain.c:1498
+msgid "%X%C: reloc refers to symbol `%T' which is not being output\n"
+msgstr "%X%C: la reubicación se refiere al símbolo `%T' el cual no se muestra\n"
 
-#: ldmisc.c:149
+#: ldmisc.c:147
 #, c-format
 msgid "no symbol"
 msgstr "no hay símbolo"
 
-#: ldmisc.c:240
+#: ldmisc.c:238
 #, c-format
 msgid "built in linker script:%u"
 msgstr "guión interno del enlazador:%u"
 
-#: ldmisc.c:289 ldmisc.c:293
+#: ldmisc.c:294 ldmisc.c:298
 msgid "%B%F: could not read symbols\n"
 msgstr "%B%F: no se pueden leer los símbolos\n"
 
-#: ldmisc.c:329
-msgid "%B: In function `%T':\n"
-msgstr "%B: En la función `%T':\n"
+#: ldmisc.c:340
+msgid "%B: In function `%T'"
+msgstr "%B: En la función `%T'"
 
-#: ldmisc.c:480
+#: ldmisc.c:510
 msgid "%F%P: internal error %s %d\n"
 msgstr "%F%P: error interno %s %d\n"
 
-#: ldmisc.c:526
+#: ldmisc.c:556
 msgid "%P: internal error: aborting at %s line %d in %s\n"
 msgstr "%P: error interno: abortando en %s línea %d en %s\n"
 
-#: ldmisc.c:529
+#: ldmisc.c:559
 msgid "%P: internal error: aborting at %s line %d\n"
 msgstr "%P: error interno: abortando en %s línea %d\n"
 
-#: ldmisc.c:531
+#: ldmisc.c:561
 msgid "%P%F: please report this bug\n"
 msgstr "%P%F: por favor reporte este bicho\n"
 
@@ -1119,278 +1111,278 @@
 msgid "%P%F: bfd_new_link_order failed\n"
 msgstr "%P%F: falló bfd_new_link_order\n"
 
-#: ldwrite.c:341
+#: ldwrite.c:344
 msgid "%F%P: cannot create split section name for %s\n"
 msgstr "%F%P: no se puede crear la tabla de división de secciones para %s\n"
 
-#: ldwrite.c:353
+#: ldwrite.c:356
 msgid "%F%P: clone section failed: %E\n"
 msgstr "%F%P: falló la clonación de la sección: %E\n"
 
-#: ldwrite.c:391
+#: ldwrite.c:394
 #, c-format
 msgid "%8x something else\n"
 msgstr "%8x algo más\n"
 
-#: ldwrite.c:561
+#: ldwrite.c:564
 msgid "%F%P: final link failed: %E\n"
 msgstr "%F%P: falló el enlace final: %E\n"
 
-#: lexsup.c:195 lexsup.c:327
+#: lexsup.c:196 lexsup.c:328
 msgid "KEYWORD"
 msgstr "PALABRA CLAVE"
 
-#: lexsup.c:195
+#: lexsup.c:196
 msgid "Shared library control for HP/UX compatibility"
 msgstr "Control de biblioteca compartida para compatibilidad con HP/UX"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "ARCH"
 msgstr "ARQ"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "Set architecture"
 msgstr "Establecer la arquitectura"
 
-#: lexsup.c:200 lexsup.c:421
+#: lexsup.c:201 lexsup.c:422
 msgid "TARGET"
 msgstr "OBJETIVO"
 
-#: lexsup.c:200
+#: lexsup.c:201
 msgid "Specify target for following input files"
 msgstr "Especificar el objetivo para los siguientes ficheros de entrada"
 
-#: lexsup.c:203 lexsup.c:252 lexsup.c:264 lexsup.c:277 lexsup.c:380
-#: lexsup.c:433 lexsup.c:490
+#: lexsup.c:204 lexsup.c:253 lexsup.c:265 lexsup.c:278 lexsup.c:381
+#: lexsup.c:434 lexsup.c:491
 msgid "FILE"
 msgstr "FICHERO"
 
-#: lexsup.c:203
+#: lexsup.c:204
 msgid "Read MRI format linker script"
 msgstr "Leer el guión del enlazador de formato MRI"
 
-#: lexsup.c:205
+#: lexsup.c:206
 msgid "Force common symbols to be defined"
 msgstr "Forzar que los símbolos comunes sean definidos"
 
-#: lexsup.c:209 lexsup.c:475 lexsup.c:477 lexsup.c:479
+#: lexsup.c:210 lexsup.c:476 lexsup.c:478 lexsup.c:480
 msgid "ADDRESS"
 msgstr "DIRECCIÓN"
 
-#: lexsup.c:209
+#: lexsup.c:210
 msgid "Set start address"
 msgstr "Establecer la dirección de inicio"
 
-#: lexsup.c:211
+#: lexsup.c:212
 msgid "Export all dynamic symbols"
 msgstr "Exportar todos los símbolos dinámicos"
 
-#: lexsup.c:213
+#: lexsup.c:214
 msgid "Link big-endian objects"
 msgstr "Enlazar objetos big-endian"
 
-#: lexsup.c:215
+#: lexsup.c:216
 msgid "Link little-endian objects"
 msgstr "Enlazar objetos little-endian"
 
-#: lexsup.c:217 lexsup.c:220
+#: lexsup.c:218 lexsup.c:221
 msgid "SHLIB"
 msgstr "BIBCOMP"
 
-#: lexsup.c:217
+#: lexsup.c:218
 msgid "Auxiliary filter for shared object symbol table"
 msgstr "Filtro auxiliar para la tabla de símbolos de objetos compartidos"
 
-#: lexsup.c:220
+#: lexsup.c:221
 msgid "Filter for shared object symbol table"
 msgstr "Filtro para la tabla de símbolos de objetos compartidos"
 
-#: lexsup.c:223
+#: lexsup.c:224
 msgid "Ignored"
 msgstr "Ignorado"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "SIZE"
 msgstr "TAMAÑO"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "Small data size (if no size, same as --shared)"
 msgstr "Tamaño de los datos small (si no se especifica, es el mismo que --shared)"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "FILENAME"
 msgstr "FICHERO"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "Set internal name of shared library"
 msgstr "Establecer el nombre interno de la biblioteca compartida"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "PROGRAM"
 msgstr "PROGRAMA"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "Set PROGRAM as the dynamic linker to use"
 msgstr "Establece el PROGRAMA como el enlazador dinámico a utilizar"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "LIBNAME"
 msgstr "NOMBREBIB"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "Search for library LIBNAME"
 msgstr "Buscar la biblioteca NOMBREBIB"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "DIRECTORY"
 msgstr "DIRECTORIO"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "Add DIRECTORY to library search path"
 msgstr "Agregar el DIRECTORIO a la ruta de búsqueda de bibliotecas"
 
-#: lexsup.c:238
+#: lexsup.c:239
 msgid "Override the default sysroot location"
 msgstr "Sobreescribir la ubicación de sysroot por defecto"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "EMULATION"
 msgstr "EMULACIÓN"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "Set emulation"
 msgstr "Establecer la emulación"
 
-#: lexsup.c:242
+#: lexsup.c:243
 msgid "Print map file on standard output"
 msgstr "Imprimir el fichero mapa en la salida estándar"
 
-#: lexsup.c:244
+#: lexsup.c:245
 msgid "Do not page align data"
 msgstr "No paginar los datos alineados"
 
-#: lexsup.c:246
+#: lexsup.c:247
 msgid "Do not page align data, do not make text readonly"
 msgstr "No paginar los datos alineados, no hacer el texto de sólo lectura"
 
-#: lexsup.c:249
+#: lexsup.c:250
 msgid "Page align data, make text readonly"
 msgstr "Paginar los datos alineados, hacer el texto de sólo lectura"
 
-#: lexsup.c:252
+#: lexsup.c:253
 msgid "Set output file name"
 msgstr "Establecer el nombre del fichero de salida"
 
-#: lexsup.c:254
+#: lexsup.c:255
 msgid "Optimize output file"
 msgstr "Optimizar la salida del fichero"
 
-#: lexsup.c:256
+#: lexsup.c:257
 msgid "Ignored for SVR4 compatibility"
 msgstr "Ignorado por compatibilidad con SVR4"
 
-#: lexsup.c:260
+#: lexsup.c:261
 msgid "Generate relocatable output"
 msgstr "Generar salida reubicable"
 
-#: lexsup.c:264
+#: lexsup.c:265
 msgid "Just link symbols (if directory, same as --rpath)"
 msgstr "Sólo enlazar símbolos (si es un directorio, es igual que --rpath)"
 
-#: lexsup.c:267
+#: lexsup.c:268
 msgid "Strip all symbols"
 msgstr "Descartar todos los símbolos"
 
-#: lexsup.c:269
+#: lexsup.c:270
 msgid "Strip debugging symbols"
 msgstr "Descartar los símbolos de depuración"
 
-#: lexsup.c:271
+#: lexsup.c:272
 msgid "Strip symbols in discarded sections"
 msgstr "Descartar símbolos en las secciones descartadas"
 
-#: lexsup.c:273
+#: lexsup.c:274
 msgid "Do not strip symbols in discarded sections"
 msgstr "No descartar símbolos en las secciones descartadas"
 
-#: lexsup.c:275
+#: lexsup.c:276
 msgid "Trace file opens"
 msgstr "Rastrear la apertura de ficheros"
 
-#: lexsup.c:277
+#: lexsup.c:278
 msgid "Read linker script"
 msgstr "Leer el guión del enlazador"
 
-#: lexsup.c:279 lexsup.c:297 lexsup.c:363 lexsup.c:378 lexsup.c:468
-#: lexsup.c:493 lexsup.c:520
+#: lexsup.c:280 lexsup.c:298 lexsup.c:364 lexsup.c:379 lexsup.c:469
+#: lexsup.c:494 lexsup.c:521
 msgid "SYMBOL"
 msgstr "SÍMBOLO"
 
-#: lexsup.c:279
+#: lexsup.c:280
 msgid "Start with undefined reference to SYMBOL"
 msgstr "Iniciar con una referencia sin definir hacia el SÍMBOLO"
 
-#: lexsup.c:282
+#: lexsup.c:283
 msgid "[=SECTION]"
 msgstr "[=SECCIóN]"
 
-#: lexsup.c:283
+#: lexsup.c:284
 msgid "Don't merge input [SECTION | orphan] sections"
 msgstr "No mezclar secciones de entrada [SECCIÓN | huérfanas]"
 
-#: lexsup.c:285
+#: lexsup.c:286
 msgid "Build global constructor/destructor tables"
 msgstr "Construir tablas globales de constructores/destructores"
 
-#: lexsup.c:287
+#: lexsup.c:288
 msgid "Print version information"
 msgstr "Mostrar la información de la versión"
 
-#: lexsup.c:289
+#: lexsup.c:290
 msgid "Print version and emulation information"
 msgstr "Mostrar la información de la versión y la emulación"
 
-#: lexsup.c:291
+#: lexsup.c:292
 msgid "Discard all local symbols"
 msgstr "Descartar todos los símbolos locales"
 
-#: lexsup.c:293
+#: lexsup.c:294
 msgid "Discard temporary local symbols (default)"
 msgstr "Descartar los símbolos locales temporales (por defecto)"
 
-#: lexsup.c:295
+#: lexsup.c:296
 msgid "Don't discard any local symbols"
 msgstr "No descartar ningún símbolo local"
 
-#: lexsup.c:297
+#: lexsup.c:298
 msgid "Trace mentions of SYMBOL"
 msgstr "Rastrear las menciones del SÍMBOLO"
 
-#: lexsup.c:299 lexsup.c:435 lexsup.c:437
+#: lexsup.c:300 lexsup.c:436 lexsup.c:438
 msgid "PATH"
 msgstr "RUTA"
 
-#: lexsup.c:299
+#: lexsup.c:300
 msgid "Default search path for Solaris compatibility"
 msgstr "Ruta de búsqueda por defecto para compatibilidad con Solaris"
 
-#: lexsup.c:302
+#: lexsup.c:303
 msgid "Start a group"
 msgstr "Iniciar un grupo"
 
-#: lexsup.c:304
+#: lexsup.c:305
 msgid "End a group"
 msgstr "Terminar un grupo"
 
-#: lexsup.c:308
+#: lexsup.c:309
 msgid "Accept input files whose architecture cannot be determined"
 msgstr "Aceptar ficheros de entrada cuya arquitectura no se pueda determinar"
 
-#: lexsup.c:312
+#: lexsup.c:313
 msgid "Reject input files whose architecture is unknown"
 msgstr "Rechazar ficheros de entrada cuya arquitectura es desconocida"
 
-#: lexsup.c:315
+#: lexsup.c:316
 msgid ""
 "Set DT_NEEDED tags for DT_NEEDED entries in\n"
 "\t\t\t\tfollowing dynamic libs"
@@ -1398,7 +1390,7 @@
 "Establece las marcas DT_NEEDED para las entradas DT_NEEDED en\n"
 "\t\t\t\tlas bibliotecas dinámicas a continuación"
 
-#: lexsup.c:318
+#: lexsup.c:319
 msgid ""
 "Do not set DT_NEEDED tags for DT_NEEDED entries\n"
 "\t\t\t\tin following dynamic libs"
@@ -1406,152 +1398,152 @@
 "No establece las marcas DT_NEEDED para las entradas DT_NEEDED en\n"
 "\t\t\t\tlas bibliotecas dinámicas a continuación"
 
-#: lexsup.c:321
+#: lexsup.c:322
 msgid "Only set DT_NEEDED for following dynamic libs if used"
 msgstr "Sólo establece DT_NEEDED para las siguientes bibliotecas dinámicas si se usan"
 
-#: lexsup.c:324
+#: lexsup.c:325
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr "Siempre establece DT_NEEDED para las siguientes bibliotecas dinámicas"
 
-#: lexsup.c:327
+#: lexsup.c:328
 msgid "Ignored for SunOS compatibility"
 msgstr "Ignorado por compatibilidad con SunOS"
 
-#: lexsup.c:329
+#: lexsup.c:330
 msgid "Link against shared libraries"
 msgstr "Enlazar contra bibliotecas compartidas"
 
-#: lexsup.c:335
+#: lexsup.c:336
 msgid "Do not link against shared libraries"
 msgstr "No enlazar contra bibliotecas compartidas"
 
-#: lexsup.c:343
+#: lexsup.c:344
 msgid "Bind global references locally"
 msgstr "Asociar localmente las referencias globlales"
 
-#: lexsup.c:345
+#: lexsup.c:346
 msgid "Check section addresses for overlaps (default)"
 msgstr "Revisar las direcciones de las secciones por traslapes (por defecto)"
 
-#: lexsup.c:348
+#: lexsup.c:349
 msgid "Do not check section addresses for overlaps"
 msgstr "No revisar las direcciones de las secciones por traslapes"
 
-#: lexsup.c:351
+#: lexsup.c:352
 msgid "Output cross reference table"
 msgstr "Mostrar la tabla de referencias cruzadas"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "SYMBOL=EXPRESSION"
 msgstr "SÍMBOLO=EXPRESIÓN"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "Define a symbol"
 msgstr "Define un símbolo"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "[=STYLE]"
 msgstr "[=ESTILO]"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "Demangle symbol names [using STYLE]"
 msgstr "Desenreda los nombres de los símbolos [utilizando el ESTILO]"
 
 # No me convence mucho la traducción de `embedded' por imbuído. cfuga
-#: lexsup.c:358
+#: lexsup.c:359
 msgid "Generate embedded relocs"
 msgstr "Genera reubicaciones imbuídas"
 
-#: lexsup.c:360
+#: lexsup.c:361
 msgid "Treat warnings as errors"
 msgstr "Tratar los avisos como errores"
 
-#: lexsup.c:363
+#: lexsup.c:364
 msgid "Call SYMBOL at unload-time"
 msgstr "Llamar al SÍMBOLO al momento de descargar"
 
-#: lexsup.c:365
+#: lexsup.c:366
 msgid "Force generation of file with .exe suffix"
 msgstr "Forzar la generación del fichero con sufijo .exe"
 
-#: lexsup.c:367
+#: lexsup.c:368
 msgid "Remove unused sections (on some targets)"
 msgstr "Eliminar las secciones sin uso (en algunos objetivos)"
 
-#: lexsup.c:370
+#: lexsup.c:371
 msgid "Don't remove unused sections (default)"
 msgstr "No eliminar las secciones sin uso (por defecto)"
 
-#: lexsup.c:373
+#: lexsup.c:374
 msgid "Set default hash table size close to <NUMBER>"
 msgstr "Establece el tamaño de de la tabla de dispersión cercano al <NÚMERO>"
 
-#: lexsup.c:376
+#: lexsup.c:377
 msgid "Print option help"
 msgstr "Muestra la ayuda de opciones"
 
-#: lexsup.c:378
+#: lexsup.c:379
 msgid "Call SYMBOL at load-time"
 msgstr "Llamar al SÍMBOLO al momento de cargar"
 
-#: lexsup.c:380
+#: lexsup.c:381
 msgid "Write a map file"
 msgstr "Escribir un fichero mapa"
 
-#: lexsup.c:382
+#: lexsup.c:383
 msgid "Do not define Common storage"
 msgstr "No definir almacenamiento Common"
 
-#: lexsup.c:384
+#: lexsup.c:385
 msgid "Do not demangle symbol names"
 msgstr "No desenredar los nombres de los símbolos"
 
-#: lexsup.c:386
+#: lexsup.c:387
 msgid "Use less memory and more disk I/O"
 msgstr "Usar menos memoria y más E/S de disco"
 
-#: lexsup.c:388
+#: lexsup.c:389
 msgid "Do not allow unresolved references in object files"
 msgstr "No permitir referencias sin resolver en ficheros objeto"
 
-#: lexsup.c:391
+#: lexsup.c:392
 msgid "Allow unresolved references in shared libaries"
 msgstr "Permitir referencias sin resolver en bibliotecas compartidas"
 
-#: lexsup.c:395
+#: lexsup.c:396
 msgid "Do not allow unresolved references in shared libs"
 msgstr "No permitir referencias sin resolver en bibliotecas compartidas"
 
-#: lexsup.c:399
+#: lexsup.c:400
 msgid "Allow multiple definitions"
 msgstr "Permitir definiciones múltiples"
 
-#: lexsup.c:401
+#: lexsup.c:402
 msgid "Disallow undefined version"
 msgstr "No permitir versiones sin definir"
 
-#: lexsup.c:403
+#: lexsup.c:404
 msgid "Create default symbol version"
 msgstr "Crear la versión de símbolo por defecto"
 
-#: lexsup.c:406
+#: lexsup.c:407
 msgid "Create default symbol version for imported symbols"
 msgstr "Crear la versión de símbolo por defecto para símbolos importados"
 
-#: lexsup.c:409
+#: lexsup.c:410
 msgid "Don't warn about mismatched input files"
 msgstr "No avisar sobre ficheros de entrada sin coincidencia"
 
-#: lexsup.c:411
+#: lexsup.c:412
 msgid "Turn off --whole-archive"
 msgstr "Apagar --whole-archive"
 
-#: lexsup.c:413
+#: lexsup.c:414
 msgid "Create an output file even if errors occur"
 msgstr "Crear un fichero de salida aún si ocurren errores"
 
-#: lexsup.c:418
+#: lexsup.c:419
 msgid ""
 "Only use library directories specified on\n"
 "\t\t\t\tthe command line"
@@ -1559,115 +1551,115 @@
 "Utilizar solamente los directorios de bibliotecas\n"
 "\t\t\t\tespecificados en la línea de comandos"
 
-#: lexsup.c:421
+#: lexsup.c:422
 msgid "Specify target of output file"
 msgstr "Especificar el objetivo del fichero de salida"
 
-#: lexsup.c:424
+#: lexsup.c:425
 msgid "Ignored for Linux compatibility"
 msgstr "Ignorado por compatibilidad con Linux"
 
-#: lexsup.c:427
+#: lexsup.c:428
 msgid "Reduce memory overheads, possibly taking much longer"
 msgstr "Reducir las saturaciones de memoria, tal vez tomando más tiempo"
 
-#: lexsup.c:430
+#: lexsup.c:431
 msgid "Relax branches on certain targets"
 msgstr "Relajar ramificaciones en ciertos objetivos"
 
-#: lexsup.c:433
+#: lexsup.c:434
 msgid "Keep only symbols listed in FILE"
 msgstr "Conservar solamente los símbolos enlistados en el FICHERO"
 
-#: lexsup.c:435
+#: lexsup.c:436
 msgid "Set runtime shared library search path"
 msgstr "Establecer la rúta de búsqueda de bibliotecas compartidas en tiempo de ejecución"
 
-#: lexsup.c:437
+#: lexsup.c:438
 msgid "Set link time shared library search path"
 msgstr "Establecer la rúta de búsqueda de bibliotecas compartidas en tiempo de enlace"
 
-#: lexsup.c:440
+#: lexsup.c:441
 msgid "Create a shared library"
 msgstr "Crear una biblioteca compartida"
 
-#: lexsup.c:444
+#: lexsup.c:445
 msgid "Create a position independent executable"
 msgstr "Crear un ejecutable independiente de posición"
 
-#: lexsup.c:448
+#: lexsup.c:449
 msgid "Sort common symbols by size"
 msgstr "Ordenar los símbolos comunes por tamaño"
 
-#: lexsup.c:452
+#: lexsup.c:453
 msgid "name|alignment"
 msgstr "nombre|alineación"
 
-#: lexsup.c:453
+#: lexsup.c:454
 msgid "Sort sections by name or maximum alignment"
 msgstr "Ordenar secciones por nombre o alineación máxima"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "COUNT"
 msgstr "CUENTA"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "How many tags to reserve in .dynamic section"
 msgstr "Cúantas marcas reservar en la sección .dynamic"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "[=SIZE]"
 msgstr "[=TAMAÑO]"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "Split output sections every SIZE octets"
 msgstr "Dividir las secciones de salida cada TAMAÑO octetos"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "[=COUNT]"
 msgstr "[=CUENTA]"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "Split output sections every COUNT relocs"
 msgstr "Dividir las secciones de salida cada CUENTA reubicaciones"
 
-#: lexsup.c:464
+#: lexsup.c:465
 msgid "Print memory usage statistics"
 msgstr "Mostrar las estadísticas de uso de memoria"
 
-#: lexsup.c:466
+#: lexsup.c:467
 msgid "Display target specific options"
 msgstr "Mostrar las opciones específicas del objetivo"
 
-#: lexsup.c:468
+#: lexsup.c:469
 msgid "Do task level linking"
 msgstr "Enlazar a nivel de tarea"
 
-#: lexsup.c:470
+#: lexsup.c:471
 msgid "Use same format as native linker"
 msgstr "Usar el mismo formato que el enlazador nativo"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "SECTION=ADDRESS"
 msgstr "SECCIÓN=DIRECCIÓN"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "Set address of named section"
 msgstr "Establecer la dirección de la sección nombrada"
 
-#: lexsup.c:475
+#: lexsup.c:476
 msgid "Set address of .bss section"
 msgstr "Establecer la dirección de la sección .bss"
 
-#: lexsup.c:477
+#: lexsup.c:478
 msgid "Set address of .data section"
 msgstr "Establecer la dirección de la sección .data"
 
-#: lexsup.c:479
+#: lexsup.c:480
 msgid "Set address of .text section"
 msgstr "Establecer la dirección de la sección .text"
 
-#: lexsup.c:482
+#: lexsup.c:483
 msgid ""
 "How to handle unresolved symbols.  <method> is:\n"
 "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n"
@@ -1677,15 +1669,15 @@
 "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n"
 "\t\t\t\tignore-in-shared-libs"
 
-#: lexsup.c:486
+#: lexsup.c:487
 msgid "Output lots of information during link"
 msgstr "Mostrar mucha información durante el enlace"
 
-#: lexsup.c:490
+#: lexsup.c:491
 msgid "Read version information script"
 msgstr "Leer la información de la versión del guión"
 
-#: lexsup.c:493
+#: lexsup.c:494
 msgid ""
 "Take export symbols list from .exports, using\n"
 "\t\t\t\tSYMBOL as the version."
@@ -1693,71 +1685,71 @@
 "Tomar la lista de exportación de símbolos de .exports, usando\n"
 "\t\t\tel SÍMBOLO como la versión."
 
-#: lexsup.c:496
+#: lexsup.c:497
 msgid "Warn about duplicate common symbols"
 msgstr "Avisar sobre símbolos comunes duplicados"
 
-#: lexsup.c:498
+#: lexsup.c:499
 msgid "Warn if global constructors/destructors are seen"
 msgstr "Avisar si se ven constructores/destructores globales"
 
-#: lexsup.c:501
+#: lexsup.c:502
 msgid "Warn if the multiple GP values are used"
 msgstr "Avisar si se usan los valores múltiples GP"
 
-#: lexsup.c:503
+#: lexsup.c:504
 msgid "Warn only once per undefined symbol"
 msgstr "Avisar sólo una vez por cada símbolo sin definir"
 
-#: lexsup.c:505
+#: lexsup.c:506
 msgid "Warn if start of section changes due to alignment"
 msgstr "Avisar si el inicio de la sección cambia debido a la alineación"
 
-#: lexsup.c:508
+#: lexsup.c:509
 msgid "Warn if shared object has DT_TEXTREL"
 msgstr "Avisar si el objeto compartido tiene DT_TEXTREL"
 
-#: lexsup.c:512
+#: lexsup.c:513
 msgid "Report unresolved symbols as warnings"
 msgstr "Reportar símbolos sin resolver como avisos"
 
-#: lexsup.c:515
+#: lexsup.c:516
 msgid "Report unresolved symbols as errors"
 msgstr "Reportar símbolos sin resolver como errores"
 
-#: lexsup.c:517
+#: lexsup.c:518
 msgid "Include all objects from following archives"
 msgstr "Incluir todos los objetos de los siguientes ficheros"
 
-#: lexsup.c:520
+#: lexsup.c:521
 msgid "Use wrapper functions for SYMBOL"
 msgstr "Usar funciones de envoltura para el SÍMBOLO"
 
-#: lexsup.c:667
+#: lexsup.c:668
 msgid "%P: unrecognized option '%s'\n"
 msgstr "%P: opción `%s' no reconocida\n"
 
-#: lexsup.c:669
+#: lexsup.c:670
 msgid "%P%F: use the --help option for usage information\n"
 msgstr "%P%F: use la opción --help para información de modo de empleo\n"
 
-#: lexsup.c:687
+#: lexsup.c:688
 msgid "%P%F: unrecognized -a option `%s'\n"
 msgstr "%P%F: opción -a `%s' no reconocida\n"
 
-#: lexsup.c:700
+#: lexsup.c:701
 msgid "%P%F: unrecognized -assert option `%s'\n"
 msgstr "%P%F: opción -assert `%s' no reconocida\n"
 
-#: lexsup.c:743
+#: lexsup.c:744
 msgid "%F%P: unknown demangling style `%s'"
 msgstr "%F%P: estilo de desenredo `%s' desconocido"
 
-#: lexsup.c:805
+#: lexsup.c:806
 msgid "%P%F: invalid number `%s'\n"
 msgstr "%P%F: número `%s' inválido\n"
 
-#: lexsup.c:897
+#: lexsup.c:898
 msgid "%P%F: bad --unresolved-symbols option: %s\n"
 msgstr "%P%F: opción --unresolved-symbols no reconocida: %s\n"
 
@@ -1769,82 +1761,92 @@
 #. an error message here.  We cannot just make this a warning,
 #. increment optind, and continue because getopt is too confused
 #. and will seg-fault the next time around.
-#: lexsup.c:968
+#: lexsup.c:969
 msgid "%P%F: bad -rpath option\n"
 msgstr "%P%F: opción -rpath errónea\n"
 
-#: lexsup.c:1080
+#: lexsup.c:1081
 msgid "%P%F: -shared not supported\n"
 msgstr "%P%F: -shared no tiene soporte\n"
 
-#: lexsup.c:1089
+#: lexsup.c:1090
 msgid "%P%F: -pie not supported\n"
 msgstr "%P%F: -pie no tiene soporte\n"
 
-#: lexsup.c:1099
+#: lexsup.c:1100
 msgid "name"
 msgstr "nombre"
 
-#: lexsup.c:1101
+#: lexsup.c:1102
 msgid "alignment"
 msgstr "alineación"
 
-#: lexsup.c:1104
+#: lexsup.c:1105
 msgid "%P%F: invalid section sorting option: %s\n"
 msgstr "%P%F: opción de ordenado de sección inválida: %s\n"
 
-#: lexsup.c:1130
+#: lexsup.c:1131
 msgid "%P%F: invalid argument to option \"--section-start\"\n"
 msgstr "%P%F: argumento inválido para la opción \"--section-start\"\n"
 
-#: lexsup.c:1137
+#: lexsup.c:1138
 msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
 msgstr "%P%F: falta(n) argumento(s) para la opción \"--section-start\"\n"
 
-#: lexsup.c:1311
+#: lexsup.c:1312
 msgid "%P%F: may not nest groups (--help for usage)\n"
 msgstr "%P%F: no se pueden anidar grupos (--help para modo de empleo)\n"
 
-#: lexsup.c:1318
+#: lexsup.c:1319
 msgid "%P%F: group ended before it began (--help for usage)\n"
 msgstr "%P%F: el grupo terminó antes de empezar (--help para modo de empleo)\n"
 
-#: lexsup.c:1346
+#: lexsup.c:1347
 msgid "%P%X: --hash-size needs a numeric argument\n"
 msgstr "%P%X: --hash-size necesita un argumento numérico\n"
 
-#: lexsup.c:1397 lexsup.c:1410
+#: lexsup.c:1398 lexsup.c:1411
 msgid "%P%F: invalid hex number `%s'\n"
 msgstr "%P%F: número hexadecimal `%s' inválido\n"
 
-#: lexsup.c:1445
+#: lexsup.c:1447
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr "Modo de empleo: %s [opciones] fichero...\n"
 
-#: lexsup.c:1447
+#: lexsup.c:1449
 #, c-format
 msgid "Options:\n"
 msgstr "Opciones:\n"
 
+#: lexsup.c:1527
+#, c-format
+msgid "  @FILE"
+msgstr "  @FICHERO"
+
+#: lexsup.c:1530
+#, c-format
+msgid "Read options from FILE\n"
+msgstr "Lee opciones del FICHERO\n"
+
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:1530
+#: lexsup.c:1535
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: objetivos con soporte:"
 
-#: lexsup.c:1538
+#: lexsup.c:1543
 #, c-format
 msgid "%s: supported emulations: "
 msgstr "%s: emulaciones con soporte: "
 
-#: lexsup.c:1543
+#: lexsup.c:1548
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr "%s: opciones específicas de emulación:\n"
 
-#: lexsup.c:1547
+#: lexsup.c:1552
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Reportar bichos a %s\n"
@@ -1858,65 +1860,79 @@
 msgid "%XUnsupported PEI architecture: %s\n"
 msgstr "%XArquitectura PEI sin soporte: %s\n"
 
-#: pe-dll.c:652
+#: pe-dll.c:604
 #, c-format
+msgid "%XCannot export %s: invalid export name\n"
+msgstr "%XNo se puede exportar %s: nombre de exportación inválido\n"
+
+#: pe-dll.c:657
+#, c-format
 msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
 msgstr "%XError, EXPORT duplicado con ordinales: %s (%d vs %d)\n"
 
-#: pe-dll.c:659
+#: pe-dll.c:664
 #, c-format
 msgid "Warning, duplicate EXPORT: %s\n"
 msgstr "Aviso, EXPORT duplicado: %s\n"
 
-#: pe-dll.c:725
+#: pe-dll.c:751
 #, c-format
 msgid "%XCannot export %s: symbol not defined\n"
 msgstr "%XNo se puede exportar %s: símbolo no definido\n"
 
-#: pe-dll.c:731
+#: pe-dll.c:757
 #, c-format
 msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
 msgstr "%XNo se puede exportar %s: tipo erróneo del símbolo (%d vs %d)\n"
 
-#: pe-dll.c:738
+#: pe-dll.c:764
 #, c-format
 msgid "%XCannot export %s: symbol not found\n"
 msgstr "%XNo se puede exportar %s: no se encuentra el símbolo\n"
 
-#: pe-dll.c:850
+#: pe-dll.c:877
 #, c-format
 msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
 msgstr "%XError, ordinal utilizado dos veces: %d (%s vs %s)\n"
 
-#: pe-dll.c:1172
+#: pe-dll.c:1219
 #, c-format
 msgid "%XError: %d-bit reloc in dll\n"
 msgstr "%XError: reubicación de %d-bit en la dll\n"
 
-#: pe-dll.c:1300
+#: pe-dll.c:1347
 #, c-format
 msgid "%s: Can't open output def file %s\n"
 msgstr "%s: No se puede abrir el fichero por defecto de salida %s\n"
 
-#: pe-dll.c:1443
+#: pe-dll.c:1490
 #, c-format
 msgid "; no contents available\n"
 msgstr "; no hay contenido disponible\n"
 
-#: pe-dll.c:2205
+#: pe-dll.c:2252
 msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"
 msgstr "%C: no se puede auto-importar la variable '%T'. Por favor lea la documentación para --enable-auto-import de ld para más detalles.\n"
 
-#: pe-dll.c:2235
+#: pe-dll.c:2282
 #, c-format
 msgid "%XCan't open .lib file: %s\n"
 msgstr "%XNo se puede abrir el fichero .lib: %s\n"
 
-#: pe-dll.c:2240
+#: pe-dll.c:2287
 #, c-format
 msgid "Creating library file: %s\n"
 msgstr "Creando el fichero de biblioteca: %s\n"
 
+#~ msgid "%P%F: out of memory during initialization"
+#~ msgstr "%P%F: memoria agotada durante la inicialización"
+
+#~ msgid "%P%F: -static and -shared may not be used together\n"
+#~ msgstr "%P%F: no se pueden usar juntos -static y -shared\n"
+
+#~ msgid "%P%X: generated"
+#~ msgstr "%P%X: generado"
+
 #~ msgid "%F%P: %s uses undefined section %s\n"
 #~ msgstr "%F%P: %s usa la sección sin definir %s\n"
 

Added: branches/binutils/package/ld/po/fr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/fr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/ld/po/sv.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/sv.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/ld/po/tr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/tr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/ld/po/vi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/vi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/ld/po/vi.po
===================================================================
--- branches/binutils/package/ld/po/vi.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/po/vi.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,20 +1,20 @@
 # Vietnamese translation for LD.
-# Copyright © 2005 Free Software Foundation, Inc.
-# Clytie Siddall <clytie at riverland.net.au>, 2005.
+# Copyright © 2006 Free Software Foundation, Inc.
+# Clytie Siddall <clytie at riverland.net.au>, 2005-2006.
 # 
 msgid ""
 msgstr ""
-"Project-Id-Version: ld-2.15.96\n"
+"Project-Id-Version: ld-2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-03 21:05+1030\n"
-"PO-Revision-Date: 2005-12-24 14:47+1030\n"
+"POT-Creation-Date: 2006-03-25 18:36+0100\n"
+"PO-Revision-Date: 2006-05-23 21:31+0930\n"
 "Last-Translator: Clytie Siddall <clytie at riverland.net.au>\n"
 "Language-Team: Vietnamese <gnomevi-list at lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0\n"
-"X-Generator: LocFactoryEditor 1.5.1b\n"
+"X-Generator: LocFactoryEditor 1.6b34\n"
 
 #: emultempl/armcoff.em:72
 #, c-format
@@ -31,163 +31,163 @@
 msgid "Errors encountered processing file %s"
 msgstr "Gặp lỗi khi xử lý tập tin %s"
 
-#: emultempl/armcoff.em:188 emultempl/pe.em:1455
+#: emultempl/armcoff.em:190 emultempl/pe.em:1460
 msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
 msgstr "%P: cảnh báo: « --thumb-entry %s » đang lấy quyền cao hơn « -e %s »\n"
 
-#: emultempl/armcoff.em:193 emultempl/pe.em:1460
+#: emultempl/armcoff.em:195 emultempl/pe.em:1465
 msgid "%P: warning: connot find thumb start symbol %s\n"
-msgstr "%P: warning: connot find thumb start symbol %s\n"
+msgstr "%P: cảnh báo : không tìm thấy ký hiệu bắt đầu thumb %s\n"
 
-#: emultempl/pe.em:301
+#: emultempl/pe.em:304
 #, c-format
 msgid "  --base_file <basefile>             Generate a base file for relocatable DLLs\n"
 msgstr ""
-"  --base_file <tập_tinbasefile>     Tạo ra một _tập tin cơ bản_ choocác ata\n"
-"\t\t\t\t\t\t\tcó thể định vị lạile DLLs\n"
+"  --base_file <tập_tinbasefile>\n"
+"\tTạo ra một _tập tin cơ bản_ cho các DLL có khả năng định vị lại\n"
 
-#: emultempl/pe.em:302
+#: emultempl/pe.em:305
 #, c-format
 msgid "  --dll                              Set image base to the default for DLLs\n"
 msgstr "  --dll                              Lập cơ bản ảnh là mặc định cho các DLL\n"
 
-#: emultempl/pe.em:303
+#: emultempl/pe.em:306
 #, c-format
 msgid "  --file-alignment <size>            Set file alignment\n"
 msgstr "  --file-alignment <kích_cỡ>            Lập cách _canh lề tập tin_\n"
 
-#: emultempl/pe.em:304
+#: emultempl/pe.em:307
 #, c-format
 msgid "  --heap <size>                      Set initial size of the heap\n"
 msgstr "  --heap <kích_cỡ>                      Lập kích cỡ _miền nhớ_ ban đầu\n"
 
-#: emultempl/pe.em:305
+#: emultempl/pe.em:308
 #, c-format
 msgid "  --image-base <address>             Set start address of the executable\n"
 msgstr ""
 "  --image-base <địa_chỉ>            Lập địa chỉ bắt đầu của ứng dụng chạy được\n"
 "\t\t\t\t\t\t\t\t (_cơ bản ảnh_)\n"
 
-#: emultempl/pe.em:306
+#: emultempl/pe.em:309
 #, c-format
 msgid "  --major-image-version <number>     Set version number of the executable\n"
 msgstr ""
 "  --major-image-version <số>     \tLập số thứ tự _phiên bản_\n"
 "\t\t\t\t\tcủa ứng dụng chạy được (_ảnh lớn_)\n"
 
-#: emultempl/pe.em:307
+#: emultempl/pe.em:310
 #, c-format
 msgid "  --major-os-version <number>        Set minimum required OS version\n"
 msgstr ""
 "  --major-os-version <số>        \t\tLập số thứ tự _phiên bản\n"
 "\t\t\t\thệ điều hành_ tối thiểu cần thiết (_lớn_)\n"
 
-#: emultempl/pe.em:308
+#: emultempl/pe.em:311
 #, c-format
 msgid "  --major-subsystem-version <number> Set minimum required OS subsystem version\n"
 msgstr ""
 "  --major-subsystem-version <số> \t   Lập số thứ tự _phiên bản\n"
 "\t\t\t\thệ điều hành con_ tối thiểu cần thiết (_lớn_)\n"
 
-#: emultempl/pe.em:309
+#: emultempl/pe.em:312
 #, c-format
 msgid "  --minor-image-version <number>     Set revision number of the executable\n"
 msgstr ""
 "  --minor-image-version <số>     \tLập số thứ tự bản sửa đổi\n"
 "\tcủa ứng dụng chạy được (_phiên bản ảnh nhỏ_)\n"
 
-#: emultempl/pe.em:310
+#: emultempl/pe.em:313
 #, c-format
 msgid "  --minor-os-version <number>        Set minimum required OS revision\n"
 msgstr ""
 "  --minor-os-version <số>        \t\tLập số thứ tự bản sửa đổi\n"
 "\t\tcủa hệ điều hành cần thiết (_phiên bản hệ điều hành nhỏ_)\n"
 
-#: emultempl/pe.em:311
+#: emultempl/pe.em:314
 #, c-format
 msgid "  --minor-subsystem-version <number> Set minimum required OS subsystem revision\n"
 msgstr ""
 "  --minor-subsystem-version <số> \t   Lập số thứ tự bản sửa đổi\n"
 "\t\tcủa hệ điều hành con cần thiết (_phiên bản hệ điều hành con nhỏ_)\n"
 
-#: emultempl/pe.em:312
+#: emultempl/pe.em:315
 #, c-format
 msgid "  --section-alignment <size>         Set section alignment\n"
 msgstr "  --section-alignment <kích_cỡ>         Lập cách _canh lề phần_\n"
 
-#: emultempl/pe.em:313
+#: emultempl/pe.em:316
 #, c-format
 msgid "  --stack <size>                     Set size of the initial stack\n"
 msgstr "  --stack <kích_cỡ>                    Lập kích cỡ của _đống_ ban đầu\n"
 
-#: emultempl/pe.em:314
+#: emultempl/pe.em:317
 #, c-format
 msgid "  --subsystem <name>[:<version>]     Set required OS subsystem [& version]\n"
 msgstr "  --subsystem <tên>[:<phiên_bản>]     Lập _hệ điều hành con_ [và phiên bản] cần thiết\n"
 
-#: emultempl/pe.em:315
+#: emultempl/pe.em:318
 #, c-format
 msgid "  --support-old-code                 Support interworking with old code\n"
 msgstr "  --support-old-code                 _Hỗ trợ_ dệt vào với _mã cũ_\n"
 
-#: emultempl/pe.em:316
+#: emultempl/pe.em:319
 #, c-format
 msgid "  --thumb-entry=<symbol>             Set the entry point to be Thumb <symbol>\n"
-msgstr "  --thumb-entry=<ký_hiệu>  Lập điểm _vào_ là ký hiệu _Hình Nhỏ_ này\n"
+msgstr "  --thumb-entry=<ký_hiệu>  Lập điểm _vào_ là ký hiệu _Thumb_ này\n"
 
-#: emultempl/pe.em:318
+#: emultempl/pe.em:321
 #, c-format
 msgid "  --add-stdcall-alias                Export symbols with and without @nn\n"
 msgstr "  --add-stdcall-alias           Xuất ký hiệu với và không với « @nn » (_thêm bí danh gọi chuẩn_)\n"
 
-#: emultempl/pe.em:319
+#: emultempl/pe.em:322
 #, c-format
 msgid "  --disable-stdcall-fixup            Don't link _sym to _sym at nn\n"
 msgstr "  --disable-stdcall-fixup            Đừng liên kết « _sym » đến « _sym at nn » (_tắt sửa gọi chuẩn_)\n"
 
-#: emultempl/pe.em:320
+#: emultempl/pe.em:323
 #, c-format
 msgid "  --enable-stdcall-fixup             Link _sym to _sym at nn without warnings\n"
 msgstr ""
 "  --enable-stdcall-fixup             Liên kết « _sym » đến « _sym at nn », không có cảnh báo\n"
 " \t\t\t\t\t\t\t(_bật sửa gọi chuẩn_)\n"
 
-#: emultempl/pe.em:321
+#: emultempl/pe.em:324
 #, c-format
 msgid "  --exclude-symbols sym,sym,...      Exclude symbols from automatic export\n"
 msgstr "  --exclude-symbols ký_hiệu,ký_hiệu,...      _Loại trừ những ký hiệu_ này ra việc xuất tự động\n"
 
-#: emultempl/pe.em:322
+#: emultempl/pe.em:325
 #, c-format
 msgid "  --exclude-libs lib,lib,...         Exclude libraries from automatic export\n"
 msgstr "  --exclude-libs thư_viên,thư_viên,...         _Loại trừ những thư viên_ này ra việc xuất tự động\n"
 
-#: emultempl/pe.em:323
+#: emultempl/pe.em:326
 #, c-format
 msgid "  --export-all-symbols               Automatically export all globals to DLL\n"
 msgstr "  --export-all-symbols               Tự động _xuất mọi_ điều toàn cục vào DLL (_ký hiệu_)\n"
 
-#: emultempl/pe.em:324
+#: emultempl/pe.em:327
 #, c-format
 msgid "  --kill-at                          Remove @nn from exported symbols\n"
 msgstr "  --kill-at                          Gỡ bỏ « @nn » ra những ký hiệu đã xuất (_buộc kết thức tại_)\n"
 
-#: emultempl/pe.em:325
+#: emultempl/pe.em:328
 #, c-format
 msgid "  --out-implib <file>                Generate import library\n"
 msgstr "  --out-implib <tập_tin>                Tạo _ra thư viên nhập_\n"
 
-#: emultempl/pe.em:326
+#: emultempl/pe.em:329
 #, c-format
 msgid "  --output-def <file>                Generate a .DEF file for the built DLL\n"
 msgstr "  --output-def <tập_tin>                Tạo _ra_ một tập tin .DEF cho DLL đã xây dụng\n"
 
-#: emultempl/pe.em:327
+#: emultempl/pe.em:330
 #, c-format
 msgid "  --warn-duplicate-exports           Warn about duplicate exports.\n"
 msgstr "  --warn-duplicate-exports           _Cảnh báo_ về _việc xuất trùng_ nào.\n"
 
-#: emultempl/pe.em:328
+#: emultempl/pe.em:331
 #, c-format
 msgid ""
 "  --compat-implib                    Create backward compatible import libs;\n"
@@ -196,7 +196,7 @@
 "  --compat-implib                    Tạo các _thư viên nhập tương thích_ ngược;\n"
 "\t\t\t\t\tcũng tạo « __imp_<KÝ_HIỆU> ».\n"
 
-#: emultempl/pe.em:330
+#: emultempl/pe.em:333
 #, c-format
 msgid ""
 "  --enable-auto-image-base           Automatically choose image base for DLLs\n"
@@ -205,12 +205,12 @@
 "  --enable-auto-image-base           Tự động chọn cơ bản ảnh cho mọi DLL\n"
 "\t\t\t\t\t\t\ttrừ khi người dùng gõ nó\n"
 
-#: emultempl/pe.em:332
+#: emultempl/pe.em:335
 #, c-format
 msgid "  --disable-auto-image-base          Do not auto-choose image base. (default)\n"
 msgstr "  --disable-auto-image-base          Đừng _tự động_ chọn _cơ bản ảnh_ (mặc định) (_tắt_)\n"
 
-#: emultempl/pe.em:333
+#: emultempl/pe.em:336
 #, c-format
 msgid ""
 "  --dll-search-prefix=<string>       When linking dynamically to a dll without\n"
@@ -221,7 +221,7 @@
 "\thãy dùng « <chuỗi><tên_cơ_bản>.dll » hơn « <tên_cơ_bản>.dll »\n"
 "\t(_tiền_tố_tìm_kiếm_)\n"
 
-#: emultempl/pe.em:336
+#: emultempl/pe.em:339
 #, c-format
 msgid ""
 "  --enable-auto-import               Do sophistcated linking of _sym to\n"
@@ -231,12 +231,12 @@
 "\t« _sym » đến « __imp_sym » cho các tham chiếu DATA (dữ liệu)\n"
 "\t(_bật nhập tự động)\n"
 
-#: emultempl/pe.em:338
+#: emultempl/pe.em:341
 #, c-format
 msgid "  --disable-auto-import              Do not auto-import DATA items from DLLs\n"
 msgstr "  --disable-auto-import       Đừng _tự động nhập_ mục DATA từ DLL (_tắt_)\n"
 
-#: emultempl/pe.em:339
+#: emultempl/pe.em:342
 #, c-format
 msgid ""
 "  --enable-runtime-pseudo-reloc      Work around auto-import limitations by\n"
@@ -246,7 +246,7 @@
 "  --enable-runtime-pseudo-reloc      Chỉnh sửa các hạn chế nhập tự động,\n"
 "\tbằng cách thêm các việc _định vị lại giả_ được tháo gỡ vào _lúc chạy_. (_bật_)\n"
 
-#: emultempl/pe.em:342
+#: emultempl/pe.em:345
 #, c-format
 msgid ""
 "  --disable-runtime-pseudo-reloc     Do not add runtime pseudo-relocations for\n"
@@ -255,7 +255,7 @@
 "  --disable-runtime-pseudo-reloc        Đừng thêm việc _định vị lại giả_\n"
 "\tvào _lúc chạy_ cho DATA (dữ liệu) được nhập tự động. (_tắt_)\n"
 
-#: emultempl/pe.em:344
+#: emultempl/pe.em:347
 #, c-format
 msgid ""
 "  --enable-extra-pe-debug            Enable verbose debug output when building\n"
@@ -264,7 +264,7 @@
 "  --enable-extra-pe-debug            _Bật_ xuất dữ liệu _gỡ lỗi_ chi tiết\n"
 "\ttrong khi xây dụng hay liên kết đến DLL nào (nhất là việc tự động nhập) (_thêm_)\n"
 
-#: emultempl/pe.em:347
+#: emultempl/pe.em:350
 #, c-format
 msgid ""
 "  --large-address-aware              Executable supports virtual addresses\n"
@@ -273,82 +273,82 @@
 "  --large-address-aware         Ứng dụng chạy có hỗ trợ _địa chỉ_ ảo _lớn_ hơn 2 GB\n"
 "\t\t\t\t\t\t\t(_kiến thức_)\n"
 
-#: emultempl/pe.em:414
+#: emultempl/pe.em:417
 msgid "%P: warning: bad version number in -subsystem option\n"
 msgstr "%P: cảnh báo: gặp số thứ tự phiên bản sai trong tùy chọn « -subsystem » (hệ thống con)\n"
 
-#: emultempl/pe.em:445
+#: emultempl/pe.em:448
 msgid "%P%F: invalid subsystem type %s\n"
-msgstr "%P%F: invalid subsystem type %s\n"
+msgstr "%P%F: kiểu hệ thống con không hợp lệ %s\n"
 
-#: emultempl/pe.em:484
+#: emultempl/pe.em:487
 msgid "%P%F: invalid hex number for PE parameter '%s'\n"
-msgstr "%P%F: invalid hex number for PE parameter '%s'\n"
+msgstr "%P%F: số thập lục không hợp lệ cho tham số « %s »\n"
 
-#: emultempl/pe.em:501
+#: emultempl/pe.em:504
 msgid "%P%F: strange hex info for PE parameter '%s'\n"
-msgstr "%P%F: thông tin thập lục lạ cho tham sốstr « %s »or PE parameter '%s'\n"
+msgstr "%P%F: thông tin thập lục lạ cho tham số PE « %s »\n"
 
-#: emultempl/pe.em:518
+#: emultempl/pe.em:521
 #, c-format
 msgid "%s: Can't open base file %s\n"
 msgstr "%s: Không thể mở tập tin cơ bản %s\n"
 
-#: emultempl/pe.em:734
+#: emultempl/pe.em:737
 msgid "%P: warning, file alignment > section alignment.\n"
 msgstr "%P: cảnh báo, canh lề tập tin > canh lề phần.\n"
 
-#: emultempl/pe.em:821 emultempl/pe.em:848
+#: emultempl/pe.em:824 emultempl/pe.em:851
 #, c-format
 msgid "Warning: resolving %s by linking to %s\n"
 msgstr "Cảnh báo: đang tháo gỡ %s bằng cách liên kết đến %s\n"
 
-#: emultempl/pe.em:826 emultempl/pe.em:853
+#: emultempl/pe.em:829 emultempl/pe.em:856
 msgid "Use --enable-stdcall-fixup to disable these warnings\n"
 msgstr "Hãy dùng « --enable-stdcall-fixup » (bật sửa gọi chuẩn) để tắt các cảnh báo này\n"
 
-#: emultempl/pe.em:827 emultempl/pe.em:854
+#: emultempl/pe.em:830 emultempl/pe.em:857
 msgid "Use --disable-stdcall-fixup to disable these fixups\n"
 msgstr "Hãy dùng « --disable-stdcall-fixup » (tắt sửa gọi chuẩn) để tắt các việc sửa này\n"
 
-#: emultempl/pe.em:873
+#: emultempl/pe.em:876
 #, c-format
 msgid "%C: Cannot get section contents - auto-import exception\n"
 msgstr "%C: Không thể lấy nội dung phần: ngoài lệ nhập tự động\n"
 
-#: emultempl/pe.em:910
+#: emultempl/pe.em:913
 #, c-format
 msgid "Info: resolving %s by linking to %s (auto-import)\n"
 msgstr "Thông tin: đang tháo gỡ %s bằng cách liên kết đến %s (tự động nhập)\n"
 
-#: emultempl/pe.em:983
+#: emultempl/pe.em:986
 msgid "%F%P: PE operations on non PE file.\n"
 msgstr "%F%P: thao tác PE với tập tin không phải PE.\n"
 
-#: emultempl/pe.em:1258
+#: emultempl/pe.em:1261
 #, c-format
 msgid "Errors encountered processing file %s\n"
 msgstr "Gặp lỗi trong khi xử lý tập tin %s\n"
 
-#: emultempl/pe.em:1281
+#: emultempl/pe.em:1284
 #, c-format
 msgid "Errors encountered processing file %s for interworking"
 msgstr "Gặp lỗi trong khi xử lý tập tin %s để dệt vào với nhau"
 
-#: emultempl/pe.em:1340 ldexp.c:570 ldlang.c:2408 ldlang.c:5135 ldlang.c:5166
-#: ldmain.c:1161
+#: emultempl/pe.em:1345 ldexp.c:522 ldlang.c:2946 ldlang.c:5800 ldlang.c:5831
+#: ldmain.c:1167
 msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
 msgstr "%P%F: « bfd_link_hash_lookup » (bfd liên kết băm tra cứu) thất bại: %E\n"
 
-#: ldcref.c:153
+#: ldcref.c:154
 msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
 msgstr "%X%P: « bfd_hash_table_init » (bfd băm bảng khởi động) với bảng cref thất bại: %E\n"
 
-#: ldcref.c:159
+#: ldcref.c:160
 msgid "%X%P: cref_hash_lookup failed: %E\n"
-msgstr "%X%P: cref_hash_lookup failed: %E\n"
+msgstr "%X%P: việc « cref_hash_lookup » bị lỗi: %E\n"
 
-#: ldcref.c:225
+#: ldcref.c:226
 #, c-format
 msgid ""
 "\n"
@@ -359,47 +359,47 @@
 "Bảng Tham Chiếu Chéo\n"
 "\n"
 
-#: ldcref.c:226
+#: ldcref.c:227
 msgid "Symbol"
 msgstr "Ký hiệu"
 
-#: ldcref.c:234
+#: ldcref.c:235
 #, c-format
 msgid "File\n"
 msgstr "Tập tin\n"
 
-#: ldcref.c:238
+#: ldcref.c:239
 #, c-format
 msgid "No symbols\n"
 msgstr "Không có ký hiệu\n"
 
-#: ldcref.c:359 ldcref.c:478
+#: ldcref.c:360 ldcref.c:482
 msgid "%B%F: could not read symbols; %E\n"
-msgstr "%B%F: could not read symbols; %E\n"
+msgstr "%B%F: không thể đọc các ký hiệu ; %E\n"
 
-#: ldcref.c:363 ldcref.c:482 ldmain.c:1226 ldmain.c:1230
+#: ldcref.c:364 ldcref.c:486 ldmain.c:1232 ldmain.c:1236
 msgid "%B%F: could not read symbols: %E\n"
-msgstr "%B%F: could not read symbols: %E\n"
+msgstr "%B%F: không thể đọc các ký hiệu : %E\n"
 
-#: ldcref.c:414
+#: ldcref.c:415
 msgid "%P: symbol `%T' missing from main hash table\n"
-msgstr "%P: thiếu ký hiệus« mb »ltrong bảng băm chính table\n"
+msgstr "%P: thiếu ký hiệu « %T » trong bảng băm chính\n"
 
-#: ldcref.c:547 ldcref.c:554 ldmain.c:1273 ldmain.c:1280
+#: ldcref.c:557 ldcref.c:564 ldmain.c:1279 ldmain.c:1286
 msgid "%B%F: could not read relocs: %E\n"
-msgstr "%B%F: could not read relocs: %E\n"
+msgstr "%B%F: không thể đọc các điều định vị lại : %E\n"
 
 #. We found a reloc for the symbol.  The symbol is defined
 #. in OUTSECNAME.  This reloc is from a section which is
 #. mapped into a section from which references to OUTSECNAME
 #. are prohibited.  We must report an error.
-#: ldcref.c:573
+#: ldcref.c:591
 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
-msgstr "%X%C: không cho phép tham chiếu chéo từprohđếni« ed »ctrongss reference from %s to `%T' in %s\n"
+msgstr "%X%C: không cho phép tham chiếu chéo từ %s đến « %T » trong %s\n"
 
 #: ldctor.c:84
 msgid "%P%X: Different relocs used in set %s\n"
-msgstr "%P%X: Sử dụng sự định vị lại khác nhau trong tập hợpDifferent relocs used in set %s\n"
+msgstr "%P%X: Sử dụng sự định vị lại khác nhau trong tập hợp %s\n"
 
 #: ldctor.c:102
 msgid "%P%X: Different object file formats composing set %s\n"
@@ -411,7 +411,7 @@
 
 #: ldctor.c:316
 msgid "%P%X: Unsupported size %d for set %s\n"
-msgstr "%P%X: Unsupported size %d for set %s\n"
+msgstr "%P%X: Không hỗ trợ kích cỡ %d cho tập hợp %s\n"
 
 #: ldctor.c:337
 msgid ""
@@ -420,86 +420,86 @@
 "\n"
 msgstr ""
 "\n"
-"Set                 Symbol\n"
+"Tập hợp                 Ký hiệu\n"
 "\n"
 
-#: ldemul.c:227
+#: ldemul.c:236
 #, c-format
 msgid "%S SYSLIB ignored\n"
-msgstr "%S SYSLIB bị bỏ quaignored\n"
+msgstr "%S SYSLIB bị bỏ qua\n"
 
-#: ldemul.c:233
+#: ldemul.c:242
 #, c-format
 msgid "%S HLL ignored\n"
 msgstr "%S HLL bị bỏ qua\n"
 
-#: ldemul.c:253
+#: ldemul.c:262
 msgid "%P: unrecognised emulation mode: %s\n"
-msgstr "%P: unrecognised emulation mode: %s\n"
+msgstr "%P: không nhận ra chế độ mô phỏng: %s\n"
 
-#: ldemul.c:254
+#: ldemul.c:263
 msgid "Supported emulations: "
-msgstr "Mô phỏngHđã àm hỗ  trợ:"
+msgstr "Mô phỏng đã hỗ trợ : "
 
-#: ldemul.c:296
+#: ldemul.c:305
 #, c-format
 msgid "  no emulation specific options.\n"
 msgstr "  không có tùy chọn đặc trưng cho mô phỏng.\n"
 
-#: ldexp.c:379
+#: ldexp.c:338
 #, c-format
 msgid "%F%S %% by zero\n"
 msgstr "%F%S %% cho số không\n"
 
-#: ldexp.c:386
+#: ldexp.c:346
 #, c-format
 msgid "%F%S / by zero\n"
 msgstr "%F%S / cho số không\n"
 
-#: ldexp.c:583
+#: ldexp.c:536
 #, c-format
 msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
 msgstr "%X%S: ký hiệu không tháo gỡ được « %s » được tham chiếu trong biểu thức\n"
 
-#: ldexp.c:604
+#: ldexp.c:547
 #, c-format
 msgid "%F%S: undefined symbol `%s' referenced in expression\n"
 msgstr "%F%S: ký hiệu chưa định nghĩa « %s » được tham chiếu trong biểu thức\n"
 
-#: ldexp.c:665 ldexp.c:678
+#: ldexp.c:608 ldexp.c:621
 #, c-format
 msgid "%F%S: undefined MEMORY region `%s' referenced in expression\n"
 msgstr "%F%S: miền MEMORY (nhớ) chưa định nghĩa « %s » được tham chiếu trong biểu thức\n"
 
-#: ldexp.c:757
+#: ldexp.c:683
 #, c-format
 msgid "%F%S can not PROVIDE assignment to location counter\n"
 msgstr "%F%S không thể PROVIDE (cung cấp) việc gán cho bộ đếm địa điểm\n"
 
-#: ldexp.c:770
+#: ldexp.c:697
 #, c-format
 msgid "%F%S invalid assignment to location counter\n"
 msgstr "%F%S việc gán không hợp lệ cho bộ đếm địa điểm\n"
 
-#: ldexp.c:774
+#: ldexp.c:700
 #, c-format
 msgid "%F%S assignment to location counter invalid outside of SECTION\n"
 msgstr "%F%S việc gán cho bộ đếm địa điểm không phải hợp lệ bên ngoài SECTION (phần)\n"
 
-#: ldexp.c:783
+#: ldexp.c:709
 msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
 msgstr "%F%S không thể chạy ngược bộ đếm địa điểm (từ %V về %V)\n"
 
-#: ldexp.c:810
+#: ldexp.c:748
 msgid "%P%F:%s: hash creation failed\n"
-msgstr "%P%F:%s: hash creation failed\n"
+msgstr "%P%F:%s: việc tạo băm bị lỗi\n"
 
-#: ldexp.c:1077 ldexp.c:1109
+#: ldexp.c:1000 ldexp.c:1025
 #, c-format
 msgid "%F%S nonconstant expression for %s\n"
-msgstr "%F%S biểu thức thay đổi chononconstant expression for %s\n"
+msgstr "%F%S biểu thức thay đổi cho %s\n"
 
-#: ldexp.c:1163
+#: ldexp.c:1082
 #, c-format
 msgid "%F%S non constant expression for %s\n"
 msgstr "%F%S biểu thức thay đổi cho %s\n"
@@ -512,15 +512,15 @@
 #: ldfile.c:141
 #, c-format
 msgid "attempt to open %s succeeded\n"
-msgstr "%s đã được mở\n"
+msgstr "việc cố mở %s đã thành công\n"
 
 #: ldfile.c:147
 msgid "%F%P: invalid BFD target `%s'\n"
-msgstr "%F%P: invalid BFD target `%s'\n"
+msgstr "%F%P: đích BFD không hợp lệ « %s »\n"
 
 #: ldfile.c:255 ldfile.c:282
 msgid "%P: skipping incompatible %s when searching for %s\n"
-msgstr "%P: đang nhảy quaskipkhông tương thích trong khi tìm kiếm%s when searching for %s\n"
+msgstr "%P: đang nhảy qua %s không tương thích trong khi tìm kiếm %s\n"
 
 #: ldfile.c:267
 msgid "%F%P: attempted static link of dynamic object `%s'\n"
@@ -532,15 +532,15 @@
 
 #: ldfile.c:387
 msgid "%F%P: %s: No such file: %E\n"
-msgstr "%F%P: %s: No such file: %E\n"
+msgstr "%F%P: %s: Không có tập tin như vậy: %E\n"
 
 #: ldfile.c:417
 msgid "%F%P: cannot find %s inside %s\n"
-msgstr "%F%P: cannot find %s inside %s\n"
+msgstr "%F%P: không tìm thấy được %s ở trong %s\n"
 
 #: ldfile.c:420
 msgid "%F%P: cannot find %s\n"
-msgstr "%F%P: cannot find %s\n"
+msgstr "%F%P: không tìm thấy được %s\n"
 
 #: ldfile.c:437 ldfile.c:453
 #, c-format
@@ -554,51 +554,55 @@
 
 #: ldfile.c:499
 msgid "%P%F: cannot open linker script file %s: %E\n"
-msgstr "%P%F: cannot open linker script file %s: %E\n"
+msgstr "%P%F: không thể mở tập tin tập lệnh liên kết %s: %E\n"
 
 #: ldfile.c:546
 msgid "%P%F: cannot represent machine `%s'\n"
-msgstr "%P%F: cannot represent machine `%s'\n"
+msgstr "%P%F: không thể miêu tả máy « %s »\n"
 
-#: ldlang.c:511
-msgid "%P%F: out of memory during initialization"
-msgstr "%P%F: out of memory during initialization"
+#: ldlang.c:940 ldlang.c:982 ldlang.c:2695
+msgid "%P%F: can not create hash table: %E\n"
+msgstr "%P%F: không thể tạo bảng băm: %E\n"
 
-#: ldlang.c:551
+#: ldlang.c:1025
 msgid "%P:%S: warning: redeclaration of memory region '%s'\n"
-msgstr "%P:%S: warning: redeclaration of memory region '%s'\n"
+msgstr "%P:%S: cảnh báo : miền nhớ « %s » được khai báo lại\n"
 
-#: ldlang.c:557
+#: ldlang.c:1031
 msgid "%P:%S: warning: memory region %s not declared\n"
-msgstr "%P:%S: cảnh báowachưa tuyên bố miền bộ nhớ reeclared\n"
+msgstr "%P:%S: cảnh báo : chưa khai báo miền bộ nhớ %s\n"
 
-#: ldlang.c:1073
+#: ldlang.c:1108 ldlang.c:1135
+msgid "%P%F: failed creating section `%s': %E\n"
+msgstr "%P%F: lỗi tạo phần « %s »: %E\n"
+
+#: ldlang.c:1601
 msgid ""
 "\n"
 "Memory Configuration\n"
 "\n"
 msgstr ""
 "\n"
-"Memory Configuration\n"
+"Cấu hình\n"
 "\n"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Name"
 msgstr "Tên"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Origin"
 msgstr "Gốc"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Length"
 msgstr "Độ dài"
 
-#: ldlang.c:1075
+#: ldlang.c:1603
 msgid "Attributes"
 msgstr "Thuộc tính"
 
-#: ldlang.c:1115
+#: ldlang.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -606,161 +610,157 @@
 "\n"
 msgstr ""
 "\n"
-"Tập lệnh liên kết được và bản đồ bộ nhớLinker script and memory map\n"
+"Tập lệnh liên kết và bản đồ bộ nhớ\n"
 "\n"
 
-#: ldlang.c:1183
+#: ldlang.c:1709
 msgid "%P%F: Illegal use of `%s' section\n"
 msgstr "%P%F: Không cho phép cách sử dụng phần « %s »\n"
 
-#: ldlang.c:1193
+#: ldlang.c:1716
 msgid "%P%F: output format %s cannot represent section called %s\n"
 msgstr "%P%F: khuôn dạng %s không thể miêu tả phần được gọi là %s\n"
 
-#: ldlang.c:1775
+#: ldlang.c:2313
 msgid "%B: file not recognized: %E\n"
-msgstr "%B: file not recognized: %E\n"
+msgstr "%B: không nhận ra tập tin: %E\n"
 
-#: ldlang.c:1776
+#: ldlang.c:2314
 msgid "%B: matching formats:"
-msgstr "%B: matching formats:"
+msgstr "%B: các dạng thức khớp với nhau :"
 
-#: ldlang.c:1783
+#: ldlang.c:2321
 msgid "%F%B: file not recognized: %E\n"
-msgstr "%F%B: file not recognized: %E\n"
+msgstr "%F%B: không nhận ra tập tin: %E\n"
 
-#: ldlang.c:1847
+#: ldlang.c:2385
 msgid "%F%B: member %B in archive is not an object\n"
-msgstr "%F%B: bộ phạnmembtrong kho không phải là đối tượngobject\n"
+msgstr "%F%B: bộ phạn kho %B không phải là đối tượng\n"
 
-#: ldlang.c:1858 ldlang.c:1872
+#: ldlang.c:2396 ldlang.c:2410
 msgid "%F%B: could not read symbols: %E\n"
-msgstr "%F%B: could not read symbols: %E\n"
+msgstr "%F%B: không thể đọc các ký hiệu: %E\n"
 
-#: ldlang.c:2127
+#: ldlang.c:2665
 msgid "%P: warning: could not find any targets that match endianness requirement\n"
-msgstr "%P: cảnh báowakhông tìm thấy đích nào khớp vớitkiểu endian đã cần thiếtirement\n"
+msgstr "%P: cảnh báo : không tìm thấy đích nào khớp với kiểu endian đã cần thiết\n"
 
-#: ldlang.c:2141
+#: ldlang.c:2679
 msgid "%P%F: target %s not found\n"
-msgstr "%P%F: target %s not found\n"
+msgstr "%P%F: không tìm thấy đích %s\n"
 
-#: ldlang.c:2143
+#: ldlang.c:2681
 msgid "%P%F: cannot open output file %s: %E\n"
-msgstr "%P%F: cannot open output file %s: %E\n"
+msgstr "%P%F: không thể mở tập tin xuất %s: %E\n"
 
-#: ldlang.c:2149
+#: ldlang.c:2687
 msgid "%P%F:%s: can not make object file: %E\n"
-msgstr "%P%F:%s: can not make object file: %E\n"
+msgstr "%P%F:%s: không thể tạo tập tin đối tượng: %E\n"
 
-#: ldlang.c:2153
+#: ldlang.c:2691
 msgid "%P%F:%s: can not set architecture: %E\n"
-msgstr "%P%F:%s: can not set architecture: %E\n"
+msgstr "%P%F:%s: không thể lập kiến trúc: %E\n"
 
-#: ldlang.c:2157
-msgid "%P%F: can not create link hash table: %E\n"
-msgstr "%P%F: can not create link hash table: %E\n"
-
-#: ldlang.c:2301
+#: ldlang.c:2839
 msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n"
 msgstr "%P%F: « bfd_hash_lookup » (bfd băm tra cứu) thất bại, tạo ký hiệu %s\n"
 
-#: ldlang.c:2319
+#: ldlang.c:2857
 msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n"
-msgstr "%P%F: « bfd_hash_allocate » (bfd băm cấp cho) thất bại, tạo ký hiệu %s\n"
+msgstr "%P%F: việc « bfd_hash_lookup » (bfd băm tra cứu) bị lỗi, tạo ký hiệu %s\n"
 
-#: ldlang.c:2710
+#: ldlang.c:3288
 msgid " load address 0x%V"
-msgstr " load address 0x%V"
+msgstr " tải địa chỉ 0x%V"
 
-#: ldlang.c:2874
+#: ldlang.c:3528
 msgid "%W (size before relaxing)\n"
-msgstr "%W (kích cỡ trước khi lơi rasize before relaxing)\n"
+msgstr "%W (kích cỡ trước khi lơi ra)\n"
 
-#: ldlang.c:2961
+#: ldlang.c:3615
 #, c-format
 msgid "Address of section %s set to "
-msgstr "Địa chỉ của phần %s được lập là "
+msgstr "Địa chỉ của phần %s được lập thành "
 
-#: ldlang.c:3114
+#: ldlang.c:3768
 #, c-format
 msgid "Fail with %d\n"
 msgstr "Thất bại với %d\n"
 
-#: ldlang.c:3351
+#: ldlang.c:4040
 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
 msgstr "%X%P: phần %s [%V → %V] đè lên phần %s [%V → %V]\n"
 
-#: ldlang.c:3379
+#: ldlang.c:4065
 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
 msgstr "%X%P: địa chỉ 0x%v cửa %B phần %s không phải ở trong miền %s\n"
 
-#: ldlang.c:3388
+#: ldlang.c:4074
 msgid "%X%P: region %s is full (%B section %s)\n"
 msgstr "%X%P: miền %s đầy (%B phần %s)\n"
 
-#: ldlang.c:3439
+#: ldlang.c:4114
+#, c-format
+msgid "%F%S: non constant or forward reference address expression for section %s\n"
+msgstr "%F%S: biểu thức địa chỉ tham chiếu thay đổi hay tiếp lên %s\n"
+
+#: ldlang.c:4139
 msgid "%P%X: Internal error on COFF shared library section %s\n"
 msgstr "%P%X: Lỗi nội bộ trên phần thư viên dùng chung COFF %s\n"
 
-#: ldlang.c:3493
+#: ldlang.c:4197
 msgid "%P%F: error: no memory region specified for loadable section `%s'\n"
 msgstr "%P%F: lỗi: chưa ghi rõ miền bộ nhớ cho phần tải được « %s »\n"
 
-#: ldlang.c:3498
+#: ldlang.c:4202
 msgid "%P: warning: no memory region specified for loadable section `%s'\n"
 msgstr "%P: lỗi: chưa ghi rõ miền bộ nhớ cho phần tải được « %s »\n"
 
-#: ldlang.c:3515
-msgid "%P: warning: changing start of section %s by %u bytes\n"
-msgstr "%P: cảnh báo: đang thay đổi đầu phần %s bằng %u byte\n"
+#: ldlang.c:4224
+msgid "%P: warning: changing start of section %s by %lu bytes\n"
+msgstr "%P: cảnh báo : đang thay đổi đầu phần %s bằng %lu byte\n"
 
-#: ldlang.c:3532
-#, c-format
-msgid "%F%S: non constant or forward reference address expression for section %s\n"
-msgstr "%F%S: biểu thức địa chỉ tham chiếu thay đổi hay tiếp lên %s\n"
-
-#: ldlang.c:3703
+#: ldlang.c:4388
 msgid "%P%F: can't relax section: %E\n"
-msgstr "%P%F: can't relax section: %E\n"
+msgstr "%P%F: không thể lơi ra phần: %E\n"
 
-#: ldlang.c:3960
+#: ldlang.c:4636
 msgid "%F%P: invalid data statement\n"
-msgstr "%F%P: invalid data statement\n"
+msgstr "%F%P: câu dữ liệu không hợp lệ\n"
 
-#: ldlang.c:3999
+#: ldlang.c:4669
 msgid "%F%P: invalid reloc statement\n"
-msgstr "%F%P: invalid reloc statement\n"
+msgstr "%F%P: câu định vị lại không hợp lệ\n"
 
-#: ldlang.c:4141
+#: ldlang.c:4802
 msgid "%P%F:%s: can't set start address\n"
-msgstr "%P%F:%s: can't set start address\n"
+msgstr "%P%F:%s: không thể lập địa chỉ đầu\n"
 
-#: ldlang.c:4154 ldlang.c:4173
+#: ldlang.c:4815 ldlang.c:4834
 msgid "%P%F: can't set start address\n"
-msgstr "%P%F: can't set start address\n"
+msgstr "%P%F: không thể lập địa chỉ đầu\n"
 
-#: ldlang.c:4166
+#: ldlang.c:4827
 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
-msgstr "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
+msgstr "%P: cảnh báo : không tìm thấy được ký hiệu vào %s; nên dùng mặc định %V\n"
 
-#: ldlang.c:4178
+#: ldlang.c:4839
 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
-msgstr "%P: cảnh báo: không tìm thấy ký hiệu vào %s;wnên không lập địa chỉ bắt đầu symbol %s; not setting start address\n"
+msgstr "%P: cảnh báo: không tìm thấy ký hiệu vào %s; nên không lập địa chỉ bắt đầu\n"
 
-#: ldlang.c:4227
+#: ldlang.c:4888
 msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"
 msgstr "%P%F: Không hỗ trợ liên kết định vị lại đưọc có định vị lại từ khuôn dạng %s (%B) sang khuôn dạng %s (%B)\n"
 
-#: ldlang.c:4237
+#: ldlang.c:4898
 msgid "%P: warning: %s architecture of input file `%B' is incompatible with %s output\n"
 msgstr "%P: cảnh báo: kiến trức %s của tập tin nhập « %B » không tương thích với dữ liệu xuất %s\n"
 
-#: ldlang.c:4259
+#: ldlang.c:4920
 msgid "%P%X: failed to merge target specific data of file %B\n"
 msgstr "%P%X: lỗi hợp nhất dữ liệu đặc trưng cho dữ liệu của tập tin %B\n"
 
-#: ldlang.c:4343
+#: ldlang.c:5004
 msgid ""
 "\n"
 "Allocating common symbols\n"
@@ -768,168 +768,164 @@
 "\n"
 "Đang cấp phát các ký hiệu dùng chung\n"
 
-#: ldlang.c:4344
+#: ldlang.c:5005
 msgid ""
 "Common symbol       size              file\n"
 "\n"
 msgstr ""
-"Common symbol       size              file\n"
+"Ký hiệu cùng dùng      cỡ              tập tin\n"
 "\n"
 
-#: ldlang.c:4470
+#: ldlang.c:5131
 msgid "%P%F: invalid syntax in flags\n"
-msgstr "%P%F: invalid syntax in flags\n"
+msgstr "%P%F: cụ pháp không hợp lệ trong các cờ\n"
 
 # Type: error
 # Description
-#: ldlang.c:4740
+#: ldlang.c:5406
 msgid "%P%F: Failed to create hash table\n"
-msgstr "%P%F: Failed to create hash table\n"
+msgstr "%P%F: Việc tạo bảng băm bị lỗi\n"
 
-#: ldlang.c:5057
-msgid "%P%Fmultiple STARTUP files\n"
-msgstr "%P%Fmultiple STARTUP files\n"
+#: ldlang.c:5722
+msgid "%P%F: multiple STARTUP files\n"
+msgstr "%P%F: có nhiều tập tin STARTUP (khởi chạy)\n"
 
-#: ldlang.c:5105
+#: ldlang.c:5770
 msgid "%X%P:%S: section has both a load address and a load region\n"
-msgstr "%X%P:%S: phần có cả địa chỉ tải lẫn miền tải đềusection has both a load address and a load region\n"
+msgstr "%X%P:%S: phần có cả địa chỉ tải lẫn miền tải đều\n"
 
-#: ldlang.c:5345
+#: ldlang.c:6007
 msgid "%F%P: bfd_record_phdr failed: %E\n"
-msgstr "%F%P: « bfd_record_phdr » thất bại: %E\n"
+msgstr "%F%P: việc « bfd_record_phdr » bị lỗi: %E\n"
 
-#: ldlang.c:5365
+#: ldlang.c:6027
 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
-msgstr "%X%P: phần « %s » được cấp cho phdr không có « %s »\n"
+msgstr "%X%P: phần « %s » được gán cho phdr không có « %s »\n"
 
-#: ldlang.c:5751
+#: ldlang.c:6418
 msgid "%X%P: unknown language `%s' in version information\n"
 msgstr "%X%P: không biết ngôn ngữ « %s » trong thông tin phiên bản\n"
 
-#: ldlang.c:5893
+#: ldlang.c:6560
 msgid "%X%P: anonymous version tag cannot be combined with other version tags\n"
 msgstr "%X%P: thẻ phiên bản vô danh không kết hợp được với thẻ phiên bản khác\n"
 
-#: ldlang.c:5902
+#: ldlang.c:6569
 msgid "%X%P: duplicate version tag `%s'\n"
-msgstr "%X%P: duplicate version tag `%s'\n"
+msgstr "%X%P: thẻ phiên bản trùng « %s »\n"
 
-#: ldlang.c:5922 ldlang.c:5931 ldlang.c:5948 ldlang.c:5958
+#: ldlang.c:6589 ldlang.c:6598 ldlang.c:6615 ldlang.c:6625
 msgid "%X%P: duplicate expression `%s' in version information\n"
-msgstr "%X%P: biểu thức trùng « %s » trong thông tin phiên bảnduplicate expression `%s' in version information\n"
+msgstr "%X%P: biểu thức trùng « %s » trong thông tin phiên bản\n"
 
-#: ldlang.c:5998
+#: ldlang.c:6665
 msgid "%X%P: unable to find version dependency `%s'\n"
-msgstr "%X%P: unable to find version dependency `%s'\n"
+msgstr "%X%P: không tìm thấy được cách phục thuộc vào phiên bản « %s »\n"
 
-#: ldlang.c:6020
+#: ldlang.c:6687
 msgid "%X%P: unable to read .exports section contents\n"
-msgstr "%X%P: unable to read .exports section contents\n"
+msgstr "%X%P: không thể đọc nội dung của phần « .exports » (xuất)\n"
 
-#: ldmain.c:229
+#: ldmain.c:232
 msgid "%X%P: can't set BFD default target to `%s': %E\n"
-msgstr "%X%P: không thể lập đích can'mặc định là « %s »:t to `%s': %E\n"
+msgstr "%X%P: không thể lập đích mặc định BFD thành « %s »: %E\n"
 
-#: ldmain.c:341
+#: ldmain.c:345
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: không cho phép sử dụng hai tùy chọn « --relax » (lơi ra) và « -r » với nhau \n"
 
-#: ldmain.c:343
+#: ldmain.c:347
 msgid "%P%F: -r and -shared may not be used together\n"
-msgstr "%P%F: -r and -shared may not be used together\n"
+msgstr "%P%F: không thể sử dụng cả « -r » lẫn « -shared » (dùng chung) đều\n"
 
-#: ldmain.c:347
-msgid "%P%F: -static and -shared may not be used together\n"
-msgstr "%P%F: -static and -shared may not be used together\n"
-
-#: ldmain.c:352
+#: ldmain.c:353
 msgid "%P%F: -F may not be used without -shared\n"
 msgstr "%P%F: không thể sử dụng tùy chọn « -F » khi không có tùy chọn « -shared » (dùng chung)\n"
 
-#: ldmain.c:354
+#: ldmain.c:355
 msgid "%P%F: -f may not be used without -shared\n"
 msgstr "%P%F: không thể sử dụng tùy chọn « -f » khi không có tùy chọn « -shared » (dùng chung)\n"
 
-#: ldmain.c:396
+#: ldmain.c:397
 msgid "using external linker script:"
 msgstr "đang dùng tập lệnh liên kết bên ngoài:"
 
-#: ldmain.c:398
+#: ldmain.c:399
 msgid "using internal linker script:"
 msgstr "đang dùng tập lệnh liên kết bên trong:"
 
-#: ldmain.c:432
+#: ldmain.c:433
 msgid "%P%F: no input files\n"
 msgstr "%P%F: không có tập tin nhập nào\n"
 
-#: ldmain.c:436
+#: ldmain.c:437
 msgid "%P: mode %s\n"
 msgstr "%P: chế độ %s\n"
 
-#: ldmain.c:452
+#: ldmain.c:453
 msgid "%P%F: cannot open map file %s: %E\n"
-msgstr "%P%F: cannot open map file %s: %E\n"
+msgstr "%P%F: không thể mở tập tin bản đồ %s: %E\n"
 
-#: ldmain.c:482
+#: ldmain.c:485
 msgid "%P: link errors found, deleting executable `%s'\n"
-msgstr "%P: link errors found, deleting executable `%s'\n"
+msgstr "%P: tìm thấy một số lỗi liên kết nên xoá bỏ tập tin chạy được « %s »\n"
 
-#: ldmain.c:491
+#: ldmain.c:494
 msgid "%F%B: final close failed: %E\n"
-msgstr "%F%B: final close failed: %E\n"
+msgstr "%F%B: việc đóng cuối cùng bị lỗi: %E\n"
 
-#: ldmain.c:517
+#: ldmain.c:520
 msgid "%X%P: unable to open for source of copy `%s'\n"
-msgstr "%X%P: unable to open for source of copy `%s'\n"
+msgstr "%X%P: không thể mở cho nguồn của bản sao « %s »\n"
 
-#: ldmain.c:520
+#: ldmain.c:523
 msgid "%X%P: unable to open for destination of copy `%s'\n"
-msgstr "%X%P: unable to open for destination of copy `%s'\n"
+msgstr "%X%P: không thể mở cho đích của bản sao « %s »\n"
 
-#: ldmain.c:527
+#: ldmain.c:530
 msgid "%P: Error writing file `%s'\n"
-msgstr "%P: Error writing file `%s'\n"
+msgstr "%P: Gặp lỗi khi ghi tập tin « %s »\n"
 
-#: ldmain.c:532 pe-dll.c:1447
+#: ldmain.c:535 pe-dll.c:1494
 #, c-format
 msgid "%P: Error closing file `%s'\n"
 msgstr "%P: Gặp lỗi khi đóng tập tin « %s »\n"
 
-#: ldmain.c:548
+#: ldmain.c:551
 #, c-format
 msgid "%s: total time in link: %ld.%06ld\n"
 msgstr "%s: thời gian tổng trong liên kết: %ld.%06ld\n"
 
-#: ldmain.c:551
+#: ldmain.c:554
 #, c-format
 msgid "%s: data size %ld\n"
 msgstr "%s: kích cỡ dữ liệu %ld\n"
 
-#: ldmain.c:634
+#: ldmain.c:637
 msgid "%P%F: missing argument to -m\n"
-msgstr "%P%F: missing argument to -m\n"
+msgstr "%P%F: thiếu đối số tới « -m »\n"
 
-#: ldmain.c:780 ldmain.c:798 ldmain.c:828
+#: ldmain.c:784 ldmain.c:803 ldmain.c:834
 msgid "%P%F: bfd_hash_table_init failed: %E\n"
-msgstr "%P%F: « bfd_hash_table_init » (bfd băm bảng khởi động) thất bại: %E\n"
+msgstr "%P%F: việc « bfd_hash_table_init » (bfd băm bảng khởi động) bị lỗi: %E\n"
 
-#: ldmain.c:784 ldmain.c:802
+#: ldmain.c:788 ldmain.c:807
 msgid "%P%F: bfd_hash_lookup failed: %E\n"
-msgstr "%P%F: bfd_hash_lookup failed: %E\n"
+msgstr "%P%F: việc « bfd_hash_lookup » (tra tìm băm BFD) bị lỗi: %E\n"
 
-#: ldmain.c:816
+#: ldmain.c:821
 msgid "%X%P: error: duplicate retain-symbols-file\n"
-msgstr "%X%P: lỗieicate retain-symbols (giữ lại tập tin ký hiệu) trùng-file\n"
+msgstr "%X%P: lỗi: « retain-symbols-file » (giữ lại tập tin ký hiệu) trùng\n"
 
-#: ldmain.c:858
+#: ldmain.c:864
 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
-msgstr "%P%F: « bfd_hash_lookup » (bfd băm tra cứu) cho sự chèn đã thất bại: %E\n"
+msgstr "%P%F: việc « bfd_hash_lookup » (bfd băm tra cứu) cho sự chèn bị lỗi: %E\n"
 
-#: ldmain.c:863
+#: ldmain.c:869
 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
-msgstr "%P: tùy chọn « -retain-symbols-file » (giữ lại tập tin ký hiệu) đè lên « -s » và « -S »\n"
+msgstr "%P: tùy chọn « -retain-symbols-file » (giữ lại tập tin ký hiệu) có quyền cao hơn « -s » và « -S »\n"
 
-#: ldmain.c:938
+#: ldmain.c:944
 #, c-format
 msgid ""
 "Archive member included because of file (symbol)\n"
@@ -938,175 +934,169 @@
 "Gồm bộ phạn kho vì tập tin (ký hiệu)\n"
 "\n"
 
-#: ldmain.c:1008
+#: ldmain.c:1014
 msgid "%X%C: multiple definition of `%T'\n"
-msgstr "%X%C: multiple definition of `%T'\n"
+msgstr "%X%C: « %T » đã được định nghĩa nhiều lần\n"
 
-#: ldmain.c:1011
+#: ldmain.c:1017
 msgid "%D: first defined here\n"
-msgstr "%D: first defined here\n"
+msgstr "%D: fiđã được định nghĩa đầu tiên ở đây\n"
 
-#: ldmain.c:1015
+#: ldmain.c:1021
 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
-msgstr "%P: Tắt khả năng lơi ra: nó sẽ không hoạt động với nhiều lời định nghĩaisabling relaxation: it will not work with multiple definitions\n"
+msgstr "%P: Tắt khả năng lơi ra: nó sẽ không hoạt động với nhiều lời định nghĩa\n"
 
-#: ldmain.c:1045
+#: ldmain.c:1051
 msgid "%B: warning: definition of `%T' overriding common\n"
 msgstr "%B: cảnh báo: lời định nghĩa « %T » đè lên điều dùng chung\n"
 
-#: ldmain.c:1048
+#: ldmain.c:1054
 msgid "%B: warning: common is here\n"
-msgstr "%B: warning: common is here\n"
+msgstr "%B: cảnh báo : common (cùng dùng) là đây\n"
 
-#: ldmain.c:1055
+#: ldmain.c:1061
 msgid "%B: warning: common of `%T' overridden by definition\n"
-msgstr "%B: cảnh báowalời định nghĩa đè lên điềum« on » dùng chunginition\n"
+msgstr "%B: cảnh báo : điều cùng dùng lớn hơn có đè lên điều cùng dùng « %T »\n"
 
-#: ldmain.c:1058
+#: ldmain.c:1064
 msgid "%B: warning: defined here\n"
-msgstr "%B: warning: defined here\n"
+msgstr "%B: cảnh báo : điều dùng chung lớn hơn tại đây\n"
 
-#: ldmain.c:1065
+#: ldmain.c:1071
 msgid "%B: warning: common of `%T' overridden by larger common\n"
-msgstr ""
-"%B: cảnh báowađiều dùng chung lớn hơn có đè lên điềum« %T » dùng chung\n"
-"ommon\n"
+msgstr "%B: cảnh báo : điều « %T » dùng chung có đè lên điều dùng chung nhỏ hơn\n"
 
-#: ldmain.c:1068
+#: ldmain.c:1074
 msgid "%B: warning: larger common is here\n"
 msgstr "%B: cảnh báo: điều dùng chung lớn hơn tại đây\n"
 
-#: ldmain.c:1072
+#: ldmain.c:1078
 msgid "%B: warning: common of `%T' overriding smaller common\n"
 msgstr "%B: cảnh báo: điều « %T » dùng chung có đè lên điều dùng chung nhỏ hơn\n"
 
-#: ldmain.c:1075
+#: ldmain.c:1081
 msgid "%B: warning: smaller common is here\n"
-msgstr "%B: warning: smaller common is here\n"
+msgstr "%B: cảnh báo : điều cùng dùng nhỏ hơn ở đây\n"
 
-#: ldmain.c:1079
+#: ldmain.c:1085
 msgid "%B: warning: multiple common of `%T'\n"
-msgstr "%B: warning: multiple common of `%T'\n"
+msgstr "%B: cảnh báo : nhiều điều cùng dùng của « %T »\n"
 
-#: ldmain.c:1081
+#: ldmain.c:1087
 msgid "%B: warning: previous common is here\n"
-msgstr "%B: warning: previous common is here\n"
+msgstr "%B: cảnh báo : điều cùng dùng trước ở đây\n"
 
-#: ldmain.c:1101 ldmain.c:1139
+#: ldmain.c:1107 ldmain.c:1145
 msgid "%P: warning: global constructor %s used\n"
-msgstr "%P: warning: global constructor %s used\n"
+msgstr "%P: cảnh báo : bộ cấu trúc toàn cục %s được dùng\n"
 
-#: ldmain.c:1149
+#: ldmain.c:1155
 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
-msgstr "%P%F: lỗi hậu phương BFDbakhông hỗ trợ « ckend error: B »R unsupported\n"
+msgstr "%P%F: lỗi hậu phương: « BFD_RELOC_CTOR » không được hỗ trợ\n"
 
 #. We found a reloc for the symbol we are looking for.
-#: ldmain.c:1203 ldmain.c:1205 ldmain.c:1207 ldmain.c:1245 ldmain.c:1293
+#: ldmain.c:1209 ldmain.c:1211 ldmain.c:1213 ldmain.c:1251 ldmain.c:1299
 msgid "warning: "
 msgstr "cảnh báo: "
 
-#: ldmain.c:1327
+#: ldmain.c:1334
 msgid "%F%P: bfd_hash_table_init failed: %E\n"
-msgstr "%F%P: « bfd_hash_table_init » (bfd băm bảng khởi động) thất bại: %E\n"
+msgstr "%F%P: việc « bfd_hash_table_init » (bfd băm bảng khởi động) bị lỗi: %E\n"
 
-#: ldmain.c:1334
+#: ldmain.c:1341
 msgid "%F%P: bfd_hash_lookup failed: %E\n"
-msgstr "%F%P: bfd_hash_lookup failed: %E\n"
+msgstr "%F%P: việc « bfd_hash_lookup » (tra tìm băm BFD) bị lỗi: %E\n"
 
-#: ldmain.c:1355
+#: ldmain.c:1362
 msgid "%X%C: undefined reference to `%T'\n"
-msgstr "%X%C: undefined reference to `%T'\n"
+msgstr "%X%C: tham chiếu chưa định nghĩa đến « %T »\n"
 
-#: ldmain.c:1358
+#: ldmain.c:1365
 msgid "%C: warning: undefined reference to `%T'\n"
-msgstr "%C: warning: undefined reference to `%T'\n"
+msgstr "%C: cảnh báo : tham chiếu chưa định nghĩa đến « %T »\n"
 
-#: ldmain.c:1364
+#: ldmain.c:1371
 msgid "%X%D: more undefined references to `%T' follow\n"
 msgstr "%X%D: more undefined references to `%T' follow\n"
 
-#: ldmain.c:1367
+#: ldmain.c:1374
 msgid "%D: warning: more undefined references to `%T' follow\n"
 msgstr "%D: chưa định nghĩa lời tham chiếu đến « %T » tại nhiều nơi nữa theo đây\n"
 
-#: ldmain.c:1378
+#: ldmain.c:1385
 msgid "%X%B: undefined reference to `%T'\n"
-msgstr "%X%B: undefined reference to `%T'\n"
+msgstr "%X%B: tham chiếu chưa định nghĩa đến « %T »\n"
 
-#: ldmain.c:1381
+#: ldmain.c:1388
 msgid "%B: warning: undefined reference to `%T'\n"
 msgstr "%B: cảnh báo: chưa định nghĩa lời tham chiếu đến « %T »\n"
 
-#: ldmain.c:1387
+#: ldmain.c:1394
 msgid "%X%B: more undefined references to `%T' follow\n"
-msgstr "%X%B: more undefined references to `%T' follow\n"
+msgstr "%X%B: có tham chiếu chưa định nghĩa đến « %T » thêm nữa theo sau\n"
 
-#: ldmain.c:1390
+#: ldmain.c:1397
 msgid "%B: warning: more undefined references to `%T' follow\n"
 msgstr "%B: cảnh báo: chưa định nghĩa lời tham chiếu đến « %T » tại nhiều nơi nữa theo đây\n"
 
-#: ldmain.c:1425 ldmain.c:1478 ldmain.c:1496
-msgid "%P%X: generated"
-msgstr "%P%X: generated"
-
-#: ldmain.c:1432
+#: ldmain.c:1436
 msgid " additional relocation overflows omitted from the output\n"
-msgstr "tràn định vị lại thêm bị bỏ đi khỏi dữ liệu xuấtdditional relocation overflows omitted from the output\n"
+msgstr " tràn định vị lại thêm bị bỏ đi khỏi dữ liệu xuất\n"
 
-#: ldmain.c:1445
+#: ldmain.c:1449
 msgid " relocation truncated to fit: %s against undefined symbol `%T'"
 msgstr " sự định vị lại bị cắt xém để vừa: %s đối với ký hiệu chưa định nghĩa « %T »"
 
-#: ldmain.c:1450
+#: ldmain.c:1454
 msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"
 msgstr " sự định vị lại bị cắt xém để vừa: %s đối với ký hiệu « %T » đã định nghĩa trong phần %A trong %B"
 
-#: ldmain.c:1460
+#: ldmain.c:1466
 msgid " relocation truncated to fit: %s against `%T'"
-msgstr "sự định vị lại bị cắt xém để vừa: %s đối với « %T »"
+msgstr " sự định vị lại bị cắt xém để vừa: %s đối với « %T »"
 
-#: ldmain.c:1481
+#: ldmain.c:1483
 #, c-format
-msgid "dangerous relocation: %s\n"
-msgstr "sự định vị lại nguy hiểm: %s\n"
+msgid "%X%C: dangerous relocation: %s\n"
+msgstr "%X%C: việc định vị lại nguy hiểm: %s\n"
 
-#: ldmain.c:1499
-msgid " reloc refers to symbol `%T' which is not being output\n"
-msgstr " sự định vị lại tham chiếu đến ký hiệu « %T » mà không còn được xuất lại\n"
+#: ldmain.c:1498
+msgid "%X%C: reloc refers to symbol `%T' which is not being output\n"
+msgstr "%X%C: việc định vị lại tham chiếu đến ký hiệu « %T » mà không đang được xuất\n"
 
-#: ldmisc.c:149
+#: ldmisc.c:147
 #, c-format
 msgid "no symbol"
 msgstr "không có ký hiệu"
 
-#: ldmisc.c:240
+#: ldmisc.c:238
 #, c-format
 msgid "built in linker script:%u"
 msgstr "tập lệnh liên kết có sẵn:%u"
 
-#: ldmisc.c:289 ldmisc.c:293
+#: ldmisc.c:294 ldmisc.c:298
 msgid "%B%F: could not read symbols\n"
-msgstr "%B%F: could not read symbols\n"
+msgstr "%B%F: không thể đọc các ký hiệu\n"
 
-#: ldmisc.c:329
-msgid "%B: In function `%T':\n"
-msgstr "%B: In function `%T':\n"
+#: ldmisc.c:340
+msgid "%B: In function `%T'"
+msgstr "%B: trong hàm « %T »"
 
-#: ldmisc.c:480
+#: ldmisc.c:510
 msgid "%F%P: internal error %s %d\n"
-msgstr "%F%P: internal error %s %d\n"
+msgstr "%F%P: lá»—i ná»™i bá»™ %s %d\n"
 
-#: ldmisc.c:526
+#: ldmisc.c:556
 msgid "%P: internal error: aborting at %s line %d in %s\n"
-msgstr "%P: internal error: aborting at %s line %d in %s\n"
+msgstr "%P: lỗi nội bộ : đang hủy bỏ tại %s dòng %d trong %s\n"
 
-#: ldmisc.c:529
+#: ldmisc.c:559
 msgid "%P: internal error: aborting at %s line %d\n"
-msgstr "%P: internal error: aborting at %s line %d\n"
+msgstr "%P: lỗi nội bộ : đang hủy bỏ tại %s dòng %d\n"
 
-#: ldmisc.c:531
+#: ldmisc.c:561
 msgid "%P%F: please report this bug\n"
-msgstr "%P%F: vui lòng thông báo lỗi nàyplease report this bug\n"
+msgstr "%P%F: vui lòng thông báo lỗi này\n"
 
 #. Output for noisy == 2 is intended to follow the GNU standards.
 #: ldver.c:38
@@ -1135,280 +1125,280 @@
 
 #: ldwrite.c:55 ldwrite.c:191
 msgid "%P%F: bfd_new_link_order failed\n"
-msgstr "%P%F: « bfd_new_link_order » (bfd mới liên kết thứ tự) thất bại\n"
+msgstr "%P%F: việc « bfd_new_link_order » (bfd mới liên kết thứ tự) bị lỗi\n"
 
-#: ldwrite.c:341
+#: ldwrite.c:344
 msgid "%F%P: cannot create split section name for %s\n"
-msgstr "%F%P: cannot create split section name for %s\n"
+msgstr "%F%P: không thể tạo tên phần đã chia tách cho %s\n"
 
-#: ldwrite.c:353
+#: ldwrite.c:356
 msgid "%F%P: clone section failed: %E\n"
-msgstr "%F%P: clone section failed: %E\n"
+msgstr "%F%P: việc bắt chước phần bị lỗi: %E\n"
 
-#: ldwrite.c:391
+#: ldwrite.c:394
 #, c-format
 msgid "%8x something else\n"
-msgstr "%8x cái gì khácsomething else\n"
+msgstr "%8x cái gì khác\n"
 
-#: ldwrite.c:561
+#: ldwrite.c:564
 msgid "%F%P: final link failed: %E\n"
-msgstr "%F%P: final link failed: %E\n"
+msgstr "%F%P: liên kết cuối cùng bị lỗi: %E\n"
 
-#: lexsup.c:195 lexsup.c:327
+#: lexsup.c:196 lexsup.c:328
 msgid "KEYWORD"
-msgstr "TỪ_KHÓAÊN_BÀN_PHÍM"
+msgstr "TỪ_KHOÁ"
 
-#: lexsup.c:195
+#: lexsup.c:196
 msgid "Shared library control for HP/UX compatibility"
 msgstr "Điều khiển thư viên dùng chung để tương thích với HP/UX"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "ARCH"
 msgstr "ARCH"
 
-#: lexsup.c:198
+#: lexsup.c:199
 msgid "Set architecture"
 msgstr "Lập kiến trúc"
 
-#: lexsup.c:200 lexsup.c:421
+#: lexsup.c:201 lexsup.c:422
 msgid "TARGET"
 msgstr "ĐÍCH"
 
-#: lexsup.c:200
+#: lexsup.c:201
 msgid "Specify target for following input files"
 msgstr "Ghi rõ đích cho những tập tin nhập theo đây"
 
-#: lexsup.c:203 lexsup.c:252 lexsup.c:264 lexsup.c:277 lexsup.c:380
-#: lexsup.c:433 lexsup.c:490
+#: lexsup.c:204 lexsup.c:253 lexsup.c:265 lexsup.c:278 lexsup.c:381
+#: lexsup.c:434 lexsup.c:491
 msgid "FILE"
 msgstr "TẬP TIN"
 
-#: lexsup.c:203
+#: lexsup.c:204
 msgid "Read MRI format linker script"
 msgstr "Đọc tập lệnh liên kết khuôn dạng MRI"
 
-#: lexsup.c:205
+#: lexsup.c:206
 msgid "Force common symbols to be defined"
 msgstr "Ép buộc định nghĩa mọi ký hiệu dùng chung"
 
-#: lexsup.c:209 lexsup.c:475 lexsup.c:477 lexsup.c:479
+#: lexsup.c:210 lexsup.c:476 lexsup.c:478 lexsup.c:480
 msgid "ADDRESS"
 msgstr "ĐỊA CHỈ"
 
-#: lexsup.c:209
+#: lexsup.c:210
 msgid "Set start address"
 msgstr "Lập địa chỉ bắt đầu"
 
-#: lexsup.c:211
+#: lexsup.c:212
 msgid "Export all dynamic symbols"
 msgstr "Xuất mọi ký hiệu động"
 
-#: lexsup.c:213
+#: lexsup.c:214
 msgid "Link big-endian objects"
 msgstr "Liên kết mọi đối tượng big-endian (cuối lớn)"
 
-#: lexsup.c:215
+#: lexsup.c:216
 msgid "Link little-endian objects"
 msgstr "Liên kết mọi đối tượng little-endian (cuối nhỏ)"
 
-#: lexsup.c:217 lexsup.c:220
+#: lexsup.c:218 lexsup.c:221
 msgid "SHLIB"
 msgstr "SHLIB"
 
-#: lexsup.c:217
+#: lexsup.c:218
 msgid "Auxiliary filter for shared object symbol table"
 msgstr "Bộ lọc phụ cho bảng ký hiệu đối tượng dùng chung"
 
-#: lexsup.c:220
+#: lexsup.c:221
 msgid "Filter for shared object symbol table"
 msgstr "Bộ lọc cho bảng ký hiệu đối tượng dùng chung"
 
-#: lexsup.c:223
+#: lexsup.c:224
 msgid "Ignored"
-msgstr "Ignored"
+msgstr "Bị bỏ qua"
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "SIZE"
 msgstr "Cá» "
 
-#: lexsup.c:225
+#: lexsup.c:226
 msgid "Small data size (if no size, same as --shared)"
 msgstr "Kích cỡ dữ liệu nhỏ (nếu không có, nó bằng tùy chọn « --shared »)"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "FILENAME"
 msgstr "TÊN TẬP TIN"
 
-#: lexsup.c:228
+#: lexsup.c:229
 msgid "Set internal name of shared library"
 msgstr "Lập tên nội bộ của thư viên dùng chung"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "PROGRAM"
 msgstr "CHƯƠNG TRÌNH"
 
-#: lexsup.c:230
+#: lexsup.c:231
 msgid "Set PROGRAM as the dynamic linker to use"
 msgstr "Lập CHƯƠNG TRÌNH là bộ liên kết động cần dùng"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "LIBNAME"
 msgstr "TÊN THƯ VIÊN"
 
-#: lexsup.c:233
+#: lexsup.c:234
 msgid "Search for library LIBNAME"
 msgstr "Tìm kiếm thư viên TÊN THƯ VIÊN"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "DIRECTORY"
 msgstr "THƯ MỤC"
 
-#: lexsup.c:235
+#: lexsup.c:236
 msgid "Add DIRECTORY to library search path"
 msgstr "Thêm THƯ MỤC vào đường dẫn tìm kiếm thư viên"
 
-#: lexsup.c:238
+#: lexsup.c:239
 msgid "Override the default sysroot location"
 msgstr "Đè lên địa điểm sysroot (gốc hệ thống) mặc định"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "EMULATION"
 msgstr "MÔ PHỎNG"
 
-#: lexsup.c:240
+#: lexsup.c:241
 msgid "Set emulation"
 msgstr "Lập cách mô phỏng"
 
-#: lexsup.c:242
+#: lexsup.c:243
 msgid "Print map file on standard output"
 msgstr "In tập tin bản đồ ra thiết bị xuất chuẩn"
 
-#: lexsup.c:244
+#: lexsup.c:245
 msgid "Do not page align data"
 msgstr "Đừng canh lề trang dữ liệu"
 
-#: lexsup.c:246
+#: lexsup.c:247
 msgid "Do not page align data, do not make text readonly"
 msgstr "Đừng canh lề trang dữ liệu, đừng lập văn bản là chỉ đọc"
 
-#: lexsup.c:249
+#: lexsup.c:250
 msgid "Page align data, make text readonly"
 msgstr "Canh lề trang dữ liệu, lập văn bản là chỉ đọc"
 
-#: lexsup.c:252
+#: lexsup.c:253
 msgid "Set output file name"
 msgstr "Lập tên tập tin xuất"
 
-#: lexsup.c:254
+#: lexsup.c:255
 msgid "Optimize output file"
 msgstr "Ưu tiên hóa tập tin xuất"
 
-#: lexsup.c:256
+#: lexsup.c:257
 msgid "Ignored for SVR4 compatibility"
 msgstr "Bị bỏ qua để tương thích với SVR4"
 
-#: lexsup.c:260
+#: lexsup.c:261
 msgid "Generate relocatable output"
 msgstr "Tạo ra dữ liệu có thể định vị lại"
 
-#: lexsup.c:264
+#: lexsup.c:265
 msgid "Just link symbols (if directory, same as --rpath)"
 msgstr "Chỉ liên kết ký hiệu (nếu thư mục, bằng tùy chọn « --rpath »)"
 
-#: lexsup.c:267
+#: lexsup.c:268
 msgid "Strip all symbols"
 msgstr "Tước mọi ký hiệu"
 
-#: lexsup.c:269
+#: lexsup.c:270
 msgid "Strip debugging symbols"
 msgstr "Tước ký hiệu gỡ lối"
 
-#: lexsup.c:271
+#: lexsup.c:272
 msgid "Strip symbols in discarded sections"
 msgstr "Tước ký hiệu trong phần bị hủy"
 
-#: lexsup.c:273
+#: lexsup.c:274
 msgid "Do not strip symbols in discarded sections"
 msgstr "Đừng tước ký hiệu trong phần bị hủy"
 
-#: lexsup.c:275
+#: lexsup.c:276
 msgid "Trace file opens"
 msgstr "Tập tin vết có mở"
 
-#: lexsup.c:277
+#: lexsup.c:278
 msgid "Read linker script"
-msgstr "Read linker script"
+msgstr "Đọc tập lệnh liên kết"
 
-#: lexsup.c:279 lexsup.c:297 lexsup.c:363 lexsup.c:378 lexsup.c:468
-#: lexsup.c:493 lexsup.c:520
+#: lexsup.c:280 lexsup.c:298 lexsup.c:364 lexsup.c:379 lexsup.c:469
+#: lexsup.c:494 lexsup.c:521
 msgid "SYMBOL"
-msgstr "KÝ HIỆUSMB"
+msgstr "KÝ HIỆU"
 
-#: lexsup.c:279
+#: lexsup.c:280
 msgid "Start with undefined reference to SYMBOL"
 msgstr "Bắt đầu với tham chiệu gạch chân đến KÝ HIỆU"
 
-#: lexsup.c:282
+#: lexsup.c:283
 msgid "[=SECTION]"
 msgstr "[=PHẦN]"
 
-#: lexsup.c:283
+#: lexsup.c:284
 msgid "Don't merge input [SECTION | orphan] sections"
 msgstr "Đừng kết hợp phần nhập [PHẦN | mồ côi]"
 
-#: lexsup.c:285
+#: lexsup.c:286
 msgid "Build global constructor/destructor tables"
 msgstr "Xây dụng bảng cấu tạo/phá toàn cục"
 
-#: lexsup.c:287
+#: lexsup.c:288
 msgid "Print version information"
 msgstr "In ra thông tin phiên bản"
 
-#: lexsup.c:289
+#: lexsup.c:290
 msgid "Print version and emulation information"
 msgstr "In ra thông tin phiên bản và mô phỏng"
 
-#: lexsup.c:291
+#: lexsup.c:292
 msgid "Discard all local symbols"
-msgstr "Discard all local symbols"
+msgstr "Hủy mọi ký hiệu cục bộ"
 
-#: lexsup.c:293
+#: lexsup.c:294
 msgid "Discard temporary local symbols (default)"
-msgstr "Hủy ký hiệu địa phương tạm (mặc định)"
+msgstr "Hủy mọi ký hiệu cục bộ tạm thời (mặc định)"
 
-#: lexsup.c:295
+#: lexsup.c:296
 msgid "Don't discard any local symbols"
-msgstr "Đừng hủy ký hiệu địa phương nào"
+msgstr "Đừng hủy ký hiệu cục bộ nào"
 
-#: lexsup.c:297
+#: lexsup.c:298
 msgid "Trace mentions of SYMBOL"
 msgstr "Vết nơi ghi KÝ HIỆU"
 
-#: lexsup.c:299 lexsup.c:435 lexsup.c:437
+#: lexsup.c:300 lexsup.c:436 lexsup.c:438
 msgid "PATH"
 msgstr "ĐƯỜNG DẪN"
 
-#: lexsup.c:299
+#: lexsup.c:300
 msgid "Default search path for Solaris compatibility"
 msgstr "Đường dẫn tìm kiếm để tương thích với Solaris"
 
-#: lexsup.c:302
+#: lexsup.c:303
 msgid "Start a group"
 msgstr "Bắt đầu nhóm"
 
-#: lexsup.c:304
+#: lexsup.c:305
 msgid "End a group"
 msgstr "Kết thức nhóm"
 
-#: lexsup.c:308
+#: lexsup.c:309
 msgid "Accept input files whose architecture cannot be determined"
 msgstr "Chấp nhận tập tin nhập có kiến trức không thể được tháo gỡ"
 
-#: lexsup.c:312
+#: lexsup.c:313
 msgid "Reject input files whose architecture is unknown"
 msgstr "Từ chối tập tin nhập có kiến trức lạ"
 
-#: lexsup.c:315
+#: lexsup.c:316
 msgid ""
 "Set DT_NEEDED tags for DT_NEEDED entries in\n"
 "\t\t\t\tfollowing dynamic libs"
@@ -1417,7 +1407,7 @@
 "\tcho mục nhập « DT_NEEDED »\n"
 "\ttrong những thư viên động theo đây"
 
-#: lexsup.c:318
+#: lexsup.c:319
 msgid ""
 "Do not set DT_NEEDED tags for DT_NEEDED entries\n"
 "\t\t\t\tin following dynamic libs"
@@ -1426,155 +1416,155 @@
 "\tcho mục nhập « DT_NEEDED »\n"
 "\ttrong những thư viên động theo đây"
 
-#: lexsup.c:321
+#: lexsup.c:322
 msgid "Only set DT_NEEDED for following dynamic libs if used"
 msgstr ""
 "Chỉ lập thẻ « DT_NEEDED » (cần thiết DT)\n"
 "\tcho những thư viên động theo đây nếu được dùng"
 
-#: lexsup.c:324
+#: lexsup.c:325
 msgid "Always set DT_NEEDED for following dynamic libs"
 msgstr ""
 "Luôn lập thẻ « DT_NEEDED » (cần thiết DT)\n"
 "\tcho những thư viên động theo đây"
 
-#: lexsup.c:327
+#: lexsup.c:328
 msgid "Ignored for SunOS compatibility"
 msgstr "Bị bỏ qua để tương thích với SunOS"
 
-#: lexsup.c:329
+#: lexsup.c:330
 msgid "Link against shared libraries"
 msgstr "Liên kết đối với thư viên dùng chung"
 
-#: lexsup.c:335
+#: lexsup.c:336
 msgid "Do not link against shared libraries"
 msgstr "Đừng liên kết đối với thư viên dùng chung"
 
-#: lexsup.c:343
+#: lexsup.c:344
 msgid "Bind global references locally"
-msgstr "Đóng kết tham chiếu toàn cục một cách địa phương"
+msgstr "Đóng kết tham chiếu toàn cục một cách cục bộ"
 
-#: lexsup.c:345
+#: lexsup.c:346
 msgid "Check section addresses for overlaps (default)"
 msgstr "Kiểm tra địa chỉ phần có chồng chéo (mặc định)"
 
-#: lexsup.c:348
+#: lexsup.c:349
 msgid "Do not check section addresses for overlaps"
 msgstr "Đừng kiểm tra địa chỉ phần có chồng chéo"
 
-#: lexsup.c:351
+#: lexsup.c:352
 msgid "Output cross reference table"
 msgstr "Xuất bảng tham chiếu chéo"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "SYMBOL=EXPRESSION"
-msgstr "BIỂU THỨC=BIỂU THỨC"
+msgstr "KÝ HIỆU=BIỂU THỨC"
 
-#: lexsup.c:353
+#: lexsup.c:354
 msgid "Define a symbol"
 msgstr "Định nghĩa ký hiệu"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "[=STYLE]"
 msgstr "[=KIỂU DÁNG]"
 
-#: lexsup.c:355
+#: lexsup.c:356
 msgid "Demangle symbol names [using STYLE]"
 msgstr "Tháo gỡ tên ký hiệu [bằng KIỂU DÁNG]"
 
-#: lexsup.c:358
+#: lexsup.c:359
 msgid "Generate embedded relocs"
 msgstr "Tạo ra sự định vị lại nhúng"
 
-#: lexsup.c:360
+#: lexsup.c:361
 msgid "Treat warnings as errors"
 msgstr "Xử lý cảnh báo là lỗi"
 
-#: lexsup.c:363
+#: lexsup.c:364
 msgid "Call SYMBOL at unload-time"
 msgstr "Gọi KÝ HIỆU vào lúc bỏ tải"
 
-#: lexsup.c:365
+#: lexsup.c:366
 msgid "Force generation of file with .exe suffix"
 msgstr "Ép buộc tạo ra tập tin có hậu tố « .exe »"
 
-#: lexsup.c:367
+#: lexsup.c:368
 msgid "Remove unused sections (on some targets)"
 msgstr "Gỡ bỏ phần không dùng (trên một số đích)"
 
-#: lexsup.c:370
+#: lexsup.c:371
 msgid "Don't remove unused sections (default)"
 msgstr "Đừng gỡ bỏ phần không dùng (mặc định)"
 
-#: lexsup.c:373
+#: lexsup.c:374
 msgid "Set default hash table size close to <NUMBER>"
 msgstr "Lập kích cỡ bảng băm mặc định là gần <SỐ>"
 
-#: lexsup.c:376
+#: lexsup.c:377
 msgid "Print option help"
 msgstr "In ra trợ giúp về tùy chọn"
 
-#: lexsup.c:378
+#: lexsup.c:379
 msgid "Call SYMBOL at load-time"
 msgstr "Gọi KÝ HIỆU vào lúc tải"
 
-#: lexsup.c:380
+#: lexsup.c:381
 msgid "Write a map file"
 msgstr "Ghi tập tin bản đồ"
 
-#: lexsup.c:382
+#: lexsup.c:383
 msgid "Do not define Common storage"
 msgstr "Đừng định nghĩa kho dùng chung"
 
-#: lexsup.c:384
+#: lexsup.c:385
 msgid "Do not demangle symbol names"
 msgstr "Đừng tháo gỡ tên ký hiệu"
 
-#: lexsup.c:386
+#: lexsup.c:387
 msgid "Use less memory and more disk I/O"
 msgstr "Chiếm ít bộ nhớ hơn, và nhiều nhập/xuất đĩa hơn"
 
-#: lexsup.c:388
+#: lexsup.c:389
 msgid "Do not allow unresolved references in object files"
 msgstr "Đừng cho phép tham chiệu chưa tháo gỡ trong tập tin đối tượng"
 
-#: lexsup.c:391
+#: lexsup.c:392
 msgid "Allow unresolved references in shared libaries"
 msgstr "Cho phép tham chiệu chưa tháo gỡ trong thư viên dùng chung"
 
-#: lexsup.c:395
+#: lexsup.c:396
 msgid "Do not allow unresolved references in shared libs"
 msgstr "Đừng cho phép tham chiệu chưa tháo gỡ trong thư viên dùng chung"
 
-#: lexsup.c:399
+#: lexsup.c:400
 msgid "Allow multiple definitions"
 msgstr "Cho phép nhiều lời định nghĩa"
 
-#: lexsup.c:401
+#: lexsup.c:402
 msgid "Disallow undefined version"
 msgstr "Bỏ cho phép phiên bản chưa định nghĩa"
 
-#: lexsup.c:403
+#: lexsup.c:404
 msgid "Create default symbol version"
 msgstr "Tạo phiên bản ký hiệu mặc định"
 
-#: lexsup.c:406
+#: lexsup.c:407
 msgid "Create default symbol version for imported symbols"
 msgstr "Tạo phiên bản ký hiệu mặc định cho ký hiệu đã nhập"
 
-#: lexsup.c:409
+#: lexsup.c:410
 msgid "Don't warn about mismatched input files"
 msgstr "Đừng cảnh báo về tập tin nhập không khớp với nhau"
 
-#: lexsup.c:411
+#: lexsup.c:412
 msgid "Turn off --whole-archive"
 msgstr "Tắt tùy chọn « --whole-archive » (toàn kho)"
 
-#: lexsup.c:413
+#: lexsup.c:414
 msgid "Create an output file even if errors occur"
 msgstr "Tạo tập tin xuất dù gặp lỗi"
 
-#: lexsup.c:418
+#: lexsup.c:419
 msgid ""
 "Only use library directories specified on\n"
 "\t\t\t\tthe command line"
@@ -1582,115 +1572,115 @@
 "Chỉ dùng thư mục thư viên\n"
 "\tđược ghi rõ trên dòng lệnh"
 
-#: lexsup.c:421
+#: lexsup.c:422
 msgid "Specify target of output file"
 msgstr "Ghi rõ đích của tập tin xuất"
 
-#: lexsup.c:424
+#: lexsup.c:425
 msgid "Ignored for Linux compatibility"
 msgstr "Bị bỏ qua để tương thích với Linux"
 
-#: lexsup.c:427
+#: lexsup.c:428
 msgid "Reduce memory overheads, possibly taking much longer"
 msgstr "Giảm bộ nhớ duy tu, có thể mất rất nhiều thời gian hơn"
 
-#: lexsup.c:430
+#: lexsup.c:431
 msgid "Relax branches on certain targets"
 msgstr "Lơi ra nhánh trên một số đích nào đó"
 
-#: lexsup.c:433
+#: lexsup.c:434
 msgid "Keep only symbols listed in FILE"
 msgstr "Giữ chỉ những ký hiệu được liệt kê trong TẬP TIN"
 
-#: lexsup.c:435
+#: lexsup.c:436
 msgid "Set runtime shared library search path"
 msgstr "Lập đường dẫn tìm kiếm thư viên dùng chung vào lúc chạy"
 
-#: lexsup.c:437
+#: lexsup.c:438
 msgid "Set link time shared library search path"
 msgstr "Lập đường dẫn tìm kiếm thư viên dùng chung vào lúc liên kết"
 
-#: lexsup.c:440
+#: lexsup.c:441
 msgid "Create a shared library"
 msgstr "Tạo thư viên dùng chung"
 
-#: lexsup.c:444
+#: lexsup.c:445
 msgid "Create a position independent executable"
 msgstr "Tạo ứng dụng chạy được không phụ thuộc vào vị trí"
 
-#: lexsup.c:448
+#: lexsup.c:449
 msgid "Sort common symbols by size"
 msgstr "Sắp xếp ký hiệu dùng chung theo kích cỡ"
 
-#: lexsup.c:452
+#: lexsup.c:453
 msgid "name|alignment"
 msgstr "tên|canh_hàng"
 
-#: lexsup.c:453
+#: lexsup.c:454
 msgid "Sort sections by name or maximum alignment"
 msgstr "Sắp xếp phần theo tên hay canh lề tối đa"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "COUNT"
 msgstr "SỐ_ĐẾM"
 
-#: lexsup.c:455
+#: lexsup.c:456
 msgid "How many tags to reserve in .dynamic section"
 msgstr "Số thẻ cần giữ lại trong phần « .dynamic » (động)"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "[=SIZE]"
-msgstr "[=SIZE]"
+msgstr "[=Cá» ]"
 
-#: lexsup.c:458
+#: lexsup.c:459
 msgid "Split output sections every SIZE octets"
-msgstr "Chia tách phần xuất tại mỗi CỠ octet"
+msgstr "Chia tách phần xuất tại mỗi CỠ bộ tám"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "[=COUNT]"
 msgstr "[=SỐ_ĐẾM]"
 
-#: lexsup.c:461
+#: lexsup.c:462
 msgid "Split output sections every COUNT relocs"
 msgstr "Chia tách phần xuất tại mỗi SỐ_ĐẾM việc định vị lại"
 
-#: lexsup.c:464
+#: lexsup.c:465
 msgid "Print memory usage statistics"
 msgstr "In ra thống kê cách sử dụng bộ nhớ"
 
-#: lexsup.c:466
+#: lexsup.c:467
 msgid "Display target specific options"
 msgstr "Hiển thị tùy chọn đặc trưng cho đích"
 
-#: lexsup.c:468
+#: lexsup.c:469
 msgid "Do task level linking"
 msgstr "Liên kết trong lớp tác vụ"
 
-#: lexsup.c:470
+#: lexsup.c:471
 msgid "Use same format as native linker"
 msgstr "Dùng cùng khuôn dạng với bộ liên kết sở hữu"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "SECTION=ADDRESS"
 msgstr "PHẦN=ĐỊA CHỈ"
 
-#: lexsup.c:472
+#: lexsup.c:473
 msgid "Set address of named section"
 msgstr "Lập địa chỉ của phần có tên"
 
-#: lexsup.c:475
+#: lexsup.c:476
 msgid "Set address of .bss section"
 msgstr "Lập địa chỉ của phần « .bss »"
 
-#: lexsup.c:477
+#: lexsup.c:478
 msgid "Set address of .data section"
 msgstr "Lập địa chỉ của phần « .data » (dữ liệu)"
 
-#: lexsup.c:479
+#: lexsup.c:480
 msgid "Set address of .text section"
 msgstr "Lập địa chỉ của phần « .text » (văn bản)"
 
-#: lexsup.c:482
+#: lexsup.c:483
 msgid ""
 "How to handle unresolved symbols.  <method> is:\n"
 "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n"
@@ -1703,15 +1693,15 @@
 " • ignore-in-object-files\tbỏ qua trong tập tin đối tượng\n"
 " • ignore-in-shared-libs\tbỏ qua trong thư viên dùng chung"
 
-#: lexsup.c:486
+#: lexsup.c:487
 msgid "Output lots of information during link"
 msgstr "Xuất nhiều thông tin trong khi liên kết"
 
-#: lexsup.c:490
+#: lexsup.c:491
 msgid "Read version information script"
 msgstr "Đọc tập lệnh thông tin phiên bản"
 
-#: lexsup.c:493
+#: lexsup.c:494
 msgid ""
 "Take export symbols list from .exports, using\n"
 "\t\t\t\tSYMBOL as the version."
@@ -1719,73 +1709,73 @@
 "Lấy danh sách ký hiệu xuất từ « .exports » (xuất),\n"
 "\t\tvới phiên bản là KÝ HIỆU"
 
-#: lexsup.c:496
+#: lexsup.c:497
 msgid "Warn about duplicate common symbols"
 msgstr "Cảnh báo về ký hiệu dùng chung trùng"
 
-#: lexsup.c:498
+#: lexsup.c:499
 msgid "Warn if global constructors/destructors are seen"
 msgstr "Cảnh báo nếu gặp bộ cấu tạo/phá toàn cục"
 
-#: lexsup.c:501
+#: lexsup.c:502
 msgid "Warn if the multiple GP values are used"
 msgstr "Cảnh báo nếu sử dụng nhiều giá trị GP"
 
-#: lexsup.c:503
+#: lexsup.c:504
 msgid "Warn only once per undefined symbol"
 msgstr "Cảnh báo chỉ một lần về mỗi ký hiệu chưa định nghĩa"
 
-#: lexsup.c:505
+#: lexsup.c:506
 msgid "Warn if start of section changes due to alignment"
 msgstr "Cảnh báo nếu đầu phần thay đổi vì canh lề"
 
-#: lexsup.c:508
+#: lexsup.c:509
 msgid "Warn if shared object has DT_TEXTREL"
 msgstr "Cảnh báo nếu đối tượng dùng chung có « DT_TEXTREL »"
 
-#: lexsup.c:512
+#: lexsup.c:513
 msgid "Report unresolved symbols as warnings"
 msgstr "Thông báo ký hiệu chưa tháo gỡ là cảnh báo"
 
-#: lexsup.c:515
+#: lexsup.c:516
 msgid "Report unresolved symbols as errors"
 msgstr "Thông báo ký hiệu chưa tháo gỡ là lỗi"
 
-#: lexsup.c:517
+#: lexsup.c:518
 msgid "Include all objects from following archives"
 msgstr "Gồm mọi đối tượng từ những kho theo đây"
 
-#: lexsup.c:520
+#: lexsup.c:521
 msgid "Use wrapper functions for SYMBOL"
 msgstr "Sử dụng hàm cuốn cho KÝ HIỆU"
 
-#: lexsup.c:667
+#: lexsup.c:668
 msgid "%P: unrecognized option '%s'\n"
-msgstr "%P: unrecognized option '%s'\n"
+msgstr "%P: không nhận ra tùy chọn « %s »\n"
 
-#: lexsup.c:669
+#: lexsup.c:670
 msgid "%P%F: use the --help option for usage information\n"
-msgstr "%P%F: use the --help option for usage information\n"
+msgstr "%P%F: hãy sử dụng tùy chọn « --help » để xem thông tin về cách sử dụng\n"
 
-#: lexsup.c:687
+#: lexsup.c:688
 msgid "%P%F: unrecognized -a option `%s'\n"
-msgstr "%P%F: unrecognized -a option `%s'\n"
+msgstr "%P%F: không nhận ra tùy chọn kiểu « -a » là « %s »\n"
 
-#: lexsup.c:700
+#: lexsup.c:701
 msgid "%P%F: unrecognized -assert option `%s'\n"
-msgstr "%P%F: unrecognized -assert option `%s'\n"
+msgstr "%P%F: không nhận ra tùy chọn kiểu « -assert » (khẳng định) là « %s »\n"
 
-#: lexsup.c:743
+#: lexsup.c:744
 msgid "%F%P: unknown demangling style `%s'"
-msgstr "%F%Ps:không biết  kiểu dáng tháo gõ (demangle « %s »n"
+msgstr "%F%Ps: không biết kiểu dáng tháo gõ « %s »"
 
-#: lexsup.c:805
+#: lexsup.c:806
 msgid "%P%F: invalid number `%s'\n"
-msgstr "%P%F: invalid number `%s'\n"
+msgstr "%P%F: số không hợp lệ « %s »\n"
 
-#: lexsup.c:897
+#: lexsup.c:898
 msgid "%P%F: bad --unresolved-symbols option: %s\n"
-msgstr "%P%F: tùy chọnb« ad --unresolved-symbo» (ký hiệu chưa tháo gỡ) saiion: %s\n"
+msgstr "%P%F: tùy chọn « --unresolved-symbols » (các ký hiệu chưa tháo gỡ) sai : %s\n"
 
 #. This can happen if the user put "-rpath,a" on the command
 #. line.  (Or something similar.  The comma is important).
@@ -1795,82 +1785,92 @@
 #. an error message here.  We cannot just make this a warning,
 #. increment optind, and continue because getopt is too confused
 #. and will seg-fault the next time around.
-#: lexsup.c:968
+#: lexsup.c:969
 msgid "%P%F: bad -rpath option\n"
 msgstr "%P%F: tùy chọn « -rpath » (đường dẫn r) sai\n"
 
-#: lexsup.c:1080
+#: lexsup.c:1081
 msgid "%P%F: -shared not supported\n"
-msgstr "%P%F: -shared not supported\n"
+msgstr "%P%F: không hỗ trợ tùy chọn « -shared » (dùng chung)\n"
 
-#: lexsup.c:1089
+#: lexsup.c:1090
 msgid "%P%F: -pie not supported\n"
 msgstr "%P%F: không hỗ trợ tùy chọn « -pie » (bánh)\n"
 
-#: lexsup.c:1099
+#: lexsup.c:1100
 msgid "name"
 msgstr "tên"
 
-#: lexsup.c:1101
+#: lexsup.c:1102
 msgid "alignment"
 msgstr "canh lề"
 
-#: lexsup.c:1104
+#: lexsup.c:1105
 msgid "%P%F: invalid section sorting option: %s\n"
-msgstr "%P%F: invalid section sorting option: %s\n"
+msgstr "%P%F: tùy chọn sắp xếp phần không hợp lệ: %s\n"
 
-#: lexsup.c:1130
+#: lexsup.c:1131
 msgid "%P%F: invalid argument to option \"--section-start\"\n"
-msgstr "%P%F: đối số không hợp lệ đối với tùy chọni« alid argument t » (bắt đầu phần)option \"--section-start\"\n"
+msgstr "%P%F: đối số không hợp lệ đối với tùy chọn « --section-start »\n"
 
-#: lexsup.c:1137
+#: lexsup.c:1138
 msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
 msgstr "%P%F: thiếu đối số đối với tùy chọn « --section-start » (bắt đầu phần)\n"
 
-#: lexsup.c:1311
+#: lexsup.c:1312
 msgid "%P%F: may not nest groups (--help for usage)\n"
 msgstr "%P%F: không cho phép lồng nhóm với nhau (« --help » để xem cách sử dụng đúng)\n"
 
-#: lexsup.c:1318
+#: lexsup.c:1319
 msgid "%P%F: group ended before it began (--help for usage)\n"
 msgstr "%P%F: nhóm kết thức trước bắt đầu (« --help » để xem cách sử dụng đúng)\n"
 
-#: lexsup.c:1346
+#: lexsup.c:1347
 msgid "%P%X: --hash-size needs a numeric argument\n"
-msgstr "%P%X: --hash-size needs a numeric argument\n"
+msgstr "%P%X: tùy chọn « --hash-size » (kích cỡ băm) cần thiết đối số thuộc số\n"
 
-#: lexsup.c:1397 lexsup.c:1410
+#: lexsup.c:1398 lexsup.c:1411
 msgid "%P%F: invalid hex number `%s'\n"
-msgstr "%P%F: invalid hex number `%s'\n"
+msgstr "%P%F: số thập lục không hợp lệ « %s »\n"
 
-#: lexsup.c:1445
+#: lexsup.c:1447
 #, c-format
 msgid "Usage: %s [options] file...\n"
 msgstr "Cách sử dụng: %s <tùy_chọn> tập_tin...\n"
 
-#: lexsup.c:1447
+#: lexsup.c:1449
 #, c-format
 msgid "Options:\n"
 msgstr "Tùy chọn:\n"
 
+#: lexsup.c:1527
+#, c-format
+msgid "  @FILE"
+msgstr "  @TẬP_TIN"
+
+#: lexsup.c:1530
+#, c-format
+msgid "Read options from FILE\n"
+msgstr "Đọc các tùy chọn từ TẬP_TIN\n"
+
 #. Note: Various tools (such as libtool) depend upon the
 #. format of the listings below - do not change them.
-#: lexsup.c:1530
+#: lexsup.c:1535
 #, c-format
 msgid "%s: supported targets:"
 msgstr "%s: đích hỗ trợ :"
 
-#: lexsup.c:1538
+#: lexsup.c:1543
 #, c-format
 msgid "%s: supported emulations: "
-msgstr "%s: mô phỏng hỗ trợ :"
+msgstr "%s: mô phỏng hỗ trợ : "
 
-#: lexsup.c:1543
+#: lexsup.c:1548
 #, c-format
 msgid "%s: emulation specific options:\n"
 msgstr "%s: tùy chọn đặc trưng cho mô phỏng:\n"
 
-#: lexsup.c:1547
+#: lexsup.c:1552
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr "Hãy thông báo lỗi nào cho %s\n"
@@ -1884,61 +1884,75 @@
 msgid "%XUnsupported PEI architecture: %s\n"
 msgstr "%XChưa hỗ trợ kiến trúc PEI: %s\n"
 
-#: pe-dll.c:652
+#: pe-dll.c:604
 #, c-format
+msgid "%XCannot export %s: invalid export name\n"
+msgstr "%XKhông thể xuất %s: tên xuất không hợp lệ\n"
+
+#: pe-dll.c:657
+#, c-format
 msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
 msgstr "%XLỗi: XUẤT trùng với điều thứ tự : %s (%d so với %d)\n"
 
-#: pe-dll.c:659
+#: pe-dll.c:664
 #, c-format
 msgid "Warning, duplicate EXPORT: %s\n"
 msgstr "Cảnh báo, XUẤT trùng: %s\n"
 
-#: pe-dll.c:725
+#: pe-dll.c:751
 #, c-format
 msgid "%XCannot export %s: symbol not defined\n"
 msgstr "%XKhông thể xuất %s: chưa định nghĩa ký hiệu\n"
 
-#: pe-dll.c:731
+#: pe-dll.c:757
 #, c-format
 msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
 msgstr "%XKhông thể xuất %s: ký hiệu sai kiểu (%d so với %d)\n"
 
-#: pe-dll.c:738
+#: pe-dll.c:764
 #, c-format
 msgid "%XCannot export %s: symbol not found\n"
 msgstr "%XKhông thể xuất %s: không tìm thấy ký hiệu\n"
 
-#: pe-dll.c:850
+#: pe-dll.c:877
 #, c-format
 msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
 msgstr "%XLỗi, điều thứ tự được dùng hai lần: %d (%s so với %s)\n"
 
-#: pe-dll.c:1172
+#: pe-dll.c:1219
 #, c-format
 msgid "%XError: %d-bit reloc in dll\n"
-msgstr "%xLỗi: định vị lại %d-bit trong DLL\n"
+msgstr "%XLỗi: việc định vị lại %d-bit trong dll\n"
 
-#: pe-dll.c:1300
+#: pe-dll.c:1347
 #, c-format
 msgid "%s: Can't open output def file %s\n"
 msgstr "%s: Không thể mở tập tin xuất def (định nghĩa) %s\n"
 
-#: pe-dll.c:1443
+#: pe-dll.c:1490
 #, c-format
 msgid "; no contents available\n"
 msgstr "; không có nội dung sẵn sàng\n"
 
-#: pe-dll.c:2205
+#: pe-dll.c:2252
 msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"
 msgstr "%C: không thể tự động nhập biến « %T ». Hãy đọc tài liệu hướng dẫn về tùy chọn « --enable-auto-import » (bật nhập tự động) của trình ld, để xem chi tiết.\n"
 
-#: pe-dll.c:2235
+#: pe-dll.c:2282
 #, c-format
 msgid "%XCan't open .lib file: %s\n"
 msgstr "%XKhông thể mở tập tin « .lib » (thư viên): %s\n"
 
-#: pe-dll.c:2240
+#: pe-dll.c:2287
 #, c-format
 msgid "Creating library file: %s\n"
 msgstr "Đang tạo tập tin thư viên: %s\n"
+
+#~ msgid "%P%F: out of memory during initialization"
+#~ msgstr "%P%F: hết bộ nhớ trong khi cài đặt"
+
+#~ msgid "%P%F: -static and -shared may not be used together\n"
+#~ msgstr "%P%F: không thể sử dụng cả « -static » (tĩnh) lẫn « -shared » (dùng chung) đều\n"
+
+#~ msgid "%P%X: generated"
+#~ msgstr "%P%X: đã tạo ra"

Added: branches/binutils/package/ld/po/zh_CN.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/ld/po/zh_CN.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/ld/scripttempl/elf32crx.sc
===================================================================
--- branches/binutils/package/ld/scripttempl/elf32crx.sc	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/scripttempl/elf32crx.sc	2006-12-31 16:27:59 UTC (rev 19)
@@ -73,7 +73,7 @@
   .rdata :
   {
     __RDATA_START = .;
-    *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*)
+    *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) *(.rodata.*)
     __RDATA_END = .;
   } > rom
 

Modified: branches/binutils/package/ld/testsuite/ChangeLog
===================================================================
--- branches/binutils/package/ld/testsuite/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,75 @@
+2006-06-12  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	Backport:
+	2006-04-29  H.J. Lu  <hongjiu.lu at intel.com>
+	* ld-elfvers/vers.exp: Xfail vers7a, vers7, vers23a, vers23b,
+	vers23c, vers23d, vers23, vers25a, vers25b1, vers25b2, vers27a,
+	vers27b, vers27c1, vers27c2, vers27d4 and vers27d5 if PIC is
+	required.
+
+2006-06-11  Richard Sandiford  <richard at codesourcery.com>
+
+	* ld-mips-elf/stub-dynsym-1.s,
+	* ld-mips-elf/stub-dynsym-1.ld,
+	* ld-mips-elf/stub-dynsym-1-7fff.d,
+	* ld-mips-elf/stub-dynsym-1-8000.d,
+	* ld-mips-elf/stub-dynsym-1-fff0.d,
+	* ld-mips-elf/stub-dynsym-1-10000.d,
+	* ld-mips-elf/stub-dynsym-1-2fe80.d: New test.
+	* ld-mips-elf/mips-elf.exp: Run it.
+
+2006-06-01  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	Backport:
+	2006-05-23  H.J. Lu  <hongjiu.lu at intel.com>
+	PR ld/2655
+	PR ld/2657
+	* ld-elf/eh1.d: New file.
+	* ld-elf/eh1.s: Likewise.
+	* ld-elf/eh1a.s: Likewise.
+	* ld-elf/eh2.d: Likewise.
+	* ld-elf/eh2a.s: Likewise.
+	* ld-elf/eh3.d: Likewise.
+	* ld-elf/eh3.s: Likewise.
+	* ld-elf/eh3a.s: Likewise.
+
+2006-05-22  Nick Clifton  <nickc at redhat.com>
+
+	* ld-elf/start.s (start): Add this symbol for SH targets.
+	(main): Add this symbol for HPPA targets.
+
+2006-05-17  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	Backport:
+	2006-05-02  H.J. Lu  <hongjiu.lu at intel.com>
+	* ld-cdtest/cdtest-foo.cc (Foo::Foo): Add const to char *.
+	* ld-cdtest/cdtest-foo.h (Foo::Foo): Likewise.
+	* ld-srec/sr3.cc (Foo::Foo): Likewise.
+
+2006-05-17  Thiemo Seufer  <ths at mips.com>
+
+	* ld-elfweak/size2.d, ld-elfweak/size2a.s, ld-elfweak/size2b.s:
+	Add __start as entry symbol.
+
+2006-05-16  Thiemo Seufer  <ths at mips.com>
+
+	* ld-elf/orphan.ld: Add placement for MIPS .reginfo section.
+
+2006-05-10  Thiemo Seufer  <ths at debian.org>
+
+	* ld-elf/sec64k.exp: Extend for MIPS ELF.
+
+2006-05-10  Alan Modra  <amodra at bigpond.net.au>
+
+	* ld-powerpc/tlsexetoc.r: Update for correction to tls optimization.
+	* ld-powerpc/tlsexetoc.g: Likewise.
+
+2006-05-02  Paul Brook  <paul at codesourcery.com>
+
+	* ld-arm/arm-elf.exp: Add thumb-rel32.
+	* ld-arm/thumb-rel32.d: New test.
+	* ld-arm/thumb-rel32.s: New test.
+
 2006-04-05  Richard Sandiford  <richard at codesourcery.com>
 
 	* ld-sparc/vxworks1.dd, ld-sparc/vxworks1.ld, ld-sparc/vxworks1-lib.dd,

Modified: branches/binutils/package/ld/testsuite/ld-arm/arm-elf.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-arm/arm-elf.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-arm/arm-elf.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -119,6 +119,9 @@
     {"Thumb entry point" "-T arm.ld" "" {thumb-entry.s}
      {{readelf -h thumb-entry.d}}
      "thumb-entry"}
+    {"thumb-rel32" "-static -T arm.ld" "" {thumb-rel32.s}
+     {{objdump -s thumb-rel32.d}}
+     "thumb-rel32"}
 }
 
 run_ld_link_tests $armelftests

Added: branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+
+.*:     file format.*
+
+Contents of section .text:
+ 8000 (00000011 fffffffd 00ffffff f8000000|11000000 fdffffff 00f8ffff ff000000) .*
+# Ignore .ARM.attributes section
+#...

Added: branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-arm/thumb-rel32.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+	.text
+	.arch armv4t
+	.global	_start
+	.type	_start, %function
+	.thumb_func
+_start:
+	.word bar - .
+	.word _start - .
+	.byte 0
+	.4byte (_start - .) + 1
+	.byte 0, 0, 0
+	.section .after, "ax", %progbits
+	.global bar
+	.type bar, %function
+	.thumb_func
+bar:
+	.word 0
+	.ident	"GCC: (GNU) 4.1.0 (CodeSourcery ARM)"

Modified: branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.cc
===================================================================
--- branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.cc	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.cc	2006-12-31 16:27:59 UTC (rev 19)
@@ -38,7 +38,7 @@
 #endif
 }
 
-Foo::Foo (char* msg)
+Foo::Foo (const char* msg)
 {
     i = ++foos;
     strncpy( message, msg, len);

Modified: branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.h
===================================================================
--- branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-cdtest/cdtest-foo.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -17,7 +17,7 @@
     static void init_foo ();
     static int nb_foos() { return foos; }
     Foo();
-    Foo( char* message);
+    Foo(const char* message);
     Foo(const Foo&);
     Foo & operator= (const Foo&);
     ~Foo ();

Added: branches/binutils/package/ld/testsuite/ld-elf/eh1.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh1.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh1.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,33 @@
+#source: eh1.s
+#source: eh1a.s
+#ld:
+#readelf: -wf
+#target: x86_64-*-*
+
+The section .eh_frame contains:
+
+00000000 00000014 00000000 CIE
+  Version:               1
+  Augmentation:          ""
+  Code alignment factor: 1
+  Data alignment factor: -8
+  Return address column: 16
+
+  DW_CFA_def_cfa: r7 ofs 8
+  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+00000018 0000001c 0000001c FDE cie=00000000 pc=004000b0..004000b0
+  DW_CFA_advance_loc: 0 to 004000b0
+  DW_CFA_def_cfa_offset: 16
+  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_advance_loc: 0 to 004000b0
+  DW_CFA_def_cfa_reg: r6
+
+00000038 ZERO terminator
+

Added: branches/binutils/package/ld/testsuite/ld-elf/eh1.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,47 @@
+	.text
+.globl _start
+	.type	_start, %function
+_start:
+.LFB2:
+.LCFI0:
+.LCFI1:
+.LFE2:
+	.size	_start, .-_start
+	.section	.eh_frame,"a",%progbits
+.Lframe1:
+	.long	.LECIE1-.LSCIE1
+.LSCIE1:
+	.long	0x0
+	.byte	0x1
+	.string	""
+	.uleb128 0x1
+	.sleb128 -8
+	.byte	0x10
+	.byte	0xc
+	.uleb128 0x7
+	.uleb128 0x8
+	.byte	0x90
+	.uleb128 0x1
+	.align 8
+.LECIE1:
+.LSFDE1:
+	.long	.LEFDE1-.LASFDE1
+.LASFDE1:
+	.long	.LASFDE1-.Lframe1
+	.quad	.LFB2
+	.quad	.LFE2-.LFB2
+	.byte	0x4
+	.long	.LCFI0-.LFB2
+	.byte	0xe
+	.uleb128 0x10
+	.byte	0x86
+	.uleb128 0x2
+	.byte	0x4
+	.long	.LCFI1-.LCFI0
+	.byte	0xd
+	.uleb128 0x6
+	.byte 0x0
+	.byte 0x0
+	.byte 0x0
+	.byte 0x0
+.LEFDE1:

Added: branches/binutils/package/ld/testsuite/ld-elf/eh1a.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh1a.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh1a.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.section	.eh_frame,"a",%progbits
+	.align	8
+	.zero	4

Added: branches/binutils/package/ld/testsuite/ld-elf/eh2.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,33 @@
+#source: eh1.s
+#source: eh2a.s
+#ld:
+#readelf: -wf
+#target: x86_64-*-*
+
+The section .eh_frame contains:
+
+00000000 00000014 00000000 CIE
+  Version:               1
+  Augmentation:          ""
+  Code alignment factor: 1
+  Data alignment factor: -8
+  Return address column: 16
+
+  DW_CFA_def_cfa: r7 ofs 8
+  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+00000018 0000001c 0000001c FDE cie=00000000 pc=004000b0..004000b0
+  DW_CFA_advance_loc: 0 to 004000b0
+  DW_CFA_def_cfa_offset: 16
+  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_advance_loc: 0 to 004000b0
+  DW_CFA_def_cfa_reg: r6
+
+00000038 ZERO terminator
+

Added: branches/binutils/package/ld/testsuite/ld-elf/eh2a.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh2a.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh2a.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.section	.eh_frame,"a",%progbits
+	.align	4
+	.zero	4

Added: branches/binutils/package/ld/testsuite/ld-elf/eh3.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh3.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh3.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,33 @@
+#source: eh3.s
+#source: eh3a.s
+#ld:
+#readelf: -wf
+#target: x86_64-*-*
+
+The section .eh_frame contains:
+
+00000000 00000014 00000000 CIE
+  Version:               1
+  Augmentation:          ""
+  Code alignment factor: 1
+  Data alignment factor: -8
+  Return address column: 16
+
+  DW_CFA_def_cfa: r7 ofs 8
+  DW_CFA_offset: r16 at cfa-8
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+00000018 0000001c 0000001c FDE cie=00000000 pc=004000b0..004000b0
+  DW_CFA_advance_loc: 0 to 004000b0
+  DW_CFA_def_cfa_offset: 16
+  DW_CFA_offset: r6 at cfa-16
+  DW_CFA_advance_loc: 0 to 004000b0
+  DW_CFA_def_cfa_reg: r6
+
+00000038 ZERO terminator
+#pass

Added: branches/binutils/package/ld/testsuite/ld-elf/eh3.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh3.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh3.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,48 @@
+	.text
+.globl _start
+	.type	_start, %function
+_start:
+.LFB2:
+.LCFI0:
+.LCFI1:
+.LFE2:
+	.size	_start, .-_start
+	.section	.eh_frame,"a",%progbits
+	.align 16
+.Lframe1:
+	.long	.LECIE1-.LSCIE1
+.LSCIE1:
+	.long	0x0
+	.byte	0x1
+	.string	""
+	.uleb128 0x1
+	.sleb128 -8
+	.byte	0x10
+	.byte	0xc
+	.uleb128 0x7
+	.uleb128 0x8
+	.byte	0x90
+	.uleb128 0x1
+	.align 8
+.LECIE1:
+.LSFDE1:
+	.long	.LEFDE1-.LASFDE1
+.LASFDE1:
+	.long	.LASFDE1-.Lframe1
+	.quad	.LFB2
+	.quad	.LFE2-.LFB2
+	.byte	0x4
+	.long	.LCFI0-.LFB2
+	.byte	0xe
+	.uleb128 0x10
+	.byte	0x86
+	.uleb128 0x2
+	.byte	0x4
+	.long	.LCFI1-.LCFI0
+	.byte	0xd
+	.uleb128 0x6
+	.byte 0x0
+	.byte 0x0
+	.byte 0x0
+	.byte 0x0
+.LEFDE1:

Added: branches/binutils/package/ld/testsuite/ld-elf/eh3a.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/eh3a.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/eh3a.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.section	.eh_frame,"a",%progbits
+	.align	8
+	.zero	8

Modified: branches/binutils/package/ld/testsuite/ld-elf/orphan.ld
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/orphan.ld	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/orphan.ld	2006-12-31 16:27:59 UTC (rev 19)
@@ -4,4 +4,5 @@
   .data : { *(.data) }
   .bss : { *(.bss) *(COMMON) }
   .note : { *(.note) }
+  .reginfo : { *(.reginfo) }
 }

Modified: branches/binutils/package/ld/testsuite/ld-elf/sec64k.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/sec64k.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/sec64k.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -51,7 +51,9 @@
 
     if { $i == 0 } {
 	puts $ofd " .global _start"
+	puts $ofd " .global __start"
 	puts $ofd "_start:"
+	puts $ofd "__start:"
 	puts $ofd " .global foo_0"
 	puts $ofd "foo_0: .long 0"
     }
@@ -101,7 +103,7 @@
 puts $ofd "#..."
 puts $ofd " 680..: 0+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+68... "
 puts $ofd "#..."
-puts $ofd " 680..: 0+4\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+2 bar_1"
+puts $ofd " 680..: 0+4\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[23\] bar_1"
 puts $ofd "#..."
 puts $ofd ".* bar_34000"
 puts $ofd "#..."

Modified: branches/binutils/package/ld/testsuite/ld-elf/start.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elf/start.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elf/start.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -3,4 +3,8 @@
 _start:
 	.global __start
 __start:
+	.global start	/* Used by SH targets.  */
+start:
+	.global main	/* Used by HPPA targets.  */
+main:
 	.long 0

Modified: branches/binutils/package/ld/testsuite/ld-elfvers/vers.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elfvers/vers.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elfvers/vers.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -830,9 +830,14 @@
 # Another test to verify that something made local via 'local' is truly not
 # accessible.
 #
-build_vers_lib_no_pic "vers7a" vers7a.c vers7a "" vers7.map vers7a.ver vers7a.dsym vers7a.sym
+if [string match "yes" $pic] then {
+    xfail "vers7a"
+    xfail "vers7"
+} else {
+    build_vers_lib_no_pic "vers7a" vers7a.c vers7a "" vers7.map vers7a.ver vers7a.dsym vers7a.sym
 
-test_ldfail "vers7" "" vers7.c vers7 vers7a.so "" "undefined reference to hide_a"
+    test_ldfail "vers7" "" vers7.c vers7 vers7a.so "" "undefined reference to hide_a"
+}
 
 
 #
@@ -906,11 +911,19 @@
 build_vers_lib_pic "vers22" vers22.c vers22 "vers22a.so vers22b.so" "" vers22.ver vers22.dsym ""
 
 # Test versioned definitions in different files.
-build_vers_lib_no_pic "vers23a" vers23a.c vers23a "" vers23a.map vers23a.ver vers23a.dsym vers23a.sym
-build_vers_lib_no_pic "vers23b" vers23b.c vers23b "" vers23b.map vers23b.ver vers23b.dsym ""
-build_vers_lib_no_pic "vers23c" vers23b.c vers23c "vers23a.so" vers23b.map vers23c.ver vers23b.dsym ""
-build_exec "vers23d" vers23.c vers23d "tmpdir/vers23a.so tmpdir/vers23c.so" "" vers23.ver vers23d.dsym ""
-build_exec "vers23" vers23.c vers23 "tmpdir/vers23a.so tmpdir/vers23b.o tmpdir/vers23b.so" "" vers23.ver vers23.dsym ""
+if [string match "yes" $pic] then {
+    xfail "vers23a" 
+    xfail "vers23b"
+    xfail "vers23c"
+    xfail "vers23d"
+    xfail "vers23"
+} else {
+    build_vers_lib_no_pic "vers23a" vers23a.c vers23a "" vers23a.map vers23a.ver vers23a.dsym vers23a.sym
+    build_vers_lib_no_pic "vers23b" vers23b.c vers23b "" vers23b.map vers23b.ver vers23b.dsym ""
+    build_vers_lib_no_pic "vers23c" vers23b.c vers23c "vers23a.so" vers23b.map vers23c.ver vers23b.dsym ""
+    build_exec "vers23d" vers23.c vers23d "tmpdir/vers23a.so tmpdir/vers23c.so" "" vers23.ver vers23d.dsym ""
+    build_exec "vers23" vers23.c vers23 "tmpdir/vers23a.so tmpdir/vers23b.o tmpdir/vers23b.so" "" vers23.ver vers23.dsym ""
+}
 
 # Test .symver x,x at VERS.0
 set as_pic_flags ""
@@ -931,9 +944,16 @@
 			 \"libvers24c.so\" \"-fpic\""]
 
 # Test versioned definition vs. normal definition in different files.
-build_vers_lib_no_pic "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym ""
-build_vers_lib_no_pic "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym ""
-build_vers_lib_no_pic "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym ""
+if [string match "yes" $pic] then {
+    xfail "vers25a"
+    xfail "vers25b1"
+    xfail "vers25b2"
+} else {
+    build_vers_lib_no_pic "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym ""
+    build_vers_lib_no_pic "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym ""
+    build_vers_lib_no_pic "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym ""
+}
+
 build_vers_lib_pic "vers26a" vers26a.c vers26a "" vers26a.map vers26a.ver vers26a.dsym ""
 build_vers_lib_pic "vers26b1" vers26b.c vers26b1 "" "" vers26b.ver vers26b.dsym ""
 build_vers_lib_pic "vers26b2" vers26b.c vers26b2 "vers26a.so vers26b1.so vers26a.o" "" vers26b.ver vers26b.dsym ""
@@ -944,15 +964,27 @@
 }
 
 # Test versioned definition vs. hidden definition in different files.
-build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym ""
-build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym ""
-build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym ""
-build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym ""
-build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym
-build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym ""
-build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym ""
-build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym ""
-build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym ""
+if [string match "yes" $pic] then {
+    xfail "vers27a"
+    xfail "vers27b"
+    xfail "vers27c1"
+    xfail "vers27c2"
+    xfail "vers27d1"
+    xfail "vers27d2"
+    xfail "vers27d3"
+    xfail "vers27d4"
+    xfail "vers27d5"
+} else {
+    build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym ""
+    build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym ""
+    build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym ""
+    build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym ""
+    build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym
+   build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym ""
+    build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym ""
+    build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym ""
+    build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym ""
+}
 
 # Test weak versioned definition vs. strong definition in different
 # files.

Modified: branches/binutils/package/ld/testsuite/ld-elfweak/size2.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elfweak/size2.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elfweak/size2.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -4,7 +4,7 @@
 #readelf: -s
 Symbol table '.symtab' contains .* entries:
 #...
-    .*: [0-9a-f]* +1 +FUNC +GLOBAL +DEFAULT +[0-9] +_start
+    .*: [0-9a-f]* +1 +FUNC +GLOBAL +DEFAULT +[0-9] +__?start
 #...
     .*: [0-9a-f]* +1 +FUNC +WEAK +DEFAULT +[0-9] +foo
 #...

Modified: branches/binutils/package/ld/testsuite/ld-elfweak/size2a.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elfweak/size2a.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elfweak/size2a.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,9 +1,13 @@
 	.text
 	.global _start
+	.global __start
 	.type _start, "function"
+	.type __start, "function"
 _start:
+__start:
 	.byte 0
 	.size _start, 1
+	.size __start, 1
 
 	.weak foo
 	.type foo, "function"

Modified: branches/binutils/package/ld/testsuite/ld-elfweak/size2b.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-elfweak/size2b.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-elfweak/size2b.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,10 +1,14 @@
 	.text
 	.weak _start
+	.weak __start
 	.type _start, "function"
+	.type __start, "function"
 _start:
+__start:
 	.byte 0
 	.byte 0
 	.size _start, 2
+	.size __start, 2
 
 	.weak foo
 	.type foo, "function"

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+
+.*:     file format elf32-m68k
+
+Program Header:
+#...
+private flags = 12: \[isa A\] \[mac\]
+

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaa-mac.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isaa,mac
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaa-nodiv.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaa-nodiv.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaa-nodiv.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isaa,no-div
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaa.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaa.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaa.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+
+.*:     file format elf32-m68k
+
+Program Header:
+#...
+private flags = 2: \[isa A\]
+

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaa.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaa.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaa.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isaa
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+
+.*:     file format elf32-m68k
+
+Program Header:
+#...
+private flags = 3: \[isa A\+\]
+

Added: branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isaaplus.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isaaplus
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/isab-float.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isab-float.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isab-float.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+
+.*:     file format elf32-m68k
+
+Program Header:
+#...
+private flags = 8045: \[cfv4e\] \[isa B\] \[float\]
+

Added: branches/binutils/package/ld/testsuite/ld-m68k/isab-float.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isab-float.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isab-float.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isab,float
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/isab-nousp.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isab-nousp.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isab-nousp.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isab,no-usp
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/isab.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isab.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isab.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7 @@
+
+.*:     file format elf32-m68k
+
+Program Header:
+#...
+private flags = 5: \[isa B\]
+

Added: branches/binutils/package/ld/testsuite/ld-m68k/isab.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/isab.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/isab.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+	.arch isab
+
+	nop

Added: branches/binutils/package/ld/testsuite/ld-m68k/m68k.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/m68k.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/m68k.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,55 @@
+# Expect script for run_dump_test based ld-m68k tests.
+#   Copyright 2006 Free Software Foundation, Inc.
+#
+# This file 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 of the License, 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; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Test m68k object merging
+
+if { ![is_elf_format] || ![istarget m68k-*-*] } {
+    return
+}
+
+# List contains test-items with 3 items followed by 2 lists:
+# 0:name 1:ld options 2:assembler options
+# 3:filenames of assembler files 4: action and options. 5: name of output file
+
+# Actions:
+# objdump: Apply objdump options on result.  Compare with regex (last arg).
+# nm: Apply nm options on result.  Compare with regex (last arg).
+# readelf: Apply readelf options on result.  Compare with regex (last arg).
+
+set m68k_mergeok_tests {
+    {"merge isa-a isa-a:nodiv" "-T merge.ld" ""
+	{isaa.s isaa-nodiv.s} {{objdump -p isaa.d}} "isaa"}
+    {"merge isa-a isa-b" "-T merge.ld" ""
+	{isaa.s isab.s} {{objdump -p isab.d}} "isab"}
+    {"merge isa-a isa-aplus" "-T merge.ld" ""
+	{isaa.s isaaplus.s} {{objdump -p isaaplus.d}} "isaplus"}
+    {"merge isa-b isa-b:nousp" "-T merge.ld" ""
+	{isab.s isab-nousp.s} {{objdump -p isab.d}} "isab"}
+    {"merge isa-a isa-a:mac" "-T merge.ld" ""
+	{isaa.s isaa-mac.s} {{objdump -p isaa-mac.d}} "isaa-mac"}
+    {"merge isa-b isa-b:float" "-T merge.ld" ""
+	{isab.s isab-float.s} {{objdump -p isab-float.d}} "isab-float"}}
+
+run_ld_link_tests $m68k_mergeok_tests
+
+run_dump_test "merge-error-1a"
+run_dump_test "merge-error-1b"
+run_dump_test "merge-error-1c"
+run_dump_test "merge-error-1d"
+run_dump_test "merge-error-1e"
+run_dump_test "merge-ok-1a"
+run_dump_test "merge-ok-1b"

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+#source: merge-error-1a.s -mcpu=cpu32
+#source: merge-error-1b.s -mcpu=68000
+#ld: -r
+#warning: .*

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1a.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1 @@
+	rts

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+#source: merge-error-1a.s -mcpu=cpu32
+#source: merge-error-1b.s -mcpu=5207
+#ld: -r
+#warning: .*

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1b.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1 @@
+	rts

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1c.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1c.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1c.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+#source: merge-error-1a.s -march=isaaplus
+#source: merge-error-1b.s -march=isab
+#ld: -r
+#warning: .*

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1d.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1d.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1d.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+#source: merge-error-1a.s -march=isaa -mmac
+#source: merge-error-1b.s -march=isaa -memac
+#ld: -r
+#warning: .*

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1e.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1e.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-error-1e.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,4 @@
+#source: merge-error-1a.s -march=isaa -mno-div -mmac
+#source: merge-error-1b.s -march=isaa -mno-div -memac
+#ld: -r
+#warning: .*

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1a.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1a.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1a.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+#source: merge-error-1a.s -mcpu=5207
+#source: merge-error-1b.s -mcpu=528x
+#ld: -r
+#objdump: -p
+#...
+private flags = 23: \[isa A\+\] \[emac\]

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1b.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1b.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge-ok-1b.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,6 @@
+#source: merge-error-1a.s -march=isaa -mno-div -mmac
+#source: merge-error-1b.s -march=isaa -mno-div -mfloat
+#ld: -r
+#objdump: -p
+#...
+private flags = 8051: \[cfv4e\] \[isa A\] \[nodiv\] \[float\] \[mac\]

Added: branches/binutils/package/ld/testsuite/ld-m68k/merge.ld
===================================================================
--- branches/binutils/package/ld/testsuite/ld-m68k/merge.ld	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-m68k/merge.ld	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,9 @@
+OUTPUT_FORMAT("elf32-m68k", "elf32-m68k",
+              "elf32-m68k")
+OUTPUT_ARCH(m68k)
+ENTRY(_start)
+
+SECTIONS {
+ 
+  .text : {_start = .; *(.text)}
+}

Added: branches/binutils/package/ld/testsuite/ld-maxq/addend.dd
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/addend.dd	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/addend.dd	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,21 @@
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <_main>:
+   0:	78 56 [ 	]*MOVE  56h, #78h
+	...
+
+00000004 <_buf1>:
+   4:	34 12 [ 	]*MOVE  12h, #34h
+	...
+
+00000008 <_start>:
+   8:	3a da [ 	]*NOP 
+   a:	3a da [ 	]*NOP 
+   c:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+   e:	03 09 [ 	]*MOVE  A\[0\], #03h
+  10:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+  12:	01 09 [ 	]*MOVE  A\[0\], #01h
+  14:	fa 3d [ 	]*CALL  #fah
+  16:	f8 3d [ 	]*CALL  #f8h

Added: branches/binutils/package/ld/testsuite/ld-maxq/addend.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/addend.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/addend.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,16 @@
+; Addend check testcases 
+; inderpreetb at noida.hcltech.com
+.global _main
+_main:
+_buf0:
+	.long 0x5678
+_buf1:
+	.long 0x1234
+_start:
+	nop
+	nop
+	move A[0], _buf1+2
+	move A[0], _buf1-2
+	call _buf0+8
+	call _buf1+2
+

Added: branches/binutils/package/ld/testsuite/ld-maxq/maxq.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/maxq.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/maxq.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,52 @@
+# Expect script for ld-maxq tests
+#   Copyright (C) 2004 Free Software Foundation
+#
+# This file 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 of the License, 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; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Written by inderpreetb at noida.hcltech.com
+
+# Test maxq linking; all types of relocs.  This tests the assembler and
+# tools like objdump as well as the linker.
+
+if { !([istarget "maxq*-*-*"]  ) } {
+    return
+}
+
+# List contains test-items with 3 items followed by 2 lists:
+# 0:name 1:ld options 2:assembler options
+# 3:filenames of assembler files 4: action and options. 5: name of output file
+
+# Actions:
+# objdump: Apply objdump options on result.  Compare with regex (last arg).
+# nm: Apply nm options on result.  Compare with regex (last arg).
+# readelf: Apply readelf options on result.  Compare with regex (last arg).
+
+set maxqtests {
+{"32-bit Relocation check" "" ""
+{r32-1.s r32-2.s} {{objdump -drw r32.dd}}
+"r32.o" }
+{"maxq addend check" "" ""
+{addend.s} {{objdump -dw addend.dd}}
+"addendo.o" }
+{"16bit relocation test" "" ""
+{paddr.s} {{objdump -Dw paddr.dd}}
+"paddro.o" }
+{"16bit relocation test-1" "" ""
+{paddr1.s} {{objdump -Dw paddr1.dd}}
+"paddro1.o" }
+
+}
+
+run_ld_link_tests $maxqtests

Added: branches/binutils/package/ld/testsuite/ld-maxq/paddr.dd
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/paddr.dd	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/paddr.dd	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,16 @@
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <main>:
+   0:	12 09 [ 	]*MOVE  A\[0\], #12h
+   2:	3a da [ 	]*NOP 
+   4:	3a da [ 	]*NOP 
+	...
+Disassembly of section .data:
+
+0000a000 <lb>:
+    a000:	23 00 [ 	]*MOVE  00h, #23h
+
+0000a002 <plc>:
+    a002:	00 a0 [ 	]*MOVE  20h, 00h

Added: branches/binutils/package/ld/testsuite/ld-maxq/paddr.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/paddr.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/paddr.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,14 @@
+.text
+main:
+
+	move A[0], #12h
+	nop	
+	nop
+
+
+
+.data
+
+lb: .word 0x23
+plc: .word lb
+

Added: branches/binutils/package/ld/testsuite/ld-maxq/paddr1.dd
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/paddr1.dd	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/paddr1.dd	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <main>:
+   0:	12 09       	MOVE  A\[0\], #12h
+   2:	3a da       	NOP 
+   4:	3a da       	NOP 
+	...
+Disassembly of section .data:
+
+0000a000 <lb>:
+    a000:	23 00       	MOVE  00h, #23h
+	...
+
+0000a004 <plc>:
+    a004:	00 a0       	MOVE  20h, 00h
+	...

Added: branches/binutils/package/ld/testsuite/ld-maxq/paddr1.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/paddr1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/paddr1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+.text
+main:
+
+	move A[0], #12h
+	nop	
+	nop
+.data
+
+lb: .long 0x23
+plc: .long lb

Added: branches/binutils/package/ld/testsuite/ld-maxq/r32-1.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/r32-1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/r32-1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,20 @@
+; Test the intersegment relocation
+; Inderpreetb at noida.hcltech.com
+
+.global _start
+.extern _main
+_start:
+	call _main
+	nop
+	nop
+	nop
+	nop
+.global _exit
+_exit:
+	nop
+	nop
+	nop
+.global _abort	
+_abort:
+	nop	
+	nop

Added: branches/binutils/package/ld/testsuite/ld-maxq/r32-2.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/r32-2.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/r32-2.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,13 @@
+;
+; test the intersegment relocation
+; inderpreetb at noida.hcltech.com
+.extern _start
+.extern _abort
+.extern _exit
+.global _main
+_main:
+	call _exit
+	call _abort
+	ljump _abort
+	ljump _exit
+

Added: branches/binutils/package/ld/testsuite/ld-maxq/r32.dd
===================================================================
--- branches/binutils/package/ld/testsuite/ld-maxq/r32.dd	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-maxq/r32.dd	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,31 @@
+.*: +file format .*
+
+Disassembly of section .text:
+
+00000000 <_start>:
+   0:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+   2:	0c 3d [ 	]*CALL  #0ch
+   4:	3a da [ 	]*NOP 
+   6:	3a da [ 	]*NOP 
+   8:	3a da [ 	]*NOP 
+   a:	3a da [ 	]*NOP 
+
+0000000c <_exit>:
+   c:	3a da [ 	]*NOP 
+   e:	3a da [ 	]*NOP 
+  10:	3a da [ 	]*NOP 
+
+00000012 <_abort>:
+  12:	3a da [ 	]*NOP 
+  14:	3a da [ 	]*NOP 
+	...
+
+00000018 <_main>:
+  18:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+  1a:	06 3d [ 	]*CALL  #06h
+  1c:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+  1e:	09 3d [ 	]*CALL  #09h
+  20:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+  22:	09 0c [ 	]*JUMP  #09h
+  24:	00 0b [ 	]*MOVE  PFX\[0\], #00h
+  26:	06 0c [ 	]*JUMP  #06h

Modified: branches/binutils/package/ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/mips-elf.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/mips-elf.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -137,6 +137,33 @@
     run_dump_test "emit-relocs-1"
 }
 
+if {[istarget mips*-*-linux*]} {
+     # The number of symbols that are always included in the symbol table
+     # for these tests.  The 5 are:
+     #
+     #     the null symbol entry
+     #     the .MIPS.stubs section symbol
+     #     the .text section symbol
+     #     _gp
+     #     _GLOBAL_OFFSET_TABLE_
+     set base_syms 5
+     foreach dynsym { 7fff 8000 fff0 10000 2fe80 } {
+	 run_ld_link_tests \
+	     [list [list \
+			"Stub for dynsym 0x$dynsym" \
+			"-shared -melf32btsmip -T stub-dynsym-1.ld" \
+			[concat \
+			     "-EB -march=mips1 -32 -KPIC" \
+			     "--defsym base_syms=$base_syms" \
+			     "--defsym dynsym=0x$dynsym"] \
+			[list "stub-dynsym-1.s"] \
+			[list [list \
+				   "objdump" "-dz" \
+				   "stub-dynsym-1-$dynsym.d"]] \
+			"stub-dynsym-1-$dynsym"]]
+     }
+ }
+
 # For tests which may involve multiple files, use run_ld_link_tests.
 
 # List contains test-items with 3 items followed by 2 lists:

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-10000.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-10000.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-10000.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+
+.*:     file format elf32-tradbigmips
+
+Disassembly of section \.MIPS\.stubs:
+
+.* <\.MIPS.stubs>:
+.*:	8f998010 	lw	t9,-32752\(gp\)
+.*:	03e07821 	move	t7,ra
+.*:	3c180001 	lui	t8,0x1
+.*:	0320f809 	jalr	t9
+.*:	37180000 	ori	t8,t8,0x0
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+Disassembly of section .text:
+#pass

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-2fe80.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-2fe80.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-2fe80.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+
+.*:     file format elf32-tradbigmips
+
+Disassembly of section \.MIPS\.stubs:
+
+.* <\.MIPS.stubs>:
+.*:	8f998010 	lw	t9,-32752\(gp\)
+.*:	03e07821 	move	t7,ra
+.*:	3c180002 	lui	t8,0x2
+.*:	0320f809 	jalr	t9
+.*:	3718fe80 	ori	t8,t8,0xfe80
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+Disassembly of section .text:
+#pass

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-7fff.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-7fff.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-7fff.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,16 @@
+
+.*:     file format elf32-tradbigmips
+
+Disassembly of section \.MIPS\.stubs:
+
+.* <\.MIPS.stubs>:
+.*:	8f998010 	lw	t9,-32752\(gp\)
+.*:	03e07821 	move	t7,ra
+.*:	0320f809 	jalr	t9
+.*:	24187fff 	li	t8,32767
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+Disassembly of section .text:
+#pass

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-8000.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-8000.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-8000.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,16 @@
+
+.*:     file format elf32-tradbigmips
+
+Disassembly of section \.MIPS\.stubs:
+
+.* <\.MIPS.stubs>:
+.*:	8f998010 	lw	t9,-32752\(gp\)
+.*:	03e07821 	move	t7,ra
+.*:	0320f809 	jalr	t9
+.*:	34188000 	li	t8,0x8000
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+Disassembly of section .text:
+#pass

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-fff0.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-fff0.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1-fff0.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,16 @@
+
+.*:     file format elf32-tradbigmips
+
+Disassembly of section \.MIPS\.stubs:
+
+.* <\.MIPS.stubs>:
+.*:	8f998010 	lw	t9,-32752\(gp\)
+.*:	03e07821 	move	t7,ra
+.*:	0320f809 	jalr	t9
+.*:	3418fff0 	li	t8,0xfff0
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+.*:	00000000 	nop
+Disassembly of section .text:
+#pass

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.ld
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.ld	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.ld	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,17 @@
+SECTIONS
+{
+  . = 0x80000;
+  .interp : { *(.interp) }
+  .hash : { *(.hash) }
+  .dynsym : { *(.dynsym) }
+  .dynstr : { *(.dynstr) }
+  .rel.dyn : { *(.rel.dyn) }
+  .MIPS.stubs : { *(.MIPS.stubs) }
+  .text : { *(.text) }
+
+  . = ALIGN (0x10000);
+  _gp = . + 0x7ff0;
+  .got : { *(.got) }
+
+  /DISCARD/ : { *(.reginfo) }
+}

Added: branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/stub-dynsym-1.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,10 @@
+	.macro	decl
+	.global	exported\@
+	.equ	exported\@,\@
+	.endm
+
+	.rept	dynsym - base_syms
+	decl
+	.endr
+
+	lw	$25,%call16(foo)($gp)

Modified: branches/binutils/package/ld/testsuite/ld-mips-elf/textrel-1.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-mips-elf/textrel-1.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-mips-elf/textrel-1.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -6,21 +6,21 @@
 
 Dynamic section at offset 0xb4 contains 18 entries:
   Tag        Type                         Name/Value
- 0x00000004 \(HASH\)                       0x16c
- 0x00000005 \(STRTAB\)                     0x30c
- 0x00000006 \(SYMTAB\)                     0x1fc
- 0x0000000a \(STRSZ\)                      84 \(bytes\)
+ 0x00000004 \(HASH\)                       0x[0-9a-f]*
+ 0x00000005 \(STRTAB\)                     0x[0-9a-f]*
+ 0x00000006 \(SYMTAB\)                     0x[0-9a-f]*
+ 0x0000000a \(STRSZ\)                      [0-9]* \(bytes\)
  0x0000000b \(SYMENT\)                     16 \(bytes\)
  0x00000015 \(DEBUG\)                      0x0
- 0x00000003 \(PLTGOT\)                     0x1003e0
- 0x00000011 \(REL\)                        0x360
+ 0x00000003 \(PLTGOT\)                     0x[0-9a-f]*
+ 0x00000011 \(REL\)                        0x[0-9a-f]*
  0x00000012 \(RELSZ\)                      8 \(bytes\)
  0x00000013 \(RELENT\)                     8 \(bytes\)
  0x70000001 \(MIPS_RLD_VERSION\)           1
  0x70000005 \(MIPS_FLAGS\)                 NOTPOT
  0x70000006 \(MIPS_BASE_ADDRESS\)          0
- 0x7000000a \(MIPS_LOCAL_GOTNO\)           7
- 0x70000011 \(MIPS_SYMTABNO\)              17
- 0x70000012 \(MIPS_UNREFEXTNO\)            12
- 0x70000013 \(MIPS_GOTSYM\)                0x11
+ 0x7000000a \(MIPS_LOCAL_GOTNO\)           [0-9]*
+ 0x70000011 \(MIPS_SYMTABNO\)              [0-9]*
+ 0x70000012 \(MIPS_UNREFEXTNO\)            [0-9]*
+ 0x70000013 \(MIPS_GOTSYM\)                0x[0-9a-f]*
  0x00000000 \(NULL\)                       0x0

Added: branches/binutils/package/ld/testsuite/ld-pie/pie.c
===================================================================
--- branches/binutils/package/ld/testsuite/ld-pie/pie.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-pie/pie.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,5 @@
+int
+main ()
+{
+  return 0;
+}

Added: branches/binutils/package/ld/testsuite/ld-pie/pie.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-pie/pie.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-pie/pie.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,40 @@
+# Expect script for various PIE tests.
+#   Copyright 2006 Free Software Foundation, Inc.
+#
+# This file 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 of the License, 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; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+# This test can only be run if ld generates native executables.
+if ![isnative] then {return}
+
+# Run on Linux only.
+if { ![istarget *-*-linux*] } {
+    return
+}
+
+# Check if -pie is supported or not.
+send_log "$CC -pie $srcdir/$subdir/pie.c -o tmpdir/pie"
+catch "exec $CC -pie $srcdir/$subdir/pie.c -o tmpdir/pie" exec_output
+send_log "$exec_output\n"
+if { ![string match "" $exec_output] } {
+    return
+}
+
+set array_tests {
+    {"weak undefined" "-pie" "" {weakundef.c} "weakundef" "weakundef.out" "-fPIC"}
+    {"weak undefined data" "-pie" "" {weakundef-data.c} "weakundef-data" "weakundef.out" "-fPIC"}
+}
+
+run_ld_link_exec_tests [] $array_tests

Added: branches/binutils/package/ld/testsuite/ld-pie/weakundef-data.c
===================================================================
--- branches/binutils/package/ld/testsuite/ld-pie/weakundef-data.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-pie/weakundef-data.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#pragma weak undef_data
+
+extern int undef_data;
+int *ptr_to_data = &undef_data;
+
+int
+main (void)
+{
+  if (ptr_to_data == NULL)
+    printf ("PASSED\n");
+
+  return 0;
+}

Added: branches/binutils/package/ld/testsuite/ld-pie/weakundef.c
===================================================================
--- branches/binutils/package/ld/testsuite/ld-pie/weakundef.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-pie/weakundef.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#pragma weak undef_func
+
+extern int undef_func (void);
+int (*ptr_to_func)(void) = undef_func;
+
+int
+main (void)
+{
+  if (ptr_to_func == NULL)
+    printf ("PASSED\n");
+
+  return 0;
+}

Added: branches/binutils/package/ld/testsuite/ld-pie/weakundef.out
===================================================================
--- branches/binutils/package/ld/testsuite/ld-pie/weakundef.out	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-pie/weakundef.out	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1 @@
+PASSED

Modified: branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.g
===================================================================
--- branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.g	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.g	2006-12-31 16:27:59 UTC (rev 19)
@@ -7,7 +7,7 @@
 .*: +file format elf64-powerpc
 
 Contents of section \.got:
-.* 00000000 10018558 00000000 00000000  .*
+.* 00000000 10018570 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000001  .*
 .* 00000000 00000000 00000000 00000001  .*

Modified: branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.r
===================================================================
--- branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.r	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-powerpc/tlsexetoc.r	2006-12-31 16:27:59 UTC (rev 19)
@@ -51,9 +51,10 @@
  +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
-Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
+Relocation section '\.rela\.dyn' at offset .* contains 3 entries:
  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
-[0-9a-f ]+R_PPC64_TPREL64 +0+ gd \+ 0
+[0-9a-f ]+R_PPC64_DTPMOD64 +0+ gd \+ 0
+[0-9a-f ]+R_PPC64_DTPREL64 +0+ gd \+ 0
 [0-9a-f ]+R_PPC64_DTPMOD64 +0+ ld \+ 0
 
 Relocation section '\.rela\.plt' at offset .* contains 1 entries:

Modified: branches/binutils/package/ld/testsuite/ld-srec/sr3.cc
===================================================================
--- branches/binutils/package/ld/testsuite/ld-srec/sr3.cc	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-srec/sr3.cc	2006-12-31 16:27:59 UTC (rev 19)
@@ -11,7 +11,7 @@
     static void init_foo ();
     static int nb_foos() { return foos; }
     Foo();
-    Foo( char* message);
+    Foo(const char* message);
     Foo(const Foo&);
     Foo & operator= (const Foo&);
     ~Foo ();
@@ -93,7 +93,7 @@
   i = ++foos;
 }
 
-Foo::Foo (char*)
+Foo::Foo (const char*)
 {
   i = ++foos;
 }

Added: branches/binutils/package/ld/testsuite/ld-v850/split-lo16.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-v850/split-lo16.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-v850/split-lo16.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,26 @@
+#source: split-lo16.s -mv850e
+#ld: -Tsplit-lo16.ld
+#objdump: -d
+#...
+00010000 <.*>:
+   10000:	40 0e 34 12 	movhi	4660, r0, r1
+   10004:	01 16 78 56 	addi	22136, r1, r2
+   10008:	81 17 79 56 	ld\.bu	22136\[r1\],r2
+   1000c:	40 0e 36 12 	movhi	4662, r0, r1
+   10010:	01 16 78 d8 	addi	-10120, r1, r2
+   10014:	81 17 79 d8 	ld\.bu	-10120\[r1\],r2
+   10018:	40 0e 12 00 	movhi	18, r0, r1
+   1001c:	81 17 57 34 	ld\.bu	13398\[r1\],r2
+   10020:	01 16 56 34 	addi	13398, r1, r2
+   10024:	40 0e 14 00 	movhi	20, r0, r1
+   10028:	81 17 57 b6 	ld\.bu	-18858\[r1\],r2
+   1002c:	01 16 56 b6 	addi	-18858, r1, r2
+   10030:	40 0e 79 56 	movhi	22137, r0, r1
+   10034:	01 16 bc 9a 	addi	-25924, r1, r2
+   10038:	81 17 bd 9a 	ld\.bu	-25924\[r1\],r2
+   1003c:	40 0e 9b 78 	movhi	30875, r0, r1
+   10040:	81 17 df bc 	ld\.bu	-17186\[r1\],r2
+   10044:	01 16 de bc 	addi	-17186, r1, r2
+   10048:	40 0e 45 23 	movhi	9029, r0, r1
+   1004c:	a1 17 89 67 	ld\.bu	26505\[r1\],r2
+#pass

Added: branches/binutils/package/ld/testsuite/ld-v850/split-lo16.ld
===================================================================
--- branches/binutils/package/ld/testsuite/ld-v850/split-lo16.ld	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-v850/split-lo16.ld	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,11 @@
+SECTIONS
+{
+  lo16_carry = 0x56789abc;
+  lo16_nocarry = 0x12345678;
+  split_lo16_carry = 0x789abcde;
+  split_lo16_nocarry = 0x00123456;
+  odd = 0x23456789;
+  . = 0x10000;
+  .text : { *(.text); }
+  /DISCARD/ : { *(*); }
+}

Added: branches/binutils/package/ld/testsuite/ld-v850/split-lo16.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-v850/split-lo16.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-v850/split-lo16.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,20 @@
+	movhi	hi(lo16_nocarry),r0,r1
+	addi	lo(lo16_nocarry),r1,r2
+	ld.bu	lo(lo16_nocarry)[r1],r2
+	movhi	hi(lo16_nocarry + 0x18200),r0,r1
+	addi	lo(lo16_nocarry + 0x18200),r1,r2
+	ld.bu	lo(lo16_nocarry + 0x18200)[r1],r2
+	movhi	hi(split_lo16_nocarry),r0,r1
+	ld.bu	lo(split_lo16_nocarry)[r1],r2
+	addi	lo(split_lo16_nocarry),r1,r2
+	movhi	hi(split_lo16_nocarry + 0x18200),r0,r1
+	ld.bu	lo(split_lo16_nocarry + 0x18200)[r1],r2
+	addi	lo(split_lo16_nocarry + 0x18200),r1,r2
+	movhi	hi(lo16_carry),r0,r1
+	addi	lo(lo16_carry),r1,r2
+	ld.bu	lo(lo16_carry)[r1],r2
+	movhi	hi(split_lo16_carry),r0,r1
+	ld.bu	lo(split_lo16_carry)[r1],r2
+	addi	lo(split_lo16_carry),r1,r2
+	movhi	hi(odd),r0,r1
+	ld.bu	lo(odd)[r1],r2

Added: branches/binutils/package/ld/testsuite/ld-v850/v850.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-v850/v850.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-v850/v850.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,3 @@
+if [istarget v850*-*-*] {
+    run_dump_test "split-lo16"
+}

Added: branches/binutils/package/ld/testsuite/ld-xc16x/absrel.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/absrel.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/absrel.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,28 @@
+
+.*:     file format elf32-xc16x
+
+Disassembly of section .text:
+
+00000400 <_start>:
+ 400:	e0 f5       	mov r5,#0xf
+ 402:	e0 f6       	mov r6,#0xf
+
+00000404 <.12>:
+ 404:	f2 f5 1c 04 	mov r5,0x41c
+ 408:	e0 d6       	mov r6,#0xd
+ 40a:	f2 f7 1c 04 	mov r7,0x41c
+ 40e:	e0 d8       	mov r8,#0xd
+
+00000410 <.13>:
+ 410:	f2 f5 1c 04 	mov r5,0x41c
+ 414:	e0 f6       	mov r6,#0xf
+ 416:	f2 f7 1c 04 	mov r7,0x41c
+ 41a:	e0 f8       	mov r8,#0xf
+
+0000041c <.end>:
+.*:	ca 09 04 04 	calla- cc_nusr0,404 <.12>
+.*:	ca 19 04 04 	calla- cc_nusr1,404 <.12>
+.*:	ca 29 04 04 	calla- cc_usr0,404 <.12>
+.*:	ea 09 04 04 	jmpa- cc_nusr0,404 <.12>
+.*:	ea 19 04 04 	jmpa- cc_nusr1,404 <.12>
+.*:	ea 29 04 04 	jmpa- cc_usr0,404 <.12>

Added: branches/binutils/package/ld/testsuite/ld-xc16x/absrel.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/absrel.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/absrel.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,31 @@
+	.global _start
+_start:
+	mov r5,#0xf
+	mov r6,#0xf
+
+.12:
+	mov r5,.end
+	mov r6,#0xd
+	mov r7,.end
+	mov r8,#0xd
+.13:
+	mov r5,.end
+	mov r6,#0xf
+	mov r7,.end
+	mov r8,#0xf
+.end:
+	;calla cc_UC,.13
+	;calla cc_usr1,.12
+
+	;calla+ cc_UGT,.12
+	calla- cc_nusr0,.12
+	calla- cc_nusr1,.12
+	calla- cc_usr0,.12
+
+	;jmpa cc_UGT,.end
+	;jmpa cc_nusr0,.end
+
+	;jmpa+ cc_UGT,.12
+	jmpa- cc_nusr0,.12
+	jmpa- cc_nusr1,.12
+	jmpa- cc_usr0,.12

Added: branches/binutils/package/ld/testsuite/ld-xc16x/offset.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/offset.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/offset.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,18 @@
+
+.*:     file format elf32-xc16x
+
+Disassembly of section .text:
+
+00000400 <_start>:
+ 400:	e0 f8       	mov r8,#0xf
+ 402:	fa 00 08 04 	jmps #seg:0x0,#sof:0x408
+ 406:	e0 f9       	mov r9,#0xf
+
+00000408 <.12>:
+ 408:	e0 f5       	mov r5,#0xf
+ 40a:	e0 f7       	mov r7,#0xf
+ 40c:	da 00 10 04 	calls #seg:0x0,#sof:0x410
+
+00000410 <.13>:
+ 410:	e0 f6       	mov r6,#0xf
+ 412:	e0 f8       	mov r8,#0xf

Added: branches/binutils/package/ld/testsuite/ld-xc16x/offset.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/offset.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/offset.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,13 @@
+	.global _start
+_start:
+	mov r8,#0xf
+	jmps #seg:.12,#sof:.12
+	mov r9,#0xf
+.12:
+	mov r5,#0xf
+	mov r7,#0xf
+	calls #seg:.13,#sof:.13
+.13:
+	mov r6,#0xf
+	mov r8,#0xf
+	
\ No newline at end of file

Added: branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,34 @@
+
+.*:     file format elf32-xc16x
+
+Disassembly of section .text:
+
+00000400 <_start>:
+ 400:	e0 f5       	mov r5,#0xf
+ 402:	e0 f6       	mov r6,#0xf
+ 404:	e0 f7       	mov r7,#0xf
+ 406:	e0 f8       	mov r8,#0xf
+ 408:	e0 f9       	mov r9,#0xf
+ 40a:	e0 fa       	mov r10,#0xf
+ 40c:	e0 fb       	mov r11,#0xf
+ 40e:	e0 fc       	mov r12,#0xf
+
+00000410 <.12>:
+ 410:	2d 07       	jmpr cc_Z,7
+ 412:	3d fe       	jmpr cc_NZ,254
+ 414:	8d fd       	jmpr cc_ULT,253
+ 416:	8d 45       	jmpr cc_ULT,69
+ 418:	9d 06       	jmpr cc_UGE,6
+ 41a:	0d 05       	jmpr cc_UC,5
+ 41c:	2d 04       	jmpr cc_Z,4
+ 41e:	3d 03       	jmpr cc_NZ,3
+
+00000420 <.13>:
+ 420:	fd 02       	jmpr cc_ULE,2
+ 422:	dd 01       	jmpr cc_SGE,1
+ 424:	bd 00       	jmpr cc_SLE,0
+
+00000426 <.end>:
+ 426:	1d f4       	jmpr cc_NET,244
+ 428:	bb fe       	callr 254
+ 42a:	bb fd       	callr 253

Added: branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.s
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.s	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/pcreloc.s	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,27 @@
+	.global _start
+_start:
+	mov r5,#0xf
+	mov r6,#0xf
+	mov r7,#0xf
+	mov r8,#0xf
+	mov r9,#0xf
+	mov r10,#0xf
+	mov r11,#0xf
+	mov r12,#0xf
+.12:
+	jmpr cc_Z,.13
+	jmpr cc_NZ,.12
+	jmpr cc_C,.12
+	jmpr cc_C,0x45
+	jmpr cc_NC,.end
+	jmpr cc_UC,.end
+	jmpr cc_EQ,.end
+	jmpr cc_NE,.end
+.13:
+	jmpr cc_ULE,.end
+	jmpr cc_SGE,.end
+	jmpr cc_SLE,.end
+.end:
+	jmpr cc_NET,.12
+	callr .end
+	callr .end

Added: branches/binutils/package/ld/testsuite/ld-xc16x/pcrelocl.d
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/pcrelocl.d	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/pcrelocl.d	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,34 @@
+
+.*:     file format elf32-xc16x
+
+Disassembly of section .text:
+
+00c00300 <_start>:
+  c00300:	e0 f5       	mov r5,#0xf
+  c00302:	e0 f6       	mov r6,#0xf
+  c00304:	e0 f7       	mov r7,#0xf
+  c00306:	e0 f8       	mov r8,#0xf
+  c00308:	e0 f9       	mov r9,#0xf
+  c0030a:	e0 fa       	mov r10,#0xf
+  c0030c:	e0 fb       	mov r11,#0xf
+  c0030e:	e0 fc       	mov r12,#0xf
+
+00c00310 <.12>:
+  c00310:	2d 07       	jmpr cc_Z,7
+  c00312:	3d fe       	jmpr cc_NZ,254
+  c00314:	8d fd       	jmpr cc_ULT,253
+  c00316:	8d 45       	jmpr cc_ULT,69
+  c00318:	9d 06       	jmpr cc_UGE,6
+  c0031a:	0d 05       	jmpr cc_UC,5
+  c0031c:	2d 04       	jmpr cc_Z,4
+  c0031e:	3d 03       	jmpr cc_NZ,3
+
+00c00320 <.13>:
+  c00320:	fd 02       	jmpr cc_ULE,2
+  c00322:	dd 01       	jmpr cc_SGE,1
+  c00324:	bd 00       	jmpr cc_SLE,0
+
+00c00326 <.end>:
+  c00326:	1d f4       	jmpr cc_NET,244
+  c00328:	bb fe       	callr 254
+  c0032a:	bb fd       	callr 253

Added: branches/binutils/package/ld/testsuite/ld-xc16x/xc16x.exp
===================================================================
--- branches/binutils/package/ld/testsuite/ld-xc16x/xc16x.exp	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/ld/testsuite/ld-xc16x/xc16x.exp	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,65 @@
+# Expect script for ld-xstormy16 tests
+#   Copyright (C) 2003 Free Software Foundation
+#
+# This file 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 of the License, 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; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# Test xc16x linking of pc-relative relocs.  This tests the assembler and
+# tools like objdump as well as the linker.
+
+if {!([istarget "xc16x*-*-*"]) } {
+    return
+}
+
+# Set up a list as described in ld-lib.exp
+
+set xc16x_tests {
+    {   
+	"xc16x pc-relative relocs linker test"
+	""
+	""
+	{ "pcreloc.s" }
+	{ {objdump -Dz pcreloc.d} } 	
+	"pcreloc"
+    }
+}
+
+set xc16xabs_tests {
+    {   
+	"xc16x absolute relative address linker test"
+	""
+	""
+	{ "absrel.s" }
+	{ {objdump -Dz absrel.d} } 	
+	"absrel"
+    }
+}
+
+set xc16xoffset_tests {
+    {   
+	"xc16x offset linker test"
+	""
+	""
+	{ "offset.s" }
+	{ {objdump -Dz offset.d} } 	
+	"offset"
+    }
+}
+
+ run_ld_link_tests $xc16x_tests
+ run_ld_link_tests $xc16xabs_tests
+ run_ld_link_tests $xc16xoffset_tests
+
+

Added: branches/binutils/package/md5.sum
===================================================================
--- branches/binutils/package/md5.sum	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/md5.sum	2006-12-31 16:27:59 UTC (rev 19)
@@ -0,0 +1,7253 @@
+59530bdf33659b29e73d4adb9f9f6552  COPYING
+9f604d8a4f8e74f4f5140845a21b6674  COPYING.LIB
+c3555d7d7729ba9b9df4f89c1528bf3a  Makefile.def
+61448be02096ea1211b33ed49de17aca  Makefile.in
+699866f1eb464c5bd20dffe0721b9514  Makefile.tpl
+07c33a285703b40cd6f93a478e97e03b  README
+13f9da22d8cd9aae2bd17c1b1b049b77  bfd/ChangeLog
+77a30f8e524e777bf2078eb691ef3dd6  bfd/COPYING
+b52bdc9fa81c607eeb09533f30ee2dee  bfd/doc/ChangeLog
+42b5ebab441fcbf65e95c2aa31262147  bfd/doc/ChangeLog-9103
+c74994d625c014a295a3cd0be9ba4182  bfd/doc/Makefile.am
+11f3b927d0d8f273e21302ce885ad0ce  bfd/doc/Makefile.in
+4a4251f249426836fcb94a6cc5f085ec  bfd/doc/bfd.texinfo
+c9ff9c45c40996b024aaa7bd38a6f4ba  bfd/doc/bfdint.texi
+5ee7f8ae8b0ec33c7baf2e004084aaa1  bfd/doc/bfdsumm.texi
+40410225f8fba91f1159af9158829b4c  bfd/doc/chew.c
+e67d8b07516154c4ddbee2e3bab3d75e  bfd/doc/doc.str
+1beef3294ce9b67f22254ad8e6ac63f5  bfd/doc/fdl.texi
+39f61ac0fb56eced56e6894e7bc47cef  bfd/doc/header.sed
+5fa24958e8a60b2f879af658e615ccc0  bfd/doc/makefile.vms
+d7a37304ccd7b245f93df4be02797477  bfd/doc/proto.str
+b1848292a4811cd7301fc6201debe63a  bfd/doc/aoutx.texi
+1ec269e34cd7de48135ce9d4aefb98b6  bfd/doc/archive.texi
+476791b2992b27229f72b504fa18a7ef  bfd/doc/archures.texi
+19176aa35c9a7f931614e55c37312fb8  bfd/doc/bfd.info
+8f78cac76e49776569958aca2300b7d1  bfd/doc/bfdio.texi
+1cf72945486033b91f5dd16c8debfdd2  bfd/doc/bfdt.texi
+236e856bb13ee47adc5d7d253037640d  bfd/doc/bfdwin.texi
+2afdf80182d7d816eb993fe194d378a3  bfd/doc/cache.texi
+e9283eafea1e7362f84432636f966c9b  bfd/doc/coffcode.texi
+4bdaf36b0c11f0b77d1cc779bdb97c91  bfd/doc/core.texi
+c60b298f07f5a175f2325d48bd009bdb  bfd/doc/elf.texi
+d41d8cd98f00b204e9800998ecf8427e  bfd/doc/elfcode.texi
+930173859dab35d4c1c03efd5ddb18e3  bfd/doc/format.texi
+d2b923f7732c26442570c16fd1dfac5a  bfd/doc/hash.texi
+37ba364fb34b96a1dbb55b0f6f612432  bfd/doc/init.texi
+7d2276b33f6c38de1679adc0ec62edf8  bfd/doc/libbfd.texi
+e05a304bffdbb5e31511b9cf0036398d  bfd/doc/linker.texi
+58f9e78e71f2d034a79e172899e792f6  bfd/doc/mmo.texi
+2681c5237788b6adfc09aab1cef4ec1c  bfd/doc/opncls.texi
+72ce44b590d1908428b524aa5558bb80  bfd/doc/reloc.texi
+4f19249f4442f02fbc24930b8cb3490e  bfd/doc/section.texi
+8dabff9b03c8ae60a28c788ad1fc5b88  bfd/doc/syms.texi
+3c7ad67e1dde24958df1dbb1bff44760  bfd/doc/targets.texi
+d521a70ff017cce2d6e8d181ae7f520d  bfd/po/SRC-POTFILES.in
+9783b7a5b508bdb3cbbcfd352723873f  bfd/po/BLD-POTFILES.in
+67bbc6cfd71f3a251bc4c38b30b8f5c6  bfd/po/Make-in
+defb910cbeaa9e6633623438f38602a1  bfd/po/es.gmo
+b386179d90e38007246435a3b2160bb7  bfd/po/bfd.pot
+3aae148fb9018854c2d708a4ef931674  bfd/po/da.po
+f0b42e5ad32a58efa61bb2b7d59c2898  bfd/po/es.po
+68866d3be8f33a73e3d3a411d7e5d2cb  bfd/po/fr.po
+73b8653e71ee27028caea3884743f7de  bfd/po/ja.po
+8fc4e95db5a00f800bc30c65a30f8a8a  bfd/po/ro.po
+4314f7dc707bdd16e1a3aa6318d52f8a  bfd/po/rw.po
+dfe82e26118652583a47b8f4771e7e1c  bfd/po/sv.po
+95bcedd50b1016d3de8c9f543c6b2bb9  bfd/po/tr.po
+abf6192a404ba26c8c9ba2f66afd4565  bfd/po/vi.po
+759dbab8d78320662dd19d5c9dc5bfa0  bfd/po/zh_CN.po
+35a4480c592584b75a828838b20938a0  bfd/po/da.gmo
+9632ec7bbacad153aead7446fa0ab100  bfd/po/fr.gmo
+95a86001b071eb80f4745adba10a289a  bfd/po/ja.gmo
+844c1ea598f9bcc47870ecf122b15e7d  bfd/po/ro.gmo
+e15c998ffa3537ef5f5c5ed225c18279  bfd/po/rw.gmo
+b04862da8728ddf3c4c8a45b18ee35f7  bfd/po/sv.gmo
+495dc4f4a2e82ea81d7226370e07294f  bfd/po/tr.gmo
+b0376107e4977969c09c6ee65d4a3048  bfd/po/vi.gmo
+ee7366f8bf4f4bca0d82e3143893174d  bfd/po/zh_CN.gmo
+daabeea83b81f2707d48d2c04dcc37c4  bfd/ChangeLog-0001
+258372f0002edcee47f582f172db1b3c  bfd/ChangeLog-0203
+8b753b5ef99dea735879e526e6e63579  bfd/ChangeLog-2004
+76837fd7c50eaf5abca049225dbf46b9  bfd/ChangeLog-2005
+8dcb7ce2e45911e21ceb6e457e69eacf  bfd/ChangeLog-9193
+6d37ec6ee5f57a1188a0717f2fa5deb0  bfd/ChangeLog-9495
+b7ad288235bf6a3e015e01cb6096cbe7  bfd/ChangeLog-9697
+dbb0d89c90d6c0ec79eb003a5b63f923  bfd/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab  bfd/MAINTAINERS
+c81518f4dc4c5790517627dadd7e9ea7  bfd/Makefile.am
+b4127d221111923de12e4b66bd6a46f7  bfd/Makefile.in
+6455e3c85b31e588ecb75f7d3c945c8d  bfd/PORTING
+2d6a5be3f5d1b33251fe9a8570e943d8  bfd/README
+cd26654c6eb30680694867e434e40044  bfd/TODO
+8bf1b968ec3efed775a23c7dc8f6283b  bfd/acinclude.m4
+fdd497b22fc3a3aa6b9a98456c0d69b5  bfd/aclocal.m4
+3b8f2a0a54ae03082b5bdc4056c9d510  bfd/aix386-core.c
+6ace8e209fb6a36c0b8341438d7d4f4e  bfd/aix5ppc-core.c
+bfc82da44cc6aca364a7f5a4c8497f27  bfd/aout-adobe.c
+ebbdb6ab42ff480dddac03a13261914b  bfd/aout-arm.c
+18101a1007af72e154753d6bda683347  bfd/aout-cris.c
+6e53cca7b2b1be846b3e81e68e97886f  bfd/aout-ns32k.c
+28499b194a64c2181c0fbb13905b195a  bfd/aout-sparcle.c
+c56a0923de8dbddc1dfaae0b8af1fefa  bfd/aout-target.h
+94c6a6a39a249930d42cd5966997419d  bfd/aout-tic30.c
+c61f524f8d9af5a4eb7575c56ffa47f4  bfd/aout0.c
+8f9c04bbe9eec84117e1566fecd463a1  bfd/aout32.c
+0b9aeec63650e13ed54ba499a9f12706  bfd/aout64.c
+f2c38a29bc33ff7409a0dd4aa4ad7ecd  bfd/aoutf1.h
+a09344bcd1d6337a1e5dc30c5a932f07  bfd/aoutx.h
+b8d2eee956e8f3d642025802a5b4e6f8  bfd/archive.c
+ef5a533807704405ddbf7e90c587d122  bfd/archive64.c
+56751271ffcb052b8d0dcf8238a2e8d4  bfd/archures.c
+fb201a264266751883bb31d2e97683dc  bfd/armnetbsd.c
+f0c55c852ef0efa0a858cc54f7c1b2a3  bfd/bfd-in.h
+fed68b6352161bdeca01c6b743a2e587  bfd/bfd-in2.h
+bfee17cc349d4092baef732b839ba05f  bfd/bfd.c
+56fe9a0d165b6eecb6a7a57aaa18126e  bfd/bfd.m4
+76af621f0db36f9e90f70293d1806d26  bfd/bfdio.c
+c21287277ca9869e3fcc8179db60e5d5  bfd/bfdwin.c
+8ca659e5d7a75f38c1f73018c76b738f  bfd/binary.c
+db2086a90f5c68af88e1b0c7a91fa7f2  bfd/bout.c
+b2ce0703a48978092969df4764f0bc3b  bfd/cache.c
+501472f8c8ae59101ad73bc09074c9ff  bfd/cf-i386lynx.c
+4bb1506023c1d55303238ee81266c0c9  bfd/cf-sparclynx.c
+255d6ddba9aba40d7c74654045c4c5a8  bfd/cisco-core.c
+b3ac60538d7d8cb7761e43d4e319cb1f  bfd/coff-alpha.c
+11c5db3fa2d96673f453a6a81be4dda9  bfd/coff-apollo.c
+57e63ac6e5e4520319b74cc5095809bd  bfd/coff-arm.c
+fd5fa713ec808b05d247761d3edf8979  bfd/coff-aux.c
+250181489345970881086a1a5040570b  bfd/coff-go32.c
+fa1bbc8abe4e4ff4b7fc4ce2d088f21a  bfd/coff-h8300.c
+04bc5a3f39841499967903160871592a  bfd/coff-h8500.c
+0e4215fd81352abe20a692e3b6ff5d4b  bfd/coff-i386.c
+b9862f1f91299ed3aa9b9975d56235f5  bfd/coff-i860.c
+de06c8d7088a2e7c5b39331cfdd78d92  bfd/coff-i960.c
+c3d1fe6f37755734859374dbec6dd627  bfd/coff-ia64.c
+1ad3a6b88d3cf0f98d56613b26628787  bfd/coff-m68k.c
+fc072a4341cf4fc30596df31f64b54af  bfd/coff-m88k.c
+544b5088d0b547bc22e4de0a53a63971  bfd/coff-maxq.c
+3c435de7daf8b419ad2952d45ac1c9b3  bfd/coff-mcore.c
+b3c3fdd795c3d7417b53ca33a516a9cb  bfd/coff-mips.c
+84e161dd3c1de6144fb748d05b9f42cd  bfd/coff-or32.c
+c241a50cc12f6c028b7146b504f22d32  bfd/coff-pmac.c
+7ce3394512136f7113eabb84343fe6e9  bfd/coff-ppc.c
+c7bc3675a83bc6382b09563b97ff4d55  bfd/coff-rs6000.c
+f5959c8fc75b791abe3ba9ba82033062  bfd/coff-sh.c
+9c9178af4c126acceaa74cae58ad3720  bfd/coff-sparc.c
+dc65b0eac14243eb61ed831aab4a286a  bfd/coff-stgo32.c
+12c8a46c653b66016eff622d96abe19e  bfd/coff-svm68k.c
+b2405531e88b52d1d5286b6392e2e2ce  bfd/coff-tic30.c
+4c61669245fca8187356ffe93f3d04b7  bfd/coff-tic4x.c
+00bde8bfde070f79d809793c161bf8db  bfd/coff-tic54x.c
+e7abd5378f5fcc4bb1f36f70a197a33d  bfd/coff-tic80.c
+f22e8bd912c8f94769befe95e7dd2851  bfd/coff-u68k.c
+8ddba4fd1d147ae9e88bd1aa553e61f8  bfd/coff-w65.c
+6d6b6349da8fe8c3132de29a7e73aef3  bfd/coff-we32k.c
+8b22a572bac671300d2583a513947d9c  bfd/coff-z80.c
+f866f435c06250381755e0abc5555ea1  bfd/coff-z8k.c
+615ae3b007b9becbf46a7b054110eddd  bfd/coff64-rs6000.c
+de0cbbb4587c434642331109fbf69d0e  bfd/coffcode.h
+2d5b37f9de14bfce0ba6ed73a83a713b  bfd/coffgen.c
+574afdc0c4a576f9c873eb93a8e6e93a  bfd/cofflink.c
+50027306dc383d96a0df1fde4774efbb  bfd/coffswap.h
+68c8b11abca8dfe747532474388572a5  bfd/config.bfd
+b8b71f84dd9e55f3c80d3b1276a160c2  bfd/config.in
+b5fe226d3e4eeaa4b4ffd03b86817f90  bfd/configure
+a8485b69f68d81f4ef2f29b51bb36d85  bfd/configure.com
+b6168706fdbf981a62df6348ad485b18  bfd/configure.host
+3945ef77ac138dad168407928959e438  bfd/configure.in
+32004700f5ee9c9fe9332332729318e7  bfd/corefile.c
+edb201e1666b745257ef47540c1fbad1  bfd/cpu-alpha.c
+16d84f622f37b46bae5e41507009b0ca  bfd/cpu-arc.c
+137b66f0ac0f858d252f0037c1cd9309  bfd/cpu-arm.c
+6b1ef491d236e7d0b9f52de8c0f13119  bfd/cpu-avr.c
+3825b5e61b08a5f97f02814897f4d0d4  bfd/cpu-bfin.c
+5b332e373266f0708950bdcd1093dc75  bfd/cpu-cr16c.c
+991935ff84273e1d0ba5039206fd6c11  bfd/cpu-cris.c
+35c9b9b04e02b5a811d56df387a58d25  bfd/cpu-crx.c
+698b1623f007806603c6cf72580a3f73  bfd/cpu-d10v.c
+9c425e0f1f8c15cc14ee74ae3acab5a5  bfd/cpu-d30v.c
+6a6bf03a72d00422f624089017921227  bfd/cpu-dlx.c
+0b4bee40a0b8fa5c688da0086d68ec40  bfd/cpu-fr30.c
+35db131d8a49296798cac48c2eae63b5  bfd/cpu-frv.c
+208f0249b5c6eb3b2915aa595f8710d8  bfd/cpu-h8300.c
+c681610a5301733e38bca5f6c3032cac  bfd/cpu-h8500.c
+f6e9f73d27560786de2c8cdbb5ab4fae  bfd/cpu-hppa.c
+9d4bfb15eb10d8b08b9b10429b0c16c1  bfd/cpu-i370.c
+542a95013981b120d2e0bc9d2413df7b  bfd/cpu-i386.c
+b9d45f1ad3b8e13befbceeb3fd1dd039  bfd/cpu-i860.c
+85c22a1a228c5d6670e9793055befeb5  bfd/cpu-i960.c
+fa38bfe138fc7fdc79e6971ebc2ee8d3  bfd/cpu-ia64-opc.c
+09740558643dfc1913c6fc3e75c05c75  bfd/cpu-ia64.c
+c86049d4611eebb826cafd03d6b56e37  bfd/cpu-ip2k.c
+dce11213df27861dde2115f21e4d5096  bfd/cpu-iq2000.c
+086d593c2e6e3c5f813833fb91fca276  bfd/cpu-m10200.c
+d2a54138c885e8d4ea3c5f9671495d8f  bfd/cpu-m10300.c
+1181b377d4843f3f65af41449feff210  bfd/cpu-m32c.c
+3e03504fb056a2bc6bdf48e3d77382ca  bfd/cpu-m32r.c
+6af72ec159dc58e855c6f24de35e0da8  bfd/cpu-m68hc11.c
+f045e6704e104c6225952fbe6810a759  bfd/cpu-m68hc12.c
+02d264c6ffadad643bf736cd934d2199  bfd/cpu-m68k.c
+b58e3bb2fac6d7d56cfbd1def4f5b047  bfd/cpu-m88k.c
+3d3425e65725837ab596937f3c22a1ab  bfd/cpu-maxq.c
+56b18fa95630620a7e27c5ace77d9243  bfd/cpu-mcore.c
+27523ae7c3edefab71f02541976f9ee1  bfd/cpu-mips.c
+94cf262722d6374817a8a7e7e16ecfb6  bfd/cpu-mmix.c
+3b8db93a8896e564649e14f288c74d20  bfd/cpu-msp430.c
+d0c2dd648f69b207e31f7c9614d7671b  bfd/cpu-mt.c
+2f48290ee20d1f2487a97264f410b3bb  bfd/cpu-ns32k.c
+a8249ff79d98eb76d1fe784a816d840c  bfd/cpu-openrisc.c
+43238575fc03dc6293c3056dd82bce6a  bfd/cpu-or32.c
+afc4c1c5612fedd55ba99c1d09dece16  bfd/cpu-pdp11.c
+2af5501be1592de293c723b4ba7171e1  bfd/cpu-pj.c
+1067ca81efa70270c1fbcdd2af19f75c  bfd/cpu-powerpc.c
+eea6657f23e49f2e9bf9323d36c8f340  bfd/cpu-rs6000.c
+4f04f4296752aa8fb631922efca23d29  bfd/cpu-s390.c
+800f067cb1f24cfca663f7591ef28b95  bfd/cpu-sh.c
+92c962bc637180484e41e6398c37d8c3  bfd/cpu-sparc.c
+63913f724e3533b2a8997d53a0c34908  bfd/cpu-tic30.c
+0c638e47f89f1e35e8811319af505aa4  bfd/cpu-tic4x.c
+7f88ee5ec6591d7569360e07a9478674  bfd/cpu-tic54x.c
+91d22b79117f1712422bc07256ad8838  bfd/cpu-tic80.c
+b8e5d508beb63a74030520f68411fb20  bfd/cpu-v850.c
+292c357e4070108c0fecda17ffb511f1  bfd/cpu-vax.c
+bd4f4d39f57632bf2e133030228d1233  bfd/cpu-w65.c
+1c5760086250fc5a596427dbf5b62668  bfd/cpu-we32k.c
+b59bbc7dc404b76cfda84c0e98509b6d  bfd/cpu-xc16x.c
+de6673fab1856c05252e1811cf206352  bfd/cpu-xstormy16.c
+6444d50955b35efca1dd28a87f7e8719  bfd/cpu-xtensa.c
+853093cf47ba24c17bb1eea02a7b7e7b  bfd/cpu-z80.c
+0caf317c2c1742560b8b15f33fde6353  bfd/cpu-z8k.c
+0e98041741c46019f1cb11d1b67c5610  bfd/demo64.c
+85642f7faafe48a08811120e0b61895e  bfd/dep-in.sed
+09a00c587d07effd443d668bff615dcb  bfd/dwarf1.c
+d1da95dff823dce1bf4cdcdbe3076d20  bfd/dwarf2.c
+d2a9fe1ea16734d2f26101dce5d5603a  bfd/ecoff.c
+f5bba41ac5d324220024ebde8a9cd680  bfd/ecofflink.c
+8ad83a4ad275a48d9e42b768837b04d0  bfd/ecoffswap.h
+76cfc85188f1d85856378934fa3afd3c  bfd/efi-app-ia32.c
+bb95b54592c2339017a73c93d8bdf6c8  bfd/efi-app-ia64.c
+9c16c303d894a37190d12acaae27424c  bfd/elf-bfd.h
+df539eab36aa45cdfd42c51e22778e1a  bfd/elf-eh-frame.c
+2f1014a0e8826944fab2de82ce366b29  bfd/elf-hppa.h
+b4b24d6246548717ebe55dbf11624827  bfd/elf-m10200.c
+f64c5a8b4581342833bbfe8463ee33ce  bfd/elf-m10300.c
+7c8737ad1b721808f05cd7735986c7b9  bfd/elf-strtab.c
+b6407f7c8ea27c72d7404aecf05ba245  bfd/elf-vxworks.c
+87b79862b2d818a4bfe6abf36cb5f262  bfd/elf-vxworks.h
+c31f8b64df643c88120808e696357aeb  bfd/elf.c
+0dd1c3bdabafe8b16d1284fb22f15132  bfd/elf32-am33lin.c
+5fbf13e5f250359e511a64354f72f177  bfd/elf32-arc.c
+803e47d2b9a4f2c1c6d6b2648e2fe662  bfd/elf32-arm.c
+9e841e6881ebf80e8d7a27750d466a1d  bfd/elf32-avr.c
+a9cc74a37bd0135bd9cd71388b9b8bb0  bfd/elf32-bfin.c
+58973d361e461a9c02a6cbb1b0e2ee3c  bfd/elf32-cr16c.c
+4152a4185e4018d6e7beeafc6b43b720  bfd/elf32-cris.c
+ad0bc0319e1a178e955eaeb66febd2a2  bfd/elf32-crx.c
+f7af141f55732018859350cea0de1b4f  bfd/elf32-d10v.c
+bcbb9564b601c68c3e54c64da803722b  bfd/elf32-d30v.c
+d0e7a15bb3484e3cb4714daf350e7860  bfd/elf32-dlx.c
+b79b265e2bc96a053868e7cd35adcca7  bfd/elf32-fr30.c
+1db4e8034d91ee7cbb5898214597edf9  bfd/elf32-frv.c
+f3aed5c90d42c39bba5384133b6a263a  bfd/elf32-gen.c
+67473ad27a607e73749131b11c46b4bf  bfd/elf32-h8300.c
+caf76bc9e37cbc06b0b0b79110a763ea  bfd/elf32-hppa.c
+f57060778b4232bec707cb02e6a9c86c  bfd/elf32-hppa.h
+3a31601d4565f44fb17caf58a54bec57  bfd/elf32-i370.c
+457d6c4e497b04454ea0cfc251cec3a0  bfd/elf32-i386.c
+1a576b3ae339e147e6fa44b47e65923f  bfd/elf32-i860.c
+27c1204d2a650464a0345a0daddbecd9  bfd/elf32-i960.c
+eb53fda94ec813c5b985566ca297b72a  bfd/elf32-ip2k.c
+9d81b7195761b69d6827977f5cb5b16e  bfd/elf32-iq2000.c
+caa305d61e87dfcc4cf2a377d9a3f145  bfd/elf32-m32c.c
+5093a57b4c749ed98e8a1de031746da0  bfd/elf32-m32r.c
+d59e744992063263262ba855b0e67fd0  bfd/elf32-m68hc11.c
+81fccba5d5da2804ddea71112199b2ea  bfd/elf32-m68hc12.c
+ed5ec5f8469686986dac25ccaf1d7d0b  bfd/elf32-m68hc1x.c
+7241b87da99b601d4d29025161a15f41  bfd/elf32-m68hc1x.h
+1a45b538725737a92a3cc81f2c83fb34  bfd/elf32-m68k.c
+b63887de0ad9facdc04ff71b24c925fa  bfd/elf32-m88k.c
+3bb5ecc709f1274d3a6495d980be0567  bfd/elf32-mcore.c
+c03ac87c41a66255f54f434d0902b86d  bfd/elf32-mips.c
+3bdf246748689fbf8ae0a8ca4b585786  bfd/elf32-msp430.c
+d956c994abcacaca325ee061cede9018  bfd/elf32-mt.c
+411d24e5aba86f5d11d7628c95597cda  bfd/elf32-openrisc.c
+b6fb80513493210d60820eaa8b238f6f  bfd/elf32-or32.c
+808ea8123c18594ec0703759802e90ec  bfd/elf32-pj.c
+cfd2c0f0773bb547592cc54644503698  bfd/elf32-ppc.c
+685c51f5eb84eff13dbfe88cdd2beb0c  bfd/elf32-ppc.h
+869cccebffc53936faa1d19580bbcd86  bfd/elf32-s390.c
+727fc8f33330c0019094cd10198a5038  bfd/elf32-sh-symbian.c
+d8b8324a2133bddb50dc74ef5fbe96eb  bfd/elf32-sh.c
+94b5e79a0219b34c7131d95f37b04bff  bfd/elf32-sh64-com.c
+5ebadf502fe1b12ad4f57ebba3d90ceb  bfd/elf32-sh64.c
+a6f24a792fb57bd94971fe80845d3ef8  bfd/elf32-sh64.h
+32944660a8698623475ec6d5abc63f9d  bfd/elf32-sparc.c
+d28d5b44f0e05044def27d77df0a7e92  bfd/elf32-v850.c
+1cf0e9acf00bf56a93a4af888c7d9490  bfd/elf32-vax.c
+7408233183e5713253a8911f8befa7c2  bfd/elf32-xc16x.c
+c83c5d28f333538ba5ef0e19170f38be  bfd/elf32-xstormy16.c
+223f5a42576adf02fe47c825d840c8ee  bfd/elf32-xtensa.c
+08b2f9cac94a848681e0c60831ec4ee7  bfd/elf32.c
+ddbb2a8a67edf5404891ecf361808d81  bfd/elf64-alpha.c
+1a60db1784fd0d7ffcaa6976ebb9dd47  bfd/elf64-gen.c
+760958636bb8cdf1cf04098dca5a7e25  bfd/elf64-hppa.c
+8506bec7402914f1c92f4bb4a36ed4c2  bfd/elf64-hppa.h
+8d169491f9c6b522c11489430527107d  bfd/elf64-mips.c
+212b0abd4798995d5ba6631d9052d635  bfd/elf64-mmix.c
+83f00a37d7a5ec94c414bab16f144052  bfd/elf64-ppc.c
+084b3a64cbe2ef5ab49cefc94d3383ff  bfd/elf64-ppc.h
+885863f0a14581e2db1198aece3f8950  bfd/elf64-s390.c
+dc3626b6f10203e40226b20d8f633588  bfd/elf64-sh64.c
+7f01f90219ae34d5e9e6b28a717a45b1  bfd/elf64-sparc.c
+65669eeb558835b9690ade9e7e3e3049  bfd/elf64-x86-64.c
+f81c05a0f91900f60b4634f647a7d9bd  bfd/elf64.c
+a26897feb84fc112c40688a52b4873f1  bfd/elfcode.h
+5608a88c1e988d7f91989b6829c327cd  bfd/elfcore.h
+75fdb7cf4beafa0734064c3e0d760b00  bfd/elflink.c
+2fbd0af660ef1f66e186dbe6839bea2b  bfd/elfn32-mips.c
+94a791c91aade4782ad527e82b3c4781  bfd/elfxx-ia64.c
+f609afac14ef4a6158f1aba1a5e4101b  bfd/elfxx-mips.c
+7f56c27c4a7b87e256eaa3ae21e16fcd  bfd/elfxx-mips.h
+d1f11d27886a3b32d74615522a56c3d1  bfd/elfxx-sparc.c
+66815c290d0936f10bb859daec7505bd  bfd/elfxx-sparc.h
+5b44cd3f205a3ae1e7cd403c0526728d  bfd/elfxx-target.h
+845c1fc8d210c507d4cc16d004643845  bfd/epoc-pe-arm.c
+2d37588621fea848f92dff976df4f26d  bfd/epoc-pei-arm.c
+c9619c10210fadeb357d65d3b38a33c8  bfd/format.c
+0327a8d0de3450ef10c2de9344b3f4e5  bfd/freebsd.h
+b4d80f4ff8d6d65cc7828dcd4150dcda  bfd/gen-aout.c
+0bcce8500602617a77adb43cad2bb567  bfd/genlink.h
+663a6979bd331c91d1385445edeca7b0  bfd/go32stub.h
+98cfbbac8c4d0641b6f3de9277ed54d2  bfd/hash.c
+eec0fd72d0a527a65981533a528e00d2  bfd/host-aout.c
+13756c83e454158659f5e65eade56a87  bfd/hp300bsd.c
+6469373871e0c2392ea20a9fe6ae27b9  bfd/hp300hpux.c
+203d06a4531549ee57259df1bf3dd098  bfd/hppabsd-core.c
+458790ce35ec936b6cc2e295aa25a898  bfd/hpux-core.c
+33136bba79d493b4b808cd9493aa7ce6  bfd/i386aout.c
+9a1157289d74d7394b5c003c5f9ae876  bfd/i386bsd.c
+7d84804c72de33055c3dbcbbbc2dab22  bfd/i386dynix.c
+5c43cdbb9112046f6cdaa0f75d9cc6a3  bfd/i386freebsd.c
+e3b931dd9241b8276a186c0407485c7c  bfd/i386linux.c
+b282b26edc93d5e11a14f2a89e905050  bfd/i386lynx.c
+4ede8768961106d2b9b7a79c6b1afe88  bfd/i386mach3.c
+e62522632e0cb50000e599c567b59dd8  bfd/i386msdos.c
+98c4247267b3060075056bfbc0c69fa1  bfd/i386netbsd.c
+6e1af2fb1462da205db5eb2c9aa249cd  bfd/i386os9k.c
+3d0bb9f58d35be6e0759f72050bdeee9  bfd/ieee.c
+122279de1e9c8558c64337edf9e45691  bfd/ihex.c
+a0bb8ba7ad906345cf25260cb4ed5781  bfd/init.c
+d79d20ed9bebae40195e097529f0c86f  bfd/irix-core.c
+23825feb5fdee6359f348766b7a573ea  bfd/libaout.h
+e261db96534d8aad7b2f7046bbc2e380  bfd/libbfd-in.h
+74d495ae7d42221d3ff4717b98533ef5  bfd/libbfd.c
+61948da0b790bb9281e1fbfc66fda51b  bfd/libbfd.h
+216e4680ec46582ae40bed5a7029c0f9  bfd/libcoff-in.h
+fe998e9883749b296cdfdb24c82c584c  bfd/libcoff.h
+5c80ef78fe22148a9cd4a5257d9d4022  bfd/libecoff.h
+1634a8e3ef564729a920438f1cfe3309  bfd/libhppa.h
+48cab59b93f78de3f30c99a47abfd138  bfd/libieee.h
+6350077f0c7966af50da44b72cda9f69  bfd/libnlm.h
+1d831d0be172240926fc37163d85234a  bfd/liboasys.h
+dedae180222279a6389998ab1eb0d0e4  bfd/libpei.h
+73ac886af1bacd2eb05f24fda33fa586  bfd/libxcoff.h
+99b060be20fc430da687711ee5dd169d  bfd/linker.c
+5b0fea7033000ca903a071f37c784fac  bfd/lynx-core.c
+b319c1239018c609d0e02de40ee4799b  bfd/m68k4knetbsd.c
+7fe1a5429a9bb2db62879aa27b5c4be2  bfd/m68klinux.c
+5317a7d62abdea2370ccdbcaac73a320  bfd/m68knetbsd.c
+d2c68a74eacbf9f33e79faf3aa724269  bfd/m88kmach3.c
+255c5d045401bf5169d3d38dc51e5dff  bfd/m88kopenbsd.c
+1555f52c5c3c049f737369f431a7ed9c  bfd/mach-o-target.c
+33c4364cdb227259098b53feaa1b4507  bfd/mach-o.c
+dadc53d93f6281c1ba5c630213afe308  bfd/mach-o.h
+5de4da6a9169effb512e6ba4d014d420  bfd/makefile.vms
+2f49f1fa83e08812aa3889f5bd553167  bfd/merge.c
+3784a612b79c3415495833885a6ecc83  bfd/mipsbsd.c
+437549e310decb25bdb50ed71cc2f24f  bfd/mmo.c
+d9143f89c2e6b4ea4e084533ad15ca31  bfd/netbsd-core.c
+4a0c7d90d3b2059c61a97f164a92a1e3  bfd/netbsd.h
+a11612d134444198a3a1a889b6c13ab0  bfd/newsos3.c
+b24a5990c7650c6a22f5326bfe628b0e  bfd/nlm-target.h
+b7cace7aba7f0178101f3e4adddb440e  bfd/nlm.c
+bc204e9ccd9559af60f11ffa4e2b39bd  bfd/nlm32-alpha.c
+3fc7b8ee64529655fdfe3ae2022b8409  bfd/nlm32-i386.c
+3bfc9660b84cd1204ad17c6e97fb008a  bfd/nlm32-ppc.c
+3c615ca1e24db16628c21300ab9f8a61  bfd/nlm32-sparc.c
+5e6a41787d98c2eae5602321a65a431d  bfd/nlm32.c
+1dc1dbdd1eb9bd846425383fb93c4f20  bfd/nlm64.c
+1dd40f17d4ec45b506ddde9da31e3af2  bfd/nlmcode.h
+bdb19416212b5c130b6df7e82151b7dc  bfd/nlmswap.h
+f9ffcd4ffe2a668b72c1f1c932124e54  bfd/ns32k.h
+2b16d4f07def92e1f2cf3bab5bc38907  bfd/ns32knetbsd.c
+5cf9cffbf5443ff28f4a845537c17d36  bfd/oasys.c
+4d0b01f4860926e07fcfa9ad65c17845  bfd/opncls.c
+a3437d686c884eef45d633671fb342e4  bfd/osf-core.c
+3d39db118ea97dc453e6f5d234f8e442  bfd/pc532-mach.c
+34cfb5556abf9f6fb811a1d09b16fb94  bfd/pdp11.c
+13038568d35fa7a9d6913a26cd9fd493  bfd/pe-arm.c
+c44c9bd31a3da9d940dc2983f82ff7c4  bfd/pe-i386.c
+5d37fcee66e9280b277913399934b844  bfd/pe-mcore.c
+c1eebca412b1e0b7ce6bc48c4ca3f038  bfd/pe-mips.c
+38712dc1d6b9a8d1081eeab472d67172  bfd/pe-ppc.c
+df3ad69262f3fb4930ce34724a4ed190  bfd/pe-sh.c
+7e6e5f10d02977f00f547228ac0315ce  bfd/peXXigen.c
+4846905251b20c386f37dbadb3386488  bfd/pef-traceback.h
+3e176f3695027d0d3b3595e46ff842fb  bfd/pef.c
+7219ce31260befcf9bc59d5df887332b  bfd/pef.h
+bdb1f85c89d38888e6ed9f1d69fc244b  bfd/pei-arm.c
+1bad2eddb1e776fed0da6365e6856cd1  bfd/pei-i386.c
+944e9c3f89e018c0aacb3186fade52c3  bfd/pei-mcore.c
+86f2d8d3f155592eff38ccd05a031b3a  bfd/pei-mips.c
+c250a5315ead507fce21bc309426d92e  bfd/pei-ppc.c
+dda5fb44c95b1cad8d787800770ddcd7  bfd/pei-sh.c
+b51a43e2df5828eab3b24d364067bc5f  bfd/peicode.h
+85d841321d0a406d4f80c3a168601a85  bfd/ppcboot.c
+5ed87bd1883ef67f505e0dacd774b406  bfd/ptrace-core.c
+7a1126d93e37b32a3b26e765b7483fe1  bfd/reloc.c
+5a577dc2598a7a1b7cb65494f023bd16  bfd/reloc16.c
+2cc606a89105c4d274ceb6d00375feb6  bfd/riscix.c
+fcdc08a69ebfaef3ca77e06df854e4d2  bfd/rs6000-core.c
+70bb55fe3b0a7111e19eeeb2c106980f  bfd/sco5-core.c
+5bdf94af382ddc8e68d895a635d543f1  bfd/section.c
+582472b85bfff94da322c09111315d4c  bfd/simple.c
+f892b805cc6a4a3b7370a711efb8e2ce  bfd/som.c
+41ee16e0e16918bead025c036c6d1a9d  bfd/som.h
+b30f80c1971ce2606de651efc16ffb90  bfd/sparclinux.c
+65a50725ea68bc5b002fdabff9c7d636  bfd/sparclynx.c
+5fe747c2eb78b7c475fb70605b85e3e9  bfd/sparcnetbsd.c
+f9031f5ea9e85fb4a55694645fe1ee3f  bfd/srec.c
+cfeb59dfeb30622ba55610d9255b56c6  bfd/stab-syms.c
+7294d63e6ed313e5e1bd3e3968a80b81  bfd/stabs.c
+1ded054093de910d9786c62bc4fe8cc6  bfd/stamp-h.in
+d69a1197ea95175edab06464131f0caa  bfd/sunos.c
+5d89bc74043ef4a404a3f6b813ad42b9  bfd/syms.c
+3339743416ac826b54c5bd7bf9abd72e  bfd/sysdep.h
+3a186fcccf2ec924143532a73bf01b8c  bfd/targets.c
+53357a9b87dd158b90cf790c316fd438  bfd/targmatch.sed
+2ebb7db1e4f5ee8a0966eaa9fc3d0058  bfd/tekhex.c
+7f0425b3d0df05cd60091331a839b0e0  bfd/ticoff.h
+d19a846345d07a3bba0d639c10c63cf5  bfd/trad-core.c
+bf2267bf53e56ae9361c657bd3a72405  bfd/vax1knetbsd.c
+2ca8d7dc9d29fe78d69c37c67a576a82  bfd/vaxbsd.c
+df78b215840331a8c701085832192433  bfd/vaxnetbsd.c
+cb056c70a8b7d177a8e70af1f33160e4  bfd/versados.c
+cd1c0e00de08fa9802ef41e5e27250ee  bfd/version.h
+3354475b2dd01a64578d5bc3eb2192e2  bfd/vms-gsd.c
+09687d78f35c0bfdac4ac5a144b7c101  bfd/vms-hdr.c
+c2070929553db87660218077a2ff6365  bfd/vms-misc.c
+314525786f53b91fdf382294bf217106  bfd/vms-tir.c
+ec1a2a1b56cf0ce4995987eaec110a05  bfd/vms.c
+22ed0fa24852e709159e8aeb87c1906f  bfd/vms.h
+8f6d761218ac2294eed6b69920966a8a  bfd/warning.m4
+a639e910ee79c83ab6df207ce33d462b  bfd/xcoff-target.h
+99a88aff7c5b8a6f8744d7f0df5e6b88  bfd/xcofflink.c
+c21a8b12d37a20f2e418bb0454ab1ff7  bfd/xsym.c
+d7d14fceeb3d55409e037e3d42e84749  bfd/xsym.h
+3a3e013856449320eb6a9fa06829baee  bfd/xtensa-isa.c
+d8b961277ed574e523aa60752ae91a77  bfd/xtensa-modules.c
+74b9e8377ce5ef7f2ad8914ad5e1dd41  bfd/hosts/alphalinux.h
+8344d011556cbb722db2539a8b9c1b30  bfd/hosts/alphavms.h
+70e1a59995604c3b804469fa27b92d94  bfd/hosts/decstation.h
+b79aced976b763918d1a6fbc417b2b44  bfd/hosts/delta68.h
+5a75f0a8518cdf994c6837632317650a  bfd/hosts/dpx2.h
+6d9ebd0f91f9085690638821e2ce67e0  bfd/hosts/hp300bsd.h
+50735617194ee653f1cf99af40a7dbc9  bfd/hosts/i386bsd.h
+c3d90b1a06731c814d89371f91583bb9  bfd/hosts/i386linux.h
+90fa9751fedd9623f399b8bcd6a646b3  bfd/hosts/i386mach3.h
+09a90ebd4e56bce95e72a93c6274997e  bfd/hosts/i386sco.h
+1d13cbc7201d1b35dfd2353027122d33  bfd/hosts/i860mach3.h
+779197139aaf874e61ef9339cdf7df30  bfd/hosts/m68kaux.h
+c40f7966cbdb0fac0b4366c9c61eac06  bfd/hosts/m68klinux.h
+2563c4d1fef8234619b1c2007dfdaf90  bfd/hosts/m88kmach3.h
+8fbd4bfd38ea85aeedac03e1962242dc  bfd/hosts/mipsbsd.h
+f61dc4a9a9a665ab9fba6861214bdea3  bfd/hosts/mipsmach3.h
+d4e865701ae3a5149a05ff92b2542e94  bfd/hosts/news-mips.h
+2a46cd81291f56275932a241e022f567  bfd/hosts/news.h
+21af1454d516fbfd996f6d6bc3b8db9b  bfd/hosts/pc532mach.h
+2440e7cdd4e85ead6516650e1329bd0f  bfd/hosts/riscos.h
+31fe7c1b8aaaf0174c5fe2ef83298ca9  bfd/hosts/symmetry.h
+627775bbea4f1d59b97edfa80e81a259  bfd/hosts/tahoe.h
+5a3d301d30379f54dec62ba1834fb8b6  bfd/hosts/vaxbsd.h
+98072f77320b9a2d09d6c7eff408dd5a  bfd/hosts/vaxlinux.h
+9b476271b3bc5815a37f6b887c092090  bfd/hosts/vaxult.h
+9b476271b3bc5815a37f6b887c092090  bfd/hosts/vaxult2.h
+3910013b3b209985ac00a5bf9aa30025  binutils/doc/Makefile.in
+2f00350c423669f530e8bfd9b803b82f  binutils/doc/Makefile.am
+bb3bd7f79534d98aa19558080f7d7076  binutils/doc/binutils.texi
+b7fc916b3fc9d3eae070793c1d3874e5  binutils/doc/fdl.texi
+43ed8e3a234546d5ce6860157063b95d  binutils/doc/addr2line.1
+79e7b9637c214e262553efae369756b6  binutils/doc/ar.1
+77bc68a78f00105f81b4b585bcb56063  binutils/doc/config.texi
+5b45c34fcf847541c0843b7060930847  binutils/doc/cxxfilt.man
+3e50416aa4d669112e3747aa4ea122e6  binutils/doc/dlltool.1
+6a81ab2d9d88b0391cd7455b4f7f9355  binutils/doc/nlmconv.1
+6b460bd12e8875c5fae60e870540b1ce  binutils/doc/nm.1
+f29ce601548709fb320419e469353590  binutils/doc/objcopy.1
+6eaca97454d05c625fd993a92eb3c4db  binutils/doc/objdump.1
+754967c6209c1f6e034f673e1cc13c4c  binutils/doc/ranlib.1
+c51dc20e238195511d7f3cfe0a863309  binutils/doc/readelf.1
+db18b32ff70af16e85e7e3015c33f1c6  binutils/doc/size.1
+0ae3fe2e049edfa7d64c02a38892d8ab  binutils/doc/strings.1
+018fae411b333eb17afb44f340429013  binutils/doc/strip.1
+4215ac6e611f9076ad8b9679191ba4d8  binutils/doc/windres.1
+2564c117b9d17ed0e39b4824c64ed26b  binutils/doc/binutils.info
+e0a549cb3052bac8f0d66758e366534f  binutils/po/fr.gmo
+98ae62babd81dad7c71e949296393f5d  binutils/po/Make-in
+fdbe83413a5dfe7cb8d4d4195945f7a2  binutils/po/POTFILES.in
+ac66aa10d1b73afac86d10f49bf5bc09  binutils/po/binutils.pot
+7f9589f77892d3ceee6117d5fdeb813a  binutils/po/da.po
+5d5364dbcdb2043e2cada58da84a559c  binutils/po/es.po
+8c28f2f5bd3ed51fd54793f52fae88a7  binutils/po/fi.po
+6efc5e63d2ea786482fc028b7529180e  binutils/po/fr.po
+008a22c13bf680dd75e6fba7d1e879bf  binutils/po/ja.po
+048a28aff20f21840e59478819f311cf  binutils/po/ro.po
+5ca832da46c2f95a7b52b7e6ae171209  binutils/po/ru.po
+983ad2a28db3de55195aeb8680aff682  binutils/po/rw.po
+a5526def29e5d565ca66ad7f70600025  binutils/po/sv.po
+9d11cf1296c72bb6a1189555440ffdef  binutils/po/tr.po
+87235eb4e43b0c8f6e69605d0ca869d2  binutils/po/vi.po
+9a88c63202a227e80843a311c9520fad  binutils/po/zh_CN.po
+fc31799334330cf7596de77081fcc3dd  binutils/po/zh_TW.po
+60d5ae172058ca61166b4b6196ef82d7  binutils/po/da.gmo
+f8cc54e74fbefa64ff13e1aac6ac2a7b  binutils/po/es.gmo
+ad82966809887e61b5c2fddeef3f414b  binutils/po/fi.gmo
+f13ecc383d919e5592ee07422c44f402  binutils/po/vi.gmo
+26b4f4f699d635fad6df05148dd68cb5  binutils/po/ja.gmo
+7d9d0cc039b5e637e9203e0c1fe8a282  binutils/po/ro.gmo
+94a5c2444cbc16d9036af22b4ac5fd8f  binutils/po/ru.gmo
+574d299b75e61be9de2b50beda9a138a  binutils/po/rw.gmo
+997254756ea84e1f5f40510d7b1d5a18  binutils/po/sv.gmo
+895352681d4358a82bacec4e25a00e70  binutils/po/tr.gmo
+4c57a9a18cfc80f61d50b29eb703d561  binutils/po/zh_CN.gmo
+d66dc645567221704d9a96af2951ec0f  binutils/po/zh_TW.gmo
+f306733ad3058e71a5f7c7e649b5082e  binutils/BRANCHES
+4375cb03cdd5809dacc6f09086642e9d  binutils/ChangeLog
+75f03b546abf41db936b3eae9ee79760  binutils/ChangeLog-0001
+ac9c338a84bd8da1d3be610a39a75c38  binutils/ChangeLog-0203
+e3940b38e6baee310a1565e098d2d9ba  binutils/ChangeLog-2004
+1370cb8435695cc4e035b3b9b3256455  binutils/ChangeLog-2005
+3803ba47ff17cbd2c60e0d28334998f8  binutils/ChangeLog-9197
+aba8ead8b90f015b862015d49357b149  binutils/ChangeLog-9899
+970e753cd85e39f44379354255884fb3  binutils/MAINTAINERS
+f8472e6cee9a4380bc097552832883d0  binutils/Makefile.am
+4dd46ae14ea0827bfa315b59fc7b7b54  binutils/Makefile.in
+882a0c532c8943d11574405540144775  binutils/NEWS
+4f7b848d86b0c12a9d8706d0f593b777  binutils/README
+61bf8b84a0ccfeecab43057956f3b13a  binutils/acinclude.m4
+3efb1cd549fbe885177e7733cfee6632  binutils/aclocal.m4
+05304a7a8cf6b8a6a600bac4ffe29251  binutils/addr2line.c
+9b90a88902330428e4daca636b31a43a  binutils/ar.c
+e0c546f9f48ab5a2ad1940595839285e  binutils/arlex.l
+e2f56bc12b67cd871ed802d2404c4959  binutils/arparse.y
+8b4e57004bb0ae8490069beff1167b70  binutils/arsup.c
+cf09d232454a9fd8c6b7dcb1057e3355  binutils/arsup.h
+8ab16b133069a02a1577c2fe681d926d  binutils/binemul.c
+09d77f5a8544b54233321f7d345ed08c  binutils/binemul.h
+5c4c0c880c636432eb53c7b96deae11d  binutils/bucomm.c
+69960ad620c32519792e774279b1d29a  binutils/bucomm.h
+a470eb6ea8bba774601955ca43cabe69  binutils/budbg.h
+3c5606a8a868494f0f8bce660a83a7e1  binutils/budemang.c
+7ea48a604ce7e3b72bc2d35329cb7b94  binutils/budemang.h
+614ea2b003fd9d6090052a807c18e049  binutils/coffdump.c
+45b411bed26954f7dbb6fd106a4f6479  binutils/coffgrok.c
+aa0e80cd764ff32b1def7ee2a3c1c9a6  binutils/coffgrok.h
+5a1edae78793ecc35b50b7f2e853b4b4  binutils/config.in
+459a477f224c841e46e7e194ec6fbbdd  binutils/configure
+0df24a539b5dcfb1c9b147d28b80e05d  binutils/configure.com
+ffe7af184ea590dab6788f54245e0847  binutils/configure.in
+31b137abf2f0d1f8149c694f849be345  binutils/configure.tgt
+e8781b63656faae525d6b51507dc325f  binutils/cxxfilt.c
+144037806716860bded26ce000c47cc1  binutils/debug.c
+a554620c04450eb4527aa56a8c767f52  binutils/debug.h
+f862e5f4dca842d434870347fa62a9f2  binutils/deflex.l
+c76f6d94fc272d19b29cb66c7c1fcac6  binutils/defparse.y
+6a1aa45234cb503771f22ae15efc0f2c  binutils/dep-in.sed
+af9247ddfac639f8db766d0c9c485535  binutils/dlltool.c
+342527df446cd1dd74f0f07f77672248  binutils/dlltool.h
+1a467d1779f880d50816e8390a0cb41d  binutils/dllwrap.c
+c82f22b3e15d811b30be91d194255997  binutils/dwarf.c
+3e3068ae41f17a039ca8e9f93f3a2d07  binutils/dwarf.h
+e038a4f403f5de6db74a4573cda6507b  binutils/emul_aix.c
+8d7128e97bb42a0b0c43d45d460730cc  binutils/emul_vanilla.c
+7f8f6c0e8f8009fd308b871198240973  binutils/filemode.c
+493faf3ce6299abd37fb468df5014004  binutils/ieee.c
+4562e9da8763ac94007bb90a88fe6b5c  binutils/is-ranlib.c
+7673b643179bb75771f9d54f3b8ab645  binutils/is-strip.c
+fb2055ce0e0f73de2e8df95cc40641d9  binutils/makefile.vms-in
+eccfc48af7429465a3dbc65efb6db230  binutils/maybe-ranlib.c
+f7388f22ed8b92281851fbf9d4eae82c  binutils/maybe-strip.c
+7c9a32fb8d183878da248ec6e02201af  binutils/nlmconv.c
+578a5d2e5d5d8d897e460b804429b789  binutils/nlmconv.h
+19adb8f3951a273f1a5bf05b913dc197  binutils/nlmheader.y
+eb705296435590ad229b124d66b38437  binutils/nm.c
+d94be89b47c5fd50734fc438a55263d1  binutils/not-ranlib.c
+49e694d1577f2a8f2da1eeb56a4f7703  binutils/not-strip.c
+7083c5ac6ce409df7feadfdfaf772408  binutils/objcopy.c
+e5ee68c7adb5a63e904674e9aaf5cd93  binutils/objdump.c
+6c6f3e40abd7b6dac37feddb81994607  binutils/prdbg.c
+fab49df49baf0b8e3822002f4ab8ab48  binutils/ranlib.sh
+04f0b135b1ec68c1cc7d40f48ba2d6af  binutils/rclex.l
+b10d07611fd2b92aaaee84b9382489a3  binutils/rcparse.y
+2c00d6f424ec66f1d3a1a241bcc42469  binutils/rdcoff.c
+a7e5dbf866e59a7eb96fc6b235050db5  binutils/rddbg.c
+1b8099d484bc8ccb4827379a85005389  binutils/readelf.c
+f42ea5fec948fe197cdc623e81ef439b  binutils/rename.c
+e7b891781a2601e1d536d9acc61f27ab  binutils/resbin.c
+26dcc81ecb72c1b90fc0b2a9662c3b14  binutils/rescoff.c
+eb544eaf27ee67f0ead7e1b22571baea  binutils/resrc.c
+d14d17a36a51b565a41320dbc5b5e568  binutils/resres.c
+b62e62e9c7d29e37c5968c1a005f3eae  binutils/sanity.sh
+ad4bc5065a50786b824533d35ce904f4  binutils/size.c
+d5b29caed59f1dbef861922e44284f3a  binutils/srconv.c
+89ae9fdfb0ad916eba9e57aa94d395e5  binutils/stabs.c
+1ded054093de910d9786c62bc4fe8cc6  binutils/stamp-h.in
+8e51491d856873ebea0972e52caa5a19  binutils/strings.c
+26f63321129f010ab9713db1cb9e6b80  binutils/sysdump.c
+e30b25f118d0297c5e59fd938cbd2ca4  binutils/sysinfo.y
+822e117bc4217be367736981a1925dec  binutils/syslex.l
+b3669a390c553395b6151cf5173663dd  binutils/sysroff.info
+b137e8e65236451ab85d18961b459da7  binutils/unwind-ia64.c
+91e8f703439c5906c1605abd14d01038  binutils/unwind-ia64.h
+a91c9c1de66922da28bf20152d1921f0  binutils/version.c
+29c68582f20da03edb31c94407f2f220  binutils/windres.c
+e1e38d9a7a5f53f7494e69ff775fe6f9  binutils/windres.h
+145bb21db1afb5af00da48774e502f51  binutils/winduni.c
+ad59342576ac3438fcb73653d89dcd05  binutils/winduni.h
+84358a8a7fa17637fef0090b38166a2c  binutils/wrstabs.c
+8e5c9079f46f332db8bbe679b64c878b  binutils/testsuite/binutils-all/hppa/addendbug.s
+d91ecc8b2ba6965842cf206d8144c3e1  binutils/testsuite/binutils-all/hppa/freg.s
+f497272a7e636abec8c5f1104c060aec  binutils/testsuite/binutils-all/hppa/objdump.exp
+bb2155ab366b8194af6209ecf8ae5d21  binutils/testsuite/binutils-all/m68k/objdump.exp
+170803871c34be39b32958baccaba4b4  binutils/testsuite/binutils-all/m68k/movem.s
+aa7cb333b47f17c932b8e0a902de43ba  binutils/testsuite/binutils-all/alias.def
+ad63a61601f2bae988e93bfce5419f60  binutils/testsuite/binutils-all/ar.exp
+34d0ab842ffa4318e8cbe2bba4c565dd  binutils/testsuite/binutils-all/bintest.s
+9eec489c7f9279f6108300de50d0732e  binutils/testsuite/binutils-all/dlltool.exp
+1f3298e434f53fee397ccdccf71a744f  binutils/testsuite/binutils-all/fastcall.def
+747997e982ce46f0e9eb7cff2094b920  binutils/testsuite/binutils-all/group.s
+4a62975b0bc7a2cacc7267c73027a6b5  binutils/testsuite/binutils-all/link-order.s
+98b44c2af57bef71c487a48cc37cf1b4  binutils/testsuite/binutils-all/nm.exp
+5cbe1f45e6039ceced65d87d87c83712  binutils/testsuite/binutils-all/objcopy.exp
+6f4440889a179bb9620681e7be958864  binutils/testsuite/binutils-all/objdump.exp
+1c239b762260398798d9dee7b1621c01  binutils/testsuite/binutils-all/readelf.exp
+5e74045f7ec0119e86dc43c1fb75531b  binutils/testsuite/binutils-all/readelf.h
+21cb9025a426c8a27de071549d4ef28d  binutils/testsuite/binutils-all/readelf.r
+db24a07247dc8cd58f7d1987a549d485  binutils/testsuite/binutils-all/readelf.r-64
+f15d0d5891898111d178597dd61542ad  binutils/testsuite/binutils-all/readelf.s
+affe0898106440ea3eb943b6e78f6884  binutils/testsuite/binutils-all/readelf.s-64
+a3978c8fb86bb0021e3ac5bea22c9c92  binutils/testsuite/binutils-all/readelf.ss
+22c83167f1761586e80d622551da44d3  binutils/testsuite/binutils-all/readelf.ss-64
+0041be263f3310cb140c3e9a3f124c0a  binutils/testsuite/binutils-all/readelf.ss-mips
+976cf629e0a7a4f2e8d9a6ff5c747474  binutils/testsuite/binutils-all/readelf.ss-tmips
+a8357b6bc4efb7536566585b3efaad8e  binutils/testsuite/binutils-all/size.exp
+ceb92b0ac37d5d22d79f180de017e262  binutils/testsuite/binutils-all/testprog.c
+96a0eba027bdbce19f3d3e1481212e25  binutils/testsuite/binutils-all/unknown.s
+d9e2cf9793263ff37e8d6c960b280e3b  binutils/testsuite/binutils-all/vax/entrymask.s
+b46a72a6a638f14720f5361303d96605  binutils/testsuite/binutils-all/vax/objdump.exp
+7491a51f44f5a1850c80fbd6b4f2793f  binutils/testsuite/binutils-all/windres/bmp1.bmp
+ef379e3a5ba6db06085b9a5dbfba9ff6  binutils/testsuite/binutils-all/windres/README
+d5611fb4c5b61e2fe34951ff33fb8418  binutils/testsuite/binutils-all/windres/bmpalign.rc
+e2852a0b6c605f12dedca9103d1c3330  binutils/testsuite/binutils-all/windres/bmpalign.rsd
+c9c4373f416e2d2321e55e88e7de75d8  binutils/testsuite/binutils-all/windres/capstyle.rc
+2cbe0a310f92d1c5c565041be2f5afab  binutils/testsuite/binutils-all/windres/capstyle.rsd
+797b931bd8778c2130cda9fc846bccca  binutils/testsuite/binutils-all/windres/checkbox.rc
+b57be16dc0288e8c81246d1e002b580f  binutils/testsuite/binutils-all/windres/checkbox.rsd
+16dd4d1dd29fc42f543163e45bbe9da3  binutils/testsuite/binutils-all/windres/combobox.rc
+db15330881f47c75db87a417b603999d  binutils/testsuite/binutils-all/windres/combobox.rsd
+ac38823599885e755f2487efa5e214f3  binutils/testsuite/binutils-all/windres/deflang.rc
+ec150037bb58aed9e172b35e56641493  binutils/testsuite/binutils-all/windres/deflang.rsd
+5e29fa118e3e03e87d839cd18fa13f66  binutils/testsuite/binutils-all/windres/dialog0.rc
+ec150037bb58aed9e172b35e56641493  binutils/testsuite/binutils-all/windres/dialog0.rsd
+ac7fafe088ed3f14887a21e8f6c3022e  binutils/testsuite/binutils-all/windres/dialog1.rc
+ec150037bb58aed9e172b35e56641493  binutils/testsuite/binutils-all/windres/dialog1.rsd
+62158f4725046ca58344402cbba883b2  binutils/testsuite/binutils-all/windres/dialogid.rc
+3c69213ae01838d6b8403f4325b0cb0f  binutils/testsuite/binutils-all/windres/dialogid.rsd
+c3efb314b67227f2ae24c087c3b22716  binutils/testsuite/binutils-all/windres/dialogsignature.rc
+99d0d7339a83b8e7bc1442ad005028e3  binutils/testsuite/binutils-all/windres/dialogsignature.rsd
+bdfda752dd00993588658c343d5db784  binutils/testsuite/binutils-all/windres/dlgfont.rc
+44ded16fd8aa5d243d77021e0c63ee5c  binutils/testsuite/binutils-all/windres/dlgfont.rsd
+cf3cf5daf8d67b4232d6609469405d0a  binutils/testsuite/binutils-all/windres/edittext.rc
+25b9856dd7d85107e7aef77431530639  binutils/testsuite/binutils-all/windres/edittext.rsd
+bd13c4e0cc1c8cf49e20f0f62a5d2ce0  binutils/testsuite/binutils-all/windres/escapea.rc
+75762cb5686cfca0a273cd77d6034a3f  binutils/testsuite/binutils-all/windres/escapea.rsd
+5bb46a57c7767b1f24fe00c394f5288a  binutils/testsuite/binutils-all/windres/escapex-2.rc
+6bec6d3471e372d9a3f93a14a63639e7  binutils/testsuite/binutils-all/windres/escapex-2.rsd
+d89135fb6f7b032a74a47b697e3cea11  binutils/testsuite/binutils-all/windres/escapex.rc
+1abf5fdcd19714aa098f988aba7ff124  binutils/testsuite/binutils-all/windres/escapex.rsd
+c6415e3e22d2e645050ff0e0b86f7c12  binutils/testsuite/binutils-all/windres/lang.rc
+9b5e9e1fed319016623963a63e173904  binutils/testsuite/binutils-all/windres/lang.rsd
+65492fa41b4505b7109fe11885084560  binutils/testsuite/binutils-all/windres/listbox.rc
+ffc53241335562ef778e175ba35ddb4e  binutils/testsuite/binutils-all/windres/listbox.rsd
+1a4df51523de13412b2f3a02b48d2197  binutils/testsuite/binutils-all/windres/msupdate
+ac38823599885e755f2487efa5e214f3  binutils/testsuite/binutils-all/windres/nocaption.rc
+ec150037bb58aed9e172b35e56641493  binutils/testsuite/binutils-all/windres/nocaption.rsd
+c895fab04cbfecb4fdb0479474afa20b  binutils/testsuite/binutils-all/windres/printstyle.rc
+c9677c01c151e304240fc99f06ef71c2  binutils/testsuite/binutils-all/windres/printstyle.rsd
+b538b353dad0e50d7daec45b6014a7dc  binutils/testsuite/binutils-all/windres/quoteclass.rc
+c39f7a75add2211c8b8b16eaebb95c64  binutils/testsuite/binutils-all/windres/scrollbar.rc
+fce7c71178868b81c2cf1b52493ad277  binutils/testsuite/binutils-all/windres/scrollbar.rsd
+1f7bc9a6f7a05e70001fc557f9cdf976  binutils/testsuite/binutils-all/windres/strtab1.rc
+453c4b4299fb6238d70482f45bd5acae  binutils/testsuite/binutils-all/windres/strtab1.rsd
+a9d96ba138857d78e87ecb5facd8e77c  binutils/testsuite/binutils-all/windres/sublang.rc
+ec150037bb58aed9e172b35e56641493  binutils/testsuite/binutils-all/windres/sublang.rsd
+c53b74f53a828fadc157920b8e0ec1d1  binutils/testsuite/binutils-all/windres/windres.exp
+886bac362606730faa424c8e83c5938b  binutils/testsuite/ChangeLog
+5f4416ae47c627699d2fedb9f71be354  binutils/testsuite/ChangeLog-9303
+57b1769072150f010b68defe11fa004f  binutils/testsuite/config/default.exp
+332890f8e08b7aa8c60bb35f6065c211  binutils/testsuite/config/hppa.sed
+756a9d4483eabfdfc42eb5530c6722c0  binutils/testsuite/lib/utils-lib.exp
+0f98691d6c9a354b26e5caae6fa5b6c8  binutils/arparse.c
+f07de6d4d364fb22814574df3cfba7c4  binutils/arlex.c
+02ed674f97a3f986344616f7d79efaba  binutils/arparse.h
+55c76cb485dccf812a35931f9a402d34  binutils/deflex.c
+de95c99dab0c7b97171d19969ee0034b  binutils/defparse.c
+c1c8676098a717164c77db011df135fc  binutils/defparse.h
+461e274e0bbd0b9555919086b0c38116  binutils/nlmheader.c
+cb9f4478502bb5196f6ef856882664c7  binutils/nlmheader.h
+b9687a873da7a4be6b077f883e9e2ec7  binutils/rclex.c
+5d29cd675f706725b8e818df07342ee1  binutils/rcparse.c
+7caaee4d6f53797711c11e7213c52a73  binutils/rcparse.h
+c48ce40b2d82d4012441616e2e158f6a  binutils/sysinfo.c
+5e2841d7eff338727f4a0067f68a436c  binutils/sysinfo.h
+f88669d802cff8f082b8f3ca2d586a10  binutils/syslex.c
+bfe9789ba49fc8188e8e3c30bb46156d  config/ChangeLog
+6c7b0890dc93bdd97ec3e90d8436b384  config/acinclude.m4
+f10425934bef42413abeec446c3e4bf6  config/acx.m4
+04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
+1eeb26bed6580aba361773b7a17ee515  config/depstand.m4
+042203b305962ba9a8f8474ef80edeee  config/enable.m4
+ed78e916ef1ee530d9e2f35765cbebd8  config/gettext-sister.m4
+2056dbab474e474ab2ae01a42ad5359a  config/gettext.m4
+29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
+54a64f54056550cf38cb0bf9f2388ab0  config/gxx-include-dir.m4
+998940a8ee25ca89805ed7da63536782  config/iconv.m4
+7cdde9f19fc614304e49342c660e2d47  config/intdiv0.m4
+e32906a3177f3b368bcd56f9e86a620c  config/inttypes-pri.m4
+b17ad59a69316040fae6c3b09187bcbc  config/inttypes.m4
+0b63117973333c343e0d0819012b8187  config/inttypes_h.m4
+db111161c56fa9d53a03abfb188ad1d0  config/lcmessage.m4
+aee531078fda99d1e3bbdf408b6c734d  config/lead-dot.m4
+77931c860806547ce9fc56097a731c6f  config/lib-ld.m4
+50120e7fff340d87578219756e55a5e3  config/lib-link.m4
+4455537cdae70977a1283180062a2d8d  config/lib-prefix.m4
+9b65dc7f50a7134932aa278ac0378703  config/mh-armpic
+7b266c44c8a74cfd3aa47c7408b1d9d5  config/mh-cxux
+85f96b330d9ccaefa3b09568acdae202  config/mh-cygwin
+1a368defd90f5893cad171786ee20569  config/mh-decstation
+8b594c219d32fc33f367d70ea30239a1  config/mh-dgux386
+625bacc09b9992290d94831bd7506bd0  config/mh-djgpp
+9b65dc7f50a7134932aa278ac0378703  config/mh-elfalphapic
+9b65dc7f50a7134932aa278ac0378703  config/mh-i370pic
+740855ebe34cb2d01fba1f1bcb4264cf  config/mh-ia64pic
+9240a2b84d379e3feff49d8311072dc7  config/mh-interix
+4025142ef79311b861a05eed3e417a4a  config/mh-lynxrs6k
+740855ebe34cb2d01fba1f1bcb4264cf  config/mh-m68kpic
+1970cc16887b91d667b9bbfb0f6e67af  config/mh-ncr3000
+fb9d7448a6dab87d4da003658fb4d66d  config/mh-necv4
+9b65dc7f50a7134932aa278ac0378703  config/mh-papic
+db64ccb63ea2f0efe9619297e664c2f9  config/mh-ppc-aix
+0780f1d062d01dc31050fc210ed3102f  config/mh-ppc-darwin
+9b65dc7f50a7134932aa278ac0378703  config/mh-ppcpic
+740855ebe34cb2d01fba1f1bcb4264cf  config/mh-s390pic
+ecf7a936c35e3c5a0e8d2b0721243b85  config/mh-sco
+e4353fd5127f79d601d85fde3925ac76  config/mh-solaris
+fa84a282ce7cd6876d1eac368a31a368  config/mh-sparcpic
+2415a4da9726792701f226bdb0e5ac3f  config/mh-sysv4
+2415a4da9726792701f226bdb0e5ac3f  config/mh-sysv5
+84eaf9ea2c79436ff904518a6b7dc661  config/mh-x86omitfp
+740855ebe34cb2d01fba1f1bcb4264cf  config/mh-x86pic
+3755b5b077053b5de54ff0f781ca9295  config/mt-alphaieee
+96289d06809692c31d71e69c4bedb6d7  config/mt-d30v
+413a76ab666084f232f2c948b07d75ba  config/mt-gnu
+2067ce86494ccb89791fe169eee8c198  config/mt-netware
+5aa8f75c6588d513ce199e2e44c206e2  config/mt-ospace
+9c67d61b28da389337cfaba76ac581ee  config/mt-v810
+12b3030d3d59526c374c15af4f5944dd  config/mt-wince
+120ec56e3aa27739a2945bc1c8a2530a  config/nls.m4
+2cedb92f87bc13dc7e11716f651f405d  config/no-executables.m4
+08ac6e38b61b5cee2fa4129284da8fb9  config/po.m4
+d3cecf02bb97035177818aefbb0e0833  config/progtest.m4
+286ddc45eed272d5229e175ff5df1f5e  config/stdint.m4
+761497fd3445beb86a90919955d5aa20  config/stdint_h.m4
+67dc2875f39ab22c6b68dc6bd6862c53  config/tls.m4
+5e1e75893989d0ae3c0452451cf80280  config/uintmax_t.m4
+6b1c349fb182e74fbc464c50c88fe2ee  config/ulonglong.m4
+cfd07f1c037572cf40f78bdc26ed29dc  config/warnings.m4
+289aa7aa739c407898a16a6c266625ab  config-ml.in
+ef6ea4217dbbf51cf594db94ba7a07c7  config.guess
+873627944bd05f15f3ff5a07f3a217b9  config.sub
+69bb4aa4815ceed20504ca9f610686a0  configure
+369ad8e2bdc4f5a936a5064a0d4a973d  configure.in
+aed3cdd927f45b7aea7ad96dfaae9c86  cpu/ChangeLog
+473129522329e6aef9e6ae794e6397b0  cpu/cris.cpu
+005e454ad9849607afaccafcca0d4dbd  cpu/frv.cpu
+4ab6dee631a895a314aa0bf32acd074e  cpu/frv.opc
+ef23cb986d4e6f786a8ffd8b18ce8c47  cpu/iq10.cpu
+ecafa63f5cf6d938acad190460781b42  cpu/iq2000.cpu
+0a6ef89c16e2bd4bacaa966133bf27e8  cpu/iq2000.opc
+aba3231757981369645c16f138eef04b  cpu/iq2000m.cpu
+47530300f8c36e871d33b0b26b9c6ef3  cpu/m32c.cpu
+0fda14a36476b33da8112aaa85199b3c  cpu/m32c.opc
+250ea03698d526cbef03cafc28c91c9f  cpu/m32r.cpu
+224e824da9a57ace7175208f634c453f  cpu/m32r.opc
+686c9c02d898bf98c6611f7e56492b5d  cpu/mt.cpu
+997f0dc34d342e43bea21bd3523726a3  cpu/mt.opc
+6223323b4d7941e02a2db0ff3d53f113  cpu/sh.cpu
+8d9afdb92a2d3976d1f88331882c74ee  cpu/sh.opc
+f2fcc6988827100b64ca6e537debb010  cpu/sh64-compact.cpu
+d5c0416de002d290c96afd22d997aa3e  cpu/sh64-media.cpu
+13b9b205ba8827e56c216bb76e363359  cpu/simplify.inc
+16cf2d308d70288ec8a805cfd7869e94  cpu/xc16x.cpu
+16cf2d308d70288ec8a805cfd7869e94  cpu/xc16x.opc
+2795c3cf98536c7b4c1f03bb1dc9de0f  etc/Makefile.in
+c325d87840458206fa874f651e4ac77f  etc/configure
+63ff1cf7937607f0ef7a2e254aa83757  etc/configure.in
+52cf4e0e3d956d5de7f46518d2618035  etc/standards.texi
+93a1c838358f13ed5e4bf98d07a173a4  etc/make-stds.texi
+c62062f098f745c7c0cc9f1515f29dd2  etc/standards.info
+41ad927ae6285207ad5ba60aaa68c84e  etc/configure.texi
+cbfc5c1591c16f34e3eb6397afc8aa3f  etc/configure.info
+a20b40a0a5d3282f6a97c627be1e38c6  etc/configbuild.ein
+570746cd93c4dae506cf2a6153a2a1b3  etc/configbuild.fig
+f97ac2d5e05edeb335b73f8b6beef581  etc/configbuild.jin
+b2851bb6d77822adc89ffc6d323b5fea  etc/configbuild.tin
+e67b330b1ad623f1bd3850483cd4666f  etc/configdev.ein
+c1f7c41d3e596256ab5f5f933a66293f  etc/configdev.fig
+8e14386548b8da4c5072aa2abea55886  etc/configdev.jin
+32fc10cbdbf679bd0ffc8857cf069b43  etc/configdev.tin
+97ca8794237456a3774a2d7672b74076  etc/fdl.texi
+f865b04aef031ff484d566d4bef863b7  etc/texi2pod.pl
+8f20244beda86ff67ba915508c95ee70  gas/config/aout_gnu.h
+64710e5961c04fe7de83b9d737ecf2ff  gas/config/atof-ieee.c
+d74dc0d668bed9a38dcc3f6e0ecdf40e  gas/config/atof-vax.c
+2acc8e532072e8cba79f943f8196d452  gas/config/bfin-aux.h
+19b4bb46577470eaef2e2b08859a685e  gas/config/bfin-defs.h
+2508723499ed383571b736705cf80ac5  gas/config/bfin-lex.l
+0f88702d4812f5d79338ce7874392b85  gas/config/bfin-parse.y
+c1d22cf15da3235410e26b3d240bbdc0  gas/config/e-crisaout.c
+82dacf01c8a5f757853262d4f7b23723  gas/config/e-criself.c
+e09fb07c73b2882d89ab660a2775ead4  gas/config/e-i386aout.c
+d18fe3ef1f42bd23ffdb03df61796832  gas/config/e-i386coff.c
+a71ca597f13157c1717e6dc7a365a317  gas/config/e-i386elf.c
+a153ff4dc91266991257426d1a9d7309  gas/config/e-mipsecoff.c
+be51facd59d0de4cc60d8b0a64360795  gas/config/e-mipself.c
+90d0291b18d87b65f946808424e93c92  gas/config/itbl-mips.h
+e12ecb1bd0bdb13b697c51884d0e2d39  gas/config/m68k-parse.h
+6ab2b3a5241216fed607e91002631087  gas/config/m68k-parse.y
+f786962d8ec1cb79e23459393c998871  gas/config/obj-aout.c
+140306d91b523e56fb42d2eb60f92abf  gas/config/obj-aout.h
+02bf6ab350a14d8693a5b83589f58316  gas/config/obj-coff.c
+20453cadb5b9c0be56a5e909c6acfc77  gas/config/obj-coff.h
+7c8ba7ccc5af1aa3aae15f10370b44d8  gas/config/obj-ecoff.c
+357e47da7a885eae138af9a5159ed776  gas/config/obj-ecoff.h
+aac41d99d06a65af4308545f6036dc17  gas/config/obj-elf.c
+810dc2cb59ce64739220708a47de6298  gas/config/obj-elf.h
+2b6908c90b4d8411f3e4247cd0cd28fb  gas/config/obj-evax.c
+a0164a8283fa74e30bc764fc55940db8  gas/config/obj-evax.h
+113fd543edc1a5742880d3103853caea  gas/config/obj-ieee.c
+3f523cb2fd33c56414550f1388924c37  gas/config/obj-ieee.h
+32d6ee58a1474027c5403a0fae7a9ba4  gas/config/obj-multi.c
+18fa759f51a3acc0b9b1111a84d65acc  gas/config/obj-multi.h
+7b5d49f742bbfa5c1015b278100e69b2  gas/config/obj-som.c
+614f8c6bd7b2abb3c4b25e0af4fab063  gas/config/obj-som.h
+f2a70eb6bd26c3f26bb47798dd9872a8  gas/config/tc-alpha.c
+814c7e1c607b8e0100a386ac31b9cc54  gas/config/tc-alpha.h
+d9cec2ee2b1934286aee18cba9b90cea  gas/config/tc-arc.c
+f5fa7dd0999b3165ae86117d9bbe49ee  gas/config/tc-arc.h
+734f90a5fdf641b55043f945776f5273  gas/config/tc-arm.c
+c6957d9ed82c73bc1ea3a10e9b668fd0  gas/config/tc-arm.h
+faed32f3472110ea812f553603d42a98  gas/config/tc-avr.c
+7bf1875bb15c09e6ccf9a2eed3bb6233  gas/config/tc-avr.h
+494ec9cff53c06ae44fe284ad153a82f  gas/config/tc-bfin.c
+89d2a7d5aa8b61f7aae08a8eae60a4f5  gas/config/tc-bfin.h
+c1e326f75fca35e8c8e77e97d65c541b  gas/config/tc-cris.c
+b81b684e50c996c3c5dd3d066c6c38a2  gas/config/tc-cris.h
+e3583a434bdfa324b02274b44f1a2855  gas/config/tc-crx.c
+508bcc2b0aa031f2bedc25b86ea8ed4e  gas/config/tc-crx.h
+878ba651da0c41eba2e28204888ff4d3  gas/config/tc-d10v.c
+515aab4218384d7d8776410278532a99  gas/config/tc-d10v.h
+f6141a95b8934667e3e2e3750088031a  gas/config/tc-d30v.c
+ea1a4833fbef03e6c366a7af5fd6dfcf  gas/config/tc-d30v.h
+18ea7b9f8afa29aed01eec095d503c01  gas/config/tc-dlx.c
+3f2470423862c3113f67a8cad8add4d7  gas/config/tc-dlx.h
+0e686bf4deb2cda5b8987a49ef0e0302  gas/config/tc-fr30.c
+601379968e9924e422ed02529f838253  gas/config/tc-fr30.h
+148269d16637bf8267de590a661e1406  gas/config/tc-frv.c
+68b967f9aaa1ed0d70108d3429dc6b64  gas/config/tc-frv.h
+f34381f5e721a8548d077df256b616fe  gas/config/tc-generic.c
+3dac1c9143a75a4091ed15aba200f945  gas/config/tc-generic.h
+3002bb14d2354573aa4998bcfd11b701  gas/config/tc-h8300.c
+fed857c5806652232ed993a1fe145bf3  gas/config/tc-h8300.h
+55cefce9bad1ec803e3277cfd4022563  gas/config/tc-hppa.c
+34483012a08f093848badad48d95a86a  gas/config/tc-hppa.h
+0d5d457a106f6b630b18c03cdf293fa8  gas/config/tc-i370.c
+3bab460a459d861a7fd29ff8a2e3e46d  gas/config/tc-i370.h
+2612c6f26e4e2cd5c8a27036e0922114  gas/config/tc-i386.c
+0e6648f80e2e5bd3921987de465cf19a  gas/config/tc-i386.h
+288fa888b23a4c353de9c6374548f4fc  gas/config/tc-i860.c
+6556c1651d07f6f61c0a830e9f3cef7d  gas/config/tc-i860.h
+e1e1da16ef57ad57aad472afcb75492c  gas/config/tc-i960.c
+fd6192db085e36b8981975d447b0b31d  gas/config/tc-i960.h
+1ef02f09f512d441297b6459391ba56c  gas/config/tc-ia64.c
+bac0a5b9d75e423acaddcb0e130d6d4e  gas/config/tc-ia64.h
+5d7daa03e1048ad2e355393ef01076ca  gas/config/tc-ip2k.c
+8fdb5cc06348566f8bc5fd5199fd0527  gas/config/tc-ip2k.h
+72cffb8f11292736405a7cfbf1a77dd1  gas/config/tc-iq2000.c
+e8e0db458b9f3150a39b536d0146c06a  gas/config/tc-iq2000.h
+28dd905643afc00f1141fb57f2244490  gas/config/tc-m32c.c
+0e72ca2e286f1f7e29046643e0b0c090  gas/config/tc-m32c.h
+0152c26d4e8a0b18ae4582c9f102bdd5  gas/config/tc-m32r.c
+34d22e9b1609c43a91e387eb0ba4f618  gas/config/tc-m32r.h
+cad868100ba996d75f3197d00b531d1e  gas/config/tc-m68851.h
+fc89fe6aef3aa4551fd298ffb1cd4037  gas/config/tc-m68hc11.c
+d3004c912ee44118ba2a33ff88520d33  gas/config/tc-m68hc11.h
+a3bf7aedba52073414a5d47ef21b47c6  gas/config/tc-m68k.c
+032ee21e99b3ab0eca688ada18d32897  gas/config/tc-m68k.h
+c1a8355d0c1dfb4c08c0bb8f9002cd9c  gas/config/tc-maxq.c
+2ec049819fc4ad93e5894f5c0b6627a2  gas/config/tc-maxq.h
+f3363191d5f06a520c9b5f571c132511  gas/config/tc-mcore.c
+b4662179f03bc4eb213717ea8ea3104a  gas/config/tc-mcore.h
+f3a06495e5516b805f01be2efae26a8c  gas/config/tc-mips.c
+a0e9da3ba1e3cb992734a70991cf8a46  gas/config/tc-mips.h
+341f0cc3a990b895ea6840a1987f053b  gas/config/tc-mmix.c
+87778a0b24c7e9f51b978469e23026cd  gas/config/tc-mmix.h
+fc80b2409c10500e1481169bbf15a0d6  gas/config/tc-mn10200.c
+30749ad6310c0a69648d731d0da0b543  gas/config/tc-mn10200.h
+bb27d88c959c2be2b0b43875cee10d6f  gas/config/tc-mn10300.c
+ad1f1c6abca49960e7647d4fec08ddae  gas/config/tc-mn10300.h
+482d12622c672a8284c69c462d4c0d86  gas/config/tc-msp430.c
+d9eefe62a72cc05fe5feb3d83072da57  gas/config/tc-msp430.h
+e560cd1ed235499324c24d0d958d4dbe  gas/config/tc-mt.c
+a3a228bc8b8b0d137988f8aa0330cd95  gas/config/tc-mt.h
+06e4502fdda25fd1e546495f39b361cf  gas/config/tc-ns32k.c
+178253d3d50e918bf9c74383b440b26a  gas/config/tc-ns32k.h
+a256b2bc482ac96c33195e0d4e13809d  gas/config/tc-openrisc.c
+9b95e97293983052f2814e9fe0dbd8d7  gas/config/tc-openrisc.h
+15aaa41ae904acd4802c7612c04ab0da  gas/config/tc-or32.c
+b27a6682847621b5028f9312785023ad  gas/config/tc-or32.h
+985f89a08c0ea1db3a8f67180f84d33e  gas/config/tc-pdp11.c
+e68dd4de49553ca8673afdaf54012099  gas/config/tc-pdp11.h
+445a0bab3afbca1cccf4a444d4b8d230  gas/config/tc-pj.c
+0dd0e45527a20638a975d45cbb7d02f0  gas/config/tc-pj.h
+8995414d3e84a6cdc0fe5fc3e3a702e9  gas/config/tc-ppc.c
+a50f9be45e61bf08631062ce05baff46  gas/config/tc-ppc.h
+159081f1a3b51bb93ccad67749b85a8f  gas/config/tc-s390.c
+53b2e0c94c76765c9f5ba21b13ac178b  gas/config/tc-s390.h
+d4af4bb86ed1dc100d9ace2bdf4dbfc7  gas/config/tc-sh.c
+a620abb5441c284aaee57413e58f3a30  gas/config/tc-sh.h
+7ce3ed46171c0814f07f2ce69141ec23  gas/config/tc-sh64.c
+b6897de316bd8cfb4f98c7d4b20a488b  gas/config/tc-sh64.h
+f351ea138c8dcb8e4e6322503db6d426  gas/config/tc-sparc.c
+7815312ec5149465e5d66f721eedc9dd  gas/config/tc-sparc.h
+da13fc485db16fdfa861bf3be6efa7b6  gas/config/tc-tic30.c
+e6204e729f96d4a795ef7a52cfc3a66e  gas/config/tc-tic30.h
+c1404ae4f28579cd47bc58ca46deed55  gas/config/tc-tic4x.c
+c96f9b362b449e7fedc7e0ed51389732  gas/config/tc-tic4x.h
+ed95eb68525381b825381086842f8d67  gas/config/tc-tic54x.c
+d8a0b393deb0d412dd79c383093dc6cc  gas/config/tc-tic54x.h
+2df9b55d277720e6da3dcfff6b40ffd9  gas/config/tc-v850.c
+2e75d26ee6ecbeacdc2d8eb6dd07f4db  gas/config/tc-v850.h
+479642deceb08296bc9246cdf0d3e951  gas/config/tc-vax.c
+d1372dcb0ae284e159fb4d691eda209e  gas/config/tc-vax.h
+c25a666615abb537927205b84f410380  gas/config/tc-xc16x.c
+5774e9862a821c7c25343bf36f50e96f  gas/config/tc-xc16x.h
+839c956ad0baa78692b9379609c1754a  gas/config/tc-xstormy16.c
+ab357b85f8b93a9b8ccab26e67cdf283  gas/config/tc-xstormy16.h
+c7f16729e19498f3791ba42d906673a0  gas/config/tc-xtensa.c
+3aa58cfde5e790f86d15c97910a887f7  gas/config/tc-xtensa.h
+e317bf06a48ccd1f97bd6f16a66bdec6  gas/config/tc-z80.c
+d8fd3b96d44f8dbe30a85418a66d1a9a  gas/config/tc-z80.h
+4e5bbab685461876c5614a98ad2c2cdb  gas/config/tc-z8k.c
+cef9c00a52255f641b01a39776771c00  gas/config/tc-z8k.h
+066fd89ca112c4cafd7dd13b4ea839be  gas/config/te-386bsd.h
+24321a594216c63ab30682628854e075  gas/config/te-aix5.h
+7e8e5984e74c42be6a39d961cbcd6cb5  gas/config/te-armeabi.h
+0140a9073b6cd8a367674a47b5dffacc  gas/config/te-armlinuxeabi.h
+fbce03dceb71bf68d8c872bbb69b35aa  gas/config/te-dynix.h
+7e2acd95eb4766b4530cd90d5da12e11  gas/config/te-epoc-pe.h
+c4ace4d5efc86761a424dd550d13a70a  gas/config/te-freebsd.h
+3a2695bef98ac2b2b297e89de3540c0d  gas/config/te-generic.h
+49b4f6e783373d7e9de28fbe93ee5e3f  gas/config/te-gnu.h
+9c4b72d5db2a3b58fe216e98e5d1604e  gas/config/te-go32.h
+325c7dc8104a1bf881085dce400a5e79  gas/config/te-hppa.h
+ffe54b5f97c4c93a036fcb434b0e2ce3  gas/config/te-hppa64.h
+8a89d0db3087edfef6adb3d11e461332  gas/config/te-hppalinux64.h
+37ed6767b7669c59a6f01cf229bb2763  gas/config/te-hpux.h
+c5c5a24aae2ba252078a1e9aba6f29dc  gas/config/te-i386aix.h
+4e33b113c26cdd4c00159b55ef97322f  gas/config/te-ia64aix.h
+19b403b208d810d952e172e14e5ccc4d  gas/config/te-interix.h
+34f23f3f6cfe66aa1d6d37a5987e62da  gas/config/te-irix.h
+4cfb2f20ec1301d37e9ff374e46317ce  gas/config/te-linux.h
+0525817b2f140459473072028c30da2b  gas/config/te-lnews.h
+2d77aec1c4985fc5f3a8eee88e95dec7  gas/config/te-lynx.h
+36d49af0e764532aaae5a64d2c046790  gas/config/te-mach.h
+d7cce0d3596d8bc62328ffa4ce77b581  gas/config/te-macos.h
+b2c9bc3efde7498b1be814b46f801b95  gas/config/te-nbsd.h
+42e509551b9c1e76f3a8f4621d2eee03  gas/config/te-nbsd532.h
+a3869b2f7453d11794c9fa52ebeff2aa  gas/config/te-netware.h
+c34e9c2b58482673113e11fd998598c1  gas/config/te-pc532mach.h
+711860d9b5a0fad5854cdaf4a61b3444  gas/config/te-pe.h
+15404dc2297c93d95dfcd49163bc1eea  gas/config/te-psos.h
+0ff6629cbf363fc1b3d16c4ee4877f1c  gas/config/te-riscix.h
+a85c689852a70cdf0ee281f236ab9a84  gas/config/te-sparcaout.h
+fa7b1ac4b0ee7c0364b424ddd5cf9731  gas/config/te-sun3.h
+589c88a6aa89ffe655b1f8924e13bbd6  gas/config/te-svr4.h
+488590cfd9ba69f87ec6c793da6844e5  gas/config/te-symbian.h
+ba8288bdc916801cd5bf284b004ad01c  gas/config/te-tmips.h
+4dc470ba08cdfa1b39099c826fb0206e  gas/config/te-vxworks.h
+5dc896f3c45078f34974fe05fb94ee3e  gas/config/te-wince-pe.h
+44d02519ce59bb2f18cd83043216746d  gas/config/vax-inst.h
+84e27bc11b49fccb64be5dcb214b2a0b  gas/config/xtensa-istack.h
+17bf98d970c06a9b7b66911abbd0524d  gas/config/xtensa-relax.c
+21b467d055366116aa35e9f20ecde9e0  gas/config/xtensa-relax.h
+53db0ab868dc9516af2c5ab97a8450f0  gas/CONTRIBUTORS
+77a30f8e524e777bf2078eb691ef3dd6  gas/COPYING
+0a00b80575f97b1ee994b75af81de752  gas/ChangeLog
+ffefbc0a746d455b0fc30fcb92cf820b  gas/ChangeLog-0001
+fe41799f8e780fb88c14ddd78077c3da  gas/ChangeLog-0203
+7ee4a40be5732a4dc9b8f09dd534dffa  gas/ChangeLog-2004
+867154d1203011aebf564405113b90fb  gas/ChangeLog-2005
+1341d014bf9d648fff92c7815bbc7596  gas/ChangeLog-9295
+2ca0a735423063fa9757a564336be2f4  gas/ChangeLog-9697
+e6aed0ab8c1b1b6bcfdae6d97862b880  gas/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab  gas/MAINTAINERS
+b47e9e48ba1cf2be910d51f93ff35427  gas/Makefile.am
+6400a567e776b233180cfc4ff63319c3  gas/Makefile.in
+a8f0c1168cb8209499aab07865849651  gas/NEWS
+7d90db3f78994d389f96376160c78e79  gas/README
+b366b93ad373c36fe2f7b4675dc75de4  gas/acinclude.m4
+3efb1cd549fbe885177e7733cfee6632  gas/aclocal.m4
+0dbd831c18f19e587f15bda11d740d43  gas/app.c
+ca5651c585d553438b1794c3b449bd60  gas/as.c
+f643fc81655eb988fd4e8cb1aa261f1f  gas/as.h
+5f9b4441921a65895d47a6fc7eaebe6d  gas/asintl.h
+7811e9e3350c755bb147a5bf11cb3e98  gas/atof-generic.c
+28cebd165cd85c26a85c8b3c67b1a411  gas/bignum.h
+19d600a367cf6e05a86d66e0797ce417  gas/bit_fix.h
+030c228019e861aed4b58b1de0bab80e  gas/cgen.c
+54012a1014fa943fe39d64a5f396f66d  gas/cgen.h
+46e30b58c0974a33f2fdf0d58679b573  gas/cond.c
+92c996c05c57a965ef1b7f7f128058e9  gas/config.in
+010469a08bb26e0401108d1d9bbe0c9d  gas/configure
+7e38500bc99eb70d5da2e62f612fa93f  gas/configure.in
+dc51234311f7e7bae5bfca466aee9ec3  gas/configure.tgt
+432f46ca557384a8b9d93b95d326e44c  gas/debug.c
+3913c101bb50a6db9428b8af2fc216a8  gas/dep-in.sed
+b15b9354ab24e80226e9b25801c34220  gas/depend.c
+bbf8fcd2ff2d39935cd2f064ffedce43  gas/dw2gencfi.c
+39ad71bbf291897e4b1d70c4dcbc321a  gas/dw2gencfi.h
+9c9c49076e7fca1fe1e239d73cb5d8bb  gas/dwarf2dbg.c
+fff9df1188596718fa1b22bb3c08f208  gas/dwarf2dbg.h
+1fc7c977d1e83021894cb507ccae7279  gas/ecoff.c
+ee10ef3e25bfa0ce83ebc0aaaf232f26  gas/ecoff.h
+580fbfe0e95672439e9cbcbb2dd72bde  gas/ehopt.c
+d999e563a9502f3ecf8021e50326a40b  gas/emul-target.h
+85295bb843293eeeaa475e108e8ccb3c  gas/emul.h
+4405df155bf2b42d9a8666262c55cf9c  gas/expr.c
+93087b356552c5e1547c3d48ed2ba787  gas/expr.h
+aef653cc4825eba4a7a1870562da64d0  gas/flonum-copy.c
+aefeec509e5e299ce30b2458885d8850  gas/flonum-konst.c
+d035fd3c87ab2f64500bb77ed3522238  gas/flonum-mult.c
+5d6cd4f9452c8d335ecb3483f95441c6  gas/flonum.h
+a799d7d7cc1b9b072bf484c4a05c7056  gas/frags.c
+9db9009ff70779452046e760a07acad0  gas/frags.h
+f728bf7e9df39918cf8c7467d5fa7478  gas/gdbinit.in
+49647904a21f683780d85ed914190662  gas/hash.c
+80e5ce67d7d49ca98b4741c8525334dc  gas/hash.h
+e1d4079fcb92044f7485c8f78c403962  gas/input-file.c
+44365560dc0696c145fd53781e79c37e  gas/input-file.h
+3238468ebe8e3a1ba7884f7944cb7fa0  gas/input-scrub.c
+5a0458ef1d1d5dda1e938f114f231b80  gas/itbl-lex.h
+7c0c3c88a0f8e27256c9ef3ac5c5255e  gas/itbl-lex.l
+3598f0c665b1270067ac6fb8d5543232  gas/itbl-ops.c
+3f52942b01d2c4fce6e71123876f4b51  gas/itbl-ops.h
+327a510074aebc9ee38d0500bcab39c4  gas/itbl-parse.y
+cf263fdaaeada4eaa6ecbc46822176b9  gas/listing.c
+127d5d034e7dce231c4303ff82c32460  gas/listing.h
+537417a7524ff93e1ddf5ebd4713efd8  gas/literal.c
+077ca60d794b2a648a2e60585e430df1  gas/macro.c
+9053fe4089ec157e784e367a811bcc87  gas/macro.h
+4f2262092038f8ea88dd4c7ba617ee4d  gas/messages.c
+0beee2c02d2a1d3818f8c98f24a4398d  gas/obj.h
+66631f882526061934ef43f941688dc7  gas/output-file.c
+b867f7471a40bcb8328afd4e8245b2e3  gas/output-file.h
+65ad5350885966a499743ba97e119024  gas/read.c
+6b17315ea7825553832d904bb149e616  gas/read.h
+b0169355179d6e9b8ee887e42a3a0a7f  gas/sb.c
+a712acfad557c457d5a73b2f28b72d1a  gas/sb.h
+98332336a4b133c84dcab6628e3723b7  gas/stabs.c
+1ded054093de910d9786c62bc4fe8cc6  gas/stamp-h.in
+1be51188134eb3ac3b46e6e033cc61a8  gas/struc-symbol.h
+96c06fd8b38a201e8b4eafd17d870a72  gas/subsegs.c
+9935fd2937450a1817e1182cca52ecad  gas/subsegs.h
+4cf360f1b6b165b4f8d8e81396f0d263  gas/symbols.c
+ad6420efb9aca09ec13a8d9e62c2deb7  gas/symbols.h
+6f2cd0617685ea203402909253df547a  gas/tc.h
+01bfdee4acb7f5c08b9d89d39516e4fc  gas/write.c
+144eb203d59fee5ab564694a03cf63c7  gas/write.h
+d9ed718e279cae794254fc28767108c0  gas/doc/Makefile.in
+a0b613f0b37f836d4b49d9c139f3d9b4  gas/doc/Makefile.am
+7bce96b671d38782da02e1538724031a  gas/doc/all.texi
+cf0c79f07c336c3101cd18e777e4c32a  gas/doc/as.texinfo
+acb8dfdf04d3e75ce6bdd9fecf1f5eda  gas/doc/c-alpha.texi
+72db249bb9089b554ce73a0ab00b87c8  gas/doc/c-arc.texi
+ebb17d096b1c685d7014c5a970bd5caa  gas/doc/c-arm.texi
+0052c52f78ceb98760e6e075500ef965  gas/doc/c-bfin.texi
+f00ca1cf6b33bb6dfad7c339e32be4c6  gas/doc/c-cris.texi
+230f67e9baf6a17234bf29a8f619da00  gas/doc/c-d10v.texi
+670a3dc2d7f147e973d1540d3e02059e  gas/doc/c-d30v.texi
+f0746041b4cbc66d9fc380008766987f  gas/doc/c-h8300.texi
+67f826f553328499417b3bb1ed4a6c15  gas/doc/c-hppa.texi
+737140a2ffd746cdba96fa47fec328a3  gas/doc/c-i370.texi
+35d2696c64b7e5c9f036d4e1ce6a1008  gas/doc/c-i386.texi
+3550182a52f5d17b7a63c6752966c4b7  gas/doc/c-i860.texi
+5840d26779cac7d27ae3c93fcf42c978  gas/doc/c-i960.texi
+8f3ae830e666a10f12d3210c9d840d9b  gas/doc/c-ia64.texi
+59e92dc921764aeb006a8a3a452bbd8f  gas/doc/c-ip2k.texi
+d2a8868e1d665dcd3cb8f93155f09b21  gas/doc/c-m32c.texi
+0360ada6495aa853075410f6af197bbe  gas/doc/c-m32r.texi
+3906f80ed2a2b733ad9bfa2c91409b99  gas/doc/c-m68hc11.texi
+cad203592254ff4d40aef8b5a4d7087a  gas/doc/c-m68k.texi
+6507a80e88faee112820ffedc69adb4d  gas/doc/c-mips.texi
+9925d3e65fa7023642549359a74e3788  gas/doc/c-mmix.texi
+b09eb78598235288deec1cee7d3f0eac  gas/doc/c-msp430.texi
+c949815d3fa65e736e67fc90cfbd5692  gas/doc/c-mt.texi
+d590c5277843c79c1745312de7a68072  gas/doc/c-ns32k.texi
+328c554cc0c0025d4f069106bc0580d7  gas/doc/c-pdp11.texi
+7bac860e4f791adf19b21ac02eaa5db2  gas/doc/c-pj.texi
+e20a72689758749e68fd24b44065fdbe  gas/doc/c-ppc.texi
+3f4e8f510aa9224b0fef966975d5b1e4  gas/doc/c-sh.texi
+974767cbb1d205376ab6621ca417edaf  gas/doc/c-sh64.texi
+d253888b5569ae5d709f712247dc6ec3  gas/doc/c-sparc.texi
+0514cb789995443398eb4b4111a904ef  gas/doc/c-tic54x.texi
+5a67e95080aef92765795966df5293ad  gas/doc/c-v850.texi
+ab16b76d05e1f4b0bbe89cf1441630db  gas/doc/c-vax.texi
+774fd0efa176d3b568dd34e83db7aa4e  gas/doc/c-xc16x.texi
+0a18f7398d4c62ccc8743a717053c1cb  gas/doc/c-xtensa.texi
+38bf447b9a818f15ce40b3f8febb7814  gas/doc/c-z80.texi
+b9417fdfa7182548d363db23e361dd2f  gas/doc/c-z8k.texi
+0e62c14e172a03d7209b8cc7c97e26a4  gas/doc/fdl.texi
+289febda425d8afbd046e348a08dbfff  gas/doc/h8.texi
+23ec9480a5679ce4f59a2aaf7a56626b  gas/doc/internals.texi
+f101f510956e2244bdb9ea69062baa73  gas/doc/as.1
+03369cd4b161870beb4d1d1a1a898ee5  gas/doc/as.info
+b65e11700f46a3e5383b575abb6c1312  gas/doc/gasver.texi
+ce824b6ff19752b4ef5a5f15780298ea  gas/doc/asconfig.texi
+0cd9d6c64888345c94f67f7993f018ac  gas/po/POTFILES.in
+98ae62babd81dad7c71e949296393f5d  gas/po/Make-in
+fa7de4d2fa1bf4dad06b344613ff1d64  gas/po/es.gmo
+ed059e5717c6e63ee14ce930259d0557  gas/po/es.po
+560ff217893c7401bbbcb1285763f956  gas/po/fr.po
+6f3965a9446eba7a5c79eeb238349768  gas/po/gas.pot
+03f9e56c21f35af4de78047a8c1f2c13  gas/po/rw.po
+1c26783b29164a7e4a6cb049c3df9757  gas/po/tr.po
+6a1b5386205385f77c4d664a9e8ecc16  gas/po/fr.gmo
+84abb7448e55371f1d2c6660c2ab2ee3  gas/po/rw.gmo
+cd950a0d08e9bfb823c40d2abefd2921  gas/po/tr.gmo
+d38e4c9dc972ad516087cf19392d2971  gas/testsuite/config/default.exp
+0434724b04358ecabf6f0753cc0932d7  gas/testsuite/ChangeLog
+8f4c98fe241e3d57b357137c666fd4ba  gas/testsuite/ChangeLog-2004
+444eafe82d4d0b3264a408b1fe8b1d2e  gas/testsuite/ChangeLog-2005
+b862a6b63b6b10af8ed8b99f485b131a  gas/testsuite/ChangeLog-9303
+e6c304936e9061331bf04ff66f8c1eaa  gas/testsuite/gas/all/align2.d
+acc0977114e4b9e65b9d2aa95c35ff8f  gas/testsuite/gas/all/align.d
+a60277af402def6d8b222eb7aa29fd72  gas/testsuite/gas/all/align.s
+16604c070ffc1562842c0a67da3fdc4d  gas/testsuite/gas/all/align2.s
+69e2c29fe0d1168c47d1e8b9657659e8  gas/testsuite/gas/all/altmac2.d
+f0cd1747f8e7af29724f1145a83796ed  gas/testsuite/gas/all/altmac2.s
+e305dbfa90f24603b18216c0f3fd2d49  gas/testsuite/gas/all/altmacro.d
+1da520aefd1b26aaf3d59e3d68d4ccf3  gas/testsuite/gas/all/altmacro.s
+dfded27f5745972797ed960a849888ac  gas/testsuite/gas/all/assign-bad.s
+ffec055967c23ae21dba22a6ac5c9e3e  gas/testsuite/gas/all/assign-ok.s
+48cd3944d00ffc414edc8ab100129683  gas/testsuite/gas/all/assign.d
+c70d12a44da637481d77388d379a4f9f  gas/testsuite/gas/all/assign.s
+6fdc3af8b63d5c8dd0a98137215d3753  gas/testsuite/gas/all/cofftag.d
+a18dd1c48d82b4324b3e6fe34ed50dda  gas/testsuite/gas/all/cofftag.s
+7642a824a63aa87c0f0c07ebab2ea9ba  gas/testsuite/gas/all/comment.s
+7bbedc3ae9894c93576fd06f35e70535  gas/testsuite/gas/all/cond.l
+91a7dfff6d9b1fd2354096b767db4cea  gas/testsuite/gas/all/cond.s
+7ec8ad8becdaf04c09bde661a8ae427e  gas/testsuite/gas/all/diff1.s
+3725ec8088e01ec8900ad41fb2295381  gas/testsuite/gas/all/equ-bad.s
+b69cfaf78110599c63010ad6d52e3920  gas/testsuite/gas/all/equ-ok.s
+285b5f9762e337f80994b575f235968b  gas/testsuite/gas/all/equiv1.s
+1170e49707759e59d9d43a91bfaff853  gas/testsuite/gas/all/equiv2.s
+772c9ce372b12eec88e8ed48afa8e095  gas/testsuite/gas/all/eqv-bad.s
+be23e497c6b9c82aa5289a1d42165934  gas/testsuite/gas/all/eqv-ok.s
+174595a7641ae3110964493d3087e8b5  gas/testsuite/gas/all/err-1.s
+40bae500b5de820301091838b2dfaf78  gas/testsuite/gas/all/eval.d
+b0d74a67fa0e0140f0f7a98e8a1a4f49  gas/testsuite/gas/all/eval.s
+32b517988d18eebe13e6c54d2e0feb00  gas/testsuite/gas/all/excl.s
+1e473ef749281964d4b71dfe127a5b69  gas/testsuite/gas/all/fastcall.s
+a3ed4c57221d0e6ae68721825604f04d  gas/testsuite/gas/all/float.s
+c86b9077e248e065c0ccdcf220c5243e  gas/testsuite/gas/all/forward.d
+a228b061c0ecb736bad03c969baa7c26  gas/testsuite/gas/all/forward.s
+d626c057f90edddd7a93e13e3730d7f4  gas/testsuite/gas/all/gas.exp
+1a494ac7af4962f5c8ef55f07a44b017  gas/testsuite/gas/all/incbin.d
+aa088c5c0e59150fbe2283dc31cd8353  gas/testsuite/gas/all/incbin.dat
+3fcc9d1848f57cb6d23cbfe139e2052a  gas/testsuite/gas/all/incbin.s
+ff0067e6fc03e40d69f6d4a3df69c315  gas/testsuite/gas/all/itbl
+5379d515e5629b2d3db01b7d01f73e19  gas/testsuite/gas/all/itbl-test.c
+0a1bc24fd58a8e10476fda0bd5b649ed  gas/testsuite/gas/all/itbl.s
+b61a6aca515ae31b7be7abda0a152bbc  gas/testsuite/gas/all/p1480.s
+c9637636fc150630e2d44c82892f2551  gas/testsuite/gas/all/p2425.s
+20f3d4b257a6efde0445b30b3a02ec98  gas/testsuite/gas/all/quad.d
+94daa7db7daabe1c947773877445172e  gas/testsuite/gas/all/quad.s
+05ad0ca5a64fc9c53152de996bcfb72e  gas/testsuite/gas/all/redef.d
+15dc09b212a01e4b4548748f80ddd95e  gas/testsuite/gas/all/redef.s
+3fd90724c589e390efc701a02af7d3a8  gas/testsuite/gas/all/redef2.d
+b2d210c45393fceb3d931963339d88ff  gas/testsuite/gas/all/redef2.s
+b00ad985925d27790546c006b0636579  gas/testsuite/gas/all/redef3.d
+ffc65f2fa231239465e4f8a7a5f426c3  gas/testsuite/gas/all/redef3.s
+3f3ef7827846424857bf668b4579f90b  gas/testsuite/gas/all/redef4.s
+309d8b7519fa095a1057a32e1947daf7  gas/testsuite/gas/all/redef5.s
+f87cdc714e46c3d392bb5ace50f5089d  gas/testsuite/gas/all/sleb128.d
+18b960297606054a20f63aa891b7e12a  gas/testsuite/gas/all/sleb128.s
+856ac38b9fe37e63d8173f9299961115  gas/testsuite/gas/all/struct.d
+0b2dc0f909d4928a8de943eade54a345  gas/testsuite/gas/all/struct.s
+6203fc4a9d460db12fa2480db20fa83a  gas/testsuite/gas/all/test-example.c
+5d30ba47284ab7227725e257400d4d9e  gas/testsuite/gas/all/test-gen.c
+c306f31d167824da1c6b8a24af1af24e  gas/testsuite/gas/all/warn-1.s
+2cb2ab1bd254a01075f23574bcf76cab  gas/testsuite/gas/all/weakref1.d
+ef8cc1851f31198dd88d6555012abb91  gas/testsuite/gas/all/weakref1.s
+1bfe06f39639f91ea299f15721ff1410  gas/testsuite/gas/all/weakref1g.d
+15be263b669e47327b0ffb9dd01a5001  gas/testsuite/gas/all/weakref1l.d
+d14025c981022e9fab06137c1f3c6cad  gas/testsuite/gas/all/weakref1u.d
+240460ab5e8b7dbfc5d24fcd1d02a76c  gas/testsuite/gas/all/weakref1w.d
+7a2be682df8fc9718f6195658ba1c976  gas/testsuite/gas/all/weakref2.s
+5c3a5451b98a5cfb6c3bec7bc1710139  gas/testsuite/gas/all/weakref3.s
+c244658794f4e2eb27251ec5207b9292  gas/testsuite/gas/all/weakref4.s
+8ba076a868d6d446a4ab1462add54fd3  gas/testsuite/gas/all/x930509.s
+1a8de6cbd6b3c02a2a483c8cd6ce42a7  gas/testsuite/gas/arc/branch.d
+19197f29a6d87e3e78495e7a47ebf496  gas/testsuite/gas/arc/adc.d
+1b06ceb2288c093be970d894568fa5da  gas/testsuite/gas/arc/adc.s
+65084e57125295318062997e920c19af  gas/testsuite/gas/arc/add.d
+75e6baa15e0d53599edfd7ec770375b6  gas/testsuite/gas/arc/add.s
+4927747f607ee7be7bf50e7fd6ef02ee  gas/testsuite/gas/arc/alias.d
+54f01e033f0d248759b8fc6fb71a06db  gas/testsuite/gas/arc/alias.s
+b8a7885db402fc70652f0410a5820d50  gas/testsuite/gas/arc/and.d
+b8fce093a488f7b1c2e6418f7c31c9e3  gas/testsuite/gas/arc/and.s
+161e452c38e82897a52e50c6887e68df  gas/testsuite/gas/arc/arc.exp
+aa32ccad03a6d294726c0e58e6d2250a  gas/testsuite/gas/arc/asl.d
+af955c8cf38c553fa4221383c64b6b13  gas/testsuite/gas/arc/asl.s
+56384c65539866b6e7fc0a0a05eabce8  gas/testsuite/gas/arc/asr.d
+9887c6e68d8176e71d75b9d91604e914  gas/testsuite/gas/arc/asr.s
+5288b51666fdc9bb0c65a07671c3c9fd  gas/testsuite/gas/arc/b.d
+78b81ebb3355a47d5c478e1e56444ffb  gas/testsuite/gas/arc/b.s
+402522bfb20c4387e1faba27224186ac  gas/testsuite/gas/arc/bic.d
+ab22388e1552b8926d7b8960f9a6fe20  gas/testsuite/gas/arc/bic.s
+ec7abac24fa3c402b31f624a3ff9de77  gas/testsuite/gas/arc/bl.d
+e2c237cc25d1cfc82c9285818858e329  gas/testsuite/gas/arc/bl.s
+8432db29eb95c38348bb4216a28f43a4  gas/testsuite/gas/arc/branch.s
+1165c7d246f9e1a548af4c5b7f4e5f60  gas/testsuite/gas/arc/brk.d
+872c85cca67988958ef95591b4fecb7d  gas/testsuite/gas/arc/brk.s
+acf1eca3b061941ff367bba7654f8a2e  gas/testsuite/gas/arc/extb.d
+0ab2d9abcadcf93d9b6dd8eb0962d7ab  gas/testsuite/gas/arc/extb.s
+93872b12992b5d2775308c2541723a23  gas/testsuite/gas/arc/extensions.d
+8e15242e5c6b199128ef839f8fe14144  gas/testsuite/gas/arc/extensions.s
+cb8963efc4b0412d0cf5f6d2d4412d14  gas/testsuite/gas/arc/extw.d
+e66a84df62389472e90d215276e87384  gas/testsuite/gas/arc/extw.s
+53684f8cb4cc475d5632ffa22555b6c5  gas/testsuite/gas/arc/flag.d
+2b6e2dd0335ebc45bb694de8cc2f4c6b  gas/testsuite/gas/arc/flag.s
+dd35c9020fa1c43318beec05e9d63dd6  gas/testsuite/gas/arc/insn3.d
+c9f07db5b59a1a725b1cb520c7dfffe2  gas/testsuite/gas/arc/insn3.s
+6623a00a22962dfb1afcb24a2f8920bb  gas/testsuite/gas/arc/j.d
+7ee6358f55317d08d08f864238c78515  gas/testsuite/gas/arc/j.s
+431696fbe85080394483a455208af19c  gas/testsuite/gas/arc/jl.d
+4a56cf56903f8e4c25dd7865dd1a92df  gas/testsuite/gas/arc/jl.s
+56a1aeb2d239eb164bc0b0b3570a4d6c  gas/testsuite/gas/arc/ld.d
+3c857571689df36f20267c10d4eb72c0  gas/testsuite/gas/arc/ld.s
+4d7ba9b754c7afdba41dfec82239bc30  gas/testsuite/gas/arc/ld2.d
+28379656fb4f5c37963ed6991c582ed6  gas/testsuite/gas/arc/ld2.s
+af5c07a06b5ab10049b70efc03fe4310  gas/testsuite/gas/arc/lp.d
+657d876ad61daec2d6de3a4269bfeaf3  gas/testsuite/gas/arc/lp.s
+0b801348feff41c1625f9c681af122c5  gas/testsuite/gas/arc/lsr.d
+a9c2ebcafcfc68a8bb7014172813ee2c  gas/testsuite/gas/arc/lsr.s
+ae005c091f26b4ceac5b19e8c13d8835  gas/testsuite/gas/arc/math.d
+c632e7e9e19d65e75557a5e42d513905  gas/testsuite/gas/arc/math.s
+42cc6922491da263d6ab87fca2593794  gas/testsuite/gas/arc/mov.d
+5bbe3186d21f23263b4a3743cfb1c0e5  gas/testsuite/gas/arc/mov.s
+ff9e23ba171eb9fab4ae4bf71ca1964f  gas/testsuite/gas/arc/nop.d
+4b5a9a087212c040ef94e7cfc7c64113  gas/testsuite/gas/arc/nop.s
+c596ab98be90e4fcdb2e92e35e3ca66f  gas/testsuite/gas/arc/or.d
+a9984178263c3d2fdc55aa82c0850038  gas/testsuite/gas/arc/or.s
+152d55e75d6f7079d969d4582e98e32c  gas/testsuite/gas/arc/rlc.d
+7186c231f11739791f407f6ad9bfdfcd  gas/testsuite/gas/arc/rlc.s
+f67f42d8077195a9ed9da2cd3ff93889  gas/testsuite/gas/arc/ror.d
+0f4fa90aec1e6518392567bb89d7420f  gas/testsuite/gas/arc/ror.s
+cce2b1054c09a0d526bc548ea162dc6c  gas/testsuite/gas/arc/rrc.d
+2a33859e8d1450a314390aee1eed985c  gas/testsuite/gas/arc/rrc.s
+7d0b42fa66729b4df6f26c5daa47c6ee  gas/testsuite/gas/arc/sbc.d
+6d4e549168ccb7340e4c87d6c3ca9f06  gas/testsuite/gas/arc/sbc.s
+b0ae0aa5baea6246ee417710ad641653  gas/testsuite/gas/arc/sexb.d
+e3e0516272a27d4fdde6e78fcfc0beae  gas/testsuite/gas/arc/sexb.s
+753f0757cceff8d9fba7da206607b32c  gas/testsuite/gas/arc/sexw.d
+505c87905fe1b3b19909f4ff658880e8  gas/testsuite/gas/arc/sexw.s
+04e291c6c4227ad3ea068b33bcca2bee  gas/testsuite/gas/arc/sleep.d
+4b2c68f86079ddc3738d423a7d9286ec  gas/testsuite/gas/arc/sleep.s
+dd35c9020fa1c43318beec05e9d63dd6  gas/testsuite/gas/arc/sshift.d
+285d03daf381a393d3099a8ff7ad1b92  gas/testsuite/gas/arc/sshift.s
+5f8916d2369e1234cb10b4590db13ad9  gas/testsuite/gas/arc/st.d
+053f3bbfd1d148584af0a8152d94a93b  gas/testsuite/gas/arc/st.s
+e913933835012629d5199008027146f4  gas/testsuite/gas/arc/sub.d
+beca3fc3b72a58cc4eadd2369592d87f  gas/testsuite/gas/arc/sub.s
+f2c956a2c8d124cf6924a93a3b18641d  gas/testsuite/gas/arc/swi.d
+458a27c1ed4ecb3d834bc928af3a1969  gas/testsuite/gas/arc/swi.s
+ca575363e502545e2e5d2a6ab64c6af8  gas/testsuite/gas/arc/warn.exp
+0b65cbe50ce349cd49a0a24641241d3c  gas/testsuite/gas/arc/warn.s
+9020b43e63291859faac20e7065787d9  gas/testsuite/gas/arc/xor.d
+c1a790a7f1cc4e88b2235b226fae54b2  gas/testsuite/gas/arc/xor.s
+218ceddbec7e4efdd63a6186a62fded9  gas/testsuite/gas/template
+ca63c7dc16d07432fb421d0efd079d1e  gas/testsuite/gas/alpha/alpha.exp
+7caf94f0e5c9ee4a654de71ef7acde09  gas/testsuite/gas/alpha/elf-reloc-1.d
+542ba778a8026db8d3b82d45c828970f  gas/testsuite/gas/alpha/elf-reloc-1.s
+44bc975cf505fc614b902b6d05a8cb27  gas/testsuite/gas/alpha/elf-reloc-2.l
+498dd06c38f62a854337eb6e0629f562  gas/testsuite/gas/alpha/elf-reloc-2.s
+8e926ed54e1cfadbf6d620943fe14e9e  gas/testsuite/gas/alpha/elf-reloc-3.l
+cd44e5cf1cf5d7f57c32d759623c16a5  gas/testsuite/gas/alpha/elf-reloc-3.s
+48dca0e100904fd0f5f780221a50e391  gas/testsuite/gas/alpha/elf-reloc-4.d
+bda565c218e80afced8a22ce13e68afa  gas/testsuite/gas/alpha/elf-reloc-4.s
+57d530cc16154b40cdafe2bd35f5fa9f  gas/testsuite/gas/alpha/elf-reloc-5.d
+280fd64660c31ce16cb67a670c130308  gas/testsuite/gas/alpha/elf-reloc-5.s
+337378bf9bcfd622880b55f609cc2d82  gas/testsuite/gas/alpha/elf-reloc-6.l
+f1db0194e78ed6ca547be0ce865e6bb9  gas/testsuite/gas/alpha/elf-reloc-6.s
+ee3c5cca44cbbc8648d233bb9f47f386  gas/testsuite/gas/alpha/elf-reloc-7.d
+9fa3e0a0d38d10c4591002d2a23874e4  gas/testsuite/gas/alpha/elf-reloc-7.s
+5df5463b0a34e0632baddcfebccd5e2e  gas/testsuite/gas/alpha/elf-reloc-8.d
+14ae8981371d4189a9fa78cc86541e42  gas/testsuite/gas/alpha/elf-reloc-8.s
+d9c79c31b22f9f59222c8407686d17bf  gas/testsuite/gas/alpha/elf-tls-1.d
+d3120aefa9f3d74f9a50d96702acb389  gas/testsuite/gas/alpha/elf-tls-1.s
+175819424c6d7ea48da17c33b08145b7  gas/testsuite/gas/alpha/elf-tls-2.l
+46336ae3d40ac88a4f205247b4e36c93  gas/testsuite/gas/alpha/elf-tls-2.s
+ccc1bdfb6a205a1766cf1a6bcabb78fc  gas/testsuite/gas/alpha/elf-tls-3.l
+611202a8cd8fb1dfffbc7f8b9c15c22b  gas/testsuite/gas/alpha/elf-tls-3.s
+dd7ce23c42b5c75b7aaf68091e36ca89  gas/testsuite/gas/alpha/elf-usepv-1.d
+1ecd4c2c9c9f694a311b4018fb4cc630  gas/testsuite/gas/alpha/elf-usepv-1.s
+839b27fcfeb47671d83cc12070cc6538  gas/testsuite/gas/alpha/elf-usepv-2.l
+a89f678c13ee68633c71d6e4f74d7cd8  gas/testsuite/gas/alpha/elf-usepv-2.s
+64b455f29370bedb9edeadf7ad36c07a  gas/testsuite/gas/alpha/fp.d
+a81ea1f138f93fa0d561f5306bd22a4f  gas/testsuite/gas/alpha/fp.s
+af2181269d9de10984a7a36f3ce5e01d  gas/testsuite/gas/alpha/unop.d
+29fe0cde0ac8733c56f2ffef3a1651d4  gas/testsuite/gas/alpha/unop.s
+2fa757e9695babb5fa07d425fd0ccbcf  gas/testsuite/gas/arm/arch4t.d
+75dd12fc4407dec617e49d948ca36292  gas/testsuite/gas/arm/abs12.d
+5d4b47a51fe92bb098297010d6ee2d12  gas/testsuite/gas/arm/abs12.s
+ede74e9d8e13142bfef6ec46cf674eaf  gas/testsuite/gas/arm/adrl.d
+ecbb507650db5ed7620314d5ca7a13e7  gas/testsuite/gas/arm/adrl.s
+8ae0560f8be6f8f105a25e08d52d7921  gas/testsuite/gas/arm/arch4t.s
+4040cb5a638a281b3e0e66831c6ad6d0  gas/testsuite/gas/arm/arch5tej.d
+2f96d9641db7f61fb556c70c266efde7  gas/testsuite/gas/arm/arch5tej.s
+069cff403706e15e6a161beaa0b1d811  gas/testsuite/gas/arm/arch6zk.d
+5d5d72f5274b9ea40e85a43eda9be6b5  gas/testsuite/gas/arm/arch6zk.s
+900cfa64ed0a607a998f372c0eacb6de  gas/testsuite/gas/arm/arch7.d
+d77ddbb33577f586982b52e973f5355d  gas/testsuite/gas/arm/arch7.s
+24fc10e3da6b7ef78f4b55ee0b0cc2e8  gas/testsuite/gas/arm/arch7m-bad.d
+9295d1be15a91837dc5dc2253b553591  gas/testsuite/gas/arm/arch7m-bad.l
+4066147fea0f34e61ff20bb3953bbcf6  gas/testsuite/gas/arm/arch7m-bad.s
+d0710f4af3d45050e7c22a0db397560e  gas/testsuite/gas/arm/archv6.d
+ba839b6fddf0b4f6f322df37eacf441a  gas/testsuite/gas/arm/archv6.s
+3223e9e789e7275d28af65a561ea4f07  gas/testsuite/gas/arm/archv6t2-bad.d
+a75344a06d3ba8340cfecd4a0b571ea8  gas/testsuite/gas/arm/archv6t2-bad.l
+f5dacfa0fcf2cb53a9fd091240ba1812  gas/testsuite/gas/arm/archv6t2-bad.s
+edeaf6f0f2a10ef6503d6b800cd12d7f  gas/testsuite/gas/arm/archv6t2.d
+2bfee89072c1c2e798bde7bd4aa79c9a  gas/testsuite/gas/arm/archv6t2.s
+0921a0e10ff11b58fcb081e92e59dd31  gas/testsuite/gas/arm/arm.exp
+8144f94b7fcd31f21441e8953217ccdf  gas/testsuite/gas/arm/arm3-bad.d
+a7333c25d51cfb1d3071778778ededd9  gas/testsuite/gas/arm/arm3-bad.l
+2395435e948692459241f12cbfe49145  gas/testsuite/gas/arm/arm3-bad.s
+db682902cec9d350bfa3e88273426cb3  gas/testsuite/gas/arm/arm3.d
+15137137fbd80fde4552111cbb60d514  gas/testsuite/gas/arm/arm3.s
+5bdeeea8d914a577ca5d9a9cdc3c5872  gas/testsuite/gas/arm/arm6.d
+9f50b26c97c490fdf7b9eabff9978181  gas/testsuite/gas/arm/arm6.s
+0f90c8e4f30b8b1e0272d389f1829673  gas/testsuite/gas/arm/arm7dm.d
+be6769c4582638a0a138ed06c26168b7  gas/testsuite/gas/arm/arm7dm.s
+95b543f1b577f713f94c1faa04d06858  gas/testsuite/gas/arm/arm7t.d
+feaf27754d47f66044badeec38a0a215  gas/testsuite/gas/arm/arm7t.s
+563a746a696663b7084283c9e0af7a80  gas/testsuite/gas/arm/armv1-bad.d
+bbbb2dc3512fdd096bd831a3def0e617  gas/testsuite/gas/arm/armv1-bad.l
+f2c6c508b3eea079bc2448b4e5cf4ecc  gas/testsuite/gas/arm/armv1-bad.s
+77668fbef062995f17c40a2330eea99d  gas/testsuite/gas/arm/armv1.d
+f31a9037ea3ee4c5f7694a54d8c0246e  gas/testsuite/gas/arm/armv1.s
+233af5c2872f271ed24f36379bfb2cde  gas/testsuite/gas/arm/bignum1.d
+08269632d864fb311787d7c196186ac6  gas/testsuite/gas/arm/bignum1.s
+a1c1301b5b0a74ba6f9f720d754fc645  gas/testsuite/gas/arm/blx-local.d
+28053f298fdc9617a00b0e162a318d93  gas/testsuite/gas/arm/blx-local.s
+d3f16ddc99bec479c1a637e1be85908a  gas/testsuite/gas/arm/copro.d
+1b81683480d5a33003d18526eaefe8c5  gas/testsuite/gas/arm/copro.s
+3d3273338f3684f4fd371724367bb133  gas/testsuite/gas/arm/eabi_attr_1.d
+aecf4a96b2a97e461607c81dfe0751de  gas/testsuite/gas/arm/eabi_attr_1.s
+87bde1b49c5fa29fa858e2bcdd72967b  gas/testsuite/gas/arm/el_segundo.d
+f6b90cae6af764a8e5bf09eac5e3661c  gas/testsuite/gas/arm/el_segundo.s
+74df2800aedc9ad65e2ddcfc47ca103e  gas/testsuite/gas/arm/float.d
+2e5a285cf87efbbc0d49c33a6148766f  gas/testsuite/gas/arm/float.s
+496ad498510e325f684023a10725afda  gas/testsuite/gas/arm/fpa-dyadic.d
+c9e2422c9042c8e48eb52239a357011e  gas/testsuite/gas/arm/fpa-dyadic.s
+039c27eb0352d12baeb896f30d3d5f32  gas/testsuite/gas/arm/fpa-mem.d
+52472e5003c4d5792b2b9337482d0bba  gas/testsuite/gas/arm/fpa-mem.s
+a02c05e2d4ee9c5b17b5674d6ffa4b9c  gas/testsuite/gas/arm/fpa-monadic.d
+25450ea0b9caf1d0a58522156f083d7f  gas/testsuite/gas/arm/fpa-monadic.s
+a7a398fc25440e149f921c29ba749a7f  gas/testsuite/gas/arm/immed.d
+6b615b131eba5ce2972ceb7452ffcf46  gas/testsuite/gas/arm/immed.s
+f8708c92913f5358faaa1af7163faf70  gas/testsuite/gas/arm/inst.d
+349fa5f51ab1c1f651b57e3f0ea01bc5  gas/testsuite/gas/arm/inst.s
+a4d10ec00b5b2d3bd9e0fd9079586d5d  gas/testsuite/gas/arm/iwmmxt-bad.d
+984cd9a3a074e33e5fe68f79ae7010cd  gas/testsuite/gas/arm/iwmmxt-bad.l
+bc7a99c165ee0f93e63593237456a9d9  gas/testsuite/gas/arm/iwmmxt-bad.s
+97be31587023ec827b51c6d7ca8e8c3f  gas/testsuite/gas/arm/iwmmxt-bad2.d
+9623aa2f5b29fce8cf1c5b3bffad538d  gas/testsuite/gas/arm/iwmmxt-bad2.l
+0a9b840ecb8d92d33f3fad2172941b36  gas/testsuite/gas/arm/iwmmxt-bad2.s
+945931e392d209eba757b892b9569f32  gas/testsuite/gas/arm/iwmmxt.d
+12f3207eb28005cd987ad00fb82aa62f  gas/testsuite/gas/arm/iwmmxt.s
+59e62b31a9486a4a6778ad17f6bbe515  gas/testsuite/gas/arm/ldconst.d
+ee73fefc2ff67c1f78695ecfb1e38450  gas/testsuite/gas/arm/ldconst.s
+1068e8b7a4dcba95cc284038938995ee  gas/testsuite/gas/arm/le-fpconst.d
+01ece05c7a31cb680e04d26a1f7dc281  gas/testsuite/gas/arm/le-fpconst.s
+24c88812b29404bb4b6f0c43c5b43120  gas/testsuite/gas/arm/macro1.d
+f94f70714509c698a85f5bfe10dfc5ae  gas/testsuite/gas/arm/macro1.s
+a0dc2ed1b9ec164b4a6650ab77ec9f59  gas/testsuite/gas/arm/mapping.d
+b774e08295a0b1ad5b5571f00899b7c1  gas/testsuite/gas/arm/mapping.s
+1dc857d667aa926f35481f5c3545dc7a  gas/testsuite/gas/arm/maverick.c
+165091ed0d9afd18e700f5127b6d3219  gas/testsuite/gas/arm/maverick.d
+9733817e8baaf48af49d0ed3436c266d  gas/testsuite/gas/arm/maverick.s
+7919d24207a3acde2d7cf13b18c6a1ac  gas/testsuite/gas/arm/nomapping.d
+98619293650f7b518d3970d82a75702a  gas/testsuite/gas/arm/nomapping.s
+b7a74847f254886f5350d153c83562cb  gas/testsuite/gas/arm/offset.d
+9e145924181e4df094b49e8f7408747b  gas/testsuite/gas/arm/offset.s
+1dd2705e6f363559a8906edb52cd3853  gas/testsuite/gas/arm/pic.d
+70da6cc98fe9db2ec3da4610ffa695b6  gas/testsuite/gas/arm/pic.s
+7ae6d895867864be78c46c5c71aaa044  gas/testsuite/gas/arm/pic_vxworks.d
+4f3ba7a55b325bf9dc76be29a6d4af52  gas/testsuite/gas/arm/r15-bad.d
+910d4a7c9bdd847365d82f1bce543e44  gas/testsuite/gas/arm/r15-bad.l
+e2af0cc3247b8aca95c4032caaf5a395  gas/testsuite/gas/arm/r15-bad.s
+e5e0a6e1452263661937795bbac0c9eb  gas/testsuite/gas/arm/reg-alias.d
+93863da4986b279dd10d2a60d366bccf  gas/testsuite/gas/arm/reg-alias.s
+f4ef829919d79352d5b1baae0bdf2f4c  gas/testsuite/gas/arm/req.d
+539e46c6065cee60a138281285c242a7  gas/testsuite/gas/arm/req.l
+7c3af2c97f3f95da9786d1c495ce37f1  gas/testsuite/gas/arm/req.s
+ee92c456024babea25f00409cae3ef75  gas/testsuite/gas/arm/svc.d
+cda65a85f8ee8f5cccc5dbf733e26e2e  gas/testsuite/gas/arm/svc.s
+bfb711d24a6452e46fba4e2d16673f36  gas/testsuite/gas/arm/t16-bad.d
+417c85501161ff65224a81c6919c105c  gas/testsuite/gas/arm/t16-bad.l
+c542881e7f34c1bca82479e89f1c12eb  gas/testsuite/gas/arm/t16-bad.s
+c2c4603746939c546b6602ec201dd938  gas/testsuite/gas/arm/tcompat.d
+01845494d89206ee162c2fa3b961445f  gas/testsuite/gas/arm/tcompat.s
+c70aab9c6bf5efde0fc30d18a1af667f  gas/testsuite/gas/arm/tcompat2.d
+a24e1db08e35323e4bc5c9f3b2865dea  gas/testsuite/gas/arm/tcompat2.s
+1994042ac2ce0fc6a7575ab59bc2f895  gas/testsuite/gas/arm/thumb.d
+6435d6209d1ded87cef68a7315781dca  gas/testsuite/gas/arm/thumb.s
+58d61362d876f42f101a17cd02751b65  gas/testsuite/gas/arm/thumb2_bcond.d
+4103447701afbe2af8e1c4c012f28076  gas/testsuite/gas/arm/thumb2_bcond.s
+e2165a7d4dd8bca7fa1bc32b8355115a  gas/testsuite/gas/arm/thumb2_invert.d
+b16c4e6e91e9df2ec7eb4740a8e421ac  gas/testsuite/gas/arm/thumb2_invert.s
+6f37a02352a7727486de7c79a31bbde5  gas/testsuite/gas/arm/thumb2_it.d
+3417601654a28c87e83aed481d35a28b  gas/testsuite/gas/arm/thumb2_it.s
+f75548cafb3af84010ac7a7ce3dd5ed8  gas/testsuite/gas/arm/thumb2_it_bad.d
+90b3ab3bde115589785248511f85d8ee  gas/testsuite/gas/arm/thumb2_it_bad.l
+5deca957d184efc91f3eb0c6bcb04d0b  gas/testsuite/gas/arm/thumb2_it_bad.s
+b4ec397b6a4d82ea0c07212f02c3fb91  gas/testsuite/gas/arm/thumb2_pool.d
+b7d8a3446745fcfbb6007aff4c1513e3  gas/testsuite/gas/arm/thumb2_pool.s
+174aa418bb6940ad5380367af14a5503  gas/testsuite/gas/arm/thumb2_relax.d
+b3aa4e03076cd20cbc79591775bde8c8  gas/testsuite/gas/arm/thumb2_relax.s
+b9f219a7870f2159d54ef271d2e583af  gas/testsuite/gas/arm/thumb32.d
+ff7ed79f738de6b856611f948a51dd81  gas/testsuite/gas/arm/thumb32.s
+c7fccc8611d453b0236cf515b8c3ac0f  gas/testsuite/gas/arm/thumbv6.d
+32c8c68853e9c3714f92d458c22c107b  gas/testsuite/gas/arm/thumbv6.s
+9bc350f6efe3764251b3578bbbf0ebff  gas/testsuite/gas/arm/thumbv6k.d
+7e0e60be4eec0eaf688f4ebded3519a1  gas/testsuite/gas/arm/thumbv6k.s
+8976d3517ec7da0e5adcfadafbf3643f  gas/testsuite/gas/arm/tls.d
+6da82abfb0d50ae2dc667d4ee652b862  gas/testsuite/gas/arm/tls.s
+ac27720dc9594a1b75666fb58c915649  gas/testsuite/gas/arm/tls_vxworks.d
+72d74537fc7a0944119a2e5371b4579e  gas/testsuite/gas/arm/undefined.d
+3e1c1880c7c3b70297d9f4b2abc1c6f9  gas/testsuite/gas/arm/undefined.l
+6890516d1ed282bcd8ffe6badad800fe  gas/testsuite/gas/arm/undefined.s
+c1d08d2e0f1954b9353ba8f8a8daa981  gas/testsuite/gas/arm/undefined_coff.d
+381c68d752a39fe3b1c8e2502ae6214c  gas/testsuite/gas/arm/undefined_coff.l
+7f9bf611638fd7d0d6c831e6ddf5962e  gas/testsuite/gas/arm/undefined_coff.s
+7356ced8f80972dde7b3ea7b8be2bb3f  gas/testsuite/gas/arm/unwind.d
+7dc858b99b5335e77bb1413d880bf0f6  gas/testsuite/gas/arm/unwind.s
+f1f95cf9cbdb19f2fb732fa70c2c169d  gas/testsuite/gas/arm/unwind_vxworks.d
+814d0fae55d79302ad95e3a713a8baec  gas/testsuite/gas/arm/vfp-bad.d
+f413ca5d6d3e49dd0a8acf8c2a540003  gas/testsuite/gas/arm/vfp-bad.l
+5c94325ced2602ef362e4436113230a2  gas/testsuite/gas/arm/vfp-bad.s
+96d08206a5c7bcea2ee723cce0052784  gas/testsuite/gas/arm/vfp-bad_t2.d
+bc4cc6a09adc664ab0f7fc0c9a8db159  gas/testsuite/gas/arm/vfp-bad_t2.l
+d559b5f5968972a6c28b8618149a9ec9  gas/testsuite/gas/arm/vfp-bad_t2.s
+1ed5c905867a323cd38e0a1697b2da54  gas/testsuite/gas/arm/vfp1.d
+e82b842fce34cd77d75a4138a4c504c2  gas/testsuite/gas/arm/vfp1.s
+2c1bb0c40dff33e937023c1a05a5c4c9  gas/testsuite/gas/arm/vfp1_t2.d
+3d0e2f89aeb8c1d2f335b244a5ff26f8  gas/testsuite/gas/arm/vfp1_t2.s
+ea06a617cc104c2af79812683d79eeee  gas/testsuite/gas/arm/vfp1xD.d
+553e6ee8d220d56872139df3422ff521  gas/testsuite/gas/arm/vfp1xD.s
+e1740fda91d0d9935a67146aebd6b35f  gas/testsuite/gas/arm/vfp1xD_t2.d
+d18eb478ca80d2238d0388f1327e4869  gas/testsuite/gas/arm/vfp1xD_t2.s
+a3b4dec7990531d00d86d4c053233bcd  gas/testsuite/gas/arm/vfp2.d
+bfd6afbdacdf57a886ad9d8530fae3ad  gas/testsuite/gas/arm/vfp2.s
+20501539881fb3e27bbf26a1f08fbed9  gas/testsuite/gas/arm/vfp2_t2.d
+6a5f0f0ac922d9ebf53fd12ab0085ac1  gas/testsuite/gas/arm/vfp2_t2.s
+3ba2e2b2aab86f7bd8c0379d47d2d255  gas/testsuite/gas/arm/wince_inst.d
+afa52d0d830282b422a8eed77dae8a5c  gas/testsuite/gas/arm/xscale.d
+66848c515a123077cd3c9ce386e1ff3e  gas/testsuite/gas/arm/xscale.s
+ef5e3e0cc96a51e4d36da0bfe69bab32  gas/testsuite/gas/bfin/arithmetic.d
+a4fde8e0954ef35fc37911f7668f782f  gas/testsuite/gas/bfin/arithmetic.s
+3e9bc7d5c9ef7443686be11009df78b7  gas/testsuite/gas/bfin/bfin.exp
+e983d27420d4a4c5b0f0a2d391e0282e  gas/testsuite/gas/bfin/bit.d
+2423a518f5d1c6e3b2c2fa7fbe1f1bfd  gas/testsuite/gas/bfin/bit.s
+b21b85a58e800186e855d8ae4ea36894  gas/testsuite/gas/bfin/bit2.d
+1b2a6b6b248b6be38a070b9c6179e141  gas/testsuite/gas/bfin/bit2.s
+c25eac965192a8961a7543bedc3a2730  gas/testsuite/gas/bfin/cache.d
+1bd724bb8ff4df410a9a84ee255bb018  gas/testsuite/gas/bfin/cache.s
+d4927f98c2c5c1481231dd1e2cfd5781  gas/testsuite/gas/bfin/cache2.d
+aa9c2262b131e180a3b093e075960283  gas/testsuite/gas/bfin/cache2.s
+433a6a8616c7fd14471cc20ca85013af  gas/testsuite/gas/bfin/control_code.d
+d0bb675fcf4f27f96feb8c518907fcc4  gas/testsuite/gas/bfin/control_code.s
+ff5f9f8b68c6308a310b0dbd607310e9  gas/testsuite/gas/bfin/control_code2.d
+327980501576c878e416cde58d638cf2  gas/testsuite/gas/bfin/control_code2.s
+35d830a1f29c418c87900ff3c0744f85  gas/testsuite/gas/bfin/event.d
+1a2bfd331853fc647d79a74468708867  gas/testsuite/gas/bfin/event.s
+4b6ffa3bcd6a3366ca3419d5734695fa  gas/testsuite/gas/bfin/event2.d
+9bebd15e8139bd287180f051b00dbcfe  gas/testsuite/gas/bfin/event2.s
+81dd96a7370b682bf490cbee68db22a1  gas/testsuite/gas/bfin/expected_errors.l
+6a516ae6c1ef3a4bf401cad7a4536052  gas/testsuite/gas/bfin/expected_errors.s
+752c58981151d6c05f7fb97c221f1282  gas/testsuite/gas/bfin/expected_move_errors.l
+debf6d040114440c976e34a2e6e94e95  gas/testsuite/gas/bfin/expected_move_errors.s
+25b44e4b9a69905f6b06aa768940ff7f  gas/testsuite/gas/bfin/flow.d
+3fc4e67254243c40ab5e1c25a6a81f63  gas/testsuite/gas/bfin/flow.s
+e432b570f46f1e9a498d58546e0459af  gas/testsuite/gas/bfin/flow2.d
+09780a8e9ad4e6745f30a8cee292af53  gas/testsuite/gas/bfin/flow2.s
+ffe90a1f87f14fec8bcc552381f8e456  gas/testsuite/gas/bfin/load.d
+8b05a7dc660fd023c9dcae9a9e8e7ae7  gas/testsuite/gas/bfin/load.s
+f40444a14187c4c6c048a3a181e3a537  gas/testsuite/gas/bfin/logical.d
+2fe47567e87037449c8434d098bad4ed  gas/testsuite/gas/bfin/logical.s
+13cca1f9cdb20d1507df78501f1dd6d3  gas/testsuite/gas/bfin/logical2.d
+62b5155f50d3b65ddc63851e0403d30d  gas/testsuite/gas/bfin/logical2.s
+915627bf83f256b7282d2b1b6df563b8  gas/testsuite/gas/bfin/move.d
+cc5099cac9546a269ce86b855269491f  gas/testsuite/gas/bfin/move.s
+986bba6be41077b830d44cfadfb31813  gas/testsuite/gas/bfin/move2.d
+b65da9555dbb4b4c4596254979c2f62a  gas/testsuite/gas/bfin/move2.s
+39c4efbe407bb5827ce19e0ea4d09482  gas/testsuite/gas/bfin/parallel.d
+0fc03f4c2d4558b640fa1d15cfe69d49  gas/testsuite/gas/bfin/parallel.s
+2f3fde111b3f48a02406d70ae941a91f  gas/testsuite/gas/bfin/parallel2.d
+14fa202ad9247b3c24c7f914d62c6181  gas/testsuite/gas/bfin/parallel2.s
+93db0146dc2221fa6ab24fd822ca1bdc  gas/testsuite/gas/bfin/parallel3.d
+9c22bf52f7a4d6f6ff6ee17fedd96650  gas/testsuite/gas/bfin/parallel3.s
+02f46244182b37b543159a1e6871d9df  gas/testsuite/gas/bfin/parallel4.d
+206377ee8132550c7ec2130d01bcaa24  gas/testsuite/gas/bfin/parallel4.s
+1af706a19cca72d151bc52763c7fcf39  gas/testsuite/gas/bfin/reloc.d
+5057c84be940f533409912ccb929e32c  gas/testsuite/gas/bfin/reloc.s
+58125ea1b15b50261e3ca10fa27fe18f  gas/testsuite/gas/bfin/shift.d
+60749a1cc7d1b067aec37959e7581b9d  gas/testsuite/gas/bfin/shift.s
+2ef39ed05f2f5b93693e2816a92cd3ac  gas/testsuite/gas/bfin/shift2.d
+2b67648e74888b2a1313ab11024e7cda  gas/testsuite/gas/bfin/shift2.s
+5c5423cf8555fbbe43cd60168942f1f5  gas/testsuite/gas/bfin/stack.d
+2c0315e6dc7ff72e7ddd35ec60450354  gas/testsuite/gas/bfin/stack.s
+d01f841f812ea4631fa6d84a3cea93cc  gas/testsuite/gas/bfin/stack2.d
+907f0a36ef18bef65f580c5689fed29a  gas/testsuite/gas/bfin/stack2.s
+d82f1d7d09a197313878699742e68b87  gas/testsuite/gas/bfin/store.d
+ddcfb10fec3bd4b7831493421c881c22  gas/testsuite/gas/bfin/store.s
+1e3e6021c8d516065df81bf4de58ce02  gas/testsuite/gas/bfin/vector.d
+aa502219854811389958435e66a260fb  gas/testsuite/gas/bfin/vector.s
+65322a9d29a89512722caa093942773f  gas/testsuite/gas/bfin/vector2.d
+9ae3aa3039b0aa6145065d81ea9750f6  gas/testsuite/gas/bfin/vector2.s
+01b30cb6f76718acb9acc82eb69d990b  gas/testsuite/gas/bfin/video.d
+213f9eea8da19afe265602c0c9b123f3  gas/testsuite/gas/bfin/video.s
+5c771ec193e210dbb3f5ff0ba4a85762  gas/testsuite/gas/bfin/video2.d
+311404056f928347ba8899856e6ad17b  gas/testsuite/gas/bfin/video2.s
+cc63aa72b10a3764fbe041ea32730220  gas/testsuite/gas/cfi/cfi-alpha-1.d
+c732145c7ef46cd0a6032f7e2b510061  gas/testsuite/gas/cfi/cfi-alpha-1.s
+2b43ab50e2a1d940f42058f251a26d50  gas/testsuite/gas/cfi/cfi-alpha-2.d
+7a903b0680f5f68cbb334bcfb8f78418  gas/testsuite/gas/cfi/cfi-alpha-2.s
+810a853eb2b7d32bbf82539a5418d2c4  gas/testsuite/gas/cfi/cfi-alpha-3.d
+fb22d6ffbc03e216af699e438247ab89  gas/testsuite/gas/cfi/cfi-alpha-3.s
+1102a47905846fa0deacb8138b286f86  gas/testsuite/gas/cfi/cfi-arm-1.d
+27866105927ba075e08a1df3329c1011  gas/testsuite/gas/cfi/cfi-arm-1.s
+7ad35727a7667f8b18289cfebf604225  gas/testsuite/gas/cfi/cfi-common-1.d
+ff9a79da6f82cdbf3501bcde9eb478f1  gas/testsuite/gas/cfi/cfi-common-1.s
+746a185476084dca2f8a4b73d7b4748a  gas/testsuite/gas/cfi/cfi-common-2.d
+4e1d60f8041c1d463b0ab47d28a0b8ed  gas/testsuite/gas/cfi/cfi-common-2.s
+e8233eaf45c867d5abd4ed3e604b2c1b  gas/testsuite/gas/cfi/cfi-common-3.d
+e38a19aa1e2fe664fe714f357ceafb72  gas/testsuite/gas/cfi/cfi-common-3.s
+d470a400f62bf3aa7d0c9225d5ead63e  gas/testsuite/gas/cfi/cfi-common-4.d
+d680108d8be37f6a0d454b5622d97001  gas/testsuite/gas/cfi/cfi-common-4.s
+a20cb2990eabbc4a00fde7383f77f52a  gas/testsuite/gas/cfi/cfi-diag-1.l
+d9aa89632b07c90425d877d2c4fe5f21  gas/testsuite/gas/cfi/cfi-diag-1.s
+301b72918203f390af6e87c9daf32662  gas/testsuite/gas/cfi/cfi-i386-2.d
+439b989fe3ccc39f216269684d8ef849  gas/testsuite/gas/cfi/cfi-i386-2.s
+b81a836836f6cc95d237e8e2eca2740c  gas/testsuite/gas/cfi/cfi-i386.d
+6aec3a9c165b09120f805390b9836da3  gas/testsuite/gas/cfi/cfi-i386.s
+57585b3f095b96658d2da6e118525214  gas/testsuite/gas/cfi/cfi-m68k.d
+ce598e227551ae3fb76ac5ec10f1e08d  gas/testsuite/gas/cfi/cfi-m68k.s
+f860412b33356231932244f8af23d898  gas/testsuite/gas/cfi/cfi-mips-1.d
+8a2867da19dc676c9e3b377876b0f31f  gas/testsuite/gas/cfi/cfi-mips-1.s
+d79a8715b6fba170991285d43fee351f  gas/testsuite/gas/cfi/cfi-ppc-1.d
+023e0a3711f8bdda382cfe17793857c1  gas/testsuite/gas/cfi/cfi-ppc-1.s
+8bfa29d2dba47d01caffb0687f8cfdd4  gas/testsuite/gas/cfi/cfi-s390-1.d
+b8507466edac4d850cd795fffec14f30  gas/testsuite/gas/cfi/cfi-s390-1.s
+fdcf4555bd83ebb76b081fd3c097d1fd  gas/testsuite/gas/cfi/cfi-s390x-1.d
+e4805f533c9d695511947a95cd44f743  gas/testsuite/gas/cfi/cfi-s390x-1.s
+9e4fc8a48e8a03ff41a08e872ce5a60b  gas/testsuite/gas/cfi/cfi-sh-1.d
+88c8945be2bfa4de0b3c595656da7dec  gas/testsuite/gas/cfi/cfi-sh-1.s
+4a99c0039121a13b37cd85a200c1aa21  gas/testsuite/gas/cfi/cfi-sparc-1.d
+03d5d698bd1714ce01a3bdf90202dfaf  gas/testsuite/gas/cfi/cfi-sparc-1.s
+0d56c79c20f1a643d74a8795eb40c727  gas/testsuite/gas/cfi/cfi-sparc64-1.d
+a1442421e2bf9301a2dd97cb67e7bb6a  gas/testsuite/gas/cfi/cfi-sparc64-1.s
+2e00f60a2eb750153e334c5690d4d178  gas/testsuite/gas/cfi/cfi-x86_64.d
+3e87d43d31691e7b7b7dd27a4e7cbd3b  gas/testsuite/gas/cfi/cfi-x86_64.s
+d6ea1049332ba6c9e611b430d3b4de60  gas/testsuite/gas/cfi/cfi.exp
+18d4c4bc0430b3c84b2302d30d1dc847  gas/testsuite/gas/cris/abs32-1.s
+d37874c6207817f204a1ec750ebb4071  gas/testsuite/gas/cris/addi.d
+6ca0c7c8a4113b4ba0224dcdf4e6717d  gas/testsuite/gas/cris/addi.s
+13a10a503be033d6331a02a0f5ddcc77  gas/testsuite/gas/cris/arch-err-1.s
+0d58f43aece3f51c4ca5026fbf555a14  gas/testsuite/gas/cris/arch-err-2.s
+b6328fb4babda313830b0972ef82e525  gas/testsuite/gas/cris/arch-err-3.s
+45891f0c0c9960eff1a6e2ca99331d0d  gas/testsuite/gas/cris/arch-err-4.s
+44bfb8b3f93389a8c411433c4bef2597  gas/testsuite/gas/cris/arch-err-5.s
+cc7815e98e40d50319297072ed0788d2  gas/testsuite/gas/cris/binop-cmpmove.d
+dc1a9682ed0b829d2af27e82ab20cf6c  gas/testsuite/gas/cris/binop-cmpmovx.d
+cb2d8aeb2cc4a340dbf648056d7c96b3  gas/testsuite/gas/cris/binop-extx.d
+af929eb0019e7cde018a6d96e2c61325  gas/testsuite/gas/cris/binop-segref.s
+725914dadc2fa064588b802c4dd23a15  gas/testsuite/gas/cris/binop.d
+ce4e65752cd8c2657ef0b10cbcc00cde  gas/testsuite/gas/cris/binop.s
+5d7c80786055352c3129a6d9a6e3e6ff  gas/testsuite/gas/cris/bork.d
+67a42ca84f31bc333b785695009221fa  gas/testsuite/gas/cris/bork.s
+358f933cba6c213ef32385fbf17c89e1  gas/testsuite/gas/cris/bound-err-1.s
+6b30f687aeb97de2c6d8cea516cd0351  gas/testsuite/gas/cris/branch-warn-1.s
+0175c9f81673cc5d7f46599955bf7450  gas/testsuite/gas/cris/branch-warn-2.s
+4358a854465b2097d3ee3f0161f65343  gas/testsuite/gas/cris/branch-warn-3.s
+4c86b005ec93ad9aeca855715e595f75  gas/testsuite/gas/cris/branch.d
+caff7842b5ef92ca805daf6782c1e414  gas/testsuite/gas/cris/branch.s
+37e147e4eb514712f5b6f1ce74aaf2fb  gas/testsuite/gas/cris/break.d
+700be97c0689c4196f0da1842abcc231  gas/testsuite/gas/cris/break.s
+67c29fc0a9c79da821c266dbda7689a0  gas/testsuite/gas/cris/brokw-1.d
+c5755e65bfd257cc35eaa9cc22206a73  gas/testsuite/gas/cris/brokw-1.s
+55ea6801fc6ab67be7d04335d28945bd  gas/testsuite/gas/cris/brokw-2.d
+fbe8c57fd8caa459cbd13aed974c0a08  gas/testsuite/gas/cris/brokw-2.s
+cc16707dcac40b6e6acc5ef6ba5f99ae  gas/testsuite/gas/cris/brokw-3.d
+c59672ea2393738a93f000bf6a4f3dd2  gas/testsuite/gas/cris/brokw-3.s
+cee1b959c4e6aa2fb7315c5713d1ba97  gas/testsuite/gas/cris/brokw-3b.s
+fe98cec7789da4690999c41bcdb2d451  gas/testsuite/gas/cris/bwtest-err-1.s
+7557d9513e8793d9d57b3d235f504e1c  gas/testsuite/gas/cris/ccr.d
+93770cdb47d3463657e205bd0fe81db4  gas/testsuite/gas/cris/ccr.s
+381a9ab58435188056b2f25d7ba4357c  gas/testsuite/gas/cris/clear.d
+73e539453e3fd4bd9b6d8993f6552a3c  gas/testsuite/gas/cris/continue.d
+dd8c355ecfa0c88d8d0269609f26da37  gas/testsuite/gas/cris/continue.s
+ed7c947a866229e389c410713ac815af  gas/testsuite/gas/cris/cris.exp
+69fc8204a5ff36146165b8fc3fcea2ac  gas/testsuite/gas/cris/diffexp-ovwr.d
+a4827654925418a4a48b98595a402e1c  gas/testsuite/gas/cris/diffexp-ovwr.s
+3e68a25e4fbaee80f92c36b18f617872  gas/testsuite/gas/cris/fragtest.d
+ac5f31bfb9b56f6b73e251468db85eb0  gas/testsuite/gas/cris/fragtest.s
+dbcb23737c31ce04080a64583b5aa301  gas/testsuite/gas/cris/jump-type.d
+35785b12fb4af7d06e1cb6c176b8d6ff  gas/testsuite/gas/cris/labfloat.d
+193f9aaf255857e1897a82b483b021f9  gas/testsuite/gas/cris/labfloat.s
+81585babaad1f52261151015eb4a967b  gas/testsuite/gas/cris/macroat.d
+c4213b954433bf3aba530e1d0ae31294  gas/testsuite/gas/cris/macroat.s
+ca9c91017df6f851be9fd90a69375669  gas/testsuite/gas/cris/march-err-1.s
+33a5f03480ba14f340dbc635a8d03805  gas/testsuite/gas/cris/march-err-2.s
+b1aed83f188faca64b30a3ea17ed25a7  gas/testsuite/gas/cris/movem-to-reg.d
+16167885542a9a27143ec29a7f6d3e9d  gas/testsuite/gas/cris/mulbug-err-1.s
+d6c6f41d90618cfbc9a6906bc01154c1  gas/testsuite/gas/cris/nosep.d
+3130381f901b0e035d9db56d3cd4a6d4  gas/testsuite/gas/cris/nosep.s
+34c9d4996bda0af5eff68b50336fe1c8  gas/testsuite/gas/cris/oneop-type.d
+ccb7110d35badd69f9adff1c71bbc08a  gas/testsuite/gas/cris/operand-err-1.s
+54190a464de7bc0ea25278f3e116ca6b  gas/testsuite/gas/cris/pic-err-1.s
+4dc221a639f050b33118fee5c2ece649  gas/testsuite/gas/cris/prefix.d
+19af9d100ff80d76593ca93c4119da01  gas/testsuite/gas/cris/prefix.s
+b6aab04b800fd6556fbc8a45196fdbfb  gas/testsuite/gas/cris/push-err-1.s
+b52036a4d66575a330aee0806c2d3331  gas/testsuite/gas/cris/push-err-2.s
+bd84b062c31622e8a00f627566c4e5bc  gas/testsuite/gas/cris/pushpop-byte-sreg.d
+99abd207ab982e6c4b5c538faff1493d  gas/testsuite/gas/cris/pushpop-dcr1-sreg.d
+03b76091d17405f7658174e77dce71fc  gas/testsuite/gas/cris/pushpop-dword-sreg.d
+022fee8710dcfd4dfb14d06be1cd7a68  gas/testsuite/gas/cris/pushpop-word-sreg.d
+61a4f6c943509667980199db013817f7  gas/testsuite/gas/cris/pushpop.d
+1ffbba2b760c1b6319dbc869060db0e4  gas/testsuite/gas/cris/pushpop.s
+b7370a2013b7307040d9751520a13165  gas/testsuite/gas/cris/pushpopv32.s
+8ac4149babbed9ae66a40db6ebe094a0  gas/testsuite/gas/cris/quick-s6.d
+f5b3264bade3e45e54ceea8d9df00c5c  gas/testsuite/gas/cris/quick-u5.d
+2c932ddd6929e90f4a4780ea206b0207  gas/testsuite/gas/cris/quick-u6.d
+aee73b1e0d6b950ee94745e9bc1d8586  gas/testsuite/gas/cris/quick.s
+d199c4beca07600cd7ff05108419cc5e  gas/testsuite/gas/cris/range-err-1.s
+f4b1aa0daf09ff6d724794cbf97c2a31  gas/testsuite/gas/cris/range-err-2.s
+87654b9172aa966303b7116981c57228  gas/testsuite/gas/cris/rd-abs32-1.d
+fbbb8706b858763ee74eea38dae8ede4  gas/testsuite/gas/cris/rd-abs32-2.d
+b06fd1821a11ee736fc8b0420aef36b7  gas/testsuite/gas/cris/rd-arch-1.d
+41e1008449e9ce91acbeb34a4e6df586  gas/testsuite/gas/cris/rd-arch-2.d
+3b9c63265d7fac6d6907b5dc38d34102  gas/testsuite/gas/cris/rd-arch-3.d
+38de3a7dfccae7982fca66e5b07d1e7e  gas/testsuite/gas/cris/rd-bcnst-pic.d
+bb3d776febb87e96a08c591167f933d2  gas/testsuite/gas/cris/rd-bcnst.d
+887cfb53bfffd62076d06c51c121e50a  gas/testsuite/gas/cris/rd-bcnst.s
+80e0dd503723bf9da8cbcceb422486bf  gas/testsuite/gas/cris/rd-bkw1b.d
+cbd7e8f5a14aaa74c7fb0fd5fb97dbcd  gas/testsuite/gas/cris/rd-bkw2b.d
+02ae58e3a53206f358a097f86db4d126  gas/testsuite/gas/cris/rd-bkw3b.d
+8fedf55754c77ebf28dad9da1f3bd537  gas/testsuite/gas/cris/rd-bound1.d
+7e268acd25fd255f6fdac6b3aef9e2e7  gas/testsuite/gas/cris/rd-bound1.s
+b718a753c99bd3535fd596957d5c0a29  gas/testsuite/gas/cris/rd-bound2.d
+5a62aa3561a6210f53284a44f43854bd  gas/testsuite/gas/cris/rd-bound3.d
+c15f1340900e4aa4b0b9dfbf6040d603  gas/testsuite/gas/cris/rd-bound4.d
+6cb9399f4097d45bf385f6262b67cf78  gas/testsuite/gas/cris/rd-branch-pic.d
+aeeee72d47d9613e56027bea53449559  gas/testsuite/gas/cris/rd-break32.d
+9d20d1ffe68423d44e956e1ca719d13c  gas/testsuite/gas/cris/rd-brokw-pic-1.d
+888cca8e37968255a16fac45625327c2  gas/testsuite/gas/cris/rd-brokw-pic-2.d
+77fc8d4f667372a41674a464a69ad830  gas/testsuite/gas/cris/rd-brokw-pic-3.d
+f883d81fdb8a7d818e7773cbce82d731  gas/testsuite/gas/cris/rd-dw2-1.d
+b840a286e39f0e9d98c77a3779bbb012  gas/testsuite/gas/cris/rd-dw2-10.d
+469e8c9e4f6d2895184bb8b93cad1918  gas/testsuite/gas/cris/rd-dw2-11.d
+d9be8f970588936acb1cc79984f2e24c  gas/testsuite/gas/cris/rd-dw2-12.d
+4203f32173310ca98c76585f571fff6d  gas/testsuite/gas/cris/rd-dw2-13.d
+9ada8fdf55f357d6eb37784821650ecb  gas/testsuite/gas/cris/rd-dw2-14.d
+bee6f173d0fb62f25524bcf086c444c2  gas/testsuite/gas/cris/rd-dw2-15.d
+4de38ba6681210cc01ccd89bf7f24643  gas/testsuite/gas/cris/rd-dw2-2.d
+99b844d0272174dc06ccfa5e27202251  gas/testsuite/gas/cris/rd-dw2-3.d
+8a39a4a868db728fc820f78d73059ff5  gas/testsuite/gas/cris/rd-dw2-4.d
+89faabe6c550c0248f1a42c0696f8bcb  gas/testsuite/gas/cris/rd-dw2-5.d
+4f3b242744fb959fcb9e929fef31b871  gas/testsuite/gas/cris/rd-dw2-6.d
+1f18d3943be18bc19124a6fef9b62416  gas/testsuite/gas/cris/rd-dw2-7.d
+83bc68a39958ef6bb9d3e546a2d962cf  gas/testsuite/gas/cris/rd-dw2-8.d
+b007b686949c2a85642fb3c7560d713d  gas/testsuite/gas/cris/rd-dw2-9.d
+7f7c4d6f55e47ea1789c44510006afc0  gas/testsuite/gas/cris/rd-fragtest-pic.d
+0c92a0ee53d0e2068874cebbed63046b  gas/testsuite/gas/cris/rd-mulbug-1.d
+ea81ec94bfbecb645cccaa9c380070b2  gas/testsuite/gas/cris/rd-pcplus.d
+fa2429278ecbfd6c9c99686de916d5b7  gas/testsuite/gas/cris/rd-pcplus.s
+e30f7a5b9965662525c1c642c2a98895  gas/testsuite/gas/cris/rd-pcrel1.d
+02ca0e5e43a7c43024f98ee7db1e7957  gas/testsuite/gas/cris/rd-pcrel1.s
+1d7701543665de7bac283a25ca3a6cd5  gas/testsuite/gas/cris/rd-pcrel2.d
+f634c6fbd3de5d44a40b1ecb80f5029f  gas/testsuite/gas/cris/rd-pcrel2.s
+abdd4fe964370e37e0b84586ed7ed513  gas/testsuite/gas/cris/rd-pic-1.d
+ccf5b33dcc1af17dea262cf4412b6a7c  gas/testsuite/gas/cris/rd-pic-1.s
+9997d9085ed3b90ecc7ce23efd068a31  gas/testsuite/gas/cris/rd-pic-2.d
+315455e9aa9c47febc500f958bdb9c4b  gas/testsuite/gas/cris/rd-pic-2.s
+4b6b67d7cdf2d0f9d58ef94e0b27eb14  gas/testsuite/gas/cris/rd-ppv1032.d
+f0f81cdede11543b30a1c53ea71c78a7  gas/testsuite/gas/cris/rd-ppv32.d
+60be0bff36db7d7930a178b2deeb8f2e  gas/testsuite/gas/cris/rd-regprefix-1.d
+483b2b941bdac034989505d636c292bb  gas/testsuite/gas/cris/rd-regprefix-1.s
+1d2c07c7a5bee4af6856d5221f15dae0  gas/testsuite/gas/cris/rd-regprefix-1b.d
+5b25b42b26ce4de5bb0452260411806c  gas/testsuite/gas/cris/rd-spr-1.d
+bc96a6e23e68c6999716695ea7a5de9c  gas/testsuite/gas/cris/rd-spr-1.s
+54359bda6ad5b54ac8da19cf65849a97  gas/testsuite/gas/cris/rd-usp-1.d
+4f9127ae060ba8216e152ef0c71c9645  gas/testsuite/gas/cris/rd-usp-1b.d
+7d2796d5da74d021533e3c535893a004  gas/testsuite/gas/cris/rd-v10_32o-1.d
+9e419f5ca2442c3c2f0fdc758cddd4f6  gas/testsuite/gas/cris/rd-v10_32o-2.d
+141e2cc83b0c4d18262f3f7e5d83034a  gas/testsuite/gas/cris/rd-v10_32o-2.s
+c17b6c607d61d7e88dc9e85bd4e1eae2  gas/testsuite/gas/cris/rd-v32-b1.d
+583d342f4ba5db90881fa7ae5db515b9  gas/testsuite/gas/cris/rd-v32-b1.s
+d33ef2b6c1ae0e563ea77429a5b24a03  gas/testsuite/gas/cris/rd-v32-b2.d
+d75bc4a3b0511679908c915c1bf5abd1  gas/testsuite/gas/cris/rd-v32-b2.s
+2ad59b2c6c8fd6b7a76fefcb8da58368  gas/testsuite/gas/cris/rd-v32-b3.d
+54dc335e99beee975da87ea6aea85343  gas/testsuite/gas/cris/rd-v32-b3.s
+e5241edc51b574e736936eb11fc960ac  gas/testsuite/gas/cris/rd-v32-f1.d
+5a84f8fc85efcbcd6d552b383ba26b93  gas/testsuite/gas/cris/rd-v32-f1.s
+199f57615b3169a9c21c729443e7df42  gas/testsuite/gas/cris/rd-v32-i1.d
+35d23542a164995c117645d63cdcd8ce  gas/testsuite/gas/cris/rd-v32-i1.s
+83b9630e3e01575a01c820893180a62b  gas/testsuite/gas/cris/rd-v32-l1.d
+df1a8ccf1739f6c6fcbcadbbd194eee7  gas/testsuite/gas/cris/rd-v32-l1.s
+496c90e0064eefa0cc3b13fa015aab88  gas/testsuite/gas/cris/rd-v32-l3.d
+de3970326a5fc8c860a8229120a69b38  gas/testsuite/gas/cris/rd-v32-l3.s
+3b2607477ce580eeb6d97109aec5ceb9  gas/testsuite/gas/cris/rd-v32-l4.d
+a1709ba73388e4291e6b5ad8fa0f3fd0  gas/testsuite/gas/cris/rd-v32-l4.s
+d5560ad66ae450b2ae04c8dd91dce5b4  gas/testsuite/gas/cris/rd-v32o-1.d
+036b3afb258126aa97cf84ae4b737da9  gas/testsuite/gas/cris/rd-v32s-1.d
+82aaa096d5b7276e9724221f3e4d9432  gas/testsuite/gas/cris/rd-v32s-2.d
+584be3722f0da53d19568ff08b380304  gas/testsuite/gas/cris/rd-v32s-2.s
+65e72621ee681a2f3a439b65c6e2a6bf  gas/testsuite/gas/cris/rd-v32s-3.d
+c06fa82f8e9e3be58811ce113dd36258  gas/testsuite/gas/cris/rd-v32s-3.s
+417cf8983da991dbfbc61613c962e09d  gas/testsuite/gas/cris/rd-v32s-4.d
+f390e89de781fbc35861705fc43dbba1  gas/testsuite/gas/cris/rd-v32s-4.s
+db856e6fc4ae72ab654b0c4f895fe4f3  gas/testsuite/gas/cris/rd-vao-1.d
+5f67e0e704f6ce290303f00d51ef7c55  gas/testsuite/gas/cris/reg-to-mem.d
+c36b1354d494fa3d14e0f53cbdad14d1  gas/testsuite/gas/cris/regprefix-err-1.s
+a523421fc87b21ff25f964a228e6aac2  gas/testsuite/gas/cris/regreg.d
+8763ceed68b5ad9786d5bb3f89360751  gas/testsuite/gas/cris/regreg.s
+f0fc22a773b1b891a2606a280254433f  gas/testsuite/gas/cris/return.d
+618b1c16f597a8c927d63668befe360c  gas/testsuite/gas/cris/return.s
+b8f8d6862937a6279c42fa72c492b792  gas/testsuite/gas/cris/scc.d
+41907f8e76731a8a8f634b2051a7ba39  gas/testsuite/gas/cris/scc.s
+590ff33c1d17500de6e318d5c5cc182e  gas/testsuite/gas/cris/sep-err-1.s
+fa730ce7e78cb91f38aba30b04251950  gas/testsuite/gas/cris/sep-err-2.s
+3a91d88ae724651f642323a1028dfe19  gas/testsuite/gas/cris/sep-err-3.s
+951d228072201ef134c86189dd1e39cd  gas/testsuite/gas/cris/separator.d
+e929807163f06ba801c4d3d98eef047a  gas/testsuite/gas/cris/separator.s
+4ed019e17046994aef096b29d48b679c  gas/testsuite/gas/cris/shexpr-1.d
+b75dd310987e66aa243a2bdffc008924  gas/testsuite/gas/cris/shexpr-1.s
+0b4ab8bdfecfb175308776f1b30f9267  gas/testsuite/gas/cris/sreg-to-x.d
+79761ddc12c3f3bd14ed8b6133fd670f  gas/testsuite/gas/cris/string-1.d
+ba96569c4c3a69683f9eda2f2e804ac9  gas/testsuite/gas/cris/string-1.s
+9580648fead8dc356cede71f7bfaae5b  gas/testsuite/gas/cris/string-2.d
+6ddd84549c2ae105a7ffc9e339d1e37e  gas/testsuite/gas/cris/string-2.s
+8976b9e2fc8cf3b2f9f2237caaf79ffd  gas/testsuite/gas/cris/test.d
+52f4d98cdb0aaf81048821675acc4381  gas/testsuite/gas/cris/unimplemented.d
+9ff0ef66a3c7733fd200cc4317d56ad7  gas/testsuite/gas/cris/unimplemented.s
+4fa062b6659daef0d47160ec64bd62a5  gas/testsuite/gas/cris/unop-mem.d
+65f2499748e491be121588287a7f3e05  gas/testsuite/gas/cris/unop.s
+75063b64ce4c7ce0ccb58e946587b1fb  gas/testsuite/gas/cris/us-err-1.s
+57983a53289a7da6c1ed399d7fe0a3e9  gas/testsuite/gas/cris/us-err-2.s
+89b77f3261be6a0b6f7c2117ec573b35  gas/testsuite/gas/cris/us-err-3.s
+f6b7268bebfffff3bedd6745403a94ad  gas/testsuite/gas/cris/v32-err-1.s
+8d4065621889f2c0f5030cb4a935ba0a  gas/testsuite/gas/cris/v32-err-10.s
+445af9b99d3d33f3f421bb2757e4ff9b  gas/testsuite/gas/cris/v32-err-11.s
+7a56b86ef049cf26c8812cc94991693d  gas/testsuite/gas/cris/v32-err-2.s
+2a130988c660af456beb51f57ee587c7  gas/testsuite/gas/cris/v32-err-3.s
+48167e521e41a2b20e643adaf0fc653a  gas/testsuite/gas/cris/v32-err-4.s
+8590a58794f69782cb98bbc7b4287fd1  gas/testsuite/gas/cris/v32-err-5.s
+e6775fffe200cf9bb051f4155b8d91e3  gas/testsuite/gas/cris/v32-err-6.s
+5b258ee6efc6766cadf23398030e1e79  gas/testsuite/gas/cris/v32-err-7.s
+cac65aedce61344d081bc1f9cbf15806  gas/testsuite/gas/cris/v32-err-8.s
+c2d8c1083f8564bad89df2010a5d253a  gas/testsuite/gas/cris/v32-err-9.s
+2a5f4f6e4b310f1d6d19ddc58bfac9ec  gas/testsuite/gas/cris/x-to-byte-sreg.d
+7577002f17af669f7a8144e7858ce3f1  gas/testsuite/gas/cris/x-to-dcr1-sreg.d
+8281e49c3dd60d6d278fbb9440e43e04  gas/testsuite/gas/cris/x-to-dword-sreg.d
+69a3a4886bef70933479dc77967ea4a4  gas/testsuite/gas/cris/x-to-word-sreg.d
+cef784146f1342f527792475c877aae7  gas/testsuite/gas/crx/allinsn.exp
+3e987ea3eacfcf73365affb85a80711e  gas/testsuite/gas/crx/arith_insn.d
+aba23cd9217a02e80972420bccf254e2  gas/testsuite/gas/crx/arith_insn.s
+b124860509067a033fa183b2ad52d2ff  gas/testsuite/gas/crx/beq_insn.d
+cbb2a2a8ebdd76c365b03c090d6cb349  gas/testsuite/gas/crx/beq_insn.s
+7cb7bdb36a00efc14f2d9d7f5e9a4320  gas/testsuite/gas/crx/bit_insn.d
+a9b88867e985c7db06ad15f8aed69fca  gas/testsuite/gas/crx/bit_insn.s
+2b30807be764914b1a7fbbced315558e  gas/testsuite/gas/crx/br_insn.d
+5792c9d2f7ece4e813e9c05f17ad8b50  gas/testsuite/gas/crx/br_insn.s
+a5a2bacc16b436e31ff8f4394ae83a4a  gas/testsuite/gas/crx/cmov_insn.d
+63c662f08a3c53d41bdb1cd589911125  gas/testsuite/gas/crx/cmov_insn.s
+4725fa0812c37cafe5665570eb980a3e  gas/testsuite/gas/crx/cmpbr_insn.d
+5a15f070cce2a4aaa04f05391dc94f07  gas/testsuite/gas/crx/cmpbr_insn.s
+c24edb48e5f07071ef62edc096db1b92  gas/testsuite/gas/crx/cop_insn.d
+8267a9f074d80bef654bc891bfbf3c4e  gas/testsuite/gas/crx/cop_insn.s
+3f31371f16ed2712dff17f56418fe8f1  gas/testsuite/gas/crx/gas-segfault.d
+a4be774abcf6e0707218424a9c203403  gas/testsuite/gas/crx/gas-segfault.s
+5a36de150e79a77e8b5f65751ba36cb6  gas/testsuite/gas/crx/jscond_insn.d
+42a3455c0057de5509e92e528b5634a7  gas/testsuite/gas/crx/jscond_insn.s
+b18f9705c8d99b0d9ee4e2c06aa4c45f  gas/testsuite/gas/crx/list_insn.d
+df6b3c2f77acba7e752cf5a1d0742608  gas/testsuite/gas/crx/list_insn.s
+fc9912552067eac4342d4521f193a797  gas/testsuite/gas/crx/load_stor_insn.d
+2090bee5c0dc703ebbcfb784a806a0ca  gas/testsuite/gas/crx/load_stor_insn.s
+bcdceae61722cbe0b8237640e2467e2d  gas/testsuite/gas/crx/misc_insn.d
+82dc4fb42dcadde5747959f171498f91  gas/testsuite/gas/crx/misc_insn.s
+3e1001d41b139bba1668d84c1e8e6f9c  gas/testsuite/gas/crx/no_op_insn.d
+bc07c25881db9dc098eb887754269119  gas/testsuite/gas/crx/no_op_insn.s
+a154b3ae513a0e46db59528b375bd448  gas/testsuite/gas/crx/shift_insn.d
+3a16320540ca68bf9f993705955f4e7d  gas/testsuite/gas/crx/shift_insn.s
+a6735576ee0c12f574d2b2c059292050  gas/testsuite/gas/d10v/address-001.d
+7d9144fec165ca66fe3ad1a06a5c735d  gas/testsuite/gas/d10v/address-001.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-002.l
+948ab3f723a9f6081583dc3dbb570a54  gas/testsuite/gas/d10v/address-002.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-003.l
+9bf77c8372dd9b5ea2e9a272454cc74c  gas/testsuite/gas/d10v/address-003.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-004.l
+4a1380df3b54fe89f70fcca01058e7a6  gas/testsuite/gas/d10v/address-004.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-005.l
+fdaa4bfe9faf758e3a0a3ce02fa4bdad  gas/testsuite/gas/d10v/address-005.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-006.l
+bb98abbfe16da4e235bd56dbb6a30bae  gas/testsuite/gas/d10v/address-006.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-007.l
+7b596f346fb988718153666bf5a0895b  gas/testsuite/gas/d10v/address-007.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-008.l
+0f45aff1c35f0d1d2f59af79d4ef748c  gas/testsuite/gas/d10v/address-008.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-009.l
+b50ad1bd41b6af810bd6b8201d2f46c9  gas/testsuite/gas/d10v/address-009.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-010.l
+3a4f4f6a0ffa505ba3563f71b05d3a3e  gas/testsuite/gas/d10v/address-010.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-011.l
+685a24a9aa24fcd5d590933af5b47543  gas/testsuite/gas/d10v/address-011.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-012.l
+34a95c3e0aea73e7e3b6547fe793efd1  gas/testsuite/gas/d10v/address-012.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-013.l
+0b14438b4898eedbf765234cd480d7ff  gas/testsuite/gas/d10v/address-013.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-014.l
+aa095fa01b6c38d02cfcc448316e9a6c  gas/testsuite/gas/d10v/address-014.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-015.l
+2506f8c079a983cb132717ef73c80fa3  gas/testsuite/gas/d10v/address-015.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-016.l
+4f27f1bc67b609681cbfe5f684b11b6a  gas/testsuite/gas/d10v/address-016.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-017.l
+9262a32c20f38112a0c08e9533b5547b  gas/testsuite/gas/d10v/address-017.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-018.l
+5cb688834e2f1a9cf56595e1a216e521  gas/testsuite/gas/d10v/address-018.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-019.l
+4be0863b6f79110432da78f2e973d519  gas/testsuite/gas/d10v/address-019.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-020.l
+d371cb2c059fb37c28c157a3f8106622  gas/testsuite/gas/d10v/address-020.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-021.l
+4ad7b1e71bf3ac5e7295503ead61a165  gas/testsuite/gas/d10v/address-021.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-022.l
+0f63425dd36dc9d0f9003eb66776a0ad  gas/testsuite/gas/d10v/address-022.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-023.l
+1f0b933d6ed26d0670764491d57675a1  gas/testsuite/gas/d10v/address-023.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-024.l
+fedaf4c469f76a0c29d38efb8ca976e9  gas/testsuite/gas/d10v/address-024.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-025.l
+067d35e555edcf186ffd68315f215f52  gas/testsuite/gas/d10v/address-025.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-026.l
+76917214750d255c71ebdf890b8c56e6  gas/testsuite/gas/d10v/address-026.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-027.l
+43657705163613ef157c7912c1df27e6  gas/testsuite/gas/d10v/address-027.s
+f10bfd419dd15e2a9cb5a3e58825089d  gas/testsuite/gas/d10v/address-028.l
+a4c4fb94bbb8320b11ec9dd48ae27d2d  gas/testsuite/gas/d10v/address-028.s
+f10bfd419dd15e2a9cb5a3e58825089d  gas/testsuite/gas/d10v/address-029.l
+25a6da12fb57ce20919d3cad3599abe5  gas/testsuite/gas/d10v/address-029.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-030.l
+d0c93960ea840e21f8780c52bb442e8f  gas/testsuite/gas/d10v/address-030.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-031.l
+97ea79a8423cee83fe06562c647bc94e  gas/testsuite/gas/d10v/address-031.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-032.l
+d4e7dc3e5820dd6e0996f4893a911409  gas/testsuite/gas/d10v/address-032.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-033.l
+2d3547a90bf1a21b53a970794821d359  gas/testsuite/gas/d10v/address-033.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-034.l
+897b7c7073bd4d6031db1db40c95b179  gas/testsuite/gas/d10v/address-034.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-035.l
+f081717902bdff5adfb1b5325c01fb12  gas/testsuite/gas/d10v/address-035.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-036.l
+575f3a5fd93fe848f910e9addd328afb  gas/testsuite/gas/d10v/address-036.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-037.l
+09328faa8faa3c898aca59816c077fd7  gas/testsuite/gas/d10v/address-037.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-038.l
+3a9ab467bc5e75d7c5a4ea9492d1810c  gas/testsuite/gas/d10v/address-038.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-039.l
+a278ead57d83625ded4d92bdad8f2be0  gas/testsuite/gas/d10v/address-039.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-040.l
+4b42438d94a456bd985090fa4033ad72  gas/testsuite/gas/d10v/address-040.s
+86de287f420e8e1142a605237aefa7c1  gas/testsuite/gas/d10v/address-041.l
+e2bf48e0e29a2b3911c5320c140896ec  gas/testsuite/gas/d10v/address-041.s
+96f8269730cb7b20bff497a07ccd22ae  gas/testsuite/gas/d10v/control-001.d
+31e42fb6ff602fa691470418a63bf019  gas/testsuite/gas/d10v/control-001.s
+bbf8b806db80d0c9ec9a3ef6e6f3ef7e  gas/testsuite/gas/d10v/d10v.exp
+393b4ca54f7246945a011a41161f4779  gas/testsuite/gas/d10v/error-001.d
+c6fc3df219367e9406b8e9f49afb7691  gas/testsuite/gas/d10v/error-001.s
+b28ba5ae138c1b9870b87d5d552ce19f  gas/testsuite/gas/d10v/error-002.d
+7757def524bdcdf4fb13ed30ea1313c5  gas/testsuite/gas/d10v/error-002.s
+34be3bde4d7abf2a2af2360598f0439e  gas/testsuite/gas/d10v/immediate-001.d
+2f7c161f6a15281d77b748199d7dcdcc  gas/testsuite/gas/d10v/immediate-001.s
+5cfb3cbbf2cda20ef538166610ad042b  gas/testsuite/gas/d10v/immediate-002.d
+d1486aa919e0b677eb9471e433c71e05  gas/testsuite/gas/d10v/immediate-002.s
+68c670aec179411c8fc6692ea96c4340  gas/testsuite/gas/d10v/immediate-003.d
+1694322013c7bff57ff63937eec8cf91  gas/testsuite/gas/d10v/immediate-003.s
+eebde16759c4128196a540f786916288  gas/testsuite/gas/d10v/immediate-004.d
+d554505672cfee59b2b50ce774d85125  gas/testsuite/gas/d10v/immediate-004.s
+9f62d1c8d26587caa11e52225387d546  gas/testsuite/gas/d10v/immediate-005.d
+4c9cfe5e63f84990138cab6bbe7f3800  gas/testsuite/gas/d10v/immediate-005.s
+557b913559a46f6a4ed22bdc33fa0d98  gas/testsuite/gas/d10v/immediate-006.d
+beb3253b69a29d40b68529b496a16925  gas/testsuite/gas/d10v/immediate-006.s
+cae8c0e3d71ef8fecaeac082fc3c9db9  gas/testsuite/gas/d10v/immediate-007.d
+666d4c75265b6bb9d4a07d772c61fc36  gas/testsuite/gas/d10v/immediate-007.s
+0004da131d3e5488db3b4b89bd259250  gas/testsuite/gas/d10v/inst.d
+bbe173f89d3ad611d31b7cf43d88291c  gas/testsuite/gas/d10v/inst.s
+703900315d829359b771c6c7d2ce84dd  gas/testsuite/gas/d10v/instruction_packing-001.d
+a8a4aed02672bf45f5f2ff57b8e2522e  gas/testsuite/gas/d10v/instruction_packing-001.s
+bb8ed73cacebacaa465da8e059b49cd7  gas/testsuite/gas/d10v/instruction_packing-002.d
+eaccafae10a88e66fe63b2519185ecd4  gas/testsuite/gas/d10v/instruction_packing-002.s
+13d85864087099bb01ecd6e55e20d79d  gas/testsuite/gas/d10v/instruction_packing-003.d
+ad736e41ad341cfe730a1fb3e933d09c  gas/testsuite/gas/d10v/instruction_packing-003.s
+f4b3361179e57452f47cf5e0572d27e3  gas/testsuite/gas/d10v/instruction_packing-004.d
+58ecf26d8fe2178ba5532734e55a43b0  gas/testsuite/gas/d10v/instruction_packing-004.s
+c2c630337066f77375fb3628d4c755fc  gas/testsuite/gas/d10v/instruction_packing-005.d
+566863f704902f29a0e831a8abeb4a2c  gas/testsuite/gas/d10v/instruction_packing-005.s
+e6c0acb54a5f28a93b2b45178f4d1584  gas/testsuite/gas/d10v/instruction_packing-006.d
+cc4a736bc152e266c2b882f9204f2022  gas/testsuite/gas/d10v/instruction_packing-006.s
+aa6486f80a5da199434db5ca3215a716  gas/testsuite/gas/d10v/instruction_packing-007.d
+9f04908e67fb3d025225b796d2900c5a  gas/testsuite/gas/d10v/instruction_packing-007.s
+2bbe1f59eea6fcea81003dddb81af982  gas/testsuite/gas/d10v/instruction_packing-008.d
+db8d769826d613ef6002637c9972c97c  gas/testsuite/gas/d10v/instruction_packing-009.d
+d3dcf857bf3c33952c1071f8683fa604  gas/testsuite/gas/d10v/instruction_packing-010.d
+d54202c4d33b6c5958d75017b61e3758  gas/testsuite/gas/d10v/instruction_packing.d
+ed5a04fc691e6a2f4d4c811292306714  gas/testsuite/gas/d10v/instruction_packing.s
+f5ab3a0ce647dd181e77661c66260821  gas/testsuite/gas/d10v/label-001.d
+19e726902a0cd1ec9e5a2d2f9cb0d474  gas/testsuite/gas/d10v/label-001.s
+f7bcb24ed525edb26ec6424d1a242848  gas/testsuite/gas/d10v/warning-001.d
+8c205e27f60d4cdbb9293c8a69d47ac6  gas/testsuite/gas/d10v/warning-001.s
+de9084f1a7e1dc8180d6b8204d46ce35  gas/testsuite/gas/d10v/warning-002.d
+b4bad3f3fb9e81f220e4522b356eb039  gas/testsuite/gas/d10v/warning-002.s
+5043c3c8800c94c125d6b9a1a6351beb  gas/testsuite/gas/d10v/warning-003.d
+ddb47cffbc7242287346181dd0d6da04  gas/testsuite/gas/d10v/warning-003.s
+38c9412fbed21d1b63d464d26266d5e4  gas/testsuite/gas/d10v/warning-004.d
+90659d9da2c0b85164b96fec93415117  gas/testsuite/gas/d10v/warning-004.s
+ad9c8aad9e2e537a648abb7912129b10  gas/testsuite/gas/d10v/warning-005.d
+aa87347e149cf1b8347ea1e86a2c5b3f  gas/testsuite/gas/d10v/warning-005.s
+97b968299e90d656d819df84b9f98fd4  gas/testsuite/gas/d10v/warning-006.d
+6bd930772199c5e812b362dbaf4e19de  gas/testsuite/gas/d10v/warning-006.s
+66834da80e3ee27cefb5a0a9a7312c66  gas/testsuite/gas/d10v/warning-007.d
+aa87347e149cf1b8347ea1e86a2c5b3f  gas/testsuite/gas/d10v/warning-007.s
+c52224928ec9e958cc34fc49bd846467  gas/testsuite/gas/d10v/warning-008.d
+ffb56773428f111baa5d8d04866a3c45  gas/testsuite/gas/d10v/warning-008.s
+99eafcb9a6d69962fc3e9faebe0d6036  gas/testsuite/gas/d10v/warning-009.d
+ee0c3a9bec78dd98e564a69b3ee84854  gas/testsuite/gas/d10v/warning-009.s
+ff2a03040d31cfce536106965db07150  gas/testsuite/gas/d10v/warning-010.d
+f587eb6b2169718f85e6fac4a2bb5741  gas/testsuite/gas/d10v/warning-010.s
+54e69f5600e8a2da615cc33a573d2777  gas/testsuite/gas/d10v/warning-011.d
+09899975395b8d0ca1dcea3ead5a9a09  gas/testsuite/gas/d10v/warning-011.s
+5e1b0ccfbcae985f0372c972168c0c63  gas/testsuite/gas/d10v/warning-012.d
+2b735788395407f53e9cfb276465c6cf  gas/testsuite/gas/d10v/warning-012.s
+3ea377bcaed87eeaba53c80f3f187312  gas/testsuite/gas/d10v/warning-013.d
+e7846e49161841e07c02500c7cb45f9e  gas/testsuite/gas/d10v/warning-013.s
+982847efd277460e4597950f90c52cd8  gas/testsuite/gas/d10v/warning-014.d
+a43dda7cb4b0b5a67a8676b056d0fbd3  gas/testsuite/gas/d10v/warning-014.s
+bb49a7527c2b46bd80f4b02c80183c7b  gas/testsuite/gas/d10v/warning-015.d
+8a64c03c9a5f8060e32a54de143aa1c4  gas/testsuite/gas/d10v/warning-016.d
+9ad455587f29fa070e7fb79919fa9b36  gas/testsuite/gas/d10v/warning-016.s
+70e6bc585c537af6bb111f62376591f0  gas/testsuite/gas/d10v/warning-017.d
+cec23f7775944e94bef9d3c411959c8c  gas/testsuite/gas/d10v/warning-017.s
+75ce932b8d1229797b67ac50709200d4  gas/testsuite/gas/d10v/warning-018.d
+d249a48a68cf1de5657dd22a3abd529f  gas/testsuite/gas/d10v/warning-018.s
+bffc20273f7fc4a8784a60c939f7ac55  gas/testsuite/gas/d10v/warning-019.d
+b889bbac23357064c465d79fbef70546  gas/testsuite/gas/d10v/warning-019.s
+d7768075c27bdbdff4a1347c6b1746d0  gas/testsuite/gas/d30v/bittest.d
+a15d68d40c502f8fb891fb71e6a331b4  gas/testsuite/gas/d30v/align.d
+8ab5843e51782cc8150825c0aed13da9  gas/testsuite/gas/d30v/align.s
+8a9471a2ce14a0c94c7af09fd8cf6f7c  gas/testsuite/gas/d30v/array.d
+afb9ee8fc39b6c6a3b5a607f0958dd2b  gas/testsuite/gas/d30v/array.s
+36ccce5414200c372215e06d70d6aad0  gas/testsuite/gas/d30v/bittest.l
+4b9689db23a80dfeeb4e6217aaf0a8ad  gas/testsuite/gas/d30v/bittest.s
+df0c590e221f5dd7900a1c128978ecea  gas/testsuite/gas/d30v/d30.exp
+d57a8494033a5610ebb1ec72067db1a2  gas/testsuite/gas/d30v/guard-debug.d
+739c4467a3344e1787f7b4bdbf919705  gas/testsuite/gas/d30v/guard-debug.s
+24a691232054571885f6c30112e51658  gas/testsuite/gas/d30v/guard.d
+59254ab788d218d38c2c0d6e71251e76  gas/testsuite/gas/d30v/guard.s
+748040da85ada059191e19f00e2488f6  gas/testsuite/gas/d30v/inst.d
+39cdbdd6bd65bb5930b303daa6d76dcd  gas/testsuite/gas/d30v/inst.s
+02e401be332104808af7c8300005fe7d  gas/testsuite/gas/d30v/label-debug.d
+7f982990c748276d508b09332cdae4f6  gas/testsuite/gas/d30v/label-debug.s
+c483a48ce51ab77c8dee11cfab64b50a  gas/testsuite/gas/d30v/label.d
+7f982990c748276d508b09332cdae4f6  gas/testsuite/gas/d30v/label.s
+26406f9a3cbcac3df375ce96f2bf6d60  gas/testsuite/gas/d30v/mul.d
+d16bd2d8de2333b4d7ee533c7fbdb1c4  gas/testsuite/gas/d30v/mul.s
+3f5d45bfe5794cd78197dab5eba2c4e6  gas/testsuite/gas/d30v/opt.d
+cd67e61c7ea236940d9b65c880a564b4  gas/testsuite/gas/d30v/opt.s
+7ede5044d404df6c8e7e4397218784b3  gas/testsuite/gas/d30v/reloc.d
+2ed511260d2382d512257ccd75e39887  gas/testsuite/gas/d30v/reloc.s
+b37a654d4656a56a2e285628e3dcc39a  gas/testsuite/gas/d30v/serial.l
+26005134b177b676ea077b771aa246cc  gas/testsuite/gas/d30v/serial.s
+64a145c82e55c3ee20d376ef9575ddad  gas/testsuite/gas/d30v/serial2.l
+4c96fc10e8ae0de631d7681473ac66eb  gas/testsuite/gas/d30v/serial2.s
+2f580294b862674be54215921b4f726a  gas/testsuite/gas/d30v/serial2O.l
+4c96fc10e8ae0de631d7681473ac66eb  gas/testsuite/gas/d30v/serial2O.s
+7fc2a4f0d0ed0a1e698ef2e351bacd11  gas/testsuite/gas/d30v/warn_oddreg.l
+04cb44d9a5a4e2791243c475947c1dfa  gas/testsuite/gas/d30v/warn_oddreg.s
+e05430230b3286dc1934d1143d7dc0c1  gas/testsuite/gas/dlx/alltests.exp
+127efafe2527347fb64508e20cf7edf6  gas/testsuite/gas/dlx/branch.d
+b975e32977a78732d7f30c7df8a2c435  gas/testsuite/gas/dlx/branch.s
+4bbefc6e223f23c5d05239b6ca0e8332  gas/testsuite/gas/dlx/itype.d
+8465c3b2b019e9a4abb4d73ce4504525  gas/testsuite/gas/dlx/itype.s
+a22e2d08b6e6db063f2da8dbf367a0d8  gas/testsuite/gas/dlx/lhi.d
+39d88e8c2a6293235b494d613a3915b5  gas/testsuite/gas/dlx/lhi.s
+618d2e0a1cd63a9c64d4944ce69905a7  gas/testsuite/gas/dlx/load.d
+d88a4c8eb6d282949b5295d826d76311  gas/testsuite/gas/dlx/load.s
+17da9fc13d8f2ccbe72fc26797011a5c  gas/testsuite/gas/dlx/lohi.d
+7270daf39763944ec620ee05dcf2f778  gas/testsuite/gas/dlx/lohi.s
+7116badc2e0160e1a8333f8995323b08  gas/testsuite/gas/dlx/rtype.d
+628f043cea1680e500b5ac0c309c91e9  gas/testsuite/gas/dlx/rtype.s
+6d63b30eb9f2666bb4ac2456afb427c6  gas/testsuite/gas/dlx/store.d
+336400205f3c98f8a8d2200e3e6e0fc3  gas/testsuite/gas/dlx/store.s
+3aa51e33fc3c4fb00d9f02ab8b6c1412  gas/testsuite/gas/elf/ehopt0.d
+67a6ccaa7bc82ccb6a932a7231db4059  gas/testsuite/gas/elf/ehopt0.s
+6e20747affde2860d0393fb64bff15d9  gas/testsuite/gas/elf/elf.exp
+075bcea3ebc7d9e53c3f6ed79210d4bb  gas/testsuite/gas/elf/group0.s
+f803acac9460eacd6b93919b88e10f68  gas/testsuite/gas/elf/group0a.d
+785c5bcadf20cda4884a9cce4895d193  gas/testsuite/gas/elf/group0b.d
+21207251ef2eda07347adf8e8edb60ba  gas/testsuite/gas/elf/group1.s
+3ac6af2581acda74d5ca2346606a2c34  gas/testsuite/gas/elf/group1a.d
+0b1fe4fb948a833a7b349d6185336a69  gas/testsuite/gas/elf/group1b.d
+3e5cf7b8de55f655bac59c3a542a01dd  gas/testsuite/gas/elf/redef.d
+080d4cd3dac37ed1af74006cc7d9c39f  gas/testsuite/gas/elf/redef.s
+38c7c566f0cc782cbc6f236d608d8a52  gas/testsuite/gas/elf/section0.d
+94799bbca15898e61e62e52d81f0bcca  gas/testsuite/gas/elf/section0.s
+7897d84ff1b06d4d3777605d214abc40  gas/testsuite/gas/elf/section1.d
+b892afd90c0c8f8d9b5486dcd484d815  gas/testsuite/gas/elf/section1.s
+5c0da9476fde1f1fb1257eb5a7c1864b  gas/testsuite/gas/elf/section2.e
+3412d0f90f486b30ef4ef1f5f42f22ee  gas/testsuite/gas/elf/section2.e-armeabi
+f82ade339581be2eb8093800b7447d72  gas/testsuite/gas/elf/section2.e-m32r
+d732c7b1b50b540cd3426adea6c3b1b1  gas/testsuite/gas/elf/section2.e-mips
+3b2d7698188ae8819ded1fd84a97fea1  gas/testsuite/gas/elf/section2.e-miwmmxt
+f3e508e3e2bbb1749ab1e9e1c23289af  gas/testsuite/gas/elf/section2.l
+5a42c78c814dadc7e4a11cba2a795f97  gas/testsuite/gas/elf/section2.s
+4db32453c693fea535afeeecfdc98d26  gas/testsuite/gas/elf/section3.d
+ad3086bd2d519f6116efe933469ccf23  gas/testsuite/gas/elf/section3.s
+8e6884c2a4fefeb876b074f1ff909713  gas/testsuite/gas/elf/section4.d
+c8f62533d742858880692eebc43aeba6  gas/testsuite/gas/elf/section4.s
+f96c6ef9cb2e1718e696c7c2a7894dc7  gas/testsuite/gas/elf/section5.e
+fb87f09ddcaa8a6900b9fa4605a08122  gas/testsuite/gas/elf/section5.l
+171e7d89c21777c752f738470cc015d4  gas/testsuite/gas/elf/section5.s
+f515cccf76165e218e62e79d2281c712  gas/testsuite/gas/elf/struct.d
+6f56598922a76124d2a548fab88ba85b  gas/testsuite/gas/elf/struct.s
+416fc65ca0766b5c8ac9bc0ab7a587f6  gas/testsuite/gas/elf/symver.d
+335a17f208c2cc7ba886bde49f02c8ca  gas/testsuite/gas/elf/symver.s
+7eaa688ffc454ecb0b782055021d337d  gas/testsuite/gas/elf/type.e
+caca0a639dc43756fcd4cbfbc74b959a  gas/testsuite/gas/elf/type.s
+8f760ce7cf5b0bcea1fd0c123134bc4b  gas/testsuite/gas/fr30/allinsn.d
+f43f517834a1bcead42dab25e75f41d0  gas/testsuite/gas/fr30/allinsn.exp
+fdf34a19cb21c9273e472a9bb4c9e97f  gas/testsuite/gas/fr30/allinsn.s
+4a1055775cc266d1a0458ce050e653d3  gas/testsuite/gas/fr30/fr30.exp
+b0855b80218f5a929ddc68a70763ee63  gas/testsuite/gas/frv/allinsn.d
+6ca3dc9af202bb2aa312e53693e53e4b  gas/testsuite/gas/frv/allinsn.exp
+92314edf2be71ae28723da713527c08c  gas/testsuite/gas/frv/allinsn.s
+456f60acbaf3cd31306a78c6de9d687a  gas/testsuite/gas/frv/fdpic.d
+4a756f9eddacb55c29e7749c7d329fc6  gas/testsuite/gas/frv/fdpic.s
+fbd858a348c03a817f91d1baaf188efa  gas/testsuite/gas/frv/fr405-insn.d
+6c750867adf0ae2771b86d450aaa4c76  gas/testsuite/gas/frv/fr405-insn.l
+33aa70a706c8c1e4947c31bf4d6d7060  gas/testsuite/gas/frv/fr405-insn.s
+72828c0c9b13cc77056a142cd9cd12a7  gas/testsuite/gas/frv/fr450-insn.d
+12c5b76c970eef88a502b59f99ccecf3  gas/testsuite/gas/frv/fr450-insn.l
+37f3a8bb1162bec7a4743a32734fa811  gas/testsuite/gas/frv/fr450-insn.s
+6b0037374ce715d5ea2edf9a2dabcc83  gas/testsuite/gas/frv/fr450-media-issue.l
+736a21f8dda496bd1603011ea7630639  gas/testsuite/gas/frv/fr450-media-issue.s
+d8784a35ef3909a48bd09d1106ccffb3  gas/testsuite/gas/frv/fr450-spr.d
+971a9c1f4690b7a705b50272aeb714a9  gas/testsuite/gas/frv/fr450-spr.s
+c5885c2815100c4a3407a1451cf15e77  gas/testsuite/gas/frv/fr550-pack1.d
+fc5ef29bc53543bbebe47be7f19f68bf  gas/testsuite/gas/frv/fr550-pack1.s
+837f9d1dd1571d4c81bf1766f9f99407  gas/testsuite/gas/frv/reloc1.d
+3a06ca65e67fbb7f94e33c8c7c6b46f2  gas/testsuite/gas/frv/reloc1.s
+2924c535df55b6a32889011860a29689  gas/testsuite/gas/h8300/addsub.s
+8b119bf28b7ba30807a8850b9edf96d3  gas/testsuite/gas/h8300/addsubh.s
+493e1fa4afffc9276ad5d14b0530d6fb  gas/testsuite/gas/h8300/addsubrxcheck.s
+5b8c73d8de33afa02ff707f67065a1ef  gas/testsuite/gas/h8300/addsubs.s
+d86b31775e7398f8bc4d446d9d0a017b  gas/testsuite/gas/h8300/bitops1.s
+15fd0f35907c986489fa36bddebbb526  gas/testsuite/gas/h8300/bitops1h.s
+584a7cd8ad886afe1f0d2f9b5d817467  gas/testsuite/gas/h8300/bitops1s.s
+30ff0841f2e26ebb8e15aa636a64e4a5  gas/testsuite/gas/h8300/bitops2.s
+a741bf520d8175248d8c363dd660cad9  gas/testsuite/gas/h8300/bitops2h.s
+2e137c2f7cf12903edc7dd00bfe6d409  gas/testsuite/gas/h8300/bitops2s.s
+3d15e82abb0f85bdfacdbb653e083999  gas/testsuite/gas/h8300/bitops3.s
+82edeaa989ae932805db0608f8cc235a  gas/testsuite/gas/h8300/bitops3h.s
+f5395cd9806896db584e3fbbdb548389  gas/testsuite/gas/h8300/bitops3s.s
+6249a5e4419949642c98aaa14f3d8b10  gas/testsuite/gas/h8300/bitops4.s
+5a394a0dbef8a7f14e4294b4dcfed8a5  gas/testsuite/gas/h8300/bitops4h.s
+791083648e92754b6c62f3201681ece1  gas/testsuite/gas/h8300/bitops4s.s
+23aecc0c8af29a4bf18f97a9607677d5  gas/testsuite/gas/h8300/branch-coff.s
+e4b78fbf88f2a797780cdbc116842e82  gas/testsuite/gas/h8300/branch-elf.s
+1f02561f75f4c45679ba42b0492cc58a  gas/testsuite/gas/h8300/branchh-coff.s
+1f02561f75f4c45679ba42b0492cc58a  gas/testsuite/gas/h8300/branchh-elf.s
+e251ed292c39572dbd1364f73d5fd32e  gas/testsuite/gas/h8300/branchs-coff.s
+e251ed292c39572dbd1364f73d5fd32e  gas/testsuite/gas/h8300/branchs-elf.s
+f0e5262ac4229fe320614df5a40f35e9  gas/testsuite/gas/h8300/cbranch.s
+30d75e5d8c2ef426fe42a377456bda0b  gas/testsuite/gas/h8300/cbranchh.s
+5fdbcffb87056d813eafd925d9c763f0  gas/testsuite/gas/h8300/cbranchs.s
+ff5dba96cd99c306ec26780fc9069d8a  gas/testsuite/gas/h8300/cmpsi2.s
+3be6267a929c5b26e8f4d69491d0877a  gas/testsuite/gas/h8300/compare.s
+b2030d679f34f4563b5a00cbe2c1d072  gas/testsuite/gas/h8300/compareh.s
+94eec517c2a5cefb40f7bcc8a338a83a  gas/testsuite/gas/h8300/compares.s
+437e6b6cef5f904dd70a700cd486f7ea  gas/testsuite/gas/h8300/decimal.s
+9b32251ca7b543949470558b507ca6b3  gas/testsuite/gas/h8300/decimalh.s
+56fe63d196d46b2f8dc1c4bfca0c351d  gas/testsuite/gas/h8300/decimals.s
+0c35be5ae497429ff49aa3076805fda3  gas/testsuite/gas/h8300/divmul.s
+d37984dfb136ed1c465a17ac6ff8cbb4  gas/testsuite/gas/h8300/divmulh.s
+d37984dfb136ed1c465a17ac6ff8cbb4  gas/testsuite/gas/h8300/divmuls.s
+f813008dac0b658d469085e795844664  gas/testsuite/gas/h8300/extendh.s
+4d7497fb959f22fd9f7b666d4c61eee6  gas/testsuite/gas/h8300/extends.s
+a9838bcffe296065862a083c5cdb2072  gas/testsuite/gas/h8300/ffxx1-coff.d
+1d4afbfb9c48d8842384c1908e31c40f  gas/testsuite/gas/h8300/ffxx1-coff.s
+a4b0d327d0a7cd6348b06fc021bdacce  gas/testsuite/gas/h8300/ffxx1-elf.d
+1d4afbfb9c48d8842384c1908e31c40f  gas/testsuite/gas/h8300/ffxx1-elf.s
+76a7b600464e8977fc9663225536fd41  gas/testsuite/gas/h8300/h8300-coff.exp
+a2ee2d306e1cf5965164cdb2483bdeed  gas/testsuite/gas/h8300/h8300-elf.exp
+62f29aeae81e598d86ec618f43892b50  gas/testsuite/gas/h8300/h8300.exp
+b2c1b7579c1a011689e0f84dee026841  gas/testsuite/gas/h8300/h8sx_disp2.d
+24bfa8fe6c7ea23669a8b7ddbb532df3  gas/testsuite/gas/h8300/h8sx_disp2.s
+55085df87374e05b6ca2887bfdad18f3  gas/testsuite/gas/h8300/h8sx_mov_imm.d
+8de24eb964deaeba9ab216fe5a83ae57  gas/testsuite/gas/h8300/h8sx_mov_imm.s
+180177e9b13daf5c97a907883a3b15df  gas/testsuite/gas/h8300/h8sx_rtsl.d
+cbf4c219011b472494b1c9886803d88b  gas/testsuite/gas/h8300/h8sx_rtsl.s
+d068dc8b49ea5e3a2841052399d04411  gas/testsuite/gas/h8300/incdec.s
+57ef072e39a9e088908da70b650fe6b7  gas/testsuite/gas/h8300/incdech.s
+68127cbf4156b232462ded46fb1eeb96  gas/testsuite/gas/h8300/incdecs.s
+ad670f4be1807bfa3361ea5dfdc0658d  gas/testsuite/gas/h8300/logical.s
+4baf511d4fbb91925e6de834c9b49ea5  gas/testsuite/gas/h8300/logicalh.s
+c4d9cba61beedae407c0c1260e6e1d5d  gas/testsuite/gas/h8300/logicals.s
+3c56ddac8216a69a609103570d7b3e49  gas/testsuite/gas/h8300/macs.s
+fb0d77314633b62d40a4a054311960e8  gas/testsuite/gas/h8300/misc.s
+0474a81ccc5b5408fc54aa171faafb52  gas/testsuite/gas/h8300/misch.s
+11bb474016acda38cc0db95df94487a3  gas/testsuite/gas/h8300/miscs.s
+9193c97fad2ede164c0c90d605b70f46  gas/testsuite/gas/h8300/mov32bug.s
+1883f564d24d685c8dc63486f070f4a6  gas/testsuite/gas/h8300/movb.s
+fcd326aa9537340e99b1100508c3aa5b  gas/testsuite/gas/h8300/movbh.s
+7145f97672f9645e3de195a7fdf55a1b  gas/testsuite/gas/h8300/movbs.s
+d8c9bc7371b9b1d46a2eefb32d90d58d  gas/testsuite/gas/h8300/movlh.s
+0e5f5a058fd24a750a53bfa817b326a5  gas/testsuite/gas/h8300/movls.s
+3674b05426b7d9c23e487af7bb8465e2  gas/testsuite/gas/h8300/movw.s
+75e9728e4f42fb7fbedbba7ed96b11db  gas/testsuite/gas/h8300/movwh.s
+b0068c567a3f9efc6b3b31cf95a5a318  gas/testsuite/gas/h8300/movws.s
+f6cedb831b52df4b3928a3a2f77a26c9  gas/testsuite/gas/h8300/multiples.s
+4393180d58ab1ed9d690f02ff183b6f6  gas/testsuite/gas/h8300/pushpop.s
+4d82e273acc364dfaddc59b3a13ee22e  gas/testsuite/gas/h8300/pushpoph.s
+8ff1c8b35100699d39d44f67e19a5176  gas/testsuite/gas/h8300/pushpops.s
+6cc6731a0e070e666e164d9163629113  gas/testsuite/gas/h8300/rotsh.s
+7bc113956c8ca4ddcd42503e4bd530e3  gas/testsuite/gas/h8300/rotshh.s
+811af24ecd9436d020bfaf84413f5847  gas/testsuite/gas/h8300/rotshs.s
+c1d90a226053f4ce7c7adff387f20b54  gas/testsuite/gas/h8300/symaddgen.s
+ce55a85d73c6a1310de2454624c136e2  gas/testsuite/gas/h8300/t01_mov.exp
+a3cbe564e8d6faf41cbf463811c89e02  gas/testsuite/gas/h8300/t01_mov.s
+241f2fa417c5a917fe083c7190e3b861  gas/testsuite/gas/h8300/t02_mova.exp
+8384c0c60131ab5ec30e614ac5304d36  gas/testsuite/gas/h8300/t02_mova.s
+4372217c1898413da0cb442d8b83774c  gas/testsuite/gas/h8300/t03_add.exp
+b177ab180d26977ff43d8e5c6e38c907  gas/testsuite/gas/h8300/t03_add.s
+6df403b20c72718d5385aaa8de8ec6ed  gas/testsuite/gas/h8300/t04_sub.exp
+26cf1c6a7495448281a2626e9393d099  gas/testsuite/gas/h8300/t04_sub.s
+421f2108c19848bc75c4c2a6a876f86b  gas/testsuite/gas/h8300/t05_cmp.exp
+80158a3d34d939766f837f9e15e8fe2d  gas/testsuite/gas/h8300/t05_cmp.s
+13364c83674e3c7487ec96e9518cda19  gas/testsuite/gas/h8300/t06_ari2.exp
+d9fbbf75a69dc39e28564cd3dfd89e5a  gas/testsuite/gas/h8300/t06_ari2.s
+54e194caef15999a18c006e28d3c8de8  gas/testsuite/gas/h8300/t07_ari3.exp
+fbeccdb5c7220c385d8e4aee4f4c980d  gas/testsuite/gas/h8300/t07_ari3.s
+e0687fc4edbab3948726261d87477db2  gas/testsuite/gas/h8300/t08_or.exp
+49ac32af6d29776560d6c3df80fe3a09  gas/testsuite/gas/h8300/t08_or.s
+5f9e00cc1a79212cd05863950a01d8e7  gas/testsuite/gas/h8300/t09_xor.exp
+a9d861fcb5888bf017b04692c6f95372  gas/testsuite/gas/h8300/t09_xor.s
+9d73fa90207efffe2171ff5a43d4cb3e  gas/testsuite/gas/h8300/t10_and.exp
+1d08d13909be8fd1f1aefa95f62fc34b  gas/testsuite/gas/h8300/t10_and.s
+43ee497fe85e8b3221220a38a10edb69  gas/testsuite/gas/h8300/t11_logs.exp
+036ff295450c4dc80011e85d74bd071f  gas/testsuite/gas/h8300/t11_logs.s
+d8ca7ba717f5fcdd2c32f72bef137c98  gas/testsuite/gas/h8300/t12_bit.exp
+85bdc6caec434dbce8666be195bab7de  gas/testsuite/gas/h8300/t12_bit.s
+2c19c41ef2b05680493db17768a42b35  gas/testsuite/gas/h8300/t13_otr.exp
+1110071293056d18834477e3b461aebe  gas/testsuite/gas/h8300/t13_otr.s
+9c930811b2796b39d00fff2dfab3fabb  gas/testsuite/gas/hppa/basic/basic.exp
+7b1625a1a6ca53e3c9dd6d06b27ee995  gas/testsuite/gas/hppa/basic/add.s
+98ee4fb8ed790b202a1c065b7e0b997b  gas/testsuite/gas/hppa/basic/add2.s
+57ad58f96f1a781f50c99315319025b2  gas/testsuite/gas/hppa/basic/addi.s
+23cbc90c2d163ffda4b92ac5670374b7  gas/testsuite/gas/hppa/basic/branch.s
+018bafaddc464bf5344056a4a6ba62aa  gas/testsuite/gas/hppa/basic/branch2.s
+2744044afb6af0ffe892e71482c7e83b  gas/testsuite/gas/hppa/basic/comclr.s
+30e98c333c6c3c41f4230609d617d4bd  gas/testsuite/gas/hppa/basic/copr.s
+18c064b287abc57be5f66793ce0a4ed8  gas/testsuite/gas/hppa/basic/coprmem.s
+5b953b17809a50b68718cad20f6b3cd5  gas/testsuite/gas/hppa/basic/dcor.s
+54b1bb4ce869350a6860eea7ef011576  gas/testsuite/gas/hppa/basic/dcor2.s
+7f9d07824ecdd65dce64fdbb8ab88668  gas/testsuite/gas/hppa/basic/deposit.s
+9e7936d6dca987e90acb029a0794e50c  gas/testsuite/gas/hppa/basic/deposit2.s
+4179bc45da0c3f5c674c51bce4f3ef42  gas/testsuite/gas/hppa/basic/deposit3.s
+5532f754b3ee74d823c916f73352f531  gas/testsuite/gas/hppa/basic/ds.s
+ebef581b3abd2e0a860dc45c474dcc77  gas/testsuite/gas/hppa/basic/extract.s
+f0c6b56da1f75e189baf27d8c1f535fe  gas/testsuite/gas/hppa/basic/extract2.s
+51d8fb411be8712bd0c7ce811ad6dc38  gas/testsuite/gas/hppa/basic/extract3.s
+a982fc398cedf2e44201d59012ee7066  gas/testsuite/gas/hppa/basic/fmem.s
+a0babc25ea6d4372cb5eccc0ae3f4825  gas/testsuite/gas/hppa/basic/fmemLRbug.s
+12d638623e2fda0109342643a918858e  gas/testsuite/gas/hppa/basic/fp_comp.s
+9847e0fce8c6da72b7f980b441367739  gas/testsuite/gas/hppa/basic/fp_comp2.s
+698e8f34a3b345696ad42ea0fe3a42dc  gas/testsuite/gas/hppa/basic/fp_conv.s
+50c67d6e1a3d6914794a948be62b14f6  gas/testsuite/gas/hppa/basic/fp_fcmp.s
+67b6a72f5e598098f02c322b08238380  gas/testsuite/gas/hppa/basic/fp_misc.s
+bf748287a3393071018df9ef711ff79e  gas/testsuite/gas/hppa/basic/imem.s
+382400fc1867cc374e7a9a97620ba203  gas/testsuite/gas/hppa/basic/immed.s
+2b4d0bc9df8ca71e1b7c3af01a60d9e0  gas/testsuite/gas/hppa/basic/logical.s
+40808c7e14c9dd94905f168f5bd28a9d  gas/testsuite/gas/hppa/basic/media.s
+3f9890f5f05691d773c5252cca7c3bdb  gas/testsuite/gas/hppa/basic/perf.s
+5cc775342d33290ccc79a2c3392ba59c  gas/testsuite/gas/hppa/basic/purge.s
+585389c4c1113b467f309f8b53564ddf  gas/testsuite/gas/hppa/basic/purge2.s
+bc0a3320065bbb6f8c7226807fa35e7d  gas/testsuite/gas/hppa/basic/sh1add.s
+7682c249ad6ac5dce5a7a0d5c70b9759  gas/testsuite/gas/hppa/basic/sh2add.s
+3976fa98bed24429b469cc702b660e93  gas/testsuite/gas/hppa/basic/sh3add.s
+69cfdc26fc07d25504dfb30978448340  gas/testsuite/gas/hppa/basic/shift.s
+f588468f60d1393a578d3147a655f303  gas/testsuite/gas/hppa/basic/shift2.s
+d35888a201d29276d5f468576ce69678  gas/testsuite/gas/hppa/basic/shift3.s
+1288a8d17a77098169f032cf5dd63455  gas/testsuite/gas/hppa/basic/shladd.s
+8ed6a738a1fd2383dbe99d68c8cf59e4  gas/testsuite/gas/hppa/basic/shladd2.s
+b8f517402a2c82b158d9e1df1a11779a  gas/testsuite/gas/hppa/basic/special.s
+1af275b55a5680b0a941bfdf1e5496e9  gas/testsuite/gas/hppa/basic/spop.s
+4d54a793881d666296b48b0b2ac763e2  gas/testsuite/gas/hppa/basic/sub.s
+7f6527cc71e690f05a0d73c733c1b14b  gas/testsuite/gas/hppa/basic/sub2.s
+c2fd7d2c7fc3f77c944b5af56ebbcb7d  gas/testsuite/gas/hppa/basic/subi.s
+c8284a379fc4d3b89da889cbd99a4565  gas/testsuite/gas/hppa/basic/system.s
+9dec6c8e5b94b75cb0e0fb27c16ce4ee  gas/testsuite/gas/hppa/basic/system2.s
+179a4ad64c7d1a3faa0d9945c41b5b35  gas/testsuite/gas/hppa/basic/unit.s
+1ed85cf259a78d3d86ea435e74dfcbe6  gas/testsuite/gas/hppa/basic/unit2.s
+03008cde62428d4ff2464bef8cb8bcd2  gas/testsuite/gas/hppa/basic/weird.s
+73cbb56b2c330327d9c06ea89af0cd91  gas/testsuite/gas/hppa/README
+d93edd3b974fa05de350f6104c63af74  gas/testsuite/gas/hppa/parse/align1.s
+6a7df2ab8d1491f8f64f60fb0a359558  gas/testsuite/gas/hppa/parse/align2.s
+85d6e969f063c0bee9565d096c43657e  gas/testsuite/gas/hppa/parse/appbug.s
+72ae2fe9c7ff74b0267402ab93c59282  gas/testsuite/gas/hppa/parse/badfmpyadd.s
+324e688a23442952378a5807132d00be  gas/testsuite/gas/hppa/parse/block1.s
+44d0164ab1f3f2f8201ca4cac02f0a91  gas/testsuite/gas/hppa/parse/block2.s
+7012f9c767f18688e051c168e218464b  gas/testsuite/gas/hppa/parse/calldatabug.s
+d26fcb5186e8ffda4892557ecf9d836a  gas/testsuite/gas/hppa/parse/callinfobug.s
+36132d401bbf31234a71915b94762a26  gas/testsuite/gas/hppa/parse/defbug.s
+8355f3baa7c8bf6dfdde12165f166988  gas/testsuite/gas/hppa/parse/entrybug.s
+a8c2940c51c368a14265009963ce4a7d  gas/testsuite/gas/hppa/parse/exportbug.s
+0aa9ab25448da72ed059168f45ee4e11  gas/testsuite/gas/hppa/parse/exprbug.s
+464c7378f55821348860da76fd77ed2e  gas/testsuite/gas/hppa/parse/fixup7bug.s
+69d79811f23cb30bd2c536063a29c137  gas/testsuite/gas/hppa/parse/global.s
+eae1949a6363097a7e2ef5bd260b9aa7  gas/testsuite/gas/hppa/parse/labelbug.s
+500906f02f2d8b74365d5c87cf1c4cc4  gas/testsuite/gas/hppa/parse/linesepbug.s
+adf3dd32e97d184fa3a923e977ac0f20  gas/testsuite/gas/hppa/parse/lselbug.s
+e09d99b9bb0cc52546de922bf02a3a13  gas/testsuite/gas/hppa/parse/nosubspace.s
+40aec9918f4f73567f06226a0dceb9ff  gas/testsuite/gas/hppa/parse/parse.exp
+030b7a7332dca245ae8a65a00ab8e169  gas/testsuite/gas/hppa/parse/procbug.s
+ba4a443e4362a957c9eda52f33e9ed56  gas/testsuite/gas/hppa/parse/regpopbug.s
+1e6c961fc9120126cbb70fea5a79b599  gas/testsuite/gas/hppa/parse/space.s
+b19738063af645b6f2231ee644131542  gas/testsuite/gas/hppa/parse/spacebug.s
+16d00a249972a7d82fd5b443a6c006ea  gas/testsuite/gas/hppa/parse/ssbug.s
+6e77c97c02695c15f9f54b9b531a5e2b  gas/testsuite/gas/hppa/parse/stdreg.s
+e4c3228c9e3a74eb9b2170caafd9cf4c  gas/testsuite/gas/hppa/parse/stringer.s
+b91fabc2587cd34b7543fe16032d9c3e  gas/testsuite/gas/hppa/parse/undefbug.s
+ad0e0513effd832ce4787671ac4c5eac  gas/testsuite/gas/hppa/parse/versionbug.s
+7f9b2353d22448012a9435f7b80ccf1a  gas/testsuite/gas/hppa/parse/xmpyubug.s
+629e685800d946a73fba78f4f9e2a342  gas/testsuite/gas/hppa/reloc/applybug.s
+e7eccf3a36e653b9312fc78bb40a5022  gas/testsuite/gas/hppa/reloc/blebug.s
+9c8150c0635455986ba2e99432e230ad  gas/testsuite/gas/hppa/reloc/blebug2.s
+cfe88051f0bd644932bc22814216e804  gas/testsuite/gas/hppa/reloc/blebug3.s
+2e83d05979fd4ec0c399182ad7513423  gas/testsuite/gas/hppa/reloc/exitbug.s
+a7ab875345b2ba9a0c1e6aee0c0b23cb  gas/testsuite/gas/hppa/reloc/fixupbug.s
+84f724d5d6335f9367de5e493847499c  gas/testsuite/gas/hppa/reloc/funcrelocbug.s
+8fd8e8d6557a090221c4b9382f712183  gas/testsuite/gas/hppa/reloc/labelopbug.s
+79c490df3cf5ac395769cfd1378b598b  gas/testsuite/gas/hppa/reloc/longcall.s
+6fedcfa10d24c76dde19990cbdb53c1a  gas/testsuite/gas/hppa/reloc/picreloc.s
+a30d0372d62d0a448e374ed80897e3bf  gas/testsuite/gas/hppa/reloc/plabelbug.s
+f2f905140c0955e2a88e451fad681f42  gas/testsuite/gas/hppa/reloc/r_no_reloc.s
+5042b71ae3f83b270fa17a2b7f27fc92  gas/testsuite/gas/hppa/reloc/reduce.s
+bc728b6253b6c770472ed22f5def04e0  gas/testsuite/gas/hppa/reloc/reduce2.s
+45668f4718492900a833f2d3ebe47e57  gas/testsuite/gas/hppa/reloc/reduce3.s
+9334d4bbcab2e68658cfd614802f774c  gas/testsuite/gas/hppa/reloc/reloc.exp
+2813e26c00aa991fb8cc3f67b56ae4f6  gas/testsuite/gas/hppa/reloc/roundmode.s
+c690211a1ccb9ebe1cda17e17b5d1cf4  gas/testsuite/gas/hppa/reloc/selectorbug.s
+c0e4f0dd244fb83332f776ca09756e5b  gas/testsuite/gas/hppa/unsorted/align3.s
+a7b6914341e97c943a5b931b5ff724a1  gas/testsuite/gas/hppa/unsorted/align4.s
+d5ecda3dffcd60591d33b1718f89d02c  gas/testsuite/gas/hppa/unsorted/brlenbug.s
+0854f5ede3fb810256df5394b5d17a6f  gas/testsuite/gas/hppa/unsorted/common.s
+563abc929a52d7539bb83a990fbfcb65  gas/testsuite/gas/hppa/unsorted/fragbug.s
+3c295194b6d3754be9b7b7da67fddcb4  gas/testsuite/gas/hppa/unsorted/globalbug.s
+af9e915b6ea1a8a691914d94bb230546  gas/testsuite/gas/hppa/unsorted/importbug.s
+741867661d59451b7d71d392fc0d7206  gas/testsuite/gas/hppa/unsorted/labeldiffs.s
+0aa46fc17784b72b21d387564dddde36  gas/testsuite/gas/hppa/unsorted/locallabel.s
+f8705df6b564ae8bc51ff8255048afd1  gas/testsuite/gas/hppa/unsorted/ss_align.s
+5b05075a6994c61adb7687de985742d5  gas/testsuite/gas/hppa/unsorted/unsorted.exp
+24010b9a4f38ef4e53794bbf69dbe9b9  gas/testsuite/gas/i386/absrel.d
+44d1a7733eab035047de0217133c8049  gas/testsuite/gas/i386/absrel.s
+4f13cd819c9c8bdc0e25c3e1ea7e0be1  gas/testsuite/gas/i386/amd.d
+c89704ccdc6abd42145480c444772394  gas/testsuite/gas/i386/amd.s
+4fcdf4ddc2c648f228400a3349b3cfd2  gas/testsuite/gas/i386/bss.d
+873bd22e2aefafbf190efebc31f90ba8  gas/testsuite/gas/i386/bss.s
+48ac5ede74694da5a5c30740ae07542b  gas/testsuite/gas/i386/cr-err.l
+682ff4e79cf55bde7df5a585334244f1  gas/testsuite/gas/i386/cr-err.s
+5fc6911024266e35d7a7c6ddd9d2dcc8  gas/testsuite/gas/i386/crx.d
+cd065840b7ecff5d83aa9701a1479e35  gas/testsuite/gas/i386/crx.s
+189be01fb122304d37ce73bc98f846c0  gas/testsuite/gas/i386/divide.d
+33c0d04dc841d220224f80125d856600  gas/testsuite/gas/i386/divide.s
+909d387a40cf0e60e6c068908d7bcf3e  gas/testsuite/gas/i386/equ.d
+1dc1872aae68742855f45633cb46b3e9  gas/testsuite/gas/i386/equ.e
+cc8b07d2acae6b2f26dddd6864dc862a  gas/testsuite/gas/i386/equ.s
+481a82666e24dd35712ddbe1953070fc  gas/testsuite/gas/i386/float.l
+0df7ab956e3209428d665890983ef957  gas/testsuite/gas/i386/float.s
+8080d881efa149202b251d632f28cb7c  gas/testsuite/gas/i386/general.l
+1db75486be70699071b9a6564e5f843a  gas/testsuite/gas/i386/general.s
+454692c9f7970cb7a25c64c76c8df264  gas/testsuite/gas/i386/gotpc.d
+71ab574cd68dad0e75df48610f2bb16e  gas/testsuite/gas/i386/gotpc.s
+87d0bcd4f4248be264aa1044132068fe  gas/testsuite/gas/i386/i386.exp
+03b6daa44aad553583fdd262b578a90a  gas/testsuite/gas/i386/immed32.d
+87fbc24db5a886748c5a92b86f0bc6b3  gas/testsuite/gas/i386/immed32.s
+2425ecf56d318e63a4ca1b2f0453b1ca  gas/testsuite/gas/i386/immed64.d
+bf4e3e479589b9b8de42c075eb54be3d  gas/testsuite/gas/i386/immed64.s
+f55ad292b857dbd8c2426320bfd309d5  gas/testsuite/gas/i386/intel.d
+c6ef4d93579ae4b692fe4d20d6f95691  gas/testsuite/gas/i386/intel.e
+891b1962ab31a873d60612dc6a0ecf21  gas/testsuite/gas/i386/intel.s
+c18ca04eb874484c14ef4f10e451ada1  gas/testsuite/gas/i386/intel16.d
+d5232b8249cf5ce607d93366fc3ab014  gas/testsuite/gas/i386/intel16.e
+f8492d39c3f72f5a6673619dc9b7a497  gas/testsuite/gas/i386/intel16.s
+7b23b799bd5673a2651975f6d86f50b8  gas/testsuite/gas/i386/intelbad.l
+4665836399c1343aa066d4325d6bbcd9  gas/testsuite/gas/i386/intelbad.s
+0f788f7c7eca49cf3b7b9b891522220e  gas/testsuite/gas/i386/intelok.d
+710092a09fba5afa6fa5776a8ce6d779  gas/testsuite/gas/i386/intelok.e
+79ecead097226b0913ac42994297190d  gas/testsuite/gas/i386/intelok.s
+734d748810614b19b03ac10dfde2b1f4  gas/testsuite/gas/i386/intelpic.d
+10af8323b3fdfb2580629d4bbb96414f  gas/testsuite/gas/i386/intelpic.s
+f7a89c19a9f1cb3e85637ebe9f67e057  gas/testsuite/gas/i386/inval-seg.l
+f021a269046335d2df67eb196fee389f  gas/testsuite/gas/i386/inval-seg.s
+92c2460d4bc6a3d856918e182ca720b3  gas/testsuite/gas/i386/inval.l
+ebaaadf5e7218736c6523e8c024e4a63  gas/testsuite/gas/i386/inval.s
+e6d4cc21cd6fd3850a2527bd9a0602df  gas/testsuite/gas/i386/jump.d
+a5ac8a9636b7ab8c6a732203d0914133  gas/testsuite/gas/i386/jump.s
+73d7f5fe54695a0d1baff6361ee951af  gas/testsuite/gas/i386/jump16.d
+72fb343c916713f2da32dd3ebcb13cd7  gas/testsuite/gas/i386/jump16.s
+a65d452b44bc35bcc8e09f8f7694d815  gas/testsuite/gas/i386/katmai.d
+3e427af40c4ab651d69de595d3f996f7  gas/testsuite/gas/i386/katmai.s
+98d167a0741747685a6c659fd7e3f699  gas/testsuite/gas/i386/merom.d
+32f7ac7c492c645de9c4736747f8ef6a  gas/testsuite/gas/i386/merom.s
+d004208db701b4e9c43957689eb71dab  gas/testsuite/gas/i386/mixed-mode-reloc.s
+f4d4dceee0d93929433daba8a389ca55  gas/testsuite/gas/i386/mixed-mode-reloc32.d
+397c657036288a4b0e096e37942d74cd  gas/testsuite/gas/i386/mixed-mode-reloc64.d
+d566afc7ce85d649e11306e09c745945  gas/testsuite/gas/i386/modrm.l
+1d1696a1b6db5c16aa2463cdd8b6a045  gas/testsuite/gas/i386/modrm.s
+23ba589e8b7298644d1feaac0592a13c  gas/testsuite/gas/i386/naked.d
+b4fe60a42e7f416e8bcfc4c911652c79  gas/testsuite/gas/i386/naked.s
+d14b92a15956f984a9a46bee6ce5dec3  gas/testsuite/gas/i386/opcode.d
+49797967e4ebd737f7d7ec37d97710f3  gas/testsuite/gas/i386/opcode.s
+1c91055fbce0587f02a34bb69c2165bb  gas/testsuite/gas/i386/padlock.d
+e4a72b1d388038cb07dd34cdc0a38452  gas/testsuite/gas/i386/padlock.s
+b71a7c0a1c6237878c6a6c534563445a  gas/testsuite/gas/i386/pcrel.d
+2a069b87359bb962df261b870b939b15  gas/testsuite/gas/i386/pcrel.s
+8a8cd5019ee05b05c49d6bb814f50592  gas/testsuite/gas/i386/prefix.d
+18eb6094372a8ea6dcedecc52d4bbafb  gas/testsuite/gas/i386/prefix.s
+63b96682e6912f3f820bf2141ed92ac2  gas/testsuite/gas/i386/prescott.d
+39fe659a4fb23c44b6bc10d1f4773ec6  gas/testsuite/gas/i386/prescott.s
+88ff146a0aed9dc67489b41b0fb6f3cb  gas/testsuite/gas/i386/relax.d
+af8b77b677b0bd3471e7ca21a60c445a  gas/testsuite/gas/i386/relax.s
+73bd114ee58f8613e40dcc68dc44ecab  gas/testsuite/gas/i386/reloc.d
+785e2743dba0137e0235c3a40f7ed72b  gas/testsuite/gas/i386/reloc.s
+bcce880a7c30b65850e47c08f64f318b  gas/testsuite/gas/i386/reloc32.d
+ce14bb73228ed5e15623e58140110f06  gas/testsuite/gas/i386/reloc32.l
+b4e477ea59987907644527d7bee16e72  gas/testsuite/gas/i386/reloc32.s
+0e0e623874d0f678ec6dc4ba2de86495  gas/testsuite/gas/i386/reloc64.d
+a2c277d42304ee120fe8c429748f22f4  gas/testsuite/gas/i386/reloc64.l
+f4b959520f712e5e80cab47a4801c2d1  gas/testsuite/gas/i386/reloc64.s
+42ab8fbd8ccf534cc815c63089ef297d  gas/testsuite/gas/i386/rep-suffix.d
+dc27e5546173842a2a19812f95a809d9  gas/testsuite/gas/i386/rep-suffix.s
+9d92844fbea9450518bd05b523d820a6  gas/testsuite/gas/i386/rep.d
+58db4a5760d1bc9deac225c520b3489d  gas/testsuite/gas/i386/rep.s
+73f7341382fa25f62c13598337864e4f  gas/testsuite/gas/i386/rex.d
+6b9c59b7b173f8ce673ee208a436dee4  gas/testsuite/gas/i386/rex.s
+3a22e24f707a3cd9e5a36630ed2f151c  gas/testsuite/gas/i386/secrel.d
+ae437b9d8fe2c177c2672e5ca17b9942  gas/testsuite/gas/i386/secrel.s
+49756badbd07c6541f231a7a4a0f869a  gas/testsuite/gas/i386/segment.l
+c31999cdae4d3da1d2eedfd3d840b32c  gas/testsuite/gas/i386/segment.s
+2b0fe13eab1c4852cc658709798fd8ed  gas/testsuite/gas/i386/sib.d
+e81611443066b43d50204b51cee573d0  gas/testsuite/gas/i386/sib.s
+c20d9e113feb7d19f1bc4d226e4ab23f  gas/testsuite/gas/i386/sse2.d
+266867e323b3248cd8cdad201276821d  gas/testsuite/gas/i386/sse2.s
+a3a7fc893b82d884c471a0430275144e  gas/testsuite/gas/i386/ssemmx2.d
+e73e0f652b697100e02db9b419b06cd0  gas/testsuite/gas/i386/ssemmx2.s
+63e6c02ab5f64af6dd5235e3c374ac08  gas/testsuite/gas/i386/sub.d
+833f164bd60a9f7c4db8ccf2b0bf711b  gas/testsuite/gas/i386/sub.s
+255ecabbcbb774d2b711f9c2a6467c2b  gas/testsuite/gas/i386/suffix.d
+cc898efb930fe1387f95ddbc6c296877  gas/testsuite/gas/i386/suffix.s
+f1360fbb543b1013b19d7262aae59e6f  gas/testsuite/gas/i386/svme.d
+0a7c8e9d03a54e9df14fcbb7aa3dcd63  gas/testsuite/gas/i386/svme.s
+88ab25a3e20f3a2062ce343a2163e10f  gas/testsuite/gas/i386/svme64.d
+813e87f468f14c7f4941373f6a881abe  gas/testsuite/gas/i386/tlsd.d
+6276d7a325e095cb7d76ae4bc0664de9  gas/testsuite/gas/i386/tlsd.s
+511d46faf3858b2ed16be632d57dacbd  gas/testsuite/gas/i386/tlsnopic.d
+57fea1ba6cb8614eb9cf26948a633c80  gas/testsuite/gas/i386/tlsnopic.s
+32d0e3a10392abbf4942d347268ebbee  gas/testsuite/gas/i386/tlspic.d
+6e8c2126aec7e76808eef1c12cfd676d  gas/testsuite/gas/i386/tlspic.s
+6b5d014a42b77623734a199666d99bb1  gas/testsuite/gas/i386/vmx.d
+f567d2fe791abd9688dd01e4425c5165  gas/testsuite/gas/i386/vmx.s
+04f524b94eb61aaf58b37c180ab1e373  gas/testsuite/gas/i386/white.l
+305b7d730a90ea5ac8fb330a3bf13fec  gas/testsuite/gas/i386/white.s
+8279d9bd0cd5f4671da61cc08f2b623b  gas/testsuite/gas/i386/x86-64-addr32.d
+42185c33f010fb25050a500367b7d7de  gas/testsuite/gas/i386/x86-64-addr32.s
+200d8c3b1a070536b9918fdedd55edf7  gas/testsuite/gas/i386/x86-64-branch.d
+2037d94e5ba511ae4c29f91cbbd7c167  gas/testsuite/gas/i386/x86-64-branch.s
+d7796c7da5bd798242924df1a1c3fb59  gas/testsuite/gas/i386/x86-64-crx-suffix.d
+056ad00c5253f33415e2e57d29718853  gas/testsuite/gas/i386/x86-64-crx.d
+c1aefb6d2c81ed0ab02401fe81cef10b  gas/testsuite/gas/i386/x86-64-crx.s
+81cb4dad702eb15f28d6f3994d35fd92  gas/testsuite/gas/i386/x86-64-drx-suffix.d
+fa9a2fbcc2d69483d59f86f27073f3ab  gas/testsuite/gas/i386/x86-64-drx.d
+3a07eba6a88df41e1026628ed70fc0f7  gas/testsuite/gas/i386/x86-64-drx.s
+162538feb667384563ddb3678c76eea7  gas/testsuite/gas/i386/x86-64-inval-seg.l
+aae525360b98db49675b427a0fa29d0f  gas/testsuite/gas/i386/x86-64-inval-seg.s
+6f7ef85e774b10b223ed4a0238abae5b  gas/testsuite/gas/i386/x86-64-inval.l
+ac22c4d6dc30a9c04a9ae133d0721c7d  gas/testsuite/gas/i386/x86-64-inval.s
+1bf1ece7eaf9ca1dda5edf18e0cf0ffa  gas/testsuite/gas/i386/x86-64-merom.d
+c7a82d8e1440f6a57c22b4532bda39bf  gas/testsuite/gas/i386/x86-64-merom.s
+93ab794c95a31d24d77b26adebe7413d  gas/testsuite/gas/i386/x86-64-opcode.d
+80400722b46906505985de809f13afe7  gas/testsuite/gas/i386/x86-64-opcode.s
+2079a4893093ed314d2c74313bc4b852  gas/testsuite/gas/i386/x86-64-pcrel.d
+0102d6957be1a24ff2c324dbb1b2a850  gas/testsuite/gas/i386/x86-64-pcrel.s
+51204352f88d2edc5d379a42b54dcd9a  gas/testsuite/gas/i386/x86-64-prescott.d
+d1179534f12b63a52fd87940cc3a86e3  gas/testsuite/gas/i386/x86-64-prescott.s
+6ac4827e7adb0ffe5f692b4b3bc54d68  gas/testsuite/gas/i386/x86-64-rep-suffix.d
+3ad8098f3d537ceba97b5b8b22a406e3  gas/testsuite/gas/i386/x86-64-rep-suffix.s
+70ee833b5a14c950fdfa7fed5cc06c56  gas/testsuite/gas/i386/x86-64-rep.d
+0230ea92a85352895e515489f8d1b6e2  gas/testsuite/gas/i386/x86-64-rep.s
+f324f04ce79331410a2cd5bcc6ad02ac  gas/testsuite/gas/i386/x86-64-rip.d
+722677b05d3cd317657a418b4f5ff9ed  gas/testsuite/gas/i386/x86-64-rip.s
+8dc4e34c9b1fe8d7582db1437973c356  gas/testsuite/gas/i386/x86-64-segment.l
+93582bffb446e522b0e4c96c89d2d901  gas/testsuite/gas/i386/x86-64-segment.s
+a9b6b73aa39d4318ebc332149b220362  gas/testsuite/gas/i386/x86-64-stack-intel.d
+211f6820eea1dc469f8639d3f546555a  gas/testsuite/gas/i386/x86-64-stack-suffix.d
+22199c86a941d451986815cd6dd8115a  gas/testsuite/gas/i386/x86-64-stack.d
+c1424bba614929e99fa1271fa973035f  gas/testsuite/gas/i386/x86-64-stack.s
+ae1535c079d8c5b1433f7cc1dd3e562e  gas/testsuite/gas/i386/x86-64-unwind.d
+8d64d6d63476e651d51e8675349b18aa  gas/testsuite/gas/i386/x86-64-unwind.s
+2c6b752faa6d31fd1e4f1e37d70413d1  gas/testsuite/gas/i386/x86-64-vmx.d
+993cb43ba3bb5e400fb34ce7bdec1d05  gas/testsuite/gas/i386/x86-64-vmx.s
+94c560099b75ffd6886c68c4e1a5088c  gas/testsuite/gas/i386/x86_64.d
+6233c286169a3ec04a0241b0ca2b915e  gas/testsuite/gas/i386/x86_64.e
+2fb013235e775f46a8343f31782b8b61  gas/testsuite/gas/i386/x86_64.s
+212987111270138069139a2e478d5bc4  gas/testsuite/gas/i860/README.i860
+f5ad41f835f6e2d3ba8795a4f7dec86f  gas/testsuite/gas/i860/bitwise.d
+2b774a4f549067873f0af07fb9de56a3  gas/testsuite/gas/i860/bitwise.s
+9828012860f1606656f7f365218dc2cf  gas/testsuite/gas/i860/branch.d
+f16bd2426aa90da0f32896bd84435eb5  gas/testsuite/gas/i860/branch.s
+7000f335c5d097a92ed25701d3fc6a18  gas/testsuite/gas/i860/bte.d
+117061acc7f7acf1f514a9cd358c9db8  gas/testsuite/gas/i860/bte.s
+0903b2b332fbbbe09878c4169fb4ab10  gas/testsuite/gas/i860/dir-align01.d
+6ae106da9f3a85291506ce9fe6e4e3c6  gas/testsuite/gas/i860/dir-align01.s
+f26e1261c99d19590548ae75623cb7f6  gas/testsuite/gas/i860/dir-intel01.d
+6cc636d75ee8165da9ed09918e3199bf  gas/testsuite/gas/i860/dir-intel01.s
+79272e9295d72e86387d67378781c814  gas/testsuite/gas/i860/dir-intel02.d
+cee730e93b3c40620622b831abb15929  gas/testsuite/gas/i860/dir-intel02.s
+df4b2e4160f4fedf91c0e8fde37b0b21  gas/testsuite/gas/i860/dir-intel03-err.l
+5c611081998a4ada6f2e9b03043f2716  gas/testsuite/gas/i860/dir-intel03-err.s
+c6c428e83407fbf5793d5af32241f564  gas/testsuite/gas/i860/dual01.d
+37fd18f754ecc8344934c71f1392633e  gas/testsuite/gas/i860/dual01.s
+5596264e96a68a24c9be980a60a3a117  gas/testsuite/gas/i860/dual02-err.l
+69f9c17232090c9ff45f1cd69c9d2001  gas/testsuite/gas/i860/dual02-err.s
+19afb4e2d3c77d070c87e221647ac664  gas/testsuite/gas/i860/dual03.d
+fb14098c629da7cb9313e06eed37d807  gas/testsuite/gas/i860/dual03.s
+cadcac169600d1350fcdfcb64b4ad27a  gas/testsuite/gas/i860/fldst01.d
+97321626bfe0c85cdcf948a32397ebb7  gas/testsuite/gas/i860/fldst01.s
+686a13e797f9b6a7fe7ca9f36fd9fc3b  gas/testsuite/gas/i860/fldst02.d
+79878081a47eef91e7f41ae24f200330  gas/testsuite/gas/i860/fldst02.s
+436e4b4af356ae63d02cd500c1f745bb  gas/testsuite/gas/i860/fldst03.d
+02832b2cbfa7efa88955cdf1542081c3  gas/testsuite/gas/i860/fldst03.s
+45eca40b3d986f598c4ebf568268fb66  gas/testsuite/gas/i860/fldst04.d
+fcff1e7676d8160f47d068e2db68819e  gas/testsuite/gas/i860/fldst04.s
+8b2b509a36427ef1cbf6e25e76ea6b6f  gas/testsuite/gas/i860/fldst05.d
+dd6941ef803c746c2c77da5da56b34f8  gas/testsuite/gas/i860/fldst05.s
+2caff1d8ced86429ab5a617b991a3a0f  gas/testsuite/gas/i860/fldst06.d
+54597c78b75cee621a2e62fd38a99dff  gas/testsuite/gas/i860/fldst06.s
+cf7920c9b2405c650856f4aa0374cf25  gas/testsuite/gas/i860/fldst07.d
+eda94c6341d1d271fd45fc529b88d442  gas/testsuite/gas/i860/fldst07.s
+d4ba4327e97b9e951f005588457caaa5  gas/testsuite/gas/i860/fldst08.d
+267d98a7ae79aa3538d5b37255ab9733  gas/testsuite/gas/i860/fldst08.s
+879345c052279235a62534050fe6a506  gas/testsuite/gas/i860/float01.d
+6f259108ec9a42a90991b6de65b6f308  gas/testsuite/gas/i860/float01.s
+bce16a53ba73f7e46f1800374d1876db  gas/testsuite/gas/i860/float02.d
+da9e09037beef0d229289b7719f1d730  gas/testsuite/gas/i860/float02.s
+c6c100da2e2965efaefc00a111af4185  gas/testsuite/gas/i860/float03.d
+07480a0c8c5c69b52a630f94bfbaf582  gas/testsuite/gas/i860/float03.s
+96c3c2fc58836a46fd9a35577da09994  gas/testsuite/gas/i860/float04.d
+4b14215cdbc0a5bfc8c42ab39397164b  gas/testsuite/gas/i860/float04.s
+8776893d98fcb46514ef9f34fa7f0e9c  gas/testsuite/gas/i860/form.d
+25dc56533faa254aa5b6b15fd9469565  gas/testsuite/gas/i860/form.s
+4136c2cacf31772e52c6fe89645c91cf  gas/testsuite/gas/i860/i860.exp
+8369d3b3ff0084e16260cbfcebe66ebe  gas/testsuite/gas/i860/iarith.d
+8309075608d50e06ca4a159b068211f2  gas/testsuite/gas/i860/iarith.s
+ef617fda8f52baa1f59cc4b57469dc8c  gas/testsuite/gas/i860/ldst01.d
+2f8d0b96710ed27d3ebccc9a7c32de92  gas/testsuite/gas/i860/ldst01.s
+9f84376dfdea002935eb41e0ab41e6b3  gas/testsuite/gas/i860/ldst02.d
+3bbfa7720f4dbd2b5d08f284efc9d841  gas/testsuite/gas/i860/ldst02.s
+24948145c80649312afc2f09cba29a6e  gas/testsuite/gas/i860/ldst03.d
+f2d621ee2a971085de0750d7aec9ec94  gas/testsuite/gas/i860/ldst03.s
+27be67914f6cb6832442727bbd91a840  gas/testsuite/gas/i860/ldst04.d
+f24b9098dbb2311dad448ba672986a85  gas/testsuite/gas/i860/ldst04.s
+9abbb1f8a49b98aba5cfa073d915217e  gas/testsuite/gas/i860/ldst05.d
+02bdbd530696cb9509284c97ba6eb99a  gas/testsuite/gas/i860/ldst05.s
+e125965d3c2c889c9753706b7b311b64  gas/testsuite/gas/i860/ldst06.d
+a2f062ff5a39ec0fafeaeffe8f492779  gas/testsuite/gas/i860/ldst06.s
+bacafd03fff48001eeaadf13b60d375f  gas/testsuite/gas/i860/pfam.d
+5440ae594422d037458d87a70fb7708f  gas/testsuite/gas/i860/pfam.s
+389acd95b74da50abf697d8448f75a90  gas/testsuite/gas/i860/pfmam.d
+3f85e5e49191d2039cd11675284eca8c  gas/testsuite/gas/i860/pfmam.s
+8a1d5790ec258d8d574e7c0b948f73d9  gas/testsuite/gas/i860/pfmsm.d
+5ba78d272a0c2d22de071e03aa1b1aaf  gas/testsuite/gas/i860/pfmsm.s
+39851734f26e9eeb49b7548995830e72  gas/testsuite/gas/i860/pfsm.d
+2b691612d72dc03e06b426d719622dc8  gas/testsuite/gas/i860/pfsm.s
+a81a57c63b7130129d02ba0692659392  gas/testsuite/gas/i860/pseudo-ops01.d
+d2572c9521bb99521ffb95f2caecc51f  gas/testsuite/gas/i860/pseudo-ops01.s
+8f354a029a247621b668ba706c48949f  gas/testsuite/gas/i860/regress01.d
+9653c34da92fa639fc96e13206273aaa  gas/testsuite/gas/i860/regress01.s
+7097eb47e3d70de1cf45f2eb94283dad  gas/testsuite/gas/i860/shift.d
+24e2e5de98632c8c8b900d1592709397  gas/testsuite/gas/i860/shift.s
+d8ac2dcdfd994b9933eae7794a6a1562  gas/testsuite/gas/i860/simd.d
+369369bca7c9a1f488807234c1271ae7  gas/testsuite/gas/i860/simd.s
+94bfbda029352e2eb43710295a07c02d  gas/testsuite/gas/i860/system.d
+b0e13677168237ff8300437ed101e4b4  gas/testsuite/gas/i860/system.s
+8867d533598bda8b5fecaa99354d1d98  gas/testsuite/gas/i860/xp.d
+ade8add590ef6c12e6b3ad21e52cc7c0  gas/testsuite/gas/i860/xp.s
+1390abcf59fd14d2a66fa4a40ab0748a  gas/testsuite/gas/ia64/alias-ilp32.d
+e3bedc2175bdbed92460b72b3d38f13d  gas/testsuite/gas/ia64/alias.d
+03b362d40d896c73b7ca83e014e65f54  gas/testsuite/gas/ia64/alias.s
+5fed37c2d4517d6ccdb0b8214e9fbe89  gas/testsuite/gas/ia64/align.d
+2b6aaf64f25203ee6d42b883877b3d29  gas/testsuite/gas/ia64/align.s
+56482f48ecf5d0871055f1032761c296  gas/testsuite/gas/ia64/alloc.l
+465b7817b7039151414335b624f87b50  gas/testsuite/gas/ia64/alloc.s
+e455b8bd8879fe91fbb7e9a9054396c4  gas/testsuite/gas/ia64/bundling.d
+6e8b4d46ad5bc8cf77ae32da0543a189  gas/testsuite/gas/ia64/bundling.s
+5db8eca540fe74cf7a3c2987a4eb9854  gas/testsuite/gas/ia64/dependency-1.d
+1469dfc61e75bd0ff0848df2a3d0491f  gas/testsuite/gas/ia64/dependency-1.s
+5eb8214dbc6a81515361f587403fb112  gas/testsuite/gas/ia64/dv-branch.d
+ec058dd65d1af91fe84f41b725857462  gas/testsuite/gas/ia64/dv-branch.s
+956561267da937b1be0fada7c6ea25c7  gas/testsuite/gas/ia64/dv-entry-err.l
+e635d21d0f94975c7df306096506d41b  gas/testsuite/gas/ia64/dv-entry-err.s
+66c561db454fffc01897c1dc5d51cd8a  gas/testsuite/gas/ia64/dv-imply.d
+a4c835f4336ab0d7bea5c1251fe02f94  gas/testsuite/gas/ia64/dv-imply.s
+719d55382abbfde4dad96f2ab530444a  gas/testsuite/gas/ia64/dv-mutex-err.l
+8af39c8ed0db1166ee73bcc08b4f2c16  gas/testsuite/gas/ia64/dv-mutex-err.s
+aa623148bfa19343f426f1d7594acc0b  gas/testsuite/gas/ia64/dv-mutex.d
+ae4b264474b1d1488371dfba05a807ff  gas/testsuite/gas/ia64/dv-mutex.s
+810da0f91dcc1c2e8e683985818883ed  gas/testsuite/gas/ia64/dv-raw-err.l
+1f6523e8e97806b581df458ee8628855  gas/testsuite/gas/ia64/dv-raw-err.s
+98c0c365a1901745072e5d9c957e3793  gas/testsuite/gas/ia64/dv-safe.d
+c06a2d45e380eacc79be2946865839ea  gas/testsuite/gas/ia64/dv-safe.s
+cf844a278adf50073cdefda6d28b307d  gas/testsuite/gas/ia64/dv-srlz.d
+fcb5ba635bb6c1bf11217572aed8c194  gas/testsuite/gas/ia64/dv-srlz.s
+47a1c9e8c8d646cb1276022156938aef  gas/testsuite/gas/ia64/dv-war-err.l
+96d62a881175a15f9d0eb1464592de82  gas/testsuite/gas/ia64/dv-war-err.s
+ab7516567272d5bd28de80e765b72e26  gas/testsuite/gas/ia64/dv-waw-err.l
+7555452be24a794178742a0fde0cb56d  gas/testsuite/gas/ia64/dv-waw-err.s
+4702e0589d4ecfea81d623654726c865  gas/testsuite/gas/ia64/fixup-dump.pl
+043c181b05ead62073d60fe4f7b5bdef  gas/testsuite/gas/ia64/forward.d
+c8d38e32fb63d2231618bb65b2d95a44  gas/testsuite/gas/ia64/forward.s
+c8f5093d8ec362fad881abb92cf43d98  gas/testsuite/gas/ia64/global.d
+3abe04e058c73f3963c6957c842aa0c7  gas/testsuite/gas/ia64/global.s
+33590bc6912511fd6106b6c8c0d71c29  gas/testsuite/gas/ia64/group-1.d
+ecd81ce660f62c1ab3b2b1b89f5e37e6  gas/testsuite/gas/ia64/group-1.s
+a2f690b471ae629d3594cb64d60b596b  gas/testsuite/gas/ia64/group-2.d
+23fd69f5c2f9e4329d761e82165d2b1c  gas/testsuite/gas/ia64/group-2.s
+ae4cfc6a16703b6c2586c99215ad32e2  gas/testsuite/gas/ia64/hint.b-err.l
+bc38d9bf826a3c9d36e322b0fdc4b1ce  gas/testsuite/gas/ia64/hint.b-err.s
+53d2625d7ca78e2bf4b13272b30ae1e2  gas/testsuite/gas/ia64/hint.b-warn.l
+bc38d9bf826a3c9d36e322b0fdc4b1ce  gas/testsuite/gas/ia64/hint.b-warn.s
+8c9c2c3e926ea3853416abbec2b87138  gas/testsuite/gas/ia64/ia64.exp
+f2da605500359eb8d432dc726bffd0b3  gas/testsuite/gas/ia64/index.l
+0939d8b0fe59c828407681a0a32a2274  gas/testsuite/gas/ia64/index.s
+de6b88e880c16c2e1e318f613630b29c  gas/testsuite/gas/ia64/invalid-ar.l
+660ec8d48833fefab134df71920f3d27  gas/testsuite/gas/ia64/invalid-ar.s
+f4d82e4423f8b9465e9276e22157086a  gas/testsuite/gas/ia64/label.l
+f87ee9f9d1ba626560bf804ba13165f1  gas/testsuite/gas/ia64/label.s
+ae7aa2fe2ba69fd12fb73ed958f135d1  gas/testsuite/gas/ia64/last.l
+88f1e3a9ef6fa419edb1f9bcae711a4b  gas/testsuite/gas/ia64/last.s
+d45e2dd3f78812fc115b032e13df93bf  gas/testsuite/gas/ia64/ldxmov-1.d
+9d82fbaec119beb2b468c79b0c133608  gas/testsuite/gas/ia64/ldxmov-1.s
+c7d19ca874ed086c03d6b51fcf4e1840  gas/testsuite/gas/ia64/ldxmov-2.l
+277c0508ade20f90c962e8cf59208830  gas/testsuite/gas/ia64/ldxmov-2.s
+393a02369db1631378b57d74a1f99193  gas/testsuite/gas/ia64/ltoff22x-1.d
+aca1c86bea7050f880ec98f303f05f10  gas/testsuite/gas/ia64/ltoff22x-1.s
+3e6d619d427dfee32e76df8e213271b6  gas/testsuite/gas/ia64/ltoff22x-2.d
+64e1de175dcb23ad6dc5580e687f7b7d  gas/testsuite/gas/ia64/ltoff22x-2.s
+47c64f668a7d8b584e9d2179cf9956da  gas/testsuite/gas/ia64/ltoff22x-3.d
+917b987097cafc1ef21e048eb58822c9  gas/testsuite/gas/ia64/ltoff22x-3.s
+1a6d95bfe578be2a2f8b98f63ae32754  gas/testsuite/gas/ia64/ltoff22x-4.d
+fe9dcfc6429f362540004b9bd1144253  gas/testsuite/gas/ia64/ltoff22x-4.s
+77d6d217c1d60250f98082dce2352b31  gas/testsuite/gas/ia64/ltoff22x-5.d
+b8638cad333d86872c59a42fb825ceb0  gas/testsuite/gas/ia64/ltoff22x-5.s
+77e40f73ba5abae861ad0694f63c1590  gas/testsuite/gas/ia64/mov-ar.d
+26a8d20f240ff4a568945caab6f453f5  gas/testsuite/gas/ia64/mov-ar.s
+42f96f97f58a5c2aabc914e6b56e95de  gas/testsuite/gas/ia64/no-fit.l
+147999e5afd9e1f4fcd30dbcad182685  gas/testsuite/gas/ia64/no-fit.s
+ede15f90446f84059e1a9ec36b9b66f6  gas/testsuite/gas/ia64/nop_x.d
+3ac96c6eb59cc7e0ba11f3d1ab36d4a5  gas/testsuite/gas/ia64/nop_x.s
+47072d4d678212573562867320a4b168  gas/testsuite/gas/ia64/nostkreg.d
+8936ee3120b0746e5f3d8f7ac460e9db  gas/testsuite/gas/ia64/nostkreg.s
+5cf1f05daff9171dcf5275963c6acde0  gas/testsuite/gas/ia64/opc-a-err.l
+c10f248c93a66cf00810e181bcf47859  gas/testsuite/gas/ia64/opc-a-err.s
+a8b761b96823d4971f5532faf0b6e808  gas/testsuite/gas/ia64/opc-a.d
+7a4b4b8b83d010b15200291b7428d900  gas/testsuite/gas/ia64/opc-a.pl
+25a4e13b65c5c563854c68b27850ec27  gas/testsuite/gas/ia64/opc-a.s
+26a9c024547dfe3267afa0149e4683c5  gas/testsuite/gas/ia64/opc-b.d
+a6e1c6d4094099abc90c4eddf392cf90  gas/testsuite/gas/ia64/opc-b.pl
+28d8e6ea8a3ec4beed93c2365ca7497d  gas/testsuite/gas/ia64/opc-b.s
+c26da9c6f5e6a73d1b146d094ebbb496  gas/testsuite/gas/ia64/opc-f.d
+e44f587f12c4e939d44570b92b5ca82b  gas/testsuite/gas/ia64/opc-f.pl
+5e132c425eaf71cbab3e7401b4750bf2  gas/testsuite/gas/ia64/opc-f.s
+b9edfed480c2b5f01e2e5ae0cb76be81  gas/testsuite/gas/ia64/opc-i.d
+6df89ea375d396efe8cd150381479c12  gas/testsuite/gas/ia64/opc-i.pl
+15969b5f65383a6c5490609cf4882545  gas/testsuite/gas/ia64/opc-i.s
+0a8ec8b04449de207537d0c935e610e7  gas/testsuite/gas/ia64/opc-m.d
+85878e0564576b3b7bafb3eb82660f7d  gas/testsuite/gas/ia64/opc-m.pl
+8ee1765ede253208db01ce9942f5e248  gas/testsuite/gas/ia64/opc-m.s
+7e3531997644b2ced7b435b593274057  gas/testsuite/gas/ia64/opc-x.d
+254e69bf1897bb4265e21eb488dde3c4  gas/testsuite/gas/ia64/opc-x.s
+e493b86e79cd1b7840768ee7dd17d09b  gas/testsuite/gas/ia64/operand-or.d
+c80613e26ec1eb58b400ecff241c7888  gas/testsuite/gas/ia64/operand-or.s
+b549252aed96485cbe78566d3933da97  gas/testsuite/gas/ia64/operands.l
+324983368e3aa0fb1f6c43d2889be129  gas/testsuite/gas/ia64/operands.s
+2e9a0176afdb932248384cfd21bf0e02  gas/testsuite/gas/ia64/order.d
+8a919a8db6e6db348bb9ee3988ad4793  gas/testsuite/gas/ia64/order.s
+318b8c28644b4dc8b5a6a3b5ad8c2235  gas/testsuite/gas/ia64/pcrel.d
+2802f15229a6741bef0e11984a2ad74e  gas/testsuite/gas/ia64/pcrel.s
+8234b13102e2b89a9b8e480032ba3644  gas/testsuite/gas/ia64/pound.l
+eb163238d1c14067c10cfbdad2862823  gas/testsuite/gas/ia64/pound.s
+2d77a6a88ef14d7c6a371b09dea5e828  gas/testsuite/gas/ia64/pred-rel.s
+9d7a9d7f3a6b43c525af6c8c836cb80e  gas/testsuite/gas/ia64/proc.l
+68da861b5a85e3dda838bfae4f4268f1  gas/testsuite/gas/ia64/proc.s
+c601f808ca38269043ad1225cb6627ee  gas/testsuite/gas/ia64/pseudo.d
+8faa98b105a425b150f9a6d3c14b46b7  gas/testsuite/gas/ia64/pseudo.s
+2a9394f919186edb77a43fc7accd0490  gas/testsuite/gas/ia64/radix.l
+5e58119bdddd1664dd77c7b8b1f5ca9c  gas/testsuite/gas/ia64/radix.s
+2d512ebbb3a824bfd3015573ceaf138a  gas/testsuite/gas/ia64/real.d
+11b022573ee9135d09a4a6415e44bc9a  gas/testsuite/gas/ia64/real.s
+a59ab6cf70a3161c725bfaefa0746827  gas/testsuite/gas/ia64/reg-err.l
+3e5336a037f53d43a195dd49a885ec59  gas/testsuite/gas/ia64/reg-err.s
+4c611f7b77e165d69d7df0fd0ff9ba38  gas/testsuite/gas/ia64/regs.d
+5746998fdbaa367bda22d9fa0a7a0d5b  gas/testsuite/gas/ia64/regs.pl
+33b6e3375b624f4d03dba627ec5a45b1  gas/testsuite/gas/ia64/regs.s
+def1a1e264aabe3865f5b91719ac6bb0  gas/testsuite/gas/ia64/regval.l
+3aec93f48ade47b1ba22328aa49a521d  gas/testsuite/gas/ia64/regval.s
+e1fa07919615f734c4e8ffadc711b9df  gas/testsuite/gas/ia64/reloc-bad.l
+ebed991bbb8cac30da10846599d0abf8  gas/testsuite/gas/ia64/reloc-bad.s
+2936fd2043217d53a51e8f059e9a217b  gas/testsuite/gas/ia64/reloc-uw-ilp32.d
+a701045f5a463b1a4e625df26718524b  gas/testsuite/gas/ia64/reloc-uw.d
+f6a87b3768a5c169d53a30d9b37ef686  gas/testsuite/gas/ia64/reloc-uw.s
+e4ee7f44af64e924aa5272bea9c4fed1  gas/testsuite/gas/ia64/reloc.d
+a0141232635833d498f3c634ce9e040a  gas/testsuite/gas/ia64/reloc.s
+f624e9e16c9ea00f80d7f7f8ca3806f3  gas/testsuite/gas/ia64/rotX.l
+84d7e53abab60346dc101441409d2dc3  gas/testsuite/gas/ia64/rotX.s
+1c4f6b0224347fbd4077e191a7edc33f  gas/testsuite/gas/ia64/secname-ilp32.d
+82a725c3620588c29c4fc0d795e7fe66  gas/testsuite/gas/ia64/secname.d
+67e890795ba55b2d84251e903e037f86  gas/testsuite/gas/ia64/secname.s
+d273dc8aa1c413904f1e9bb44b22dcb1  gas/testsuite/gas/ia64/slot2.l
+8515f2db3d0906171c4864bfb4529d63  gas/testsuite/gas/ia64/slot2.s
+89ba4b7622e2c68e6d20a22f99cf8b8c  gas/testsuite/gas/ia64/strange.d
+a5d6bfa2c1f6ab988b6d48dc46777280  gas/testsuite/gas/ia64/strange.s
+c3e6542e6b17a77846eacecd2c05178b  gas/testsuite/gas/ia64/tls.d
+97ecd7035c79cd4143cc804ffbab35ea  gas/testsuite/gas/ia64/tls.s
+2fbb049aecd48365579d9cb782030908  gas/testsuite/gas/ia64/unwind-bad.l
+72b9d9dd8acfcca2b9fa80d9c3c0e3eb  gas/testsuite/gas/ia64/unwind-bad.s
+3f56f1eee93d0c7aa2ba06039255ff07  gas/testsuite/gas/ia64/unwind-err.l
+099da3b00ff767938efd408bd9e4494f  gas/testsuite/gas/ia64/unwind-err.s
+dd56d5eef5070047d4d2e33144b6a8c8  gas/testsuite/gas/ia64/unwind-ilp32.d
+b473c7b739dba295e4ac12c1e812dd8f  gas/testsuite/gas/ia64/unwind-ok.d
+b30847e1866f172dd9b6b9123228a836  gas/testsuite/gas/ia64/unwind-ok.s
+595392d4680ea4238e88ef47553bce47  gas/testsuite/gas/ia64/unwind.d
+54b7e8d3c7762c7c3c95272c2d0c0b8a  gas/testsuite/gas/ia64/unwind.s
+d6b0de0e58c262ebb157991b42cef765  gas/testsuite/gas/ia64/xdata-ilp32.d
+2ee10569dbfbd5553f167899e75e454a  gas/testsuite/gas/ia64/xdata.d
+0efee14c792c025001d68ffe3c09f7a9  gas/testsuite/gas/ia64/xdata.s
+3cd9cc915e08c2ea2792b9fc2ca95ab5  gas/testsuite/gas/ieee-fp/x930509a.exp
+b0509b0492fd2fc8448b011ae03a41b8  gas/testsuite/gas/ieee-fp/x930509a.s
+a93dccf731a42c0d3faf11b8d3b96979  gas/testsuite/gas/iq2000/allinsn.d
+5fa4d4e98afb53abc8b3e453cf923c5c  gas/testsuite/gas/iq2000/allinsn.exp
+206095bc34484f0f35c4d8624850c5a8  gas/testsuite/gas/iq2000/allinsn.s
+d3cfbfc4a609d152b16632b7a0731679  gas/testsuite/gas/iq2000/hazard0.s
+4090ba0aef5f9561bae85399b661dd03  gas/testsuite/gas/iq2000/hazard1.s
+8096370e741ff2148ba3dbc04d7f6f65  gas/testsuite/gas/iq2000/hazard2.s
+d42820e6042ae5abe8607d7f1123267c  gas/testsuite/gas/iq2000/hazard3.s
+5453db52ad62f96abe48e513f0a1de98  gas/testsuite/gas/iq2000/hazard4.s
+e1977723de2aa2900402d9d49f0fc3a8  gas/testsuite/gas/iq2000/hazard5.s
+a08ef9773be380180ae0f7907dd28985  gas/testsuite/gas/iq2000/load-hazards.exp
+d2ca68442ebbf5c76394139ece449352  gas/testsuite/gas/iq2000/nohazard.s
+a0dd34dfd76fa982804ba071ac664ca1  gas/testsuite/gas/iq2000/noyield.s
+09bcfc91a01a1c522b87fa6bdfac41cb  gas/testsuite/gas/iq2000/odd-ldw.exp
+ab2ec0875f6420b97c4a235c0f277a65  gas/testsuite/gas/iq2000/odd-sdw.exp
+e3867e77791054668d1326bec538f841  gas/testsuite/gas/iq2000/oddldw.s
+da5573533b31cbcbe3f4ac6bcdc6ef1b  gas/testsuite/gas/iq2000/oddsdw.s
+0e659f8379b91084c96922ca53a5fd8d  gas/testsuite/gas/iq2000/yield.exp
+d69a091035a2f9e4c062c985c1c3233c  gas/testsuite/gas/iq2000/yield0.s
+1debd376afeb9275adfb489a8339485e  gas/testsuite/gas/iq2000/yield1.s
+4966d212d153760af9a23c515cb72b7e  gas/testsuite/gas/iq2000/yield2.s
+4dd1463f65b22bd135a533bf446c76a4  gas/testsuite/gas/lns/lns-common-1.d
+32e23f34ed6c24751a462e9acff52e93  gas/testsuite/gas/lns/lns-common-1.s
+a8dbe4ac283be70b5d876b90dca2424d  gas/testsuite/gas/lns/lns-diag-1.l
+be4c80cf566add41e4c6e4f89b90a741  gas/testsuite/gas/lns/lns-diag-1.s
+744a0bed344bca0e02fd414e6171eca5  gas/testsuite/gas/lns/lns.exp
+dcba3dd13f89544c92ccc86e5dcccdeb  gas/testsuite/gas/m32r/allinsn.d
+239bb6ea0e35bbe2e8a5939edab2a2cb  gas/testsuite/gas/m32r/allinsn.exp
+5f9b6e2b9934e8a02576ba496d16ab72  gas/testsuite/gas/m32r/allinsn.s
+418ea1f8c144280c2bfa54387e8beba0  gas/testsuite/gas/m32r/error.exp
+d71cb8f6eee3bbdd0ccecaaca513831a  gas/testsuite/gas/m32r/fslot.d
+da6bcd9a061b6fdd7a4ee5b2aec6811a  gas/testsuite/gas/m32r/fslot.s
+da48ccf2513f4723fced3d98ee902eee  gas/testsuite/gas/m32r/fslotx.d
+c81e23eb3020f45236c4ef7e98a14008  gas/testsuite/gas/m32r/fslotx.s
+e0a4e41d1665c5e0c4ca13ec9b548568  gas/testsuite/gas/m32r/high-1.d
+0c257c8a3667fa667e99bb3cb9aff5a7  gas/testsuite/gas/m32r/high-1.s
+873accfff909b6aac6b9a2e8cf961856  gas/testsuite/gas/m32r/interfere.s
+ab5eeb92f7ceecff8accd6105563fb00  gas/testsuite/gas/m32r/m32r.exp
+f8356fa33e1aa40f0f48046e766c07e4  gas/testsuite/gas/m32r/m32r2.d
+cb569d8cd9b19f9c80158a7dcc9641c0  gas/testsuite/gas/m32r/m32r2.exp
+05c2334e103e8a64c1d354b608d9c26f  gas/testsuite/gas/m32r/m32r2.s
+925faf7606bb992896b5d0a3fedac174  gas/testsuite/gas/m32r/m32rx.d
+778e305ed7747652af13150f315591a9  gas/testsuite/gas/m32r/m32rx.exp
+18de980a0f79928c1374c957b0ada6a9  gas/testsuite/gas/m32r/m32rx.s
+c0b5f95ee4eec971ea74dc81435baec8  gas/testsuite/gas/m32r/outofrange.s
+b6ca1e88ef4cd2485fbd0985ecbd4639  gas/testsuite/gas/m32r/parallel-2.d
+f7243334f19988521763b86ec05466af  gas/testsuite/gas/m32r/parallel-2.s
+1a923d7008ef300fe48e715181d60b38  gas/testsuite/gas/m32r/parallel.s
+aa8f2ce59d396c44db841950b4ccbc8e  gas/testsuite/gas/m32r/pic.d
+12fb586950543782bfbb2aebb34d2d1d  gas/testsuite/gas/m32r/pic.exp
+a7a53dd0986080053acfd273280e0cac  gas/testsuite/gas/m32r/pic.s
+5fa25afca5b586459bb9f769c043a10a  gas/testsuite/gas/m32r/pic2.d
+185cde387728a8a52cc89c0f2c62a88b  gas/testsuite/gas/m32r/pic2.s
+9aefae09c6bf69a68813bfe3b9d522c3  gas/testsuite/gas/m32r/rel32-err.s
+ae60ca76e0212930ab00672ebfc161ef  gas/testsuite/gas/m32r/rel32-pic.d
+81e0a14fcf378b9846014f8cdbeeead1  gas/testsuite/gas/m32r/rel32-pic.s
+2a9f12f6cefbb953d8484d4ad6a51eee  gas/testsuite/gas/m32r/rel32.d
+7dde0592afcf5178f27becd62452ca56  gas/testsuite/gas/m32r/rel32.exp
+81e0a14fcf378b9846014f8cdbeeead1  gas/testsuite/gas/m32r/rel32.s
+e35cfe164c66c6df8f9937607e1804f2  gas/testsuite/gas/m32r/rela-1.d
+91da9eadacb178cf7af3b6367b27f076  gas/testsuite/gas/m32r/rela-1.s
+e458c3261d10b7430278bedfbaf77b57  gas/testsuite/gas/m32r/relax-1.d
+ee56272ade0ca1ed891d0bcdc81d1173  gas/testsuite/gas/m32r/relax-1.s
+ffadebffc2057e150da0f56aa0f6d511  gas/testsuite/gas/m32r/relax-2.d
+dfd4ad2ea1d8b29e222e48a671c648e1  gas/testsuite/gas/m32r/relax-2.s
+da3c17f4b7848e845a19d80fa48898ec  gas/testsuite/gas/m32r/seth.d
+a977285fa6cb4bb433ff8d661160802b  gas/testsuite/gas/m32r/seth.s
+5eeabc5a49a2b873a05fdddf449913df  gas/testsuite/gas/m32r/signed-relocs.d
+0d78c451dfb7d578f7b5c1734ee03f3b  gas/testsuite/gas/m32r/signed-relocs.s
+65a3c2ab71799199c7a45459a9a87b1a  gas/testsuite/gas/m32r/uppercase.d
+3ad7dc32e323605aaf71cc84e39717df  gas/testsuite/gas/m32r/uppercase.s
+d21d472754ca0f699e8faf8c95175ec1  gas/testsuite/gas/m32r/wrongsize.s
+34e89680b972896b988178cc4a253dfa  gas/testsuite/gas/m68hc11/abi-m68hc11-16-32.d
+5c60b03593e7a4936417e9cdd732a004  gas/testsuite/gas/m68hc11/abi-m68hc11-16-64.d
+246ec931f4cac7abf9be7788326737e8  gas/testsuite/gas/m68hc11/abi-m68hc11-32-32.d
+438a68daa3fbd0dabbeffcb033a9cc6b  gas/testsuite/gas/m68hc11/abi-m68hc11-32-64.d
+1b0ca1676265b3dd66785e9656ddd199  gas/testsuite/gas/m68hc11/abi.s
+2ab706a9850050b395067c61297153d2  gas/testsuite/gas/m68hc11/all_insns.d
+57022ccbd6cef54a3a8ece7847d6569f  gas/testsuite/gas/m68hc11/all_insns.s
+7f32a49a34b114c05a55da1eeafb4d3b  gas/testsuite/gas/m68hc11/branchs12.d
+17a5e088710208e31860e64eda08f969  gas/testsuite/gas/m68hc11/branchs12.s
+5808429a46ad9c839353fff77d4645d0  gas/testsuite/gas/m68hc11/bug-1825.d
+9cb931f3ec3500c72620a735c8e03c5b  gas/testsuite/gas/m68hc11/bug-1825.s
+f71f215d7ee2dbc3e3030a67ae57bfb9  gas/testsuite/gas/m68hc11/indexed12.d
+0d2b7ea9c6ed562cfc3566b68729e78b  gas/testsuite/gas/m68hc11/indexed12.s
+92682acac4c6d631c8c4572a869bb5d7  gas/testsuite/gas/m68hc11/insns-dwarf2.d
+7e1438d4bf83a2c1102470d47fc56846  gas/testsuite/gas/m68hc11/insns.d
+c689de902a3cd3f23889c6e7e81ae737  gas/testsuite/gas/m68hc11/insns.s
+4737eff61ed660da03cfdceac21f0155  gas/testsuite/gas/m68hc11/insns12.d
+141b3a4c374a6000333e228ba3b9e47e  gas/testsuite/gas/m68hc11/insns12.s
+ad0fde95cfc2ef7afd31ee01346590aa  gas/testsuite/gas/m68hc11/lbranch-dwarf2.d
+ccb57bcbe25baef712b2a96fa9a5a3ce  gas/testsuite/gas/m68hc11/lbranch.d
+270514d96ae94f63ea38a4eb9fccd095  gas/testsuite/gas/m68hc11/lbranch.s
+c1060a813d93b1996f80a1d4862fe7c4  gas/testsuite/gas/m68hc11/m68hc11.exp
+7e3463ce5e0c47ca8bdaaf6f3d443f8d  gas/testsuite/gas/m68hc11/malis-include.s
+39a35b2b1583a2636a92fe70c4d055ba  gas/testsuite/gas/m68hc11/malis.d
+a469d5986f2366e13cba507b0314fdfd  gas/testsuite/gas/m68hc11/malis.s
+7db9f17261e7d7f985b870ce6f2ad9f7  gas/testsuite/gas/m68hc11/movb.d
+585f39e35793807e3fded97c021bd282  gas/testsuite/gas/m68hc11/movb.s
+7c0b081365af5515eb0415a249765a00  gas/testsuite/gas/m68hc11/opers12-dwarf2.d
+dc9b04a98a41dea42bad2049f46223cc  gas/testsuite/gas/m68hc11/opers12.d
+a782d69af0f936aa9fcdfc1ecbac3c57  gas/testsuite/gas/m68hc11/opers12.s
+2c8cff99738cc49d98ae27854aaf533b  gas/testsuite/gas/m68k/arch-cpu-1.d
+7f784ad008d14a4311b00c38cecf5329  gas/testsuite/gas/m68k/all.exp
+a86d265e30a74bc8fdaa89c1a72e9c16  gas/testsuite/gas/m68k/arch-cpu-1.s
+d36654135443b0740d6b2c78b03ad44b  gas/testsuite/gas/m68k/bitfield.d
+fa19c98907bd173f6de4c396ef9acd45  gas/testsuite/gas/m68k/bitfield.s
+1c229d52fdc1160c9dd9f74b19c1ec69  gas/testsuite/gas/m68k/cas.d
+20e0445e36d8d9f35c6022fa7118a3da  gas/testsuite/gas/m68k/cas.s
+96de03f7fc5967e5d267ae957ac508cf  gas/testsuite/gas/m68k/disperr.s
+26dfd242ac765008271e85e25d9d8446  gas/testsuite/gas/m68k/fmoveml.d
+205a85d6482891f58292e065222b78fa  gas/testsuite/gas/m68k/fmoveml.s
+b14e11a2793fb32f7d471e31e4ecf7b9  gas/testsuite/gas/m68k/link.d
+ea9ee18230b981ada48e2b69bb566220  gas/testsuite/gas/m68k/link.s
+e9d65843e9ff4815317147668bb3eabc  gas/testsuite/gas/m68k/mcf-emac.d
+3b828ef829ca22f8225d76201d49099d  gas/testsuite/gas/m68k/mcf-emac.s
+5251bc4b3f1baba1bbe718d28ee6e8f9  gas/testsuite/gas/m68k/mcf-fpu.d
+7b8bdfd0ea7ff5964a6548f5fef99642  gas/testsuite/gas/m68k/mcf-fpu.s
+d4579214757fe915fc67ea05f7e7c699  gas/testsuite/gas/m68k/mcf-mac.d
+98c8243f9c3e6f7b032b5ae0e1051927  gas/testsuite/gas/m68k/mcf-mac.s
+c06fb50473bc5cc2ef7658e6306256bf  gas/testsuite/gas/m68k/mcf-mov3q.d
+dc28098ce202f2d02aeead18ddac25ca  gas/testsuite/gas/m68k/mcf-mov3q.s
+c9c965f613e915b8a732368a731e15d6  gas/testsuite/gas/m68k/mode5.d
+decae476540e0c22320ce19241609b23  gas/testsuite/gas/m68k/mode5.s
+85e6de04e2d6138d3b0e1e3e932fc884  gas/testsuite/gas/m68k/op68000.d
+d72997199e7c0cfb9dae24c9bc0347fd  gas/testsuite/gas/m68k/operands.d
+d5012d936b1b45db947e4a29a883fc9d  gas/testsuite/gas/m68k/operands.s
+b334f15354ebeffb3acba502cc1dae67  gas/testsuite/gas/m68k/p2410.s
+ce5152b0da290f444d58c6ef03d48e02  gas/testsuite/gas/m68k/p2663.s
+9f97c8240a44cb8d55e355b3577f7a7d  gas/testsuite/gas/m68k/pcrel.d
+3bc8cba59ef27f67c6c6e2a67717db04  gas/testsuite/gas/m68k/pcrel.s
+c1fce4f35335083fbf7d4538c5a7230f  gas/testsuite/gas/m68k/pic1.s
+6ebe1f8291de253ee6ce0e469b3e03aa  gas/testsuite/gas/m68k/t2.d
+ba9a3e851cb31d41e5a33c44dc3ebd13  gas/testsuite/gas/m68k/t2.s
+3a162ab2de5525fc4745144a511922c9  gas/testsuite/gas/m68k-coff/p2389a.s
+4117edd076cf599f92777cbfea5d59ba  gas/testsuite/gas/m68k-coff/gas.exp
+45f1ecda71b05960409560f553228a2d  gas/testsuite/gas/m68k-coff/p2389.s
+29f7789ff1bca9100fda6a1276c73f70  gas/testsuite/gas/m68k-coff/p2430a.s
+2c65e9837c0fa5884e6d7aa8ab7f5b27  gas/testsuite/gas/m68k-coff/p2430.s
+9ae5a3f91535cb9ce86b48698e6096b1  gas/testsuite/gas/m68k-coff/t1.s
+79c4224dcaa95d47119575859a12f052  gas/testsuite/gas/macros/badarg.l
+2e5368d816afde2725f722573ea751b2  gas/testsuite/gas/macros/and.s
+47131083ed80dbfc8d2f763be6720f41  gas/testsuite/gas/macros/app1.d
+9be483fdf05eecb47d3879615b276205  gas/testsuite/gas/macros/app1.s
+49afced25779ba0176156bff676a6857  gas/testsuite/gas/macros/app2.d
+1e8368809d75fb3ef62c84dcd6e6de08  gas/testsuite/gas/macros/app2.s
+62f66365b3c8a7a57bb216add275c935  gas/testsuite/gas/macros/app3.d
+280b931feef9d0cc41435497ab7e8e21  gas/testsuite/gas/macros/app3.s
+d643d0749fedebbdfe8fd4cb9049fc01  gas/testsuite/gas/macros/app4.d
+bd2a54bf74c8592313b0788aa8e6a2cf  gas/testsuite/gas/macros/app4.s
+995b69e42b47dec4148db8181c726668  gas/testsuite/gas/macros/app4b.s
+e7b8d7dc34667abdcad825d3af9e324c  gas/testsuite/gas/macros/badarg.s
+7eafc06c856098f55e230ca38512b66c  gas/testsuite/gas/macros/dot.l
+82ce2a281472a2bf0920b488dcffc5c8  gas/testsuite/gas/macros/dot.s
+24acd998ad2fbeeae147bbd23108b9e6  gas/testsuite/gas/macros/end.l
+08af75c12d981d83fc2ddb9976a60205  gas/testsuite/gas/macros/end.s
+06148aa2e0046074be6e05308a79b642  gas/testsuite/gas/macros/err.s
+f64593bf9530d575f681a8566ef216c3  gas/testsuite/gas/macros/irp.d
+e284db7fba30dba3218492a95521d6b1  gas/testsuite/gas/macros/irp.s
+fad4f73c58da0eaf5f07d5f6218333ca  gas/testsuite/gas/macros/macros.exp
+57f89b0f39596194cda700208502784d  gas/testsuite/gas/macros/paren.d
+645a2095f5f91978eedce3fbf6711923  gas/testsuite/gas/macros/paren.s
+8a89a449aeedd42a670a4edc8c9ee377  gas/testsuite/gas/macros/purge.l
+e8e2f48eb83af34306bcc69a57b4a1e5  gas/testsuite/gas/macros/purge.s
+c1ae846d289af2aadf8628fd4065b805  gas/testsuite/gas/macros/redef.l
+4a17dc932e2a386dfd63e54c978ebfdd  gas/testsuite/gas/macros/redef.s
+e01c1559f46ebcc9e71e12bbbe29d50a  gas/testsuite/gas/macros/repeat.d
+c50b4097dfec4d64d80d9d35282be338  gas/testsuite/gas/macros/repeat.s
+b320acc9c113dd9d1967db7ee0857e8a  gas/testsuite/gas/macros/rept.d
+f5abc6437f073dff4af533a36ea9d280  gas/testsuite/gas/macros/rept.s
+efbeac5d9e630c2251fa42fd98bdfd47  gas/testsuite/gas/macros/semi.d
+e772243ae7fe04097bba952a6d9173bd  gas/testsuite/gas/macros/semi.s
+4441ddbad8be79e14a096f879b1ece66  gas/testsuite/gas/macros/strings.d
+8990b11a483140af060adb1ff48c4cc5  gas/testsuite/gas/macros/strings.s
+df6bcb5dd71cf55583464fc270bc52a1  gas/testsuite/gas/macros/test1.d
+74a3db320fafd23b64c4ab6f48a17246  gas/testsuite/gas/macros/test1.s
+ac43f2633f23586812df9e1a40627d82  gas/testsuite/gas/macros/test2.d
+c881555cf20f7d8ed8635c1bf0d11b37  gas/testsuite/gas/macros/test2.s
+7e8aafe277f842553e1bf935c32fa0e8  gas/testsuite/gas/macros/test3.d
+1dbcc25102396060274f0b3d1268f47c  gas/testsuite/gas/macros/test3.s
+3b25365dfe02718a9704624a1860b9a5  gas/testsuite/gas/macros/vararg.d
+4dfb839d34233c6e8f4d0873cb7adb02  gas/testsuite/gas/macros/vararg.s
+053c9033420f7391c50f98bd1edd1076  gas/testsuite/gas/maxq10/logical.d
+8f23c4d2ef61220ebd997d67de4c2a1b  gas/testsuite/gas/maxq10/bits.d
+c6f20ea8e72f833b6cce7f15bf9f6f21  gas/testsuite/gas/maxq10/bits.s
+550562745f4e2567a721f4cab0aefa4f  gas/testsuite/gas/maxq10/call.d
+357280e7f1117f2144f39e42c2bbc8c9  gas/testsuite/gas/maxq10/call.s
+316a5992361d1d96d3114f953a8eaa15  gas/testsuite/gas/maxq10/data.s
+7d9892a2ba7ac62acf4438d2550de1db  gas/testsuite/gas/maxq10/data2.d
+a012f2ac71c9a24c50739dca243e9fc9  gas/testsuite/gas/maxq10/data2.s
+e71e8f6111366f97590a262ad1ba571d  gas/testsuite/gas/maxq10/data3.d
+5267dd8e1941d9b779e41a25c637786f  gas/testsuite/gas/maxq10/data3.s
+52274b0a692ee168533c2bc401e5ba36  gas/testsuite/gas/maxq10/err.s
+d86a4d79d908d29dc5de9a0097ff57b5  gas/testsuite/gas/maxq10/jump.d
+7d84e415cce0d5ba68e51402d68f7849  gas/testsuite/gas/maxq10/jump.s
+5f54b4afb6c8c69ebd83cb63cf410b3b  gas/testsuite/gas/maxq10/logical.s
+2bee1e7979a6aece81ae8eb6320a11fb  gas/testsuite/gas/maxq10/math.d
+85761b44d45d10ac488f1d44ded77ecf  gas/testsuite/gas/maxq10/math.s
+7ef8f0121bf2f64459ff0422a086555e  gas/testsuite/gas/maxq10/maxq10.exp
+89b86bfe711e39d2420cbc5101e44d25  gas/testsuite/gas/maxq10/pmtest.d
+6ca89ec4c2da1b7af86bbd355ff9ad56  gas/testsuite/gas/maxq10/pmtest.s
+d98e21560e69632265efd0499bba7564  gas/testsuite/gas/maxq10/range.d
+5ca1639fecdae2e8ade183319d049f7f  gas/testsuite/gas/maxq10/range.s
+786b84bb078e05d068da1d63a1033eb6  gas/testsuite/gas/maxq20/logical.d
+292ac472882855a1477e3ccd0eac05c9  gas/testsuite/gas/maxq20/bits.d
+cea3c37a88ca8235daffff08d3f6dc69  gas/testsuite/gas/maxq20/bits.s
+31fb912e25392c80d7ae0a190c0a41e1  gas/testsuite/gas/maxq20/call.d
+cebb63f653127ea83f4dc5721a39fa6e  gas/testsuite/gas/maxq20/call.s
+ad5943437df1dbc32e2e48fede547698  gas/testsuite/gas/maxq20/data1.d
+bfe140a3f13d06a91cb51e45f7be84cc  gas/testsuite/gas/maxq20/data1.s
+7d9892a2ba7ac62acf4438d2550de1db  gas/testsuite/gas/maxq20/data2.d
+a012f2ac71c9a24c50739dca243e9fc9  gas/testsuite/gas/maxq20/data2.s
+2d256d5efa9f1802cb17eaa430a2e7ba  gas/testsuite/gas/maxq20/data3.d
+5267dd8e1941d9b779e41a25c637786f  gas/testsuite/gas/maxq20/data3.s
+9c810df79c3d3b47e202c999a3216796  gas/testsuite/gas/maxq20/jump.d
+40921f3d862a7c6b48a05791e227dc2e  gas/testsuite/gas/maxq20/jump.s
+a5349939dd56f57e10e30c805d445c07  gas/testsuite/gas/maxq20/jzimm.d
+5a726ef0bbbf64d8be90788a2cd34a72  gas/testsuite/gas/maxq20/jzimm.s
+187232c141183983c91bd552f5cfe044  gas/testsuite/gas/maxq20/logical.s
+2bee1e7979a6aece81ae8eb6320a11fb  gas/testsuite/gas/maxq20/math.d
+85761b44d45d10ac488f1d44ded77ecf  gas/testsuite/gas/maxq20/math.s
+ff32a4f0b8d8cebd11946eb3a740c867  gas/testsuite/gas/maxq20/maxq20.exp
+9d35808803755c85075ab7143e927407  gas/testsuite/gas/maxq20/pfx2.s
+7dfd5ed45471501153d0df959b4fb37d  gas/testsuite/gas/maxq20/pmtest.d
+3dfe11240218d6916566185270f414c3  gas/testsuite/gas/maxq20/pmtest.s
+c8afaa0abd962bea9cade99290881b1a  gas/testsuite/gas/maxq20/pxf0.s
+25352e4c8e8ebc1f9bfc96c0f8dac3e7  gas/testsuite/gas/maxq20/range.d
+5ca1639fecdae2e8ade183319d049f7f  gas/testsuite/gas/maxq20/range.s
+60903fd72647c373350a1d88fdb94291  gas/testsuite/gas/mcore/allinsn.d
+3f84389ae5d2fa1891f6db5a66746c47  gas/testsuite/gas/mcore/allinsn.exp
+0ee353f47d16db7430f79032977dc1af  gas/testsuite/gas/mcore/allinsn.s
+b4cc184c25e23755df2ecda7f5b1e988  gas/testsuite/gas/mips/baddata1.l
+4185980a1e50b8b935d3ee3b658b36cf  gas/testsuite/gas/mips/abs.d
+93b8bd81a813fed709cc6b5639d4552a  gas/testsuite/gas/mips/abs.s
+f98b54818883ed309062b1cbf40844e3  gas/testsuite/gas/mips/add.d
+3aee944bf3dc58dded8dd88c0ef7e205  gas/testsuite/gas/mips/add.s
+ee917ab4e18e05e8c9c49a8f160ef442  gas/testsuite/gas/mips/and.d
+31c4e7dfe6203941f0a009c79fe9aedb  gas/testsuite/gas/mips/and.s
+b412b27903c83a7e1d80e6ceadb05db1  gas/testsuite/gas/mips/baddata1.s
+d12c2296a90c1ff16482e7d3556bc8e7  gas/testsuite/gas/mips/beq.d
+8ae656396abdd4dbf037c1c328b49beb  gas/testsuite/gas/mips/beq.s
+b52a9ba94799fa8adb62f9ff872b8de8  gas/testsuite/gas/mips/bge.d
+1f822fbdc924242df560fc5a78e933ac  gas/testsuite/gas/mips/bge.s
+e572d0f7bcd94658df10f8ad9df3012a  gas/testsuite/gas/mips/bgeu.d
+09c66f75fae94e7b374166c3a7f8ae8b  gas/testsuite/gas/mips/bgeu.s
+5ed3b4094f3137034b4081d19ee21a40  gas/testsuite/gas/mips/blt.d
+ed4c062db5e94ca343ab51f933d28284  gas/testsuite/gas/mips/blt.s
+5e7ab87388219c577b720ef9fd167a58  gas/testsuite/gas/mips/bltu.d
+c7fea0eee155d0c32b4c95754f6abfbc  gas/testsuite/gas/mips/bltu.s
+4c858ab5549f4cdf659f700fab87b3ed  gas/testsuite/gas/mips/branch-misc-1.d
+9121204cadf61e01caeac35fbbdf4611  gas/testsuite/gas/mips/branch-misc-1.s
+e716d55a86f59806ad030d3cc059e378  gas/testsuite/gas/mips/branch-misc-2-64.d
+5092ab561a9e7a52c91dd17a56b06cc4  gas/testsuite/gas/mips/branch-misc-2.d
+ff37aad2590c449434670fb6eb91bd7c  gas/testsuite/gas/mips/branch-misc-2.s
+64327f106e4b6acc51a8a79f4224d76c  gas/testsuite/gas/mips/branch-misc-2pic-64.d
+1492153a9966c875ca6b08daab0937ff  gas/testsuite/gas/mips/branch-misc-2pic.d
+c759e7da1ca3460a3f3aecb62d752a57  gas/testsuite/gas/mips/branch-misc-3.d
+03386ef0c29fc9cd797e867b45ccc281  gas/testsuite/gas/mips/branch-misc-3.s
+94c3d83c6c4374340d5da28cf843bc76  gas/testsuite/gas/mips/branch-swap.d
+0a639c15c4cf5d990d1e342faab9013a  gas/testsuite/gas/mips/branch-swap.s
+9019640b31913709f26c121174ed6f31  gas/testsuite/gas/mips/break20.d
+01e30fca71ae643c6acb0e4c3d579f1c  gas/testsuite/gas/mips/break20.s
+30612145052e1d2fe5fb72653f2b1c21  gas/testsuite/gas/mips/cp0-names-mips32.d
+f257dc9a16a2d8c1c7fa591ae1367e27  gas/testsuite/gas/mips/cp0-names-mips32r2.d
+85d6bc895e6396d1220b182ee81497d1  gas/testsuite/gas/mips/cp0-names-mips64.d
+3449570fae576b82c519c71630237f7e  gas/testsuite/gas/mips/cp0-names-mips64r2.d
+820045ce9ca1a528b336ed1613fe9ab8  gas/testsuite/gas/mips/cp0-names-numeric.d
+435490224450a34be4dfd2ae5c62d629  gas/testsuite/gas/mips/cp0-names-sb1.d
+0eef2b21d782da076667ee1d1be4c0b1  gas/testsuite/gas/mips/cp0-names.s
+2ceebd2a22d7e2bbbd437ba81930d083  gas/testsuite/gas/mips/cp0sel-names-mips32.d
+9d262dbdff7382b021d23398879a6c45  gas/testsuite/gas/mips/cp0sel-names-mips32r2.d
+fb2beb4484f7975a92f9d87f55ea7879  gas/testsuite/gas/mips/cp0sel-names-mips64.d
+f1e91b60b4367a1ede8d79e505fe7b78  gas/testsuite/gas/mips/cp0sel-names-mips64r2.d
+7b656e828f45bcd53f460b5c862af427  gas/testsuite/gas/mips/cp0sel-names-numeric.d
+8c78816fa436c9deae7f7c868033283f  gas/testsuite/gas/mips/cp0sel-names-sb1.d
+1d57095720d3c2d464ceecd3230b0b1d  gas/testsuite/gas/mips/cp0sel-names.s
+03a662feca559831acdbf0a3f76f5c70  gas/testsuite/gas/mips/delay.d
+538610ec904788baaf4b069afb5b75e4  gas/testsuite/gas/mips/delay.s
+6ce614bbef53b14bfaae9d392f25d8e4  gas/testsuite/gas/mips/div-ilocks.d
+ca695be3a404528913fa436b4773fa33  gas/testsuite/gas/mips/div.d
+6da8cc8418138e9b9ee39ac970e437da  gas/testsuite/gas/mips/div.s
+290a6d7e5a4265251f59f79fcbf5b73d  gas/testsuite/gas/mips/dli.d
+89a3d7e768db094a0b11ede7bfca879d  gas/testsuite/gas/mips/dli.s
+764700ed0df540aaba1ccaa4310bcc5f  gas/testsuite/gas/mips/e32-rel2.d
+4c2cd341ba2cbcb72012687a452553ab  gas/testsuite/gas/mips/e32-rel4.d
+7f955420dcd7e12dd104d6c81fa20b7d  gas/testsuite/gas/mips/e32el-rel2.d
+4db6e83621d51e75691a170444580c92  gas/testsuite/gas/mips/elf-consthilo.d
+7d6fc8c3c1f4707ba226b63b085eccc9  gas/testsuite/gas/mips/elf-consthilo.s
+40a7a850f37f26bd09cff361a3d36260  gas/testsuite/gas/mips/elf-jal.d
+e1a412b36896d1df31ae1a5723d913fc  gas/testsuite/gas/mips/elf-rel-got-n32.d
+b703fb7c98d9ca3ae7188b4ca9f7884f  gas/testsuite/gas/mips/elf-rel-got-n32.s
+dca717c07ec35a9a3c2e120c19509ee8  gas/testsuite/gas/mips/elf-rel-got-n64.d
+c09c6e2e13ec39459171d47a0a1de0dc  gas/testsuite/gas/mips/elf-rel-got-n64.s
+246786fedabd1bc55678a626281d56c1  gas/testsuite/gas/mips/elf-rel-xgot-n32.d
+5e43392b134b49756e570cb8d7c92dd0  gas/testsuite/gas/mips/elf-rel-xgot-n64.d
+e47974cd486925a67c3394c009fa4639  gas/testsuite/gas/mips/elf-rel.d
+502a3f9d5d4d477818aa628da52d9dc7  gas/testsuite/gas/mips/elf-rel.s
+fd815ecb2e693579935d3f7d528f98b3  gas/testsuite/gas/mips/elf-rel10.d
+9edb23aa539a4eb538ab2ae82789cb72  gas/testsuite/gas/mips/elf-rel10.s
+d9a6383654de3b0a3253251fc51545d1  gas/testsuite/gas/mips/elf-rel11.d
+976f6c1629fb9665abfe19081a6e2e77  gas/testsuite/gas/mips/elf-rel11.s
+45839cc4faac9e5feac6a60aea98e8ef  gas/testsuite/gas/mips/elf-rel12.d
+cfbd6623492939a879a8c06ec19c9782  gas/testsuite/gas/mips/elf-rel12.s
+1a2b7b746c809d850a52b210805534bb  gas/testsuite/gas/mips/elf-rel13.d
+7d15dc149c45847f3da69f237b49f75c  gas/testsuite/gas/mips/elf-rel13.s
+5c320d3cb1beb042486e9a8745b4c2c6  gas/testsuite/gas/mips/elf-rel14.d
+f0b56f0ca5879b02a735a42d59550e96  gas/testsuite/gas/mips/elf-rel14.s
+b1948a758b8a0bfdef54909a790e4548  gas/testsuite/gas/mips/elf-rel15.d
+cd997153f06e3c05746f8d2660b406f3  gas/testsuite/gas/mips/elf-rel15.s
+c8d2800a57b09863e267abbc84d6013b  gas/testsuite/gas/mips/elf-rel16.d
+c84fdf9f052ea8c6520ac0a0b3ad4a53  gas/testsuite/gas/mips/elf-rel16.s
+3cb2a7baa417f6f854b5fba684329ea8  gas/testsuite/gas/mips/elf-rel17.d
+a2e720638aed5afda45f03d004fb6940  gas/testsuite/gas/mips/elf-rel17.s
+7dad2d4e65bdb6c66a8c66b6bad1b9e6  gas/testsuite/gas/mips/elf-rel18.d
+2f9e052ff885274c4e13e6f605cab8d3  gas/testsuite/gas/mips/elf-rel18.s
+3491f79ba615bc3f9bcb54d0713a6aad  gas/testsuite/gas/mips/elf-rel19.d
+af8416449087ed017bdfe9307e1b6500  gas/testsuite/gas/mips/elf-rel19.s
+7ea2d327a53a021baa7138395d5da023  gas/testsuite/gas/mips/elf-rel2.d
+f7a0c6062a5a8fe838e93a14441b72bc  gas/testsuite/gas/mips/elf-rel2.s
+b044ed458368bf7bd0706a3e4a8ea1c9  gas/testsuite/gas/mips/elf-rel20.d
+982048418bd0153f8c1117b51c685e2f  gas/testsuite/gas/mips/elf-rel20.s
+a13edfcf468e99da0de2514f1e853fdd  gas/testsuite/gas/mips/elf-rel21.d
+701aaa1b0c7d66a1697166b9b854245c  gas/testsuite/gas/mips/elf-rel21.s
+e05a3c34f7cdbed02f3c53dce1fea3d6  gas/testsuite/gas/mips/elf-rel22.d
+d2bbcb6ddb42de18b0f6fdc8faf14780  gas/testsuite/gas/mips/elf-rel22.s
+9be1e5f72ab920ba4f8e5554836b81b2  gas/testsuite/gas/mips/elf-rel23.d
+ac83e63959938893af13b631921cbdf1  gas/testsuite/gas/mips/elf-rel23.s
+a26069fba96baec6f50d247bf7ce5011  gas/testsuite/gas/mips/elf-rel23a.d
+820be43d9775898d155af457141b2dde  gas/testsuite/gas/mips/elf-rel23b.d
+4d58f6bdbdb4b350c49d12d719d3805a  gas/testsuite/gas/mips/elf-rel24.d
+f8e5b9d5e57f774b7426c2834fd2dbc7  gas/testsuite/gas/mips/elf-rel24.s
+b3633d6652d00fab06d8a19f602ca2c3  gas/testsuite/gas/mips/elf-rel25.d
+1c736e711964110cc8f5fc80fba12af6  gas/testsuite/gas/mips/elf-rel25.s
+37e4931f9f5d2b267e03aaecda86d635  gas/testsuite/gas/mips/elf-rel25a.d
+8f6eb63aa0674f8e02147aa7d028cb50  gas/testsuite/gas/mips/elf-rel3.d
+e410b64c4640b935f6bb831e74cd2870  gas/testsuite/gas/mips/elf-rel3.s
+4b7429259a1a34ec68bd6044981bfd92  gas/testsuite/gas/mips/elf-rel4.d
+0d455c951ca8758804fe2051e10ff8da  gas/testsuite/gas/mips/elf-rel4.s
+7da48a40b9c65128701389907d56e77b  gas/testsuite/gas/mips/elf-rel5.d
+afc1f5689df1d0e4acbdc2b757e6cb16  gas/testsuite/gas/mips/elf-rel5.s
+28d7b04b7f8b658e2882355dca8b8620  gas/testsuite/gas/mips/elf-rel6.d
+3f19a2c48b72ae877763a93812a8f486  gas/testsuite/gas/mips/elf-rel6.s
+5547d261f60275f6c55c3dae337efa6f  gas/testsuite/gas/mips/elf-rel7.d
+b6baa98ec9d4b2adfd3f5d39bbeae554  gas/testsuite/gas/mips/elf-rel7.s
+b190c96744ac9f75edb8afcd4eac2508  gas/testsuite/gas/mips/elf-rel8.d
+4e472ae6748e852b7042fa1f4c93adb7  gas/testsuite/gas/mips/elf-rel8.s
+65a8f08afc30c59bcb79c4c6034738f7  gas/testsuite/gas/mips/elf-rel9.d
+b2bbff55e0858b353cbab866d75a667e  gas/testsuite/gas/mips/elf-rel9.s
+33497173dfabd65fb6dcdd870c38284e  gas/testsuite/gas/mips/elf_arch_mips1.d
+2f7189968598e85e9a6d9553ad4bd98f  gas/testsuite/gas/mips/elf_arch_mips2.d
+a59ce8a45ea4d62efead35c03e80c946  gas/testsuite/gas/mips/elf_arch_mips3.d
+24a6739368675680e62da8b43229db24  gas/testsuite/gas/mips/elf_arch_mips32.d
+9a87a8c1c1e14c84eed5b0a170fe2f87  gas/testsuite/gas/mips/elf_arch_mips32r2.d
+fabd38587c85d4b0d4d03161e20f80df  gas/testsuite/gas/mips/elf_arch_mips4.d
+1a0323806fc40e26782f9ce94d44aa3d  gas/testsuite/gas/mips/elf_arch_mips5.d
+cd1bdbc63429b93b91d3c926091a21d4  gas/testsuite/gas/mips/elf_arch_mips64.d
+4487722fdd93cd65723774f04e4c62ae  gas/testsuite/gas/mips/elf_arch_mips64r2.d
+11e39b4703398bcbcfccb3a48c1779c8  gas/testsuite/gas/mips/elf_ase_mips16.d
+6531d00a109f1e0829eda1178a1b886a  gas/testsuite/gas/mips/elf_e_flags.c
+6bbeff5a2159c064f18894cc7bd9b7ef  gas/testsuite/gas/mips/elf_e_flags.s
+5195b99d09665b7ef9b71e2c53bb8fd6  gas/testsuite/gas/mips/elf_e_flags1.d
+bb39999583f7c2aca308a93651cf8c68  gas/testsuite/gas/mips/elf_e_flags2.d
+f63ed5c3cdbd37ab7940faa40cf8f2b5  gas/testsuite/gas/mips/elf_e_flags3.d
+f63ed5c3cdbd37ab7940faa40cf8f2b5  gas/testsuite/gas/mips/elf_e_flags4.d
+b0d1b9c39d6c50cb1d5c7c342894034b  gas/testsuite/gas/mips/elfel-rel.d
+b7bd44be9401841ac42a1fbda7e5d372  gas/testsuite/gas/mips/elfel-rel2.d
+0e3f70264e44b82f910fcf735c1d9e27  gas/testsuite/gas/mips/elfel-rel3.d
+78bc390993b007fb9b0866209d3c30d1  gas/testsuite/gas/mips/empty.s
+bcf73183f8949a816b6901d22fbe1162  gas/testsuite/gas/mips/expr1.d
+6fb3005d059cb1b45a4a86e14c56fcac  gas/testsuite/gas/mips/expr1.s
+32922f0496e841aa3a1bd4209a4cd901  gas/testsuite/gas/mips/fpr-names-32.d
+c113920cb549a0af681b07ea67a13218  gas/testsuite/gas/mips/fpr-names-64.d
+4cb09267c5e0b68305e75d7c9d1e4bd5  gas/testsuite/gas/mips/fpr-names-n32.d
+a43e6c1cd7d89b4b715b852927d5135b  gas/testsuite/gas/mips/fpr-names-numeric.d
+824a085f211c176750127e9a311c514d  gas/testsuite/gas/mips/fpr-names.s
+d74dfe4a05aff75e80e09e2afad6ac01  gas/testsuite/gas/mips/gpr-names-32.d
+8ea9e708ff9c7c31e60e3b46e16838aa  gas/testsuite/gas/mips/gpr-names-64.d
+bb6c0c7be041ec5f6406ae33c304c041  gas/testsuite/gas/mips/gpr-names-n32.d
+75457dd316069b8bb3e5afce3748723e  gas/testsuite/gas/mips/gpr-names-numeric.d
+7500fbfda3124c0dbda33a9b704a44f5  gas/testsuite/gas/mips/gpr-names.s
+f415b030a55928482057aea074f309f8  gas/testsuite/gas/mips/hwr-names-mips32r2.d
+862acc414d4dda65d1e20f56cbfaf7c1  gas/testsuite/gas/mips/hwr-names-mips64r2.d
+2b9a455406eb8f66f8f200bcf2ee0466  gas/testsuite/gas/mips/hwr-names-numeric.d
+849a87fc73c7b8b6f65392a02df39104  gas/testsuite/gas/mips/hwr-names.s
+0ba415f5bfea75cc62d4450cc4687548  gas/testsuite/gas/mips/illegal.l
+75704852136f9d0d9888c8899cca307e  gas/testsuite/gas/mips/illegal.s
+b47234477b017d8640d0a583d17b44cb  gas/testsuite/gas/mips/itbl
+3be9cfa967f82e0b4325b152baf0f23a  gas/testsuite/gas/mips/itbl.s
+806671f3ba17b750c415c62f3483b1a8  gas/testsuite/gas/mips/jal-newabi.d
+05fc99b54ef095862bfb5f15fdfdbb59  gas/testsuite/gas/mips/jal-newabi.s
+af73cf131e4217ded49d9937721c78ac  gas/testsuite/gas/mips/jal-range.l
+d37160d514747dbd273f2dae78242675  gas/testsuite/gas/mips/jal-range.s
+4c0cf5f2c33fe6b5b3fe1fe05edc37e4  gas/testsuite/gas/mips/jal-svr4pic.d
+c174c601b60e5a65129e1e9dc535cd0f  gas/testsuite/gas/mips/jal-svr4pic.s
+ca6047bf2ad6e8a99319ac45f52e64ae  gas/testsuite/gas/mips/jal-xgot.d
+d876a82947baae38f0314ae91b1fbcb1  gas/testsuite/gas/mips/jal.d
+2a9d8534b670ee90e9212ab2a706cf87  gas/testsuite/gas/mips/jal.s
+15356c60bcac6e156c5f629a88d92fe0  gas/testsuite/gas/mips/la-svr4pic.d
+45f6ffc8e167946c3e1d44a703cba0e4  gas/testsuite/gas/mips/la-xgot.d
+11e4734b84595954b767eba5d0bb1044  gas/testsuite/gas/mips/la.d
+f479612dc60112156a66a5292a60b205  gas/testsuite/gas/mips/la.s
+b941d24b4746291a2fe361540766913b  gas/testsuite/gas/mips/lb-pic.s
+d80e8d1ab0a8aabb265cc4a63fb15a17  gas/testsuite/gas/mips/lb-svr4pic-ilocks.d
+28a1aeb5b798b08aeb8f41952783613e  gas/testsuite/gas/mips/lb-svr4pic.d
+f8212d08fb744582e87e55a54250a46a  gas/testsuite/gas/mips/lb-xgot-ilocks.d
+4226b46737391e95c5b2739382046806  gas/testsuite/gas/mips/lb-xgot.d
+a0494f7d25a874a787a31168a25eb55c  gas/testsuite/gas/mips/lb.d
+e9d35a3d0cdd51294a858378d467574d  gas/testsuite/gas/mips/lb.s
+12bd768f81937939f2f0f8232a2f2dde  gas/testsuite/gas/mips/lca-svr4pic.d
+53cd33ce035fdad5cde09253c9ebb6f1  gas/testsuite/gas/mips/lca-xgot.d
+f23be7fae2a96c3284a681a8e2207752  gas/testsuite/gas/mips/lca.s
+5cce0bd89da066c03aa27c7eaa644fb3  gas/testsuite/gas/mips/ld-ilocks-addr32.d
+7cec7e938337dca05a5f45ca501cae66  gas/testsuite/gas/mips/ld-ilocks.d
+1040f7d178a2863a838e2a807fc50f06  gas/testsuite/gas/mips/ld-pic.s
+a48027431f0a603aa97ae1688b56e5ab  gas/testsuite/gas/mips/ld-svr4pic.d
+db420551b3b1124e47242a855b04a348  gas/testsuite/gas/mips/ld-xgot.d
+dddf18f9c7d07b7fa46efce53311058f  gas/testsuite/gas/mips/ld.d
+8b08d1b9548f0a0ece2cede37c07ec87  gas/testsuite/gas/mips/ld.s
+e3c5f4701fa5ef6da67ab162e0701906  gas/testsuite/gas/mips/ldstla-32-1.l
+e715607a1b2e59844473eea6a28b3b3d  gas/testsuite/gas/mips/ldstla-32-1.s
+6dc370cc55e32089500c63074acb0e25  gas/testsuite/gas/mips/ldstla-32.d
+8f6518564ee0f0b69553f9081bcd8787  gas/testsuite/gas/mips/ldstla-32-mips3-1.l
+bdfff1940f0efbe7e068b5611681b82d  gas/testsuite/gas/mips/ldstla-32-mips3-1.s
+900fbf3f4266555e2599ae7cfee40cab  gas/testsuite/gas/mips/ldstla-32-mips3-shared.d
+cdf2ea34d390697493589dffa7ed56c6  gas/testsuite/gas/mips/ldstla-32-mips3.d
+67cc1f7a7b4b84eaef6c85592ca0942f  gas/testsuite/gas/mips/ldstla-32-mips3.s
+bab6eeb0cf5512f97e011aaaaff2a03f  gas/testsuite/gas/mips/ldstla-32-shared.d
+424e9e3a1c37af4b60498276e4e9af35  gas/testsuite/gas/mips/ldstla-32.s
+3d4151db916f1064692db92eb644cbd9  gas/testsuite/gas/mips/ldstla-eabi64.d
+2c05cc3cbc968a0fc33da2d0dfa7502f  gas/testsuite/gas/mips/ldstla-n64-shared.d
+3e0fa8e7e5fc151ea9fad9b2bf44c2ad  gas/testsuite/gas/mips/ldstla-n64-sym32.d
+1dedc4cced73786c823b605a3bb20786  gas/testsuite/gas/mips/ldstla-n64.d
+58dae8f6134587e036344a9428ce6586  gas/testsuite/gas/mips/ldstla-n64.s
+e17dbe468d298789464c46b6e6e39d27  gas/testsuite/gas/mips/ldstla-sym32.s
+9e7e25f7102e3b7d6e98e2db01a38740  gas/testsuite/gas/mips/li.d
+b5df74ea9e934e9bf65cd0bba8eac411  gas/testsuite/gas/mips/li.s
+d5d5aaf1d8ceef401619713a7b82ddde  gas/testsuite/gas/mips/lif-svr4pic.d
+f0a2320bdd6af639af27993f486030bb  gas/testsuite/gas/mips/lif-xgot.d
+c0a0b00a2625f37afdfd43b94643bbe0  gas/testsuite/gas/mips/lifloat.d
+50ee76bc3e007e2aea14b01a980091b3  gas/testsuite/gas/mips/lifloat.s
+99c598c58a563402b8d439ad9e00e45e  gas/testsuite/gas/mips/lineno.d
+c2034fba9031ad7f3bc0a1128ae6198f  gas/testsuite/gas/mips/lineno.s
+d8456a592251a715d03edd92470bdf06  gas/testsuite/gas/mips/macro-warn-1-n32.d
+773413904dd1ddfa0cdbd72042dffa1b  gas/testsuite/gas/mips/macro-warn-1-n32.l
+6ee48c6e65d0c8a2f7cea8071bf5c975  gas/testsuite/gas/mips/macro-warn-1.d
+32fa865bbc5c3e7febd1e665068b87ea  gas/testsuite/gas/mips/macro-warn-1.l
+ab66485696c800a8416450e1b36f092a  gas/testsuite/gas/mips/macro-warn-1.s
+c92bb255d0a4b5117dbd3d089b3249fc  gas/testsuite/gas/mips/macro-warn-2-n32.d
+99db57727f1b9241274b974a6688e594  gas/testsuite/gas/mips/macro-warn-2.d
+db8744b3c40056b50c250f4b2787539f  gas/testsuite/gas/mips/macro-warn-2.l
+2709f4454ddc55c88beb2b5fc524755f  gas/testsuite/gas/mips/macro-warn-2.s
+0e2295f4991fc3534fec5e257cfb4042  gas/testsuite/gas/mips/macro-warn-3.d
+16da7d3602a7a6547d4f40c59a2eb5f2  gas/testsuite/gas/mips/macro-warn-3.l
+91289ab33e95282457567256ff70bcfb  gas/testsuite/gas/mips/macro-warn-3.s
+45701b0c9f7fc1cdf218c256905da73b  gas/testsuite/gas/mips/macro-warn-4.d
+e2242cb25647a83087c9035837475bf6  gas/testsuite/gas/mips/macro-warn-4.l
+1a6e68b5c63e3a7fd2c4f55e00b2f543  gas/testsuite/gas/mips/macro-warn-4.s
+f90e6665ee364e66764ad76ea38d581c  gas/testsuite/gas/mips/mips-abi32-pic.d
+3e79a0a6b17b839dbc4d121dd0bf0472  gas/testsuite/gas/mips/mips-abi32-pic.s
+2be308268634bbc13fe5be86d5ed00ac  gas/testsuite/gas/mips/mips-abi32-pic2.d
+9a43c32af8a197c8734ea9e2fb371eb1  gas/testsuite/gas/mips/mips-abi32-pic2.s
+8b74369c5ab63097706cfb326d27665e  gas/testsuite/gas/mips/mips-abi32.d
+310ea844ee3e8aced00ea6ee27db05f4  gas/testsuite/gas/mips/mips-abi32.s
+501c37622a3a634443963259b0106b1a  gas/testsuite/gas/mips/mips-gp32-fp32-pic.d
+2b5da35909aae208e59ed71f01f84a00  gas/testsuite/gas/mips/mips-gp32-fp32-pic.s
+2c52331faeed793a03ba77fb1af641cf  gas/testsuite/gas/mips/mips-gp32-fp32.d
+38402d7406992c005e3d22c792095906  gas/testsuite/gas/mips/mips-gp32-fp32.s
+813d6edcc14cfc0bd67c8af9bd12570c  gas/testsuite/gas/mips/mips-gp32-fp64-pic.d
+6fec84d1a325308f963f9813d5a9df84  gas/testsuite/gas/mips/mips-gp32-fp64-pic.s
+73cade4ae7f4477c06c1ae9770c07fa7  gas/testsuite/gas/mips/mips-gp32-fp64.d
+c8b1255a48810ecd5641efd78f9fac67  gas/testsuite/gas/mips/mips-gp32-fp64.s
+a3d5c7072d355d011f741b58234a4599  gas/testsuite/gas/mips/mips-gp64-fp32-pic.d
+2db2ff450b5afa36c19534edab7192b2  gas/testsuite/gas/mips/mips-gp64-fp32-pic.s
+88def3c4f523b1a0d5224f7c32ad247d  gas/testsuite/gas/mips/mips-gp64-fp32.d
+e6be4d9ff36fe372a5b838c914461929  gas/testsuite/gas/mips/mips-gp64-fp32.l
+0c487b950f2e00c12c4f3bd2d2f597a1  gas/testsuite/gas/mips/mips-gp64-fp32.s
+12cec0f1bd9c11425f4eb5f7bdc5f311  gas/testsuite/gas/mips/mips-gp64-fp64-pic.d
+49eaf79b46ed3df73a7bd49dda0611ed  gas/testsuite/gas/mips/mips-gp64-fp64-pic.s
+4618d4f537707ac000abe954dea05b54  gas/testsuite/gas/mips/mips-gp64-fp64.d
+e6be4d9ff36fe372a5b838c914461929  gas/testsuite/gas/mips/mips-gp64-fp64.l
+0bba7e49525b335ca7a88ea75cb22c73  gas/testsuite/gas/mips/mips-gp64-fp64.s
+c0510bc1b6445ec158c3c85f37c19ee4  gas/testsuite/gas/mips/mips-jalx.d
+1f6a560c324971ac8573be14aacc528f  gas/testsuite/gas/mips/mips-jalx.s
+9a0679f3fa2f92660a5cb12924e0b843  gas/testsuite/gas/mips/mips-no-jalx.l
+262aacb1cd28ab8a0f73b85c9608e970  gas/testsuite/gas/mips/mips-no-jalx.s
+7107b2899fb26553cf1fa27bc7d46e5f  gas/testsuite/gas/mips/mips.exp
+69fcac4647653e47e7cdb109987121cf  gas/testsuite/gas/mips/mips16-64.d
+8a910bdd6955f163b663eba25217605b  gas/testsuite/gas/mips/mips16-dwarf2-n32.d
+d1849362896f01c1adf09da894f75c5f  gas/testsuite/gas/mips/mips16-dwarf2.d
+6b805809a6f9a5b4ff587982aeb3aa57  gas/testsuite/gas/mips/mips16-dwarf2.s
+e49f6087a7688f083bb9cd8984228375  gas/testsuite/gas/mips/mips16-e.d
+4785c49a602347865df48551df7121fc  gas/testsuite/gas/mips/mips16-e.s
+531f084b654497b0680719d879a35a87  gas/testsuite/gas/mips/mips16-f.d
+7146e7075936aa4a1434864cf7bf6d4e  gas/testsuite/gas/mips/mips16-f.s
+f9406b9f1a2f835edaf26bdf89dd4af5  gas/testsuite/gas/mips/mips16-hilo-n32.d
+67199cb41a90f4e6c33e930c6ac84ccc  gas/testsuite/gas/mips/mips16-hilo.d
+729ccfc0e7f073829ca7f69545469c93  gas/testsuite/gas/mips/mips16-hilo.s
+c0332c4d7395b7941df1e9141cf038f0  gas/testsuite/gas/mips/mips16-jalx.d
+c6f91156b0d13de84854f1c20c862aba  gas/testsuite/gas/mips/mips16-jalx.s
+30869d85612d49b0966673de6178997c  gas/testsuite/gas/mips/mips16.d
+a686ad0a2da9fe043d717c57b4580d0b  gas/testsuite/gas/mips/mips16.s
+d634740f3f4bc17bbf064a5317cb0260  gas/testsuite/gas/mips/mips16e-jrc.d
+ecce530f17dabb5411175579862663fc  gas/testsuite/gas/mips/mips16e-jrc.s
+c78084b49a079b9f89bab3ffaf2d1a9f  gas/testsuite/gas/mips/mips16e-save.d
+9989e440758c83f4183c998e3f5840dc  gas/testsuite/gas/mips/mips16e-save.s
+d42b6c0efdcd2d26f30f6b529467c1c7  gas/testsuite/gas/mips/mips32-dsp.d
+237304ea40bb55e348be38247edabbfe  gas/testsuite/gas/mips/mips32-dsp.l
+431d26e83ed8b89bb5b3d72c1be6fcda  gas/testsuite/gas/mips/mips32-dsp.s
+063b500d69bedab082ba0a82ed983639  gas/testsuite/gas/mips/mips32-mt.d
+4147657dd7567c36a8ac19ba1be6ba4c  gas/testsuite/gas/mips/mips32-mt.l
+a88ad66d3f1e902473bacef04ba66e67  gas/testsuite/gas/mips/mips32-mt.s
+b99ddd30602283d7434d0ed6cbef586a  gas/testsuite/gas/mips/mips32.d
+357a8be90566fae2979a9acd0b498fb2  gas/testsuite/gas/mips/mips32.s
+d03f555bc073f0038562c3019d0327d6  gas/testsuite/gas/mips/mips32r2-ill-fp64.l
+59658e0b3428861ed4e4ef74205fcd95  gas/testsuite/gas/mips/mips32r2-ill-fp64.s
+4d93dbd622d7b77c4afb1a3e9aa1e5ef  gas/testsuite/gas/mips/mips32r2-ill.l
+e4bf167b7f52ae862811e7b158f205a8  gas/testsuite/gas/mips/mips32r2-ill.s
+7427db339a49b7fbd46bf9148bab1538  gas/testsuite/gas/mips/mips32r2.d
+bd08b34ec908453157e1922a2cbbc64d  gas/testsuite/gas/mips/mips32r2.s
+fe5a390ee313beb9c42626d391ead768  gas/testsuite/gas/mips/mips4.d
+6f8ea63dba3d15aeefe668f21c7d9c22  gas/testsuite/gas/mips/mips4.s
+525b9feded73ef555e7eb94cd1459dcc  gas/testsuite/gas/mips/mips4010.d
+cd49d59fb8e9057e6313f5ff630015b9  gas/testsuite/gas/mips/mips4010.s
+e1387d3ba60454e12f2fd65e0dc8f0f1  gas/testsuite/gas/mips/mips4100.d
+f864a3faa585a344dde75972a70d1a52  gas/testsuite/gas/mips/mips4100.s
+3987ab6f2aea0552dd948c4dc75be6e4  gas/testsuite/gas/mips/mips4650.d
+5c10900661e0928e9a340c3c925418b1  gas/testsuite/gas/mips/mips4650.s
+a2955207eca3202cd1e3f865bd8e65ff  gas/testsuite/gas/mips/mips5.d
+63e8effa871782fd33ecc97d55a2feb2  gas/testsuite/gas/mips/mips5.l
+0e532e8bc0d3c26c91d11ab05bc992a5  gas/testsuite/gas/mips/mips5.s
+560bcd3d2db7bc623eb910f984ed146e  gas/testsuite/gas/mips/mips64-mdmx.d
+1febffb6dc592c8a10b7237347f30aa2  gas/testsuite/gas/mips/mips64-mdmx.s
+f604e8ff7b44ac81cf1e7db305746e8e  gas/testsuite/gas/mips/mips64-mips3d-incl.d
+6d0bc31fe00d5d9c9a4fd07e931d6d45  gas/testsuite/gas/mips/mips64-mips3d.d
+f2f60961d3a921f1e20c2d386e782f09  gas/testsuite/gas/mips/mips64-mips3d.l
+c2a456cf65796a255e1b157f0a487e58  gas/testsuite/gas/mips/mips64-mips3d.s
+8d282ea68af79f33253b7b93d0856be5  gas/testsuite/gas/mips/mips64.d
+4929310e699e0e1ac8bc28e44030ebff  gas/testsuite/gas/mips/mips64.s
+786eb2843ed8ffe47e69bc81724f1c16  gas/testsuite/gas/mips/mips64r2-ill.l
+813b1f7f0ece03c4c2566ee2e85529b0  gas/testsuite/gas/mips/mips64r2-ill.s
+df92f25d4122d36c854f1f375992b9d3  gas/testsuite/gas/mips/mips64r2.d
+bb49ade11c2fd90af659940cd085b04c  gas/testsuite/gas/mips/mips64r2.s
+df63f169cd8e9bb5984fcfcf0a66495c  gas/testsuite/gas/mips/mipsel16-e.d
+262a950c5a161404f52f13fc2352855e  gas/testsuite/gas/mips/mipsel16-f.d
+ef0171001ae8a851199eae2014924bcd  gas/testsuite/gas/mips/mul-ilocks.d
+da8dbb1647cec16e39fdbef014fdc323  gas/testsuite/gas/mips/mul.d
+03190409f6e3f76c2b66c8ab590d10bf  gas/testsuite/gas/mips/mul.s
+bf74a40c246451b61a011e5c879c7612  gas/testsuite/gas/mips/n32-consec.d
+fd247b9288db956e0a2713c9f23b1ce5  gas/testsuite/gas/mips/n32-consec.s
+8e09a4da58b1361c76987dd6429fa20e  gas/testsuite/gas/mips/noat-1.d
+7050bff7639ba21ec7e51b3895f2c6c7  gas/testsuite/gas/mips/noat-1.s
+95eca9454317755995388cb1dd49e2cf  gas/testsuite/gas/mips/noat-2.l
+b44500553d2ad422012f6078cc100bff  gas/testsuite/gas/mips/noat-2.s
+95eca9454317755995388cb1dd49e2cf  gas/testsuite/gas/mips/noat-3.l
+932b518a8c80d85b280867bba5dc9d4a  gas/testsuite/gas/mips/noat-3.s
+95eca9454317755995388cb1dd49e2cf  gas/testsuite/gas/mips/noat-4.l
+9a876de7280b37f5d9b43e00cb5b2894  gas/testsuite/gas/mips/noat-4.s
+95eca9454317755995388cb1dd49e2cf  gas/testsuite/gas/mips/noat-5.l
+357277a91ad103c38e71855307ea123f  gas/testsuite/gas/mips/noat-5.s
+95eca9454317755995388cb1dd49e2cf  gas/testsuite/gas/mips/noat-6.l
+9969f029155afc0cb5a1e48dbfc0c8ea  gas/testsuite/gas/mips/noat-6.s
+95eca9454317755995388cb1dd49e2cf  gas/testsuite/gas/mips/noat-7.l
+3a02483408099325a9be213dc97b067c  gas/testsuite/gas/mips/noat-7.s
+bc093d7454fb79cc787981a1fda8af1f  gas/testsuite/gas/mips/nodelay.d
+244569e0b92ee735e76258141d2a39ff  gas/testsuite/gas/mips/perfcount.d
+5e216e3c77bb4c99c824b308a1617395  gas/testsuite/gas/mips/perfcount.s
+f4857653176b13a84af6c6343d716c7c  gas/testsuite/gas/mips/relax-swap1-mips1.d
+412554087d305d51108b71c6fc71fae6  gas/testsuite/gas/mips/relax-swap1-mips2.d
+7957fc12d837fc2269703b84b2321c23  gas/testsuite/gas/mips/relax-swap1.l
+ba43b08ac1e83497175b0e8b7a40e18a  gas/testsuite/gas/mips/relax-swap1.s
+17672430609ffd531e4dc027a286f25f  gas/testsuite/gas/mips/relax-swap2.d
+8eaba3b9b59ed3daf933e13884e738fb  gas/testsuite/gas/mips/relax-swap2.l
+ec1c525167ce7e482502efe31f330243  gas/testsuite/gas/mips/relax-swap2.s
+52eff1ac581a7a382bdef308312bea90  gas/testsuite/gas/mips/relax.d
+d3985334c070710ac9ce0e269620c832  gas/testsuite/gas/mips/relax.l
+f5da1a6065d39a14f314e4afd60bec98  gas/testsuite/gas/mips/relax.s
+1683fa4d4b6a696380beea3012ab1723  gas/testsuite/gas/mips/rm7000.d
+6e59f1b5da58f7015fa2c48d29c73445  gas/testsuite/gas/mips/rm7000.s
+d95ec21282d79a677dbbade498f21838  gas/testsuite/gas/mips/rol-hw.d
+209795675f9ba233ca89b305f6631b19  gas/testsuite/gas/mips/rol.d
+f5fc4c2b2064d692482dc6c04c4b64c7  gas/testsuite/gas/mips/rol.s
+5f65c9a166dc08f0527a93030918ae2d  gas/testsuite/gas/mips/rol64-hw.d
+a784263fc184c27bd9630f7b5ee7129d  gas/testsuite/gas/mips/rol64.d
+2b7d0f4345402303774e4fd6aa9acfd5  gas/testsuite/gas/mips/rol64.s
+3d26839ae55d7f0a445d21ce0c0a6ca8  gas/testsuite/gas/mips/sb.d
+15410af41b16b3678e11c8c7d4d6d7a7  gas/testsuite/gas/mips/sb.s
+9db9e7468366870303b84d5ebebc8a30  gas/testsuite/gas/mips/sb1-ext-mdmx.d
+f803ea0e2f3ddc0f8ee9e48021fcdb97  gas/testsuite/gas/mips/sb1-ext-mdmx.s
+916128c8c5a94e2d6a132f60b362afb2  gas/testsuite/gas/mips/sb1-ext-ps.d
+2614c94e549a3ad9a0a0aa2ea8a351bd  gas/testsuite/gas/mips/sb1-ext-ps.s
+28b9c5c7a34e77622a037ed6a7702054  gas/testsuite/gas/mips/set-arch.d
+9bd9d69167ebd4fd9f8479644f983776  gas/testsuite/gas/mips/set-arch.l
+99703d8a479f56f255c88de6b9e4aad5  gas/testsuite/gas/mips/set-arch.s
+5c695a603e00085a7b10d1bba40797fc  gas/testsuite/gas/mips/sync.d
+ffcef95bbefaf3a59e62285fe39bda76  gas/testsuite/gas/mips/sync.s
+7ebc55dcd927506b4673ac76880b47bd  gas/testsuite/gas/mips/tls-ill.l
+18b2a1f39231651953b79b9d00a78cc7  gas/testsuite/gas/mips/tls-ill.s
+3416139ffad8d321017d2f063eaf510b  gas/testsuite/gas/mips/tls-o32.d
+63d081834c2f6458bb42a7cba5d64585  gas/testsuite/gas/mips/tls-o32.s
+d86824a94f25abc224046b8de0bf1f0d  gas/testsuite/gas/mips/tmips16-e.d
+05752d777d131aef1171383f8076128a  gas/testsuite/gas/mips/tmips16-f.d
+989a2a79a9ca18db8506b5270f35bb4d  gas/testsuite/gas/mips/tmipsel16-e.d
+879866636d57cc3a7081fec4d5acfb28  gas/testsuite/gas/mips/tmipsel16-f.d
+c6faf677ae575fdd8391967f98b55d74  gas/testsuite/gas/mips/trap20.d
+f7d1e998d2057f17dfa22040879794f5  gas/testsuite/gas/mips/trap20.s
+e0b9b0cb92f5dc81105e3c2676adf517  gas/testsuite/gas/mips/trunc.d
+6206de0006f0d3b3552c2c4de6d4d40c  gas/testsuite/gas/mips/trunc.s
+2f5b7d1678cf1b6e1165a4b867e8dff9  gas/testsuite/gas/mips/uld.d
+4dfc3d5c85518711401b4a15122c6cea  gas/testsuite/gas/mips/uld.s
+9ce58dbafe045ce8413548e10bdb9463  gas/testsuite/gas/mips/uld2-eb.d
+99e062d0d9c5f975f916ea3b3a0661fc  gas/testsuite/gas/mips/uld2-el.d
+e28802806bd5ef68b52dd91e1920e9cd  gas/testsuite/gas/mips/uld2.s
+42668d2b953e17216dad9ff5b51a11b8  gas/testsuite/gas/mips/ulh-pic.s
+c35b62f79f0859a346aa71ff356d81f1  gas/testsuite/gas/mips/ulh-svr4pic.d
+71ad3063c1e7c793ed4ab3721bb8c010  gas/testsuite/gas/mips/ulh-xgot.d
+6b4a6661af69823228f094c7320aaaad  gas/testsuite/gas/mips/ulh.d
+d4c1e8e91b66176d0dd73baa903929d9  gas/testsuite/gas/mips/ulh.s
+09b2c179d09dcf2b7efe3a1bc1242d55  gas/testsuite/gas/mips/ulh2-eb.d
+96c237c1e09d8b1c26630c300f5544ae  gas/testsuite/gas/mips/ulh2-el.d
+1a9824601df339b12b2b6b333d9736e5  gas/testsuite/gas/mips/ulh2.s
+421b8bf53bb68929c956dd5dd46b1e87  gas/testsuite/gas/mips/ulw.d
+ed019962f9d9264d80ac0a3ec29faaf3  gas/testsuite/gas/mips/ulw.s
+114a410a05c97c0c8fe619c65636c92e  gas/testsuite/gas/mips/ulw2-eb-ilocks.d
+6ad67afaca99229225f074045961238d  gas/testsuite/gas/mips/ulw2-eb.d
+4c5dc6056ad1d321bc9c6e61e0e4a37f  gas/testsuite/gas/mips/ulw2-el-ilocks.d
+f7ea6b4feb2825b1d09522cb95ff16c9  gas/testsuite/gas/mips/ulw2-el.d
+912b64752da5c9169377e7a2cb776ab1  gas/testsuite/gas/mips/ulw2.s
+b199151899739fe3da4095dd802a0ace  gas/testsuite/gas/mips/usd.d
+c4f723634a0f69013515468922c55a04  gas/testsuite/gas/mips/usd.s
+fe1d1ac2ee009fc930cc33e7fffe4bc4  gas/testsuite/gas/mips/ush.d
+fa20601e0c404bd38a90edf5f43077bb  gas/testsuite/gas/mips/ush.s
+4e63b49d94ab23228fcb90c6349e8f39  gas/testsuite/gas/mips/usw.d
+59b429c3b2d1ea0daf2377204cbdfdca  gas/testsuite/gas/mips/usw.s
+df56744192740dbbfe787fd326e8b927  gas/testsuite/gas/mips/vr4111.d
+30e841daffadd416efdc8d69e610f1c0  gas/testsuite/gas/mips/vr4111.s
+630a9c9515c3337805d3eeb106ffc5a2  gas/testsuite/gas/mips/vr4120-2.d
+5cb0c12ce626a0552294c07722d422ea  gas/testsuite/gas/mips/vr4120-2.s
+839e011f47b7731b49c02091ac9af98c  gas/testsuite/gas/mips/vr4120.d
+1e3c30fb569bbfc45123d1bd5e8fad0a  gas/testsuite/gas/mips/vr4120.s
+a3f1c025cc84899f06317b72baeef588  gas/testsuite/gas/mips/vr4130.d
+31a7f69672ac479f6086678707a4980d  gas/testsuite/gas/mips/vr4130.s
+ee28818ae758acdf2c080395529c25aa  gas/testsuite/gas/mips/vr5400.d
+786e24034bb7f726b0b9a2c655602ee4  gas/testsuite/gas/mips/vr5400.s
+609370d69163331ef4f43a6c87fd4dcb  gas/testsuite/gas/mips/vr5500.d
+288a96b264d206269b98bac834ca2eac  gas/testsuite/gas/mips/vr5500.s
+3e2660b36dd36e1e9b6f89dc54f33109  gas/testsuite/gas/mips/vxworks1-xgot.d
+49d8ecc14ff63470df46a1a1a006e6a8  gas/testsuite/gas/mips/vxworks1.d
+c967b7a1e8670a369febcfcd753e2278  gas/testsuite/gas/mips/vxworks1.s
+bd571532865b58cabf0532fd93b135d8  gas/testsuite/gas/mips/vxworks1-el.d
+7214aef9a23acc2ebca1e68761edc8e5  gas/testsuite/gas/mips/vxworks1-xgot-el.d
+128cd247dc9b5fc1e4095be0175c68b3  gas/testsuite/gas/mmix/1cjmp1b-n.d
+74c43d2897673eba56f848f3c9e582e9  gas/testsuite/gas/mmix/1cjmp1b-r.d
+82a7b6f8756a9c25cf63220f51d50894  gas/testsuite/gas/mmix/1cjmp1b.d
+89f0c4732be8764cdb492101c5e133fb  gas/testsuite/gas/mmix/1cjmp1b.l
+881ba3c8d1533c13a83890a3cf4e81ac  gas/testsuite/gas/mmix/1cjmp1b.s
+0c469f8d44281c440d85bce259e57c30  gas/testsuite/gas/mmix/1cjmp1brn.d
+2f9164da7cf8c6ebdfd5bcdc577e240d  gas/testsuite/gas/mmix/1hjmp1b.d
+66b71f9ca4e8ab891eceb33d8b70edea  gas/testsuite/gas/mmix/1hjmp1b.l
+1fdbcd1b5b2d1e8ac693bc3930a280ef  gas/testsuite/gas/mmix/1hjmp1b.s
+31f69a67b9b7e148d0d728174b9bafad  gas/testsuite/gas/mmix/align-1.d
+539e37c235abebf695117c2a7aac792b  gas/testsuite/gas/mmix/align-1.s
+3d4c45f5bc305c6a14f64435f7a9ae85  gas/testsuite/gas/mmix/basep-1.d
+9ff16f3fd803fbd6de4ec3c4fc1b91d5  gas/testsuite/gas/mmix/basep-1.s
+fd1e7e6eee81c3d8c509281af313b55e  gas/testsuite/gas/mmix/basep-10.d
+1ba8130d377a89330e9a2961035698d3  gas/testsuite/gas/mmix/basep-10.s
+7f349e2b425f77806eae81d24f051542  gas/testsuite/gas/mmix/basep-11.d
+9df5d5188edfe9b7ecdc684ffb4bbcc9  gas/testsuite/gas/mmix/basep-11.s
+c2b0896cf0de5c5865b3117e6e9a04ee  gas/testsuite/gas/mmix/basep-1b.d
+afc588fb075a882468e4c3298fa3d1e8  gas/testsuite/gas/mmix/basep-2.d
+41ee35510d8e57395b691de4dc61af2c  gas/testsuite/gas/mmix/basep-2.s
+df421621dc5559b5e55c1a0648273539  gas/testsuite/gas/mmix/basep-2b.d
+7157178c9b964e7bef9ba57fa4bb5ea0  gas/testsuite/gas/mmix/basep-3.d
+574cafac4ef562c1d5504795856b02c8  gas/testsuite/gas/mmix/basep-3.s
+2347f514fe5c947dbe8baa6623bb02fd  gas/testsuite/gas/mmix/basep-3b.d
+287b843c8f84ddac104ebad25e7f7b1a  gas/testsuite/gas/mmix/basep-4.d
+7796faaec560c84b3ef2e985ff22da9a  gas/testsuite/gas/mmix/basep-5.d
+fa2a52315eac56422ec4731ba486a318  gas/testsuite/gas/mmix/basep-6.d
+f2ed48da2536f27d417ee6dd44afe132  gas/testsuite/gas/mmix/basep-7.d
+f928a5ad8bf3feaf6e0012a112d43fb9  gas/testsuite/gas/mmix/basep-8.d
+05d195120b5515ee53b3684af0886c8f  gas/testsuite/gas/mmix/basep-8.s
+a868944a5fb6ba375aeb1ff7a162ada8  gas/testsuite/gas/mmix/basep-9.d
+a6c575e157fa1cc3b59fe0673bfdb774  gas/testsuite/gas/mmix/basep-9.s
+c40c7620b6807156d402256d0fc41f8f  gas/testsuite/gas/mmix/bspec-1.d
+3b3451908e6ec6497534ad8235de53ed  gas/testsuite/gas/mmix/bspec-1.s
+120e2bbe9b145da971ab609a40465a55  gas/testsuite/gas/mmix/bspec-2.d
+f179d58461561c9d5fe4a315ba7279be  gas/testsuite/gas/mmix/bspec-2.s
+9f493737447c1fe99300fe898e942dac  gas/testsuite/gas/mmix/builtin1.d
+686fcfd029e0d7ae40eb9d1ebd2a555f  gas/testsuite/gas/mmix/builtin1.s
+6c65a8e088aecf2bb80cb6ace221eb80  gas/testsuite/gas/mmix/builtin2.d
+783e769408bbf34e0bf246ba16be1a10  gas/testsuite/gas/mmix/builtin3.d
+4e95df8cd978de814f8dffaf44bf0c7e  gas/testsuite/gas/mmix/byte-1.d
+213a0515cb4eabca23e4b8085a9a1541  gas/testsuite/gas/mmix/byte-1.s
+02b986dd3dfa5073b6bbbaee237d17a0  gas/testsuite/gas/mmix/bz-c.d
+19eb7e29b6312fb84cd4b8369206e437  gas/testsuite/gas/mmix/bz-c.s
+78763def1748facb875f1a08eace0533  gas/testsuite/gas/mmix/comment-1.d
+2b581d9ded37c949d0f9cd141cedde94  gas/testsuite/gas/mmix/comment-1.s
+4dadef05d27959743a4924d0f7f7924d  gas/testsuite/gas/mmix/comment-2.d
+d9246d1719c9b5d96f744ae8a5d335a0  gas/testsuite/gas/mmix/comment-2.s
+62ee5afe80f72260d3faadfd4639d5ff  gas/testsuite/gas/mmix/comment-3.d
+74e34ff3097862ae06dbfd8c742ef966  gas/testsuite/gas/mmix/comment-3.s
+e44938b0115eb4a01f1c6045416ff2a8  gas/testsuite/gas/mmix/cons-1.d
+0f36dac5b63ac65c4efae27fefd1a5b0  gas/testsuite/gas/mmix/cons-1.s
+68dc1c1251793e1f023eacb74d2d1aab  gas/testsuite/gas/mmix/cons-2.d
+818d889dd03c1058405e86e7843d6a6c  gas/testsuite/gas/mmix/cons-2.s
+ae68ba46ad3fd3d3b84e2caebb37e266  gas/testsuite/gas/mmix/err-bpo1.s
+1275b4e1c37d61021d17ce82415846ba  gas/testsuite/gas/mmix/err-bpo2.s
+5a8e1cadcb9e90eed7439e0a216627e2  gas/testsuite/gas/mmix/err-bpo3.s
+74b2268a44f4615c6644eeefe45fb86b  gas/testsuite/gas/mmix/err-bpo4.s
+8283e195bad143522dc6644924732ee1  gas/testsuite/gas/mmix/err-bpo5.s
+8fa6fbacee3649b1add139c544bed44d  gas/testsuite/gas/mmix/err-bpo6.s
+6316596656e1df8f51a8e6bdbcfeb5be  gas/testsuite/gas/mmix/err-bspec-1.s
+662ecee5325d52a264c4bb079d0a5fb4  gas/testsuite/gas/mmix/err-bspec-2.s
+fda06bc9042df00a4a79d696fc4f7c16  gas/testsuite/gas/mmix/err-bspec-3.s
+a651af237184e7463946f57a60d6be60  gas/testsuite/gas/mmix/err-bspec-4.s
+adc04c51cb3a3f504e288ee68f7debc7  gas/testsuite/gas/mmix/err-bspec-5.s
+b2f1d968f9de4a9e15a68e57335a2c24  gas/testsuite/gas/mmix/err-builtin.s
+f3cda197e002842b0c3ce05aa49d7fca  gas/testsuite/gas/mmix/err-byte1.s
+8539931858377bd48fe6cf3c2ca912d8  gas/testsuite/gas/mmix/err-byte2.s
+9d5e96de1ac7e0aaae3a4efdf6d78679  gas/testsuite/gas/mmix/err-case.s
+59c8d12a69e35db0f258ad6bc61b0f1f  gas/testsuite/gas/mmix/err-fb-1.s
+ac70409b365e20a8d76cd491151b1910  gas/testsuite/gas/mmix/err-greg1.s
+ba8862575d249330cf0798f6a1b4d001  gas/testsuite/gas/mmix/err-insn.s
+7a3d8d8405a5b30c635a3b477d625cb4  gas/testsuite/gas/mmix/err-is-1.s
+fdac5781e3da1a1ae49cac9fc82a9c5e  gas/testsuite/gas/mmix/err-loc-1.s
+549875cfbefa9e91ace5418b8c2e4685  gas/testsuite/gas/mmix/err-loc-2.s
+fae8e890f6ec60834383086e4512c99d  gas/testsuite/gas/mmix/err-loc-3.s
+e485810c615531746f6ed3e9bc68fbc7  gas/testsuite/gas/mmix/err-loc-4.s
+f0aebec806255dc6887a2874de66292b  gas/testsuite/gas/mmix/err-loc-5.s
+08b3644351e747e28015f9d078b3bbc2  gas/testsuite/gas/mmix/err-loc-6.s
+e66b98b1e174189295e48a180225ccaf  gas/testsuite/gas/mmix/err-loc-7.s
+fc1de659115cb734fbff9eab020ec4ae  gas/testsuite/gas/mmix/err-loc-8.s
+b148a5329404e262c827ea25df4a6152  gas/testsuite/gas/mmix/err-local1.s
+2f3e9b4550f4465d96e5483ae03be2e7  gas/testsuite/gas/mmix/err-local2.s
+4f1054a028c3a46a2d585d9e412ab7df  gas/testsuite/gas/mmix/err-ser-1.s
+0f418d2c4355113cc9dcd588493ef24f  gas/testsuite/gas/mmix/err-set.s
+b107b4f8542a6d9d1c062c1c6421dc18  gas/testsuite/gas/mmix/expr-1.d
+ac2ab6118a2572de016beab5067f2b5a  gas/testsuite/gas/mmix/expr-1.s
+7698e6b9d14deb45266bb0ea05239c05  gas/testsuite/gas/mmix/fb-1.d
+bb7f46033941ffb2e1cc3877a0da5320  gas/testsuite/gas/mmix/fb-1.s
+1069e96f41887e614d981c612f1c7b7a  gas/testsuite/gas/mmix/fb-2.d
+4af0f1f0e1f787f3398b118b30868b8f  gas/testsuite/gas/mmix/fb-2.s
+3be4957a0437d6bce8245a8ab812aa37  gas/testsuite/gas/mmix/get-op-r.d
+e38f71e500ffcaf19723536468a223d6  gas/testsuite/gas/mmix/get-op.d
+b45d4ccee0f87bfba2e0f97d93789362  gas/testsuite/gas/mmix/get-op.l
+11e3fca7cf0cb9cbdc42277fc2eee4e6  gas/testsuite/gas/mmix/get-op.s
+0f58bfd23d1021aec899fc7d1ba314be  gas/testsuite/gas/mmix/geta-c.d
+6c55f79cc4e6ac3df0fbb2ce3b207431  gas/testsuite/gas/mmix/geta-c.s
+25e0b5f18f5465d009fec57744a869a4  gas/testsuite/gas/mmix/geta-op-r.d
+2fe216ed1abb558c66d43e1c16437aa5  gas/testsuite/gas/mmix/geta-op.d
+b657bbecda4773680389a4c4bd9b6902  gas/testsuite/gas/mmix/geta-op.l
+7c7f7a7f7171c12c7210fa2b8e80ccc5  gas/testsuite/gas/mmix/geta-op.s
+4221d993bd9f8353c290f497b488d372  gas/testsuite/gas/mmix/geta-opn.d
+0014085389ed74190a50d06229cac927  gas/testsuite/gas/mmix/geta-oprn.d
+1873fa761a9a364894a226fa79b74cdd  gas/testsuite/gas/mmix/greg1.d
+4dcdef09957ba93c577caa743a2c96ed  gas/testsuite/gas/mmix/greg1.s
+b59a6a7c02ac8c7c5efca4c3e68af2ec  gas/testsuite/gas/mmix/greg1a.d
+1873fa761a9a364894a226fa79b74cdd  gas/testsuite/gas/mmix/greg2.d
+650cd7ff2e361240741dad80b02caa44  gas/testsuite/gas/mmix/greg2.s
+13ba3aa7e3a9b720e3144e0e31688403  gas/testsuite/gas/mmix/greg2a.d
+66863b0cc43aaa3cdd1e0a7a4f5d7ebf  gas/testsuite/gas/mmix/greg3.d
+fbccd7f708d3c8019c9ea83addc1fe52  gas/testsuite/gas/mmix/greg3.s
+dcc3a1a5751220ab763ffa79d41d6e6f  gas/testsuite/gas/mmix/greg4.d
+cb7cc10a15aa6c6e59f1363ed8d9c289  gas/testsuite/gas/mmix/greg4.s
+f17175fc300e10669f8fe527ae44dfc0  gas/testsuite/gas/mmix/greg5.d
+c916fda34b8833bb842b3632f4f7f7d1  gas/testsuite/gas/mmix/greg5.s
+bf0ab68484f4dd0159b9a0d4c08d818f  gas/testsuite/gas/mmix/greg6.d
+5225ff7b64ac1f436e34063b599fc14b  gas/testsuite/gas/mmix/greg6.s
+2e13249dba8af8235b9098457a446bba  gas/testsuite/gas/mmix/greg7.d
+942dd6a809b486ff9d5fe222a392e858  gas/testsuite/gas/mmix/greg7.s
+45a8a180a1168cddd351fc14c1ae938e  gas/testsuite/gas/mmix/greg8.d
+4c2bdf546eec695fc77da75ea4ee00eb  gas/testsuite/gas/mmix/greg8.s
+10157ad0e4001dd9fa08a15848ab3b75  gas/testsuite/gas/mmix/greg9.d
+9a7a1d211583d6a01c010c74d7d6bc56  gas/testsuite/gas/mmix/greg9.s
+f75e30a43a1cf086fcb98936ddc8448d  gas/testsuite/gas/mmix/hex-r.d
+8c4fbc467f6b4539cd2cb9be8da3c582  gas/testsuite/gas/mmix/hex.d
+cd4e8dca887b719af2fb05753a02cc10  gas/testsuite/gas/mmix/hex.l
+18f0bccec0ea1ebbc96c0cc73f0b0d54  gas/testsuite/gas/mmix/hex.s
+ffef9d561521432621d7d3755077ddb1  gas/testsuite/gas/mmix/hex2.d
+5abe2a4e4b7f785802c6c1b4d23c5206  gas/testsuite/gas/mmix/hex2.s
+c06a1dff5b48b8064fd1bd062449e9ed  gas/testsuite/gas/mmix/is-1.d
+e4e256dd068fdf987f8acbdb99aa434f  gas/testsuite/gas/mmix/is-1.s
+98bbfda658e53f01fcb8ce24f14a4b72  gas/testsuite/gas/mmix/jmp-op-n.d
+0cad9077ab17ccf0569686e9df692e06  gas/testsuite/gas/mmix/jmp-op-r.d
+2ebb9cde592cebd83ee28e5f0f67fa1a  gas/testsuite/gas/mmix/jmp-op.d
+b393cff736e29e563b062f5ea5685b21  gas/testsuite/gas/mmix/jmp-op.l
+46c5951d3b2fc15eedc95ef05851280c  gas/testsuite/gas/mmix/jmp-op.s
+3259465258c4c0be7a905496dacf85bd  gas/testsuite/gas/mmix/jmp-oprn.d
+8896b95a48e891268d9ec6f5c2c6db2b  gas/testsuite/gas/mmix/jump-c.d
+a9884fc1a72db8aa308ec235f4e563bf  gas/testsuite/gas/mmix/jump-c.s
+bdf70a3557efcad03bd8cee4f05d0ef3  gas/testsuite/gas/mmix/list-in-n.d
+329782e004db82b64e4c10c64d7eb1c7  gas/testsuite/gas/mmix/list-in-r.d
+5e22741d4a07ac3c73798b525fa107dc  gas/testsuite/gas/mmix/list-in-rn.d
+2fe1ce272754ce0e6570de1acea60dda  gas/testsuite/gas/mmix/list-insns.d
+0c73a39e078a7740205f49c6c1d35d1e  gas/testsuite/gas/mmix/list-insns.l
+b9ffc6c91ccb57078a96ba9d4ca6ccb9  gas/testsuite/gas/mmix/list-insns.s
+336901c2592954e7b98195b2b0dc0af6  gas/testsuite/gas/mmix/list-pseudoints.l
+d3f1df27ab65809fcf90d66c9e1dca47  gas/testsuite/gas/mmix/list-pseudoints.s
+d3ba5e5a432a80e318dbbf7c1ffcaeba  gas/testsuite/gas/mmix/list-textfirst
+ea622b544f91c9cac4f4c0eccb074384  gas/testsuite/gas/mmix/list-textfirst.l
+cbb1d5ec86a35f9c9fb9a65cb509bbfb  gas/testsuite/gas/mmix/list-textfirst.s
+f5f4a70ef2a278ad0454c8469f81fe1a  gas/testsuite/gas/mmix/loc-1.d
+63f7de75c9a5e51ff9ab0ad7fdb0b9f4  gas/testsuite/gas/mmix/loc-1.s
+fe496cb83d641d5a2300b5b033040c21  gas/testsuite/gas/mmix/loc-2.d
+df7a8704912ff84da190cf6c74cde8bf  gas/testsuite/gas/mmix/loc-2.s
+48df8cf40972ac8c0ef7ea090565b626  gas/testsuite/gas/mmix/loc-3.d
+46d704c994c961cdf0e42ed4d102473f  gas/testsuite/gas/mmix/loc-3.s
+f4517315792cb2fc5b6fe2a7ff4d063c  gas/testsuite/gas/mmix/loc-4.d
+c0be6d63230ab4cc233cb7639712a703  gas/testsuite/gas/mmix/loc-4.s
+986ae72976baa1d4537999845100905a  gas/testsuite/gas/mmix/loc-5.d
+a40ae1e12f135a531776202e96ca056c  gas/testsuite/gas/mmix/loc-5.s
+6231c6e8b6d3ef4a6f029e4d901bb605  gas/testsuite/gas/mmix/local-1.d
+34c218e4cb651e644775be70e617677a  gas/testsuite/gas/mmix/local-1.s
+213cb0057034d949a2fce44fcb4fc6f5  gas/testsuite/gas/mmix/locall1.d
+06034183f0a150f972e5ae0729f907ed  gas/testsuite/gas/mmix/locall1.s
+4b41fe6d19fe9493fe6ca3eabe363c06  gas/testsuite/gas/mmix/mmix-err.exp
+8c252088636b0958a71ae9597250c8fe  gas/testsuite/gas/mmix/mmix-list.exp
+a152cddbb8069911e32a0c38e4dc20df  gas/testsuite/gas/mmix/mmix.exp
+1fb327c2378ecb949b1db1d6b251ee43  gas/testsuite/gas/mmix/odd-1.d
+2f7a35c2988104cc8ffc49e6b00f82a1  gas/testsuite/gas/mmix/odd-1.s
+bc215b49fb312e4642d2aeaa0ba2a87f  gas/testsuite/gas/mmix/op-0-1.d
+241721593347f7d44d9dad3757aa4208  gas/testsuite/gas/mmix/op-0-1.s
+962835a331b121a3b659bf2c199119e4  gas/testsuite/gas/mmix/op-0-1s.d
+d80eac57925f764b03531287d930d748  gas/testsuite/gas/mmix/op-0-2.d
+8974b44d390a07de5f2f06f48073d69f  gas/testsuite/gas/mmix/pop-op-r.d
+62ab5bcab4914622624e9df6a32563d9  gas/testsuite/gas/mmix/pop-op.d
+5a01a6f993695b312673cef6eff040f5  gas/testsuite/gas/mmix/pop-op.l
+5bed8bb92bcee70e3b7048f34f88abb8  gas/testsuite/gas/mmix/pop-op.s
+820396b2a50c73167dca87af0bd9bc42  gas/testsuite/gas/mmix/prefix1.d
+0e79466a08de17dab3a0e33a92e3fd71  gas/testsuite/gas/mmix/prefix1.s
+fdbf170ea94d3f39f6e336345f309992  gas/testsuite/gas/mmix/prefix2.d
+15ab43fbfcc930a1b55ddf5ef7479cbe  gas/testsuite/gas/mmix/prefix2.s
+2d8032487109e24b8140e4bef8d022a1  gas/testsuite/gas/mmix/prefix3.d
+8d09c63b0c427cdcd918872021f32ac5  gas/testsuite/gas/mmix/prefix3.s
+7a1f96374983984f58d50db393350e25  gas/testsuite/gas/mmix/pseudo-1.d
+79522ead0cb1ef910b010d2a11f5aa50  gas/testsuite/gas/mmix/pseudo-1.s
+dc644b1202b89dde4c55ad43b6918a08  gas/testsuite/gas/mmix/pushgo-op-r.d
+bd8593ef76058b289d20304526f35630  gas/testsuite/gas/mmix/pushgo-op.d
+69440a759f9bf3db92cef5d2b24cee49  gas/testsuite/gas/mmix/pushgo-op.l
+131b9ee7dd3d141c6952e6ac02988e1b  gas/testsuite/gas/mmix/pushgo-op.s
+e61f87906afcf2c1ebd413ded69362d3  gas/testsuite/gas/mmix/pushj-c.d
+2d9d62c614612030d82a5c36d3fb377d  gas/testsuite/gas/mmix/pushj-c.s
+a0c20764ef7e0b1ceb5b94bfe1bbceea  gas/testsuite/gas/mmix/pushj-cs.d
+fb4aae82df74f1b81679cb764bb2e597  gas/testsuite/gas/mmix/put-op-r.d
+a775433aabbc28f4de55ff967b901687  gas/testsuite/gas/mmix/put-op.d
+f92f56bf4cc05890b07040f5cfe025f2  gas/testsuite/gas/mmix/put-op.l
+018bb9b0e95057b4decb22f5c9feacf1  gas/testsuite/gas/mmix/put-op.s
+8f1f6562a9da6870378512529f91f48e  gas/testsuite/gas/mmix/reg-op-r.d
+f89d0ea15d7a2d1eab2840c7a9d49eaf  gas/testsuite/gas/mmix/reg-op.d
+582d2a7b84f54c5d54653cfbf1c0d3d1  gas/testsuite/gas/mmix/reg-op.l
+745990eee9776b12c4a897d6bc3c6d6e  gas/testsuite/gas/mmix/reg-op.s
+c8f2963976ac4f7ce95a3495cbe28015  gas/testsuite/gas/mmix/reg3-op-r.d
+e28cd26f439118017f4693c5c41863b1  gas/testsuite/gas/mmix/reg3-op.d
+cbfaf1d2c8ba3064c58bbf7574f04fa6  gas/testsuite/gas/mmix/reg3-op.l
+172f1341911863bdff4d2a6a239801a1  gas/testsuite/gas/mmix/reg3-op.s
+5b4ce8d1dd2320e060206a1a1ee3f852  gas/testsuite/gas/mmix/regt-op-r.d
+1acef71c452293140a6d5f7e97a87706  gas/testsuite/gas/mmix/regt-op.d
+0850ed03f3ffa8434f98d0d681229d11  gas/testsuite/gas/mmix/regt-op.l
+e302ca8bef6a6b0acf0334aaf0faf9ec  gas/testsuite/gas/mmix/regt-op.s
+e868589e4d591b2e298076f91c052340  gas/testsuite/gas/mmix/regx-op-r.d
+c977b2c8ccbac2c67faf49d13b23b655  gas/testsuite/gas/mmix/regx-op.d
+980378185cf82f1e38a36e783428455a  gas/testsuite/gas/mmix/regx-op.l
+90c16cb8a8af0c6a70adb99659f96766  gas/testsuite/gas/mmix/regx-op.s
+69a6e5487f3416bf43b2aa2278977e72  gas/testsuite/gas/mmix/regy-op-r.d
+8a395f5e533d5b4230a5144a41df4194  gas/testsuite/gas/mmix/regy-op.d
+0272aed229ff57d24aa8a7c0b3469543  gas/testsuite/gas/mmix/regy-op.l
+2507661cd901f97d1609ff4d932eb789  gas/testsuite/gas/mmix/regy-op.s
+5a29d8701884532f845385ba34eab024  gas/testsuite/gas/mmix/relax1-n.d
+d1c04da647167a2cfc16623ad19e9ddc  gas/testsuite/gas/mmix/relax1-r.d
+57169c96a3bee990d8e03003644ac129  gas/testsuite/gas/mmix/relax1-rn.d
+d29b5176b1a13ddd482cc59101e9e9c3  gas/testsuite/gas/mmix/relax1.d
+38ac570097c9cdda8d8eecaf04092601  gas/testsuite/gas/mmix/relax1.l
+587232b031ce2501a918dc361c8406e1  gas/testsuite/gas/mmix/relax1.s
+448d4c29937e946865b434f0f5efd21d  gas/testsuite/gas/mmix/relax2.d
+417ae7c1e0d143bfd2163eb33f2e5d0e  gas/testsuite/gas/mmix/relax2.s
+d65f74eb228073ca8269c2ae8efc41b4  gas/testsuite/gas/mmix/reloc16-n.d
+0e68f5aeb91077a2ef1f0a5482675db6  gas/testsuite/gas/mmix/reloc16-r.d
+863f07fe1c4e926ae8bd783966f4311b  gas/testsuite/gas/mmix/reloc16.d
+75561a53cf10f62341b7ca23fba9a7cc  gas/testsuite/gas/mmix/reloc16.l
+51355d73d525e07d1956c845b71481c9  gas/testsuite/gas/mmix/reloc16.s
+b436025a6918a74cf9ca753e04ad72ca  gas/testsuite/gas/mmix/reloc8-r.d
+88ab983d053a9aff9ec04afa37b23c05  gas/testsuite/gas/mmix/reloc8.d
+989a380fe8b838e5c80a53908e40971d  gas/testsuite/gas/mmix/reloc8.l
+b74d47dfcb362faa2f510011378cca7c  gas/testsuite/gas/mmix/reloc8.s
+4884296463db88343efd6f8a54838429  gas/testsuite/gas/mmix/relocl-n.d
+a876c35b97351eb3d69074dde61e08b5  gas/testsuite/gas/mmix/reloclab-r.d
+83e613f897714a4c8531742f7e350d87  gas/testsuite/gas/mmix/reloclab-rs.d
+088218002fb1ecb82172820dd678e1af  gas/testsuite/gas/mmix/reloclab-s.d
+d5539f113c067f66a439de11e059f532  gas/testsuite/gas/mmix/reloclab.d
+966ca1ba7f8f17bee81c63682a596aa5  gas/testsuite/gas/mmix/reloclab.l
+f4c3a919a430c75cb8be68f5cd7c3fc3  gas/testsuite/gas/mmix/reloclab.s
+173d401cb28062237e5b1560e4600f02  gas/testsuite/gas/mmix/reloclrn.d
+1d9a899c4d72757bf6b0b9b6a71f1044  gas/testsuite/gas/mmix/relocxrn.d
+10449c3a7fd6cc8d0594c9e6f8f5521a  gas/testsuite/gas/mmix/resume-op-r.d
+9a0517a889e73842824013ab2d618f69  gas/testsuite/gas/mmix/resume-op.d
+c97820027f0575acea8ed1087337b7d8  gas/testsuite/gas/mmix/resume-op.l
+cfcbf81639741ae8db615671a48cde7d  gas/testsuite/gas/mmix/resume-op.s
+56f09db3c3a16b368d12a64ed52f10d5  gas/testsuite/gas/mmix/round2-op-r.d
+f44e6dfcdba0773b16440711f17ef80b  gas/testsuite/gas/mmix/round2-op.d
+1aef9aa7620ec2177d66895af5488615  gas/testsuite/gas/mmix/round2-op.l
+30d227deb194d05c613d9f4b26a9a3f3  gas/testsuite/gas/mmix/round2-op.s
+02af45b86e2f31a0b42e0a74bc9c8055  gas/testsuite/gas/mmix/roundi-op-r.d
+85d7513fec13879d3cc3fa4c962c7fc3  gas/testsuite/gas/mmix/roundi-op.d
+2badf0c4966760eb25394dc6c58357cc  gas/testsuite/gas/mmix/roundi-op.l
+161db8f66e10dc2b57c677be95904a77  gas/testsuite/gas/mmix/roundi-op.s
+002d7c47d1e264de3378e4b672234fc1  gas/testsuite/gas/mmix/roundr-op-r.d
+674ded804328a5865b1a8dcea25b4dc7  gas/testsuite/gas/mmix/roundr-op.d
+04d09bbbab585fdb54c69b919576bde4  gas/testsuite/gas/mmix/roundr-op.l
+d166315a18bdcd867def21596f0e6bf2  gas/testsuite/gas/mmix/roundr-op.s
+4bd440c1a61accbe310ffa5861d020d0  gas/testsuite/gas/mmix/save-op-r.d
+9a299ee55c14d36ac1e13fd7e21b7b5b  gas/testsuite/gas/mmix/save-op.d
+78c603b16a7e5be2c1ebdbccc0d9a1fb  gas/testsuite/gas/mmix/save-op.l
+999db326e26e668c1ba94d31d55ccee4  gas/testsuite/gas/mmix/save-op.s
+0fdb19b2dc462b298af175eb285d2898  gas/testsuite/gas/mmix/set-r.d
+7c171ada0e52fa57483a77bdcbfd1125  gas/testsuite/gas/mmix/set.d
+8dff7be7e45d5eb791c4b5e27264cd34  gas/testsuite/gas/mmix/set.l
+11f3a945d2d4e214bf4888fdd5c6b56b  gas/testsuite/gas/mmix/set.s
+a8c21be21f3bced6a45be5d01a88f780  gas/testsuite/gas/mmix/swym-op-r.d
+bc60c7fcffe92acf0775a1f4304bee64  gas/testsuite/gas/mmix/swym-op.d
+7612ba4cbb41c0bb297608198b8475f6  gas/testsuite/gas/mmix/swym-op.l
+c266e0350f0a98e0f59ddf449a51bb63  gas/testsuite/gas/mmix/swym-op.s
+69082e0d2ad1c1f54cb86d6892cb63d6  gas/testsuite/gas/mmix/sym-1.d
+0ffe574581a6090acc3369be14ded4d4  gas/testsuite/gas/mmix/sym-1.s
+098846e2a99f9013d95ef10e6ec50839  gas/testsuite/gas/mmix/sync-op-r.d
+040bd52ba089ab30f6291e9d3c4e278d  gas/testsuite/gas/mmix/sync-op.d
+e93db32d7d2c78650597fd5ed2ad7b6d  gas/testsuite/gas/mmix/sync-op.l
+c79a98acc47d182f9630727f61ca34f3  gas/testsuite/gas/mmix/sync-op.s
+0ed09fdc04112dbc6311ad68a08c0c5f  gas/testsuite/gas/mmix/two-op-r.d
+406103963689254a6b360a5f1a449d6e  gas/testsuite/gas/mmix/two-op.d
+ca6a23d92e67c5494c7b63f332b05226  gas/testsuite/gas/mmix/two-op.l
+434868110d14ace5244b3ae9dfc75a5d  gas/testsuite/gas/mmix/two-op.s
+5e004b78b5149d38f3c432b9ae264238  gas/testsuite/gas/mmix/unsave-op-r.d
+91dbac2579bdc75ab5d604fa49c278f0  gas/testsuite/gas/mmix/unsave-op.d
+5b91809e619a66d9cee34dd2280bfaee  gas/testsuite/gas/mmix/unsave-op.l
+f5d6823ab550c4ea97a04f14883a0c0d  gas/testsuite/gas/mmix/unsave-op.s
+7030c201bb92111a1da35bc8b48c84d1  gas/testsuite/gas/mmix/weak1-s.d
+7124dcb9a6f4203ee9433df1cccbc17e  gas/testsuite/gas/mmix/weak1.d
+64ee02ee7066364e0eadac9c2c9508d6  gas/testsuite/gas/mmix/weak1.s
+126c93f26971e35435da3ff524100936  gas/testsuite/gas/mmix/zerop-1.d
+f2a213b73ea27ef622ba39f9ec2987ec  gas/testsuite/gas/mmix/zerop-1.s
+43ebd8f9ea9fa9b1e81644b2e8e5b615  gas/testsuite/gas/mn10200/basic.exp
+c58581edb3ac95b306f040bbc2c16678  gas/testsuite/gas/mn10200/add.s
+b117e36f812c2eb416156d441f26185e  gas/testsuite/gas/mn10200/logical.s
+9411b8190fac3aad748696ea30bba5b0  gas/testsuite/gas/mn10200/bcc.s
+efa2232339233fab01e2fe7ca6c2f3cf  gas/testsuite/gas/mn10200/bccx.s
+aabf4d8010190b4ebadb4d4dce938282  gas/testsuite/gas/mn10200/bit.s
+3f51363ea969316f726dc5529904888e  gas/testsuite/gas/mn10200/cmp.s
+874b6bc0f155eecbaffecb93a5642416  gas/testsuite/gas/mn10200/ext.s
+1ff17a9ade34cc243a67f4e5afb1873e  gas/testsuite/gas/mn10200/muldiv.s
+ea8599975d89b01f9aaba3b664947565  gas/testsuite/gas/mn10200/mov1.s
+3386b14210f3cd873dde20c6166162c6  gas/testsuite/gas/mn10200/mov2.s
+a0b70b1cc9ec5e2783428dcc483ee86d  gas/testsuite/gas/mn10200/mov3.s
+6e62837e492b9688e29de9625549b402  gas/testsuite/gas/mn10200/mov4.s
+e37e1b13a06659d005a650675dcf3935  gas/testsuite/gas/mn10200/movb.s
+f6ce44141165b449c3cb51ebe486e98e  gas/testsuite/gas/mn10200/movbu.s
+32dfde7ae5c5361c03c746481b7aee8d  gas/testsuite/gas/mn10200/movx.s
+723c642cba806a6ce6dda8c3881ef233  gas/testsuite/gas/mn10200/other.s
+21b9f1644f5a62fdc603b218708648f3  gas/testsuite/gas/mn10200/shift.s
+7ac2864fac53b6b778c4aba3efb1a2e1  gas/testsuite/gas/mn10200/sub.s
+d525d72975f05a261fbf749e52d07a6d  gas/testsuite/gas/mn10300/am33-2.c
+02ba050389aba06e510285db97af882b  gas/testsuite/gas/mn10300/add.s
+07dafb504919d0d5fa6316d1dd0340b5  gas/testsuite/gas/mn10300/am33-2.d
+57ded92cab96f53eab4d7545c5da40f4  gas/testsuite/gas/mn10300/am33-2.s
+3bb44c38f4fbab75c570123d255c57f8  gas/testsuite/gas/mn10300/am33.s
+3c5d635c4e529ba743b2062006ab8a00  gas/testsuite/gas/mn10300/am33_2.s
+dfe221c89fe65738a2360f231c2b6794  gas/testsuite/gas/mn10300/am33_3.s
+593bbef9992d2f23b91f4ea176b28957  gas/testsuite/gas/mn10300/am33_4.s
+62ae8325beee2a8180a39e125355ba2b  gas/testsuite/gas/mn10300/am33_5.s
+90dcb58c5eb364963271d465adac73ef  gas/testsuite/gas/mn10300/am33_6.s
+ae77079066eabaa0cc3b0db53f95500b  gas/testsuite/gas/mn10300/am33_7.s
+631a649907d27d317cee70928c6c27fc  gas/testsuite/gas/mn10300/am33_8.s
+85cfba60b3b2c710bae97dc4d102feb3  gas/testsuite/gas/mn10300/basic.exp
+9411b8190fac3aad748696ea30bba5b0  gas/testsuite/gas/mn10300/bcc.s
+b15e3790182c7ba25b21a4185f2a55e6  gas/testsuite/gas/mn10300/bit.s
+647a9c89d56b470cb3fef7839a32834d  gas/testsuite/gas/mn10300/cmp.s
+3828018d3809076328223d9d3c1e48c5  gas/testsuite/gas/mn10300/ext.s
+f6db4622ff4a88bc9ebf44aec56bc245  gas/testsuite/gas/mn10300/extend.s
+f2b5260884e40bc35f8694403da505f8  gas/testsuite/gas/mn10300/logical.s
+d3d15560536638ff0e38a1cd6bea678a  gas/testsuite/gas/mn10300/loop.s
+e554261a6559698fe2722b841dd1b5e3  gas/testsuite/gas/mn10300/mov1.s
+1453d74ea0d60c24e054f9443aa26fe4  gas/testsuite/gas/mn10300/mov2.s
+8d091f8bc50686881c4104f6dc9b6ab7  gas/testsuite/gas/mn10300/mov3.s
+e5df57ebcca23c27b6c2399780e9a146  gas/testsuite/gas/mn10300/mov4.s
+93c07b147a466794f87711cdcf29260b  gas/testsuite/gas/mn10300/mov5.s
+384122880cfa3e6fa4a8b08c350c62a8  gas/testsuite/gas/mn10300/movbu.s
+075a3ba2756f3cf09ac1926492ccf614  gas/testsuite/gas/mn10300/movhu.s
+155d5bd225998f0bf8a65d543230adc5  gas/testsuite/gas/mn10300/movm.s
+c5809213cfc952d8ef5a1ba5dc19ac45  gas/testsuite/gas/mn10300/movpc.l
+5ecbbe391a24afd44dd2bcb121f73a34  gas/testsuite/gas/mn10300/movpc.s
+aa222b2f903cde208e2be8c3972e3c8a  gas/testsuite/gas/mn10300/muldiv.s
+9cbe29313848966be970cdecdc09e7b2  gas/testsuite/gas/mn10300/other.s
+6fbf563cb5f0417f1854771c757bcc2d  gas/testsuite/gas/mn10300/relax.d
+db8f508c818806185ed645d0f3cc9b2d  gas/testsuite/gas/mn10300/relax.s
+293fa500fcb2e85940176a545801b046  gas/testsuite/gas/mn10300/shift.s
+ed9edfd6a0eea176f6974376bd321b10  gas/testsuite/gas/mn10300/sub.s
+961a51d51720b650cb383a6aa510d4d9  gas/testsuite/gas/mn10300/udf.s
+4b259d611c94c789b73572d5b0863a5b  gas/testsuite/gas/mri/comment.d
+5ffc5b9af8cd82e8ff721a39d583a9cb  gas/testsuite/gas/mri/char.d
+016f8a629209b7d7313c4a4e3c37c909  gas/testsuite/gas/mri/char.s
+84c565776c727a1f5986b5d8d39ba13e  gas/testsuite/gas/mri/comment.s
+aca62962ea755bbc1aaeb56b32c53974  gas/testsuite/gas/mri/common.d
+7b6bfc157de809b518bb8820f293f78c  gas/testsuite/gas/mri/common.s
+c3db4a831aaf5f148abfde517fff14f2  gas/testsuite/gas/mri/constants.d
+df9ad2212b59618793c7080d043c14e4  gas/testsuite/gas/mri/constants.s
+2258c0445fb6b2005828c77b96c0520a  gas/testsuite/gas/mri/empty.s
+78ea402a49a07c1a325a03a28be37678  gas/testsuite/gas/mri/equ.d
+83843a1d515852848a6fc1054a984792  gas/testsuite/gas/mri/equ.s
+ceec8399c07b39bee0a4ea07eece6d2f  gas/testsuite/gas/mri/expr.d
+21255a47a57f7e00246072b10af9b641  gas/testsuite/gas/mri/expr.s
+bc4dc43acfdddf49f994908c7e26abe6  gas/testsuite/gas/mri/float.d
+4f7756364607bd924587f3689b8b16b7  gas/testsuite/gas/mri/float.s
+913e1698712694951d89ee24192adc91  gas/testsuite/gas/mri/for.d
+70d33f74b91d862f9f9b6c4dd173ce58  gas/testsuite/gas/mri/for.s
+ca4307ea874afdb8a107b9d4c044ce26  gas/testsuite/gas/mri/if.d
+ba2ce35b0663f91570cc0725695f2f0f  gas/testsuite/gas/mri/if.s
+4b03ed946465a72d469e2aeff2ddd6f5  gas/testsuite/gas/mri/immconst.d
+f1f5c0c93c39409b9a82cf956d42e39e  gas/testsuite/gas/mri/label.d
+ed17ca77ec65b8492a436ad06a222487  gas/testsuite/gas/mri/label.s
+0a83209c98b7595f7f0746456efa0243  gas/testsuite/gas/mri/moveml.d
+4e57586c117d02856b0a1e2fe1e199cb  gas/testsuite/gas/mri/moveml.s
+18b692b0e34dbcf4e04942615cd0d9f0  gas/testsuite/gas/mri/mri.exp
+8efb23fdda5c25b88340a543cfeac30f  gas/testsuite/gas/mri/repeat.d
+1684df3330c24639ae41d526858b2a80  gas/testsuite/gas/mri/repeat.s
+67ebccbf76d5002534361af491abfddf  gas/testsuite/gas/mri/semi.d
+da1cdabe1af1adb9735d5d609dccca32  gas/testsuite/gas/mri/semi.s
+f1f4f19cd59ca00cd8ba1bac7a168d5f  gas/testsuite/gas/mri/while.d
+cdd1ad74d4bb0147f32931b83c7383be  gas/testsuite/gas/mri/while.s
+507b917db24d0a686465cecca884cf22  gas/testsuite/gas/msp430/msp430.exp
+9bf928c45624dccd08f6738ba89d135e  gas/testsuite/gas/msp430/opcode.d
+7aac268e1d72f0297f919284f1fb3502  gas/testsuite/gas/msp430/opcode.s
+d7a16a3bc92230b4d592bbd4e87380c1  gas/testsuite/gas/mt/allinsn.d
+7a4c57d16a6d86c35116aed72b075942  gas/testsuite/gas/mt/allinsn.s
+3d9e0c76ac292498ab35ea0982abb1d6  gas/testsuite/gas/mt/badinsn.s
+4d2dcdb363d2f27fbf8abe1f2ebbf5b0  gas/testsuite/gas/mt/badinsn1.s
+3e442cb56c28162e51fc72327dc01c3c  gas/testsuite/gas/mt/badoffsethigh.s
+348a658fb73a449ee0f05dc7a0a5e66d  gas/testsuite/gas/mt/badoffsetlow.s
+e0b8e33d55f0908382ec2958e56746ac  gas/testsuite/gas/mt/badorder.s
+7341f098f821fb2bbff60760e71c69c8  gas/testsuite/gas/mt/badreg.s
+be8f979079c42cd218688a06a69d5952  gas/testsuite/gas/mt/badsignedimmhigh.s
+be6d01290eae0b220a95cb29c6b33459  gas/testsuite/gas/mt/badsignedimmlow.s
+205b6842294d5db7cdcd6989b2ce5d0c  gas/testsuite/gas/mt/badsyntax.s
+7130385ceb73e9687e0f84ffc49049dc  gas/testsuite/gas/mt/badsyntax1.s
+fa2cf99574f4fe9a7bc377642eeb8a3c  gas/testsuite/gas/mt/badunsignedimmhigh.s
+421ee6bb49c170add850a3fee23441f0  gas/testsuite/gas/mt/badunsignedimmlow.s
+2ce5982bf9b6124f370c256c7069dc09  gas/testsuite/gas/mt/errors.exp
+bc9b891086b60b59c357a0d853aa022f  gas/testsuite/gas/mt/ldst.s
+4f8e71e8cf331137c3f336aa91c6ad45  gas/testsuite/gas/mt/misc.d
+5b80d5b239649f291fea8d4dd2a7c9d0  gas/testsuite/gas/mt/misc.s
+fee4aa9e5dd474016339c58a319b9b3d  gas/testsuite/gas/mt/ms1-16-003.d
+3aebdfcb7a46df06bea5ada46f5aecce  gas/testsuite/gas/mt/ms1-16-003.s
+79eea58fd131fc4a04503206807045f4  gas/testsuite/gas/mt/ms2.d
+7581af9f6edce4220949225f386bd96b  gas/testsuite/gas/mt/ms2.s
+29bfbb076d69ac98656871de79c8dd02  gas/testsuite/gas/mt/msys.d
+ed7cc04edf600fa086f611443fde050e  gas/testsuite/gas/mt/msys.s
+cb2ddf46ed713e3cee1a889a471db947  gas/testsuite/gas/mt/mt.exp
+068a28546dba07432dc98a6a1c71f7bc  gas/testsuite/gas/mt/relocs.d
+42a48f92eaf736f7bdca950d44b5bc4e  gas/testsuite/gas/mt/relocs.exp
+72a6accb16fa3045da840a35c403c8af  gas/testsuite/gas/mt/relocs1.s
+9f35d2e0a5e23346e97fb52443fd3ee0  gas/testsuite/gas/mt/relocs2.s
+745fc0a057d8ba007c88fffe2c0bb434  gas/testsuite/gas/openrisc/allinsn.d
+0f4b7bc9edd01dc9fb590e23e45d45ba  gas/testsuite/gas/openrisc/addi.d
+805e669e897b3dc1b7062edc45f09d7f  gas/testsuite/gas/openrisc/addi.s
+a55077cac843dd6c1af5269546a2ab6b  gas/testsuite/gas/openrisc/allinsn.exp
+f3d8381e0e379835553db59cba908711  gas/testsuite/gas/openrisc/allinsn.s
+974b82bc6b25c55d65c70bbd83a8d41a  gas/testsuite/gas/openrisc/lohi.d
+d906479f52be5937ccbcb6b59e18d265  gas/testsuite/gas/openrisc/lohi.s
+c9192e457e9a372b6ee3168d396ecc69  gas/testsuite/gas/openrisc/store.d
+1b1f6769e09f9c308a211891e04ff8c8  gas/testsuite/gas/openrisc/store.s
+d12406c7c6e12ddc557569d5186f48ea  gas/testsuite/gas/pdp11/opcode.d
+a7292fdf81b47ad6ff78c4b527b6bb67  gas/testsuite/gas/pdp11/opcode.s
+f05900c38278602859723b632c739288  gas/testsuite/gas/pdp11/pdp11.exp
+f3a7124485548781ba12a81c18199e29  gas/testsuite/gas/pj/ops.d
+308d2177ed3b3b087d977e46c924fc0c  gas/testsuite/gas/pj/ops.s
+a6667ed6fc7b116477f95ef897bc5444  gas/testsuite/gas/pj/pj.exp
+78ff04d1b9877427fac95abb3a2c09c2  gas/testsuite/gas/ppc/altivec.d
+f8b63770001b67ac307b003b7ea878a2  gas/testsuite/gas/ppc/aix.exp
+1144f1624f81b2bf57bc44af8e76f9bb  gas/testsuite/gas/ppc/align.s
+da75a2b442b5537342a3fb0ae74a0510  gas/testsuite/gas/ppc/altivec.s
+247cc968d023a6d0b3df45f8f83434d3  gas/testsuite/gas/ppc/altivec_xcoff.d
+2c5d265164be638f90745f78056bc292  gas/testsuite/gas/ppc/altivec_xcoff.s
+75d993b58f0b561c72c03e42b6c041b3  gas/testsuite/gas/ppc/altivec_xcoff64.d
+4d30b605ad40bfd869a11908f6c8553c  gas/testsuite/gas/ppc/altivec_xcoff64.s
+172a30768ef125e522380000282ea0c7  gas/testsuite/gas/ppc/astest.d
+5254d1fc440f434a46e97eb96b2735c1  gas/testsuite/gas/ppc/astest.s
+8f377d927ab1a25ef74a404f9da39852  gas/testsuite/gas/ppc/astest2.d
+679686746eeffb584f428b319e1d60e7  gas/testsuite/gas/ppc/astest2.s
+7f23c4ac16d5164a642a0d9250d4d57e  gas/testsuite/gas/ppc/astest2_64.d
+144fe63958860bc4f47e29e6d334f7de  gas/testsuite/gas/ppc/astest2_64.s
+aa6e3da11bbf146a7269f12df1e53c48  gas/testsuite/gas/ppc/astest64.d
+7b85234004920f7134df77e2f1931c13  gas/testsuite/gas/ppc/astest64.s
+4c361ec890aeaf6ec6b419633ab36c4f  gas/testsuite/gas/ppc/booke.d
+98a46d30cf19306875f457ac2dc9a0d6  gas/testsuite/gas/ppc/booke.s
+71b0c5d0b3058c25e44cee73b0d15ffc  gas/testsuite/gas/ppc/booke_xcoff.d
+291a0efcd5faccb5e11d4407535aff13  gas/testsuite/gas/ppc/booke_xcoff.s
+ffdf22548e8fe48344979f2e07cb13ee  gas/testsuite/gas/ppc/booke_xcoff64.d
+35f8d981e9c1630d53aaef81af6b6f22  gas/testsuite/gas/ppc/booke_xcoff64.s
+9f02567c9f12bbfcef2aa11b3cb8898f  gas/testsuite/gas/ppc/e500.d
+634a285b5443114fd7571d7393ad2890  gas/testsuite/gas/ppc/e500.s
+05271d9cdd13ebcebd7662d04285d5af  gas/testsuite/gas/ppc/generate.sh
+c587e1022ddcd82f029387d1a0a27562  gas/testsuite/gas/ppc/machine.d
+ff408fd5be06ddf91987583d7e49c157  gas/testsuite/gas/ppc/machine.s
+da39c2a9324df4ab1c0a81e15456de42  gas/testsuite/gas/ppc/power4.d
+7e32750fd4d73ca95fc2905868e37cf0  gas/testsuite/gas/ppc/power4.s
+1670a99db7163e6e521dc731ee71787d  gas/testsuite/gas/ppc/ppc.exp
+d2e3625ca66a7c30b9270f806c67c877  gas/testsuite/gas/ppc/simpshft.d
+b09f6e7ab2e1416379f9512d1abe3afc  gas/testsuite/gas/ppc/simpshft.s
+52c2f10e54b1b94b494715da3c2a71f2  gas/testsuite/gas/ppc/test1elf.asm
+c6c389f73289209973a4a40e2f7af221  gas/testsuite/gas/ppc/test1elf32.d
+69b9dc5b20503079be857e83ad7e6d24  gas/testsuite/gas/ppc/test1elf32.s
+c6ae7aea99b8f7d5b690081c72f616f4  gas/testsuite/gas/ppc/test1elf64.d
+a8ab8683a00320673194096739412def  gas/testsuite/gas/ppc/test1elf64.s
+6b5dede6da756c49ce5fc9127d0a6510  gas/testsuite/gas/ppc/test1xcoff.asm
+34873c857a85d26623efb00436bcba7b  gas/testsuite/gas/ppc/test1xcoff32.d
+68e09cd1bae67cb9bdbb378d986ebc5b  gas/testsuite/gas/ppc/test1xcoff32.s
+9b39e57ed2b5827f6f20fb7a3b655204  gas/testsuite/gas/ppc/textalign-xcoff-001.d
+b60a4ad89a80b60d95fc5d73ec5e02d9  gas/testsuite/gas/ppc/textalign-xcoff-001.s
+f46a2fb9da9cd7770342a116f5129298  gas/testsuite/gas/ppc/textalign-xcoff-002.d
+b2ff1b9842283255399dbb94f948652f  gas/testsuite/gas/s390/esa-g5.d
+43ea4afda144c77c20291800742944b0  gas/testsuite/gas/s390/esa-g5.s
+049e09aef849c8721bc128ebba592aa9  gas/testsuite/gas/s390/esa-operands.d
+0c35dd354b63c1f0f41821e01f0ea870  gas/testsuite/gas/s390/esa-operands.s
+599ab40519d9fddd24d21f16f69727e6  gas/testsuite/gas/s390/esa-reloc.d
+837bc16ac99b9589f59da79225edfbfb  gas/testsuite/gas/s390/esa-reloc.s
+eeb7be013d9312f32d5336b3ebab1dad  gas/testsuite/gas/s390/esa-z9-109.d
+892bca7562fa959140ad22b75f378737  gas/testsuite/gas/s390/esa-z9-109.s
+d41597300ce4a636bda3d29a48ce744b  gas/testsuite/gas/s390/esa-z900.d
+34ed2f2e243cd65867ae7eead4937234  gas/testsuite/gas/s390/esa-z900.s
+ddce96a6777260a727799aaf58454440  gas/testsuite/gas/s390/esa-z990.d
+be98b4be5d1c1b1cca9533dece385384  gas/testsuite/gas/s390/esa-z990.s
+049e09aef849c8721bc128ebba592aa9  gas/testsuite/gas/s390/operands.d
+0c35dd354b63c1f0f41821e01f0ea870  gas/testsuite/gas/s390/operands.s
+c931f4ec4ac8330d1d0b39d2586c92e6  gas/testsuite/gas/s390/operands64.d
+b73b3811c00bd537586f126c44fc37a9  gas/testsuite/gas/s390/operands64.s
+59dea197f3e61f657821481f05d51613  gas/testsuite/gas/s390/s390.exp
+8ba9907de5d21ef3b208cfe32af15bc0  gas/testsuite/gas/s390/zarch-operands.d
+4e6e317e3db9c6d28907c3c6c431ace1  gas/testsuite/gas/s390/zarch-operands.s
+0b3ad0b143e80c310003be1aea07b1a4  gas/testsuite/gas/s390/zarch-reloc.d
+0eef4465981789eff7ee6d934128da4b  gas/testsuite/gas/s390/zarch-reloc.s
+f20f17c1430d7ecf2e4d03e12833c020  gas/testsuite/gas/s390/zarch-z9-109.d
+edf79d81da26f1b9752289714d45e689  gas/testsuite/gas/s390/zarch-z9-109.s
+124d969f2973cd326554242716b81af7  gas/testsuite/gas/s390/zarch-z900.d
+4d70ae216b9215023a287a462338ce39  gas/testsuite/gas/s390/zarch-z900.s
+dcf3fb603d64f0331d7e158e5bdc27ae  gas/testsuite/gas/s390/zarch-z990.d
+1ea0c5aff5caaeafae5c765930c15ab2  gas/testsuite/gas/s390/zarch-z990.s
+a62d158bd2b887cf650f6b5be7c8cbca  gas/testsuite/gas/sh/arch/arch.exp
+9c9f92d72af037d87d5f68baa46e1b63  gas/testsuite/gas/sh/arch/arch_expected.txt
+30b7a8653cb08c05e1097858b107e0ab  gas/testsuite/gas/sh/arch/sh-dsp.s
+4d2706a50ab20c30417c26302f12fc35  gas/testsuite/gas/sh/arch/sh.s
+d21bba822225655f437c051bca55d24e  gas/testsuite/gas/sh/arch/sh2.s
+7b25fbf30b1f8e496f1b50d395fae4f3  gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s
+f6fad30e9e292650e5026741bad69549  gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s
+b7a6ebe8477406975fa43ef42d546b49  gas/testsuite/gas/sh/arch/sh2a-nofpu.s
+2aadc3e1e020aa8bc2687511f75d7266  gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s
+d2de995debde1f6b2f3c87b19cd27ac3  gas/testsuite/gas/sh/arch/sh2a-or-sh4.s
+8d9aef9bfe34effa93bd804675220b0c  gas/testsuite/gas/sh/arch/sh2a.s
+e59c201bf04ce797181650301d9606c5  gas/testsuite/gas/sh/arch/sh2e.s
+ee8bb7fd1d439a4c849c156b6f420f21  gas/testsuite/gas/sh/arch/sh3-dsp.s
+7fd5f96ae1f6c45ab88ea5e0e1363b47  gas/testsuite/gas/sh/arch/sh3-nommu.s
+49fc270d3b7350d01a0364c7d067ed24  gas/testsuite/gas/sh/arch/sh3.s
+b8d40a718a36ded64524e5eaa8de350a  gas/testsuite/gas/sh/arch/sh3e.s
+d90eaefe91244912760b9ee178dd98ec  gas/testsuite/gas/sh/arch/sh4-nofpu.s
+8efd2c63efadfc154fac43618cb486af  gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s
+725e4d5afe232b272b47d1cdf45ac9ad  gas/testsuite/gas/sh/arch/sh4.s
+8d2f5ff12172b3b0455ad462fd5d1805  gas/testsuite/gas/sh/arch/sh4a-nofpu.s
+506e14fb7c8a395714758f2c963da3a1  gas/testsuite/gas/sh/arch/sh4a.s
+bd9ea8e501364d405408464ed25bae96  gas/testsuite/gas/sh/arch/sh4al-dsp.s
+44470af9404b0991f0a8de53aaeb5961  gas/testsuite/gas/sh/sh64/abi-32.d
+0749692ff0242f9f07bb4fedb31c8733  gas/testsuite/gas/sh/sh64/abi-32.s
+3eb436b712f4fa178b0dd638bc6c1744  gas/testsuite/gas/sh/sh64/abi-64.d
+06245a59e3a5b739e18ecbb319af197f  gas/testsuite/gas/sh/sh64/abi-64.s
+6aa899f57c5766b03146255ef6239d48  gas/testsuite/gas/sh/sh64/basic-1.d
+1e6f51fad3cd1b1d5ab2c45eea796556  gas/testsuite/gas/sh/sh64/basic-1.s
+c1f445c9c11eb4488bc89f51fe050f0e  gas/testsuite/gas/sh/sh64/case-1.d
+2b296b90afe0943f8333698c664fcf49  gas/testsuite/gas/sh/sh64/case-1.s
+0235887659edff3be08bb5d027ddeafa  gas/testsuite/gas/sh/sh64/case-noexp-1.d
+b81ca12af382f0818d84ddbc86fc4c40  gas/testsuite/gas/sh/sh64/crange1-1.d
+8b7d4def4f8a0794ea8afafc05807b08  gas/testsuite/gas/sh/sh64/crange1-2.d
+d0c5cb7872cd00006024e62ef6167c91  gas/testsuite/gas/sh/sh64/crange1.s
+2bedb9bdf5f758f990b1510797e5d8ea  gas/testsuite/gas/sh/sh64/crange2-1.d
+2330c6f137034bb0654cd57edab0fe66  gas/testsuite/gas/sh/sh64/crange2-2.d
+760d6157b530940b62c20ddcf087fc10  gas/testsuite/gas/sh/sh64/crange2-noexp-1.d
+74b54c2a8026893d9b508971db63013d  gas/testsuite/gas/sh/sh64/crange2.s
+ab06bd154d96e763a48d1017a0a24b2f  gas/testsuite/gas/sh/sh64/crange3-1.d
+dddce6ad991b22d2a332fde254163f0f  gas/testsuite/gas/sh/sh64/crange3.s
+618bdbf3046c133bdb19d489b1fbd20d  gas/testsuite/gas/sh/sh64/crange4-1.d
+c7a9cf3f74ff694be740e78caef2ac27  gas/testsuite/gas/sh/sh64/crange4.s
+eebbf27928bc7a11690f561255962650  gas/testsuite/gas/sh/sh64/crange5-1.d
+0364881d49d33cbe2fe09bc51a8d6c96  gas/testsuite/gas/sh/sh64/crange5.s
+edcb28050f43b6494d13e9c69b9dac5e  gas/testsuite/gas/sh/sh64/creg-1.d
+322b2608922b8e4aa4a24dcb41bce231  gas/testsuite/gas/sh/sh64/creg-1.s
+21efc2fb414915b801d5726c6466ac26  gas/testsuite/gas/sh/sh64/creg-2.d
+e43ba692ffe7c41968b358f642fbe269  gas/testsuite/gas/sh/sh64/creg-2.s
+841d2514094c765db5d9e6d7dba608f7  gas/testsuite/gas/sh/sh64/datal-1.s
+9052931d984dcc499b11d89706a8e954  gas/testsuite/gas/sh/sh64/datal-2.d
+cb0045841d83f37f4eb400eedc84bd88  gas/testsuite/gas/sh/sh64/datal-2.s
+8bcac43832f5c6bfeb52f53fb371c3a2  gas/testsuite/gas/sh/sh64/datal-3.s
+9ee5c29701a8d086d1009ff641ca0ed6  gas/testsuite/gas/sh/sh64/datal32-1.d
+19427ccccb932e285f3237284e2e0d8c  gas/testsuite/gas/sh/sh64/datal32-3.d
+e9690169872c2de7dcd749d8ab3f1b7d  gas/testsuite/gas/sh/sh64/datal64-1.d
+e2eacd79ed4a1860c3796eb83d0beda2  gas/testsuite/gas/sh/sh64/datal64-3.d
+8c114620f0ef14cf3de9fdbe132b6121  gas/testsuite/gas/sh/sh64/endian-1.d
+5e4c7d2bf96d59c028edefdbafb057a8  gas/testsuite/gas/sh/sh64/endian-1.s
+4344249ac44ce11b32909e0627ff3f8a  gas/testsuite/gas/sh/sh64/endian-2.d
+5e4c7d2bf96d59c028edefdbafb057a8  gas/testsuite/gas/sh/sh64/endian-2.s
+5f1257702ef4f1cf2aa7b45773be88b5  gas/testsuite/gas/sh/sh64/err-1.s
+9aae56187a70428a96c3f8b63f0b298e  gas/testsuite/gas/sh/sh64/err-2.s
+65d1645ea1b20153be5b8f7835b6a8a1  gas/testsuite/gas/sh/sh64/err-3.s
+1b65e948107dc0338e992bd9514546e6  gas/testsuite/gas/sh/sh64/err-4.s
+71c4c7e159664025065628ccf021f714  gas/testsuite/gas/sh/sh64/err-abi-32.s
+2b150650d4db3e862adc6a56be595791  gas/testsuite/gas/sh/sh64/err-abi-64.s
+8abc3ab97b785a7ebfd4275a97b348ca  gas/testsuite/gas/sh/sh64/err-dsp.s
+08dc6b9013499ecd50a548efb48466fc  gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s
+8f8f3efdf43bf2d38efd13d8553ecfbc  gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s
+74d8b483a9ca10e22a81becf75f93688  gas/testsuite/gas/sh/sh64/err-pt-1.s
+d8d83758870e2005c9ee8016fc5fd919  gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s
+394ffd725133deb9202ca31ee4b1affd  gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s
+ce241d95818d7925a626fd2bb67af1b0  gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s
+fe313ea51eecd9687f6c9b1ea1ad437d  gas/testsuite/gas/sh/sh64/err-ptb-1.s
+53467e7f7bd3ee54d509f1abf897bb7b  gas/testsuite/gas/sh/sh64/err-ptb-2.s
+652957f30edf944c4fa37ec078dee284  gas/testsuite/gas/sh/sh64/err.exp
+a302ce857f60bb21d3b5ab167c701392  gas/testsuite/gas/sh/sh64/immexpr1.s
+1e551fd277888b925aa72edcc9b47245  gas/testsuite/gas/sh/sh64/immexpr2.s
+c778a3f14d70c99360fd986af0cb6328  gas/testsuite/gas/sh/sh64/immexpr32-1.d
+33114323bf4032165ef36d2d065df31d  gas/testsuite/gas/sh/sh64/immexpr32-2.d
+014665cdf46430e77619b873139aaeb0  gas/testsuite/gas/sh/sh64/immexpr64-1.d
+49306968516a75177497a629cf099124  gas/testsuite/gas/sh/sh64/immexpr64-2.d
+5336236826c97b8654780279b7c822c7  gas/testsuite/gas/sh/sh64/lineno.d
+1906fe63cf773b8ac3eb075401c8b72a  gas/testsuite/gas/sh/sh64/lineno.s
+95cbdbb1e8917c7545652de0a3ec238f  gas/testsuite/gas/sh/sh64/localcom-1.d
+c70e2eb58f1fe991dd7d3908cbaa951d  gas/testsuite/gas/sh/sh64/localcom-1.s
+656cf6fdc90218a6795ca05018d54b7a  gas/testsuite/gas/sh/sh64/mix-1.d
+e50f90df0b060272483afbd16c103c5a  gas/testsuite/gas/sh/sh64/mix-1.s
+c1ce2a4b462e4d334b16320deba64423  gas/testsuite/gas/sh/sh64/mix-noexp-1.d
+23823dcdcf05139e4d7252959e4fb5a9  gas/testsuite/gas/sh/sh64/movi-1.s
+b80a38885a06fc68ff405564a6a9f570  gas/testsuite/gas/sh/sh64/movi-2.s
+6f41450ee68e54256fa18e24b33d05ae  gas/testsuite/gas/sh/sh64/movi-3.d
+12ae1cdfb0bbdaaf3a126ee70fe789ab  gas/testsuite/gas/sh/sh64/movi-3.s
+e76eb1e8a1a9db6b1f7fd80febdd28b4  gas/testsuite/gas/sh/sh64/movi32-1.d
+5047d114f091d4508aaf5e889100cd37  gas/testsuite/gas/sh/sh64/movi32-2.d
+08fa128e90a5638d3165265047ba109a  gas/testsuite/gas/sh/sh64/movi32-noexp-2.d
+9dff88384cf4e1318198df8076e59801  gas/testsuite/gas/sh/sh64/movi64-1.d
+716e0122742f29659bad2c2d9c95c4de  gas/testsuite/gas/sh/sh64/movi64-2.d
+b20bbf68d1532d1a7dceed831201b105  gas/testsuite/gas/sh/sh64/movi64-2.s
+b5f8911ff2187db6f3487e67c6f46ec5  gas/testsuite/gas/sh/sh64/movi64-3.d
+fd1344ac02580b0051598095547d35df  gas/testsuite/gas/sh/sh64/movi64-noexp-2.d
+b239a01074851fb2e4ff1114bc99f20c  gas/testsuite/gas/sh/sh64/pt-1.d
+977a0fa9b8369db70c3b38ac06f12780  gas/testsuite/gas/sh/sh64/pt-1.s
+75eda68c6a7031aa1c65acd62c33c3ec  gas/testsuite/gas/sh/sh64/pt-2.s
+e8a236e070173d72dba8a9ff9e8ff1c4  gas/testsuite/gas/sh/sh64/pt-noexp-1.d
+c9cc5ca087461fc49f082527050abe73  gas/testsuite/gas/sh/sh64/pt32-1.d
+4e7e7e9fdcde076652de7863f805d749  gas/testsuite/gas/sh/sh64/pt32-noexp-2.d
+4fd6da9845ac06905af82d15b4001bef  gas/testsuite/gas/sh/sh64/pt64-1.d
+0f8e3e9d84479a1d0f21710af01df50c  gas/testsuite/gas/sh/sh64/pt64-32-1.d
+c89849efcae55b728a13215ba3a74201  gas/testsuite/gas/sh/sh64/pt64-32-2.d
+abdf3ef94d02116c3b7999acd6ec653c  gas/testsuite/gas/sh/sh64/pt64-noexp-2.d
+1a87cdae03956757559ed10057f2e640  gas/testsuite/gas/sh/sh64/ptc-1.s
+487b2b8f76b946228dad904a1959c47f  gas/testsuite/gas/sh/sh64/ptc32-1.d
+9727dd27cc82ffc3eef1d1a6ac8a3a1e  gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d
+3366054bae21b384dfd86d777627ad05  gas/testsuite/gas/sh/sh64/ptc64-1.d
+841daec09a7f42a2e3a63931752c046b  gas/testsuite/gas/sh/sh64/ptc64-32-1.d
+ab2cea95b143e19a9c0e4ff3bd330316  gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d
+96cbd019d7ec79b3c16cda800f382b89  gas/testsuite/gas/sh/sh64/ptext-1.s
+eb804d1481a46c64b61804d9c8e4f209  gas/testsuite/gas/sh/sh64/ptext32-1.d
+e57efa406ea16084d014e1c26afa9d36  gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d
+cac5ed29c9ac5a6a0a61b7dfc7689d71  gas/testsuite/gas/sh/sh64/ptext64-1.d
+5fc5a89754ea5477a34cef60004ee32a  gas/testsuite/gas/sh/sh64/ptext64-32-1.d
+11101bcf2008ecaec3be09cae2f8a4cc  gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d
+4f4382a6dfe422af2b72650213c5a60e  gas/testsuite/gas/sh/sh64/rel-1.s
+8abb4dfaebbb20b16c4b2883b5ab7dd0  gas/testsuite/gas/sh/sh64/rel-2.s
+57efdd6672d3ea92ea66001b514338df  gas/testsuite/gas/sh/sh64/rel-3.s
+2e0d9b5d634a0eabdcd0b15a8974c0f0  gas/testsuite/gas/sh/sh64/rel-4.s
+c05e67e392648f4cb7b8f9eade0b7e3d  gas/testsuite/gas/sh/sh64/rel-5.s
+4228e9087a58f128e96836eeff0668f3  gas/testsuite/gas/sh/sh64/rel32-1.d
+4bb108397bc9fb4eea10c4a38c448eac  gas/testsuite/gas/sh/sh64/rel32-2.d
+d70065fcafbe4927e41a5b4a48f8c058  gas/testsuite/gas/sh/sh64/rel32-3.d
+14a03f44258d33c2a4128c092157650d  gas/testsuite/gas/sh/sh64/rel32-4.d
+bb0b20da50325efadd908400439ff59b  gas/testsuite/gas/sh/sh64/rel32-5.d
+ba7e5d433860b10e57d491ffa1e3ac03  gas/testsuite/gas/sh/sh64/rel64-1.d
+abb7346f1a3066cfc0a2db0c26283ecd  gas/testsuite/gas/sh/sh64/rel64-2.d
+3fe577d87923cb4195c1579430b8b6c6  gas/testsuite/gas/sh/sh64/rel64-3.d
+fd2c887a32ccb111e7311a9861d43e10  gas/testsuite/gas/sh/sh64/rel64-4.d
+95340ee9c1127c68385d432dbd3cae3b  gas/testsuite/gas/sh/sh64/rel64-5.d
+740521b18881de028fee6b20f7ccd04b  gas/testsuite/gas/sh/sh64/relax-1.d
+839efefe10184f6e37271a4994b1b941  gas/testsuite/gas/sh/sh64/relax-1.s
+51da503e7bf63bc0bd9c8a4d7303405c  gas/testsuite/gas/sh/sh64/relax-2.d
+ee117757e571098c2541629a6137fd5a  gas/testsuite/gas/sh/sh64/relax-2.s
+91af884eb0b22a4650ec8d6f8b510931  gas/testsuite/gas/sh/sh64/relax-3.d
+3ee39c26dd95bfe4989cc95050a00c9c  gas/testsuite/gas/sh/sh64/relax-3.s
+04f574461a2d81cdfbec0650aed4f90e  gas/testsuite/gas/sh/sh64/sh64.exp
+29020352f23aeea0372f8703f586d6d1  gas/testsuite/gas/sh/sh64/shift-1.s
+1faf64608ba2f0f11fbd637c7a656434  gas/testsuite/gas/sh/sh64/shift-2.s
+54edab02d0536f97c10efa96cc9450da  gas/testsuite/gas/sh/sh64/shift-3.s
+6e742f214357147914baae64b4922857  gas/testsuite/gas/sh/sh64/shift32-1.d
+b4a03634321906a242a3b4631f6f67fd  gas/testsuite/gas/sh/sh64/shift32-3.d
+7f046c3dabb15b56c116801e9aa80a81  gas/testsuite/gas/sh/sh64/shift32-noexp-3.d
+bfa64daf3064cdd58c52e2889935c4e7  gas/testsuite/gas/sh/sh64/shift64-1.d
+2c1e84f74b7a62d407c1d3cf67c37777  gas/testsuite/gas/sh/sh64/shift64-2.d
+d09a37937d32f557434bdf59087e2209  gas/testsuite/gas/sh/sh64/shift64-3.d
+fc0d9fcb04df441c84d2ddb4381a1193  gas/testsuite/gas/sh/sh64/shift64-noexp-3.d
+225180c733aa2a655787aeacc505d73c  gas/testsuite/gas/sh/sh64/syntax-1.d
+b4788de38f41774baf9c65c9d6ba3951  gas/testsuite/gas/sh/sh64/syntax-1.s
+55c187e1043e792fb85ad05e1f2cd446  gas/testsuite/gas/sh/sh64/syntax-2.d
+386f5facef43a6f08df831f880a377ba  gas/testsuite/gas/sh/sh64/syntax-2.s
+f34ab08c5b50ac4e4f124b5ecba5ab19  gas/testsuite/gas/sh/sh64/ua-1.s
+bea89df02c11369585780e6764904b5b  gas/testsuite/gas/sh/sh64/ua32-1.d
+99e5ceaf74ff9bfe84f74d42ecb6ac04  gas/testsuite/gas/sh/sh64/ua64-1.d
+a2b5144e36d52206c7240d5e8d8468bd  gas/testsuite/gas/sh/basic.exp
+5587c33a91c8d806a2e2974a9ef6ec69  gas/testsuite/gas/sh/dsp.d
+4a91ff56c55784feb5b426e1873c1b72  gas/testsuite/gas/sh/dsp.s
+83d353a7646413b74d2087aa22fae13b  gas/testsuite/gas/sh/err-1.s
+a0ad5112c5f2c5b716feadb70e9b9b75  gas/testsuite/gas/sh/err-at.s
+3d3e9ab1c01d5068d93f52aa77f72eb5  gas/testsuite/gas/sh/err-be.s
+2c810a3f6741effd3db6c1a9ac7f312d  gas/testsuite/gas/sh/err-le.s
+f816019c871b5e6adcc42febdfb003ff  gas/testsuite/gas/sh/err-sh4a-fp.s
+d828b6f7773dbd15941f186102f3f6b8  gas/testsuite/gas/sh/err-sh4a.s
+331a6e02a9da0ad1ec9a54be37b5bd1d  gas/testsuite/gas/sh/err-sh4al-dsp.s
+0d4d60651d69d4fd7f70bd2cd9baca3b  gas/testsuite/gas/sh/err.exp
+70b8c1e3f6395cf992292993dcbdf601  gas/testsuite/gas/sh/fp.s
+3d4e799dcd37b5c65ba2d1057434044a  gas/testsuite/gas/sh/pcrel-coff.d
+0935a11b35249a2ef563467f6e77b5f1  gas/testsuite/gas/sh/pcrel-coff.s
+6e541b6a45b8e96e7eb9b7ab3f313633  gas/testsuite/gas/sh/pcrel-hms.d
+339f712e8e5db5efaa4b0640fdfdb1c8  gas/testsuite/gas/sh/pcrel.d
+bcfb9e14ef9619580a5b5245103eb424  gas/testsuite/gas/sh/pcrel.l
+823af07829673a6bdd394804057aa053  gas/testsuite/gas/sh/pcrel.s
+e609f05869ca18d3fb48344c4b6be18e  gas/testsuite/gas/sh/pcrel2.d
+8f223941cff6690661e5bdf8244c4698  gas/testsuite/gas/sh/pcrel2.s
+f6a831c7fd3cdcb13bb8332e6a0dfc01  gas/testsuite/gas/sh/pic.d
+22eafa66b3775951b6e619a3e2e5c0e0  gas/testsuite/gas/sh/pic.s
+4562a671e60509b205c3a018ab48efdb  gas/testsuite/gas/sh/reg-prefix.d
+5188e7fe2ea21d2ddb6b7c16949ca6e0  gas/testsuite/gas/sh/reg-prefix.s
+8f268462c23e1ff53e57ff0cf5782a49  gas/testsuite/gas/sh/renesas-1.d
+136ece0d6cadeaeef5d23bc103357880  gas/testsuite/gas/sh/renesas-1.s
+f0665e0d668ec16d2fb188dfad1d3454  gas/testsuite/gas/sh/sh2a.d
+0906d437e44d69cbce59163bac3d6431  gas/testsuite/gas/sh/sh2a.s
+f4c2ad14cd9d20c194b57df39f544a9d  gas/testsuite/gas/sh/sh4a-dsp.d
+676ee564dee670f1ca81c2c18d3475a0  gas/testsuite/gas/sh/sh4a-dsp.s
+fb4380450ed880975ee81e7ae9bdea17  gas/testsuite/gas/sh/sh4a-fp.d
+db8b098c222e3c21f69d415642a75b3e  gas/testsuite/gas/sh/sh4a-fp.s
+d7ca60046a60171eeea814558a0561a8  gas/testsuite/gas/sh/sh4a.d
+deb4a9d8191424a3b2c1ab3bf2ec6dd2  gas/testsuite/gas/sh/sh4a.s
+9798df68f545e2f72e6cbbcdea0edd6f  gas/testsuite/gas/sh/sh4al-dsp.d
+487eb47915254c0f5d9a9eed6ea79d3c  gas/testsuite/gas/sh/sh4al-dsp.s
+d6a3b29d00096cb3d19f54a8acfc281b  gas/testsuite/gas/sh/tlsd.d
+1a5dbdc955c0f79813f64148ddcd8353  gas/testsuite/gas/sh/tlsd.s
+9acec2579922ef32f81b53f07d06828d  gas/testsuite/gas/sh/tlsnopic.d
+0c7a54cecb95b9959ececc358af7d5db  gas/testsuite/gas/sh/tlsnopic.s
+fbd705f83ed6807b7956f98f95ab56d1  gas/testsuite/gas/sh/tlspic.d
+ccef24743254119bfb0a1c84283253a9  gas/testsuite/gas/sh/tlspic.s
+4b815d3da1c2d2bceeb98994c659c492  gas/testsuite/gas/sparc/membar.d
+392efaa6637a8734d3ab35e579615a53  gas/testsuite/gas/sparc/asi.d
+8f35c68aef641d7cc35698d67a32557e  gas/testsuite/gas/sparc/asi.s
+521b5671f3aa6bae70f78b5f3d37de1a  gas/testsuite/gas/sparc/membar.s
+12b5e618325d4a4bc80cb8766bbfc064  gas/testsuite/gas/sparc/mism-1.s
+706c79f848f389921b20f0f64dde1ecd  gas/testsuite/gas/sparc/mismatch.exp
+44169c5563a88510bc703438a7eae8f4  gas/testsuite/gas/sparc/pcrel.d
+6065405af8fda4de18e07e1863d3e6dc  gas/testsuite/gas/sparc/pcrel.s
+b1342d8f5d0190f0c50f2e9321f4e58e  gas/testsuite/gas/sparc/pcrel64.d
+8c92147ad9a6ef778b5ccbf101ae253e  gas/testsuite/gas/sparc/pcrel64.s
+22d75f06f968a1d689517b3271434c7c  gas/testsuite/gas/sparc/plt.d
+830651a18c39323a5169f284cecfc66a  gas/testsuite/gas/sparc/plt.s
+8c5e60de8c40ab24b01121661c24beac  gas/testsuite/gas/sparc/plt64.d
+02b176ee41fceeab10ef800c7c2a8c7e  gas/testsuite/gas/sparc/plt64.s
+d85c226fa388a66bd2689ba3efedf5e4  gas/testsuite/gas/sparc/prefetch.d
+0b615422f6c8ad3fe5c42f2a8c7af1e4  gas/testsuite/gas/sparc/prefetch.s
+3f120e259bb733ce1ef75f0a68342cc0  gas/testsuite/gas/sparc/rdhpr.d
+2f411297453660c0100a244389bf7798  gas/testsuite/gas/sparc/rdhpr.s
+d77dc9121f8c4bca412d9a7f3ed35361  gas/testsuite/gas/sparc/rdpr.d
+3b1796f1e8b5020c05aa9f29aeba3967  gas/testsuite/gas/sparc/rdpr.s
+78517d2fce6c7707fd2f09689ebc3d72  gas/testsuite/gas/sparc/reloc64.d
+7d56aec0e050e09c004a33abd25a9293  gas/testsuite/gas/sparc/reloc64.s
+08afa18cf165a3043a6b92153526c876  gas/testsuite/gas/sparc/set64.d
+1facb5655fe83c44ac900776c563e717  gas/testsuite/gas/sparc/set64.s
+33a59634e5bcb19e30f387aa3f5c519c  gas/testsuite/gas/sparc/sparc.exp
+3564e46bcf53613a512e32f2633c3d05  gas/testsuite/gas/sparc/splet-2.d
+69817b445f39a0e3cf591de872fa74e5  gas/testsuite/gas/sparc/splet-2.s
+5fa3fb7a059f3fd315df0af21e0c9619  gas/testsuite/gas/sparc/splet.d
+6236b0423a317e0a2340bdb317c54d1e  gas/testsuite/gas/sparc/splet.s
+a6b1a41bb26dc70e130bc42ef7133cc7  gas/testsuite/gas/sparc/synth.d
+0e0dead95b89c31c1ed49b21c430bc1a  gas/testsuite/gas/sparc/synth.s
+b041cafa83c1f1f131ca949780217e54  gas/testsuite/gas/sparc/synth64.d
+0303005116e0116e28f1dd473ca39f28  gas/testsuite/gas/sparc/synth64.s
+d9387e1243975789897f80338801920f  gas/testsuite/gas/sparc/unalign.d
+4f0d12b16f8afe39a387c14fd41d4382  gas/testsuite/gas/sparc/unalign.s
+31b399c66449684fd71cf29e4947afe2  gas/testsuite/gas/sparc/vxworks-pic.d
+a3f26463209f0178d369c6a83b31f1cb  gas/testsuite/gas/sparc/vxworks-pic.s
+7ce6d9aeae268f49a69d0988ace42ee6  gas/testsuite/gas/sparc/window.d
+156e5bb3b40ebb2c46988c64270e5137  gas/testsuite/gas/sparc/window.s
+9128a03ea2a83074a28f191ca90e896b  gas/testsuite/gas/sparc/wrhpr.d
+7b8495e86ce639aa561385f702e67e4f  gas/testsuite/gas/sparc/wrhpr.s
+8c901935caf906883529422755d1a4bf  gas/testsuite/gas/sparc/wrpr.d
+ad65b667840b0c204c3c8379a0b38b8c  gas/testsuite/gas/sparc/wrpr.s
+f65f40edb42735b8af3a4baaacd662f5  gas/testsuite/gas/sparc-solaris/addend.exp
+7dd4467acc1dda3c1753ebcbfeeead33  gas/testsuite/gas/sparc-solaris/addend.s
+dd2ab79e6bd90288569274206313966b  gas/testsuite/gas/sparc-solaris/gas.exp
+b2d813e248b8ec085ca8d551271274bf  gas/testsuite/gas/sparc-solaris/sol-cc.s
+2e927e8072e145441bb882a01e3ac8cd  gas/testsuite/gas/sparc-solaris/sol-gcc.s
+54a6b727f437bf7989e266329d0dd875  gas/testsuite/gas/sun4/addend.d
+b648f70387617b14507805caeea0b6d6  gas/testsuite/gas/sun4/addend.exp
+7dd4467acc1dda3c1753ebcbfeeead33  gas/testsuite/gas/sun4/addend.s
+a0ea0105c8925c65926645a1d4653fed  gas/testsuite/gas/symver/symver.exp
+85f57708f7d8db6957900a6fb76ab4fb  gas/testsuite/gas/symver/symver0.d
+7f2d42503901978e4eb5bab37fd01df2  gas/testsuite/gas/symver/symver0.s
+9107b44387b3b0e9184504449d6e4d84  gas/testsuite/gas/symver/symver1.d
+1d6eb4d5a6cbf6ac541ca7d4c561b74f  gas/testsuite/gas/symver/symver1.s
+b44c04d7f2b689d60bccae544b854f95  gas/testsuite/gas/symver/symver2.l
+7214f11688ed0284f53c3c060fa973bf  gas/testsuite/gas/symver/symver2.s
+d37568e052e76a50c9d4775eede01585  gas/testsuite/gas/symver/symver3.l
+7f58a39bd0e6eda06fa15260adaa1044  gas/testsuite/gas/symver/symver3.s
+aaf2746f913c7c81f487786bd9b99543  gas/testsuite/gas/symver/symver4.l
+ff40f84c77b398ca408422048eb1684e  gas/testsuite/gas/symver/symver4.s
+c2401f7310b24ae252e1905a90fbb133  gas/testsuite/gas/symver/symver5.l
+ed56c563fc819e4c50c4160a17f8abae  gas/testsuite/gas/symver/symver5.s
+a3a92a55022c0edb85d34af1d1739ee8  gas/testsuite/gas/symver/symver6.l
+73c983230d1435795774501e7247e78c  gas/testsuite/gas/symver/symver6.s
+8ea79039a765caf02b0270c41d2aecea  gas/testsuite/gas/tic4x/addressing.s
+1d1cd32af19bf411056f0e5dc6793704  gas/testsuite/gas/tic4x/addressing_c3x.d
+3a9747d4c737fcaa03d48bfb244c65d1  gas/testsuite/gas/tic4x/addressing_c4x.d
+87791d8e703ba0e4a6f558667ae0b37b  gas/testsuite/gas/tic4x/allopcodes.S
+759572024f59fdd5f644cf67e6f534bb  gas/testsuite/gas/tic4x/data.d
+9d1169a0d03a6cf2c75cd4ee202a28d6  gas/testsuite/gas/tic4x/data.s
+1eeee4f18eb831980279d37275498be8  gas/testsuite/gas/tic4x/float.d
+7e1d0515d6c0d58e786c6eba115d7f18  gas/testsuite/gas/tic4x/float.s
+edd930af223500ae3f3c8a6235859f7e  gas/testsuite/gas/tic4x/opclasses.h
+3f4860301a631779c7ce027dfe991eea  gas/testsuite/gas/tic4x/opcodes.s
+5dc32889ee5cceadaa36ed8edaa74110  gas/testsuite/gas/tic4x/opcodes_c3x.d
+1897a6f02cf723ddd4767fd6d08f92dc  gas/testsuite/gas/tic4x/opcodes_c4x.d
+9143bb67c8b4f9c4981c736c09ad8d0e  gas/testsuite/gas/tic4x/opcodes_new.d
+925a40c20b5622660b057bbe1607939d  gas/testsuite/gas/tic4x/rebuild.sh
+749edd66d0478c88fb2fe6dbe1e43a6a  gas/testsuite/gas/tic4x/registers.s
+298a8cba1f2f8117ba5d67e272c9f965  gas/testsuite/gas/tic4x/registers_c3x.d
+3bfcecd5b33adf2bd9b8d7def7786678  gas/testsuite/gas/tic4x/registers_c4x.d
+bc620bbcb914996a6b20eb637ffcaa1d  gas/testsuite/gas/tic4x/tic4x.exp
+eefd3d89495af1e2d0bb45ba859d9481  gas/testsuite/gas/tic4x/zeros.d
+95dc276c67e715e06ef1690e2cc33bec  gas/testsuite/gas/tic4x/zeros.s
+3445e4e0e63e380c58fa9a238a67aee5  gas/testsuite/gas/tic54x/address.d
+78c05303f9f0cbc1a4610cafd8684961  gas/testsuite/gas/tic54x/address.s
+1c273453dd66e3fe0b42ac96860cfe1c  gas/testsuite/gas/tic54x/addrfar.d
+04728b4642409775852f79c1d68c4f54  gas/testsuite/gas/tic54x/align.d
+f705542096afe413c7ab6ffa17469af7  gas/testsuite/gas/tic54x/align.s
+7d55407efacfaa48a63c6f33ce4096bf  gas/testsuite/gas/tic54x/all-opcodes.d
+16b138265d758ee38dbf89a41696f4b4  gas/testsuite/gas/tic54x/all-opcodes.s
+fade7483f79e5beef3973e1dd59c5713  gas/testsuite/gas/tic54x/asg.d
+64c9ec95e386f8e5d0040c26fee7321c  gas/testsuite/gas/tic54x/asg.s
+d7b5d8e349a3f2f2b36167d8aad33d40  gas/testsuite/gas/tic54x/cons.d
+671f83be79acf4e42032f33d828864ac  gas/testsuite/gas/tic54x/cons.s
+720ded5513845bac8bffaba11faa1bda  gas/testsuite/gas/tic54x/consfar.d
+9d9a1c4f120f6ce8f3bd03ee0986c9c2  gas/testsuite/gas/tic54x/extaddr.d
+1eff597d688aedce62a361714b4bb6aa  gas/testsuite/gas/tic54x/extaddr.s
+802b686cf4ec88db9eb851402427de50  gas/testsuite/gas/tic54x/field.d
+534ff025c4a332a0b3a4811c889d9637  gas/testsuite/gas/tic54x/field.s
+e8334221e9d81711a8120983fc654f4b  gas/testsuite/gas/tic54x/in_mlib.asm
+1af2989af2066c93fd7ebc8b607b8fd2  gas/testsuite/gas/tic54x/labels.d
+aae9f04acb5f59969bf1f0465d7c78bd  gas/testsuite/gas/tic54x/labels.inc
+398343a46a08804051ef4cb0fcd926b1  gas/testsuite/gas/tic54x/labels.s
+8734a1dfc7dd3bb849fe422776e761e2  gas/testsuite/gas/tic54x/loop.d
+4a609e1f44de00f164f48203d5df870b  gas/testsuite/gas/tic54x/loop.s
+59a9b26dade4493634167731704fc899  gas/testsuite/gas/tic54x/lp.d
+2c650e0c313376b80d7a6950039ff3b4  gas/testsuite/gas/tic54x/lp.s
+816673a798bddfbface0f02c77beca0d  gas/testsuite/gas/tic54x/macro.d
+d76d2e7a0d946a16279b4eeafcfa0cc7  gas/testsuite/gas/tic54x/macro.s
+09c277ba1f7d69551c473cd20cbb14bd  gas/testsuite/gas/tic54x/macro1.s
+ddbfc019917d779c19002992f3929367  gas/testsuite/gas/tic54x/macros.lib
+0649dee6b4c28e25ae3db473f82bc0f2  gas/testsuite/gas/tic54x/math.d
+1ff7d6cd1fb20b8cde42e82ea5e38dfa  gas/testsuite/gas/tic54x/math.s
+fb2be21a90949c70f748c2c937d6efa9  gas/testsuite/gas/tic54x/opcodes.d
+03c7d9751c849b0f4a04ce24d181e494  gas/testsuite/gas/tic54x/opcodes.s
+6680a6234b1ad893200ab5eb9360bc4d  gas/testsuite/gas/tic54x/sections.d
+fe46811cda30294230b15a91c5b47d07  gas/testsuite/gas/tic54x/sections.s
+3a8e6d194159fe413ec370a0d8802c6f  gas/testsuite/gas/tic54x/set.d
+cdf1f13fafc4d4abd831567cdda40eff  gas/testsuite/gas/tic54x/set.s
+48c074b199687a4265e4bafcd7d35c9d  gas/testsuite/gas/tic54x/struct.d
+28bcc7e09d20e59e1ccb70e318f45324  gas/testsuite/gas/tic54x/struct.s
+4563812083147c039c2b6048cdfe8b73  gas/testsuite/gas/tic54x/subsym.d
+a6d4e40952285da31a31a7146766dc04  gas/testsuite/gas/tic54x/subsym.s
+a3547e6b13dd61f04ad639ae18c38bb3  gas/testsuite/gas/tic54x/subsym1.s
+b2df4dd8056e7236407bbc4c60b27b02  gas/testsuite/gas/tic54x/tic54x.exp
+f4ec360b5d100de542503fae28024fb0  gas/testsuite/gas/v850/basic.exp
+b3daff1073feeab915c5d25268ab1d71  gas/testsuite/gas/v850/arith.s
+d33db5351243bff28f76ada8284737dc  gas/testsuite/gas/v850/branch.s
+fd5263cb3409650f6bb2e9b610eab2d9  gas/testsuite/gas/v850/bit.s
+e3d311e55349338e4876c3711ed91c46  gas/testsuite/gas/v850/compare.s
+986292c2ba21464166aa337ab580a139  gas/testsuite/gas/v850/fepsw.s
+5f8e79e5bec30791f19218a7ad23040d  gas/testsuite/gas/v850/hilo.s
+f7d87df456dee97f2d28be5a29afde0a  gas/testsuite/gas/v850/hilo2.s
+36254aabdcf9005f2dd8e7fba47de388  gas/testsuite/gas/v850/jumps.s
+ee5a6da54e89a759bccef5da2ce4747e  gas/testsuite/gas/v850/logical.s
+79263247214c7d46c383e26aafc74d31  gas/testsuite/gas/v850/mem.s
+2db16d6b7c2aa2cc17e621ac1da852eb  gas/testsuite/gas/v850/misc.s
+8c5fd0446e831223f93adebecec8a2b2  gas/testsuite/gas/v850/move.s
+90c3465d11f275837ad5b9cac2dd51c4  gas/testsuite/gas/v850/range.s
+10e8b025bce8af1b59c395fc5799236c  gas/testsuite/gas/v850/reloc.s
+1f9cde45eb58f65e73c1231155c58b76  gas/testsuite/gas/v850/split-lo16.d
+eee775291469641dfa761921ed942688  gas/testsuite/gas/v850/split-lo16.s
+4630764878df61243465ea3166f8fc92  gas/testsuite/gas/v850/v850e1.d
+4d415d59ce58b7dde43be4632930c5ec  gas/testsuite/gas/v850/v850e1.s
+97c4b5a719430010c15bae2299ce58fe  gas/testsuite/gas/vax/elf-rel.d
+93d331c520e6b5b5b63f7010f800b523  gas/testsuite/gas/vax/elf-rel.s
+c8557b4b40ce9690c81d77b9502a959c  gas/testsuite/gas/vax/flonum.d
+2cf8b02a3bf0517e18f9e972f496f396  gas/testsuite/gas/vax/flonum.s
+aa03dd0743c96363f2bbd4a8d6bf5930  gas/testsuite/gas/vax/quad.s
+b5281ff49f97d0836ede49ab60f0b84e  gas/testsuite/gas/vax/quad_elf.s
+5573f76fbd39f4ef631b12ccfe26082e  gas/testsuite/gas/vax/vax.exp
+5f315bec363a06d8c499bfef6a910ae4  gas/testsuite/gas/xc16x/add_test.s
+b898eb8de608f2a58e457819a18fc6b5  gas/testsuite/gas/xc16x/add.s
+1a42e3b54e1c1f12cb59756592a4e4bd  gas/testsuite/gas/xc16x/cmp_test.s
+1dc4db7d28ad50d346642f6dbf5df632  gas/testsuite/gas/xc16x/addb.s
+d301d0d9a87958794c84ad7da238c117  gas/testsuite/gas/xc16x/addc.s
+cbc27d426e01a6b1787ca0874a40ec64  gas/testsuite/gas/xc16x/addcb.s
+ec736a95397739f0e5d7ebebad55f68d  gas/testsuite/gas/xc16x/and.s
+901d19e05a01c914be683e6ef837e9d3  gas/testsuite/gas/xc16x/andb.s
+f4f8565d3423ec279b25c291c489ac5f  gas/testsuite/gas/xc16x/bfldl.s
+7abe30bd4385dc6cc9991dee613c31b6  gas/testsuite/gas/xc16x/bit.s
+72072eaeb0ce024c58e07b6821e122f3  gas/testsuite/gas/xc16x/calla.s
+c4432ec0aeee6567803279d86b2ed6c1  gas/testsuite/gas/xc16x/calli.s
+81a7564b23206ef107f01041892f1a9a  gas/testsuite/gas/xc16x/cmp.s
+14e2e5dda69ea4c34dad7fc422218333  gas/testsuite/gas/xc16x/mov_test.s
+b3db7ee9fa74afda3c5a7c4563500151  gas/testsuite/gas/xc16x/cmpb.s
+2c9832a9dbde30032fb81ddbd0c7e6f6  gas/testsuite/gas/xc16x/cmpi.s
+af0d2186664faa9760fdd9c9b96e6237  gas/testsuite/gas/xc16x/cpl.s
+fb689b8eb0e2d2948c81871e4437eb55  gas/testsuite/gas/xc16x/div.s
+39a90f3f13cb6ebd7bbf254f53b1f06e  gas/testsuite/gas/xc16x/jmpa.s
+393bd96fab3a174b68fa2a11698517ac  gas/testsuite/gas/xc16x/jmpi.s
+344ed28d4ba4d16c75b7c3b3804c222e  gas/testsuite/gas/xc16x/jmpr.s
+78fe1a285b5a9300fd6870afc8d7a624  gas/testsuite/gas/xc16x/mov.s
+d3d778fd4c04043cf34b85499dd25b44  gas/testsuite/gas/xc16x/pushpop.s
+568a5a3459bce6973680b30bac821450  gas/testsuite/gas/xc16x/movb.s
+84938c2fa9619b926b0cbaf47c0bad1f  gas/testsuite/gas/xc16x/movbs.s
+606f31c66b3eb70c5535a0d5d3c5269b  gas/testsuite/gas/xc16x/movbz.s
+c171a5c5b96d9090fb5c0abf5f9cdc06  gas/testsuite/gas/xc16x/mul.s
+94af5bd0dbfab715edd926f4b6386997  gas/testsuite/gas/xc16x/neg.s
+112290437259ed40e1d74b876e21f444  gas/testsuite/gas/xc16x/nop.s
+4027f70a69e5ee51af01107f742db8db  gas/testsuite/gas/xc16x/or.s
+39ebd060389b04ee9b451b65d48aabdb  gas/testsuite/gas/xc16x/orb.s
+191945b9ed36a3dd3a8350289f1eec47  gas/testsuite/gas/xc16x/prior.s
+f00b556c93eb249121fbe19f08083dbf  gas/testsuite/gas/xc16x/shlrol.s
+1b77424053fd88917ab756f4aa5b126b  gas/testsuite/gas/xc16x/ret.s
+06da10d686c4a6de64553c6208c87d1a  gas/testsuite/gas/xc16x/scxt.s
+deaa94ee201bb59e369f29f575a897d8  gas/testsuite/gas/xc16x/sub_test.s
+adc7510e48e55d117ea82b69328d15b4  gas/testsuite/gas/xc16x/sub.s
+fbf287f7ff274e5a84662f324814804c  gas/testsuite/gas/xc16x/xc16x.exp
+bd05476dae49fa2a7bbbf86e7a5c60a1  gas/testsuite/gas/xc16x/subb.s
+cc52ade9bcdf936042ef42b922f19105  gas/testsuite/gas/xc16x/subc.s
+49f7f3fcf66ba02d15f5ee099ac4625f  gas/testsuite/gas/xc16x/subcb.s
+6e499f9be2aff00b249bd7e2b8fa3454  gas/testsuite/gas/xc16x/trap.s
+1a0cbe2eff7809873f2845c05a13b284  gas/testsuite/gas/xc16x/syscontrol1.s
+76c8d37a5a3e663f33e7899beac2bcc1  gas/testsuite/gas/xc16x/syscontrol2.s
+396543dd8f02cd8bd81a9b0a8d8358b6  gas/testsuite/gas/xc16x/xor.s
+235321f531fc18a5f7156f103c618fc5  gas/testsuite/gas/xc16x/xorb.s
+9bd3cbd5df41ccea979773da1a06d25e  gas/testsuite/gas/xstormy16/allinsn.d
+7389542aad96c9680c2964c5585bd7e1  gas/testsuite/gas/xstormy16/allinsn.exp
+0578374b0231a4f3a76bceecd452af8c  gas/testsuite/gas/xstormy16/allinsn.s
+1e5f1e10cec9b3c80aebd2d85bf9f4ab  gas/testsuite/gas/xstormy16/allinsn.sh
+424739d1d4a83c8dd312ff4a255fe33a  gas/testsuite/gas/xstormy16/gcc.d
+34eb714356686c594ea470d037ff980d  gas/testsuite/gas/xstormy16/gcc.s
+2bab00917391fa8fe1dda5938f6ad558  gas/testsuite/gas/xstormy16/gcc.sh
+497560cde7dc6be28345811a294871c8  gas/testsuite/gas/xstormy16/reloc-1.d
+7b2f6fd28e4136ed51af9fa15bfbc87c  gas/testsuite/gas/xstormy16/reloc-1.s
+e2364d93d941960a57bdec88bca95f47  gas/testsuite/gas/xstormy16/reloc-2.d
+688ac14ef52d1f032c6e360b5e8d2607  gas/testsuite/gas/xstormy16/reloc-2.s
+feb6bdf09b3344bce0d6638dc2c34d25  gas/testsuite/gas/xtensa/j_too_far.s
+e93f7cc5b7c8f48bde2c88a708be04f9  gas/testsuite/gas/xtensa/all.exp
+febb407b84d25094205ffd8a82c8f3f8  gas/testsuite/gas/xtensa/entry_align.s
+047b105217cfb35f7b85b27982de9ee0  gas/testsuite/gas/xtensa/entry_misalign.s
+98754ef2b2ad4579570fc6cff9e5f465  gas/testsuite/gas/xtensa/entry_misalign2.s
+ab9272fb92c36f6cc58921de84c4a0eb  gas/testsuite/gas/xtensa/loop_align.s
+89c5bc675c0f6e4d485383908be47831  gas/testsuite/gas/xtensa/loop_misalign.s
+89136e7c8b9eff77fbcb58c94a361f37  gas/testsuite/gas/xtensa/short_branch_offset.d
+3050cc891aa6dc3b721df7adcc1e9e9f  gas/testsuite/gas/xtensa/short_branch_offset.s
+408cc9b5ff8576a0af9a6303a060a84a  gas/testsuite/gas/z80/offset.d
+34d65c390eed4096165f7b9589edf9a9  gas/testsuite/gas/z80/offset.s
+ed248a2dc8a185797dd5ccacae58d6bf  gas/testsuite/gas/z80/quotes.d
+968a4dd849f36bf8929291ec2ddb7575  gas/testsuite/gas/z80/quotes.s
+19605bcdf0c1bc02e7b3ccaa7992e7fb  gas/testsuite/gas/z80/redef.d
+15faccb7602127c05c2ae5fafe5a2227  gas/testsuite/gas/z80/redef.s
+fb0806d8887b68b7f863f42c7a45a645  gas/testsuite/gas/z80/suffix.d
+a738f0cca1753ef4b1c78743e366ffc3  gas/testsuite/gas/z80/suffix.s
+127d0c88fdb162e73221a8eef5fa26e0  gas/testsuite/gas/z80/z80.exp
+b49428eb4ba63d8dac5690c08355ebc2  gas/testsuite/gas/z8k/calr-backf.s
+6e4950abd9e763001ccc0bbc0babaf23  gas/testsuite/gas/z8k/calr-forwf.s
+0ac031eaf6f1afc7892973a81b274692  gas/testsuite/gas/z8k/calr.d
+541f7c8179a6e454326ce7b21bf8d7d2  gas/testsuite/gas/z8k/calr.s
+727ed5d9ccc2427f9b6f2342fc33cd70  gas/testsuite/gas/z8k/ctrl-names.d
+9af934d7ef4cc61120ac722bd3447044  gas/testsuite/gas/z8k/ctrl-names.s
+28483e5b3cf53bc3ba9a9901f6f43cdd  gas/testsuite/gas/z8k/dec.s
+c1e81cc8fc32752bf759d6cb3f4077d5  gas/testsuite/gas/z8k/decbf.s
+92c0157129bceb932434c0c3bd500365  gas/testsuite/gas/z8k/decf.s
+570b5ee7aa92ae18483423aeafaf4c54  gas/testsuite/gas/z8k/djnz-backf.s
+a3fe9dfe1ae7aa5b675bbaff933a172c  gas/testsuite/gas/z8k/djnz-backf2.s
+66429017c338bfe968a2f51527631319  gas/testsuite/gas/z8k/djnz.d
+bdae045f9b33f16fe1fa345ed1725848  gas/testsuite/gas/z8k/djnz.s
+b305ef7b6f6709032524f6568266ec54  gas/testsuite/gas/z8k/eidi.s
+17135d7105f96ceb57f7d2df1ceaf288  gas/testsuite/gas/z8k/eidif.s
+ed322b14e46464bec51ecb589c340dc5  gas/testsuite/gas/z8k/inc.s
+1b718e47798f82cc751183fb7bd1570d  gas/testsuite/gas/z8k/incbf.s
+5c236b616e7830fe0e367398a9126d18  gas/testsuite/gas/z8k/incf.s
+a23d0b32a9da2afdef954744dc776500  gas/testsuite/gas/z8k/inout.d
+bc612d839839a7edd8a6edb414fcaece  gas/testsuite/gas/z8k/inout.s
+e28384b5377f169a98c8b393b0bbf925  gas/testsuite/gas/z8k/jmp-cc.d
+31118c0ac719666949c9ca49fa349d0b  gas/testsuite/gas/z8k/jmp-cc.s
+bcee3c0623f07f1f28ed60253f4daaf5  gas/testsuite/gas/z8k/jr-back.d
+30a99e6ef53c4f50d1a33c8a96b24515  gas/testsuite/gas/z8k/jr-back.s
+c8d698d13dfb162e769f8802fd9b0d74  gas/testsuite/gas/z8k/jr-backf.s
+31155c237e04aee0c60487894f45fe10  gas/testsuite/gas/z8k/jr-forw.d
+1e22a5e25eae4439cc2d1642fe4c25d7  gas/testsuite/gas/z8k/jr-forw.s
+2e9d4668c8f7269b9d013e5f6acb866e  gas/testsuite/gas/z8k/jr-forwf.s
+e2882e18046d6c5e38967bd4a873a424  gas/testsuite/gas/z8k/ldk.s
+67a6618ad1b858a214e45638cf227a5a  gas/testsuite/gas/z8k/ldkf.s
+e2b5a96de5587e315d43a1211a64e88f  gas/testsuite/gas/z8k/ret-cc.d
+f23b1d6008927d7ae445999b7f5f0bf3  gas/testsuite/gas/z8k/ret-cc.s
+c459b675bd337045259ac66085cb35ce  gas/testsuite/gas/z8k/z8k.exp
+133e9f8bb4d12ac7e498f0ac5d0246c0  gas/testsuite/lib/doobjcmp
+5725f8e58e03bd6026f3e2721e1db22e  gas/testsuite/lib/doboth
+aad4965bf0067bf9fb71acc19f7877d4  gas/testsuite/lib/dostriptest
+bdf5e4dee40167a92f0a45965b0375b7  gas/testsuite/lib/dotest
+af650aab07403b5a05623713b613856f  gas/testsuite/lib/dounsreloc
+30764ced5c424e3c2c384059cbe2a227  gas/testsuite/lib/dounssym
+99d7a80a04b662e68bf9dbfc614dd000  gas/testsuite/lib/gas-defs.exp
+d78aaf1191d033531d00fa9888214ee0  gas/testsuite/lib/gas-dg.exp
+499042a4448e4b2d3bd2b2a1b0b5d859  gas/testsuite/lib/run
+b5426857b3e58149798dd251e77a0c96  gas/bfin-lex.c
+d5a51a64eca7beb01a128edf2182bc7a  gas/bfin-parse.c
+a55c89c2d81d0bd078f84a72e37653a6  gas/bfin-parse.h
+e55362c36117aedc864b26d0b66fe43d  gas/itbl-lex.c
+f0f87e8b5cc160553463295926da5a76  gas/itbl-parse.c
+5966d6d600ae7cc67fe42e4b3f1e3a30  gas/itbl-parse.h
+e51f7e9d9c76e45cd81941ab5ca79a61  gas/m68k-parse.c
+c0456d01ce1268c181673ad474216c61  gettext.m4
+50f273a131be64a756e9a169b351cd55  gprof/po/es.gmo
+f46813ccc77d38f64cee32da9c7abda0  gprof/po/Make-in
+954b09a7062a564dc338de22ef52c6e2  gprof/po/POTFILES.in
+20f0110fa4f21ba909001fab604f5df6  gprof/po/da.po
+b10dd48c7ec8a17861626551a0850fa7  gprof/po/de.po
+8848e3842362651eae9f353366756584  gprof/po/es.po
+f5bb818c34fb63c84baee189843dd5f6  gprof/po/fr.po
+d0dfd548cb9b9fdc35a2a356e070d91d  gprof/po/ga.po
+5e1ec51a9eb5b75c88f160d55264c0d6  gprof/po/gprof.pot
+63fb1d293826bdd9449f094b18b1d0b5  gprof/po/id.po
+161f4f55fce356f7094d855fc8e5b792  gprof/po/pt_BR.po
+d324bc814fd81a744f853d48ca2f8807  gprof/po/rw.po
+4bfa4f744bd5352a57d3945ff4e6d455  gprof/po/sv.po
+ecb9cfdafed941c2fecc6273f53ea575  gprof/po/tr.po
+d2b4a5cd00ec50f867210c346e5837ff  gprof/po/vi.po
+b909370fda89f8d24c2acf058239951f  gprof/po/da.gmo
+26b3966ca1bad19cd638876496c950af  gprof/po/de.gmo
+a3ed8413cf02fb892f8fdeed500458e8  gprof/po/fr.gmo
+c2dd592e4a716e26bb51448dcaf8f20c  gprof/po/ga.gmo
+616bc9a95f5476272628415a38c6b016  gprof/po/id.gmo
+e3fddb2aecf0942f7a13aa5348ddd11a  gprof/po/pt_BR.gmo
+6caef4d7466f584c8a1833f08dda3a5d  gprof/po/rw.gmo
+c59f15a7ade43350364ebb283c244377  gprof/po/sv.gmo
+e8a064faa7431c3994490313f73d4823  gprof/po/tr.gmo
+f2bbcb4e341ef2d23f02e6158f8af293  gprof/po/vi.gmo
+b167dc5dcf583c07feecea0f8003e647  gprof/.gdbinit
+3f3ffedafd08da474be78ae9c8fe0248  gprof/ChangeLog
+a160966de58352bbe3351ef84b65cc5f  gprof/ChangeLog-2004
+59394b05b4e06d2a4e779bf09e828a79  gprof/ChangeLog-2005
+7be7f2cec102ed4a91aba8985a704085  gprof/ChangeLog-9203
+d618facc3e8ce8bf3d02ba452e1be6ab  gprof/MAINTAINERS
+20c740891929bce1e75a8d0ee4db28ff  gprof/Makefile.am
+02c2eafabebcdca08d92b7bedc88b307  gprof/Makefile.in
+43648972d2edef291b8576a493fba059  gprof/README
+84c06350a03466660f0f691ed1220657  gprof/TEST
+6ad1234ccac48218eab0cd8e116d7a63  gprof/TODO
+046d16a1e33f92ae95fcd50a50821797  gprof/acinclude.m4
+7323b9d25d84510580fac5c02266870f  gprof/aclocal.m4
+1aab3c859f228d045070225cd1cf50c2  gprof/alpha.c
+2bfe60bc2cc541b929cb3f64105f7864  gprof/basic_blocks.c
+ee0e3acb0e0892f8e9735e43309d1060  gprof/basic_blocks.h
+30aca9200da4fa6229d5efd083798d7b  gprof/bb_exit_func.c
+fc7fb641e69604a9cdd9d0263ae48942  gprof/bbconv.pl
+cadeef23b67be4bb67efb8d51c426a84  gprof/bsd_callg_bl.m
+47abefab0d06c36ff4efa5a765eaeeb9  gprof/call_graph.c
+6ebce8994e1e2f30bedeaac98aff3bd3  gprof/call_graph.h
+105881bebbda333310d49f80c0b8429a  gprof/cg_arcs.c
+e8684da93359ad97b5c235bab5c5474d  gprof/cg_arcs.h
+f1a7f1c619b6dc62aa83aa81885fb58d  gprof/cg_dfn.c
+a1f9f8c6502a23c0f11956f1854376a8  gprof/cg_dfn.h
+d9770b41b5fd61d6faeb880ea8a8d266  gprof/cg_print.c
+8257153c65f4d66761b47d2407c1424c  gprof/cg_print.h
+5631324b20ef7e32c81c9bb9787abf88  gprof/configure
+9c3f532b9d0398f2c6911be9069172ac  gprof/configure.in
+eaffde77858c864625ef7fd8d703ff0e  gprof/corefile.c
+055f132a391e71050657a3e31f810399  gprof/corefile.h
+ca0923e64bbc5dbcd4dfe8a54a589331  gprof/dep-in.sed
+d6498bb2d3ec24087785cd109c215067  gprof/flat_bl.m
+609bbce6f5cedf6b0c8d25c3061b582a  gprof/fsf_callg_bl.m
+6c1ab6a674879a6f07f2d58769dac63a  gprof/gconfig.in
+2b39bf82ecbb857963231a1da2b79977  gprof/gen-c-prog.awk
+15df93a147b06f0f0d8cf05f2939ba4f  gprof/gmon.h
+10c90d83f8b7e9e9d573b9d3b21ef2ff  gprof/gmon_io.c
+e1675ab25ebac0e09bd5fd4c02e9a165  gprof/gmon_io.h
+9c88405f23d513fa40c0b39faa40ec71  gprof/gmon_out.h
+9b598b5d47ab22cadd606fa221571dfa  gprof/gprof.c
+69f35b975f3794ce9f5dd0760b3cf730  gprof/gprof.h
+83a719df50b11fea9f98fde5f803348e  gprof/gprof.texi
+78367cd648e22d38195bb574293e3be5  gprof/hertz.c
+24db7d8a9df2b0b4bf64f282fc3035a9  gprof/hertz.h
+ca4aeb07b5642d6b5cd9d58297532597  gprof/hist.c
+8ef42c28ad1d3eb78fbfbf6b4065c5ec  gprof/hist.h
+8e7cb3148759fab79735abba4996577f  gprof/i386.c
+ef6388d0e5a7e70ee1427652b90b17c3  gprof/mips.c
+0bb42d337b6996133bdf6169e03ab40f  gprof/search_list.c
+ccd80625f66fcff4341ebcbacedfd6a1  gprof/search_list.h
+a6a49008ca980aa22f867bc9feef0999  gprof/source.c
+86f60edfe93a832b6e36c6dbae241c0e  gprof/source.h
+3d044f6bbee20097b5cbbc34ab1fcda9  gprof/sparc.c
+1ded054093de910d9786c62bc4fe8cc6  gprof/stamp-h.in
+99977ab44164b72ade9c95f1a8aabdc0  gprof/sym_ids.c
+bf71f2868b226f6604b8123a885f06c3  gprof/sym_ids.h
+362df9e8a108d8f7128bc7fc0a17bd4a  gprof/symtab.c
+a9fc1179fbd6c0545c5d7619ee1c8109  gprof/symtab.h
+472837157167de9d11af3a972c08a4ba  gprof/tahoe.c
+2dcb06788585da35bb7d515ce11731a4  gprof/utils.c
+69a2b7efd7466aeadfda109d360f088c  gprof/utils.h
+1871509d1a1e6f08161042c4235357ed  gprof/vax.c
+5bbcdaebdace1394d7b9a9e664af5ccd  gprof/bsd_callg_bl.c
+dfb9db3b4267dc5cebdd0a2c84d7c0a5  gprof/config.texi
+6b0c66b9f8ad2f32fed0575bc4f10bbd  gprof/flat_bl.c
+845df53b262986e413ab8333f3b60463  gprof/fsf_callg_bl.c
+c095004e6660f037886bd467086b6765  gprof/gprof.1
+97b196b4a71c31c346bdac79d17407f0  gprof/gprof.info
+172b4c4099b6cdba0fc2cc4fabdf427a  include/ChangeLog
+59530bdf33659b29e73d4adb9f9f6552  include/COPYING
+bfbddb97d982b17ead77438a3e39527f  include/aout/ChangeLog
+ae9a5ddc0875226806a75d71b92b86a6  include/aout/adobe.h
+4422d348bb36da4d740bc54e0c9ad6a6  include/aout/aout64.h
+1c114e056a798c5903e8990d753ab005  include/aout/ar.h
+695d96120641c7143548d4a44fd354ad  include/aout/dynix3.h
+76631c25323f65b5001e710fa5119709  include/aout/encap.h
+ca0752eaebd88a1a8d30a733635e68da  include/aout/host.h
+e9475def89c7b448a2621cd554420a7c  include/aout/hp.h
+14c5f23e05dc2b318cd39ac37f3802b7  include/aout/hp300hpux.h
+d82993bf02befd5682dcd44b076ad991  include/aout/hppa.h
+ae3ad0b0d7fee250d99c10168b4415ee  include/aout/ranlib.h
+82d76b30b1d9c9cf6c2d87ecad66e49c  include/aout/reloc.h
+1ca28658abcad7d60eb8c7cdea9a82f7  include/aout/stab.def
+e99c59a5de1219513446f03723c90a41  include/aout/stab_gnu.h
+c3ae2f22fc1e70400c4418a3ad6f6a4b  include/aout/sun4.h
+7cad6f0d25bc2b763f417c5597dfce44  include/coff/ChangeLog
+3bad510fca185cf87d7b28b5e6bfe35a  include/coff/ChangeLog-9103
+0eae126d2322eae7cb85fda3b3c51d4e  include/coff/alpha.h
+ba1e7d1f5ed257158d5ce1495995b9ab  include/coff/apollo.h
+97343a0f0e1064cdae2854878798c8dc  include/coff/arm.h
+729600399e3cfb12f73b155e267a5d30  include/coff/aux-coff.h
+4e12ca7185f8d144173a617b0ac92b8d  include/coff/ecoff.h
+bf5b2dbb99288e63bcc4aa6d5fc77f97  include/coff/external.h
+46d03711f6f0939aa9523a094fdffafb  include/coff/go32exe.h
+4275dab863d75a6b49ecda9b4c37ca33  include/coff/h8300.h
+91500d53e9b51b394784be4e4bf5f7a8  include/coff/h8500.h
+41e91ec85d00ab0e8cd625e21d68879e  include/coff/i386.h
+3b0aef260c80bb67215de0dc4cd96454  include/coff/i860.h
+e70ee7eb497858f6370980c80946498b  include/coff/i960.h
+5deae24ffdc3e1b93412e1ece5a2fcb5  include/coff/ia64.h
+f58097d076b39fbf8c55ed35acc6b9ec  include/coff/internal.h
+09329bb0498e551cdd09bf38c56daf7e  include/coff/m68k.h
+fcb6774ebbf89db35e32160ac541679c  include/coff/m88k.h
+96eab139e18329604788f0c10077628c  include/coff/maxq.h
+47a9032db74c3fedae0b23f5a1200a1e  include/coff/mcore.h
+30bb1d9629c4218edbe49f7130ee170c  include/coff/mips.h
+8656c472a72618bd586255fadc6fa8b8  include/coff/mipspe.h
+a13d0ca109cfd6f4e1ea734b3637042d  include/coff/or32.h
+fbd91454d452fec3b85aa772a9764529  include/coff/pe.h
+08fbcf988bd369f711e603ce2467f905  include/coff/powerpc.h
+96b21213c0d25ea05b981fc1dfc922a3  include/coff/rs6000.h
+b050d6103fa249e4e7cdf4237b59d9d4  include/coff/rs6k64.h
+f7e3a4193c5b29821677e7dd0adcdf7e  include/coff/sh.h
+de7d4e6e42df84a83d7138b1dedcbac7  include/coff/sparc.h
+49952fda1e759e5aa659f8f78d7e0ba0  include/coff/sym.h
+250886881b64624348d6043a56bcefd5  include/coff/symconst.h
+bb610eeefc1dfc39b3e906fc4f2346ba  include/coff/ti.h
+77efd9ccf458c8539ecc9569b7715407  include/coff/tic30.h
+a34de85c5f5044db79154ca0a2e95074  include/coff/tic4x.h
+b9fa24f3cd1280d6f2052413b4193b97  include/coff/tic54x.h
+d69855973c384ee0192e5e4e21c45354  include/coff/tic80.h
+5958a33fd090d8406f641548559d87a4  include/coff/w65.h
+2b4a080b92706ac0f203568e4eaa6d69  include/coff/we32k.h
+99af63719b508b5fdc4a257d5ea0de80  include/coff/xcoff.h
+80c0c3a0d6335bbfd1d824da25a7b17e  include/coff/z80.h
+efc04a704e22032ea0d2d205894414d2  include/coff/z8k.h
+24516b717009640ce59780ea65675d4f  include/ChangeLog-9103
+d618facc3e8ce8bf3d02ba452e1be6ab  include/MAINTAINERS
+de46742edca3a9276eefa5ae8fdee5eb  include/alloca-conf.h
+e1083a1fae50362cefde0b1f620e9401  include/ansidecl.h
+7b9d154d48cbd37f011ed584093866ab  include/bfdlink.h
+c8143e00f9c28e4703a92777c93bd666  include/bin-bugs.h
+b6e1fac26f93147f8011414af5669be7  include/bout.h
+aa5d58a6513bfe093e8b6186ffbbbc90  include/demangle.h
+d17e985688f8674afac7f5f69eb6599e  include/dis-asm.h
+bf491c715785399f572f97dec7b6241c  include/dyn-string.h
+e3351927fc3d8abd8345b9e8e239cc73  include/fibheap.h
+bbdaba0c22a6d674c54ef02f26e33fa9  include/filenames.h
+02627b4b0d54316ab7b3b2c80e1925f9  include/floatformat.h
+7d6baaede380aa3344526a4bbf8a294f  include/fnmatch.h
+b2cd17a9267bc2e92df461d3170cb15c  include/fopen-bin.h
+87444b5c85b3c2bc734f8b86157b15db  include/fopen-same.h
+2f3ef0265ac665d61a8721a78c47a79f  include/fopen-vms.h
+c6c79c7650e939987e61782932471d6f  include/gdbm.h
+2df953364d736c4cc07d3f3b0ff63714  include/getopt.h
+c7907270bfd5633f14250a01b762459e  include/hashtab.h
+d89699ccd4afc2579ab5bf69b57a688a  include/hp-symtab.h
+97a8767b7f95bd5bb7207d0215541d10  include/ieee.h
+daaa493b995a3309cb132c31ea9f00cd  include/libiberty.h
+ab862fcf8a47a603ed95984f9a214e7e  include/md5.h
+85efe50116a443b4459eb4219cafe6e4  include/oasys.h
+44b3dbe9efa457af0cf4f032193dd1f5  include/objalloc.h
+5fd93204de68ae19148e1cb24c4be9f3  include/obstack.h
+10cbf87ea52bafe84a696ec172e072d5  include/os9k.h
+b212dcdaf1121bd8a14b03ebb2ce5ce1  include/partition.h
+ce441968fb1b5f3f68ae7afa86ad0476  include/progress.h
+4a10474f2f043d12cb8c292f1d1cf002  include/safe-ctype.h
+ffc879400e93c3be7e8727262ff65700  include/sort.h
+dfaa5839da11dd006023e97a2ab9fbaf  include/splay-tree.h
+c665cdb0d6c3bfb5d86841b168a2d1f9  include/symcat.h
+bbf5a6a7b70efde41e703f72d9732f81  include/ternary.h
+9e4da3ee24c6f11a47fa7d5cae9a03d0  include/xregex.h
+0294cecbb1f66d640ccba3a5d862d05b  include/xregex2.h
+33d7d862df35bdf707fd756625638e7f  include/xtensa-config.h
+03811f8e9b017b7b37906f68809fa334  include/xtensa-isa-internal.h
+905eeb036a38e82de00c13929c6c520c  include/xtensa-isa.h
+aa1c313c15310b1541d17abbb3873596  include/elf/ChangeLog
+98f9c5b892b53edff47e277ff7d497f8  include/elf/ChangeLog-9103
+b58e070600ebd49e546a44c9a02b4433  include/elf/alpha.h
+7d6deb8bc79137df149e5e38f4ff6079  include/elf/arc.h
+86db62c4e45c2684fdd6f9dd6ffe6779  include/elf/arm.h
+85561a9cf2b403ec25bd138a19fd492d  include/elf/avr.h
+53604e89830fe7d85e0a636c5ca6d9e6  include/elf/bfin.h
+d6144226c505beb8be30d8c6a62453f3  include/elf/common.h
+d924ee9028ad17079d39a235defab8ef  include/elf/cr16c.h
+427e00afa9dde7c6115399837c1c3c75  include/elf/cris.h
+5dd7586b87f24bbd4749d19486bd5300  include/elf/crx.h
+bc79fbb9f0e87729313cb97592c79c03  include/elf/d10v.h
+bb5bd273174d8bd520076ea66a3bc2d3  include/elf/d30v.h
+bfc96913a28a31449092f62688a79084  include/elf/dlx.h
+65f0065f73a3caaf1dd6f9cb28356d9c  include/elf/dwarf.h
+1e0a7fcc4789f327359665ee9031ddfe  include/elf/dwarf2.h
+3de0c257465bf17f6d6f590cc010d20a  include/elf/external.h
+46a012edb3cfe8db6e59ff9d1036d10f  include/elf/fr30.h
+e1d390cfe5a8a79ec58062ef55ef3ed9  include/elf/frv.h
+88eb11a3df1f08642f138865e8f66e4f  include/elf/h8.h
+0f34611ef28e4b4b042a304b1a5612d6  include/elf/hppa.h
+6f1c67c88e221bd0d385ecfd473dce06  include/elf/i370.h
+c59da055f495beaa2c41d3c619211912  include/elf/i386.h
+0c701d120f36661160ae45dd063f6be5  include/elf/i860.h
+f5bb1235e968501b5320183ee92dd0ed  include/elf/i960.h
+a817cd5093d97eeb48f2bbe8880fbed7  include/elf/ia64.h
+5d38b70c541da4213c8a15f441cd61af  include/elf/internal.h
+065b0a6729f94d495ea2ad655c02c2e9  include/elf/ip2k.h
+cb5cd7dcdea1e5c68c68f20500290350  include/elf/iq2000.h
+cb39c0ed20eec57eaa682f6eb8a5ebbb  include/elf/m32c.h
+3df7375253d6ae2c25fed8c53763417a  include/elf/m32r.h
+cbefa6ba736a3611d255754284ab9223  include/elf/m68hc11.h
+cd7eea846711e0008a21a2779f7cd13f  include/elf/m68k.h
+f2dc7fdfa778cf42d76a6906ad6a1396  include/elf/mcore.h
+5a2b9fce565de227a10f057d9562a320  include/elf/mips.h
+5e7d7fef55a18f51d17ba9065aaa84c0  include/elf/mmix.h
+d47d228e2347d084861d5f598ccaab01  include/elf/mn10200.h
+2682ffd8529970913c7fe2d81109c318  include/elf/mn10300.h
+3666529d279f69fa8a487c2efed2120c  include/elf/msp430.h
+e5f6a2d8b0999a623ed80ad96097711a  include/elf/mt.h
+67c44a12efec004686c5da82c283fea9  include/elf/openrisc.h
+77f09d73d2331ef33a81df01367e759a  include/elf/or32.h
+4e3af9766a70428a794053db9ac26982  include/elf/pj.h
+637670463cfa027b48bbaea7117fda88  include/elf/ppc.h
+29c4a93c369bbf45f588d48b35631b4c  include/elf/ppc64.h
+5d8fe9f011917da41a7c0b96ea751bd0  include/elf/reloc-macros.h
+b163e0ddc4c8cceb00f746535ecf0785  include/elf/s390.h
+bd4fb4257fe6081aac1e4d4403106504  include/elf/sh.h
+3d51236a10c7eeaf2af6abb280004561  include/elf/sparc.h
+a780bdceaaeed529808d9a84f3b7cc6e  include/elf/v850.h
+0ae089c7740d126d10cd9ab688b94f28  include/elf/vax.h
+d02b9a35256696e7b25dc444e121bc26  include/elf/x86-64.h
+09e0b6ad16cf4079a52a3009ca040f1b  include/elf/xc16x.h
+00e34077e494d9c3e6093746cd6a25b0  include/elf/xstormy16.h
+f8dfb352f02a0064d1876ddfeb54b597  include/elf/xtensa.h
+3d21ed80303ede2a6c6004048be2759e  include/gdb/ChangeLog
+cdc8f13f6671bde845141d5688e39b6b  include/gdb/callback.h
+4d601d2080199f02e64fc007082954d0  include/gdb/fileio.h
+f82f523d8986bd2629735dc0168d23ac  include/gdb/remote-sim.h
+cffa1864cac9a521d4e676cbfccaec68  include/gdb/signals.h
+ce7a140e30b81d1a5ec659db7c1174a8  include/gdb/sim-arm.h
+d20f0550570881a6fe50970fa97c59ef  include/gdb/sim-d10v.h
+c921d95bb01b346a3eb54ca76d013286  include/gdb/sim-frv.h
+afea2e92f0da83e7b29f93cd2d28c2ca  include/gdb/sim-h8300.h
+6274568e2d5b5fcd4451bdc939f6bac0  include/gdb/sim-m32c.h
+9c0b41fe3e894593b06157e6d7a18c2b  include/gdb/sim-ppc.h
+270746844151841e59aacde79286278c  include/gdb/sim-sh.h
+85854dd656ed5fbf086b7fdb5e950359  include/nlm/ChangeLog
+54cee2a0525584cecf2cf268ee88175d  include/nlm/alpha-ext.h
+7a4e6e5f18929594dc5b0d6ef5858e2f  include/nlm/common.h
+2393dc0b908a7ecf55b9b02616df17b7  include/nlm/external.h
+270e90217aa54f2a3c538778c3dc1c72  include/nlm/i386-ext.h
+99606cfc1f9e1f099d5d64690d7fd074  include/nlm/internal.h
+f8585e7636d4318d333971cae5fa1426  include/nlm/ppc-ext.h
+80e4ebf217e787161fa6662bcc0f81d4  include/nlm/sparc32-ext.h
+bae76a92287681c9cad62a49fe8e3ff3  include/opcode/ChangeLog
+422ec9ceff6284c1c213760d8d847ace  include/opcode/ChangeLog-9103
+86b8a7bdbef8a292cda1c038821f7ee7  include/opcode/alpha.h
+5c8e5bf2038b8f9ae20bd546d37f1ebf  include/opcode/arc.h
+67be762a1ead718548e8ca5b0733f8e3  include/opcode/arm.h
+1f9d6b44af948f1e572d9493b74f0bdb  include/opcode/avr.h
+78416be72b2f3dadf47cd3629fc3b173  include/opcode/bfin.h
+af8bccb33b7ca465db204a4eb95c328f  include/opcode/cgen-bitset.h
+2d8d653463e6fa90a098ffe1228a871a  include/opcode/cgen.h
+faedfd0e7f1562d4523e8bb320c48de5  include/opcode/convex.h
+bde1e60ce5ef4b6efcad85a727b04a8a  include/opcode/cris.h
+38dea709f86fae45e9b13dfb9448154f  include/opcode/crx.h
+0eb4c8cbc9ce9f9d0be1fd9ec84867fe  include/opcode/d10v.h
+414159e130a7e40f2cd0b7741c53c536  include/opcode/d30v.h
+097c19fc9fcd748d0a3256728486156b  include/opcode/dlx.h
+6b8b5ae78bc320893b2f85920fe84830  include/opcode/h8300.h
+75c87b41820eb6716f9b6f82921e5bb7  include/opcode/hppa.h
+e2abffb49369201c7c30170378f798f2  include/opcode/i370.h
+6c0dd18a85c370a0d659533fe103c4b4  include/opcode/i386.h
+0a40ce915904333da0f263d7efb46656  include/opcode/i860.h
+67e4cee6956b5fca66ffac36db6c73fe  include/opcode/i960.h
+0908e763c96961ff41e7185d24f5cb4a  include/opcode/ia64.h
+95ae213b1c61ddc5d456c961e032fab0  include/opcode/m68hc11.h
+5dd2f1bfadd16d1695e98ce3a0f1a14c  include/opcode/m68k.h
+0888ff065c912ec6e6325fa900a63771  include/opcode/m88k.h
+3be129ef66722d6cabc1f6288b9f8924  include/opcode/maxq.h
+2c4a998b53336ca0e65fe674b042aad5  include/opcode/mips.h
+23cc30640f22293a09d4169f7dbcbb9a  include/opcode/mmix.h
+92d353be1492265b3b61d72c88226d1b  include/opcode/mn10200.h
+b8426a1dcde081d18d4fe2d6a6b297c2  include/opcode/mn10300.h
+0a0c7439c713a0808e3f8c0d56bb881b  include/opcode/msp430.h
+d705f2b7070a6d7ddcfe31e50aa152bc  include/opcode/np1.h
+33fd5191bee7756176d0e10a4a419ebb  include/opcode/ns32k.h
+4a7ef121dca3c8198545a2296e0e1222  include/opcode/or32.h
+d88ba58f65e451dc8f863aba1874df81  include/opcode/pdp11.h
+77e78f430ef39ad52f45418f89b01f18  include/opcode/pj.h
+3c4f6d4e25e3d4c1bc66709f2299ba01  include/opcode/pn.h
+f6f7518538e2f6f2681aa90324efae78  include/opcode/ppc.h
+fc84f44059a03947e686d95420baff58  include/opcode/pyr.h
+a06319deddb1d7ef1575dd59703442af  include/opcode/s390.h
+be55f06fea077b43aeb73ef735ecc430  include/opcode/sparc.h
+c69e19287023c929ac20ee5311acfadc  include/opcode/tahoe.h
+99017c8f58643ff84c7dafaed00ff781  include/opcode/tic30.h
+c8a4c1ec48cc797787eaba11a19132c7  include/opcode/tic4x.h
+96cf03df8866b7e0b91b3e21019ab9f3  include/opcode/tic54x.h
+b80c748813b723b5bd9c3e89696060d2  include/opcode/tic80.h
+6b80a1f237267d6badfb4df07569e813  include/opcode/v850.h
+187cfeb91ed5171f7e834812d8110288  include/opcode/vax.h
+aded5875c5d5830de6653181e8ced19c  install-sh
+a659b8140ab478ee70a8b9dd3107a7bf  intl/ChangeLog
+c9f4cc7504714e306052d52b05b0efd1  intl/Makefile.in
+ee2ff1244c36ed348643bd1a51001f4f  intl/acconfig.h
+6e16646448de7fab92862eefbdcca179  intl/aclocal.m4
+0710e0a5c501f032598130a8fc0069e6  intl/bindtextdom.c
+8e31fab78d95ac2db71ca34bcada77f7  intl/cat-compat.c
+bd51dd1c7684c9f15ee4532bfd7bf12f  intl/config.in
+2f9be0885ee6447a29fd0550b52c40aa  intl/configure
+eb4685d54a1e3da00cab275a5c3fa6c4  intl/configure.in
+e621b9c784f8b6f8e54096dc464b8b27  intl/dcgettext.c
+23e8fc1fbf0022b0cbda372c5e631081  intl/dgettext.c
+fab78d77ac624215ba222a38886c1f2d  intl/explodename.c
+b80c32da73708977c1a26e60b015d510  intl/finddomain.c
+84416a8a5c7f0c189f26a77841a80956  intl/gettext.c
+17d3b7e1a2192a733780c71ba397650d  intl/gettext.h
+f888ddf471aa41444286fd0bd0d4842f  intl/gettextP.h
+dba393cd00c8fa4f9bfdb57b81087845  intl/hash-string.h
+f9826ac3d31c628442c971af191bf72e  intl/intl-compat.c
+a97c1ddfbda3297f08c99fb2d6c2172e  intl/intlh.inst.in
+2daed75cdcf5872ea943c3fb99a78a92  intl/l10nflist.c
+3fc02347b8a66df985c2ea16455c40f8  intl/libgettext.h
+2572f01239e35e6c6006f19b497c00e3  intl/libintl.glibc
+44d7e717f81a39af7573d61e794f8f19  intl/linux-msg.sed
+eb93e85018d3b228375d000c2f5628a0  intl/loadinfo.h
+31b3a5e8396953cc0d40bcac52f7718a  intl/loadmsgcat.c
+5b032e5f01618dd509685e541156ee83  intl/localealias.c
+d714f9d45da47ffa59d57fb12a6de30f  intl/po2tbl.sed.in
+9e30d37d49792f6431aea5ec11ed7251  intl/textdomain.c
+ea53060a2291e8caa1fd98ff4bd47462  intl/xopen-msg.sed
+2c75cfcc19fb0ff973bddcbe5b567803  ld/emulparams/aix5ppc.sh
+2e897117043ad88f2c7bcf35a606d76b  ld/emulparams/README
+afb6d2ea1df283801db141ab81692a24  ld/emulparams/aix5rs6.sh
+169b54f770bbc257d39ea459f48f2b00  ld/emulparams/aixppc.sh
+ebbb1119f11559e515e510c9587c780a  ld/emulparams/aixrs6.sh
+29fda341c48f8b90fbf258b6d475867e  ld/emulparams/alpha.sh
+91e308e524924e29bc43412f89a2fead  ld/emulparams/arcelf.sh
+4fc820937511851ed6b028b98f4dd1a7  ld/emulparams/arm_epoc_pe.sh
+a061559a038d4e5b1efe929656c6eabd  ld/emulparams/armaoutb.sh
+a419e5e9b54e9511306099d0f8ddf0a5  ld/emulparams/armaoutl.sh
+d7a431dc9e8878378179623ccf9bfb47  ld/emulparams/armcoff.sh
+9fc7d44a714a0e7cf01676ab0130fbcc  ld/emulparams/armelf.sh
+85031385ab0663ce2a9113945a9e1185  ld/emulparams/armelf_fbsd.sh
+b9edaf585105ecd102c03fb9166ed260  ld/emulparams/armelf_linux.sh
+a484beb8ca797a6c5dd904ed95eccbc5  ld/emulparams/armelf_linux_eabi.sh
+119ebcb118b0027e39fb9d7feb197588  ld/emulparams/armelf_nbsd.sh
+32fd85a32dc4942e2660eb9ef1ddf981  ld/emulparams/armelf_vxworks.sh
+2b5ea6fb0c548fe7f0a3903f843eef0a  ld/emulparams/armelfb.sh
+908d061ee41ccefcae22c23644d0bcf1  ld/emulparams/armelfb_linux.sh
+de800cd350aed911b0515f2d8c6676ba  ld/emulparams/armelfb_linux_eabi.sh
+31ef6d790e43f46c99d521132f670b0e  ld/emulparams/armelfb_nbsd.sh
+0f7bcbd8a14e3f6392834cf18fde47fb  ld/emulparams/armnbsd.sh
+b1a8e9d4670918928bd7049f55fccb33  ld/emulparams/armnto.sh
+ff2ce537e371814bf3f990e564efd966  ld/emulparams/armpe.sh
+6245fea074cea5e8933f4439df1e0086  ld/emulparams/armsymbian.sh
+b43ebf2024f16330205ffacd4149e9c5  ld/emulparams/avr1.sh
+894e2730f5a240498ed5c6d514a674a6  ld/emulparams/avr2.sh
+f979af3ccec9c7dc760e3b652c6803e2  ld/emulparams/avr3.sh
+c0cbd28bdccd104e44884d018c0da827  ld/emulparams/avr4.sh
+b53abea3c5590b4a061fa061ff66baf4  ld/emulparams/avr5.sh
+952a42f25f0c600800930fcc61a54a02  ld/emulparams/bfin.sh
+14c25a651ee75f6ff6e2c101836342fb  ld/emulparams/coff_i860.sh
+d47b82239f4ac8c14355a94378cf39b7  ld/emulparams/coff_sparc.sh
+2106e6a6c645d248df9265a8408980c2  ld/emulparams/crisaout.sh
+08af9cd5ea8e2ca6884b86d4505768b0  ld/emulparams/criself.sh
+60e6283f669f836a75d5ef5a1afbb333  ld/emulparams/crislinux.sh
+0a5a4e98354a68189a2fd28cad8a232e  ld/emulparams/d10velf.sh
+17e84454d13546953021ef10207da62f  ld/emulparams/d30v_e.sh
+094a88671f30762402b9e5c78e4e3e9e  ld/emulparams/d30v_o.sh
+b904add983e2aa12033b4c8812a73cb4  ld/emulparams/d30velf.sh
+162d7cba8938432d260e1e9321bf43ce  ld/emulparams/delta68.sh
+6d749732789cc055cb175e190804ba9e  ld/emulparams/elf32_dlx.sh
+31ea1dfe2795e2733e54668f2b7838c3  ld/emulparams/elf32_i860.sh
+3d9de5e9ff61c57dfe7cae3508863c7f  ld/emulparams/elf32_i960.sh
+fe5290708181c23d120703de0a5bbbec  ld/emulparams/elf32_sparc.sh
+b4bb140a4f6f1e022fcf40cb7421607a  ld/emulparams/elf32_sparc_vxworks.sh
+c43ba59a99cabe627688a4574f847dd4  ld/emulparams/elf32am33lin.sh
+05646cff1a873dbba672d25ce173b418  ld/emulparams/elf32b4300.sh
+e3f2406033e7bfb77d614616f25cc36e  ld/emulparams/elf32bfinfd.sh
+5f4f700eddeaf025f546e094ea4ae8b6  ld/emulparams/elf32bmip.sh
+ebb327394fbd240ae0e022a719fb25ed  ld/emulparams/elf32bmipn32-defs.sh
+ba98fe0026232ba31e8d084ed1571e8c  ld/emulparams/elf32bmipn32.sh
+3f6bfa22dd4022cbc1b663f666405094  ld/emulparams/elf32bsmip.sh
+7bf0051b2c15332bed387e0a7ede2ac4  ld/emulparams/elf32btsmip.sh
+a61016f3414f136f2bbbe14e96d40996  ld/emulparams/elf32btsmipn32.sh
+ec222a2a5a57e2a67110a4a98903dc52  ld/emulparams/elf32cr16c.sh
+fd0c54397da835fb1e4a9c1389ee368e  ld/emulparams/elf32crx.sh
+030179c4b8058c64aac3f9eb16c049a2  ld/emulparams/elf32ebmip.sh
+56b067e69b4d749cfb7161a91b9900eb  ld/emulparams/elf32ebmipvxworks.sh
+add91307fb4132685623c0895d6c9cca  ld/emulparams/elf32elmip.sh
+3c7a2a63628dd038dc17fde980df3f42  ld/emulparams/elf32elmipvxworks.sh
+00b45f46bd67a7d4ae138babeba85572  ld/emulparams/elf32fr30.sh
+b58686953b4cc0191e2f908ce4692771  ld/emulparams/elf32frv.sh
+b98701747ebf75cc016a35c72140cb87  ld/emulparams/elf32frvfd.sh
+8c345571cb4a1d16f3335639204f1b3b  ld/emulparams/elf32i370.sh
+cd82b5e2d7c9915907c7457dec5b0563  ld/emulparams/elf32ip2k.sh
+9eea5c0d1c18145d794b7f187084ac22  ld/emulparams/elf32iq10.sh
+d0bd318d1c6b688422d4a07dba936c6f  ld/emulparams/elf32iq2000.sh
+ecd586db2a0021421401571e654fea1f  ld/emulparams/elf32l4300.sh
+61e10da892c21325ede0f1bee9358ad0  ld/emulparams/elf32lmip.sh
+6be422cbcb87234b6276db46559955e6  ld/emulparams/elf32lppc.sh
+998eaabe110ee3366e804a0f4368d310  ld/emulparams/elf32lppcnto.sh
+0f1aa1d48d4fd1423bd74e566a9c774d  ld/emulparams/elf32lppcsim.sh
+39123a7e34db239ef585e08f2ada9159  ld/emulparams/elf32lsmip.sh
+c85d16c23057685613ac3c770175421e  ld/emulparams/elf32ltsmip.sh
+6524015c1e2e591fa0bb19f87f93151a  ld/emulparams/elf32ltsmipn32.sh
+e4e39855d3ec1ad061c91ec9bf481016  ld/emulparams/elf32m32c.sh
+e1fb9292ba0d45c5770bddcb03610080  ld/emulparams/elf32mcore.sh
+1f512f809ac3a1ed6a7a3d8821047e83  ld/emulparams/elf32mipswindiss.sh
+0a0e5fc436585d0d93dc77749b2fb87e  ld/emulparams/elf32mt.sh
+ac14b564116013db470c05f33e16140b  ld/emulparams/elf32openrisc.sh
+78e0e24507efe023e8d64ee2d0c6c395  ld/emulparams/elf32ppc.sh
+e670625a198b1d6ef4813cc1131ef31b  ld/emulparams/elf32ppc_fbsd.sh
+9f3ac48785575311549a0393cb08895a  ld/emulparams/elf32ppccommon.sh
+e96923ed2cfd947005b4f2e01656094e  ld/emulparams/elf32ppclinux.sh
+becbf646dfc092bf8464a654744c5f90  ld/emulparams/elf32ppcnto.sh
+e6dc727c9b2f7c7a71c6076d46912861  ld/emulparams/elf32ppcsim.sh
+ff63cb22df9592464516a4fb36e511a6  ld/emulparams/elf32ppcvxworks.sh
+8867d4ea5d7d7546f36d164f62198e3b  ld/emulparams/elf32ppcwindiss.sh
+f2d1e508651fc51a1a2b8f3839150103  ld/emulparams/elf32vax.sh
+4cc51c5f6e2f22d93592123878d6d596  ld/emulparams/elf32xc16x.sh
+71bb149bc0e65a4b9406db498cab78c2  ld/emulparams/elf32xc16xl.sh
+bc0f23b2efdc94000232c60dcc8e8d6a  ld/emulparams/elf32xc16xs.sh
+4c1ee8cfc760d7253ebc5d80dc3650ef  ld/emulparams/elf32xstormy16.sh
+e4eac9cd4b5d20d863e48be5936417d9  ld/emulparams/elf32xtensa.sh
+2564966d912abf8b0d19c0b6d96db74a  ld/emulparams/elf64_aix.sh
+f9b1cf322765d7c979d70fe7381764b1  ld/emulparams/elf64_ia64.sh
+a04b0f94c285057c4328da812b709ef5  ld/emulparams/elf64_ia64_fbsd.sh
+eaa6922816d47c9ad6ac51c6c20aae1d  ld/emulparams/elf64_s390.sh
+6900155fe942d6d591aa4ee1300e7773  ld/emulparams/elf64_sparc.sh
+b3fd407c41289e537f36340b67d41a82  ld/emulparams/elf64_sparc_fbsd.sh
+154eaedc3bc694ff9bd984fa7364ace8  ld/emulparams/elf64alpha.sh
+05b020ea8c063d832c43502bbf25a583  ld/emulparams/elf64alpha_fbsd.sh
+5ba3708f410eee98bd62896166a9f542  ld/emulparams/elf64alpha_nbsd.sh
+b4f75dd78836305bc94b395ec8baddd3  ld/emulparams/elf64bmip.sh
+395066511242257f579d142575823678  ld/emulparams/elf64btsmip.sh
+bb00eea7dc8687cf41e51223c177f508  ld/emulparams/elf64hppa.sh
+d969989e47badd85ab444fefa84656eb  ld/emulparams/elf64lppc.sh
+5b2cfd0917902083166727b03fbd07c2  ld/emulparams/elf64ltsmip.sh
+70998762b3bccc7692630ecca4e75b83  ld/emulparams/elf64mmix.sh
+c618c365ea079963a57f9b99eab29954  ld/emulparams/elf64ppc.sh
+261c3ee23f1baba72638358c8121b622  ld/emulparams/elf_fbsd.sh
+818576043bd1457cb0cd6f23e488c128  ld/emulparams/elf_i386.sh
+18fb128b2bcafb373590c61771e41d57  ld/emulparams/elf_i386_be.sh
+1c6b52c4bae8d1ed80163d07f5026aa3  ld/emulparams/elf_i386_chaos.sh
+df1ac3a0c604e72b025d24417ca1444a  ld/emulparams/elf_i386_fbsd.sh
+ad494b6673b84ee39ef9413399901332  ld/emulparams/elf_i386_ldso.sh
+f35af80edc93d336da7fab164376e698  ld/emulparams/elf_i386_vxworks.sh
+4edec40ba8be6947dc684fbb8c4bb9ef  ld/emulparams/elf_s390.sh
+2a643f4228bb39fb377b4d368620f534  ld/emulparams/elf_x86_64.sh
+f9c682042feddeb572b6e9571bdf4c90  ld/emulparams/elf_x86_64_fbsd.sh
+f32127527a05a962f2608260b6989d2a  ld/emulparams/gld960.sh
+9e9a98ed6d60b81d3c02fcaff209e48e  ld/emulparams/gld960coff.sh
+7ee53d75ac723a2bc12d0dca3a197d75  ld/emulparams/h8300.sh
+c45b1155500f234a7127a6fe00f5a8c8  ld/emulparams/h8300elf.sh
+38e60b173489d53692974c5b6a04cfb9  ld/emulparams/h8300h.sh
+a6bc102b9076b326ed7f5d455a28ac90  ld/emulparams/h8300helf.sh
+6ddecfbf7937f059d93259f716d61d6d  ld/emulparams/h8300hn.sh
+4a7f2b46d388252aabee2d2c52f6dfb8  ld/emulparams/h8300hnelf.sh
+f9d708a8c553ed19183a1f638fe633b4  ld/emulparams/h8300s.sh
+7034b51cf218f8977ba97e1131ac50cb  ld/emulparams/h8300self.sh
+12989f4121fea14e6fc290662753febe  ld/emulparams/h8300sn.sh
+29871377f4c035e1e74d454a3e62272f  ld/emulparams/h8300snelf.sh
+7ff8cec0e8d6c8ff1e1c87372ebdbdb7  ld/emulparams/h8300sx.sh
+54bebec14f0a5d933b8b2ee4e4d6d660  ld/emulparams/h8300sxelf.sh
+15655df939874c463eff61983c973c90  ld/emulparams/h8300sxn.sh
+b870624012b66c296b1928232395b5f9  ld/emulparams/h8300sxnelf.sh
+b3b0d0be943fd5517fbc171778f63de0  ld/emulparams/h8500.sh
+6dabd6ffde56b2445c38969243d3575e  ld/emulparams/h8500b.sh
+6d71814235108ce0faa35813c1959495  ld/emulparams/h8500c.sh
+e8b9174ddad38feceda59af2dbec0d09  ld/emulparams/h8500m.sh
+f0a112f331b4c6bfbfbb1895cdd63eff  ld/emulparams/h8500s.sh
+54b7e862187330b80b6314b2c1c1b05e  ld/emulparams/hp300bsd.sh
+4bbb1b67f14d1e124683aecbd19e69cf  ld/emulparams/hp3hpux.sh
+a8de9e9aa620111721c2c24065260198  ld/emulparams/hppa64linux.sh
+7af6e1ad74bc71f864b9c04412f1bebc  ld/emulparams/hppaelf.sh
+b1261c07a94605f30fd1c117135ec1e2  ld/emulparams/hppalinux.sh
+191811b4e0d736f8cea0156126b8a8cd  ld/emulparams/hppanbsd.sh
+640bc76878cfd838b483c27bd71015f8  ld/emulparams/hppaobsd.sh
+0537af9ab3953ed67d099959cd4e181c  ld/emulparams/i386aout.sh
+5ed1f528a6752f2ed12d48977cc43da1  ld/emulparams/i386beos.sh
+ca54144cdb2703b51ceb13bc03e36c83  ld/emulparams/i386bsd.sh
+d05a50688386622b8ad4e4c1f2286662  ld/emulparams/i386coff.sh
+8d213758c362dee91c9aca3fe2521321  ld/emulparams/i386go32.sh
+da7411bcf5fc48e4739d94a108c64f56  ld/emulparams/i386linux.sh
+0836ef573e493585b1be148b9d9e9d67  ld/emulparams/i386lynx.sh
+fdc6893b38868d4006e1d62edc5a09bd  ld/emulparams/i386mach.sh
+4f78fe09aec35c1feff2c59a43fab6f7  ld/emulparams/i386moss.sh
+95e2973323b32d1896c6e19758582b09  ld/emulparams/i386msdos.sh
+fd44b883579ad95580bf3cae88bd91b4  ld/emulparams/i386nbsd.sh
+e218a69660b03254145c3fc6c2f55c59  ld/emulparams/i386nto.sh
+5694a9c90e33d7739430d1846dc4c0a4  ld/emulparams/i386nw.sh
+01fcb96b8e4568d5e2b4e8d9b4433add  ld/emulparams/i386pe.sh
+d5ffd51271de207e2653928e4b120812  ld/emulparams/i386pe_posix.sh
+8c809011235ff8bd5e0a1d9ba085ee46  ld/emulparams/lnk960.sh
+6435fc04027f0caf3844f0d3d6e88fe3  ld/emulparams/m32relf.sh
+8a04c8c96892a2250324e72544743200  ld/emulparams/m32relf_linux.sh
+4caea040768fd3f34eb29f616a64f6d1  ld/emulparams/m32rlelf.sh
+ef322baa3cadee776415875de38be1a8  ld/emulparams/m32rlelf_linux.sh
+049218c3ff85b972beee9ab88e1b9fd9  ld/emulparams/m68hc11elf.sh
+cabb1e9932de933a5d006b14e50f41c3  ld/emulparams/m68hc11elfb.sh
+99f9a9c7dbc4e5d16cd7c346de7c8daa  ld/emulparams/m68hc12elf.sh
+e6b6fc6ccd03411b402f3a6072588bad  ld/emulparams/m68hc12elfb.sh
+2c03157a829a79d93b2ca4b5005f032a  ld/emulparams/m68k4knbsd.sh
+173818cf70910edb066aa57cbad66829  ld/emulparams/m68kaout.sh
+00b17c39c4dcf1058751dc07f30dbea3  ld/emulparams/m68kaux.sh
+f0580d8a518bcc77032874c9cb72809d  ld/emulparams/m68kcoff.sh
+a8048fabc8150fe4c5a77f9394502989  ld/emulparams/m68kelf.sh
+d5ca0a9aeac878263aa6caf077fa1826  ld/emulparams/m68kelfnbsd.sh
+7d5b500c05a8f5cd0eccbbc81dc99139  ld/emulparams/m68klinux.sh
+37404d78456eeb52a674a4dcbbb9bb36  ld/emulparams/m68knbsd.sh
+13f758bfc68e72e4e1df1cc8e8b01407  ld/emulparams/m68kpsos.sh
+83963319b0e9d1a26022d42c1ded3dfd  ld/emulparams/m88kbcs.sh
+e766637b5e75eacdbd815e9a924fefcb  ld/emulparams/maxqcoff.sh
+58a22cbe0cb02baa7544d64102c384ab  ld/emulparams/mcorepe.sh
+6c5efc2d80801d3ab24a03f11d108e39  ld/emulparams/mipsbig.sh
+8589776726fb0a88568b9dbda5660c35  ld/emulparams/mipsbsd.sh
+18c4e0d8ca8ec6e02035b574cb8b9844  ld/emulparams/mipsidt.sh
+c320c6fc627c281bc28fcfc7a9bcad5b  ld/emulparams/mipsidtl.sh
+60661603c73c5ec9883d1f65e561e2d6  ld/emulparams/mipslit.sh
+8cb42fe6977ca6c642cb7b96a9b0fda0  ld/emulparams/mipslnews.sh
+b009f7b3d95f36311270956e44bbc245  ld/emulparams/mipspe.sh
+adc02e395aff0c497ee51c8f0ac6dc59  ld/emulparams/mmo.sh
+84befbc18d96888b0f65b75ff3c44846  ld/emulparams/mn10200.sh
+4da787b47cf6e6b08bbd026da6796c01  ld/emulparams/mn10300.sh
+896df912a4a2e5ec6585126440c16cd2  ld/emulparams/msp430all.sh
+49337298ecef7c4e2569237b614c9675  ld/emulparams/news.sh
+c4c658f868ad80ca56faca53cf082790  ld/emulparams/ns32knbsd.sh
+c400d36d901aa021f8361d60d9124f4f  ld/emulparams/or32.sh
+8482152aa72f4ceba59231f69c5aca7d  ld/emulparams/or32elf.sh
+a9ad37848e6c339a4fe81f322c3f3390  ld/emulparams/pc532macha.sh
+456a880b2bf36d968e2f2af383cc1abf  ld/emulparams/pdp11.sh
+332eddb90f3e1d4a5a320243735ebf5c  ld/emulparams/pjelf.sh
+8e2b9fce572d19af6ce84e6efbb74add  ld/emulparams/pjlelf.sh
+6b47b43addad6a0029ff49a029aeef11  ld/emulparams/ppclynx.sh
+120c2ee7cc0cea78311c4d9e980e939a  ld/emulparams/ppcmacos.sh
+f71b3cd563ff272019f928ca9cbd0eba  ld/emulparams/ppcnw.sh
+d45735f8089a88d9754f4238cedee83d  ld/emulparams/ppcpe.sh
+ff7570d6bf2e39ba10e74a394052028b  ld/emulparams/riscix.sh
+908fd348c9d3fd9c12647643d88b31c3  ld/emulparams/sh.sh
+44189d4e7cc8d0ab0992b4bad04793c9  ld/emulparams/shelf.sh
+8fde9b4db9ba4077b2f19d2df86f2af4  ld/emulparams/shelf32.sh
+291331616850dd83790ab2c24f992c2c  ld/emulparams/shelf32_linux.sh
+0c2a0b5d28f9f06f9c64e94a23c439ce  ld/emulparams/shelf32_nbsd.sh
+ad6b6a9f67f60f30e23005d1151c490a  ld/emulparams/shelf64.sh
+d31180db1f9253b62c3d9e1c121366cf  ld/emulparams/shelf64_nbsd.sh
+4b61937c3bfb4a5470c72eeb0bfd224b  ld/emulparams/shelf_linux.sh
+c36b6b4327e9803868c7a87cb8c8c39a  ld/emulparams/shelf_nbsd.sh
+9692d1aa2e677332e57b3e1b25d3339b  ld/emulparams/shelf_nto.sh
+c7ccb5f7fe5f62d92dca7e1a71b02aff  ld/emulparams/shl.sh
+a8e5e931e19cca314ba30a312884c2d5  ld/emulparams/shlelf.sh
+147ddbb0207d4b730f3ff45851cc3022  ld/emulparams/shlelf32.sh
+50c683b23297955f39906ab1d7ea198e  ld/emulparams/shlelf32_linux.sh
+414d3af83e84f7afd6dcc3afa2184fa7  ld/emulparams/shlelf32_nbsd.sh
+90c225b85052cd8cdf4ab8871bda1b20  ld/emulparams/shlelf64.sh
+2169ae2a71b4a6875eaa305168d042d1  ld/emulparams/shlelf64_nbsd.sh
+bebeae6e7f064f5568c15b2c7b051af1  ld/emulparams/shlelf_linux.sh
+744f886f4baf1d4fe15ce1d0595dfc84  ld/emulparams/shlelf_nbsd.sh
+588afc165bfef7d426ed6cd6b6bd190e  ld/emulparams/shlelf_nto.sh
+2b7af20012f444e77e36fe2340b966b2  ld/emulparams/shlsymbian.sh
+b9fdd4e39d3bc9a13650ee68cc651a34  ld/emulparams/shpe.sh
+6062ec8406144fbbe4ad32e193a7ac04  ld/emulparams/sparcaout.sh
+16bbfb9268886d428a81d42f007c5f20  ld/emulparams/sparclinux.sh
+957bd3e925d255ac965dde1aa7303f40  ld/emulparams/sparcnbsd.sh
+8f86834d923d64e45861594e4dc8c457  ld/emulparams/st2000.sh
+f8ff78cfcc19d1d4389a84330615a363  ld/emulparams/sun3.sh
+04380fc27e6223ffc89d2b43f9421434  ld/emulparams/sun4.sh
+5d10f221cc393b1ae1719132de13f3da  ld/emulparams/tic30aout.sh
+4fc903e37671053625509f7486c63816  ld/emulparams/tic30coff.sh
+62d8066c77800eafa442197f8f07cade  ld/emulparams/tic3xcoff.sh
+7bb0ad11ce41e9dfc28e690468c0770d  ld/emulparams/tic3xcoff_onchip.sh
+e2ba12f737f075c7e880925f10dc19ec  ld/emulparams/tic4xcoff.sh
+aead097a3385a27cba7210470e150a10  ld/emulparams/tic54xcoff.sh
+786ca05591eada9f7fbf7d5804dc0b81  ld/emulparams/tic80coff.sh
+420ddfcb9cd84cd0898880dd72280f8e  ld/emulparams/v850.sh
+829acdbee172341c4342095d82e19511  ld/emulparams/vanilla.sh
+4e93bfd2da37b36233e047a4bf15854e  ld/emulparams/vax.sh
+d5b1fddfa21a41fbd34775e65f7e714d  ld/emulparams/vaxnbsd.sh
+1e240622a795d134bad0e8a60460b9ae  ld/emulparams/vsta.sh
+4b1308f1ad46e5b5de56f5468cb202db  ld/emulparams/vxworks.sh
+7efc4f8c9d1eca2e14084bcd65535b9a  ld/emulparams/w65.sh
+f51734948fe47c0e8f4308dc5363417d  ld/emulparams/xtensa-config.sh
+88233c4b283975ba080bbb9738aa0a23  ld/emulparams/z80.sh
+cd93ec9e7e74cadfaf8044cca1581111  ld/emulparams/z8001.sh
+8890ef4fad0e25044c8d3200a9e77ee7  ld/emulparams/z8002.sh
+5f3f0d30312e4caf1e26c56cda432025  ld/ChangeLog
+7ca725ba584a0477922ca681df841a08  ld/ChangeLog-0001
+1844c5088cd03b9246ecf58008c41d76  ld/ChangeLog-0203
+8beafae12bdd6badac7c2baba900ea79  ld/ChangeLog-2004
+83dc7a007b7325a27e6f2d659558e999  ld/ChangeLog-2005
+8958c5b05a66e6b252f6978095132f7c  ld/ChangeLog-9197
+b73f002c7cc445237e97e9ed358922e6  ld/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab  ld/MAINTAINERS
+44afcf9878ff4d689e65d90f000feb27  ld/Makefile.am
+04649e36c5eee65596a8880bf8b0769d  ld/Makefile.in
+3f6cc4f49aca8f735c7b71ec2e0e7aa4  ld/NEWS
+305f3d03c641bc73c2e6ba871fdfe318  ld/README
+01627b664c7e61ab5dc202bb72913e0a  ld/TODO
+61bf8b84a0ccfeecab43057956f3b13a  ld/acinclude.m4
+3efb1cd549fbe885177e7733cfee6632  ld/aclocal.m4
+2b383a3eaf6c71462242ad91c3062d3c  ld/config.in
+14052bc3c99fc6cf66ae751e8f713f91  ld/configure
+3e7b5420fefd2eeb502452cb21158c7b  ld/configure.host
+d29af3eeaed7997d13da38516a7eb690  ld/configure.in
+e51ce6e46d9771c59838e2fa97e86979  ld/configure.tgt
+f7dfae7a736b1c72b3d50c05d34a7ed5  ld/deffile.h
+4701565bb032559596a16c8c7902366a  ld/deffilep.y
+709148097da6a27bf3e99025a50271dd  ld/dep-in.sed
+62d86ac843be78b04075d5b499da781a  ld/elf-hints-local.h
+0e62c14e172a03d7209b8cc7c97e26a4  ld/fdl.texi
+6ad19bf02743d55c759d5a8d6bd4076d  ld/gen-doc.texi
+0e2c3437a10b50764742ed1c4a85532c  ld/genscripts.sh
+981d9fc565e24a50734af5902eb7c52e  ld/h8-doc.texi
+17a57395ac8af373668e9ad2b5f054f8  ld/ld.h
+69e68712cbc241142533fe01ce4f1ffa  ld/ld.texinfo
+18f01837cf5ab3fa01c55ef56837577e  ld/ldcref.c
+4df5c0bcbc3e25c01e0ae9091956e055  ld/ldctor.c
+337165f1e1780c079b1679d659d4fa11  ld/ldctor.h
+c2699d600b2078c234aa2d099b40d547  ld/ldemul.c
+7219e8c73af8c8dc82f2c819b6284bcd  ld/ldemul.h
+77b1e40dcf410538f7e4776484aabe38  ld/ldexp.c
+531b71aaf282da335657e4f5e00b5a40  ld/ldexp.h
+698c87dde5ac26347bdcd859bdf67a16  ld/ldfile.c
+c819c7d85023d6eecf0ca9509e2a774a  ld/ldfile.h
+deb2844c43552953993dbb5630aac425  ld/ldgram.y
+958949e30b772d734055323cf1b19917  ld/ldint.texinfo
+5fc26e370dde32824f5ecb62290ff696  ld/ldlang.c
+070533a2d9a6c0d231ebff6f789d9661  ld/ldlang.h
+7bd4425cb690e0fe4b0099a38f4ddb03  ld/ldlex.h
+f20fa12d5a71ed51c1f66e59a7e946f2  ld/ldlex.l
+bee765a58024733f0df2c202e5f31c51  ld/ldmain.c
+ce4ddc0b026f2b539bf2b9dce420de39  ld/ldmain.h
+8ecc483cad8963d31c36ec89c249459d  ld/ldmisc.c
+78471b013f87c844aaf8aee4e7e174e7  ld/ldmisc.h
+f7810d7f062e33b1119f44cd2dc8dfb1  ld/ldver.c
+35ebe814743dff363b1868ce65ca060a  ld/ldver.h
+0c56c45b358ca75142b3b355ddb8f14a  ld/ldwrite.c
+68110236af1467c838606675dd3ae09c  ld/ldwrite.h
+1057e7b0816adc943d5a819f25c30559  ld/lexsup.c
+ab0083bc074c095165d9b15e413f0f62  ld/mri.c
+a24509e12252d086573a845d9e0d2c0c  ld/mri.h
+31dc5db97285ee0c2b8c0bdc757b6d26  ld/pe-dll.c
+0e5170c2ed8f4edd53bed23791ed177b  ld/pe-dll.h
+1ded054093de910d9786c62bc4fe8cc6  ld/stamp-h.in
+0ef6c8da02bed1f728346cd5abfc8094  ld/sysdep.h
+d4ab05370515d7aa2092cf46e6973025  ld/emultempl/alphaelf.em
+b812a798c37d8d5f5901f1821a8a648a  ld/emultempl/README
+0dc2d15c38c35ee0f889c243fd4ebc51  ld/emultempl/aix.em
+69a50eb7532105c11d2351a479365ea1  ld/emultempl/armcoff.em
+f7b2750de3242ce8d3304e5182afff74  ld/emultempl/armelf.em
+995bbfc228460e4eef6eef52a09384a9  ld/emultempl/astring.sed
+42d8d6e7bee902b3a943458c9feca58e  ld/emultempl/beos.em
+d482651d70089f5e5fca69a3908e0290  ld/emultempl/crxelf.em
+1807e24d4df306ce93c02474d243536a  ld/emultempl/elf32.em
+9c5108bd243fdb1aad5cab5ecf0588ca  ld/emultempl/generic.em
+64544280752cb759d6cd8a49860d52c9  ld/emultempl/gld960.em
+6c6c60239f907b6e08a1cc1a9a274bbd  ld/emultempl/gld960c.em
+488029e7b04ad2fd24287e08372665d2  ld/emultempl/hppaelf.em
+f77f05503c7d402a202df331d6693485  ld/emultempl/ia64elf.em
+2b3cae0f49ea8fa411f9ff44debecd49  ld/emultempl/irix.em
+c8bd2eea3119006a4f17377b94f5112f  ld/emultempl/linux.em
+8722d0f0d3ce5044d24d938ea2b66c68  ld/emultempl/lnk960.em
+03cdfd8385bf4df41e7a9250636da6b0  ld/emultempl/m68hc1xelf.em
+d137ba31c3c03a35992c2a2c71a72c01  ld/emultempl/m68kcoff.em
+6d4736f67bc02a2b139944b146e92890  ld/emultempl/m68kelf.em
+23e21beb2cd457e5362c0d996f33934f  ld/emultempl/mipsecoff.em
+95e7436c7d8fb12f9f05460db817fb23  ld/emultempl/mmix-elfnmmo.em
+669a92e4eeb91202475529903051a752  ld/emultempl/mmixelf.em
+1fe9015060e89bcb7e50bbed2ad4a1f5  ld/emultempl/mmo.em
+d5f7ca9a669af2c5e9080be9495057e9  ld/emultempl/needrelax.em
+52da053f6329508db7cff90577ff32e9  ld/emultempl/netbsd.em
+a8190e4a0b5cca5b8677d8bb2d39940f  ld/emultempl/ostring.sed
+99b3282ddf2ef0bc979ab8f4ba929532  ld/emultempl/pe.em
+b698df9db092728d7586cdc41e498bd7  ld/emultempl/ppc32elf.em
+a9d53330b6f828938747c4f62615b21a  ld/emultempl/ppc64elf.em
+1d6f8e59fc03e43bbe5ea230c0751e04  ld/emultempl/sh64elf.em
+c1b18c12c4c16a97f54dd14e9fc3b6aa  ld/emultempl/sunos.em
+25c7d9febfae830360fa217a02c71d28  ld/emultempl/ticoff.em
+bd5067468bf6e3813659d03085f45c6f  ld/emultempl/vanilla.em
+558a6ce2e85767c954c66a026e111bac  ld/emultempl/vxworks.em
+89556aa0e066542c71eca90f5f04f904  ld/emultempl/xtensaelf.em
+0e20f592e8a0336fb9f78eb2a6b6125f  ld/emultempl/z80.em
+d62ddff4678b85597fb29ae303ed0e10  ld/po/POTFILES.in
+50bda019d7f27b32ef53c8674ff08174  ld/po/Make-in
+1ff30271c0644d48371590d151324221  ld/po/zh_CN.gmo
+6107eb60e06e8b7449eca01fc6735955  ld/po/da.po
+998fc28c1290e8d1240323cd73ed845d  ld/po/es.po
+76e2361d7ea797d108f46b77c82bacb3  ld/po/fr.po
+b18787a801c95ce46b1b471f1735a989  ld/po/ld.pot
+6c881a8bbe72addbfc0267a9efda3850  ld/po/sv.po
+a44c2934ddeb120e2f08ca74572a7573  ld/po/tr.po
+e32af4c39a5d92c5bc521c128c418759  ld/po/vi.po
+fd2958d9773ac55e5bb5e3f80091540e  ld/po/zh_CN.po
+7167448a4744a6599432ce4939e897bc  ld/po/da.gmo
+861fb025ca8bc990baac930c35d3b192  ld/po/es.gmo
+d99327e3cc57560584c8ea81347fbe4b  ld/po/fr.gmo
+1458a539ab520ec9ecde71e95b38d325  ld/po/sv.gmo
+3d1ef990f300fb1817b57310a731db3e  ld/po/tr.gmo
+b1b59232ea80c2757551f7b47bf096c8  ld/po/vi.gmo
+d471f7a5a3dc4deffa1a8f2039a38504  ld/scripttempl/alpha.sc
+01c6e3598e372d510730e381dd25c2cd  ld/scripttempl/README
+fdcbfdd0b93aa6b73e1b73127b28bdae  ld/scripttempl/a29k.sc
+74b302c4e3d3b1cb0025a25e4d4af151  ld/scripttempl/aix.sc
+a354ffa3178f947e907c1d89c536fd8c  ld/scripttempl/armaout.sc
+11e720b2d4fbd6b8ad9ce26f980acd6a  ld/scripttempl/aout.sc
+4a37b9a15d4639a5a6b20d3cf4e2ce0f  ld/scripttempl/armbpabi.sc
+b9e168757b02ba38f35828fdb3f48274  ld/scripttempl/armcoff.sc
+16c8349cfcf56dbe96e56800b507e772  ld/scripttempl/avr.sc
+d32bcac910da0220edf86c2c63d2e190  ld/scripttempl/crisaout.sc
+3fb69113f5952434021a5fc481d5b417  ld/scripttempl/delta68.sc
+756f010bc1fcebe9cb08b1c8afa66389  ld/scripttempl/dlx.sc
+a4e630a7a2094f2b44f19e41069e4433  ld/scripttempl/ebmon29k.sc
+83be5c0e6c9c33f6b8045c816973328f  ld/scripttempl/elf.sc
+623692b266ee1b9ac64ed139da37fa7d  ld/scripttempl/elf32cr16c.sc
+2d65fa3c8704eb49ffa0fb07a52bb378  ld/scripttempl/elf32crx.sc
+8563cd5ab5a5691bb99f61ac3b1c0649  ld/scripttempl/elf32msp430.sc
+40a02e3a1d0c83fd555f3089ccf49196  ld/scripttempl/elf32msp430_3.sc
+b39e266b58c0d6aa2d2bdd2d84bd4479  ld/scripttempl/elf32sh-symbian.sc
+465ce9ffa7cea268124e9a6eab976d50  ld/scripttempl/elf32xc16x.sc
+a48b3bd76c990e7caabeeb997925dfb0  ld/scripttempl/elf32xc16xl.sc
+a48b3bd76c990e7caabeeb997925dfb0  ld/scripttempl/elf32xc16xs.sc
+c65817681fe47184c36d4603d559b6aa  ld/scripttempl/elf_chaos.sc
+e9f1f9cfb8f7683415ef3e4012bc508f  ld/scripttempl/elfd10v.sc
+92d2fb1f2fa4d8bf8c3e4e906b934721  ld/scripttempl/elfd30v.sc
+9d52015a744f3341cf6146945458efb1  ld/scripttempl/elfi370.sc
+897431bb5534ed45a709b81d2001304d  ld/scripttempl/elfm68hc11.sc
+5ef901217549efc28bb5402cb996c7e9  ld/scripttempl/elfm68hc12.sc
+84d5e33ddb814a328b0bc83a87b0e03d  ld/scripttempl/elfxtensa.sc
+5393b9689fa4a05d916c9ebbb54f015f  ld/scripttempl/epocpe.sc
+787263bd4f92413986d80957f8378501  ld/scripttempl/h8300.sc
+03a31f296b07be57364e68342f141a75  ld/scripttempl/h8300h.sc
+f7bea1e44d5e21154be40d58116cf287  ld/scripttempl/h8300hn.sc
+b3675a21a2701e05a7895b6a28108d25  ld/scripttempl/h8300s.sc
+3bc3dc9b586b3d37bb9c534c628d4707  ld/scripttempl/h8300sn.sc
+9f5d75c27a81da31b2744f0ee7e1e592  ld/scripttempl/h8300sx.sc
+b57760ffd9125c82e4d86a9b3b50b62f  ld/scripttempl/h8300sxn.sc
+6c57b9f11a6f50c46ecce9df62061dbf  ld/scripttempl/h8500.sc
+39da8240aa7f5aca7b23d93bcf243bb8  ld/scripttempl/h8500b.sc
+a1235b4e692307533adc69d75c98da06  ld/scripttempl/h8500c.sc
+45c5f295e421e663e1843207ae13951a  ld/scripttempl/h8500m.sc
+b6ce335a288c23cf897c944a84aafe3b  ld/scripttempl/h8500s.sc
+786aba3e828af6519ac1cb21ca5ebd9e  ld/scripttempl/hppaelf.sc
+973ec6d5280fe67f4694d07f03b6991e  ld/scripttempl/i386beos.sc
+89f55fbb09da1e8728f74f0dfda3192d  ld/scripttempl/i386coff.sc
+ccac61d01991b58151d967969f6299de  ld/scripttempl/i386go32.sc
+dd4667c5e75a68e5bcc4b0769830974b  ld/scripttempl/i386msdos.sc
+0acb5ea28c8feeee6aae68de5fb62a67  ld/scripttempl/i860coff.sc
+f14aed79776fb856704487766477ef6b  ld/scripttempl/i960.sc
+085eecc95faaf76391e74532b070abf3  ld/scripttempl/ip2k.sc
+675e652c3382436e4dea1a4fb972f1dc  ld/scripttempl/iq2000.sc
+ac993ea32406502f14b7089c4239296f  ld/scripttempl/m68kaux.sc
+0acb5ea28c8feeee6aae68de5fb62a67  ld/scripttempl/m68kcoff.sc
+5ac24db89fd94088b97b9b2a9b5c6ea2  ld/scripttempl/m68klynx.sc
+66790e6da2a36230461c111c12e5a6fc  ld/scripttempl/m88kbcs.sc
+c2b1c9fbb95ca1a6dfbc4ac9ce10a885  ld/scripttempl/maxqcoff.sc
+d942ea1043bca95ad16a43702655862c  ld/scripttempl/mcorepe.sc
+e96d67bd630bce9c10c0367d4e4caeb4  ld/scripttempl/mips.sc
+756f010bc1fcebe9cb08b1c8afa66389  ld/scripttempl/mipsbsd.sc
+921ceaa1251c9ea2ef23d551b6032160  ld/scripttempl/mmo.sc
+ca0b5bbcf601b895d149c90dc54be768  ld/scripttempl/nw.sc
+fdcbfdd0b93aa6b73e1b73127b28bdae  ld/scripttempl/or32.sc
+82104955a02c98844d28fe5b63bf5bee  ld/scripttempl/pe.sc
+47e02e8254495a858dbef6c19c1ac173  ld/scripttempl/pj.sc
+219f146ba7cb4c7346c9abd2a6c78798  ld/scripttempl/ppcpe.sc
+ab0f8d8220dc084233dee358c5e57433  ld/scripttempl/psos.sc
+1ca280b61dcc707ecc1128cfa80b8243  ld/scripttempl/riscix.sc
+cd076d3e4b10af9d6eec06ff494e1c6e  ld/scripttempl/sa29200.sc
+e492e9686199c4307073777a09fe3652  ld/scripttempl/sh.sc
+1231890eaa6427329f4e49ef29a3b632  ld/scripttempl/sparccoff.sc
+a56557b365a2fc1cf4070c7c5663b79c  ld/scripttempl/sparclynx.sc
+6277ea502afc8c184eeccce4362d538b  ld/scripttempl/st2000.sc
+f9f56c0b4c0548aadba5f30ee7f105fe  ld/scripttempl/tic30aout.sc
+581d4b5a31b2f67b8274aa96b201af92  ld/scripttempl/tic30coff.sc
+a0cbb8c553d0f2f099381bdc6ef1f6ad  ld/scripttempl/tic4xcoff.sc
+d66c340121962b6706c37311253b0ea8  ld/scripttempl/tic54xcoff.sc
+b6d1e44df8ff2382dcc53bf1816a4177  ld/scripttempl/tic80coff.sc
+a5d7a8f7f8d7025a87dfc9ed859951c3  ld/scripttempl/v850.sc
+922fccd6995f0a119365fd7ceb7b25ce  ld/scripttempl/vanilla.sc
+9ef634e16ac4537117ea157867e85207  ld/scripttempl/w65.sc
+e681c431c7cb2993ac04802f4e2da983  ld/scripttempl/xstormy16.sc
+40b944db8315cb484a442a7e3447da39  ld/scripttempl/z80.sc
+474b1c82cd04327e7433dd108c93e239  ld/scripttempl/z8000.sc
+1e7e11e78b692494c9cec0074b07648b  ld/testsuite/config/default.exp
+f612c2caa99a51c500f191c55aa3a63f  ld/testsuite/ChangeLog
+43821ec3e01aa56c69d031c9cb7aaac6  ld/testsuite/ChangeLog-2004
+0593940197fddd34e72d34ad4681e18d  ld/testsuite/ChangeLog-2005
+f6131533875b285cb0449a348fffaeea  ld/testsuite/ChangeLog-9303
+cc6237293b72753e150722c1a3e5e12a  ld/testsuite/ld-alpha/alpha.exp
+18325ab257cc940dcb70d61b6715538c  ld/testsuite/ld-alpha/align.s
+c4730c79b491970b9e7aa8e9bbe6c317  ld/testsuite/ld-alpha/tlsbin.dd
+55ff14b9f6be8945ee6ab399b6658166  ld/testsuite/ld-alpha/tlsbin.rd
+e4cc0945bf729834783cc392d04e8929  ld/testsuite/ld-alpha/tlsbin.s
+471ff630e1eb88135b396eb8077cf101  ld/testsuite/ld-alpha/tlsbin.sd
+0fdd3c7d51da0c6a74ad3818834ed2b6  ld/testsuite/ld-alpha/tlsbin.td
+f54f88a171d4a1a0502508fb4ba08259  ld/testsuite/ld-alpha/tlsbinpic.s
+556976926e9d8990df2467c2cbcf11d0  ld/testsuite/ld-alpha/tlsbinr.dd
+4c183d3948c99534486c9fe8b03b9b0c  ld/testsuite/ld-alpha/tlsbinr.rd
+d625489891d77ff8c6310f5f05486c77  ld/testsuite/ld-alpha/tlsbinr.sd
+4a8162da94dcca517a86059466c554ff  ld/testsuite/ld-alpha/tlsg.s
+643df4e4ff122f2f6a1804aff730c793  ld/testsuite/ld-alpha/tlsg.sd
+b87c24c0e610b3ccf34b009a7280eefa  ld/testsuite/ld-alpha/tlslib.s
+a802cac9f534fb99d25bc95cfc9a2ad3  ld/testsuite/ld-alpha/tlspic.dd
+ec7b0c8df9c6eaf295a0fb8ad33f1d43  ld/testsuite/ld-alpha/tlspic.rd
+d799d7afe5a44a1032c8a7b495b71f3b  ld/testsuite/ld-alpha/tlspic.sd
+fa4f4d2a9aa095262c026d8b386826ce  ld/testsuite/ld-alpha/tlspic.td
+66fa8fd9968bb830ab985fbaf9e9a7b2  ld/testsuite/ld-alpha/tlspic1.s
+1be6d8e1547c710f7bc12028c6522832  ld/testsuite/ld-alpha/tlspic2.s
+ce03367e95f447ddad8f870d403ef81a  ld/testsuite/ld-arm/arm-app-abs32.d
+565634b571c9c9e088fb3416a62705f0  ld/testsuite/ld-arm/arm-app-abs32.r
+abe5df1b29a8c0085e2b425276030a2b  ld/testsuite/ld-arm/arm-app-abs32.s
+644ef8de162945be9103c8ff1e371930  ld/testsuite/ld-arm/arm-app.d
+64913da4c22002b659ad73d6521dbba8  ld/testsuite/ld-arm/arm-app.r
+20303773d7a50761a78fb7a3536407b5  ld/testsuite/ld-arm/arm-app.s
+4e4fe46c0373b055ad1883d6911c34fd  ld/testsuite/ld-arm/arm-call.d
+1eb65e01cb3f72a9a9f674a0a23bfe43  ld/testsuite/ld-arm/arm-call1.s
+9135ee4b605fc6176c978325ff45c6e9  ld/testsuite/ld-arm/arm-call2.s
+fabfe9bdb58c7804026d5f6d2f4f2b3e  ld/testsuite/ld-arm/arm-dyn.ld
+a3812f4eda1d4258c2975537019c9768  ld/testsuite/ld-arm/arm-elf.exp
+1347ec856e7769a5c63261971d7416f6  ld/testsuite/ld-arm/arm-lib-plt32.d
+a167e469316cdd1ed8af41301205f0a0  ld/testsuite/ld-arm/arm-lib-plt32.r
+72d35e1785ba54a876601fb0dbeeab24  ld/testsuite/ld-arm/arm-lib-plt32.s
+7b97c55772dde4da03fa0db3a1a00b90  ld/testsuite/ld-arm/arm-lib.d
+952761fbdbb61c4115e75c10f7050e5b  ld/testsuite/ld-arm/arm-lib.ld
+cf684a9a844dd5b8f1e9e0059bd54fd1  ld/testsuite/ld-arm/arm-lib.r
+c4c6f3c32d459e57dbc71322834068c1  ld/testsuite/ld-arm/arm-lib.s
+c4ff75c0232f3b2256bc7aafc3bc8e40  ld/testsuite/ld-arm/arm-rel31.d
+8cebae8ee9a229083227e603191c0391  ld/testsuite/ld-arm/arm-rel31.s
+4d88e4c1732ce8905a0b66963a3c7275  ld/testsuite/ld-arm/arm-static-app.d
+31e63d6e3b7ba27e293f96df500359d9  ld/testsuite/ld-arm/arm-static-app.r
+bf32a1e13602b56dbc2ccd6d3cc7075a  ld/testsuite/ld-arm/arm-static-app.s
+a69a7159f61904208e6b1cc0d5b3c263  ld/testsuite/ld-arm/arm-target1-abs.d
+9614e4d603f01aa481ea9b010921613d  ld/testsuite/ld-arm/arm-target1-rel.d
+4f25ab9246a0db32d11a546d9125b081  ld/testsuite/ld-arm/arm-target1.s
+a69a7159f61904208e6b1cc0d5b3c263  ld/testsuite/ld-arm/arm-target2-abs.d
+ef1325df7d08a835f5f208267b5dbe66  ld/testsuite/ld-arm/arm-target2-got-rel.d
+0fa56f73a89d1e682608d71242efe2fd  ld/testsuite/ld-arm/arm-target2-rel.d
+354c09fb74f707bdd2173aaf67cc1b4a  ld/testsuite/ld-arm/arm-target2.s
+b9d6aa18705c13ccfdcb30801d1abe8c  ld/testsuite/ld-arm/arm.ld
+6e13d0b7695a568c4715243acc9e60af  ld/testsuite/ld-arm/mixed-app-v5.d
+5dfe4f05637d5e0f7ec276295420f99e  ld/testsuite/ld-arm/mixed-app.d
+aefaac7192d3e47c827da951f89d2bae  ld/testsuite/ld-arm/mixed-app.r
+7b3c6bc9827724b36f7df270af0ec4f5  ld/testsuite/ld-arm/mixed-app.s
+71098a2aa6739f49a821650a0c97a6ce  ld/testsuite/ld-arm/mixed-app.sym
+cad925bf1a15e0d90365ccf0a2b8b55f  ld/testsuite/ld-arm/mixed-lib.d
+5ca1ed7123c1056cecf2efef0273bab5  ld/testsuite/ld-arm/mixed-lib.r
+d01eec610829680bb4e52a46bed255bc  ld/testsuite/ld-arm/mixed-lib.s
+2319eabdb26a0182f13abf00a4246943  ld/testsuite/ld-arm/mixed-lib.sym
+73ca4e992f5c70fb94a749aa53dbfb0d  ld/testsuite/ld-arm/thumb-entry.d
+d4dd7676d18d8440e8dc78137276c2ba  ld/testsuite/ld-arm/thumb-entry.s
+f569403ef1dc33a8e6406b721bb967ee  ld/testsuite/ld-arm/tls-app.d
+d56bf5cfb58a3c8990894de5e0e0a5bc  ld/testsuite/ld-arm/tls-app.r
+bc4dc7515cb97050d78993226b2fedb8  ld/testsuite/ld-arm/tls-app.s
+ff25bdfebc56ba58fc5e00923c66a61e  ld/testsuite/ld-arm/tls-lib.d
+a3b71f6b593b007133a9d485c840d289  ld/testsuite/ld-arm/tls-lib.r
+b938da503cc6ccc3e40f0fd0651aeecf  ld/testsuite/ld-arm/tls-lib.s
+6c0ed337fbbbd6d186c89ce23fd84143  ld/testsuite/ld-arm/vxworks1-lib.dd
+e79bf538427185b3ca75d00211102266  ld/testsuite/ld-arm/vxworks1-lib.nd
+c9893ce3a54694d3465df2590a98043c  ld/testsuite/ld-arm/vxworks1-lib.rd
+5f4070589555cbed355250f9deb0093f  ld/testsuite/ld-arm/vxworks1-lib.s
+57e13e14adacc62cab22da622bbcb01e  ld/testsuite/ld-arm/vxworks1-static.d
+328cc44c5358d534a0d0443941af96cb  ld/testsuite/ld-arm/vxworks1.dd
+c296178e36ee3cbfe0b6aeedac281dbc  ld/testsuite/ld-arm/vxworks1.ld
+b2237cabfb8182cf4769e450cb67a95f  ld/testsuite/ld-arm/vxworks1.rd
+045aed3105ae55b645a8715f198c3860  ld/testsuite/ld-arm/vxworks1.s
+165ed1561458c0973255f985be876845  ld/testsuite/ld-arm/vxworks2-static.sd
+e191cf28ec5e3f69a0d89dd051130471  ld/testsuite/ld-arm/vxworks2.s
+7afb4e2fc8be35ad985dcb2e21b7cbef  ld/testsuite/ld-arm/vxworks2.sd
+b0c5e71c9db3f59925be321612cf76dd  ld/testsuite/ld-arm/thumb-rel32.d
+7f7c412a10dcd39feff7bfecbf3f875d  ld/testsuite/ld-arm/thumb-rel32.s
+b476cbb3db5a9dd397a1f1d3223839a6  ld/testsuite/ld-auto-import/auto-import.exp
+ea0185a96b1bd681d420b2b20264b798  ld/testsuite/ld-auto-import/client.c
+bc025b399dc1bf0e5fe050e08b235dff  ld/testsuite/ld-auto-import/dll.c
+7caefaf9fe5404b3971c7726025707fb  ld/testsuite/ld-bootstrap/bootstrap.exp
+e169b5b8796bde20a44261fc8b1a263c  ld/testsuite/ld-cdtest/cdtest-foo.cc
+4b9f7ea09166acbf0b5d72c88c5b3956  ld/testsuite/ld-cdtest/cdtest-bar.cc
+0329b786063f247527a5f98c53a3ea66  ld/testsuite/ld-cdtest/cdtest-foo.h
+42bc325afd7f1f937f20faa53c9f1490  ld/testsuite/ld-cdtest/cdtest-main.cc
+cc8e7cf87148e04a2dd8f166c3f3cfaa  ld/testsuite/ld-cdtest/cdtest-nrv.dat
+cfb423f4424fe65c2fe45d99c49ff558  ld/testsuite/ld-cdtest/cdtest.dat
+ff64332ab68f9215beb62970d241ae55  ld/testsuite/ld-cdtest/cdtest.exp
+f8956351106b2a558b8a55064f9faa73  ld/testsuite/ld-checks/checks.exp
+328c5cac80b76bd422b0b77d5517d175  ld/testsuite/ld-checks/asm.s
+536a4d2e63692344109849b984f9da06  ld/testsuite/ld-checks/script
+83a2b281595e56111c52244cff760822  ld/testsuite/ld-cris/badgotr1.d
+330f51428dc34d1de15e854517e1db7e  ld/testsuite/ld-cris/comref1.s
+417db562d47c056c4ae6cf93aa537258  ld/testsuite/ld-cris/cris.exp
+bd2d934b7debc19ede2cb90e437186e7  ld/testsuite/ld-cris/def2.d
+aa4bf9d2db3ecc2102472e46f0495504  ld/testsuite/ld-cris/def3.d
+c36b9535b7f40891c14a4136ab6de5f4  ld/testsuite/ld-cris/dso-1.s
+f73d09ac7bd8fdc83362c30cec088e28  ld/testsuite/ld-cris/dso-2.s
+0963170a19c851b655a44c694bdc09d2  ld/testsuite/ld-cris/dso-3.s
+9b4414953bd917a57878326c0303aebb  ld/testsuite/ld-cris/dsofnf.s
+d7d2a11598bb675c9e852af7bf18f915  ld/testsuite/ld-cris/dsofnf2.s
+77b561688e2547f8d68e5cd9260c172e  ld/testsuite/ld-cris/dsov32-1.s
+b3d1c880e11c1d592e10fb5aedb655f5  ld/testsuite/ld-cris/dsov32-2.s
+434758c86f0a616b126186d73a6895f7  ld/testsuite/ld-cris/dsov32-3.s
+bba3177ca04b5c1a8fab36de034931e1  ld/testsuite/ld-cris/dsov32-4.s
+5e0cd72ef03ae66100a223c3ac1ff509  ld/testsuite/ld-cris/euwref1.s
+1023eb64e4465edf00138aaf8d7280ca  ld/testsuite/ld-cris/expdref1.s
+f66bb017aa48f260a1111b20ff3b2ed0  ld/testsuite/ld-cris/expdyn1.d
+b40cfb11612986fe52121f5141810bb3  ld/testsuite/ld-cris/expdyn1.s
+a5cd0b3efb27eaa4893540fec9130357  ld/testsuite/ld-cris/expdyn2.d
+b136e897cab9add18604fa48cd5e6462  ld/testsuite/ld-cris/expdyn3.d
+47647f67fceb63ae3022ecdd1272680f  ld/testsuite/ld-cris/expdyn4.d
+c59ef5bb4570c9ab1da147ed9c4e8a78  ld/testsuite/ld-cris/expdyn5.d
+531df4286483200742350c41e7fa25e2  ld/testsuite/ld-cris/expdyn6.d
+195c4ab4f311be98df9f88092201e9a7  ld/testsuite/ld-cris/expdyn7.d
+5e78e7ddf1b5aa917ea617a17235447f  ld/testsuite/ld-cris/globsym1ref.s
+7d59c2f5e9279b6ace5aa4a9b7ad4db5  ld/testsuite/ld-cris/globsymw1.s
+bbdcdd1bad770e5eb3cf979eda64fa56  ld/testsuite/ld-cris/globsymw2.s
+680f085d12e3a89850ae59aeea73309c  ld/testsuite/ld-cris/gotplt1.d
+c7799e2cd7102cb6c0575d9d85567503  ld/testsuite/ld-cris/gotplt2.d
+86bb0aa4b5c096a2ffdf95982b1fd2ea  ld/testsuite/ld-cris/gotplt3.d
+beb4c53051cda32749a8b4628fb19f16  ld/testsuite/ld-cris/gotrel1.s
+16ac0aa5032e8dc85780bb8073131840  ld/testsuite/ld-cris/gotrel2.s
+6525c9449a13843dba229050a7d5be47  ld/testsuite/ld-cris/hiddef1.d
+2aeafbfc344edf57eff2027c2cfbe1d7  ld/testsuite/ld-cris/hiddef1.s
+0a2c0b67fcb79af873992b8aa6721e5b  ld/testsuite/ld-cris/hide1
+dcfc7b3526cca37684a42864dee9ed18  ld/testsuite/ld-cris/hidrefgotplt1.s
+3e6c41a7821ba1f6bae5bc41a4fa48e0  ld/testsuite/ld-cris/ldsym1.d
+304c4d0b4d1b1fa466ab71bf20afba51  ld/testsuite/ld-cris/libdso-1.d
+d7026d9ee3ea4c6de3133bf8b1f43fbd  ld/testsuite/ld-cris/libdso-10.d
+497aef2b071aec4336b3ced0d3665277  ld/testsuite/ld-cris/libdso-11.d
+4b5dbd4c319adca24f0cafda1111c57f  ld/testsuite/ld-cris/libdso-12.d
+5dc6af549ead00e0438dffdb7081a7a7  ld/testsuite/ld-cris/libdso-13.d
+a8c3eedaaf75d72b3d2f58fa1e737ef8  ld/testsuite/ld-cris/libdso-14.d
+d6b503af237bf73e5ca3802ee0d538eb  ld/testsuite/ld-cris/libdso-2.d
+aab518362b600fa763c58722941fa94e  ld/testsuite/ld-cris/libdso-3.d
+3c92543c2f334c154ac36ccf470b0ef1  ld/testsuite/ld-cris/libdso-4.d
+728824b8a7f8a427811da5dfdd9688ae  ld/testsuite/ld-cris/locref1.d
+390593b2a658117399e7dbea69f03f64  ld/testsuite/ld-cris/locref1.s
+92c316f0df15152624a8b2b8575d7f32  ld/testsuite/ld-cris/locref2.d
+fc2217195f7483a3ca55f8e9c1b05ee0  ld/testsuite/ld-cris/locref2.s
+689a0e95a0903b7673ee4db103ac323f  ld/testsuite/ld-cris/move-1.s
+bc987ce36b491f13c24922047c76a1a3  ld/testsuite/ld-cris/nodyn4.d
+938de1a906afab6b795f7c4b709adc72  ld/testsuite/ld-cris/nodyn5.d
+7713000ae79494a9864d233f100b51d8  ld/testsuite/ld-cris/noglob1.d
+a4f4d34c69e2ee06e8e6cd8f6d564f9c  ld/testsuite/ld-cris/noglob1.s
+8aa847fbe970d2b7c0eb26e36c0cac6f  ld/testsuite/ld-cris/noov.d
+fb7be150fec11a8e315c5a9e92434af9  ld/testsuite/ld-cris/noov.s
+2d11738339edc6fdcb2df4fc7dec66c8  ld/testsuite/ld-cris/pv32-1.d
+d64b29bd8856f5b27faa07d59efd9b97  ld/testsuite/ld-cris/pv32.s
+e589a68be11f502a3cf9e1d56fc8bca2  ld/testsuite/ld-cris/stabs1.s
+8ab8f655c2a1cb2bf73de23d26f1f8b6  ld/testsuite/ld-cris/start1.s
+a67b90dd1c4b2e9c718668c192b037e4  ld/testsuite/ld-cris/undef1.d
+c58ca745186c4bece924a88f288b02ec  ld/testsuite/ld-cris/undef2.d
+5fd3e1533841a223eaf9fbd36b233b79  ld/testsuite/ld-cris/undef3.d
+2e48731f84bdc880610e6ca843b9d5b5  ld/testsuite/ld-cris/v10-v32.d
+4f95b9c42d7d9f9fbc0b62acc6b5883b  ld/testsuite/ld-cris/v10-va.d
+a63e1ef5c0e331d425a87ce25b50ebac  ld/testsuite/ld-cris/v32-ba-1.d
+6fe1978274028b15612b8c29e55094e1  ld/testsuite/ld-cris/v32-ba-1.s
+aacc56a9cf2df86d1248ccc8017e9047  ld/testsuite/ld-cris/v32-bin-1.d
+6e1f1a177b0ddee8ddefc3d445d9c7d8  ld/testsuite/ld-cris/v32-bin-1.s
+4dd961002adb00a33b78ea6803442126  ld/testsuite/ld-cris/v32-v10.d
+752f3b5be6be178266b8316a9a88a82d  ld/testsuite/ld-cris/v32-va.d
+ba34a95bf2c66e449608ee6617642633  ld/testsuite/ld-cris/va-v10.d
+48af179aaf1af4fec96516a80cc9c6cf  ld/testsuite/ld-cris/va-v32.d
+b9288b16a367283e15a37e333fd97297  ld/testsuite/ld-cris/warn1.d
+d45bec3bf85d2aaf4821b0ffdccc0d12  ld/testsuite/ld-cris/warn2.d
+3a166d60129bbd19c207498e3844c09f  ld/testsuite/ld-cris/warn3.d
+5df413483daafe5459511b97199f9511  ld/testsuite/ld-cris/warn4.d
+0327bbd232bb585aea5c5461b9ffae26  ld/testsuite/ld-cris/weakref1.d
+98dd707805424be642ace5cb35055b58  ld/testsuite/ld-cris/weakref2.d
+06ecce975fa9296eefa5ae4808018565  ld/testsuite/ld-crx/reloc-num8.d
+b884e5a414456dd24cd26e5d25c5c9fb  ld/testsuite/ld-crx/crx.exp
+158760ac80129c2252f3042fef109f0c  ld/testsuite/ld-crx/crx.ld
+e53f074773b19a4eccc59cb8a6a1d047  ld/testsuite/ld-crx/reloc-abs32.d
+af866ead95f29dac5b4f5c611888f53d  ld/testsuite/ld-crx/reloc-abs32.s
+07ec95f0bb08e6c659d2057d79dcdeb6  ld/testsuite/ld-crx/reloc-imm16.d
+0084b8ad872c12e2a7be00eb8f98e91d  ld/testsuite/ld-crx/reloc-imm16.s
+a5c9c0b54cad1488e914499c55278eb7  ld/testsuite/ld-crx/reloc-imm32.d
+1922ef2f5dc94a1fa330ac39838d1344  ld/testsuite/ld-crx/reloc-imm32.s
+94eba9a936aa6c422ad4e1145ae6ba30  ld/testsuite/ld-crx/reloc-num16.d
+182190b715b027b5a6c1d540c2f30f5c  ld/testsuite/ld-crx/reloc-num16.s
+a3c38f5bef3c4f3393d89706ee257d8e  ld/testsuite/ld-crx/reloc-num32.d
+3b171daa66954b0e4275a2553b3f7dcb  ld/testsuite/ld-crx/reloc-num32.s
+e0d78086742196af5f70b2913df4ab9a  ld/testsuite/ld-crx/reloc-num8.s
+09c4cacdf1025cc747cc0f35d7b64572  ld/testsuite/ld-crx/reloc-regrel12.d
+e7856861e2f6965e4e5064f21c4174c5  ld/testsuite/ld-crx/reloc-regrel12.s
+77b86ca3fc51bee6fd5b373482720500  ld/testsuite/ld-crx/reloc-regrel22.d
+12321019a8582ea1cf50f6e3af92d803  ld/testsuite/ld-crx/reloc-regrel22.s
+5f5e518bb54cbdbd53ec30c650984a73  ld/testsuite/ld-crx/reloc-regrel28.d
+cb3159e28c00f922bb551d0ed9d3bde1  ld/testsuite/ld-crx/reloc-regrel28.s
+44b40e9c2c37bb33120070a689253204  ld/testsuite/ld-crx/reloc-regrel32.d
+6a88a24f0d02fbca35b2ce3298b7ac38  ld/testsuite/ld-crx/reloc-regrel32.s
+01f6f4551c686de2fb0d397e8a4e6bf4  ld/testsuite/ld-crx/reloc-rel16.d
+dbb4d600f3ba3c9f8dc5581043812869  ld/testsuite/ld-crx/reloc-rel16.s
+8b8b1af61b3d471ef8bcb8df5bbf4494  ld/testsuite/ld-crx/reloc-rel24.d
+70b11bcd4b6100b4b4f459fd6cf683da  ld/testsuite/ld-crx/reloc-rel24.s
+703d4e4e2ea36d634a0022cc44592335  ld/testsuite/ld-crx/reloc-rel32.d
+84ef401fcde006c9458e73efe2bdc3fe  ld/testsuite/ld-crx/reloc-rel32.s
+0bb2340f51e8e31790c044611073539d  ld/testsuite/ld-crx/reloc-rel4.d
+0474e638123f267f7c77bf7e6859e94f  ld/testsuite/ld-crx/reloc-rel4.s
+952af075711bf5c0bd635ce9720648cb  ld/testsuite/ld-crx/reloc-rel8-cmp.d
+d9692a48c3da7fe1f9e0454e2eaa3269  ld/testsuite/ld-crx/reloc-rel8-cmp.s
+2727f9d73da1e140e5d505f435359009  ld/testsuite/ld-crx/reloc-rel8.d
+817521c14f843019d77ce0d52fd53b5d  ld/testsuite/ld-crx/reloc-rel8.s
+1c7661f6d20fc6e7892ab56f6aa5784b  ld/testsuite/ld-cygwin/exe-export.exp
+af0825aade69062e48c52ae8282d8834  ld/testsuite/ld-cygwin/testdll.c
+63d1aac1b038020ed973cfc29569732e  ld/testsuite/ld-cygwin/testdll.def
+3583729c5496adaef00c5cab12affc79  ld/testsuite/ld-cygwin/testexe.c
+5f86698b1509034bc4f87f7d258217e9  ld/testsuite/ld-cygwin/testexe.def
+cef8f34528999890344bd2ce9198dba8  ld/testsuite/ld-d10v/d10v.exp
+b4ead20b861eba109050533ef40db394  ld/testsuite/ld-d10v/default_layout.d
+c59c68825ca903db1904078c8e77f033  ld/testsuite/ld-d10v/linktest-001.s
+260cb1183491105181eded4c34963a9f  ld/testsuite/ld-d10v/linktest-002.lt
+7232ced2d73d4bac32cf583a3d9d7a5a  ld/testsuite/ld-d10v/linktest-002.s
+de046023db57d12594a89878e1caa893  ld/testsuite/ld-d10v/regression-001.lt
+01ffcb3c21fda44963dfafbd75b79da2  ld/testsuite/ld-d10v/regression-001.s
+4cdae0fb3d013dbd49153b555db35e74  ld/testsuite/ld-d10v/reloc-001.d
+a9cbb2de1956f46bf23bdbf3a39fb6b2  ld/testsuite/ld-d10v/reloc-001.ld
+96aac4fa15afbb40824d52d7f616aed1  ld/testsuite/ld-d10v/reloc-001.s
+22382460f767a35f7e3ee3e29082eb14  ld/testsuite/ld-d10v/reloc-002.d
+dcb59cfd3bc1ddd9661c33cec7111e62  ld/testsuite/ld-d10v/reloc-002.ld
+0b5fffa79db80b241c0c58105932d9bb  ld/testsuite/ld-d10v/reloc-003.d
+3befa2048653d125ef17be9bcc94806b  ld/testsuite/ld-d10v/reloc-003.ld
+89b112cc2cd58ae58999a5a105c33f5b  ld/testsuite/ld-d10v/reloc-004.d
+bad4f70dce484b364577b7793db92505  ld/testsuite/ld-d10v/reloc-004.ld
+065a76f098ef26e7b2fe5f84a56f4193  ld/testsuite/ld-d10v/reloc-005.d
+5ff2e76a04204073ea7c50ee788a7034  ld/testsuite/ld-d10v/reloc-005.ld
+823a84ae7b851b134c9b94ab71d6f21a  ld/testsuite/ld-d10v/reloc-005.s
+46dbf37acbdf0eadb8cc31ac2d3034f1  ld/testsuite/ld-d10v/reloc-006.d
+52632233b997a5226faff15567653f35  ld/testsuite/ld-d10v/reloc-006.ld
+1c56c3a2083b73c277af1cf295a4e766  ld/testsuite/ld-d10v/reloc-007.d
+ae9e1f771120fc9bad087de039bd10ad  ld/testsuite/ld-d10v/reloc-007.ld
+d03fb2fc3ecf1b7fa9dd71a8466ae702  ld/testsuite/ld-d10v/reloc-008.d
+c36d03bdbe812d34d81baa1df645be0f  ld/testsuite/ld-d10v/reloc-008.ld
+4074889b9455b4f68f6e5fc23f265b32  ld/testsuite/ld-d10v/reloc-009.d
+5357ca9e709865a49021a2ad944f735e  ld/testsuite/ld-d10v/reloc-009.ld
+778af85308c7cf5e618819f1089919bd  ld/testsuite/ld-d10v/reloc-009.s
+2a269a1b6b912fbc838d30338721c4ce  ld/testsuite/ld-d10v/reloc-010.d
+320d8cb2224a8c0d770c6c53fe56fa2a  ld/testsuite/ld-d10v/reloc-010.ld
+c0db32e1b6970df36a2e01fc22a687c8  ld/testsuite/ld-d10v/reloc-011.d
+e4281f7304f32d7f2e355b4acdfa0f11  ld/testsuite/ld-d10v/reloc-011.ld
+d41b0a45b441f5bf3249edf3b2ffba89  ld/testsuite/ld-d10v/reloc-012.d
+5a65c1b6cc50923c6674160822d7d748  ld/testsuite/ld-d10v/reloc-012.ld
+d1e67034df65b21f46e22414411a58bc  ld/testsuite/ld-d10v/reloc-013.d
+88128837f15e0d761f24263bf4edf04a  ld/testsuite/ld-d10v/reloc-013.ld
+4f315c84a8e4f35a0440568f2663eb87  ld/testsuite/ld-d10v/reloc-014.d
+f947210d3beb88287ce8b83f4ea0be06  ld/testsuite/ld-d10v/reloc-014.ld
+75e3dd02240daa65a611d20de908b60a  ld/testsuite/ld-d10v/reloc-015.d
+12e0f6ef50e603dd29670a80de467f0d  ld/testsuite/ld-d10v/reloc-015.ld
+0b00bd52024e535d8e0f93afec143444  ld/testsuite/ld-d10v/reloc-016.d
+24c58a8fa81d8b23eef3d2df94588713  ld/testsuite/ld-d10v/reloc-016.ld
+643376f9cf25b4ffa2a621b4ac850ff5  ld/testsuite/ld-d10v/simple.s
+547d2f82d31f892a1e0ed6255c66e39b  ld/testsuite/ld-discard/discard.exp
+74f98f91da03fdfbe4b598fa78509f21  ld/testsuite/ld-discard/discard.ld
+ad7a2ef376a2dbe50a1bbd332e0b351e  ld/testsuite/ld-discard/exit.s
+e20e4e9a071e2539be51a543e957e432  ld/testsuite/ld-discard/extern.d
+7db75ecbbac3202bb8ac52c4f75c4f4d  ld/testsuite/ld-discard/extern.s
+c43781d5a87b54125b8401e35e07d701  ld/testsuite/ld-discard/start.d
+859d4022d83abdfea3a6baa088067abd  ld/testsuite/ld-discard/start.s
+926e93d57068b97cb51acfd9212f65f2  ld/testsuite/ld-discard/static.d
+f7164cd0e6027fe322ff8cc52dfaed98  ld/testsuite/ld-discard/static.s
+ad4d42066a7d143dbb8d66e8daf7ce60  ld/testsuite/ld-elf/empty2.d
+ae7725b07280d27bd89319506426c123  ld/testsuite/ld-elf/elf.exp
+ab02480a9f5d976811ed2b9d67aea373  ld/testsuite/ld-elf/empty.d
+9882073b563bb0a8e90d2902ebe358d7  ld/testsuite/ld-elf/empty.s
+1f26927d585f55cb63b61bd6f0f20a96  ld/testsuite/ld-elf/eh1.d
+ee46964160f0308864b3c9f673805ae4  ld/testsuite/ld-elf/empty2.s
+2f5cdf142789b3a0aaba67c439346cba  ld/testsuite/ld-elf/exclude.exp
+1cd4e62a9fc5452a45960a19f3e1f006  ld/testsuite/ld-elf/exclude1.s
+8226b1db9eb7e3f6257547fba8c4f6a2  ld/testsuite/ld-elf/exclude2.s
+b9312be0ac0540e1bed7c423d7e86b7e  ld/testsuite/ld-elf/fini.c
+6c870ef46ccd9128eef86ca8e23210f2  ld/testsuite/ld-elf/fini.out
+81267dfa67d868097d5552924b0c63fe  ld/testsuite/ld-elf/frame.exp
+849fea883bafed1cbcbaebbe323e7783  ld/testsuite/ld-elf/frame.s
+d100997473a223f7af540b89feb47277  ld/testsuite/ld-elf/group.ld
+a1a3673b0cd3e61f1215466953e4f20b  ld/testsuite/ld-elf/group1.d
+1ec9a1e59acd27511474e69e4055d7e0  ld/testsuite/ld-elf/group1a.s
+d9f1334c22ad7c92426c95b7aa8a3049  ld/testsuite/ld-elf/group1b.s
+926815d8f0a5b8f671f374e164f4ec64  ld/testsuite/ld-elf/group2.d
+95bcdb1f797589520105dd68e9af0c58  ld/testsuite/ld-elf/init.c
+f2e75103bd836ab4be11fd869823de13  ld/testsuite/ld-elf/init.out
+08012998b35598442b58e4a258c9ca4c  ld/testsuite/ld-elf/merge.d
+3adca40a51e300bbf27293c07b0b899b  ld/testsuite/ld-elf/merge.ld
+4595be81b4985c3114128c2c50497ed7  ld/testsuite/ld-elf/merge.s
+7fdc821537463a3aff87cb921c8ad20f  ld/testsuite/ld-elf/merge2.d
+82b53a1be4af0e7b9932bc4bac4a1f5b  ld/testsuite/ld-elf/merge2.s
+1bf3ca9cf93556e36c6943151c6d8115  ld/testsuite/ld-elf/orphan.d
+3a0e44b62eb7fe5508ed46c14a05c715  ld/testsuite/ld-elf/orphan.ld
+e10c2d6fb7b1862d72e784b3d68cad31  ld/testsuite/ld-elf/orphan.s
+29909f11c61eb1f3ecf38f49a2312ffd  ld/testsuite/ld-elf/orphan2.d
+e7a16e18e2efc9cfdbbe32abaab5edca  ld/testsuite/ld-elf/orphan2.s
+9e0d2e1541e26e362a40a3d869af16d9  ld/testsuite/ld-elf/preinit.c
+2f7e06fc320d375e4bef8dad7a69e6e8  ld/testsuite/ld-elf/preinit.out
+f09f0f158681e138df2c3742aef54e8d  ld/testsuite/ld-elf/sec64k.exp
+96f5a7ccdbaf63f8a83272122b653f64  ld/testsuite/ld-elf/start.s
+abc3ff48ad8730ebd33d1a57cbe0aac6  ld/testsuite/ld-elf/symbol1ref.s
+118d8abd984db821efeff9e387685685  ld/testsuite/ld-elf/symbol1w.s
+3726d33be7e71970731526d25c45b15b  ld/testsuite/ld-elf/table.s
+2e5f0a039d8fe3b31bcbb1d924874abd  ld/testsuite/ld-elf/tbss.s
+22d8dd6f061259f9e320ed5854e01cf5  ld/testsuite/ld-elf/unknown.d
+3bfba019f7fe8253d4a94e4edf8d4432  ld/testsuite/ld-elf/unknown2.d
+5006410a4ea18cc1dde77669583c65c9  ld/testsuite/ld-elf/unknown2.s
+dad17806130b76f142d2287b079eac6c  ld/testsuite/ld-elf/warn1.d
+b5fd9f6ef9840069748fe7913c2cc775  ld/testsuite/ld-elf/eh1.s
+febb082ba0de2ef03a9e8320a6ff1651  ld/testsuite/ld-elf/eh1a.s
+427e90987c3ffa2916b68bfd32e96c47  ld/testsuite/ld-elf/eh2.d
+bc78ade1174bc87302d5ae6f3c9b04a4  ld/testsuite/ld-elf/eh2a.s
+e55888c9ad703d4671dd7d8517e10465  ld/testsuite/ld-elf/eh3.d
+601c783a8ec20e9f09a919e68b46827c  ld/testsuite/ld-elf/eh3.s
+f7edc6e0e0f66ffc923349b2a8c8a074  ld/testsuite/ld-elf/eh3a.s
+4fd4394e0fffbea332fd110afa670884  ld/testsuite/ld-elfcomm/common1a.c
+a8e9cb48e677cdaa311845686444de90  ld/testsuite/ld-elfcomm/common1b.c
+c833b9c0a040885614b3ea11c43fa807  ld/testsuite/ld-elfcomm/elfcomm.exp
+8d95fe02bd8dd1103c22c1276bb0555a  ld/testsuite/ld-elfvers/vers.exp
+5f2c2be170fc2ea8b5f4b1d7e8d72165  ld/testsuite/ld-elfvers/vers1.c
+580fae4dde72b7ecb4ddf9a2fb369b72  ld/testsuite/ld-elfvers/vers1.dsym
+e313fc6c0ab900457222aee483b85e3e  ld/testsuite/ld-elfvers/vers1.map
+e70fa3cc72507e3c454eeaff68f8c28f  ld/testsuite/ld-elfvers/vers1.sym
+ba86e6e4d38e0cb2c7d0e1b41853e49b  ld/testsuite/ld-elfvers/vers1.ver
+ca85484e74a669868fc7e52fe11d7fb4  ld/testsuite/ld-elfvers/vers13.asym
+e8cdfeee2880948d113226cb5004d92c  ld/testsuite/ld-elfvers/vers15.c
+63a46548615c9f270349f427719d1b10  ld/testsuite/ld-elfvers/vers15.dsym
+46f1035151fe2009e5de509d8f7ebaf2  ld/testsuite/ld-elfvers/vers15.sym
+f7d7f52089fa932a6dbcec0a1beaf9c0  ld/testsuite/ld-elfvers/vers15.ver
+d71d95fe36a6bc2f88c952ac37cb990a  ld/testsuite/ld-elfvers/vers16.c
+ff7574e34a600f7ae616a4384f98ad0f  ld/testsuite/ld-elfvers/vers16.dsym
+d057681641b9fc14e87f35c677b6243d  ld/testsuite/ld-elfvers/vers16.map
+92e6d0ae0c0aef2c17de9ef04d6bf7f2  ld/testsuite/ld-elfvers/vers16a.c
+4d81c8fe8c0b5ea33ef6c4001cfee806  ld/testsuite/ld-elfvers/vers16a.dsym
+8dfeebadb83b6619902bf55bc8d8c0bc  ld/testsuite/ld-elfvers/vers16a.ver
+a2e06e03cf5f45c27839f309a5388b81  ld/testsuite/ld-elfvers/vers17.c
+35a714a53e208be7dd7f246285c4dd30  ld/testsuite/ld-elfvers/vers17.dsym
+db62e32b4b422023390633f11005c406  ld/testsuite/ld-elfvers/vers17.map
+03f031de85c35a85572816d70a9c5e26  ld/testsuite/ld-elfvers/vers17.ver
+64ce133534d131385b4d10606c423b81  ld/testsuite/ld-elfvers/vers18.c
+e121a574bfcd762b9cf6b3a32ad84435  ld/testsuite/ld-elfvers/vers18.dsym
+ff664f0bcb51460658f2bd68559e58ce  ld/testsuite/ld-elfvers/vers18.map
+99fdeff24e389af67f2125724e3c0c2b  ld/testsuite/ld-elfvers/vers18.sym
+e772987dfabf03c73dbc71495c7e26dd  ld/testsuite/ld-elfvers/vers18.ver
+039a925919afb81dc1ee342704f38935  ld/testsuite/ld-elfvers/vers19.c
+c1b9e106ce57e5a1d19a19e5ad108ea6  ld/testsuite/ld-elfvers/vers19.dsym
+d820052f9182eb8920d6eeaaff6fd3ee  ld/testsuite/ld-elfvers/vers19.ver
+0a2838d86e28cda599478f48e5b5bdfd  ld/testsuite/ld-elfvers/vers2.c
+6c04dd6b5a1f83b8ad01dc66e0cef2c9  ld/testsuite/ld-elfvers/vers2.dsym
+0f243904b21ec2e5cda0083a35f9708e  ld/testsuite/ld-elfvers/vers2.map
+e0027aa1c08f42f81ec3416de17108c5  ld/testsuite/ld-elfvers/vers2.ver
+4469f357ebf3ae54a6b7d3ac4dd45e02  ld/testsuite/ld-elfvers/vers20.c
+22b87e0ba42197b1faebfd1b906f6c2e  ld/testsuite/ld-elfvers/vers20.dsym
+8bc8f7d4944729dc8b93a7411039edab  ld/testsuite/ld-elfvers/vers20.map
+61d3384fc44c3520df7538da07ab304c  ld/testsuite/ld-elfvers/vers20.ver
+e908de878275a36ffc228b4327278d10  ld/testsuite/ld-elfvers/vers20a.ver
+c12e7c2ac5f7a27de16c1cad3e144773  ld/testsuite/ld-elfvers/vers21.c
+c59ca7a3cc4b5b6f32d601d23359e094  ld/testsuite/ld-elfvers/vers21.dsym
+1d171dba2a073a9f452c6dc9738d9ab5  ld/testsuite/ld-elfvers/vers21.map
+3d09027f25033d0a4bc87f237abd3e68  ld/testsuite/ld-elfvers/vers21.sym
+13891b2ff8f95837b8bc6814c5f9c76a  ld/testsuite/ld-elfvers/vers21.ver
+f14e2a97a506acb8ccb16ae8169e02f0  ld/testsuite/ld-elfvers/vers22.c
+bd9ef3e47ee7d4320a12637856862e10  ld/testsuite/ld-elfvers/vers22.dsym
+73bdadb2bf334d7215bed4b3bbf79386  ld/testsuite/ld-elfvers/vers22.map
+7698880d131079a64ad442973c9ec577  ld/testsuite/ld-elfvers/vers22.ver
+c3da5c9212079dcd5e6be745d3fd350d  ld/testsuite/ld-elfvers/vers22a.c
+1aa172dc8f77ef40290188e04abcd09c  ld/testsuite/ld-elfvers/vers22a.dsym
+75fe2059088e76f829bf14b9aca13eda  ld/testsuite/ld-elfvers/vers22a.sym
+e26c1187572ef53181f5bbe87a4dd330  ld/testsuite/ld-elfvers/vers22a.ver
+4f7246f39713bbd895f864c0575ba407  ld/testsuite/ld-elfvers/vers22b.c
+f911dac1162ba602c454c8f69f31240f  ld/testsuite/ld-elfvers/vers22b.dsym
+faf04cc4123011a10ec9668e06261fbe  ld/testsuite/ld-elfvers/vers22b.ver
+bbc9fc509cd541c3693ee9eccfbd5b9d  ld/testsuite/ld-elfvers/vers23.c
+632dee63b1e3ad170e699bc9a97d7458  ld/testsuite/ld-elfvers/vers23.dsym
+633a3d837043afb4e2e529e4c3e90935  ld/testsuite/ld-elfvers/vers23.ver
+9e89d93959ee87b821b21e9d9e4cad8a  ld/testsuite/ld-elfvers/vers23a.c
+245ff861c19aa37fe389fd6e9e1016b1  ld/testsuite/ld-elfvers/vers23a.dsym
+8343a077e30c61911ce93c6effc40152  ld/testsuite/ld-elfvers/vers23a.map
+75fe2059088e76f829bf14b9aca13eda  ld/testsuite/ld-elfvers/vers23a.sym
+b259af249a86e7648707d5b104bfd39f  ld/testsuite/ld-elfvers/vers23a.ver
+60fc3d9c482fe99a2b93cb18e7e80609  ld/testsuite/ld-elfvers/vers23b.c
+f911dac1162ba602c454c8f69f31240f  ld/testsuite/ld-elfvers/vers23b.dsym
+73bdadb2bf334d7215bed4b3bbf79386  ld/testsuite/ld-elfvers/vers23b.map
+d9e3cdbdd3eece21d6cd7e5d3366d824  ld/testsuite/ld-elfvers/vers23b.ver
+93e27849229595cb0f4daa46be84d7bf  ld/testsuite/ld-elfvers/vers23c.ver
+e88829a5c5d6cb4d6b2b52a3acbb3eb1  ld/testsuite/ld-elfvers/vers23d.dsym
+e9fda16fba73fb7725109a8dbc9b602b  ld/testsuite/ld-elfvers/vers24.map
+78c0fbda33eb7fcb344c4ac3acbc0774  ld/testsuite/ld-elfvers/vers24.rd
+4ac6b04f3781a78b43aada28a01d207b  ld/testsuite/ld-elfvers/vers24a.c
+9a260b109ac2c5d9b67c179a743164d2  ld/testsuite/ld-elfvers/vers24b.c
+1c385eb898420d2317b0fffb4ff55e98  ld/testsuite/ld-elfvers/vers24c.c
+0523f9af999af91bcc588cad64caa834  ld/testsuite/ld-elfvers/vers25a.c
+719434ae40110a1e0a1dffe63d2f5e99  ld/testsuite/ld-elfvers/vers25a.dsym
+57f961fd2476ec908ae22cca5bdc232d  ld/testsuite/ld-elfvers/vers25a.map
+da4acc9abdf136721f4518d9483c2c71  ld/testsuite/ld-elfvers/vers25a.ver
+12e05f0c04c3fe45dd5f8a9ce22f9f78  ld/testsuite/ld-elfvers/vers25b.c
+7d2a38f57ff8f9292dd32d86db3f1465  ld/testsuite/ld-elfvers/vers25b.dsym
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers25b.ver
+e98c326ae1d6de1a6f02bbec6be09dd9  ld/testsuite/ld-elfvers/vers26a.c
+719434ae40110a1e0a1dffe63d2f5e99  ld/testsuite/ld-elfvers/vers26a.dsym
+57f961fd2476ec908ae22cca5bdc232d  ld/testsuite/ld-elfvers/vers26a.map
+997f286a804abb59dfe3a8cd9e04d8fa  ld/testsuite/ld-elfvers/vers26a.ver
+47bb2e0fbb87fcb4c863dfa911a22aec  ld/testsuite/ld-elfvers/vers26b.c
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers26b.dsym
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers26b.ver
+0523f9af999af91bcc588cad64caa834  ld/testsuite/ld-elfvers/vers27a.c
+719434ae40110a1e0a1dffe63d2f5e99  ld/testsuite/ld-elfvers/vers27a.dsym
+57f961fd2476ec908ae22cca5bdc232d  ld/testsuite/ld-elfvers/vers27a.map
+d17c261d3bfed7e02043d8d6bd34f33a  ld/testsuite/ld-elfvers/vers27a.ver
+53172361b9be4fb2ff28eafdb3f06102  ld/testsuite/ld-elfvers/vers27b.c
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers27b.dsym
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers27b.ver
+12e05f0c04c3fe45dd5f8a9ce22f9f78  ld/testsuite/ld-elfvers/vers27c.c
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers27c.dsym
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers27c.ver
+5fcd50ae773445bb0db0e32964dde28c  ld/testsuite/ld-elfvers/vers27d.dsym
+d106a2b25c107c34adf0c147509620d8  ld/testsuite/ld-elfvers/vers27d.sym
+371707d88b1da436822797fa853ef19d  ld/testsuite/ld-elfvers/vers27d.ver
+1cd9b2f72afbd3567267abb4ded44173  ld/testsuite/ld-elfvers/vers27d1.c
+1ceed1e236c346112bd60a798bc5bee1  ld/testsuite/ld-elfvers/vers27d2.c
+88a2654d0eec5305a3c68d0592b793a7  ld/testsuite/ld-elfvers/vers27d3.c
+632dee63b1e3ad170e699bc9a97d7458  ld/testsuite/ld-elfvers/vers27d4.dsym
+2c5d452c6f2ccf09d5cb7042de30f15d  ld/testsuite/ld-elfvers/vers27d4.ver
+0523f9af999af91bcc588cad64caa834  ld/testsuite/ld-elfvers/vers28a.c
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers28a.dsym
+b8347f91cfb6122afdab80b966752a2c  ld/testsuite/ld-elfvers/vers28a.ver
+149133883cb0fb36026df232ff8a23d1  ld/testsuite/ld-elfvers/vers28b.c
+ad68feddd01832e72bfd937221a115f7  ld/testsuite/ld-elfvers/vers28b.dsym
+57f961fd2476ec908ae22cca5bdc232d  ld/testsuite/ld-elfvers/vers28b.map
+f6089cbdec4850d71e9c75b494c3d8fa  ld/testsuite/ld-elfvers/vers28b.ver
+48737299e30907008d88fa0f1990de62  ld/testsuite/ld-elfvers/vers28c.c
+08efdd6a90ac353ff47ca8792810df5f  ld/testsuite/ld-elfvers/vers28c.dsym
+7fc4fe6c89365d8f39975056a1b44159  ld/testsuite/ld-elfvers/vers28c.ver
+47fef54f84aa89c6c41f11914aee3d65  ld/testsuite/ld-elfvers/vers29.c
+a6be6c310cbb42eb169556ba1a5589ba  ld/testsuite/ld-elfvers/vers29.dsym
+241c2d09a990ebcccab6c64677fecd23  ld/testsuite/ld-elfvers/vers29.ver
+2198856c8569cc7494ffe89650a9e63b  ld/testsuite/ld-elfvers/vers3.c
+c1b9e106ce57e5a1d19a19e5ad108ea6  ld/testsuite/ld-elfvers/vers3.dsym
+e0e45b69cce7de81a0dc947b78b5da14  ld/testsuite/ld-elfvers/vers3.ver
+f5c281cfb038224a4d4d58aef1722ea5  ld/testsuite/ld-elfvers/vers30.c
+af0907b427c1b2ba51c5887d6ed5048a  ld/testsuite/ld-elfvers/vers30.dsym
+80c39498d585c4ed1e673c9913baad4c  ld/testsuite/ld-elfvers/vers30.map
+b45a3a1661fb8c7f8c4e0fc980244eff  ld/testsuite/ld-elfvers/vers30.ver
+6e5a4cce520eb1d178d64b496ff8ecdb  ld/testsuite/ld-elfvers/vers31.c
+1b51c6c4590f80d07658d22f1c59d739  ld/testsuite/ld-elfvers/vers31.dsym
+16b25cba9740f9d81f00ccd060795fb5  ld/testsuite/ld-elfvers/vers31.map
+92cab7ba681c122ff7c0675d0e08a825  ld/testsuite/ld-elfvers/vers31.ver
+eaeb7b786e1af44d384e8c84dc7a2dc4  ld/testsuite/ld-elfvers/vers4.c
+41acbfbc82b54219566366b069b2ce34  ld/testsuite/ld-elfvers/vers4.sym
+e878b24651400ca1fb1bdc0c16a22848  ld/testsuite/ld-elfvers/vers4a.dsym
+41acbfbc82b54219566366b069b2ce34  ld/testsuite/ld-elfvers/vers4a.sym
+d2aec4498102269670d1969b1c320cc7  ld/testsuite/ld-elfvers/vers4a.ver
+940d06960890b0eb73114f452b44604a  ld/testsuite/ld-elfvers/vers5.c
+3874cf48820bc48dd48d1ee16551af06  ld/testsuite/ld-elfvers/vers6.c
+440222caab8e6f857b77c1ba50d81e84  ld/testsuite/ld-elfvers/vers6.dsym
+b355de4ba2834305bca9bf3b7cc91e70  ld/testsuite/ld-elfvers/vers6.sym
+c6dda7839f06ae8858d0d413c6b436dc  ld/testsuite/ld-elfvers/vers6.ver
+8c6338ab91836afb2918ef463e5e899a  ld/testsuite/ld-elfvers/vers7.c
+9a7ae246a7154e67158fc0cdcda850d8  ld/testsuite/ld-elfvers/vers7.map
+8d7f1e06f9194fa66402e5efff269754  ld/testsuite/ld-elfvers/vers7a.c
+b3fdb5ca0a4cf57530bf9d838fe825da  ld/testsuite/ld-elfvers/vers7a.dsym
+d466ec8b7fcadee36db85cac92c1601a  ld/testsuite/ld-elfvers/vers7a.sym
+1396fb0ab13b5034ae21806a016c0c93  ld/testsuite/ld-elfvers/vers7a.ver
+258f61144bcd39b444b75dba182129e6  ld/testsuite/ld-elfvers/vers8.c
+5eadb3d448dc734491d4524e07f15f63  ld/testsuite/ld-elfvers/vers8.map
+0a8f32d8dd82da8eb5ed94ffa9f3bd08  ld/testsuite/ld-elfvers/vers8.ver
+2866447458043d608659fc1fe92f617a  ld/testsuite/ld-elfvers/vers9.c
+21dcd2120edc32b5e36974abdc6e1f3e  ld/testsuite/ld-elfvers/vers9.dsym
+0d2f6f5317e5732e649745046ab2ab9a  ld/testsuite/ld-elfvers/vers9.sym
+34b27d008c1c164f12193e8be9c2b517  ld/testsuite/ld-elfvers/vers9.ver
+e7c2a2db4675513e62d8ffee0261114b  ld/testsuite/ld-elfvsb/common.c
+4bb9ca85a1469d2af2ac23d7a8f540a0  ld/testsuite/ld-elfvsb/define.s
+ab58dd4aea8894af968cae07e98cce1c  ld/testsuite/ld-elfvsb/elf-offset.ld
+311acb2b4478311b5dd7d43553e4167c  ld/testsuite/ld-elfvsb/elfvsb.dat
+033ac9efbdf1ffe0b6007322ef214d43  ld/testsuite/ld-elfvsb/elfvsb.exp
+0f4ccc01cb7d00b64f7a0ec8935e676b  ld/testsuite/ld-elfvsb/hidden0.d
+b3cc978c32e52857d75335179638fd48  ld/testsuite/ld-elfvsb/hidden1.d
+8b9318f6a063a61d89bcf2bddbc53efd  ld/testsuite/ld-elfvsb/hidden2.d
+ab59f9746bcefe5b7366026573457d50  ld/testsuite/ld-elfvsb/hidden2.ld
+89ab48379336c8ecd7ea7cffdfe97ad3  ld/testsuite/ld-elfvsb/hidden2.s
+ba520e2e430dcf45715d1e2e722d6b16  ld/testsuite/ld-elfvsb/internal0.d
+c2cd99fe9c888c38c81f3b2460e9930c  ld/testsuite/ld-elfvsb/internal1.d
+c6bb503e50cc239732b047b2a912e731  ld/testsuite/ld-elfvsb/main.c
+332c0511ac0ff24ec0ed4e77685307a5  ld/testsuite/ld-elfvsb/protected0.d
+38ab687e74c96b3606418b97a2107295  ld/testsuite/ld-elfvsb/protected1.d
+ed8e98b49b0416adae1841947ee56f6d  ld/testsuite/ld-elfvsb/sh1.c
+e7df277af0ed8763f2422396575192e7  ld/testsuite/ld-elfvsb/sh2.c
+164bf9fa3225c27578caf6a12ecc5779  ld/testsuite/ld-elfvsb/sh3.c
+44ad79da0c181cbfb55b2f36aac6a201  ld/testsuite/ld-elfvsb/test.c
+2f0256a43da423922ed1929bea438972  ld/testsuite/ld-elfvsb/undef.s
+e10cb4a11a7381050cb3277e48f1ec1e  ld/testsuite/ld-elfweak/dso.dsym
+046e158fe0af59748019e9d9d86bad4d  ld/testsuite/ld-elfweak/bar.c
+96221199fd09def3e578f62aaa264c39  ld/testsuite/ld-elfweak/bar1a.c
+0e4106aabff604c09aa201ce238d54dd  ld/testsuite/ld-elfweak/bar1b.c
+9f3b2607071ce0deb9d70f4e65b9cf9e  ld/testsuite/ld-elfweak/bar1c.c
+44d2701e2241d6fc3ece7a49d12f085c  ld/testsuite/ld-elfweak/dsodata.dsym
+7313186c25c0a3dfd3463f2f73b39b79  ld/testsuite/ld-elfweak/dsow.dsym
+607c3428b4eb9e814e7f9a8926062ec9  ld/testsuite/ld-elfweak/dsowdata.dsym
+5b008354ff50dae7131ae4c3184acdc4  ld/testsuite/ld-elfweak/elfweak.exp
+0675dd6a498ed0fe35607abf03517c33  ld/testsuite/ld-elfweak/foo.c
+61ce595ea3b7dda0bed97536cc50991f  ld/testsuite/ld-elfweak/foo1a.c
+d999331c477d9e594cdbe6642952da5a  ld/testsuite/ld-elfweak/foo1b.c
+8ab030ac10dd0340d51ce6e293aa31b0  ld/testsuite/ld-elfweak/main.c
+d082bc04bb367593bf0d9403824584ac  ld/testsuite/ld-elfweak/main1.c
+c0710d6b4f15dfa88f600b0e6b624077  ld/testsuite/ld-elfweak/size.dat
+ca873fa02ef818fdf7cadbf28d5830e9  ld/testsuite/ld-elfweak/size2.d
+7f8709337349165a691bfb796d9ba358  ld/testsuite/ld-elfweak/size2a.s
+3d27e4cedeb4cd50d6a3f4f56d3c6f6f  ld/testsuite/ld-elfweak/size2b.s
+bb8fccf253fe11bdc128fb40ec1a1821  ld/testsuite/ld-elfweak/size_bar.c
+007464380f12ed6e882f8074a930292c  ld/testsuite/ld-elfweak/size_foo.c
+79bafe4b4c71963e9efe1a2a99474fc6  ld/testsuite/ld-elfweak/size_main.c
+6ff9ed6df35266db3df63a42222569ff  ld/testsuite/ld-elfweak/strong.dat
+de6f7a14da56939c6761b60222718890  ld/testsuite/ld-elfweak/strong.sym
+fddc5be8a7bda224817c3fa41096c8f3  ld/testsuite/ld-elfweak/strongcomm.sym
+5a6dd36b14499e59820a074213e6c5df  ld/testsuite/ld-elfweak/strongdata.dat
+2ffd77b575b3bd0706ab4ba163259b46  ld/testsuite/ld-elfweak/strongdata.sym
+dcf5e53a281f26dbad477cdba407e168  ld/testsuite/ld-elfweak/weak.dat
+7313186c25c0a3dfd3463f2f73b39b79  ld/testsuite/ld-elfweak/weak.dsym
+40040714fbc533439a8346bed87f39be  ld/testsuite/ld-elfweak/weakdata.dat
+607c3428b4eb9e814e7f9a8926062ec9  ld/testsuite/ld-elfweak/weakdata.dsym
+740e6c75a141a24eb7156f293adc9c31  ld/testsuite/ld-fastcall/export.s
+8393fb6dde47261a078bb71489fe960c  ld/testsuite/ld-fastcall/fastcall.exp
+398cd605e80d06f2edbaa7bb1b81ee32  ld/testsuite/ld-fastcall/import.s
+cc41507ba2036874052bbab955b769b6  ld/testsuite/ld-frv/fdpic-pie-1.d
+c6a403fab71ad34af64723536c018756  ld/testsuite/ld-frv/fdpic-pie-2.d
+036f2e58a8bbbf45a822e963824e9eef  ld/testsuite/ld-frv/fdpic-pie-5.d
+968734d40a8c4556b11608cedf60bc2d  ld/testsuite/ld-frv/fdpic-pie-6-fail.d
+6e95984441beeca5f56bf0910b606fab  ld/testsuite/ld-frv/fdpic-pie-6.d
+e288de935e2088c24012d910539e7aa8  ld/testsuite/ld-frv/fdpic-pie-7.d
+de5c6fce807f3bf3ea05d72e64847dc6  ld/testsuite/ld-frv/fdpic-pie-8.d
+e38d66851473ccb9acdb382ddf545173  ld/testsuite/ld-frv/fdpic-shared-1.d
+44f78d9d02ec25a226af8a0153d7f3ca  ld/testsuite/ld-frv/fdpic-shared-2-fail.d
+2b1ecf50cb0ae530f538e41e534257e0  ld/testsuite/ld-frv/fdpic-shared-2.d
+cbb3d2f0bceb9c3d430f15b8157ac36a  ld/testsuite/ld-frv/fdpic-shared-3.d
+c64f1ffc25ddabf83b05145828e6d973  ld/testsuite/ld-frv/fdpic-shared-4.d
+9eff95cea03ee8944f5ec4e22dc373bf  ld/testsuite/ld-frv/fdpic-shared-5.d
+47129de7d81b57da3a558829c929a0e8  ld/testsuite/ld-frv/fdpic-shared-6-fail.d
+11b76ba624ed43d42a49d5bbfdf59a34  ld/testsuite/ld-frv/fdpic-shared-6.d
+3736ec9bc2505562d566f737de13d335  ld/testsuite/ld-frv/fdpic-shared-7.d
+df883e86ef4001df59397b1deddf779b  ld/testsuite/ld-frv/fdpic-shared-8-fail.d
+4b0caf7ae0d50f59f001dd47aa8f791e  ld/testsuite/ld-frv/fdpic-shared-8.d
+9400d6cc06da7cc32296226e84c3ff78  ld/testsuite/ld-frv/fdpic-shared-local-2.d
+d3d29fa692ee1b23ef350080de143c23  ld/testsuite/ld-frv/fdpic-shared-local-8.d
+ab6c75ef5e03df3b89c91ea68fbc803f  ld/testsuite/ld-frv/fdpic-static-1.d
+62ce6d41d5c5e6ef2bd5852a7f173d41  ld/testsuite/ld-frv/fdpic-static-2.d
+38da2b407d6a293dcf365cac941194c8  ld/testsuite/ld-frv/fdpic-static-5.d
+7995cc7e9cd3d51c1854028567ddbd0e  ld/testsuite/ld-frv/fdpic-static-6.d
+cc1097db4cd49675213230866ee591af  ld/testsuite/ld-frv/fdpic-static-7.d
+930cf511857f462a346d097c88f7ffa0  ld/testsuite/ld-frv/fdpic-static-8.d
+a1349c5918f0d90eb553918d58832e2e  ld/testsuite/ld-frv/fdpic.exp
+05e4f28acb84feeaf5710145293999db  ld/testsuite/ld-frv/fdpic1.s
+c6d87683d1fa4888efa7ddc918099749  ld/testsuite/ld-frv/fdpic2.ldv
+cfa8675017dda6a3ec48235022d86a36  ld/testsuite/ld-frv/fdpic2.s
+d3a945e4376ce0ad93d1099a8dd3d1fc  ld/testsuite/ld-frv/fdpic2min.ldv
+e455be96f7634ac1d9e36603b080db76  ld/testsuite/ld-frv/fdpic3.s
+63a031ad889a71153cb467efe899eb91  ld/testsuite/ld-frv/fdpic4.s
+cfb53b605cad0eede6f786417b40363d  ld/testsuite/ld-frv/fdpic5.s
+5b6860c160aff69dfaedc50d8a0a6391  ld/testsuite/ld-frv/fdpic6.ldv
+a395bf06c37a4615ba0d0bcce7da833b  ld/testsuite/ld-frv/fdpic6.s
+88ba83aa62acc75b0d9b601f2176e799  ld/testsuite/ld-frv/fdpic7.s
+d2006465db117fb02c0c9f1b5f6bd73c  ld/testsuite/ld-frv/fdpic8.ldv
+ef0ec67da07de5b9741c96073f814175  ld/testsuite/ld-frv/fdpic8.s
+906b49e106ec05d8fd119a49bba35044  ld/testsuite/ld-frv/fdpic8min.ldv
+2aab41e05d636fa2c0c57d293674e41b  ld/testsuite/ld-frv/fr450-link.d
+801d14a6810ebae1f5eefda4bac2a4d8  ld/testsuite/ld-frv/fr450-linka.s
+801d14a6810ebae1f5eefda4bac2a4d8  ld/testsuite/ld-frv/fr450-linkb.s
+801d14a6810ebae1f5eefda4bac2a4d8  ld/testsuite/ld-frv/fr450-linkc.s
+9715dc81c33a30856af86db8e2ed1e6d  ld/testsuite/ld-frv/frv-elf.exp
+98f770864b645ad0c0d7446ea2e654c8  ld/testsuite/ld-frv/tls-1-dep.s
+6237447698468c17c8cd3726671adc56  ld/testsuite/ld-frv/tls-1-shared.lds
+37fdb5cb8586d27c2d5465cd79a92132  ld/testsuite/ld-frv/tls-1.s
+e1f7b6df59d7016724ec121bb551bf0d  ld/testsuite/ld-frv/tls-2.s
+f865508510be9a71fc6c039e3b113f7d  ld/testsuite/ld-frv/tls-3.s
+dde96956efd6712dfc9a2c268fcf8edb  ld/testsuite/ld-frv/tls-dynamic-1.d
+c422db8d4de06aca18017085c295db30  ld/testsuite/ld-frv/tls-dynamic-2.d
+ffe2aa0c1a287d20ffffc79c32d108c1  ld/testsuite/ld-frv/tls-dynamic-3.d
+fece3d35c82909c1f5dcc213389fdac9  ld/testsuite/ld-frv/tls-initial-shared-2.d
+225d631d2c9b238e9843ce41503b3770  ld/testsuite/ld-frv/tls-pie-1.d
+bf3b211fa5854de45ad2e6baece8fdd5  ld/testsuite/ld-frv/tls-pie-3.d
+d7e3b51211d8a04af1b220a768519ff8  ld/testsuite/ld-frv/tls-relax-dynamic-1.d
+186e6ab9fdaaa58c23a21d0eadbcf3c8  ld/testsuite/ld-frv/tls-relax-dynamic-2.d
+2e3d75369609f336ac67adcb58eb1fce  ld/testsuite/ld-frv/tls-relax-dynamic-3.d
+6a9686d6d6c4b4831af27365cffb7830  ld/testsuite/ld-frv/tls-relax-initial-shared-2.d
+998fea8bd4de754b609d89ed3439e773  ld/testsuite/ld-frv/tls-relax-pie-1.d
+eb45ae43607ffbd561547fd2bd12b654  ld/testsuite/ld-frv/tls-relax-pie-3.d
+e193b385238ffe9725ac6197caec1087  ld/testsuite/ld-frv/tls-relax-shared-1.d
+96fa3b62f5e1ea374fcb3df99986216f  ld/testsuite/ld-frv/tls-relax-shared-2.d
+d5f8eab09ff65b7c9625805e900ca076  ld/testsuite/ld-frv/tls-relax-shared-3.d
+ae1bf958e55ae4c6f551d37a4b266e97  ld/testsuite/ld-frv/tls-relax-static-1.d
+73cf5520002fe0ab6d4d07150c44c824  ld/testsuite/ld-frv/tls-relax-static-3.d
+1ec18ca37d8187658f5a325dc3a6615a  ld/testsuite/ld-frv/tls-shared-1-fail.d
+e3bc1c85127bc55e2be2c91762326e86  ld/testsuite/ld-frv/tls-shared-1.d
+90e26493e536e7b829bfb7d7a352a97a  ld/testsuite/ld-frv/tls-shared-2.d
+d754722cb602a7e9b654ccff97ff84ed  ld/testsuite/ld-frv/tls-shared-3.d
+0fa66ddabe06798bdf8339d5578afff2  ld/testsuite/ld-frv/tls-static-1.d
+0f1474e757abab9a746f13b71f007251  ld/testsuite/ld-frv/tls-static-3.d
+0e9e30f44770b23fd7912fbbd6322855  ld/testsuite/ld-frv/tls.exp
+98c4a6fd6872bcd109e317822e8a76b0  ld/testsuite/ld-h8300/gcsection.d
+6fe0410a922b80e1abc7ca25bf822f97  ld/testsuite/ld-h8300/gcsection.s
+62a1f33d9bff92909af67eb764c03e80  ld/testsuite/ld-h8300/h8300.exp
+e6a00aab6e0b5068195989a402c44d69  ld/testsuite/ld-h8300/relax-2.d
+4f488bd30141b1f3cea35bd59a56bc2d  ld/testsuite/ld-h8300/relax-2.s
+dfb37fd13b0c076c375d173f915b344d  ld/testsuite/ld-h8300/relax-3-coff.d
+97c8bdda98b7d9c79d9c8fda62d56489  ld/testsuite/ld-h8300/relax-3.d
+a2e9dec4641c7321bc8b3a2425a2ef4e  ld/testsuite/ld-h8300/relax-3.s
+6695dd115983f75263961b8f46393d1d  ld/testsuite/ld-h8300/relax-4-coff.d
+5792d761c4b0c3456a39001785b73f87  ld/testsuite/ld-h8300/relax-4.d
+1dba717565a0240b28da4a5ad6ea175d  ld/testsuite/ld-h8300/relax-4.s
+8e23d5349b426ea3bd58b6461dbfa3f0  ld/testsuite/ld-h8300/relax-5-coff.d
+d461ec778d28c967a8d80eb4453ffe04  ld/testsuite/ld-h8300/relax-5.d
+e99729d992d349d8efacc4be17ffc728  ld/testsuite/ld-h8300/relax-5.s
+6fc6e5f4f2d011f032d967d2c5c47a9b  ld/testsuite/ld-h8300/relax-6-coff.d
+f03ce5f2426f3b9c3712d3ba8f266e30  ld/testsuite/ld-h8300/relax-6.d
+71494a5071587d58c44881ddba8f98b8  ld/testsuite/ld-h8300/relax-6.s
+a6d0a3d0032213f8a5f6a37259b4dad1  ld/testsuite/ld-h8300/relax.d
+cf8d1ef781c6a11ee4c2c65408f52849  ld/testsuite/ld-h8300/relax.s
+15574e04adc43ed3e8507afc1517b9ae  ld/testsuite/ld-i386/combreloc.d
+e697d9124e4f893f9626c1bbb5081175  ld/testsuite/ld-i386/abs.d
+4223c02660ef295874b7f46e534bb756  ld/testsuite/ld-i386/abs.s
+bfad8fd9caab1c503c3e547132bba8e3  ld/testsuite/ld-i386/combreloc.s
+6a24bf2c11edfd744205734d0d2776f1  ld/testsuite/ld-i386/emit-relocs.d
+47a609aa14618023c1317f741f3810de  ld/testsuite/ld-i386/emit-relocs.s
+d5a9ca3ac4385a07bdc18d2b3eed8bf3  ld/testsuite/ld-i386/i386.exp
+55da47cb01da3536927b36f6abf83bbc  ld/testsuite/ld-i386/pcrel16.d
+86c55cbae78801844b5fbab4a5134989  ld/testsuite/ld-i386/pcrel16.s
+4d55687220a930ac78d5153b16fa70ad  ld/testsuite/ld-i386/pcrel8.d
+72a801ea2498c750a89388b264ee332f  ld/testsuite/ld-i386/pcrel8.s
+36c43f6de32c1701701fdd38d31dac62  ld/testsuite/ld-i386/reloc.d
+ee1b7cbb64cf7c75b90dc73e1c708915  ld/testsuite/ld-i386/reloc.s
+09638a8b22599a17a1be26d8a7c6303e  ld/testsuite/ld-i386/tlsbin.dd
+47d0a58daf3fe383e6113e6891c144fb  ld/testsuite/ld-i386/tlsbin.rd
+f1f22d7f610addfd37d52a7882ff0f9e  ld/testsuite/ld-i386/tlsbin.s
+6bbe847e695e4838d69ce38ca876e65f  ld/testsuite/ld-i386/tlsbin.sd
+71752f7a397c4fea7507ade467f8b454  ld/testsuite/ld-i386/tlsbin.td
+1088897c7042562cb37e328e0718bce4  ld/testsuite/ld-i386/tlsbindesc.dd
+0b3d8459749fafe5cd28eed5150fdcf6  ld/testsuite/ld-i386/tlsbindesc.rd
+c8e339bd9d5127a625f86dbf904aae86  ld/testsuite/ld-i386/tlsbindesc.s
+ce845f489f82126f8299452b88af3d1e  ld/testsuite/ld-i386/tlsbindesc.sd
+f7e9a94dc8d85ce3c25fe90b7b826d23  ld/testsuite/ld-i386/tlsbindesc.td
+e761a6a3ec30483948be2e514fa49fbd  ld/testsuite/ld-i386/tlsbinpic.s
+dc2ddf9465283ffaab9837e99d7871f2  ld/testsuite/ld-i386/tlsdesc.dd
+0cab4b29b8d277910636f5b7d4ae88b6  ld/testsuite/ld-i386/tlsdesc.rd
+4ec4e709a96a11f0ed0cf6be12ab5fff  ld/testsuite/ld-i386/tlsdesc.s
+e706776cdc31d0e257a32b41488d4811  ld/testsuite/ld-i386/tlsdesc.sd
+124d5f758280a5ffc5ac7c79676b3d31  ld/testsuite/ld-i386/tlsdesc.td
+4bb8cd4266640900774fe1b4ea80b868  ld/testsuite/ld-i386/tlsg.s
+52f26819c8f6efd2cd9d5b378518d949  ld/testsuite/ld-i386/tlsg.sd
+5be694bc3e4d23c360c5179a8dcd696b  ld/testsuite/ld-i386/tlsgdesc.dd
+98e3c7bfc7a272ced4ccf97376cf2479  ld/testsuite/ld-i386/tlsgdesc.rd
+085d73ea85a181ebdc323e641e36d1cb  ld/testsuite/ld-i386/tlsgdesc.s
+2e74682a19e57586b9823e31ecf73198  ld/testsuite/ld-i386/tlsindntpoff.dd
+eb49cc94ea6fe44f33898f97f42637f2  ld/testsuite/ld-i386/tlsindntpoff.s
+1bdd583619347d5963aaad2762e13865  ld/testsuite/ld-i386/tlslib.s
+27ac2275e277ec3b75a2ba2adae851ac  ld/testsuite/ld-i386/tlsnopic.dd
+445a78b8089ec2a165b31816e145deb9  ld/testsuite/ld-i386/tlsnopic.rd
+1841d64f1dc66d766d8a4fbf10f16fe6  ld/testsuite/ld-i386/tlsnopic.sd
+fd79d8e39eadeb4103c9d00fe0db5fe0  ld/testsuite/ld-i386/tlsnopic1.s
+aaa7d0d4d8b25c5f3462865cc7574b49  ld/testsuite/ld-i386/tlsnopic2.s
+516f152de1ac05f0ac53573bda2d9413  ld/testsuite/ld-i386/tlspic.dd
+6bc1e60297e57f554e1cc24eba007e5b  ld/testsuite/ld-i386/tlspic.rd
+7b85f7f2be047e2454e7e27914b36291  ld/testsuite/ld-i386/tlspic.sd
+1ab47dd38fe6a9cdea3555de1fbc7217  ld/testsuite/ld-i386/tlspic.td
+4b385578f91c4d3a011c1b67e781f755  ld/testsuite/ld-i386/tlspic1.s
+1be6d8e1547c710f7bc12028c6522832  ld/testsuite/ld-i386/tlspic2.s
+d4eccb1336e9a31e697eae28fb9a365f  ld/testsuite/ld-i386/vxworks1-lib.dd
+e79bf538427185b3ca75d00211102266  ld/testsuite/ld-i386/vxworks1-lib.nd
+7647d9bd08aa622f79b2213406eb10b6  ld/testsuite/ld-i386/vxworks1-lib.rd
+5c0f0bd45acc45bbd63ef60c5c244d8f  ld/testsuite/ld-i386/vxworks1-lib.s
+57e13e14adacc62cab22da622bbcb01e  ld/testsuite/ld-i386/vxworks1-static.d
+69a76e3c7e0d4f7cd77e5d26b34422eb  ld/testsuite/ld-i386/vxworks1.dd
+9f9dc951af828aa8f7bddc510f85a623  ld/testsuite/ld-i386/vxworks1.ld
+1f702480f27e22a8cae404bd9288c974  ld/testsuite/ld-i386/vxworks1.rd
+94b6da333cef7b619c459007a7afbbe5  ld/testsuite/ld-i386/vxworks1.s
+165ed1561458c0973255f985be876845  ld/testsuite/ld-i386/vxworks2-static.sd
+3f44beb3168341e8a45bfef5bb7e4076  ld/testsuite/ld-i386/vxworks2.s
+7afb4e2fc8be35ad985dcb2e21b7cbef  ld/testsuite/ld-i386/vxworks2.sd
+3a4d9e7d99555e90d70ca58fb8d82cd1  ld/testsuite/ld-i386/zero.s
+fdea45afbb21a534711100fe512509de  ld/testsuite/ld-ia64/ia64.exp
+f58ac156c302a4a37579dd871018c503  ld/testsuite/ld-ia64/link-order.d
+e42d315601ed791d8a1f883a260776bb  ld/testsuite/ld-ia64/tlsbin.dd
+d082417831211bd1d9df9efb17a5af5c  ld/testsuite/ld-ia64/tlsbin.rd
+e493af684ae154e5de6c44ac33c9b9bf  ld/testsuite/ld-ia64/tlsbin.s
+8604e8dacdf7707d7c7454169493b9c3  ld/testsuite/ld-ia64/tlsbin.sd
+5425837cb644916b8fe5160eb7cac50a  ld/testsuite/ld-ia64/tlsbin.td
+6351909433c62754cacb97095fbce3cb  ld/testsuite/ld-ia64/tlsbinpic.s
+e0b0a05afe5e6efd10bc9fa42a6a0731  ld/testsuite/ld-ia64/tlsg.s
+7dbb29f667fa0797b82d97e60dea87ba  ld/testsuite/ld-ia64/tlsg.sd
+1b26633dd00cb298fda05dd396fa6d88  ld/testsuite/ld-ia64/tlslib.s
+c3768bbbc35442a51b419997baf497da  ld/testsuite/ld-ia64/tlspic.dd
+4b8ed3e92abaddd9397fae76f8b7bce2  ld/testsuite/ld-ia64/tlspic.rd
+1bac51ec2817188e77fcf070995210c7  ld/testsuite/ld-ia64/tlspic.sd
+4a995a6ff0cbe574e7514ac741408eac  ld/testsuite/ld-ia64/tlspic.td
+0d107c5a1c032fcfa98538191696c5d4  ld/testsuite/ld-ia64/tlspic1.s
+1be6d8e1547c710f7bc12028c6522832  ld/testsuite/ld-ia64/tlspic2.s
+e53985ac35e775e0325b6021969e4346  ld/testsuite/ld-linkonce/linkonce.exp
+5ecc76da072012a1e3384f7503e89f52  ld/testsuite/ld-linkonce/x.s
+74055a2f425a63e7866a6774b6819a28  ld/testsuite/ld-linkonce/y.s
+7e6afc7b72727f2157b351a82201014a  ld/testsuite/ld-linkonce/zeroeh.ld
+4967c9482846e7e26528ca68799a396f  ld/testsuite/ld-linkonce/zeroehl32.d
+d4849e6542dd8b7ca3142e235d2b144b  ld/testsuite/ld-m68hc11/adj-brset.d
+d064b67c8fa10a7c428de1ea6b9a1834  ld/testsuite/ld-m68hc11/adj-brset.s
+23949bf947540228ba8d72007abbd334  ld/testsuite/ld-m68hc11/adj-jump.d
+f8a56fc695e6ebcf52992449c5d76123  ld/testsuite/ld-m68hc11/adj-jump.s
+f2536953f333e9c10fd61191bd035e1b  ld/testsuite/ld-m68hc11/bug-1403.d
+062e1dc7481f152c9b001e94f92b296a  ld/testsuite/ld-m68hc11/bug-1403.s
+f3d845900cf3e345e78e8c3bec1ba8d1  ld/testsuite/ld-m68hc11/bug-1417.d
+4f8edafd4ad832f9189f7314a7b5f362  ld/testsuite/ld-m68hc11/bug-1417.s
+9d7f22b8c0e82bbde0bac7d72d89c4f6  ld/testsuite/ld-m68hc11/bug-3331.d
+6c76f540acdb2c2c1146f9445b6d85a7  ld/testsuite/ld-m68hc11/bug-3331.s
+1a8ffcaad7f9e84c1a1d1bd304ad8557  ld/testsuite/ld-m68hc11/far-hc11.d
+1361ee4f406e378eadeb5c629ba2d8a3  ld/testsuite/ld-m68hc11/far-hc11.s
+8aa3bad7129045a65da13eb15c286a54  ld/testsuite/ld-m68hc11/far-hc12.d
+abab65605cd8069cfb12e2bfb6ed0d7a  ld/testsuite/ld-m68hc11/far-hc12.ld
+c66bf3caa9a73d1c7af542339777d150  ld/testsuite/ld-m68hc11/far-hc12.s
+062d67e556aa82cb73f9c74135511aed  ld/testsuite/ld-m68hc11/link-hc12.s
+21f1eac8547085190c61077bf5de4016  ld/testsuite/ld-m68hc11/link-hcs12.d
+8f9300e38e9f0e03d41c02ab51a6fe94  ld/testsuite/ld-m68hc11/link-hcs12.s
+fbc025757ff9356c4b65a080d523149a  ld/testsuite/ld-m68hc11/m68hc11.exp
+bdfe2be8c102635c96318d5b5a441e70  ld/testsuite/ld-m68hc11/relax-direct.d
+4b6225fc6c3bd84cfb4756daa73871b0  ld/testsuite/ld-m68hc11/relax-direct.s
+7d4b0b484e170fa223129467648ce61c  ld/testsuite/ld-m68hc11/relax-group.d
+5f6185c53d79c83c661fbf096788bf1b  ld/testsuite/ld-m68hc11/relax-group.s
+3d66b1dcb169ee2296a57f40470d3d03  ld/testsuite/ld-m68k/isaa-mac.d
+fd09cc020dd5e6330dfdc9b18283bc6d  ld/testsuite/ld-m68k/isaa-mac.s
+7788f747bf8978d7dd787ec4e3a64c4e  ld/testsuite/ld-m68k/isaa-nodiv.s
+70ebca0c69ece585152b92e085c7a2c4  ld/testsuite/ld-m68k/isaa.d
+bc863c4af78043879d4732211b98990f  ld/testsuite/ld-m68k/isaa.s
+e1ea1dd9c58d7c05a5afa9ed9060a960  ld/testsuite/ld-m68k/isaaplus.d
+59604ffeea6bd5959eebc26fcfca4007  ld/testsuite/ld-m68k/isaaplus.s
+fbf6b20c03d4581ffadd57ad9d4b37df  ld/testsuite/ld-m68k/isab-float.d
+40046811c312fa8b71a312e12c0a9d70  ld/testsuite/ld-m68k/isab-float.s
+4dc937ce9efa1cbfe790ec4319865ab9  ld/testsuite/ld-m68k/isab-nousp.s
+00af175e146ef2a68df76cfebb4842b8  ld/testsuite/ld-m68k/isab.d
+1941399b05bb80ea485c3ea8d1fba8ff  ld/testsuite/ld-m68k/isab.s
+3fac15c638e27b7fb3422ebb447466c4  ld/testsuite/ld-m68k/m68k.exp
+8aac05258ad5c9f050e47892c390e3f9  ld/testsuite/ld-m68k/merge-error-1a.d
+d142e6a1ea2d9b2f64a0439381469c73  ld/testsuite/ld-m68k/merge-error-1a.s
+5054d7d2a8c62c92a638fb4951f2495d  ld/testsuite/ld-m68k/merge-error-1b.d
+d142e6a1ea2d9b2f64a0439381469c73  ld/testsuite/ld-m68k/merge-error-1b.s
+c8a16962c68d985136ad18c8e28d65ba  ld/testsuite/ld-m68k/merge-error-1c.d
+26836625491afd7e755b35ff905b47d0  ld/testsuite/ld-m68k/merge-error-1d.d
+84866fd62e950d0124e4389813ec34ba  ld/testsuite/ld-m68k/merge-error-1e.d
+ea81ec679d10bdfb7d108ac2b9f7a14a  ld/testsuite/ld-m68k/merge-ok-1a.d
+4abb166e0b29817f7db4f89b7596fc84  ld/testsuite/ld-m68k/merge-ok-1b.d
+1748e88a9ed6471d81aaf84f8f11480f  ld/testsuite/ld-m68k/merge.ld
+9b63561a73713ce2199e9825038d82df  ld/testsuite/ld-maxq/addend.dd
+3924eff3ece54d13861a624c8f2b3fc5  ld/testsuite/ld-maxq/addend.s
+22611e9878461ef3cf57c4f7d686dac2  ld/testsuite/ld-maxq/maxq.exp
+36ca51600e57c38d15b08b4c75ba87de  ld/testsuite/ld-maxq/paddr.dd
+b761799f11e0b9ead640cf36f1eef482  ld/testsuite/ld-maxq/paddr.s
+bbb61e459bd4a60511c0e2d81188eceb  ld/testsuite/ld-maxq/paddr1.dd
+4cf55da401b5df8371f455bacd8b6a8d  ld/testsuite/ld-maxq/paddr1.s
+17932e02e46a1dcb25ee8a78bc5fe6b5  ld/testsuite/ld-maxq/r32-1.s
+88a4c6746993274c105d3ca43da81f53  ld/testsuite/ld-maxq/r32-2.s
+9b2331f38b4d8a85d44aa90e51a09d71  ld/testsuite/ld-maxq/r32.dd
+9717ba3fc8beaade32eed39c142db875  ld/testsuite/ld-mips-elf/textrel-1.d
+d08bf599145e5308ea2c004b17d4cb8a  ld/testsuite/ld-mips-elf/branch-misc-1.d
+58485af8acc28f0f21d740ef8253354a  ld/testsuite/ld-mips-elf/eh-frame1-n32.d
+a8ee5f3c78cf9fbda31e58b68c6cb364  ld/testsuite/ld-mips-elf/eh-frame1-n64.d
+6533ce16a794d9ef136aa92cc3fe72c5  ld/testsuite/ld-mips-elf/eh-frame1.ld
+e6e05cd9d53743932b95addc3b98a8d8  ld/testsuite/ld-mips-elf/eh-frame1.s
+d67103a157a568c0df1957f1c74663c5  ld/testsuite/ld-mips-elf/eh-frame2-n32.d
+ee8e9f8b66036333f8c2b7a02781e793  ld/testsuite/ld-mips-elf/eh-frame2-n64.d
+936fc77ba0a03da5bb4780aefc30172b  ld/testsuite/ld-mips-elf/eh-frame3.d
+28f7f6ec7b9aabbe4d2f76c6570e9483  ld/testsuite/ld-mips-elf/eh-frame4.d
+5133b1ade1ebe826d8ae8f6d5ef1ce46  ld/testsuite/ld-mips-elf/elf-rel-got-n32.d
+7cfda8e36110f60e80a9d5c7ab683419  ld/testsuite/ld-mips-elf/elf-rel-got-n64-linux.d
+d10400cf359ebfd6826cb9f0557d85e5  ld/testsuite/ld-mips-elf/elf-rel-got-n64.d
+2b9297cc9df6c42b3cbd363c9d898498  ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d
+444f55a2dc601e7bc8021fc2f4505668  ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d
+ae33a4454b255d331b8a8072b4b842e8  ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d
+1c056f99cf7b167a12a16c864667d56a  ld/testsuite/ld-mips-elf/emit-relocs-1.d
+68726c174e72036ac5088bf9b1f81f96  ld/testsuite/ld-mips-elf/emit-relocs-1.ld
+9070e987231eb3b31f390146b225c6d6  ld/testsuite/ld-mips-elf/emit-relocs-1a.s
+04aea5d092fa2db166839099d0bc5491  ld/testsuite/ld-mips-elf/emit-relocs-1b.s
+7e3c3feb954b59ce039c6645b0489abe  ld/testsuite/ld-mips-elf/jalbal.d
+f37571577f21fbd2380b2d67bec2003c  ld/testsuite/ld-mips-elf/jalbal.s
+38ab8945b60e3f64df6420ba11ba2218  ld/testsuite/ld-mips-elf/jaloverflow-2.d
+0f97678bd905b0f04380729e167f36ba  ld/testsuite/ld-mips-elf/jaloverflow-2.s
+3e51ac18ee129575a0a23f91113cf311  ld/testsuite/ld-mips-elf/jaloverflow.d
+00610e4306ae3ff6e932f3554c8bbb0c  ld/testsuite/ld-mips-elf/jaloverflow.s
+01cd283c225235f48e77375210951566  ld/testsuite/ld-mips-elf/jr.s
+aab541cd224ffdc668cde05593710d3c  ld/testsuite/ld-mips-elf/mips-dyn.ld
+f7c1e269368b3abd061bf7e7ade229fa  ld/testsuite/ld-mips-elf/mips-elf-flags.exp
+42c5e291855be844662d73fec95f31d7  ld/testsuite/ld-mips-elf/mips-elf.exp
+368075c3db254e6302fcf5b9e9d1ec7d  ld/testsuite/ld-mips-elf/mips-lib.ld
+92f2128a15a5d4593d402ff9d7023bcd  ld/testsuite/ld-mips-elf/mips16-1.d
+bda3e92a35c420f4d0cf101be022eb7e  ld/testsuite/ld-mips-elf/mips16-1a.s
+785be539d405d32d87e61e6719da890d  ld/testsuite/ld-mips-elf/mips16-1b.s
+e692a3c6a1d69cb438a1e5c1868af8f0  ld/testsuite/ld-mips-elf/mips16-hilo-n32.d
+09cde5e4cfc3ffba30c68e880df660d3  ld/testsuite/ld-mips-elf/mips16-hilo.d
+545fcec307a4e45f2b26b40ce0700269  ld/testsuite/ld-mips-elf/mips16-hilo.ld
+b3e4b204fc6c603a0ea6eb1ce3c29fae  ld/testsuite/ld-mips-elf/mips16-hilo.s
+ae026e1e5ffd2a267ebfe4d636059d42  ld/testsuite/ld-mips-elf/multi-got-1-1.s
+547edd71875ed91b371f99af69c969fb  ld/testsuite/ld-mips-elf/multi-got-1-2.s
+f622485dab6d99ccd4f59bcfd81c4e39  ld/testsuite/ld-mips-elf/multi-got-1.d
+b0180cb7263b7943ec787e18ef17c0f5  ld/testsuite/ld-mips-elf/multi-got-no-shared-1.s
+ce39cc1939c286dd4991e0cfb54f9304  ld/testsuite/ld-mips-elf/multi-got-no-shared-2.s
+3b21496be4a33c89046b8c38457db6ff  ld/testsuite/ld-mips-elf/multi-got-no-shared.d
+7520418cc156dc2eb353a7c527d0b7bc  ld/testsuite/ld-mips-elf/region1.d
+8bddba546baafcfd0c720e84198b224a  ld/testsuite/ld-mips-elf/region1.t
+19a77e97e16088a5a83b3916b5c9406f  ld/testsuite/ld-mips-elf/region1a.s
+dbaca5ab0c56146533bcb91837e1ec4c  ld/testsuite/ld-mips-elf/region1b.s
+f24bfa45095e6b4f81d19e1a9b5f067e  ld/testsuite/ld-mips-elf/rel32-n32.d
+5127c8aebf92eb8413a3bf64417b1a4f  ld/testsuite/ld-mips-elf/rel32-o32.d
+ddaac36abb5634e6b2fd1ed710875f2a  ld/testsuite/ld-mips-elf/rel32.s
+47780a5f7fc66d9bb08ad24db27c3beb  ld/testsuite/ld-mips-elf/rel64.d
+36bb8fc0b193491dbdcab5452d411825  ld/testsuite/ld-mips-elf/rel64.s
+65dad103f835fa02a59f4f8faded3ee4  ld/testsuite/ld-mips-elf/relax-jalr-n32-shared.d
+ee55093b6504613d255c4fd06ff46d20  ld/testsuite/ld-mips-elf/relax-jalr-n32.d
+332c6c52959bc018e301be2913bc1931  ld/testsuite/ld-mips-elf/relax-jalr-n64-shared.d
+73f2e464c48afdd595353e7de102e014  ld/testsuite/ld-mips-elf/relax-jalr-n64.d
+f5a605435fe5054c5d7563852b8f52c6  ld/testsuite/ld-mips-elf/relax-jalr.s
+c52959657f744af644af14847e5a1363  ld/testsuite/ld-mips-elf/reloc-1-n32.d
+38a23fca79a356cab3ed87df912971ff  ld/testsuite/ld-mips-elf/reloc-1-n64.d
+616ac739ba5a655d578f1d1962761589  ld/testsuite/ld-mips-elf/reloc-1-rel.d
+35fedd85b8edee7ba5015139e03d7345  ld/testsuite/ld-mips-elf/reloc-1a.s
+db2a8158231f72fdc62917388227398c  ld/testsuite/ld-mips-elf/reloc-1b.s
+ca8216c82884ad811b7edb3e9fbe9d72  ld/testsuite/ld-mips-elf/reloc-2.d
+ea87f337407d724f0873ca78cf340d58  ld/testsuite/ld-mips-elf/reloc-2.ld
+0adb1722a72e9a9a054f9a6b92b56e8d  ld/testsuite/ld-mips-elf/reloc-2a.s
+f051089b05fc01590658e2bc45fa6cf1  ld/testsuite/ld-mips-elf/reloc-2b.s
+5e53d69afb16b0aa1111842113ab9a4d  ld/testsuite/ld-mips-elf/reloc-merge-lo16.d
+9053fa49eb5a350f5eb6ff68429b4b1c  ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld
+ca0f2383e1abaa4194db6d328616a283  ld/testsuite/ld-mips-elf/reloc-merge-lo16.s
+5018b9cc7ffa201db975a01c554aa5d3  ld/testsuite/ld-mips-elf/textrel-1.s
+fc372d8b9bd749c8278acd98e9af38f9  ld/testsuite/ld-mips-elf/tls-hidden2-got.d
+82c434e36b515e39ab520a94499fb907  ld/testsuite/ld-mips-elf/tls-hidden2.d
+8da4ca44d8d4d64da2f924f77f16ebff  ld/testsuite/ld-mips-elf/tls-hidden2a.s
+28ebb08fa8f0f0384c6f6e94b017b6c4  ld/testsuite/ld-mips-elf/tls-hidden2b.s
+a64da8557c2c70db7e3c4b61da95854d  ld/testsuite/ld-mips-elf/tls-hidden3.d
+d965fc186a699ff63f1c7e378907aeb4  ld/testsuite/ld-mips-elf/tls-hidden3.got
+121bc1886952186cc959427df4cd7b29  ld/testsuite/ld-mips-elf/tls-hidden3.ld
+3cf286bc87bb0870f0cbf605190595f3  ld/testsuite/ld-mips-elf/tls-hidden3.r
+596cb16541a279aea4116f695673985c  ld/testsuite/ld-mips-elf/tls-hidden3a.s
+29d61123d595b387ed26211c5aeac27d  ld/testsuite/ld-mips-elf/tls-hidden3b.s
+45521cd0a9f7e6b9a8c67e525b15c57b  ld/testsuite/ld-mips-elf/tls-hidden4.got
+c00713bed669d070610aa623598dc522  ld/testsuite/ld-mips-elf/tls-hidden4.r
+18ce86b8cf6084e6197d64c86b95d9ad  ld/testsuite/ld-mips-elf/tls-hidden4a.s
+bb0771146a19efa38c6dbab03a6677c5  ld/testsuite/ld-mips-elf/tls-hidden4b.s
+dcf6ae3878ee8bbe288194214b1cf4b8  ld/testsuite/ld-mips-elf/tls-multi-got-1-1.s
+e27dfdf2d9f50b3a1c3405c0928464f9  ld/testsuite/ld-mips-elf/tls-multi-got-1-2.s
+ba48b78078090a6136ab1175d072378c  ld/testsuite/ld-mips-elf/tls-multi-got-1.d
+504f6e440f2f33960e51f6da213c2215  ld/testsuite/ld-mips-elf/tls-multi-got-1.got
+27665bdb4d63de31c9e789455d7baad9  ld/testsuite/ld-mips-elf/tls-multi-got-1.r
+17d53c9f8eb3bac377102ddb5a737526  ld/testsuite/ld-mips-elf/tlsbin-o32.d
+2e6425c02fce21d925318ff78b22c31e  ld/testsuite/ld-mips-elf/tlsbin-o32.got
+c792434d81806a231d8c427cb4080159  ld/testsuite/ld-mips-elf/tlsbin-o32.s
+f99fa9bb2da0aff7a7631067a1f19f69  ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d
+fa5385ff778db94f7167f0ae0c121450  ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got
+490d90164e0e44c51e0080e14388c200  ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d
+0701e3fd0f976d56795e97ee93037f6a  ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
+fbdeab37b3ee0ec10ee1ef69f15c2fff  ld/testsuite/ld-mips-elf/tlsdyn-o32-2.s
+c17d14a1e986290d52e83189cae2c0c5  ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d
+a96acfe536c7610ccba6e29ac04304ec  ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
+2a3763261c3cf5336a64c237fd7032ee  ld/testsuite/ld-mips-elf/tlsdyn-o32.d
+54f7ef19673a4455c280cf0dc3f8b4a4  ld/testsuite/ld-mips-elf/tlsdyn-o32.got
+2f7c87e5cb0941155de927c09a22f82a  ld/testsuite/ld-mips-elf/tlsdyn-o32.s
+e04425f26450dde17dc78fd219a95744  ld/testsuite/ld-mips-elf/tlslib-hidden.ver
+58ae49973a8794a88c0e94d0457a2616  ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got
+43b208e75e8a3bfd0dda9347c4d26fe8  ld/testsuite/ld-mips-elf/tlslib-o32-ver.got
+52e57d3b0644d352de719bd4a13d8074  ld/testsuite/ld-mips-elf/tlslib-o32.d
+e765c9acc1174939fc696374a73dc510  ld/testsuite/ld-mips-elf/tlslib-o32.got
+73d7902bba1b0277980dd7077187132d  ld/testsuite/ld-mips-elf/tlslib-o32.s
+e79ddbda95735cce0f98745385b37e44  ld/testsuite/ld-mips-elf/tlslib.ver
+aa69e1de2ff9003020fa77ecc33fb517  ld/testsuite/ld-mips-elf/vxworks1-lib.dd
+440aa174c9badaa86dd5f0dee60244e3  ld/testsuite/ld-mips-elf/vxworks1-lib.nd
+7075ace887172c6b7cbccb2ac2f622e1  ld/testsuite/ld-mips-elf/vxworks1-lib.rd
+32b8872e821ae6654c0b8b93831b090b  ld/testsuite/ld-mips-elf/vxworks1-lib.s
+57e13e14adacc62cab22da622bbcb01e  ld/testsuite/ld-mips-elf/vxworks1-static.d
+45ff6994e80bfdd76f565ab15bd740fc  ld/testsuite/ld-mips-elf/vxworks1.dd
+c751bae59ac8451c0800b3b5411419a5  ld/testsuite/ld-mips-elf/vxworks1.ld
+b1f7e09197ea08f0bdf9a6512a27ecc3  ld/testsuite/ld-mips-elf/vxworks1.rd
+82bc233897ef8651545c08a78fc4199a  ld/testsuite/ld-mips-elf/vxworks1.s
+165ed1561458c0973255f985be876845  ld/testsuite/ld-mips-elf/vxworks2-static.sd
+d0f1c70f160b4a40447679957bb43902  ld/testsuite/ld-mips-elf/vxworks2.s
+7afb4e2fc8be35ad985dcb2e21b7cbef  ld/testsuite/ld-mips-elf/vxworks2.sd
+1d6f7a3dc089864de5e234e81880f984  ld/testsuite/ld-mips-elf/stub-dynsym-1-10000.d
+88f241289f9c5dbb15595f56e3bcbf6e  ld/testsuite/ld-mips-elf/stub-dynsym-1-2fe80.d
+82b76bfd94c016f538e5a45536840144  ld/testsuite/ld-mips-elf/stub-dynsym-1-7fff.d
+019989e23ec375399af67c17ec061cd1  ld/testsuite/ld-mips-elf/stub-dynsym-1-8000.d
+ace95ceba6066d15c02d749bccb5c35a  ld/testsuite/ld-mips-elf/stub-dynsym-1-fff0.d
+17472fd6bd43f7e0a0bbee7bec4b56d1  ld/testsuite/ld-mips-elf/stub-dynsym-1.ld
+771e5b7a77527a92c59bb09aacc2245b  ld/testsuite/ld-mips-elf/stub-dynsym-1.s
+92c2c53d6e192bf5692ce25b44285e67  ld/testsuite/ld-mmix/areg-t.s
+29bbc00fcf8488cdcda5c967947c9abd  ld/testsuite/ld-mmix/a.s
+832fb8cae0b098878fed53d48e807ce5  ld/testsuite/ld-mmix/areg-256.s
+9c3467333c3017bb3487458a63a6a443  ld/testsuite/ld-mmix/aregm.s
+bbc12b910148056242b16ac06ffe658e  ld/testsuite/ld-mmix/b-badfil1.d
+5757a79cbdb495ad2ebdb65ae1baee63  ld/testsuite/ld-mmix/b-badfil1.s
+d3539629793229e1bedc30fca7ebab4e  ld/testsuite/ld-mmix/b-badfil2.d
+4d945d415b8a0b5d0d1960ae0aad8dd5  ld/testsuite/ld-mmix/b-badfil2.s
+6d361444d04985a9d6ffcd79ab0d9102  ld/testsuite/ld-mmix/b-badfixo.d
+696b375abc32c3e05c78864742e8ed0f  ld/testsuite/ld-mmix/b-badfixo.s
+0ecd244dbb6bfba1aab4fd1c9ba36fed  ld/testsuite/ld-mmix/b-badloc.d
+ca07c72cc90fe7958c01e45d0b299c07  ld/testsuite/ld-mmix/b-badloc.s
+03b06dbe7e50760382702f5cf5506e83  ld/testsuite/ld-mmix/b-badlop.d
+c0eda3287e093d9baa1a9976fc611109  ld/testsuite/ld-mmix/b-badlop.s
+cfa814a7c613f75d100f82cf82cd6082  ld/testsuite/ld-mmix/b-badm.d
+bece4f048fbf06e4397d09a0e8cf3f84  ld/testsuite/ld-mmix/b-badm2.s
+308e34a5c6526b3bc77c958a0be05e0f  ld/testsuite/ld-mmix/b-badmain.s
+d372faf0a14a0dfcc1553deb051f94db  ld/testsuite/ld-mmix/b-badquot.d
+27a23d67dc01f3c9ead4adb018ca1754  ld/testsuite/ld-mmix/b-badquot.s
+3f655a8b08008f054fdfa2a96de54a40  ld/testsuite/ld-mmix/b-badrx1.d
+b6dd30dc8691d22e1f65f4021f05c56b  ld/testsuite/ld-mmix/b-badrx1.s
+cb9c0accff2b737374ca055f980dbe13  ld/testsuite/ld-mmix/b-badrx2.d
+93f541fd556713ab6d8d21db803d1b66  ld/testsuite/ld-mmix/b-badrx2.s
+c379ff543ab01fedc4ad86f98bbb5273  ld/testsuite/ld-mmix/b-badrx3.d
+bf429322a5db6134c31b0ad125e1fe47  ld/testsuite/ld-mmix/b-badrx3.s
+5d616c70e041440600527855ebae7cae  ld/testsuite/ld-mmix/b-bend.s
+5ef90eb6d01c9c1e1f2a0d2262ae6b2e  ld/testsuite/ld-mmix/b-bend1.d
+43b9f66679d171e04c8cd8945a8c9072  ld/testsuite/ld-mmix/b-bend2.d
+c6cded6f15b9f640cbdab924ee44c4e7  ld/testsuite/ld-mmix/b-bend3.d
+19278040a3ad12dfbb86423a42ee4944  ld/testsuite/ld-mmix/b-bstab1.d
+7f057b266c6e915c24c78e4914988a18  ld/testsuite/ld-mmix/b-bstab1.s
+6648449ade42be2fa0b9bfd929d0be34  ld/testsuite/ld-mmix/b-fixo2.d
+afd9d7783cf499b4bb54e673aa66cc9b  ld/testsuite/ld-mmix/b-fixo2.s
+c70f1e9df4056a081a049a5e574504b7  ld/testsuite/ld-mmix/b-goodmain.s
+821bd78c586bcbbfcd74404cf57bb857  ld/testsuite/ld-mmix/b-loc64k.d
+22737b84a0ff00ce8bbbac51ba455171  ld/testsuite/ld-mmix/b-loc64k.s
+c6b46403437c6ee2562708fa1c475313  ld/testsuite/ld-mmix/b-nosym.d
+38dd1c80284932429686552b07d13ffb  ld/testsuite/ld-mmix/b-nosym.s
+8d063312ad02da3debded99026386d32  ld/testsuite/ld-mmix/b-offloc.s
+3f86c44e8b8817e5c663f2d27f3bd115  ld/testsuite/ld-mmix/b-post1.s
+86f53aed3df4b314f3ed60fc1bc5390c  ld/testsuite/ld-mmix/b-twoinsn.s
+19e58b2f38b76337bcaf380353b8b083  ld/testsuite/ld-mmix/b-widec.s
+be278fd0e2be7d211f9b9f01e9da153f  ld/testsuite/ld-mmix/b-widec1.d
+b5acafcf483d63a9f77a5bfd3aa6268c  ld/testsuite/ld-mmix/b-widec2.d
+c611d61d69d4f6525b97bf73f8ceb803  ld/testsuite/ld-mmix/b-widec2.s
+b0e738d0cadbba73f2fcb8d0e5db1017  ld/testsuite/ld-mmix/b-widec3.d
+538c648f35ef9b9744f3451d4b634614  ld/testsuite/ld-mmix/b-widec3.s
+6bf14f3d14c4473d0ac392135174ce4c  ld/testsuite/ld-mmix/bpo-1.d
+727b1769bece675574da8a7fe3fd7c78  ld/testsuite/ld-mmix/bpo-1.s
+df0a730269112adfd6e8bc3d2cd30765  ld/testsuite/ld-mmix/bpo-10.d
+7806bfb4f80d0b995147abaef5043324  ld/testsuite/ld-mmix/bpo-10.s
+de2a15a028c25abf01de9134df0c92d6  ld/testsuite/ld-mmix/bpo-11.d
+6ffe6aa6c222b341fd60298d70f6c096  ld/testsuite/ld-mmix/bpo-11.s
+77b4f4eb49346620239ae760d080a897  ld/testsuite/ld-mmix/bpo-12.d
+8de7a3ef3b7bd942d63c83ee837ab9ef  ld/testsuite/ld-mmix/bpo-12m.d
+3dedc8a556ca8e2e36516b6d401573ec  ld/testsuite/ld-mmix/bpo-13.d
+548c55bffd4c89b7677633e176ce7642  ld/testsuite/ld-mmix/bpo-13m.d
+0150a6ef04512573f9fdb07a78c2f6b4  ld/testsuite/ld-mmix/bpo-14.d
+c643669175f64da8335666d98707d371  ld/testsuite/ld-mmix/bpo-14m.d
+8f6569e3f528d5faa6667c06e373d4e6  ld/testsuite/ld-mmix/bpo-15.d
+98df5bb5f63901bb65b4da989825bee6  ld/testsuite/ld-mmix/bpo-15m.d
+398c01643df7dcfb858326599742b590  ld/testsuite/ld-mmix/bpo-16.d
+46c733f1f9d6891c280bd33a7a8ee49e  ld/testsuite/ld-mmix/bpo-16m.d
+996719755b5667e158716fbb0157ad32  ld/testsuite/ld-mmix/bpo-17.d
+2bd56eebb6f7f2557192b4218267e936  ld/testsuite/ld-mmix/bpo-17m.d
+2d7ffa71e95e9a30cc7a4b1b71e67570  ld/testsuite/ld-mmix/bpo-18.d
+75e497cf13bf228105b337ee5c9e4812  ld/testsuite/ld-mmix/bpo-18m.d
+1a6efd5e4d4df65512e05ec216a11339  ld/testsuite/ld-mmix/bpo-19.d
+2ab4fef8dc7d80065a78ea7b0e9ed0b3  ld/testsuite/ld-mmix/bpo-19m.d
+b2f2ffc9ebee61c08b8536ee393bf60d  ld/testsuite/ld-mmix/bpo-1m.d
+622ccbbbab13b1d0547acfc578afd812  ld/testsuite/ld-mmix/bpo-2.d
+941fdc1afbccc34132056c79cffd53a7  ld/testsuite/ld-mmix/bpo-2.s
+0fb61489c12f3b583e2c08ade6e8d653  ld/testsuite/ld-mmix/bpo-20.d
+fffb35a7fced3331a800461bc1ce9094  ld/testsuite/ld-mmix/bpo-20m.d
+5e8683bae8c6b6898f64e06e23abbccd  ld/testsuite/ld-mmix/bpo-21.d
+73573410160cb6b280768902b3043b90  ld/testsuite/ld-mmix/bpo-21m.d
+14fb65b89177e72eae9382717070b53b  ld/testsuite/ld-mmix/bpo-22.d
+263c76b6afbb38eab584434d4d6c6c2b  ld/testsuite/ld-mmix/bpo-2m.d
+201d0abacfa148a1508273db88204bf8  ld/testsuite/ld-mmix/bpo-3.d
+18a744b115278b7722c291d0ffb50d7f  ld/testsuite/ld-mmix/bpo-3.s
+bcdf1e512c4aee70c59fdd3660145af7  ld/testsuite/ld-mmix/bpo-3m.d
+d08f987933b4c9317a6e7464dabfac9a  ld/testsuite/ld-mmix/bpo-4.d
+27298e0392d3668044115ab5ab2d8f96  ld/testsuite/ld-mmix/bpo-4.s
+dd0d4ed3e462ccc4d407b1bf742d14be  ld/testsuite/ld-mmix/bpo-4m.d
+a88619188c388e44cba806028eaed25e  ld/testsuite/ld-mmix/bpo-5.d
+7dbb13569ce91e34215372124be85954  ld/testsuite/ld-mmix/bpo-5.s
+ee7b15e113e1e43245843f5a67e4bd06  ld/testsuite/ld-mmix/bpo-5m.d
+d7376e3a12d1357cb94ce92f0ffc1095  ld/testsuite/ld-mmix/bpo-6.d
+f2cceac4fc47fe392c8e4dc429f07561  ld/testsuite/ld-mmix/bpo-6.s
+2d7d7f08884d9c6f8b665361608621a0  ld/testsuite/ld-mmix/bpo-6m.d
+8bf2119bfa9a8f8ab1ad3a31ecc33e99  ld/testsuite/ld-mmix/bpo-7.d
+2baded74ed785888b38d2327cf0b292c  ld/testsuite/ld-mmix/bpo-7.s
+973234218e86e5019e31fe579e3771f3  ld/testsuite/ld-mmix/bpo-7m.d
+4015cf8cce9a13b50227b5182b063c63  ld/testsuite/ld-mmix/bpo-8.d
+ebfa497b551fca4227045bd9c52591d7  ld/testsuite/ld-mmix/bpo-8.s
+1cb46b3bff8a3455f444bf47be753ebe  ld/testsuite/ld-mmix/bpo-8m.d
+b8a3f5b80f112b706055a8b8e75d85cb  ld/testsuite/ld-mmix/bpo-9.d
+e6417328f720ed4af73d532d5578d4dc  ld/testsuite/ld-mmix/bpo-9.s
+3f41674c05910b601b6428d93d075bf8  ld/testsuite/ld-mmix/bpo-9m.d
+31df213f14a88392ba820c0d322b2bf1  ld/testsuite/ld-mmix/bpo64addr.ld
+f2bd238aedf4b6c262ed846c0cd5c156  ld/testsuite/ld-mmix/bspec1.d
+819de3680e13af74f5cc05450ba88c45  ld/testsuite/ld-mmix/bspec1.s
+9e65233ea9e683673fca19c9a7ac4146  ld/testsuite/ld-mmix/bspec1m.d
+511b6a464d71148cf8e06e83e48c7907  ld/testsuite/ld-mmix/bspec2.d
+39f50619e3525dbc7bb1a57004fa7af8  ld/testsuite/ld-mmix/bspec2.s
+2264252fbee703755ad9ef0a84805b6e  ld/testsuite/ld-mmix/bspec2m.d
+bf1d3c052201115389f9bf0d72b01dd1  ld/testsuite/ld-mmix/bspec801.s
+11b7fccb5486483850799cc7f3531c75  ld/testsuite/ld-mmix/bspec802.s
+22de3233920da1dfe5c1a59869059167  ld/testsuite/ld-mmix/bspec803.s
+48aa9f881a98497446e5127b530cbc0b  ld/testsuite/ld-mmix/bspec804.s
+ef5ba77ef818567f2363a64a61136d07  ld/testsuite/ld-mmix/bspec805.s
+17e99c51f9fa5ef8f9dbf96b77ceb859  ld/testsuite/ld-mmix/bspec806.s
+f410482e950d36d3493dbde6ac0fa801  ld/testsuite/ld-mmix/bspec807.s
+0ef3802570112a82a32152b8615812a1  ld/testsuite/ld-mmix/bspec808.s
+a085e5ee962603b54dc4f79c8c194ee8  ld/testsuite/ld-mmix/bza-1b.d
+14eb18f6d6f609ada3232e30185e6ecd  ld/testsuite/ld-mmix/bza-1f.d
+27f3762fa59df67c0890e5450cd4e2d5  ld/testsuite/ld-mmix/bza-2b.d
+2dde578feed1feed4f3d2656dc5cc096  ld/testsuite/ld-mmix/bza-2f.d
+89e214c7b44550c8c6e0516a73136d24  ld/testsuite/ld-mmix/bza-7b.d
+bacb69bdb70ce627aa3b9616c163501d  ld/testsuite/ld-mmix/bza-7f.d
+6d9d599df19d65dd9733089fdcbd49ec  ld/testsuite/ld-mmix/bza-8b.d
+12f488f003ac547001f13eaaa119da19  ld/testsuite/ld-mmix/bza-8f.d
+9da6a6460ebe9fa4649bf1066400630c  ld/testsuite/ld-mmix/bza.s
+1174557b17ce40bbf65d516763faa9f5  ld/testsuite/ld-mmix/data1.s
+3c6cb0cb624868efe21dcb90b2a234ff  ld/testsuite/ld-mmix/dloc1.s
+139ef9ed9aeef66b603b49b28a4b7cd3  ld/testsuite/ld-mmix/dloc2.s
+232026219508f7b71f6ee431840c6433  ld/testsuite/ld-mmix/ext1-254.s
+3a7cd12a9f3c4885d04f1c0813847708  ld/testsuite/ld-mmix/ext1.s
+7da77ff68e0bf805f728c01fe4970428  ld/testsuite/ld-mmix/ext1g.s
+c00696319193078a3f54bee1e3c13245  ld/testsuite/ld-mmix/ext1l.s
+f778d456be4ce9d20cc4f82b909cc799  ld/testsuite/ld-mmix/getaa-1b.d
+81cbf4605355e835ff6909c9499c8932  ld/testsuite/ld-mmix/getaa-1f.d
+4ac2b7156cc86e1da126405840d6a77c  ld/testsuite/ld-mmix/getaa-2b.d
+0171fc55ec2e6b96fa7449ded4308e9d  ld/testsuite/ld-mmix/getaa-2f.d
+ec5e997656fa82a54deace1a49af4006  ld/testsuite/ld-mmix/getaa-4b.d
+4e33bb67a21b0925e2f67da6b497667a  ld/testsuite/ld-mmix/getaa-4f.d
+57065ae45a55d7b177b6c7e570143f37  ld/testsuite/ld-mmix/getaa-6b.d
+fcb94cf8adc18ff997bb67111d93fd38  ld/testsuite/ld-mmix/getaa-6f.d
+03d4176debdd643f4346b38381232e95  ld/testsuite/ld-mmix/getaa-7b.d
+603f2f3a78e12c0e620b56e4af943053  ld/testsuite/ld-mmix/getaa-7f.d
+6493dd727ad7957aa7cbd84f2042e569  ld/testsuite/ld-mmix/getaa-8b.d
+3ea37a2af736602c0607e73aebf6f32b  ld/testsuite/ld-mmix/getaa-8f.d
+db60b0f96a0ecc05d8b34582430930cf  ld/testsuite/ld-mmix/getaa.s
+cd9b942d75b2cd9f16f3e2a97421cf30  ld/testsuite/ld-mmix/getaa12b.d
+955393ce5664bd2add2eb31ba04ad921  ld/testsuite/ld-mmix/getaa12f.d
+55735ac048b10ea2324d0dd89d4802bc  ld/testsuite/ld-mmix/getaa14b.d
+3a66b9fccc865bc6698401aec03638da  ld/testsuite/ld-mmix/getaa14f.d
+25712efa65f9d51b3d5ac4dc40989844  ld/testsuite/ld-mmix/greg-1.d
+09bdeabfdc8bad2aa2102a69f2acec6c  ld/testsuite/ld-mmix/greg-1.s
+3e8753750bd03d1b8cc47973bf0c5fa8  ld/testsuite/ld-mmix/greg-10.d
+52fbd6227f7f3e5728b8350c69d33742  ld/testsuite/ld-mmix/greg-11.d
+6fe8e51b99e9625c021dc8b50da3f7e8  ld/testsuite/ld-mmix/greg-11b.d
+c08a75bfc1dbf3d5076fc4e61dfcf362  ld/testsuite/ld-mmix/greg-12.d
+7462e0377d376b0bd47753854a6a407f  ld/testsuite/ld-mmix/greg-13.d
+0f5ca7c06e9079441da2c7a84b922e76  ld/testsuite/ld-mmix/greg-14.d
+7e20aba7bfc285ad4569f7dbf995f575  ld/testsuite/ld-mmix/greg-14s.d
+172c9bc30b96bbc7f5d47dc3f2c3d7fb  ld/testsuite/ld-mmix/greg-15.d
+a3ff1f310992ee435c7e2635d8d29460  ld/testsuite/ld-mmix/greg-16.d
+d01503c2c69d7f452f4eefacaa68899d  ld/testsuite/ld-mmix/greg-17.d
+b11ff19d10f01e1e3f56e46144a2221f  ld/testsuite/ld-mmix/greg-18.d
+6b3f179a8bd4912c99ed1e149eb955ff  ld/testsuite/ld-mmix/greg-19.d
+6433dbd0d9b5698a4b4f3ec9910f60f0  ld/testsuite/ld-mmix/greg-2.d
+d32fe386de0bb7cbeae911f55b74f28c  ld/testsuite/ld-mmix/greg-2.s
+f7a8dad75521d024520597ea106b9aea  ld/testsuite/ld-mmix/greg-20.d
+cf91e09847aa71ef760b4c5516a93329  ld/testsuite/ld-mmix/greg-3.d
+fd8c230efbb1e8e9644f278fc55956d1  ld/testsuite/ld-mmix/greg-3.s
+7e6834b7998b463f7fc271873f97cd56  ld/testsuite/ld-mmix/greg-4.d
+ca83717a845f3471de058678cd3d768d  ld/testsuite/ld-mmix/greg-4.s
+8b6ca9980a6ba44874a2ab6dd9eab536  ld/testsuite/ld-mmix/greg-5.d
+6480362111f72bcd1075662b96302bda  ld/testsuite/ld-mmix/greg-5.s
+6e278cb0bc4d9a1abb8cf010bd8e1900  ld/testsuite/ld-mmix/greg-5s.d
+b8c31c8408f4cdb0a1d0e59bde38af81  ld/testsuite/ld-mmix/greg-6.d
+5e6e867250d79f2f46e0b7f8c88b3f0e  ld/testsuite/ld-mmix/greg-7.d
+59e0e7eb634040c0b9cbd93f668ccc98  ld/testsuite/ld-mmix/greg-8.d
+d93fac49ebe47c54143f6d735cbd0d2b  ld/testsuite/ld-mmix/greg-9.d
+52303123f40dff47906913e8da9c286e  ld/testsuite/ld-mmix/gregbza1.s
+7f3142883e0933aff11c0c1cb95a77fa  ld/testsuite/ld-mmix/gregget1.s
+2cb7950e0a1953d2b987a9f8cc7c4512  ld/testsuite/ld-mmix/gregget2.s
+e550195681ad09a232fe5aee1377329d  ld/testsuite/ld-mmix/gregldo1.s
+ca8df40c1626e176553bb89a9e763fdb  ld/testsuite/ld-mmix/gregpsj1.s
+9ab537a0341b7c4352c8611cceea62ef  ld/testsuite/ld-mmix/hdr-1.d
+947dee63abfc6e1d2189ad4fd9b66eb6  ld/testsuite/ld-mmix/jumpa-1b.d
+d584fc102026b000a7fc6b96d9963230  ld/testsuite/ld-mmix/jumpa-1f.d
+c40d746d73d8ea03d1af670cf0396d1a  ld/testsuite/ld-mmix/jumpa-2b.d
+e1307a32eda7c8432b3f989be35b6b8c  ld/testsuite/ld-mmix/jumpa-2f.d
+f0604395727a87a9f44e5f3a2022ae6f  ld/testsuite/ld-mmix/jumpa-3b.d
+de6787c0fa3a5822645c9842f381bcd9  ld/testsuite/ld-mmix/jumpa-3f.d
+df9824fc96665a5167b94df1372d7d66  ld/testsuite/ld-mmix/jumpa-4b.d
+414791dc7016ab49289b99a78cb6e102  ld/testsuite/ld-mmix/jumpa-4f.d
+296124a282e0d1c7b934f6ed800ecdaa  ld/testsuite/ld-mmix/jumpa-5b.d
+beac115e902f66a613fbbf078136347b  ld/testsuite/ld-mmix/jumpa-5f.d
+130046ec10144296bd85ff47bcca6dae  ld/testsuite/ld-mmix/jumpa-6b.d
+f4ca5428c16dc7044eba616c88060283  ld/testsuite/ld-mmix/jumpa-6f.d
+883c0287f9033fab6803c32c4eda1c69  ld/testsuite/ld-mmix/jumpa-7b.d
+4b126c7bae3abfc161abbf89974ee8c5  ld/testsuite/ld-mmix/jumpa-7f.d
+c30b409fdc294bae9f080af0c0f0e2ff  ld/testsuite/ld-mmix/jumpa-8b.d
+2a744a21150001b4cd0ede5b110709ae  ld/testsuite/ld-mmix/jumpa-8f.d
+f00db713cea505b97fbb93faa65e3d45  ld/testsuite/ld-mmix/jumpa-9b.d
+e53bb3803346e92f0ec97bbc784c1eac  ld/testsuite/ld-mmix/jumpa-9f.d
+1d6c21fd3ef1c8d793380a2691b6eb7c  ld/testsuite/ld-mmix/jumpa.s
+7153d676cf0b92abceb49b341d0853ea  ld/testsuite/ld-mmix/jumpa12b.d
+8462c80cfea74bf25bcf6f8c278db269  ld/testsuite/ld-mmix/jumpa12f.d
+01b18bcede2c8d9ef1d4e69be534211e  ld/testsuite/ld-mmix/jumpa13b.d
+ddb26bcaaaaa6d50847383e563b4d3bc  ld/testsuite/ld-mmix/jumpa13f.d
+5c43f0af321e1389d47b9006502018e1  ld/testsuite/ld-mmix/jumpa14b.d
+0e314b43bc6d623eff2df40b7a85c520  ld/testsuite/ld-mmix/jumpa14f.d
+17e47b4bea51e41b1e6b88a0a2845884  ld/testsuite/ld-mmix/loc1.d
+b56a23c50b6ddbff1f3794283f3277f1  ld/testsuite/ld-mmix/loc1.s
+fb75bea1a25c34bbf8e30d990a432d97  ld/testsuite/ld-mmix/loc1m.d
+13ea1fa30260d30c0de7cdc67c767c1c  ld/testsuite/ld-mmix/loc2.d
+3c356ecff8149f5f58b96419632abe2d  ld/testsuite/ld-mmix/loc2.s
+499e0b02ab9cde3ceb84ef08a360c969  ld/testsuite/ld-mmix/loc2m.d
+c696de0f0c6ebb2155699ad4567724ad  ld/testsuite/ld-mmix/loc3.d
+d57db0d8ece842d7e871c26f0165ace0  ld/testsuite/ld-mmix/loc3m.d
+db02e1f58151a57c5e83db3a7fe42159  ld/testsuite/ld-mmix/loc4.d
+0ca8c4e7244194dc55fa159ebee2778f  ld/testsuite/ld-mmix/loc4m.d
+6bce3b0517b052d03c4c4f6ff493fa86  ld/testsuite/ld-mmix/loc5.d
+b5bb17720ffd70fe284c562e7302dd3f  ld/testsuite/ld-mmix/loc5m.d
+546da06a680ccd1ba9c80d105d2c25d7  ld/testsuite/ld-mmix/loc6.d
+10b39e63d1856e7c9fd0bfc29a04160b  ld/testsuite/ld-mmix/loc6m.d
+82f045e44234bb0c8c17b511462c5ea9  ld/testsuite/ld-mmix/loc7.d
+f5db3424f4d1af1a04dfa7b2a7fb96fd  ld/testsuite/ld-mmix/x.s
+9c15aa64a5b8f8693882f01d28db4ef0  ld/testsuite/ld-mmix/loc7m.d
+f7e1bf29493336c0ebf7a2007cff51de  ld/testsuite/ld-mmix/local1.d
+d707f849fbe9f63a5f2c01fd2566e038  ld/testsuite/ld-mmix/local1.s
+7ece63c1f6d1bf57eb22577253170a37  ld/testsuite/ld-mmix/local10.d
+04997ac752692c6b8804cd4e39a0ea58  ld/testsuite/ld-mmix/local10m.d
+099da77c40cba26141817d4091e7db2c  ld/testsuite/ld-mmix/local11.d
+d325c8975956aa1752219b1a535cf285  ld/testsuite/ld-mmix/local11m.d
+05be1f62230e543b5b8c655ab9caecc0  ld/testsuite/ld-mmix/local12.d
+a5a00cd4518d7bd4241630424826ff15  ld/testsuite/ld-mmix/local12m.d
+2092cd703c3f9100f9e0ff053d8ce46a  ld/testsuite/ld-mmix/local1m.d
+509fc476ca1023f3ccf69f809616de98  ld/testsuite/ld-mmix/local2.d
+e162c55691230b3ef6099eace547e1b4  ld/testsuite/ld-mmix/local2.s
+f9779e43410c476cfa2b2450f8b2639d  ld/testsuite/ld-mmix/local2m.d
+af792a9a0b51ebfa4cd183faccf126ba  ld/testsuite/ld-mmix/local3.d
+84414c509524b98f37bc39f6bcb0403c  ld/testsuite/ld-mmix/local3m.d
+18cc28d324964767918c7071b53b80df  ld/testsuite/ld-mmix/local4.d
+06f51156a11dc9114232e16ea38ee99a  ld/testsuite/ld-mmix/local4m.d
+2e00a4d294a614ab0b37c118e60e8ab3  ld/testsuite/ld-mmix/local5.d
+f025bba412c428db6d7fe5d4e90528c4  ld/testsuite/ld-mmix/local5m.d
+eb4d717d242d7cd8ccc98b6350c95fd2  ld/testsuite/ld-mmix/local6.d
+f355a139634c881acf82d620115d829a  ld/testsuite/ld-mmix/local6m.d
+8b1cb41a69a5ad6bdc2ac9fa8a29241b  ld/testsuite/ld-mmix/local7.d
+b7ed816019fd284d6e048ebfd47420dc  ld/testsuite/ld-mmix/local7m.d
+099f86d65a29acd85ad462039776b43f  ld/testsuite/ld-mmix/local8.d
+d779355656462b041e143cc4e2b98726  ld/testsuite/ld-mmix/local8m.d
+133c44093006e1390646457d69e680c5  ld/testsuite/ld-mmix/local9.d
+ab244ec4c684d78029caca3dc30d9bfb  ld/testsuite/ld-mmix/local9m.d
+89c6f8a75ffbf9621845bf1f499afc47  ld/testsuite/ld-mmix/locdo-1.d
+d6727f0db8cd2c9e50ae8bf7b22eaeaa  ld/testsuite/ld-mmix/locdo.s
+c70be81f4443a91a6c710f74997f7cbd  ld/testsuite/ld-mmix/loct-1.d
+022fa8e6f9b0b5e7125cf1ef50101a2b  ld/testsuite/ld-mmix/loct.s
+3da3e4ef1c389fd2505dc9000c46c3b4  ld/testsuite/ld-mmix/locto-1.d
+3d1a25d72e6ab244d8e39098981c9740  ld/testsuite/ld-mmix/locto.s
+64980a23a389e2541da0ffe38b717379  ld/testsuite/ld-mmix/main1.s
+bcfe3fc511ae9fd993e26d0eb3a4f2f5  ld/testsuite/ld-mmix/mmix.exp
+d20704a169ec8e219c96ad37791c9b78  ld/testsuite/ld-mmix/mmohdr1.ld
+09f5e63cab9e137df35586cc1751ed89  ld/testsuite/ld-mmix/mmosec1.ld
+b1edc5d09d1437afe67f3b9acce38480  ld/testsuite/ld-mmix/mmosec2.ld
+c862b5cb256b14f3b80a3b0cb6fb8308  ld/testsuite/ld-mmix/nop123.s
+bf8eb179f03ef8f7b10763e10511c52d  ld/testsuite/ld-mmix/pad16.s
+be8023f28e5f203322f381ff7d58ae34  ld/testsuite/ld-mmix/pad2p18m32.s
+81b17ca511569ebb10d6a6830d2a2cd3  ld/testsuite/ld-mmix/pad2p26m32.s
+3a61e1bd72b667553611dd950a466a58  ld/testsuite/ld-mmix/pad4.s
+3dc512ff8407897ee38c5fa85a492dee  ld/testsuite/ld-mmix/pushja.s
+5020f79a75091e672b04c38fc0c0f632  ld/testsuite/ld-mmix/pushja1b-s.d
+b3669a0c5355bdb89bec1e20bd818192  ld/testsuite/ld-mmix/pushja1b.d
+41a518887b979d1cb707e16a62a07fa3  ld/testsuite/ld-mmix/pushja1f-s.d
+a28b0ed5b9bcc826918ca21a220931bc  ld/testsuite/ld-mmix/pushja1f.d
+0469afb2478be33584e0a39b366e21f9  ld/testsuite/ld-mmix/pushja2b.d
+f36af7e7017293f1a8ef06c21db3defd  ld/testsuite/ld-mmix/pushja2f.d
+cf60b693a7c7300bd2fdfea2840f4c32  ld/testsuite/ld-mmix/pushja7b-s.d
+a51c4d52b6009de0529b462bd331b056  ld/testsuite/ld-mmix/pushja7b.d
+a93ceca5e988078b6cfd5bb87488b00f  ld/testsuite/ld-mmix/pushja7f-s.d
+7ca3d6d32d8bf1fe0c0fa2dfd5d3bac7  ld/testsuite/ld-mmix/pushja7f.d
+5ca57868e3251f1d3266878cf4bd9c86  ld/testsuite/ld-mmix/pushja8b.d
+55ef82ed26376647664ab8be845439a5  ld/testsuite/ld-mmix/pushja8f.d
+f0291d64464843bb9d1c20f11491fd76  ld/testsuite/ld-mmix/pushjs1.d
+6136250bae3eb327a6b4dc10bf7311a8  ld/testsuite/ld-mmix/pushjs1b.d
+229b0052b5762f655f800004f8f9131d  ld/testsuite/ld-mmix/pushjs1bm.d
+4b21f4f0f21ed691e0e4abe3fd290f98  ld/testsuite/ld-mmix/pushjs1m.d
+3263ef0b06f7a6789787e0ae26cf778d  ld/testsuite/ld-mmix/pushjs1r.d
+8dc08526c346b0c2949d717f026727be  ld/testsuite/ld-mmix/pushjs2.d
+f1474c6fb67624c679b9c63365b92657  ld/testsuite/ld-mmix/pushjs2b.d
+00442b5dd5c4b626b5e9e629dec76b65  ld/testsuite/ld-mmix/pushjs2bm.d
+4661fb2fc41eeeef64b817711af25a25  ld/testsuite/ld-mmix/pushjs2m.d
+cc7873bb5868cb9695805db68cbc67e4  ld/testsuite/ld-mmix/pushjs2r.d
+c117c4fe9906809ffca078ffbc48d163  ld/testsuite/ld-mmix/pushjs3.d
+3007b0afe39473c82e78365f4da3c488  ld/testsuite/ld-mmix/pushjs3b.d
+e828e56802bbbfd1a3b53cff43fb28b3  ld/testsuite/ld-mmix/pushjs3bm.d
+697593e94a267bf2aba1f02e529854ae  ld/testsuite/ld-mmix/pushjs3m.d
+c6552b7876f5c1928de731cc7608a507  ld/testsuite/ld-mmix/pushjs3r.d
+3a51c60a88ee993a8af188406df050d2  ld/testsuite/ld-mmix/pushjs4.d
+8339f07bf2171e19c82569c0783f9ea3  ld/testsuite/ld-mmix/pushjs4b.d
+6367bb7d4d3761e60d40bb6d91361498  ld/testsuite/ld-mmix/pushjs4bm.d
+883382cfd9016d49f7bb6f3d4febc771  ld/testsuite/ld-mmix/pushjs4m.d
+8218b27d50327ef3dcf53ec0f747a724  ld/testsuite/ld-mmix/pushjs4r.d
+21d7dbfa3ce2bb14bf3a09c65ed670eb  ld/testsuite/ld-mmix/reg-1.d
+f5826a00432ff4882e1366d68db516c4  ld/testsuite/ld-mmix/reg-1m.d
+0c57becb827f2718163d3834ac0eda1e  ld/testsuite/ld-mmix/reg-2.d
+2dc0d2fad390f27aced1bb6b2d605948  ld/testsuite/ld-mmix/reg-2m.d
+23286b28cfff45deec5e81c3e9002928  ld/testsuite/ld-mmix/regext1.s
+69e4b9f6bebc733c9d115ffe73073757  ld/testsuite/ld-mmix/sec-1.d
+1b441f0c92b01fbf76e01724e766206c  ld/testsuite/ld-mmix/sec-1.s
+d75bbbc9b76652e82c593e8021a788a5  ld/testsuite/ld-mmix/sec-2.d
+6d236a9289815d56433dcd7178318aeb  ld/testsuite/ld-mmix/sec-2.s
+4fced5e420a52c095d6477e45a6c222f  ld/testsuite/ld-mmix/sec-3.d
+c2fe6cf6eac2927c283a454b0b86cbab  ld/testsuite/ld-mmix/sec-4.d
+5a0ea2f638ec8f036edca789bba8451b  ld/testsuite/ld-mmix/sec-5.d
+f44baed1e2692684d280f4f87721efec  ld/testsuite/ld-mmix/sec-6.d
+d843e0c48ae3ee12a22ec7d31b8f06df  ld/testsuite/ld-mmix/sec-6.s
+779977e27f6f62a9d866cb5910d827a0  ld/testsuite/ld-mmix/sec-6m.d
+33c42176cf1ac4503f9bde3425413478  ld/testsuite/ld-mmix/sec-7a.s
+844abe2f3679b2af13e8e7f44914f609  ld/testsuite/ld-mmix/sec-7b.s
+bfabfa85f8df5f46a04fcc6e84d66e62  ld/testsuite/ld-mmix/sec-7c.s
+f57ffaf24002d2183b8ac914845be685  ld/testsuite/ld-mmix/sec-7d.s
+8a1740e8f0a98d2b3eba20aee81ff409  ld/testsuite/ld-mmix/sec-7e.s
+f73aa0f49186c065aa0c82bd8c527208  ld/testsuite/ld-mmix/sec-7m.d
+46fe8846ab4dcf70c53008ef4b13298a  ld/testsuite/ld-mmix/sec-8a.s
+384f320ac9806b341089b1d9c0e07831  ld/testsuite/ld-mmix/sec-8b.s
+7d0699e43412bf704bd591e4dcc37cf0  ld/testsuite/ld-mmix/sec-8d.s
+9f11ec06925dc6056aa786981c8e21e2  ld/testsuite/ld-mmix/sec-8m.d
+19025901dfe14ecc1734484e58975bca  ld/testsuite/ld-mmix/sec-8m.s
+6b54cd31a1680ed2811f6a6cfda9db6e  ld/testsuite/ld-mmix/sec-9.d
+ce62b12138d3784ec93a3a8240dba2e5  ld/testsuite/ld-mmix/spec801.d
+1e856c201fa2a4cbec995adebafe098e  ld/testsuite/ld-mmix/spec802.d
+1236260a16fea1321acac9742be6406d  ld/testsuite/ld-mmix/spec803.d
+2b52ae4ff8779df81116bacf67daaaa4  ld/testsuite/ld-mmix/spec804.d
+870d203eabbeb05b6e7f11f5698d7f38  ld/testsuite/ld-mmix/spec805.d
+53cbba5fe3fc3f7555eafbf029a83290  ld/testsuite/ld-mmix/spec806.d
+6f72403f26862050d862b991a32859b1  ld/testsuite/ld-mmix/spec807.d
+4e3034fe7c34cb8275c7ec8ef88b93e3  ld/testsuite/ld-mmix/spec808.d
+f3da230ed48d1a9929b60334266f0e11  ld/testsuite/ld-mmix/start-1.d
+4be3976267833ea3c34b0f798a8c1485  ld/testsuite/ld-mmix/start-2.d
+be36292d5a752d8e3594c19f02c2438a  ld/testsuite/ld-mmix/start.s
+c99cb759a47ad31cda97850838a8521d  ld/testsuite/ld-mmix/start2.s
+b98323b2049052463fe47f60a1d71402  ld/testsuite/ld-mmix/start3.s
+d97c85895c64e2800341eb264ec6c712  ld/testsuite/ld-mmix/start4.s
+837a9fc70319cce38647e27afea26552  ld/testsuite/ld-mmix/sym-1.d
+d6f7823c96d07d63eff9a4377a3d1197  ld/testsuite/ld-mmix/sym-2.d
+5a3543a015c57b95e141c3e542415ad7  ld/testsuite/ld-mmix/sym-2.s
+6da9e787afba836a409158b5e1f05682  ld/testsuite/ld-mmix/undef-1.d
+6ac82fe0ffb7d83ec7d663b5d78e8a33  ld/testsuite/ld-mmix/undef-1.s
+a4e3f736b38cbe5268a76e8290aecfc0  ld/testsuite/ld-mmix/undef-1m.d
+442d8e36bccc5a0b2c509ae050688162  ld/testsuite/ld-mmix/undef-2.d
+a41b27d14532da2a3129fcc4caf5c055  ld/testsuite/ld-mmix/undef-2.s
+8f55b70c5902ca731fa760d513930a89  ld/testsuite/ld-mmix/undef-2m.d
+c9257004698311fa3ab095e7b27dd5b6  ld/testsuite/ld-mmix/undef-3.d
+0c0fa2fe0d0853b92b35546f57987868  ld/testsuite/ld-mmix/undef-3m.d
+84d1266b09e13010463fef99f2a5ca43  ld/testsuite/ld-mmix/y.s
+7e6afc7b72727f2157b351a82201014a  ld/testsuite/ld-mmix/zeroeh.ld
+5deee29ab184523ec4187c7b12b5fe9d  ld/testsuite/ld-mmix/zeroehelf.d
+8b6735c8bfb704b4870b3846dc8d4e45  ld/testsuite/ld-mmix/zeroehmmo.d
+cc00aadd645506786504e57533d5812e  ld/testsuite/ld-pe/secrel.d
+22bdf307f6004d4f48653c70794ab2be  ld/testsuite/ld-pe/pe.exp
+ae437b9d8fe2c177c2672e5ca17b9942  ld/testsuite/ld-pe/secrel1.s
+819c1330d03d03cf5d7201562b28b589  ld/testsuite/ld-pe/secrel2.s
+b0684fc70a8cbc0afdcb316aafcc024b  ld/testsuite/ld-pie/weakundef.c
+8a1b43bb1b98d47569c87c7daeccf062  ld/testsuite/ld-pie/pie.c
+b51992d2df075a4fedfdf2a72a9bb94a  ld/testsuite/ld-pie/pie.exp
+359398aa508714182f5126243220aef5  ld/testsuite/ld-pie/weakundef-data.c
+15de982d1dc99ce52d089868a579de34  ld/testsuite/ld-pie/weakundef.out
+90ce2f64162c9dc090e96f0729b97f0a  ld/testsuite/ld-powerpc/apuinfo.rd
+787da85c4090a2cd214e445bf01ed784  ld/testsuite/ld-powerpc/apuinfo1.s
+122c70dca18f0a00814d752c8ac134bf  ld/testsuite/ld-powerpc/apuinfo2.s
+8db48fc98f1aaabf5f319e71e8f06917  ld/testsuite/ld-powerpc/powerpc.exp
+d0c078412690065f88a1d02ceafdeccf  ld/testsuite/ld-powerpc/reloc.d
+53652025c67e058e17ee2f5b68f62577  ld/testsuite/ld-powerpc/reloc.s
+faf25052dc4eb831cb4cbdcc617eaa51  ld/testsuite/ld-powerpc/sdadyn.d
+b11b5807e7a6fa381d608f06a71e0bb1  ld/testsuite/ld-powerpc/sdadyn.s
+4291ceef5a9a5101e6b9694d18484709  ld/testsuite/ld-powerpc/sdalib.s
+d87aa302fd5305f712767b6d3679220b  ld/testsuite/ld-powerpc/symtocbase-1.s
+495885b7a4b9c45d264ac690a0196b22  ld/testsuite/ld-powerpc/symtocbase-2.s
+aa5f4942eac1d2661d7d178713906bcd  ld/testsuite/ld-powerpc/symtocbase.d
+bfecc74ae4a9b993f413069c788cd0ac  ld/testsuite/ld-powerpc/tls.d
+863594542395bb4a79591b3639d5f63c  ld/testsuite/ld-powerpc/tls.g
+8301929a8722e78f7597ceda20b84e87  ld/testsuite/ld-powerpc/tls.s
+bd2bacee052020afd7dac82cf8d2d3f3  ld/testsuite/ld-powerpc/tls.t
+1913f185dc8a5675aea58c1ac7f3c2da  ld/testsuite/ld-powerpc/tls32.d
+e49d066c8c8b5e3295e1b525859e5660  ld/testsuite/ld-powerpc/tls32.g
+bea8413d63541a8a7dbdc303790f9127  ld/testsuite/ld-powerpc/tls32.s
+c0ef4eee1944a09ab22b782d89a8c699  ld/testsuite/ld-powerpc/tls32.t
+df1ea4b24182fa8e7987dba6272f28f8  ld/testsuite/ld-powerpc/tlsexe.d
+c4aaf9d7ce028499b04fb3acaef81404  ld/testsuite/ld-powerpc/tlsexe.g
+607fe18601a1e269aaf3d6f3c88d9de8  ld/testsuite/ld-powerpc/tlsexe.r
+646bb364341f301973ce098ae2f8039c  ld/testsuite/ld-powerpc/tlsexe.t
+f11de7ca7695d9b74310021764dbae26  ld/testsuite/ld-powerpc/tlsexe32.d
+92656f804d2ad395deb12fe1a81e3118  ld/testsuite/ld-powerpc/tlsexe32.g
+5334146ee48d45c0e2c49f9c39aea267  ld/testsuite/ld-powerpc/tlsexe32.r
+f97543e5816cc551d4a2213ec82f0f70  ld/testsuite/ld-powerpc/tlsexe32.t
+2d9867faa9afae7c6fbd3c6a8b73d707  ld/testsuite/ld-powerpc/tlsexetoc.d
+0e6ade450ebf25cb550ecc2f2e1a82a7  ld/testsuite/ld-powerpc/tlsexetoc.g
+8eb33054081080ae1f48d5f7f3f10f8a  ld/testsuite/ld-powerpc/tlsexetoc.r
+4a7fe05f8c468454f0be009dec3fdc19  ld/testsuite/ld-powerpc/tlsexetoc.t
+d977c1fa170393c42788b8782e8554e7  ld/testsuite/ld-powerpc/tlslib.s
+763355d4f6bf96d3c643ea386e751a47  ld/testsuite/ld-powerpc/tlslib32.s
+85816f1d58d9aef024ebfe340cc85ed8  ld/testsuite/ld-powerpc/tlsso.d
+7e268a031a00654009c886342eb293e5  ld/testsuite/ld-powerpc/tlsso.g
+0191a14126de47d4973e6224d83cc43b  ld/testsuite/ld-powerpc/tlsso.r
+f036e7b2b51f16236c81590e2e4a6697  ld/testsuite/ld-powerpc/tlsso.t
+f9ec30fe6b3082b9daf22970a99ec861  ld/testsuite/ld-powerpc/tlsso32.d
+4febfef2d196d9cce54892fb5d1a0cbd  ld/testsuite/ld-powerpc/tlsso32.g
+0d2e26663be4135a8a1b0a75210265b0  ld/testsuite/ld-powerpc/tlsso32.r
+33abdf51a1e378a2087e888d309f988b  ld/testsuite/ld-powerpc/tlsso32.t
+cd04cfbb301f112f9090369d128f2688  ld/testsuite/ld-powerpc/tlstoc.d
+bd5eec94c235419cf306a2c7fe11e11b  ld/testsuite/ld-powerpc/tlstoc.g
+4891ee12248bc36790947b84a88cd9c0  ld/testsuite/ld-powerpc/tlstoc.s
+38d558bbfd10a333ed6122dc7123571b  ld/testsuite/ld-powerpc/tlstoc.t
+c1381d1ff76414a8624c79e1c515ddab  ld/testsuite/ld-powerpc/tlstocso.d
+67ee428c9c653a44e29090377fd08190  ld/testsuite/ld-powerpc/tlstocso.g
+8bafa5671f689fff5d3acebf3dd3b246  ld/testsuite/ld-powerpc/tlstocso.r
+dc1545b0e1300fa2e532d355d1023452  ld/testsuite/ld-powerpc/tlstocso.t
+dabafb6400d1624b1bf5d0e7599ceb2c  ld/testsuite/ld-powerpc/vxworks1-lib.dd
+4d0018309d753aeb7489523e8fc2b582  ld/testsuite/ld-powerpc/vxworks1-lib.nd
+d0e38d2d9008a166cbe6005bdd0d8b70  ld/testsuite/ld-powerpc/vxworks1-lib.rd
+986a11fc7eac3ba90472ab1c8a1ad3d4  ld/testsuite/ld-powerpc/vxworks1-lib.s
+b5760134e083c35f414fe5e4308a070e  ld/testsuite/ld-powerpc/vxworks1-lib.sd
+ac0b4d23d8c88db1538c122df4279799  ld/testsuite/ld-powerpc/vxworks1-static.d
+6498ea121cb6fe7240ffc9e254fe6f09  ld/testsuite/ld-powerpc/vxworks1.dd
+821ce56d69b313bd3e0958ba37a155c1  ld/testsuite/ld-powerpc/vxworks1.ld
+ec5bb7e2f15402282187e50b5fb1667e  ld/testsuite/ld-powerpc/vxworks1.rd
+66e3ac39954536d122375680de218509  ld/testsuite/ld-powerpc/vxworks1.s
+70a3a63caaa6294e72a21f3af93d802c  ld/testsuite/ld-powerpc/vxworks2-static.sd
+59945c589f97dc856c251f390437b5ec  ld/testsuite/ld-powerpc/vxworks2.s
+a59d05b41e3dd040fb4e12e434cff21d  ld/testsuite/ld-powerpc/vxworks2.sd
+acccc949323b38ecd093d14b53524397  ld/testsuite/ld-s390/s390.exp
+e537b897ceaf3bb730484b2638aa0c99  ld/testsuite/ld-s390/tlsbin.dd
+5c735e11dbb9cb06ac063e6d82545ad6  ld/testsuite/ld-s390/tlsbin.rd
+dfc5a09a574f7db9aa5c609b2b61d663  ld/testsuite/ld-s390/tlsbin.s
+129de764f451a6e38ff8e91c1de856e1  ld/testsuite/ld-s390/tlsbin.sd
+2e6c6964734ec81f6ed203568d2cf8bc  ld/testsuite/ld-s390/tlsbin.td
+e0b4d77bdd455e3c1d108170d07bceea  ld/testsuite/ld-s390/tlsbin_64.dd
+6bec2231737384f5ec62ce7f457924cd  ld/testsuite/ld-s390/tlsbin_64.rd
+92972a9e8ed73263fe9dd260a972a00f  ld/testsuite/ld-s390/tlsbin_64.s
+5083c5af007cc9a18444cba7aec7d685  ld/testsuite/ld-s390/tlsbin_64.sd
+ec34e31021e910030b56a53077269534  ld/testsuite/ld-s390/tlsbin_64.td
+df1bb4542623cb92c3544cf083bd0d40  ld/testsuite/ld-s390/tlsbinpic.s
+b6275de1b0e1a08a2b3fa24ee85d230c  ld/testsuite/ld-s390/tlsbinpic_64.s
+63d5514386005c2b68e0f502e0deda14  ld/testsuite/ld-s390/tlslib.s
+63d5514386005c2b68e0f502e0deda14  ld/testsuite/ld-s390/tlslib_64.s
+d74976ce7821d4654ecf2a1c1bb9cec5  ld/testsuite/ld-s390/tlspic.dd
+da76517c47ee064c195fea9c24237fd5  ld/testsuite/ld-s390/tlspic.rd
+bcbc04334a471aca9e71c0cc99c7e131  ld/testsuite/ld-s390/tlspic.sd
+54dbf2b658b06137f674825d8474c8af  ld/testsuite/ld-s390/tlspic.td
+7db72b84a4c88ca6b985e09ddcdbf995  ld/testsuite/ld-s390/tlspic1.s
+ec81ab04e19a45347ef1a423d9ddbfd7  ld/testsuite/ld-s390/tlspic1_64.s
+1be6d8e1547c710f7bc12028c6522832  ld/testsuite/ld-s390/tlspic2.s
+1be6d8e1547c710f7bc12028c6522832  ld/testsuite/ld-s390/tlspic2_64.s
+e8218f8ef6b47755d64e1b6f9473f510  ld/testsuite/ld-s390/tlspic_64.dd
+b09dbddd70cec4606142efe4f67b705a  ld/testsuite/ld-s390/tlspic_64.rd
+ab9872b24c3c97aaf099a081de993709  ld/testsuite/ld-s390/tlspic_64.sd
+2f047623197dae3f539aea80b15120e4  ld/testsuite/ld-s390/tlspic_64.td
+1bee04bef382385b6752bb848c0e8e82  ld/testsuite/ld-scripts/align.exp
+8a219a0fc5ea21ec757cf630c69f6bf6  ld/testsuite/ld-scripts/align.s
+efeb8e6f0a3f40f9920e2030bf854b18  ld/testsuite/ld-scripts/align.t
+1bc6194419a61faf0aaf28eb2c343962  ld/testsuite/ld-scripts/align2.t
+74e4e87985fcc5847cff795ef76fb1f2  ld/testsuite/ld-scripts/align2a.d
+aab55ad4c7de88d6b2781ab6e273346a  ld/testsuite/ld-scripts/align2a.s
+528c3b955e569ae445d0ba4e712b7fe8  ld/testsuite/ld-scripts/align2b.d
+aab55ad4c7de88d6b2781ab6e273346a  ld/testsuite/ld-scripts/align2b.s
+7c3f8de8c952c3a5d74b76e5e9b08f96  ld/testsuite/ld-scripts/align2c.d
+aab55ad4c7de88d6b2781ab6e273346a  ld/testsuite/ld-scripts/align2c.s
+1e9c8e4a1c7bc04f11ce30b3108d0134  ld/testsuite/ld-scripts/assert.exp
+68b329da9893e34099c7d8ad5cb9c940  ld/testsuite/ld-scripts/assert.s
+0d3339980685d3fb6f72d7fc2d7b3730  ld/testsuite/ld-scripts/assert.t
+e882253a7b0f660986d5794a36239b1b  ld/testsuite/ld-scripts/cross1.c
+8bcf5c1294efdc1276b8ecd0820dba3b  ld/testsuite/ld-scripts/cross1.t
+2bad1250e1d3998f3c2d678b1b90d275  ld/testsuite/ld-scripts/cross2.c
+8688dcf616adf0952098881c826c77b8  ld/testsuite/ld-scripts/cross2.t
+6cda0a6cae6d6fe585c175aa49c2578e  ld/testsuite/ld-scripts/cross3.c
+43fbc2b25b13de05f539b72a0106fc7e  ld/testsuite/ld-scripts/cross3.t
+be2d98503c3e3a02a41eca2fe813a310  ld/testsuite/ld-scripts/cross4.c
+d86f358985934b3740b784fad81d3695  ld/testsuite/ld-scripts/crossref.exp
+2b95fbcecb9b6b61edab9de8fb73d139  ld/testsuite/ld-scripts/data.d
+97086c3a0dd31cdd0c6bdb12fcd43dc2  ld/testsuite/ld-scripts/data.exp
+68b329da9893e34099c7d8ad5cb9c940  ld/testsuite/ld-scripts/data.s
+0731e98ca5673229486cfcf5058fec31  ld/testsuite/ld-scripts/data.t
+00d95df246bde985c6d0c5892417f879  ld/testsuite/ld-scripts/defined.exp
+89dc613e3ce213bd756b77d022667dac  ld/testsuite/ld-scripts/defined.s
+d3b1800f46a71805045a3a5732fd42bc  ld/testsuite/ld-scripts/defined.t
+898a5ade6aa8f7eaf68f1f700d64799b  ld/testsuite/ld-scripts/defined2.d
+44e50acb685e014b85b6f6d140487f89  ld/testsuite/ld-scripts/defined2.t
+9e5f7ff90002487a36c98aab00769086  ld/testsuite/ld-scripts/defined3.d
+0117741095baa2e563ab8014b71135c3  ld/testsuite/ld-scripts/defined3.t
+dbaca5ab0c56146533bcb91837e1ec4c  ld/testsuite/ld-scripts/dynamic-sections-1.s
+0f1ac5c77c696c7314db13212177296a  ld/testsuite/ld-scripts/dynamic-sections-2.s
+31258b14a9fe381a3b20a81aa0943441  ld/testsuite/ld-scripts/dynamic-sections.d
+a3f5510481b10b038cc5c4e42c597382  ld/testsuite/ld-scripts/dynamic-sections.exp
+cda22c60c0c5a23d00b019cc2a1deeb8  ld/testsuite/ld-scripts/dynamic-sections.t
+889418058e89d0caff4bd15fb977f1e4  ld/testsuite/ld-scripts/empty-aligned.d
+5f297b0b73479bc95dc8c44e81def34c  ld/testsuite/ld-scripts/empty-aligned.exp
+c95f2f24f30fd409b48e6c65aed7e7b8  ld/testsuite/ld-scripts/empty-aligned.s
+cadba576e289814de613ad9a36e37b28  ld/testsuite/ld-scripts/empty-aligned.t
+02df86b6db580e4020de9907fca96cc8  ld/testsuite/ld-scripts/empty-orphan.d
+969349a101df326c72fe4c1d948213c1  ld/testsuite/ld-scripts/empty-orphan.exp
+2b91402df2ee759463e5c198571e9067  ld/testsuite/ld-scripts/empty-orphan.s
+2369ae6f32caf4a8bd7937dbef157f0c  ld/testsuite/ld-scripts/empty-orphan.t
+3222f82b6ca32692555ff99c7612b439  ld/testsuite/ld-scripts/map-address.d
+169db6e1a3492821eb0eee73bda01413  ld/testsuite/ld-scripts/map-address.exp
+a2b54dcf4e2ecbdbb18833bf2294fee4  ld/testsuite/ld-scripts/map-address.t
+1770d6e721477a893a9b08b6b980a352  ld/testsuite/ld-scripts/memory.t
+4be9001cee37c69515d5ba6b1402ab4e  ld/testsuite/ld-scripts/overlay-size-map.d
+249885fb5f91f0442247a5c0ae51196f  ld/testsuite/ld-scripts/overlay-size.d
+280894adb20868d6e1aa37b7060ce4ca  ld/testsuite/ld-scripts/overlay-size.exp
+2b01a21989d86f594965069b9db1a687  ld/testsuite/ld-scripts/overlay-size.s
+be05b1eaae0f8c2ad98e3584094c78e5  ld/testsuite/ld-scripts/overlay-size.t
+50add3d47b1a0715b4e6ddae721b853e  ld/testsuite/ld-scripts/phdrs.exp
+9af38df1b2580b0ee309b0acfb185537  ld/testsuite/ld-scripts/phdrs.s
+56a4859269de48bfbf859d4d0a327e9f  ld/testsuite/ld-scripts/phdrs.t
+f467ad3ca15f799f03c51c508303e1f2  ld/testsuite/ld-scripts/phdrs2.exp
+bbdb3e701421ecc295aca863f590193b  ld/testsuite/ld-scripts/phdrs2.s
+10ce00070bb4eb5f81bcde7d2f448717  ld/testsuite/ld-scripts/phdrs2.t
+e9fefb7de97b4937234f4f72ed5b3406  ld/testsuite/ld-scripts/provide-1.d
+252d36bfea703ce0d2506e236f2f3db3  ld/testsuite/ld-scripts/provide-1.s
+a29f1a3f99b5fca57b47a0c79e570c44  ld/testsuite/ld-scripts/provide-1.t
+54dbd4232cd3eac2e29209e757f7782e  ld/testsuite/ld-scripts/provide-2.d
+11d70d7ac52d4044cec8d6e9f12c754d  ld/testsuite/ld-scripts/provide-2.s
+c75f381e3417a08d872ae204c2b8627f  ld/testsuite/ld-scripts/provide-2.t
+0f2e46274037262a991b96738b30a16e  ld/testsuite/ld-scripts/provide-3.d
+252d36bfea703ce0d2506e236f2f3db3  ld/testsuite/ld-scripts/provide-3.s
+f78db69d068819fd77beecf6ee3b91b0  ld/testsuite/ld-scripts/provide-3.t
+3beafa5c28279a4f5e9721f068abba1e  ld/testsuite/ld-scripts/provide.exp
+09d14bc52bd89514d59a758591b815ec  ld/testsuite/ld-scripts/script.exp
+8ef222fed2cbd6222ef9c4bfb5caceb3  ld/testsuite/ld-scripts/script.s
+b9bc56b095f61ceef7cb9a948be41609  ld/testsuite/ld-scripts/script.t
+a673788e6a586931f65fee9d8964d0b8  ld/testsuite/ld-scripts/scriptm.t
+e2756a97ddf7bb419a571e8d4b429770  ld/testsuite/ld-scripts/size-1.d
+17de08fa9310489af79bed8573e8580f  ld/testsuite/ld-scripts/size-1.s
+ba30176f3ba8f8598896e2af7928cbdc  ld/testsuite/ld-scripts/size-1.t
+de78df3229d27e6b870edaf7151a9d69  ld/testsuite/ld-scripts/size-2.d
+e578260bc547df59e5b871c5024c0dbf  ld/testsuite/ld-scripts/size-2.s
+00e961a746e3d2e2b5f03d09c95fcf32  ld/testsuite/ld-scripts/size-2.t
+20ce94f0147c904d0998aa7dc2667703  ld/testsuite/ld-scripts/size.exp
+ca73fa6ea05204debf7b4fba1efcda94  ld/testsuite/ld-scripts/sizeof.exp
+de2cf65f9506880e63f0fdd46bb23c12  ld/testsuite/ld-scripts/sizeof.s
+feffaafc250ae18dfdd493f8a6c4f2c6  ld/testsuite/ld-scripts/sizeof.t
+21dae089d324942b34950c379e48a5ee  ld/testsuite/ld-scripts/sort.exp
+eead9c5aeffcb223370868cfab043bd6  ld/testsuite/ld-scripts/sort_b_a.d
+2a7ba0612ef2af4e245c31f61df233c7  ld/testsuite/ld-scripts/sort_b_a.s
+36cc8d4f65a52fb4e1eaf36bc7bbe44a  ld/testsuite/ld-scripts/sort_b_a.t
+2bf78d6d91821d0e3477089b4a0d6deb  ld/testsuite/ld-scripts/sort_b_a_a-1.d
+7f87a204ca20c97d22a5927fe937c90e  ld/testsuite/ld-scripts/sort_b_a_a-2.d
+4e1e7a5447d0d5799bbd81af744aa958  ld/testsuite/ld-scripts/sort_b_a_a-3.d
+d473185f8d72002be55218833f37bcf4  ld/testsuite/ld-scripts/sort_b_a_a.t
+9ec1a046088e398c3d9a717a8a7d270b  ld/testsuite/ld-scripts/sort_b_a_n-1.d
+65254357d35a7b259bdfe4126c594947  ld/testsuite/ld-scripts/sort_b_a_n-2.d
+985fb53f5b92251950d29f3e416a84c2  ld/testsuite/ld-scripts/sort_b_a_n-3.d
+6f540fc89fed53206b9f9733abe128e6  ld/testsuite/ld-scripts/sort_b_a_n.t
+94b506e9da62546194f0cdbe2b0cf550  ld/testsuite/ld-scripts/sort_b_n.d
+c55eb84613680619dda395823061937a  ld/testsuite/ld-scripts/sort_b_n.s
+40cea4acf0dfcb3e6815b18b86f34abb  ld/testsuite/ld-scripts/sort_b_n.t
+b3d7dd60458379fde73b4e1e132738cb  ld/testsuite/ld-scripts/sort_b_n_a-1.d
+0512902ac7d8498fba895604d0a29c9b  ld/testsuite/ld-scripts/sort_b_n_a-2.d
+b719e33f55eb23f5893b59a835af1954  ld/testsuite/ld-scripts/sort_b_n_a-3.d
+1a767732a300cd1c1ed8f4a7f8460d60  ld/testsuite/ld-scripts/sort_b_n_a.t
+f252b48614137a596a17ed06fcf424ea  ld/testsuite/ld-scripts/sort_b_n_n-1.d
+1ff6c6a98094b8e69d8be91ec40d0f4e  ld/testsuite/ld-scripts/sort_b_n_n-2.d
+7279f99dca5773b48ee4ccd8dd01fa66  ld/testsuite/ld-scripts/sort_b_n_n-3.d
+84b350ab758b1aa07651cf48b7be57f9  ld/testsuite/ld-scripts/sort_b_n_n.t
+b78a0c1ba0c480990053d50a6b85174a  ld/testsuite/ld-scripts/sort_n_a-a.s
+8f250dd3d26296f2f6783e2c554ad5db  ld/testsuite/ld-scripts/sort_n_a-b.s
+6741157fe257b6bbe6a3d51c96c222cb  ld/testsuite/ld-scripts/sort_no-1.d
+f0aed81e6e7b1a43b1fd58cf43bd7973  ld/testsuite/ld-scripts/sort_no-2.d
+dd867dcc221b34eac130495d74555792  ld/testsuite/ld-scripts/sort_no.t
+585317ce59731c46b1facf253e4b6304  ld/testsuite/ld-scripts/weak.exp
+3591b42540bac07bfbb66f7f0ce59d88  ld/testsuite/ld-scripts/weak.t
+409c80a8100bab5cf2d2e4d49d270eff  ld/testsuite/ld-scripts/weak1.s
+6907d9f57513ed7b3a49ea61ba43b270  ld/testsuite/ld-scripts/weak2.s
+33a18955ad41f28b49c5cbe7a8ec6f90  ld/testsuite/ld-selective/3.cc
+3f6043e6b6bd49e760b9e753b6aaf9ac  ld/testsuite/ld-selective/1.c
+237d849095a360c8cad108dd7c84812b  ld/testsuite/ld-selective/2.c
+76de65cf7643a5a9d830781a6ddb4ec2  ld/testsuite/ld-selective/keepdot.d
+7a88a85be95ddb758a06f65387cf61e3  ld/testsuite/ld-selective/4.cc
+30057150e6799981d84c149803078de1  ld/testsuite/ld-selective/5.cc
+271e265ec183206674aa523fd3758fe8  ld/testsuite/ld-selective/keepdot.ld
+ee25e606252413aba69f02431147ff1c  ld/testsuite/ld-selective/keepdot.s
+d38b74170368286b6fd747373a2ecdf5  ld/testsuite/ld-selective/keepdot0.d
+cd27e66eaeaab29aa416b21a3aeb060d  ld/testsuite/ld-selective/keepdot0.ld
+0c56b54342e000618c59f17ae4a34932  ld/testsuite/ld-selective/sel-dump.exp
+c2224ece353fc849262bac190c324dcf  ld/testsuite/ld-selective/selective.exp
+d33a9a5335e34e727b810a38df6c5f09  ld/testsuite/ld-sh/arch/arch.exp
+b037371b54ebcd74962e65b3b91bf53b  ld/testsuite/ld-sh/arch/arch_expected.txt
+30b7a8653cb08c05e1097858b107e0ab  ld/testsuite/ld-sh/arch/sh-dsp.s
+4d2706a50ab20c30417c26302f12fc35  ld/testsuite/ld-sh/arch/sh.s
+d21bba822225655f437c051bca55d24e  ld/testsuite/ld-sh/arch/sh2.s
+7b25fbf30b1f8e496f1b50d395fae4f3  ld/testsuite/ld-sh/arch/sh2a-nofpu-or-sh3-nommu.s
+f6fad30e9e292650e5026741bad69549  ld/testsuite/ld-sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s
+b7a6ebe8477406975fa43ef42d546b49  ld/testsuite/ld-sh/arch/sh2a-nofpu.s
+2aadc3e1e020aa8bc2687511f75d7266  ld/testsuite/ld-sh/arch/sh2a-or-sh3e.s
+d2de995debde1f6b2f3c87b19cd27ac3  ld/testsuite/ld-sh/arch/sh2a-or-sh4.s
+8d9aef9bfe34effa93bd804675220b0c  ld/testsuite/ld-sh/arch/sh2a.s
+e59c201bf04ce797181650301d9606c5  ld/testsuite/ld-sh/arch/sh2e.s
+ee8bb7fd1d439a4c849c156b6f420f21  ld/testsuite/ld-sh/arch/sh3-dsp.s
+7fd5f96ae1f6c45ab88ea5e0e1363b47  ld/testsuite/ld-sh/arch/sh3-nommu.s
+49fc270d3b7350d01a0364c7d067ed24  ld/testsuite/ld-sh/arch/sh3.s
+b8d40a718a36ded64524e5eaa8de350a  ld/testsuite/ld-sh/arch/sh3e.s
+d90eaefe91244912760b9ee178dd98ec  ld/testsuite/ld-sh/arch/sh4-nofpu.s
+8efd2c63efadfc154fac43618cb486af  ld/testsuite/ld-sh/arch/sh4-nommu-nofpu.s
+725e4d5afe232b272b47d1cdf45ac9ad  ld/testsuite/ld-sh/arch/sh4.s
+8d2f5ff12172b3b0455ad462fd5d1805  ld/testsuite/ld-sh/arch/sh4a-nofpu.s
+506e14fb7c8a395714758f2c963da3a1  ld/testsuite/ld-sh/arch/sh4a.s
+bd9ea8e501364d405408464ed25bae96  ld/testsuite/ld-sh/arch/sh4al-dsp.s
+0c9bfb09d4093045c3990998fa1df825  ld/testsuite/ld-sh/sh64/abi32.sd
+16800abae84af4667cfe5c8d42e268a1  ld/testsuite/ld-sh/sh64/abi32.xd
+d343449d8a4c030206c31db085d733fd  ld/testsuite/ld-sh/sh64/abi64.sd
+c8c633b9be51c28ec06e7f3983f647b3  ld/testsuite/ld-sh/sh64/abi64.xd
+7388fb47e1ddc604bc9d87535eb410a7  ld/testsuite/ld-sh/sh64/abixx-noexp.sd
+ad7ca775ab56187b50c88f7a58466375  ld/testsuite/ld-sh/sh64/cmpct1.sd
+de60a6da83988ae7f5fdc508d1b0f7c8  ld/testsuite/ld-sh/sh64/cmpct1.xd
+c73961a0fad1d2fd62629de1fe0c70b1  ld/testsuite/ld-sh/sh64/crange-1.s
+328b703c9b5066d401795ff6de9bc0bd  ld/testsuite/ld-sh/sh64/crange-2a.s
+e69fa9d1375fcd6ccd984389dba319ce  ld/testsuite/ld-sh/sh64/crange-2b.s
+3b4485d90727fe240d30e5a24bc087e5  ld/testsuite/ld-sh/sh64/crange-2c.s
+ae8e3795860a4b62529c938fee840d4e  ld/testsuite/ld-sh/sh64/crange-2d.s
+27c04cbc6a54fa6b2ca6457bb17afd6c  ld/testsuite/ld-sh/sh64/crange-2e.s
+06ec994967c3e725e37aebb6fb2b54c4  ld/testsuite/ld-sh/sh64/crange-2f.s
+e38d05441f7886533954e1385c29387c  ld/testsuite/ld-sh/sh64/crange-2g.s
+9689bde27dc2484a1a938f1fef07ded9  ld/testsuite/ld-sh/sh64/crange-2h.s
+1462c3fa6661a753105fe81a4c6db1dc  ld/testsuite/ld-sh/sh64/crange-2i.s
+3120aa0f0b7b01702e31368826db4456  ld/testsuite/ld-sh/sh64/crange1.rd
+1d3dbb351a9090d3eb0432b2c2379ca9  ld/testsuite/ld-sh/sh64/crange2.rd
+977dc477e0c3e355bada1ca3b8cf6568  ld/testsuite/ld-sh/sh64/crange3-cmpct.rd
+96b86b26f76b70cd985bc2487024ef1a  ld/testsuite/ld-sh/sh64/crange3-media.rd
+3ffebeae6c08139aa36e21265106298e  ld/testsuite/ld-sh/sh64/crange3.dd
+1065ad1fdd371c1bbe36077ba4e10de2  ld/testsuite/ld-sh/sh64/crange3.rd
+6d2ae45550e6669e99da0ba2cf65777a  ld/testsuite/ld-sh/sh64/crangerel1.rd
+82dcb6674fbce9f93a42fc337a628f1c  ld/testsuite/ld-sh/sh64/crangerel2.rd
+f94546e3da61ec674a5b48991732a50c  ld/testsuite/ld-sh/sh64/dlsection-1.s
+e2633ad84cbe5531e77222843f9fd304  ld/testsuite/ld-sh/sh64/dlsection.sd
+60b3ba2f0c4a5ca923893a894a582ac9  ld/testsuite/ld-sh/sh64/endian.dbd
+41884e5b1b3e647fe52be17cf58e47ad  ld/testsuite/ld-sh/sh64/endian.dld
+439a304e3df929f85ebb3859142504f2  ld/testsuite/ld-sh/sh64/endian.ld
+5e4c7d2bf96d59c028edefdbafb057a8  ld/testsuite/ld-sh/sh64/endian.s
+3f58d6c1b5b4570ad625f96257c7c075  ld/testsuite/ld-sh/sh64/endian.sbd
+0261b327b1e190bd7466855c6c73d527  ld/testsuite/ld-sh/sh64/endian.sld
+21c057a0221ab44ce372fe73e1c317e6  ld/testsuite/ld-sh/sh64/gotplt.d
+647197c48fed383b904f232572a2bb5b  ld/testsuite/ld-sh/sh64/gotplt.map
+ccb113dc467f4239cc25eb43b6adfd80  ld/testsuite/ld-sh/sh64/gotplt.s
+76ed01a76f418c6db9d67d67b3074643  ld/testsuite/ld-sh/sh64/init-cmpct.d
+3188da7e8915725e3af3ff13f57e02b7  ld/testsuite/ld-sh/sh64/init-media.d
+22383ca3faac1674e7e8421c0ba7112f  ld/testsuite/ld-sh/sh64/init.s
+66f1379b6447cac03fea20a698e2eba1  ld/testsuite/ld-sh/sh64/init64.d
+b2901603c0c019a5d4cf0b7ed51b006c  ld/testsuite/ld-sh/sh64/mix1-noexp.sd
+5c7c4d0f5810013fb5c35ad744d6feb2  ld/testsuite/ld-sh/sh64/mix1.sd
+ec3767b89fb0ca590b326b9860a24347  ld/testsuite/ld-sh/sh64/mix1.xd
+46b3cfa7c4d7934f4097735882648405  ld/testsuite/ld-sh/sh64/mix2-noexp.sd
+67bf07be014e835273718d75e3e00949  ld/testsuite/ld-sh/sh64/mix2.sd
+cdd2fb4ef871a7fa31a4d57943b5d7b4  ld/testsuite/ld-sh/sh64/mix2.xd
+9bde7b5a5a70e5eca48e7b3e041dedeb  ld/testsuite/ld-sh/sh64/rd-sh64.exp
+1166b5637fcaa5ab2f65d7604c8e0dea  ld/testsuite/ld-sh/sh64/rel-1.s
+dc52fd286f5e3e3ba2a0453bb7be7cf8  ld/testsuite/ld-sh/sh64/rel-2.s
+9e02e2cf242ae42ea88d118d142d4c29  ld/testsuite/ld-sh/sh64/rel32.xd
+f15c2dae88a4df3b11721c616c9080a1  ld/testsuite/ld-sh/sh64/rel64.xd
+b159b4fe9dc713c981bb9bbea10b0497  ld/testsuite/ld-sh/sh64/relax.exp
+ad76cea000fec5b3c623528c4f90f28f  ld/testsuite/ld-sh/sh64/relax1.s
+82c91e0d07cc0794161fd6919925329c  ld/testsuite/ld-sh/sh64/relax2.s
+558087d48e4ae36850b1b6c8b769e0f2  ld/testsuite/ld-sh/sh64/relax3.s
+a2dffd9f6049f25cbf6c6daf57da3672  ld/testsuite/ld-sh/sh64/relax4.s
+428b3202ce30a114bbb92ece7d8fcc86  ld/testsuite/ld-sh/sh64/reldl-1.s
+861e2f1ff73cc48552826aa5b007ccf8  ld/testsuite/ld-sh/sh64/reldl-2.s
+5e56691e5b9c53e185303094d82c123c  ld/testsuite/ld-sh/sh64/reldl32.rd
+949f3b6b37a11d8e7d426b4db3e8265c  ld/testsuite/ld-sh/sh64/reldl64.rd
+a7d4ae32ac28e116b5e8599e2538d0e0  ld/testsuite/ld-sh/sh64/relfail.exp
+dcb15c3eaafdd677a4bed69b52d8fd20  ld/testsuite/ld-sh/sh64/relfail.s
+4a9f958e1de298410352eacfc2790042  ld/testsuite/ld-sh/sh64/sh64-1.s
+e57b411a1bd1e2c3492480270ab84327  ld/testsuite/ld-sh/sh64/sh64-2.s
+23b9be31a168f599e2be6c4d45b238c6  ld/testsuite/ld-sh/sh64/sh64.exp
+6d672ac557ea34ee06eb8cb94b8f78d4  ld/testsuite/ld-sh/sh64/shcmp-1.s
+92a5607059e99b0b7a7121305ce083e7  ld/testsuite/ld-sh/sh64/shdl-1.s
+70a7a20b4381c32e89e9dd7615393ec2  ld/testsuite/ld-sh/sh64/shdl-2.s
+f586cc62dc8e2c0b4161d376ae4665e9  ld/testsuite/ld-sh/sh64/shdl32.xd
+2d4cbb3a76469076a359f59724cf3dcb  ld/testsuite/ld-sh/sh64/shdl64.sd
+ba90508417f2b3383c05a30eb8576605  ld/testsuite/ld-sh/sh64/shdl64.xd
+225a060f4b88eb8436ca23e73d7e06ec  ld/testsuite/ld-sh/sh64/shmix-1.s
+19c270c7b2605695a6fb613668c202c8  ld/testsuite/ld-sh/sh64/shmix-2.s
+faf5405f3d08893ba5e6a20f7f9928b0  ld/testsuite/ld-sh/sh64/shmix-3.s
+b0ab0fbf8d440fa329d565a5ccbba1e1  ld/testsuite/ld-sh/sh64/stobin-0-dso.d
+6771e1b630e85e22e0634aa1d166e81c  ld/testsuite/ld-sh/sh64/stobin-1.d
+2e309ebf433520a9f601ac736fdacb9d  ld/testsuite/ld-sh/sh64/stobin.s
+5d1270aedd0ebc512c57213149875340  ld/testsuite/ld-sh/sh64/stolib.s
+a96fccf0f5ec4d65768cadf4a4ca5bd2  ld/testsuite/ld-sh/ld-r-1.d
+fcbd70b5e55afc67cf17a5dba6a0290f  ld/testsuite/ld-sh/ldr1.s
+6217cc9778d5febfad3e5024c6962262  ld/testsuite/ld-sh/ldr2.s
+7f67f23b93423bdc4b6c60d3d1cffb3c  ld/testsuite/ld-sh/rd-sh.exp
+a38ffd217493e6d0a3d2606000462dea  ld/testsuite/ld-sh/refdbg-0-dso.d
+c2ba4cf7fc6b62779e73289f6f51a673  ld/testsuite/ld-sh/refdbg-1.d
+0d52d82e4d568ef945cfa6703f03abd7  ld/testsuite/ld-sh/refdbg.s
+b82d1cf4ae77e96d5e1e611ee68c70f1  ld/testsuite/ld-sh/refdbglib.s
+7ca2a68a498d257a37b1951ba5d46157  ld/testsuite/ld-sh/sh.exp
+1480d5643c4a3a7456700440e9f108dc  ld/testsuite/ld-sh/sh1.s
+4a6b928d31480c42bc368db1a2d729b3  ld/testsuite/ld-sh/sh2.c
+5b528fdef6c5d2b14d364d12d332a9d1  ld/testsuite/ld-sh/shared-1.d
+af8dee7b2a6f9c36b48c981da8fd4ef3  ld/testsuite/ld-sh/shared-2.d
+486895674299bb2c523133e56a567c1f  ld/testsuite/ld-sh/start.s
+6bc448baf0ba7a42eb02cb25dcffbce2  ld/testsuite/ld-sh/sub2l-1.d
+e28a2e0da19c4548dff752131cc9c4ef  ld/testsuite/ld-sh/sub2l.s
+f7e4c5f7cd622652943bd47ebc9a5a23  ld/testsuite/ld-sh/textrel1.s
+68cf0838e9de11a99ab1720e6d05fc00  ld/testsuite/ld-sh/textrel2.s
+452b14908770e945a2bce149204fc59a  ld/testsuite/ld-sh/tlsbin-0-dso.d
+e6b667dc540c331c761a878163872ba1  ld/testsuite/ld-sh/tlsbin-1.d
+9d610ee7aca785952a011a9c90a6d8f9  ld/testsuite/ld-sh/tlsbin-2.d
+94528c95120b315ec999bfdf77044934  ld/testsuite/ld-sh/tlsbin-3.d
+158222b1966ec79c1ece1a6f9721207c  ld/testsuite/ld-sh/tlsbin-4.d
+ad4606e3e2ff81551d474deb3bc1f9bd  ld/testsuite/ld-sh/tlsbin.s
+34f93fd97a11c009cae4ff7574890043  ld/testsuite/ld-sh/tlsbinpic.s
+ec3e44acc84eb03c62466be835ee927f  ld/testsuite/ld-sh/tlslib.s
+011d5062c2359394548e646c96dd4137  ld/testsuite/ld-sh/tlspic-1.d
+68b8c4c54386eb15cac2cc339cf30a38  ld/testsuite/ld-sh/tlspic-2.d
+0fba19a4394a0643eff7462e9ca89d6e  ld/testsuite/ld-sh/tlspic-3.d
+d37960962cb3bc48f6638db2bb7353a0  ld/testsuite/ld-sh/tlspic-4.d
+a97a184577f5d28dd41b482b6f128426  ld/testsuite/ld-sh/tlspic1.s
+e43032ce8828ef5065ea1bb6480a92fe  ld/testsuite/ld-sh/tlspic2.s
+c19406d13cc72935d504c49315d01baa  ld/testsuite/ld-sh/tlstpoff-1.d
+06496514e5705479dc0185db500a3d19  ld/testsuite/ld-sh/tlstpoff-2.d
+eaf0ef9de13413ca33a79cb688c72a2f  ld/testsuite/ld-sh/tlstpoff1.s
+21e7feeb0b7856ed94bc352c7169925a  ld/testsuite/ld-sh/tlstpoff2.s
+f4202fe02285184a2211e0467471ddb3  ld/testsuite/ld-sh/weak1.d
+89c396121b4c938815e9d8009f25ee37  ld/testsuite/ld-sh/weak1.s
+a36d890e159b5170536664159945864a  ld/testsuite/ld-shared/elf-offset.ld
+662fbaf1e1bfcf9e0f69ece262c1fbc9  ld/testsuite/ld-shared/main.c
+1ac7636415298be4ec10d57894d7bd92  ld/testsuite/ld-shared/sh1.c
+dda81aa1c99d9fd983ae39378b5b69fd  ld/testsuite/ld-shared/sh2.c
+7ac9ed1cf3e4b23bd77743315f0560d5  ld/testsuite/ld-shared/shared.dat
+d94d20a6a23a817c2e67bbd8f4f5f4b1  ld/testsuite/ld-shared/shared.exp
+8b38128b19d7be0a9f143a3fae14669f  ld/testsuite/ld-shared/sun4.dat
+e8d8c5ef094b26b46377375f8ef076c3  ld/testsuite/ld-shared/symbolic.dat
+bf16787cbff593c9377800bda68bc12b  ld/testsuite/ld-shared/xcoff.dat
+b8fcdbcfe68ef77c388127e993683062  ld/testsuite/ld-sparc/sparc.exp
+f2cc7e2a6d73ba0523e4152cfca6b713  ld/testsuite/ld-sparc/tlsg32.s
+b129627f00eb462a2166203641df5770  ld/testsuite/ld-sparc/tlsg32.sd
+bd716e9b7672e56e96e7f293350410c2  ld/testsuite/ld-sparc/tlsg64.s
+3610c4fe70c3ab356210a60748475f43  ld/testsuite/ld-sparc/tlsg64.sd
+f45983dd004da37020dc6f85bff8d99e  ld/testsuite/ld-sparc/tlslib.s
+2edea12bda9f42749ee9ae86f8fb3f7f  ld/testsuite/ld-sparc/tlsnopic.s
+236a8f451d38469c389f471b4529d5c3  ld/testsuite/ld-sparc/tlspic.s
+150f138736e3fa42ca4ec9ac869a4255  ld/testsuite/ld-sparc/tlssunbin32.dd
+b06e3aad84dda832ba9f4b876f17e2ff  ld/testsuite/ld-sparc/tlssunbin32.rd
+36f2e351f3a028ca81a679221131a0cd  ld/testsuite/ld-sparc/tlssunbin32.s
+16aeb0a48713e4bf89d2065bfe20839f  ld/testsuite/ld-sparc/tlssunbin32.sd
+176ea661341925d2f0f24b88dcc219dd  ld/testsuite/ld-sparc/tlssunbin32.td
+4dde1f904f09dd49ee9bd4d3f1484653  ld/testsuite/ld-sparc/tlssunbin64.dd
+a46ffc8ba7375e29643104eceefb1548  ld/testsuite/ld-sparc/tlssunbin64.rd
+9b23cbeb85df66899de9aa841d41a6d8  ld/testsuite/ld-sparc/tlssunbin64.s
+bd37fb5e377d86212f801b19c152989a  ld/testsuite/ld-sparc/tlssunbin64.sd
+ed39d3a0f0c9b484064abda9325c770b  ld/testsuite/ld-sparc/tlssunbin64.td
+2d0ba1b70aa80b977b1153e86a41eda2  ld/testsuite/ld-sparc/tlssunbinpic32.s
+4f54433140a83203f9612a17f1f68a7c  ld/testsuite/ld-sparc/tlssunbinpic64.s
+6abf8458a9d754c1859d3d5c699bf7ae  ld/testsuite/ld-sparc/tlssunnopic32.dd
+e808bbf3f14dfecff63f131e2ca4949b  ld/testsuite/ld-sparc/tlssunnopic32.rd
+163ff743ffacb4dd2e35ff15849a0ea4  ld/testsuite/ld-sparc/tlssunnopic32.s
+8e658dc394773b42b2ab36c4de75a68e  ld/testsuite/ld-sparc/tlssunnopic32.sd
+c45f0113f9adf2080a946df08cd1da82  ld/testsuite/ld-sparc/tlssunnopic64.dd
+50d7950cd9a0d88abf7a74afa5888587  ld/testsuite/ld-sparc/tlssunnopic64.rd
+a6c8ed5af43f5482d3d7bcf74e7684e5  ld/testsuite/ld-sparc/tlssunnopic64.s
+a38c98582f5fdb870e75c2f6be5c8702  ld/testsuite/ld-sparc/tlssunnopic64.sd
+c8628a198c49f185f5660db19d3b3695  ld/testsuite/ld-sparc/tlssunpic32.dd
+58096e2ff5b84902c8ec21f549f10a85  ld/testsuite/ld-sparc/tlssunpic32.rd
+e103f3b429288a84d8e5c47bdbd5697e  ld/testsuite/ld-sparc/tlssunpic32.s
+957929ffafe2d2cee185a0841b0d1ec7  ld/testsuite/ld-sparc/tlssunpic32.sd
+79ba66a090beb7c8eb24102878fcd2b8  ld/testsuite/ld-sparc/tlssunpic32.td
+e664f993c5bf039cd1c11490fd54c507  ld/testsuite/ld-sparc/tlssunpic64.dd
+bf755f0449a7bfcac59b4da7f6dd4b35  ld/testsuite/ld-sparc/tlssunpic64.rd
+92725610c233ff43c7684b099ad1f63c  ld/testsuite/ld-sparc/tlssunpic64.s
+f85a523e8c664433001e7ba2591ef011  ld/testsuite/ld-sparc/tlssunpic64.sd
+d09d4fbfa24bef5a3f4fd2efab45a217  ld/testsuite/ld-sparc/tlssunpic64.td
+d4b99a8da6449380ef31dd03ebdbf4e1  ld/testsuite/ld-sparc/vxworks1-lib.dd
+4d0018309d753aeb7489523e8fc2b582  ld/testsuite/ld-sparc/vxworks1-lib.nd
+9b1e7159fff422aafc8ebb2099e52d38  ld/testsuite/ld-sparc/vxworks1-lib.rd
+d7d3679cbd81499e584cf78e950e72d6  ld/testsuite/ld-sparc/vxworks1-lib.s
+57e13e14adacc62cab22da622bbcb01e  ld/testsuite/ld-sparc/vxworks1-static.d
+eff6bd323ed07e997b4d697536a4994b  ld/testsuite/ld-sparc/vxworks1.dd
+821ce56d69b313bd3e0958ba37a155c1  ld/testsuite/ld-sparc/vxworks1.ld
+012a01423074a17c346bf377a74264ba  ld/testsuite/ld-sparc/vxworks1.rd
+8c0216be7e3b38ae166e4359b6338008  ld/testsuite/ld-sparc/vxworks1.s
+70a3a63caaa6294e72a21f3af93d802c  ld/testsuite/ld-sparc/vxworks2-static.sd
+01ec404ce50fbffc8aa2a12f3466b101  ld/testsuite/ld-sparc/vxworks2.s
+a59d05b41e3dd040fb4e12e434cff21d  ld/testsuite/ld-sparc/vxworks2.sd
+13ae90e9d3227287f9c5f93cdba3395f  ld/testsuite/ld-srec/srec.exp
+ff2b78b0df3a6bc56644e35ec4f068bd  ld/testsuite/ld-srec/sr1.c
+6524623299b50b9299f4b3fca543b0fa  ld/testsuite/ld-srec/sr2.c
+76a4cb76d59f235af5e567ccb024de2c  ld/testsuite/ld-srec/sr3.cc
+b619c6e42cb950ef08a2be4baed7e558  ld/testsuite/ld-undefined/undefined.c
+e4d49c917823429aef9adb130513e31e  ld/testsuite/ld-undefined/undefined.exp
+1f7a5d3edf69df6aaf1fc7dcf62a54c6  ld/testsuite/ld-undefined/weak-undef.exp
+7453216dfa4d1a7223a1d7b7064c1242  ld/testsuite/ld-undefined/weak-undef.s
+ff2b7f892a6ef004c2076f2bab575ec0  ld/testsuite/ld-undefined/weak-undef.t
+4f639993d48cde21b3e673ba109e197c  ld/testsuite/ld-v850/split-lo16.d
+ed0ddb6caa20106cbc5b60ab5e9aac8e  ld/testsuite/ld-v850/split-lo16.ld
+087975db2e2095342de4570a8829f4bf  ld/testsuite/ld-v850/split-lo16.s
+b265c3c204997f5434d77f8c17941b8a  ld/testsuite/ld-v850/v850.exp
+e4ee98701d99eed774f6432650344170  ld/testsuite/ld-versados/versados.exp
+a3dd5e83356444e20dfff2b6986f9701  ld/testsuite/ld-versados/t1-1.ro
+20fa39afdcf19846ef54b8c8a63c09fa  ld/testsuite/ld-versados/t1-2.ro
+750043b1377753643d66f2ea010d1d64  ld/testsuite/ld-versados/t1.ld
+1ea1a397873490e5a225282b08911b79  ld/testsuite/ld-versados/t1.ook
+b73a148ff92b3b9f50118dedddc8e9aa  ld/testsuite/ld-versados/t2-1.ro
+6521d61c4bf4f500cb868ded9a47044e  ld/testsuite/ld-versados/t2-2.ro
+ed2b6b448335acf507dc34b5a01710d8  ld/testsuite/ld-versados/t2-3.ro
+7020c6c2928c89ca798f517226862f1c  ld/testsuite/ld-versados/t2.ld
+fb1e9ddf26ad5af0d34950d762f68ed9  ld/testsuite/ld-versados/t2.ook
+ac1f95cae47dc9274eec849f09c2dc49  ld/testsuite/ld-x86-64/pcrel16.d
+cef5f0e760808d3d311df39bc5c74a7d  ld/testsuite/ld-x86-64/abs.d
+21deaf5784d704c09916457834ccb87a  ld/testsuite/ld-x86-64/pcrel8.d
+371ffbbc7c8537a85c2edc5699db995e  ld/testsuite/ld-x86-64/tlsbin.dd
+7008cde157d3e6010d366fc5b7374ea2  ld/testsuite/ld-x86-64/tlsbin.rd
+08e4c3e5de546258109f07e464958617  ld/testsuite/ld-x86-64/tlsbin.s
+8db4e5c9ef7ad4f64b96bb091ac9b1aa  ld/testsuite/ld-x86-64/tlsbin.sd
+cac767a833e8bca075cf26cf1494be0a  ld/testsuite/ld-x86-64/tlsbin.td
+e028efc5b5636ef569013ba0e20d147e  ld/testsuite/ld-x86-64/tlsbindesc.dd
+f381ec97701c7fee77e446b5110d6c0b  ld/testsuite/ld-x86-64/tlsbindesc.rd
+28cd3b7eae777449d9f558eb5822d108  ld/testsuite/ld-x86-64/tlsbindesc.s
+b548be537fd56f8173cebff77efb6271  ld/testsuite/ld-x86-64/tlsbindesc.sd
+c4509bd20e4276786a17b348e2d42ae9  ld/testsuite/ld-x86-64/tlsbindesc.td
+5f275de647d9dd02072a59dd6c4dd2cf  ld/testsuite/ld-x86-64/tlsbinpic.s
+98edffa8d29c0369a708397218b35241  ld/testsuite/ld-x86-64/tlsdesc.dd
+33ebd6350654cf3a26a6fb06eda838a3  ld/testsuite/ld-x86-64/tlsdesc.pd
+d1310918f7aa794b14b9c1169bcad507  ld/testsuite/ld-x86-64/tlsdesc.rd
+a247554344f5bad8c449d63434ac20e5  ld/testsuite/ld-x86-64/tlsdesc.s
+5cca08b9fccd9617223fa39b70d70b75  ld/testsuite/ld-x86-64/tlsdesc.sd
+f9efccdc4af2412e8af997da758ad434  ld/testsuite/ld-x86-64/tlsdesc.td
+62d4929ce74fe4c87164c5548e80d3cf  ld/testsuite/ld-x86-64/tlsg.s
+6ae3f3a98488e4cba405bf68cc7b742a  ld/testsuite/ld-x86-64/tlsg.sd
+8d86621d367036df5b211a01d2f5df6c  ld/testsuite/ld-x86-64/tlsgdesc.dd
+575da1ad17d386a9c83cbfe86a2537b2  ld/testsuite/ld-x86-64/tlsgdesc.rd
+210b96ca733b3982a77955970b126e5f  ld/testsuite/ld-x86-64/tlsgdesc.s
+8c2ec5a661ed74565c24b65f22a230ad  ld/testsuite/ld-x86-64/tlslib.s
+853fd62b13d16e31ab4cc6529da7e35f  ld/testsuite/ld-x86-64/tlspic.dd
+f251f3b525e402c6090e6aa5702cf1fe  ld/testsuite/ld-x86-64/tlspic.rd
+dd99c9c36fc0bd2f5eb9e3a4d6a8dd48  ld/testsuite/ld-x86-64/tlspic.sd
+371d1d843b9d6b1b7409eda202b9139d  ld/testsuite/ld-x86-64/tlspic.td
+ee7691553eed047cd215df33232e3a67  ld/testsuite/ld-x86-64/tlspic1.s
+1be6d8e1547c710f7bc12028c6522832  ld/testsuite/ld-x86-64/tlspic2.s
+a8a48a5997bbc2d21b520779e62e83b3  ld/testsuite/ld-x86-64/x86-64.exp
+6f577583952be3de543260d5fb8bbb16  ld/testsuite/ld-xc16x/absrel.d
+3998ca79d045f299d12bbd0cf1e6205f  ld/testsuite/ld-xc16x/absrel.s
+01a0b5ff12180f56fd3e59aca1729442  ld/testsuite/ld-xc16x/offset.d
+1f6dbcccb182d6b602c350c41af6da1b  ld/testsuite/ld-xc16x/offset.s
+c79d7034cdc00b1ef5f6063eb95f5c0c  ld/testsuite/ld-xc16x/pcreloc.d
+7aefa0a8f34a16164d08456ec76b6fc3  ld/testsuite/ld-xc16x/pcreloc.s
+049fad93eab7776029ac7ce488ac7ea0  ld/testsuite/ld-xc16x/pcrelocl.d
+6dd5a82cc9e09645018cc94c7c843ff8  ld/testsuite/ld-xc16x/xc16x.exp
+c672c9391c0476202146864913baf1cf  ld/testsuite/ld-xstormy16/external.s
+3105964d5d4b7fb1c6827105fc30d4f6  ld/testsuite/ld-xstormy16/pcrel.d
+a8dbf5f9838a94e3e1d6bb3ac1ffb031  ld/testsuite/ld-xstormy16/pcrel.s
+13d464c91259227f7e4e7977650357fa  ld/testsuite/ld-xstormy16/xstormy16.exp
+71a7accdcb33dce65fb3d8fd8c7f0b46  ld/testsuite/ld-xtensa/coalesce.exp
+f242f65208286ce6c777e52159a52efe  ld/testsuite/ld-xtensa/coalesce.t
+86df88ae4915f743772325ebdb29c512  ld/testsuite/ld-xtensa/coalesce1.s
+ebdcd6e72a4579e5cecbc5bea6ff3410  ld/testsuite/ld-xtensa/coalesce2.s
+12aaf22c73d5eaf29bc76124147a8686  ld/testsuite/ld-xtensa/lcall.exp
+f242f65208286ce6c777e52159a52efe  ld/testsuite/ld-xtensa/lcall.t
+94cc8713eb0fe35038d64fdd1b12cb88  ld/testsuite/ld-xtensa/lcall1.s
+f3bb78e2bbd6bac90e08899f09dab316  ld/testsuite/ld-xtensa/lcall2.s
+262c4708bc80ed9d46a661122bdcc4b3  ld/testsuite/lib/ld-lib.exp
+6ad19bf02743d55c759d5a8d6bd4076d  ld/configdoc.texi
+ebd59a0b2bc809e93b173cb5dc99727b  ld/ld.1
+b7df7c99eb90318c930c0e073fd07fa0  ld/ld.info
+c08b10803ea83e62b3075916114343a5  ld/ldgram.c
+3f5bb9b87c7d0f71e2248124dfa72442  ld/ldgram.h
+31a2722c18f8f3824ef0b7dcd4009e16  ld/ldlex.c
+b65e11700f46a3e5383b575abb6c1312  ld/ldver.texi
+7b65854f594c84e80295173de277b3dc  libiberty/config/mh-cxux7
+4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
+044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
+904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
+38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
+a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
+3eff4c5c39ba75a4a5cde516040d5202  libiberty/ChangeLog
+72e22f0a7135829bf67897b12178a21c  libiberty/Makefile.in
+294191545dc71f5ad13229b0a5bfd7b1  libiberty/README
+8797cb1a6faa84f3c7fe3d12164a4b13  libiberty/_doprnt.c
+ac704a94dd14d576472e2209daf29cdc  libiberty/aclocal.m4
+e60c2e7c5dcdd19510066c13f1a527d3  libiberty/alloca.c
+7e75d0214f7d89dcd36df06437d1025c  libiberty/argv.c
+1ff1c82c53060dceecc901cf0b63c950  libiberty/asprintf.c
+a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
+c34119797a13e71989722851c14b711b  libiberty/atexit.c
+ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
+17a1f1d7f5acf01ce922d98210067542  libiberty/bcmp.c
+842606d1283483301611ebda802d4178  libiberty/bcopy.c
+fe609e6de441faf95f55a6b481804e41  libiberty/bsearch.c
+4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
+5bd055836a440051d7c561a9f591ecbb  libiberty/calloc.c
+379a897b438cc01bfe348081fb6f0c06  libiberty/choose-temp.c
+a8391a5d7431a4e11f61be41386a3356  libiberty/clock.c
+7696d31c3756d5ad3fa306cef3599c5b  libiberty/concat.c
+fdaf5fdc2a84ff34103604588aea1a3b  libiberty/config.h-vms
+dd2971acf38c8b94a06c8309086d6de5  libiberty/config.in
+02e9feb041a4754e898eed77bbe2f355  libiberty/configure
+d4c9d1a86255615f275dcf81420de44a  libiberty/configure.ac
+a8959f1d1758eb14819753023f89d199  libiberty/copying-lib.texi
+fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
+948ce4961478fecb343708497ca4f66c  libiberty/cp-demangle.c
+79045ff4b417fef74eea19ec259f5eef  libiberty/cp-demangle.h
+a57edfd55211c46358188905b2dfac7d  libiberty/cp-demint.c
+9d9beea4df9bc80fe6a803d6df8b5472  libiberty/cplus-dem.c
+7e772185592cfb1b5ecf5335889e71a0  libiberty/dyn-string.c
+d7cc74911527c672bba716c9a793ed94  libiberty/fdmatch.c
+0c2635175b975823b40980974dfc2110  libiberty/ffs.c
+1dd36e1601883f5bc897c94e6f06b33b  libiberty/fibheap.c
+59723eaec680bfc3622215b4aa399768  libiberty/floatformat.c
+aa0f79d836563e6a0cd92ab678b07aaf  libiberty/fnmatch.c
+30a2550d37938d1e3354632161ac1d0b  libiberty/fnmatch.txh
+2ae40f31f6899f80f81abe3810702435  libiberty/fopen_unlocked.c
+1a321dd305869f1f7e2f5d91b95c4ad0  libiberty/functions.texi
+9a504fc6f981505eee669fd71657624a  libiberty/gather-docs
+754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
+eb843075f87d187630f6a3d849b93e64  libiberty/getopt.c
+7c932073da197aa34eb3383960a114fd  libiberty/getopt1.c
+bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
+5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
+5c0eb869d31323424849c0aab9247722  libiberty/getruntime.c
+0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
+c39bedead227c1278faef880c1ad4d08  libiberty/hashtab.c
+5e32ec629f36b60b40d64e2765b84ad2  libiberty/hex.c
+4d485e7735be430b22aea0abb4938e26  libiberty/index.c
+63603f59c10b854880473f2105993706  libiberty/insque.c
+dd4459d067ddcc1144926103908d94bb  libiberty/lbasename.c
+18b9304d730b955b7e77b09e91d50418  libiberty/libiberty.texi
+2c56f9552603480f87b7136972894128  libiberty/lrealpath.c
+63f182056dc07de23f0795030fddb331  libiberty/maint-tool
+d55e5d026b0f0cf0a1e06a592cd542be  libiberty/make-relative-prefix.c
+3a2fa59555ba074a642f332e8ed421ec  libiberty/make-temp-file.c
+e331b31ce1cbf27a44f2fbeb54fa7b17  libiberty/makefile.vms
+cae2c391feb26227e1cf16d6419da2fa  libiberty/md5.c
+c8e83a77812bbb5089066e944e77128c  libiberty/memchr.c
+a528eda37da892ba47489adc65a5876c  libiberty/memcmp.c
+95ce22742f0fff45d387a5edfafe5ea0  libiberty/memcpy.c
+17849b03ded61c7a4eab9a092a1ec466  libiberty/memmove.c
+302752b6f91e8b56b9944c1a48d780f9  libiberty/mempcpy.c
+d165e2ea5dd22486fc47a26cb1122187  libiberty/memset.c
+0ff9ac67f525fded5b15e03991c50642  libiberty/mkstemps.c
+7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
+684ab2f5de6b46501aac279f2bd2f92b  libiberty/objalloc.c
+ab0f43a6703e0705b4e8bac274635b56  libiberty/obstack.c
+051d336f4d87cf832d5adf343a10cbe0  libiberty/obstacks.texi
+f4ec5461a2fdb28214092b95b39ef186  libiberty/partition.c
+36b195d49878abed3a7f4db395cb70e9  libiberty/pex-common.c
+6002450928eba687afcd0242e349d9bd  libiberty/pex-common.h
+64b677d4296dca7a7141796ab4dea38b  libiberty/pex-djgpp.c
+8ca95471e5b35e3aca0fd55eea8c830f  libiberty/pex-msdos.c
+d67a9b0906ffa961fdc411aa936fdfb1  libiberty/pex-one.c
+097468af3287c1aea57f116cfd890491  libiberty/pex-unix.c
+fd870174e78c432b228ca3241aa50a8a  libiberty/pex-win32.c
+fa294b254945587548ca6b32d7922d03  libiberty/pexecute.c
+893cc6ce064d5a3701726ba4d3f1961e  libiberty/pexecute.txh
+af9bee5d1912e623defe1a7ee0ebc296  libiberty/physmem.c
+f7e45d3f23f83574372065030595efa7  libiberty/putenv.c
+db9be0bda70e724fa67044d66299b85d  libiberty/random.c
+60656698122b80711c2cc8d35f29d9da  libiberty/regex.c
+24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
+74850488731148a9c9f410042144f37d  libiberty/rindex.c
+b91dd39a7b9d4c9d03edc8a6cdf81978  libiberty/safe-ctype.c
+26cebc96bf0afd6f4549daa75df55ad1  libiberty/setenv.c
+cafcb336a6d21898592c5cdaa7c5a3a7  libiberty/sigsetmask.c
+508df49caf0f63878c515fb3998b5a27  libiberty/snprintf.c
+32ea90e5aded75d1cbed83fc52123753  libiberty/sort.c
+d86a2cadfe8dbad9abe796fca261dd06  libiberty/spaces.c
+47d72c6adf3f4f862acb06471958f7c0  libiberty/splay-tree.c
+bac20c1a198662917e6bc775ad9bd0cf  libiberty/stpcpy.c
+ec776b1c7d69d111cf8371fa0a1ff356  libiberty/stpncpy.c
+0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
+13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
+9f681e91439ac44c9df8e1b1deef33b5  libiberty/strdup.c
+b3aaeed201f3c6fd293e9f9618350bfe  libiberty/strerror.c
+2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
+7a2af59d38fecd41d10bb27112051f66  libiberty/strncmp.c
+2d92725e49581d86d7cf06fb40def19d  libiberty/strndup.c
+5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
+e10b314802d21dd9bf042ad2cbfa8b71  libiberty/strsignal.c
+e2f3721273c7ef1ab0194aad78ffa3aa  libiberty/strstr.c
+f824ac0dcaa3a91b48d01cc80a7d17ef  libiberty/strtod.c
+975b1003b58e3cca76c06e7237a14e0d  libiberty/strtol.c
+26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
+9e1bb6fe95ebb6415672ddf1da29ec65  libiberty/strverscmp.c
+937e3fb4f58bc3a9c6c783cd10aa8022  libiberty/ternary.c
+6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
+fed47804d20d26873d480f5166e7d864  libiberty/unlink-if-ordinary.c
+76ece2eeaeac16005683a3e7bae1f2cb  libiberty/vasprintf.c
+8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
+dc973aeb02b4545e42f179263612a4d6  libiberty/vfprintf.c
+9a46f8a6bd6b911849f209d09e94b66f  libiberty/vmsbuild.com
+9cf75296ffdf5af13ece69eea5cb16a4  libiberty/vprintf.c
+bed73a98fd3178ecd9433e0f6a3ed214  libiberty/vsnprintf.c
+9e789d58cebe756b96be30941debb05e  libiberty/vsprintf.c
+9c22926d0b260822786460b98e517ad8  libiberty/waitpid.c
+f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
+22389f4e282e4b739e0c1d70cba66cc1  libiberty/xexit.c
+cdc140ce93944c5bb2ac62cd3dfd86d6  libiberty/xmalloc.c
+344bbf391c173eb006d2b3fa364f63db  libiberty/xmemdup.c
+9609edf2f881f61eb24039301994216a  libiberty/xstrdup.c
+6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
+c6e7ef53b4ff115a136d917511222656  libiberty/xstrndup.c
+330da7cfe097a82ffed26ebba651a9bd  libiberty/testsuite/Makefile.in
+ff963d70b3c93aa1f9257747d47a48a3  libiberty/testsuite/demangle-expected
+e946b5b579f6f844f869d5ac0d565a55  libiberty/testsuite/test-demangle.c
+9c8adfe97eb319577a25393de6ee66c8  libiberty/testsuite/test-expandargv.c
+e9e958dbfc45a08dbbbbe48c83d3987e  libiberty/testsuite/test-pexecute.c
+55724e0090c2a11c8d24775b2f95adb0  libtool.m4
+5a0f4a1d32ed81f2af8d44650aac72bc  ltcf-c.sh
+bff9b71ebd1437c73cf693e24015f392  ltcf-cxx.sh
+89c23841453326543b832e702a431aa7  ltcf-gcj.sh
+30b7b8b72a14d7be772013652885a93e  ltconfig
+b67f3c8939f6b1922317ef00c5029a8b  ltmain.sh
+734690a438420e8479e15d8ee6971792  makefile.vms
+5d58f0dd4262171a71b65bd515d85d07  missing
+fbe2467afef81c41c166173adeb0ee20  mkdep
+64e8ff72710e830f15a347863b848c7d  mkinstalldirs
+a20215c156b06261d944ae7f30a3b75c  move-if-change
+72ecbb6b34cb188388891cb3924fa403  opcodes/po/POTFILES.in
+2cf1768bff0ffcdf3d0c6583c6a42ab2  opcodes/po/Make-in
+1b79e075af1926ef6736fa317f054702  opcodes/po/pt_BR.gmo
+6d3b93858658dada9e01f04ea2aa2155  opcodes/po/da.po
+baba2506d17c4e2214d6fdd5868e6699  opcodes/po/de.po
+8078cba94fbbf0196faa27215155eeed  opcodes/po/es.po
+c4e5e8896ca9229ffab09938d1cbbeda  opcodes/po/fi.po
+a57e28d667d8136a39108d891c6a09b8  opcodes/po/fr.po
+91e8a8ccf8ef0b7b120d8fda0029a038  opcodes/po/ga.po
+195fea77b114bb5405df61cf8bd287db  opcodes/po/id.po
+d9aa717d02f9e1777267150ebd521cce  opcodes/po/nl.po
+62e4f85dead94c1becead08105162091  opcodes/po/opcodes.pot
+30f5fa421474edf39ae99a8985bd42e9  opcodes/po/pt_BR.po
+27e9fec6ee5c546b5d5f4afb80b287ed  opcodes/po/ro.po
+45db317868bfb202300160e0657f06ea  opcodes/po/sv.po
+8ddcec300546b39bc1d9a13098637b64  opcodes/po/tr.po
+13c8a51607162c4f0bd16f41d6e16935  opcodes/po/vi.po
+5f9e62904aed88b112efa945548f622f  opcodes/po/zh_CN.po
+bb1c7be180e128c17ef71889d8e21d40  opcodes/po/da.gmo
+6881ecf19052fe945c5dfefc588207ab  opcodes/po/de.gmo
+7917f57cd1dce76606f211a0e970cfe7  opcodes/po/es.gmo
+b18d835f717e999a6a6d2b3dec3af835  opcodes/po/fi.gmo
+68cc370681fab9c95313f4ec78b4acc6  opcodes/po/fr.gmo
+a05c4ae1c9e1ed132d00b44fc7b5c08f  opcodes/po/ga.gmo
+b6c960d660ea6c9ef46f51a98cd15d76  opcodes/po/id.gmo
+e7e3a6ebe087441e79762fec9e20d19c  opcodes/po/nl.gmo
+35aff368921bb92ebaee91c25b2f6af7  opcodes/po/zh_CN.gmo
+e216f1583ca03a04f8849dfb96b59c3f  opcodes/po/ro.gmo
+d7c42d78dd00ae4c8b71fecb736fd17c  opcodes/po/sv.gmo
+179cd41f0e8af51dd577fd5d7ab36c79  opcodes/po/tr.gmo
+87a8569f2970f9bfb431b3ac757bd460  opcodes/po/vi.gmo
+a9a5e684b1e5de4ee073ffafaba1a265  opcodes/ChangeLog
+1b4b8646bdc7ad5a2f9071d8ac8b024e  opcodes/ChangeLog-0001
+83ac14eead5eda1862cc926b82d35cea  opcodes/ChangeLog-0203
+d4cca6dd9882292b6f2e17604bed6cbd  opcodes/ChangeLog-2004
+95966cf6bc7711aae732addbfd33ce65  opcodes/ChangeLog-2005
+568db2b4641150f46a18da55529d8d3b  opcodes/ChangeLog-9297
+fc3adcd099179b77d2adb79ada21a89c  opcodes/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab  opcodes/MAINTAINERS
+7159decc6854c0703c41a6d3da0b015b  opcodes/Makefile.am
+76116d122def132a1af513f0f9b7dc56  opcodes/Makefile.in
+bd5eb3fd0135ccc8fe3f80b61c245322  opcodes/acinclude.m4
+fdd497b22fc3a3aa6b9a98456c0d69b5  opcodes/aclocal.m4
+3c63675e6490c89278c2435a90b8a716  opcodes/alpha-dis.c
+bc79a1ed413832bcfaca09c9b17c775c  opcodes/alpha-opc.c
+ecc5f1bcd5ed852d310e4c3958234ad2  opcodes/arc-dis.c
+a190d663d904faaafc7dcf4b42934434  opcodes/arc-dis.h
+bd43b17e2055c57eb772528af9de18d4  opcodes/arc-ext.c
+95bd6d4928408e5657fbe5d5729eaf90  opcodes/arc-ext.h
+f94aa200384a65f1ea4d1b6135f12e31  opcodes/arc-opc.c
+753039477d68e4ca80efd88f81c35b04  opcodes/arm-dis.c
+d76b92afb19f123e522d4763b730df79  opcodes/avr-dis.c
+bdac4074d4b7e8661b13b8a85f3cc43b  opcodes/bfin-dis.c
+15d6ef8983742addac38238c700de5b5  opcodes/cgen-asm.c
+03b759d7735f2950234f5078801957e9  opcodes/cgen-asm.in
+64d438b4f38fdd271873724d4b6ac609  opcodes/cgen-bitset.c
+ade17da23b653e19acf4a26ae24a69e4  opcodes/cgen-dis.c
+41d542b976c4f88eef640e8431060ea6  opcodes/cgen-dis.in
+9a5413069ad6bb5fa5da08319cc1722e  opcodes/cgen-ibld.in
+4f1df5e1864e3d375381a14e767f6d38  opcodes/cgen-opc.c
+4891916dc9ab98a837c24bc0187ef99c  opcodes/cgen-ops.h
+520cceef0676939ecbd5cc8cd83a5907  opcodes/cgen-types.h
+933740dd164379da05268e4c7e780e30  opcodes/cgen.sh
+671812b2fcec9eebfa90825f42bff196  opcodes/config.in
+8325460c9b0e38752227583ddb0b1a04  opcodes/configure
+dd29f0e59a0017c4292b617f8781ae41  opcodes/configure.in
+493ac8cfc9dd4911a2cfbbcfe58c952e  opcodes/cris-dis.c
+b6d38061463937c28223161c6b3b17e8  opcodes/cris-opc.c
+4c24504bd800d6c3f9efa9724d3682eb  opcodes/crx-dis.c
+8863781f28610a1e2e64093a2c293ca3  opcodes/crx-opc.c
+6d1add2d7906e9cf38e8e1aa0a5be505  opcodes/d10v-dis.c
+f256637593b7d5b3b21777a3376c1b01  opcodes/d10v-opc.c
+2a842cea8bea8e2137e489f555f1f12d  opcodes/d30v-dis.c
+685da087d0d883b6f3233aef53a5e9dc  opcodes/d30v-opc.c
+da4bd373cf3a7057c992b6ab8ccd0e08  opcodes/dep-in.sed
+7da502e50f62d289ca07c34283da8bc1  opcodes/dis-buf.c
+7678f0301e280504730939000d6dcac0  opcodes/dis-init.c
+99a8cd514add4586c5bcd657a33650dd  opcodes/disassemble.c
+75d24a419d25e12d8e1bf05a4f857186  opcodes/dlx-dis.c
+b1ba924f3ed3f7932ac6e201e2ede65a  opcodes/fr30-asm.c
+18288c67aac6e3c9e72fbf6d0dbbc238  opcodes/fr30-desc.c
+2711df2ddb0ee09505a03a61754df281  opcodes/fr30-desc.h
+686dd2cbbd5a99dd3ad89e7f6e76cb81  opcodes/fr30-dis.c
+0a94dda654079f1c4bebb1d833af6685  opcodes/fr30-ibld.c
+042d2f74caaa9a581a1d04b995dd6127  opcodes/fr30-opc.c
+e27109d55e424b0c1405f24083c99660  opcodes/fr30-opc.h
+e4515d768f4f0211b7da9aac84ce2138  opcodes/frv-asm.c
+bf972f41058a0e017d5b40d2904b7d53  opcodes/frv-desc.c
+8e8fef9900b5faaad9d3ca9ac2dd624c  opcodes/frv-desc.h
+4d55ba623b340fefa0251b467aa613bd  opcodes/frv-dis.c
+1a7c7dcaa7eb8de48b86217e992852d5  opcodes/frv-ibld.c
+61819d4385653e8e32b5915a9dc5a3f0  opcodes/frv-opc.c
+7fe7f8c87cc5bdf7749ae8d3756e0bb8  opcodes/frv-opc.h
+f5a4562c2c9d1b689582e700e470bff5  opcodes/h8300-dis.c
+d9ed99e0ef71cf11dcac06c93a4f98bf  opcodes/h8500-dis.c
+490e0fb474c3794490a2aee1d958c80c  opcodes/h8500-opc.h
+4943e4db657eeb23a2ca50c84e1619bb  opcodes/hppa-dis.c
+7ee5936f1db4a26e120704187d60b55b  opcodes/i370-dis.c
+7b8f8b460401d6f13174a96cf05b358b  opcodes/i370-opc.c
+0b7f1b96a6a52fa5382c6437478058c3  opcodes/i386-dis.c
+03cfb5de4ddcc80831796bedfa3f8fbd  opcodes/i860-dis.c
+cd49f205f3f01d18ebba9f76677b8f36  opcodes/i960-dis.c
+67dcf9e0235d479a769d5d72c5409fe7  opcodes/ia64-asmtab.c
+fe404dffccf218dde94b37e774faddaa  opcodes/ia64-asmtab.h
+33e747d15ac9055e72e9e28d5e0bf1a5  opcodes/ia64-dis.c
+bc9dbe0061acbfd562a7430ac32dcd58  opcodes/ia64-gen.c
+c4b7623b939e487423b0ce54e6594dc4  opcodes/ia64-ic.tbl
+975204f6595dd9c8e403f41f174ab686  opcodes/ia64-opc-a.c
+35bfbc3d60cfd6bca746d1d846889040  opcodes/ia64-opc-b.c
+d55b85d0a760840c87379b80f5cb6271  opcodes/ia64-opc-d.c
+7f875bb4a4bc8fc607b318d6a875548f  opcodes/ia64-opc-f.c
+4abd42a3b498d070ac374ee8a9fba257  opcodes/ia64-opc-i.c
+078c0381e32e8bc745965bc6dec330eb  opcodes/ia64-opc-m.c
+f0276c54ab4698c1272afaa7f6616c67  opcodes/ia64-opc-x.c
+97ac03eebe109dcb6ee1fa8bdfcf4f9f  opcodes/ia64-opc.c
+8561f5d5b6d554ddd840e49cc38f59e5  opcodes/ia64-opc.h
+33e3b724682b435ca6470325469e172e  opcodes/ia64-raw.tbl
+b3d7452b4310332b7974b34b09f65a6d  opcodes/ia64-war.tbl
+0f001f2f5cebfa5a1f1b1856a8599afc  opcodes/ia64-waw.tbl
+ccd4210f7588175ace65f01aba31ffba  opcodes/ip2k-asm.c
+36c999b43983934a7412f1546b8841d0  opcodes/ip2k-desc.c
+6a9d3a925cffeb8b03062cd8ebf760f9  opcodes/ip2k-desc.h
+0fc230f4d9df4e5083d489545786e658  opcodes/ip2k-dis.c
+8fd272ea913f115c1fb4f90f0484d070  opcodes/ip2k-ibld.c
+97b65847244ab908fd65fbbaa37811a7  opcodes/ip2k-opc.c
+2462229adbe7cf9690a7d118442fe788  opcodes/ip2k-opc.h
+894f89ca58cc04367ed0e0f79ea98f33  opcodes/iq2000-asm.c
+fc29d1b8e08ab33f1ece480cfa08054d  opcodes/iq2000-desc.c
+a587e46fc70419a83c94e0444e500713  opcodes/iq2000-desc.h
+cc852efae84d8e5068619e6d9ddc7618  opcodes/iq2000-dis.c
+83df6a08a3c05dbfd2194f9584734e01  opcodes/iq2000-ibld.c
+a4cd2f915d584a56bb799e9e88c59323  opcodes/iq2000-opc.c
+b4c4ef1ca8bfa68bf265a24f63ac8637  opcodes/iq2000-opc.h
+5e75ab14890aaa9a3b2be6ea7d4c9a13  opcodes/m10200-dis.c
+5da053ebc7fcf054610fa8f9fd8e15ea  opcodes/m10200-opc.c
+2c41d6e8d37067ae5e6177318850e957  opcodes/m10300-dis.c
+fad9eb64e1da45e74f266562bb9c68bb  opcodes/m10300-opc.c
+5b32a52f05848b77ba02670567295cf5  opcodes/m32c-asm.c
+21614e6afcb3796a860e8dea322aa58d  opcodes/m32c-desc.c
+04e8974ffb2db4e3f9a9a21f0b16a0d1  opcodes/m32c-desc.h
+1702f64af8b9c93b084962e53faf5385  opcodes/m32c-dis.c
+a5a9401e80b8215c204c06591f9cbd05  opcodes/m32c-ibld.c
+cc3141f2566396e877c9ae5a9faafaa9  opcodes/m32c-opc.c
+80e78fa7bc246251dafb408c426f9fa1  opcodes/m32c-opc.h
+4d9c15798586c322ce6bcae3e797c4e9  opcodes/m32r-asm.c
+d22290201d43d98a6076448f1b16e443  opcodes/m32r-desc.c
+b66ddb3989af73b62d63dcec40eae468  opcodes/m32r-desc.h
+a2c8afd7c26ec11e885cc81df7a3a5e2  opcodes/m32r-dis.c
+35651bf6a528064f5f76bbdaaa345017  opcodes/m32r-ibld.c
+ec5d9a0656c65f4755990d02f8d8647a  opcodes/m32r-opc.c
+afdf815a78b9638aa524e0031006ca61  opcodes/m32r-opc.h
+95a4e6ba300045e52af463ae0aaf06b2  opcodes/m32r-opinst.c
+1d831c3ed90baf809c0608ea8f53f7cd  opcodes/m68hc11-dis.c
+3a8411840d2a793baa249785c4519ebe  opcodes/m68hc11-opc.c
+eca391a6c9921d97e1598a1bcd2903bc  opcodes/m68k-dis.c
+881f99d9f77693a9f76f5b1af9e8554e  opcodes/m68k-opc.c
+6ab202bf2df31c27ace9d1f4992cd53f  opcodes/m88k-dis.c
+d129eed92c6947db4372b285656ef9a1  opcodes/makefile.vms
+ef662dcdcb81525587d65f4ba9a58615  opcodes/maxq-dis.c
+1265c97f1ad6b8d53e707f31606f37d3  opcodes/mcore-dis.c
+d224923a8a392e9b218cdd8c54492dd1  opcodes/mcore-opc.h
+96b1eeba9269a27255f14ecb7f472039  opcodes/mips-dis.c
+f8dd21fabda90f23f667973a09e7a456  opcodes/mips-opc.c
+6f60bf5dd4ada59cffeb8e6fce00a083  opcodes/mips16-opc.c
+02188129ea614efe35298f6d32ce7a51  opcodes/mmix-dis.c
+7a8c6af8dbc4584281053da3e91a5838  opcodes/mmix-opc.c
+06d24d0a7c0cfcf4cc4bf1c1c36658dc  opcodes/msp430-dis.c
+3523a40379cf6604e05890cef426b078  opcodes/mt-asm.c
+52366e34032bd2d45f56a93211890fe2  opcodes/mt-desc.c
+24803f9a4c1b1cb8b23d1c27e9b68139  opcodes/mt-desc.h
+201b557294131e864b01ccff19355933  opcodes/mt-dis.c
+adb76ddb1cdc82f30dd333e7c65b650c  opcodes/mt-ibld.c
+580caddf1dfa1eccb94ca7248d7b7bf1  opcodes/mt-opc.c
+126d182f09fe4d81d181d65d08211dd5  opcodes/mt-opc.h
+20bcebf21406994c8a6fdc3c6645f564  opcodes/ns32k-dis.c
+013aef7242d2fc617077263d10c7136b  opcodes/openrisc-asm.c
+b141393a8599b4694e1239708e08d1b4  opcodes/openrisc-desc.c
+52f55ddb53004bc2e2680851f728d7b9  opcodes/openrisc-desc.h
+e8b63008f670e9b835c1cc1c8f82d9e8  opcodes/openrisc-dis.c
+d0c067b2ba5df049b83967dee51c3360  opcodes/openrisc-ibld.c
+769082f6670ff3a5e24dc3f0a8b34681  opcodes/openrisc-opc.c
+d38e40e5d15326df531db99f1a44f634  opcodes/openrisc-opc.h
+2ab82ae8384758d2948fc8597d7dc5fb  opcodes/opintl.h
+8ec3a9823f649e3f2e2536e4a85fb960  opcodes/or32-dis.c
+d3a29d25806be89360ea6b5da6d01c84  opcodes/or32-opc.c
+f33faa33560821ba1133b2177c5ff9fa  opcodes/pdp11-dis.c
+f2a513befcc7d0ef501f66be37b52881  opcodes/pdp11-opc.c
+dc9bfd13550e1f8c4246e02dc6e6bd34  opcodes/pj-dis.c
+7f0dacfee307f62b4bcac573b37bd848  opcodes/pj-opc.c
+9b4d3c0e407dd2dd735e6a8e1250a6c6  opcodes/ppc-dis.c
+1ec967b3c0c33fb19dcd24c165b16065  opcodes/ppc-opc.c
+90d0e292ba565dc2a097d436da62f313  opcodes/s390-dis.c
+c64ecb30ad811b1f2adbb0a0206b7319  opcodes/s390-mkopc.c
+1d30e1cd8b6553073c113ea0e3030034  opcodes/s390-opc.c
+17429d3aec69554d6523d39581ec03bb  opcodes/s390-opc.txt
+9676fa5dbc0fa5faa5135b2b4305e456  opcodes/sh-dis.c
+d93fc7b7dc945bf91444cec1d07f9b13  opcodes/sh-opc.h
+3fdb0c179597dd65964acbad008cea9d  opcodes/sh64-dis.c
+c108be7882961dd39871b1bd577e990d  opcodes/sh64-opc.c
+f8915dcc3462ec403e52a9c0886cf31f  opcodes/sh64-opc.h
+6173fbc27fc76e76101be3048e26bf90  opcodes/sparc-dis.c
+4153fb886b9be912a8486c0a213c6d49  opcodes/sparc-opc.c
+1ded054093de910d9786c62bc4fe8cc6  opcodes/stamp-h.in
+6162336666e1069077d9356acf0f204a  opcodes/sysdep.h
+14245302816e0b61f006a652be63615f  opcodes/tic30-dis.c
+5441e092ccf02f6fb16ae2da4f26a6bc  opcodes/tic4x-dis.c
+26c64c1bd03fbb4d8bbe5188b7c7b0de  opcodes/tic54x-dis.c
+d71ae97cd3425983e7ec4614659baeb9  opcodes/tic54x-opc.c
+0fa4ca9b6ef9411b625c7179e5a316b2  opcodes/tic80-dis.c
+313aab19fe06856a5a88086481049ecd  opcodes/tic80-opc.c
+1db2b7ff1b7169ecd30fd530c213b178  opcodes/v850-dis.c
+da09e3ef5a5b6bf9ae04f09605dd23dc  opcodes/v850-opc.c
+ee6cdf94a568c901a4ec4f4f6e27692f  opcodes/vax-dis.c
+20fc829aeb9b407f8c5d4aea0906f39b  opcodes/w65-dis.c
+fef31fa01e9fd9322db35470e45dd85b  opcodes/w65-opc.h
+6ef25234a301c0c091ae397b09ed76dd  opcodes/xc16x-asm.c
+83ca6dd2f4757a8f728d193a1da850dd  opcodes/xc16x-desc.c
+f7027adb3697e3e4f3301630b6c1015e  opcodes/xc16x-desc.h
+cf4990807f301b1a4cbd4de98b4cd3c2  opcodes/xc16x-dis.c
+457a211c8febdd6ce185bc0f988a32bf  opcodes/xc16x-ibld.c
+a25b413340f35d52a57dde5370e2ad85  opcodes/xc16x-opc.c
+9c8ece13b668312115a8b3db407e17cc  opcodes/xc16x-opc.h
+594f614794f89b22c8378e242e9b9aab  opcodes/xstormy16-asm.c
+2b79b60593540af2de8edfa8b3b587f7  opcodes/xstormy16-desc.c
+387979c4c89c4b44db8028fb99a444d7  opcodes/xstormy16-desc.h
+a7a727d79349f3516e869e09a7503934  opcodes/xstormy16-dis.c
+ae9db14c194c041f3d3776c233cb20cf  opcodes/xstormy16-ibld.c
+77f6c94085b33232a365bca8c809759f  opcodes/xstormy16-opc.c
+ac2662fd6cc47140f451969ad37474ca  opcodes/xstormy16-opc.h
+7e22602a22692d437e792dcc8799fa38  opcodes/xtensa-dis.c
+5cef3614c7242c72b715ea9d878cf632  opcodes/z80-dis.c
+b01af248577cc42bb74ce631408ed4ef  opcodes/z8k-dis.c
+2435cbae8d6b4108d00ea2032bc98650  opcodes/z8k-opc.h
+d2033cbcba97656cc9988b962f582907  opcodes/z8kgen.c
+7de8d82ad125adbf7153db523e3fe025  setup.com
+7dcac7bbb133dda292974336d9b3ea6b  src-release
+cf2baa0854f564a7785307e79f155efc  symlink-tree
+b97f1c282c19b00608b1680ad02ae227  texinfo/texinfo.tex
+e0a5f7e59d19edfd4b4d26479a141f02  ylwrap

Modified: branches/binutils/package/opcodes/ChangeLog
===================================================================
--- branches/binutils/package/opcodes/ChangeLog	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ChangeLog	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,3 +1,50 @@
+2006-06-09  Nick Clifton  <nickc at redhat.com>
+
+	* po/fi.po: Updated Finnish translation.
+
+2006-06-07  Joseph S. Myers  <joseph at codesourcery.com>
+
+	* po/Make-in (pdf, ps): New dummy targets.
+
+2006-05-30  Nick Clifton  <nickc at redhat.com>
+
+	* po/es.po: Updated Spanish translation.
+
+2006-05-26  Richard Sandiford  <richard at codesourcery.com>
+
+	* m68k-opc.c (m68k_opcodes): Fix the masks of the Coldfire fmovemd
+	and fmovem entries.  Put register list entries before immediate
+	mask entries.  Use "l" rather than "L" in the fmovem entries.
+	* m68k-dis.c (match_insn_m68k): Remove the PRIV argument and work it
+	out from INFO.
+	(m68k_scan_mask): New function, split out from...
+	(print_insn_m68k): ...here.  If no architecture has been set,
+	first try printing an m680x0 instruction, then try a Coldfire one.
+
+2006-05-24  Nick Clifton  <nickc at redhat.com>
+
+	* po/ga.po: Updated Irish translation.
+
+2006-05-22  Nick Clifton  <nickc at redhat.com>
+
+	* crx-dis.c (EXTRACT): Make macro work on 64-bit hosts.
+
+2006-05-22  Nick Clifton  <nickc at redhat.com>
+
+	* po/nl.po: Updated translation.
+
+2006-05-18  Alan Modra  <amodra at bigpond.net.au>
+
+	* avr-dis.c (avr_operand): Warning fix.
+
+2006-05-04  Thiemo Seufer  <ths at mips.com>
+
+	* mips-opc.c (mips_builtin_opcodes): Fix mftr argument order.
+
+2006-04-16  Daniel Jacobowitz  <dan at codesourcery.com>
+
+	* po/POTFILES.in: Regenerated.
+
 2006-04-12   Hochstein  <hochstein at algo.informatik.tu-darmstadt.de>
 
 	PR binutils/2454
@@ -114,7 +161,7 @@
 	New cases '$' and '%' for read/write hyperprivileged register.
 	* sparc-opc.c (sparc_opcodes): Add new entries for UA2005
 	window handling and rdhpr/wrhpr instructions.
-	
+
 2006-02-24  DJ Delorie  <dj at redhat.com>
 
 	* m32c-desc.c: Regenerate with linker relaxation attributes.
@@ -167,13 +214,13 @@
 
 	* xc16x-desc.h: New file
 	* xc16x-desc.c: New file
-	* xc16x-opc.h: New file	
+	* xc16x-opc.h: New file
 	* xc16x-opc.c: New file
 	* xc16x-ibld.c: New file
 	* xc16x-asm.c: New file
 	* xc16x-dis.c: New file
-	* Makefile.am: Entries for xc16x 
-	* Makefile.in: Regenerate 
+	* Makefile.am: Entries for xc16x
+	* Makefile.in: Regenerate
 	* cofigure.in: Add xc16x target information.
 	* configure: Regenerate.
 	* disassemble.c: Add xc16x target information.
@@ -208,7 +255,7 @@
 
 	* z80-dis.c (struct buffer, prt_d, prt_d_n, arit_d, ld_r_d,
 	ld_d_r, pref_xd_cb): Use signed char to hold data to be
-	disassembled.	
+	disassembled.
 	* z80-dis.c (TXTSIZ): Increase buffer size to 24, this fixes
 	buffer overflows when disassembling instructions like
 	ld (ix+123),0x23

Modified: branches/binutils/package/opcodes/avr-dis.c
===================================================================
--- branches/binutils/package/opcodes/avr-dis.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/avr-dis.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,5 +1,6 @@
 /* Disassemble AVR instructions.
-   Copyright 1999, 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2002, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
    Contributed by Denis Chertykov <denisc at overta.ru>
 
@@ -142,7 +143,7 @@
       /* See PR binutils/2545.  Ideally we would like to display the hex
 	 value of the address only once, but this would mean recoding
 	 objdump_print_address() which would affect many targets.  */
-      sprintf (buf, "%#lx", * sym_addr);      
+      sprintf (buf, "%#lx", (unsigned long) *sym_addr);      
       sprintf (comment, "0x");
 
       break;

Modified: branches/binutils/package/opcodes/crx-dis.c
===================================================================
--- branches/binutils/package/opcodes/crx-dis.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/crx-dis.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -30,7 +30,7 @@
 
 /* Extract 'n_bits' from 'a' starting from offset 'offs'.  */
 #define EXTRACT(a, offs, n_bits)	    \
-  (n_bits == 32 ? (((a) >> (offs)) & ~0L)   \
+  (n_bits == 32 ? (((a) >> (offs)) & 0xffffffffL)   \
   : (((a) >> (offs)) & ((1 << (n_bits)) -1)))
 
 /* Set Bit Mask - a mask to set all bits starting from offset 'offs'.  */

Modified: branches/binutils/package/opcodes/m68k-dis.c
===================================================================
--- branches/binutils/package/opcodes/m68k-dis.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/m68k-dis.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1204,13 +1204,13 @@
 static int
 match_insn_m68k (bfd_vma memaddr,
 		 disassemble_info * info,
-		 const struct m68k_opcode * best,
-		 struct private * priv)
+		 const struct m68k_opcode * best)
 {
   unsigned char *save_p;
   unsigned char *p;
   const char *d;
 
+  struct private *priv = (struct private *) info->private_data;
   bfd_byte *buffer = priv->the_buffer;
   fprintf_ftype save_printer = info->fprintf_func;
   void (* save_print_address) (bfd_vma, struct disassemble_info *)
@@ -1341,22 +1341,25 @@
   return p - buffer;
 }
 
-/* Print the m68k instruction at address MEMADDR in debugged memory,
-   on INFO->STREAM.  Returns length of the instruction, in bytes.  */
+/* Try to interpret the instruction at address MEMADDR as one that
+   can execute on a processor with the features given by ARCH_MASK.
+   If successful, print the instruction to INFO->STREAM and return
+   its length in bytes.  Return 0 otherwise.  */
 
-int
-print_insn_m68k (bfd_vma memaddr, disassemble_info *info)
+static int
+m68k_scan_mask (bfd_vma memaddr, disassemble_info *info,
+		unsigned int arch_mask)
 {
   int i;
   const char *d;
-  unsigned int arch_mask;
-  struct private priv;
-  bfd_byte *buffer = priv.the_buffer;
-  int major_opcode;
+  static const struct m68k_opcode **opcodes[16];
   static int numopcodes[16];
-  static const struct m68k_opcode **opcodes[16];
   int val;
+  int major_opcode;
 
+  struct private *priv = (struct private *) info->private_data;
+  bfd_byte *buffer = priv->the_buffer;
+
   if (!opcodes[0])
     {
       /* Speed up the matching by sorting the opcode
@@ -1383,23 +1386,6 @@
 	*opc_pointer[(m68k_opcodes[i].opcode >> 28) & 15]++ = &m68k_opcodes[i];
     }
 
-  info->private_data = (PTR) &priv;
-  /* Tell objdump to use two bytes per chunk
-     and six bytes per line for displaying raw data.  */
-  info->bytes_per_chunk = 2;
-  info->bytes_per_line = 6;
-  info->display_endian = BFD_ENDIAN_BIG;
-  priv.max_fetched = priv.the_buffer;
-  priv.insn_start = memaddr;
-
-  if (setjmp (priv.bailout) != 0)
-    /* Error return.  */
-    return -1;
-
-  arch_mask = bfd_m68k_mach_to_features (info->mach);
-  if (!arch_mask)
-    arch_mask = ~(unsigned int)0;
-
   FETCH_DATA (info, buffer + 2);
   major_opcode = (buffer[0] >> 4) & 15;
 
@@ -1465,11 +1451,58 @@
 	    }
 
 	  if (*d == '\0')
-	    if ((val = match_insn_m68k (memaddr, info, opc, & priv)))
+	    if ((val = match_insn_m68k (memaddr, info, opc)))
 	      return val;
 	}
     }
+  return 0;
+}		
 
+/* Print the m68k instruction at address MEMADDR in debugged memory,
+   on INFO->STREAM.  Returns length of the instruction, in bytes.  */
+
+int
+print_insn_m68k (bfd_vma memaddr, disassemble_info *info)
+{
+  unsigned int arch_mask;
+  struct private priv;
+  int val;
+
+  bfd_byte *buffer = priv.the_buffer;
+
+  info->private_data = (PTR) &priv;
+  /* Tell objdump to use two bytes per chunk
+     and six bytes per line for displaying raw data.  */
+  info->bytes_per_chunk = 2;
+  info->bytes_per_line = 6;
+  info->display_endian = BFD_ENDIAN_BIG;
+  priv.max_fetched = priv.the_buffer;
+  priv.insn_start = memaddr;
+
+  if (setjmp (priv.bailout) != 0)
+    /* Error return.  */
+    return -1;
+
+  arch_mask = bfd_m68k_mach_to_features (info->mach);
+  if (!arch_mask)
+    {
+      /* First try printing an m680x0 instruction.  Try printing a Coldfire
+	 one if that fails.  */
+      val = m68k_scan_mask (memaddr, info, m68k_mask);
+      if (val)
+	return val;
+
+      val = m68k_scan_mask (memaddr, info, mcf_mask);
+      if (val)
+	return val;
+    }
+  else
+    {
+      val = m68k_scan_mask (memaddr, info, arch_mask);
+      if (val)
+	return val;
+    }
+
   /* Handle undefined instructions.  */
   info->fprintf_func (info->stream, "0%o", (buffer[0] << 8) + buffer[1]);
   return 2;

Modified: branches/binutils/package/opcodes/m68k-opc.c
===================================================================
--- branches/binutils/package/opcodes/m68k-opc.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/m68k-opc.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -913,10 +913,10 @@
 
 {"fmovecrx", 4,	two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat },
 
-{"fmovemd", 4,	two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizsl3", cfloat },
-{"fmovemd", 4,	two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizs#3", cfloat },
-{"fmovemd", 4,	two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Ii#3ys", cfloat },
-{"fmovemd", 4,	two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Iil3ys", cfloat },
+{"fmovemd", 4,	two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Iizsl3", cfloat },
+{"fmovemd", 4,	two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Iizs#3", cfloat },
+{"fmovemd", 4,	two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Iil3ys", cfloat },
+{"fmovemd", 4,	two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Ii#3ys", cfloat },
 
 {"fmovemx", 4,	two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat },
 {"fmovemx", 4,	two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat },
@@ -938,10 +938,10 @@
    target is a single %fpiar.  */
 {"fmoveml", 4,	two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*lL8", mfloat },
 
-{"fmovem", 4,	two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "IizsL3", cfloat },
-{"fmovem", 4,	two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizs#3", cfloat },
-{"fmovem", 4,	two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Ii#3ys", cfloat },
-{"fmovem", 4,	two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "IiL3ys", cfloat },
+{"fmovem", 4,	two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Iizsl3", cfloat },
+{"fmovem", 4,	two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Iizs#3", cfloat },
+{"fmovem", 4,	two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Iil3ys", cfloat },
+{"fmovem", 4,	two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Ii#3ys", cfloat },
 
 {"fmovem", 4,	two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat },
 {"fmovem", 4,	two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat },

Modified: branches/binutils/package/opcodes/mips-opc.c
===================================================================
--- branches/binutils/package/opcodes/mips-opc.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/mips-opc.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -787,7 +787,7 @@
 {"mfthi",   "d,*",	0x41010021, 0xfff307ff, TRAP|WR_d|RD_a,		0,		MT32	},
 {"mftlo",   "d",	0x41000021, 0xffff07ff, TRAP|WR_d|RD_a,		0,		MT32	},
 {"mftlo",   "d,*",	0x41000021, 0xfff307ff, TRAP|WR_d|RD_a,		0,		MT32	},
-{"mftr",    "t,d,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d,		0,		MT32	},
+{"mftr",    "d,t,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d,		0,		MT32	},
 {"mfc0",    "t,G",	0x40000000, 0xffe007ff,	LCD|WR_t|RD_C0,		0,		I1	},
 {"mfc0",    "t,+D",     0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 	0,		I32     },
 {"mfc0",    "t,G,H",    0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 	0,		I32     },

Deleted: branches/binutils/package/opcodes/ms1-asm.c
===================================================================
--- branches/binutils/package/opcodes/ms1-asm.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-asm.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,989 +0,0 @@
-/* Assembler interface for targets using CGEN. -*- C -*-
-   CGEN: Cpu tools GENerator
-
-   THIS FILE IS MACHINE GENERATED WITH CGEN.
-   - the resultant file is machine generated, cgen-asm.in isn't
-
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2005
-   Free Software Foundation, Inc.
-
-   This file is part of the GNU Binutils and GDB, the GNU debugger.
-
-   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 2, 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; if not, write to the Free Software Foundation, Inc.,
-   51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
-
-/* ??? Eventually more and more of this stuff can go to cpu-independent files.
-   Keep that in mind.  */
-
-#include "sysdep.h"
-#include <stdio.h>
-#include "ansidecl.h"
-#include "bfd.h"
-#include "symcat.h"
-#include "ms1-desc.h"
-#include "ms1-opc.h"
-#include "opintl.h"
-#include "xregex.h"
-#include "libiberty.h"
-#include "safe-ctype.h"
-
-#undef  min
-#define min(a,b) ((a) < (b) ? (a) : (b))
-#undef  max
-#define max(a,b) ((a) > (b) ? (a) : (b))
-
-static const char * parse_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, const char **, CGEN_FIELDS *);
-
-/* -- assembler routines inserted here.  */
-
-/* -- asm.c */
-/* Range checking for signed numbers.  Returns 0 if acceptable
-   and 1 if the value is out of bounds for a signed quantity.  */
-
-static int 
-signed_out_of_bounds (long val)
-{
-  if ((val < -32768) || (val > 32767))
-    return 1;
-  return 0;
-}
-
-static const char *
-parse_loopsize (CGEN_CPU_DESC cd,
-		const char **strp,
-		int opindex,
-		void *arg)
-{
-  signed long * valuep = (signed long *) arg;
-  const char *errmsg;
-  bfd_reloc_code_real_type code = BFD_RELOC_NONE;
-  enum cgen_parse_operand_result result_type;
-  bfd_vma value;
-
-  /* Is it a control transfer instructions?  */ 
-  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_LOOPSIZE)
-    {
-      code = BFD_RELOC_MS1_PCINSN8;
-      errmsg = cgen_parse_address (cd, strp, opindex, code,
-                                   & result_type, & value);
-      *valuep = value;
-      return errmsg;
-    }
-
-  abort ();
-}
-
-static const char *
-parse_imm16 (CGEN_CPU_DESC cd,
-	     const char **strp,
-	     int opindex,
-	     void *arg)
-{
-  signed long * valuep = (signed long *) arg;
-  const char *errmsg;
-  enum cgen_parse_operand_result result_type;
-  bfd_reloc_code_real_type code = BFD_RELOC_NONE;
-  bfd_vma value;
-
-  /* Is it a control transfer instructions?  */ 
-  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_IMM16O)
-    {
-      code = BFD_RELOC_16_PCREL;
-      errmsg = cgen_parse_address (cd, strp, opindex, code,
-                                   & result_type, & value);
-      if (errmsg == NULL)
-	{
-	  if (signed_out_of_bounds (value))
-	    errmsg = _("Operand out of range. Must be between -32768 and 32767.");
-	}
-      *valuep = value;
-      return errmsg;
-    }
-
-  /* If it's not a control transfer instruction, then
-     we have to check for %OP relocating operators.  */
-  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_IMM16L)
-    ;
-  else if (strncmp (*strp, "%hi16", 5) == 0)
-    {
-      *strp += 5;
-      code = BFD_RELOC_HI16;
-    }
-  else if (strncmp (*strp, "%lo16", 5) == 0)
-    {
-      *strp += 5;
-      code = BFD_RELOC_LO16;
-    }
-
-  /* If we found a %OP relocating operator, then parse it as an address.
-     If not, we need to parse it as an integer, either signed or unsigned
-     depending on which operand type we have.  */
-  if (code != BFD_RELOC_NONE)
-    {
-       /* %OP relocating operator found.  */
-       errmsg = cgen_parse_address (cd, strp, opindex, code,
-                                   & result_type, & value);
-       if (errmsg == NULL)
-	 {
-           switch (result_type)
-	     {
-	     case (CGEN_PARSE_OPERAND_RESULT_NUMBER):
-	       if (code == BFD_RELOC_HI16)
-		 value = (value >> 16) & 0xFFFF;
-	       else if (code == BFD_RELOC_LO16)
-		 value = value  & 0xFFFF;
-	       else 
-		 errmsg = _("Biiiig Trouble in parse_imm16!");
-	       break;
-
-	     case (CGEN_PARSE_OPERAND_RESULT_QUEUED):
-	       /* No special processing for this case.  */
-	       break;
-
-	     default:
-	       errmsg = _("%operator operand is not a symbol");
-	       break;
-             }
-	 }
-       *valuep = value;
-    }
-  else
-    {
-      /* Parse hex values like 0xffff as unsigned, and sign extend
-	 them manually.  */
-      int parse_signed = (opindex == (CGEN_OPERAND_TYPE)MS1_OPERAND_IMM16);
-
-      if ((*strp)[0] == '0'
-	  && ((*strp)[1] == 'x' || (*strp)[1] == 'X'))
-	parse_signed = 0;
-
-      /* No relocating operator.  Parse as an number.  */
-      if (parse_signed)
-	{
-          /* Parse as as signed integer.  */
- 
-          errmsg = cgen_parse_signed_integer (cd, strp, opindex, valuep);
-
-          if (errmsg == NULL) 
-	    {
-#if 0
-	      /* Manual range checking is needed for the signed case.  */
-	      if (*valuep & 0x8000)
-                value = 0xffff0000 | *valuep;
-	      else 
-                value = *valuep;
-
-	      if (signed_out_of_bounds (value))
-	        errmsg = _("Operand out of range. Must be between -32768 and 32767.");
-	      /* Truncate to 16 bits. This is necessary
-		 because cgen will have sign extended *valuep.  */
-	      *valuep &= 0xFFFF; 
-#endif
-	    }
-	}
-      else  
-	{
-          /* MS1_OPERAND_IMM16Z.  Parse as an unsigned integer.  */
-          errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, (unsigned long *) valuep);
-
-	  if (opindex == (CGEN_OPERAND_TYPE) MS1_OPERAND_IMM16
-	      && *valuep >= 0x8000
-	      && *valuep <= 0xffff)
-	    *valuep -= 0x10000;
-	}
-    }
-
-  return errmsg;
-}
-
-
-static const char *
-parse_dup (CGEN_CPU_DESC cd,
-	   const char **strp,
-	   int opindex,
-	   unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "dup", 3) == 0 || strncmp (*strp, "DUP", 3) == 0)
-    {
-      *strp += 3;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "xx", 2) == 0 || strncmp (*strp, "XX", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 0;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
-  return errmsg;
-}
-
-
-static const char *
-parse_ball (CGEN_CPU_DESC cd,
-	    const char **strp,
-	    int opindex,
-	    unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "all", 3) == 0 || strncmp (*strp, "ALL", 3) == 0)
-    {
-      *strp += 3;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "one", 3) == 0 || strncmp (*strp, "ONE", 3) == 0)
-    {
-      *strp += 3;
-      *valuep = 0;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
-  return errmsg;
-}
-
-static const char *
-parse_xmode (CGEN_CPU_DESC cd,
-	     const char **strp,
-	     int opindex,
-	     unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "pm", 2) == 0 || strncmp (*strp, "PM", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "xm", 2) == 0 || strncmp (*strp, "XM", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 0;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
-  return errmsg;
-}
-
-static const char *
-parse_rc (CGEN_CPU_DESC cd,
-	  const char **strp,
-	  int opindex,
-	  unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "r", 1) == 0 || strncmp (*strp, "R", 1) == 0)
-    {
-      *strp += 1;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "c", 1) == 0 || strncmp (*strp, "C", 1) == 0)
-    {
-      *strp += 1;
-      *valuep = 0;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
-  return errmsg;
-}
-
-static const char *
-parse_cbrb (CGEN_CPU_DESC cd,
-	    const char **strp,
-	    int opindex,
-	    unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "rb", 2) == 0 || strncmp (*strp, "RB", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "cb", 2) == 0 || strncmp (*strp, "CB", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 0;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
-  return errmsg;
-}
-
-static const char *
-parse_rbbc (CGEN_CPU_DESC cd,
-	    const char **strp,
-	    int opindex,
-	    unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "rt", 2) == 0 || strncmp (*strp, "RT", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 0;
-    }
-  else if (strncmp (*strp, "br1", 3) == 0 || strncmp (*strp, "BR1", 3) == 0)
-    {
-      *strp += 3;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "br2", 3) == 0 || strncmp (*strp, "BR2", 3) == 0)
-    {
-      *strp += 3;
-      *valuep = 2;
-    }
-  else if (strncmp (*strp, "cs", 2) == 0 || strncmp (*strp, "CS", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 3;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
-  return errmsg;
-}
-
-static const char *
-parse_type (CGEN_CPU_DESC cd,
-	    const char **strp,
-	    int opindex,
-	    unsigned long *valuep)
-{
-  const char *errmsg = NULL;
-
-  if (strncmp (*strp, "odd", 3) == 0 || strncmp (*strp, "ODD", 3) == 0)
-    {
-      *strp += 3;
-      *valuep = 0;
-    }
-  else if (strncmp (*strp, "even", 4) == 0 || strncmp (*strp, "EVEN", 4) == 0)
-    {
-      *strp += 4;
-      *valuep = 1;
-    }
-  else if (strncmp (*strp, "oe", 2) == 0 || strncmp (*strp, "OE", 2) == 0)
-    {
-      *strp += 2;
-      *valuep = 2;
-    }
-  else
-    errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-
- if ((errmsg == NULL) && (*valuep == 3))
-    errmsg = _("invalid operand.  type may have values 0,1,2 only.");
-
-  return errmsg;
-}
-
-/* -- dis.c */
-
-const char * ms1_cgen_parse_operand
-  (CGEN_CPU_DESC, int, const char **, CGEN_FIELDS *);
-
-/* Main entry point for operand parsing.
-
-   This function is basically just a big switch statement.  Earlier versions
-   used tables to look up the function to use, but
-   - if the table contains both assembler and disassembler functions then
-     the disassembler contains much of the assembler and vice-versa,
-   - there's a lot of inlining possibilities as things grow,
-   - using a switch statement avoids the function call overhead.
-
-   This function could be moved into `parse_insn_normal', but keeping it
-   separate makes clear the interface between `parse_insn_normal' and each of
-   the handlers.  */
-
-const char *
-ms1_cgen_parse_operand (CGEN_CPU_DESC cd,
-			   int opindex,
-			   const char ** strp,
-			   CGEN_FIELDS * fields)
-{
-  const char * errmsg = NULL;
-  /* Used by scalar operands that still need to be parsed.  */
-  long junk ATTRIBUTE_UNUSED;
-
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_A23, (unsigned long *) (& fields->f_a23));
-      break;
-    case MS1_OPERAND_BALL :
-      errmsg = parse_ball (cd, strp, MS1_OPERAND_BALL, (unsigned long *) (& fields->f_ball));
-      break;
-    case MS1_OPERAND_BALL2 :
-      errmsg = parse_ball (cd, strp, MS1_OPERAND_BALL2, (unsigned long *) (& fields->f_ball2));
-      break;
-    case MS1_OPERAND_BANKADDR :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_BANKADDR, (unsigned long *) (& fields->f_bankaddr));
-      break;
-    case MS1_OPERAND_BRC :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_BRC, (unsigned long *) (& fields->f_brc));
-      break;
-    case MS1_OPERAND_BRC2 :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_BRC2, (unsigned long *) (& fields->f_brc2));
-      break;
-    case MS1_OPERAND_CB1INCR :
-      errmsg = cgen_parse_signed_integer (cd, strp, MS1_OPERAND_CB1INCR, (long *) (& fields->f_cb1incr));
-      break;
-    case MS1_OPERAND_CB1SEL :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CB1SEL, (unsigned long *) (& fields->f_cb1sel));
-      break;
-    case MS1_OPERAND_CB2INCR :
-      errmsg = cgen_parse_signed_integer (cd, strp, MS1_OPERAND_CB2INCR, (long *) (& fields->f_cb2incr));
-      break;
-    case MS1_OPERAND_CB2SEL :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CB2SEL, (unsigned long *) (& fields->f_cb2sel));
-      break;
-    case MS1_OPERAND_CBRB :
-      errmsg = parse_cbrb (cd, strp, MS1_OPERAND_CBRB, (unsigned long *) (& fields->f_cbrb));
-      break;
-    case MS1_OPERAND_CBS :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CBS, (unsigned long *) (& fields->f_cbs));
-      break;
-    case MS1_OPERAND_CBX :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CBX, (unsigned long *) (& fields->f_cbx));
-      break;
-    case MS1_OPERAND_CCB :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CCB, (unsigned long *) (& fields->f_ccb));
-      break;
-    case MS1_OPERAND_CDB :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CDB, (unsigned long *) (& fields->f_cdb));
-      break;
-    case MS1_OPERAND_CELL :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CELL, (unsigned long *) (& fields->f_cell));
-      break;
-    case MS1_OPERAND_COLNUM :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_COLNUM, (unsigned long *) (& fields->f_colnum));
-      break;
-    case MS1_OPERAND_CONTNUM :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CONTNUM, (unsigned long *) (& fields->f_contnum));
-      break;
-    case MS1_OPERAND_CR :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CR, (unsigned long *) (& fields->f_cr));
-      break;
-    case MS1_OPERAND_CTXDISP :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_CTXDISP, (unsigned long *) (& fields->f_ctxdisp));
-      break;
-    case MS1_OPERAND_DUP :
-      errmsg = parse_dup (cd, strp, MS1_OPERAND_DUP, (unsigned long *) (& fields->f_dup));
-      break;
-    case MS1_OPERAND_FBDISP :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_FBDISP, (unsigned long *) (& fields->f_fbdisp));
-      break;
-    case MS1_OPERAND_FBINCR :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_FBINCR, (unsigned long *) (& fields->f_fbincr));
-      break;
-    case MS1_OPERAND_FRDR :
-      errmsg = cgen_parse_keyword (cd, strp, & ms1_cgen_opval_h_spr, & fields->f_dr);
-      break;
-    case MS1_OPERAND_FRDRRR :
-      errmsg = cgen_parse_keyword (cd, strp, & ms1_cgen_opval_h_spr, & fields->f_drrr);
-      break;
-    case MS1_OPERAND_FRSR1 :
-      errmsg = cgen_parse_keyword (cd, strp, & ms1_cgen_opval_h_spr, & fields->f_sr1);
-      break;
-    case MS1_OPERAND_FRSR2 :
-      errmsg = cgen_parse_keyword (cd, strp, & ms1_cgen_opval_h_spr, & fields->f_sr2);
-      break;
-    case MS1_OPERAND_ID :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_ID, (unsigned long *) (& fields->f_id));
-      break;
-    case MS1_OPERAND_IMM16 :
-      errmsg = parse_imm16 (cd, strp, MS1_OPERAND_IMM16, (long *) (& fields->f_imm16s));
-      break;
-    case MS1_OPERAND_IMM16L :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_IMM16L, (unsigned long *) (& fields->f_imm16l));
-      break;
-    case MS1_OPERAND_IMM16O :
-      errmsg = parse_imm16 (cd, strp, MS1_OPERAND_IMM16O, (unsigned long *) (& fields->f_imm16s));
-      break;
-    case MS1_OPERAND_IMM16Z :
-      errmsg = parse_imm16 (cd, strp, MS1_OPERAND_IMM16Z, (unsigned long *) (& fields->f_imm16u));
-      break;
-    case MS1_OPERAND_INCAMT :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_INCAMT, (unsigned long *) (& fields->f_incamt));
-      break;
-    case MS1_OPERAND_INCR :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_INCR, (unsigned long *) (& fields->f_incr));
-      break;
-    case MS1_OPERAND_LENGTH :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_LENGTH, (unsigned long *) (& fields->f_length));
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      errmsg = parse_loopsize (cd, strp, MS1_OPERAND_LOOPSIZE, (unsigned long *) (& fields->f_loopo));
-      break;
-    case MS1_OPERAND_MASK :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_MASK, (unsigned long *) (& fields->f_mask));
-      break;
-    case MS1_OPERAND_MASK1 :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_MASK1, (unsigned long *) (& fields->f_mask1));
-      break;
-    case MS1_OPERAND_MODE :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_MODE, (unsigned long *) (& fields->f_mode));
-      break;
-    case MS1_OPERAND_PERM :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_PERM, (unsigned long *) (& fields->f_perm));
-      break;
-    case MS1_OPERAND_RBBC :
-      errmsg = parse_rbbc (cd, strp, MS1_OPERAND_RBBC, (unsigned long *) (& fields->f_rbbc));
-      break;
-    case MS1_OPERAND_RC :
-      errmsg = parse_rc (cd, strp, MS1_OPERAND_RC, (unsigned long *) (& fields->f_rc));
-      break;
-    case MS1_OPERAND_RC1 :
-      errmsg = parse_rc (cd, strp, MS1_OPERAND_RC1, (unsigned long *) (& fields->f_rc1));
-      break;
-    case MS1_OPERAND_RC2 :
-      errmsg = parse_rc (cd, strp, MS1_OPERAND_RC2, (unsigned long *) (& fields->f_rc2));
-      break;
-    case MS1_OPERAND_RC3 :
-      errmsg = parse_rc (cd, strp, MS1_OPERAND_RC3, (unsigned long *) (& fields->f_rc3));
-      break;
-    case MS1_OPERAND_RCNUM :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_RCNUM, (unsigned long *) (& fields->f_rcnum));
-      break;
-    case MS1_OPERAND_RDA :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_RDA, (unsigned long *) (& fields->f_rda));
-      break;
-    case MS1_OPERAND_ROWNUM :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_ROWNUM, (unsigned long *) (& fields->f_rownum));
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_ROWNUM1, (unsigned long *) (& fields->f_rownum1));
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_ROWNUM2, (unsigned long *) (& fields->f_rownum2));
-      break;
-    case MS1_OPERAND_SIZE :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_SIZE, (unsigned long *) (& fields->f_size));
-      break;
-    case MS1_OPERAND_TYPE :
-      errmsg = parse_type (cd, strp, MS1_OPERAND_TYPE, (unsigned long *) (& fields->f_type));
-      break;
-    case MS1_OPERAND_WR :
-      errmsg = cgen_parse_unsigned_integer (cd, strp, MS1_OPERAND_WR, (unsigned long *) (& fields->f_wr));
-      break;
-    case MS1_OPERAND_XMODE :
-      errmsg = parse_xmode (cd, strp, MS1_OPERAND_XMODE, (unsigned long *) (& fields->f_xmode));
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while parsing.\n"), opindex);
-      abort ();
-  }
-
-  return errmsg;
-}
-
-cgen_parse_fn * const ms1_cgen_parse_handlers[] = 
-{
-  parse_insn_normal,
-};
-
-void
-ms1_cgen_init_asm (CGEN_CPU_DESC cd)
-{
-  ms1_cgen_init_opcode_table (cd);
-  ms1_cgen_init_ibld_table (cd);
-  cd->parse_handlers = & ms1_cgen_parse_handlers[0];
-  cd->parse_operand = ms1_cgen_parse_operand;
-}
-
-
-
-/* Regex construction routine.
-
-   This translates an opcode syntax string into a regex string,
-   by replacing any non-character syntax element (such as an
-   opcode) with the pattern '.*'
-
-   It then compiles the regex and stores it in the opcode, for
-   later use by ms1_cgen_assemble_insn
-
-   Returns NULL for success, an error message for failure.  */
-
-char * 
-ms1_cgen_build_insn_regex (CGEN_INSN *insn)
-{  
-  CGEN_OPCODE *opc = (CGEN_OPCODE *) CGEN_INSN_OPCODE (insn);
-  const char *mnem = CGEN_INSN_MNEMONIC (insn);
-  char rxbuf[CGEN_MAX_RX_ELEMENTS];
-  char *rx = rxbuf;
-  const CGEN_SYNTAX_CHAR_TYPE *syn;
-  int reg_err;
-
-  syn = CGEN_SYNTAX_STRING (CGEN_OPCODE_SYNTAX (opc));
-
-  /* Mnemonics come first in the syntax string.  */
-  if (! CGEN_SYNTAX_MNEMONIC_P (* syn))
-    return _("missing mnemonic in syntax string");
-  ++syn;
-
-  /* Generate a case sensitive regular expression that emulates case
-     insensitive matching in the "C" locale.  We cannot generate a case
-     insensitive regular expression because in Turkish locales, 'i' and 'I'
-     are not equal modulo case conversion.  */
-
-  /* Copy the literal mnemonic out of the insn.  */
-  for (; *mnem; mnem++)
-    {
-      char c = *mnem;
-
-      if (ISALPHA (c))
-	{
-	  *rx++ = '[';
-	  *rx++ = TOLOWER (c);
-	  *rx++ = TOUPPER (c);
-	  *rx++ = ']';
-	}
-      else
-	*rx++ = c;
-    }
-
-  /* Copy any remaining literals from the syntax string into the rx.  */
-  for(; * syn != 0 && rx <= rxbuf + (CGEN_MAX_RX_ELEMENTS - 7 - 4); ++syn)
-    {
-      if (CGEN_SYNTAX_CHAR_P (* syn)) 
-	{
-	  char c = CGEN_SYNTAX_CHAR (* syn);
-
-	  switch (c) 
-	    {
-	      /* Escape any regex metacharacters in the syntax.  */
-	    case '.': case '[': case '\\': 
-	    case '*': case '^': case '$': 
-
-#ifdef CGEN_ESCAPE_EXTENDED_REGEX
-	    case '?': case '{': case '}': 
-	    case '(': case ')': case '*':
-	    case '|': case '+': case ']':
-#endif
-	      *rx++ = '\\';
-	      *rx++ = c;
-	      break;
-
-	    default:
-	      if (ISALPHA (c))
-		{
-		  *rx++ = '[';
-		  *rx++ = TOLOWER (c);
-		  *rx++ = TOUPPER (c);
-		  *rx++ = ']';
-		}
-	      else
-		*rx++ = c;
-	      break;
-	    }
-	}
-      else
-	{
-	  /* Replace non-syntax fields with globs.  */
-	  *rx++ = '.';
-	  *rx++ = '*';
-	}
-    }
-
-  /* Trailing whitespace ok.  */
-  * rx++ = '['; 
-  * rx++ = ' '; 
-  * rx++ = '\t'; 
-  * rx++ = ']'; 
-  * rx++ = '*'; 
-
-  /* But anchor it after that.  */
-  * rx++ = '$'; 
-  * rx = '\0';
-
-  CGEN_INSN_RX (insn) = xmalloc (sizeof (regex_t));
-  reg_err = regcomp ((regex_t *) CGEN_INSN_RX (insn), rxbuf, REG_NOSUB);
-
-  if (reg_err == 0) 
-    return NULL;
-  else
-    {
-      static char msg[80];
-
-      regerror (reg_err, (regex_t *) CGEN_INSN_RX (insn), msg, 80);
-      regfree ((regex_t *) CGEN_INSN_RX (insn));
-      free (CGEN_INSN_RX (insn));
-      (CGEN_INSN_RX (insn)) = NULL;
-      return msg;
-    }
-}
-
-
-/* Default insn parser.
-
-   The syntax string is scanned and operands are parsed and stored in FIELDS.
-   Relocs are queued as we go via other callbacks.
-
-   ??? Note that this is currently an all-or-nothing parser.  If we fail to
-   parse the instruction, we return 0 and the caller will start over from
-   the beginning.  Backtracking will be necessary in parsing subexpressions,
-   but that can be handled there.  Not handling backtracking here may get
-   expensive in the case of the m68k.  Deal with later.
-
-   Returns NULL for success, an error message for failure.  */
-
-static const char *
-parse_insn_normal (CGEN_CPU_DESC cd,
-		   const CGEN_INSN *insn,
-		   const char **strp,
-		   CGEN_FIELDS *fields)
-{
-  /* ??? Runtime added insns not handled yet.  */
-  const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
-  const char *str = *strp;
-  const char *errmsg;
-  const char *p;
-  const CGEN_SYNTAX_CHAR_TYPE * syn;
-#ifdef CGEN_MNEMONIC_OPERANDS
-  /* FIXME: wip */
-  int past_opcode_p;
-#endif
-
-  /* For now we assume the mnemonic is first (there are no leading operands).
-     We can parse it without needing to set up operand parsing.
-     GAS's input scrubber will ensure mnemonics are lowercase, but we may
-     not be called from GAS.  */
-  p = CGEN_INSN_MNEMONIC (insn);
-  while (*p && TOLOWER (*p) == TOLOWER (*str))
-    ++p, ++str;
-
-  if (* p)
-    return _("unrecognized instruction");
-
-#ifndef CGEN_MNEMONIC_OPERANDS
-  if (* str && ! ISSPACE (* str))
-    return _("unrecognized instruction");
-#endif
-
-  CGEN_INIT_PARSE (cd);
-  cgen_init_parse_operand (cd);
-#ifdef CGEN_MNEMONIC_OPERANDS
-  past_opcode_p = 0;
-#endif
-
-  /* We don't check for (*str != '\0') here because we want to parse
-     any trailing fake arguments in the syntax string.  */
-  syn = CGEN_SYNTAX_STRING (syntax);
-
-  /* Mnemonics come first for now, ensure valid string.  */
-  if (! CGEN_SYNTAX_MNEMONIC_P (* syn))
-    abort ();
-
-  ++syn;
-
-  while (* syn != 0)
-    {
-      /* Non operand chars must match exactly.  */
-      if (CGEN_SYNTAX_CHAR_P (* syn))
-	{
-	  /* FIXME: While we allow for non-GAS callers above, we assume the
-	     first char after the mnemonic part is a space.  */
-	  /* FIXME: We also take inappropriate advantage of the fact that
-	     GAS's input scrubber will remove extraneous blanks.  */
-	  if (TOLOWER (*str) == TOLOWER (CGEN_SYNTAX_CHAR (* syn)))
-	    {
-#ifdef CGEN_MNEMONIC_OPERANDS
-	      if (CGEN_SYNTAX_CHAR(* syn) == ' ')
-		past_opcode_p = 1;
-#endif
-	      ++ syn;
-	      ++ str;
-	    }
-	  else if (*str)
-	    {
-	      /* Syntax char didn't match.  Can't be this insn.  */
-	      static char msg [80];
-
-	      /* xgettext:c-format */
-	      sprintf (msg, _("syntax error (expected char `%c', found `%c')"),
-		       CGEN_SYNTAX_CHAR(*syn), *str);
-	      return msg;
-	    }
-	  else
-	    {
-	      /* Ran out of input.  */
-	      static char msg [80];
-
-	      /* xgettext:c-format */
-	      sprintf (msg, _("syntax error (expected char `%c', found end of instruction)"),
-		       CGEN_SYNTAX_CHAR(*syn));
-	      return msg;
-	    }
-	  continue;
-	}
-
-      /* We have an operand of some sort.  */
-      errmsg = cd->parse_operand (cd, CGEN_SYNTAX_FIELD (*syn),
-					  &str, fields);
-      if (errmsg)
-	return errmsg;
-
-      /* Done with this operand, continue with next one.  */
-      ++ syn;
-    }
-
-  /* If we're at the end of the syntax string, we're done.  */
-  if (* syn == 0)
-    {
-      /* FIXME: For the moment we assume a valid `str' can only contain
-	 blanks now.  IE: We needn't try again with a longer version of
-	 the insn and it is assumed that longer versions of insns appear
-	 before shorter ones (eg: lsr r2,r3,1 vs lsr r2,r3).  */
-      while (ISSPACE (* str))
-	++ str;
-
-      if (* str != '\0')
-	return _("junk at end of line"); /* FIXME: would like to include `str' */
-
-      return NULL;
-    }
-
-  /* We couldn't parse it.  */
-  return _("unrecognized instruction");
-}
-
-/* Main entry point.
-   This routine is called for each instruction to be assembled.
-   STR points to the insn to be assembled.
-   We assume all necessary tables have been initialized.
-   The assembled instruction, less any fixups, is stored in BUF.
-   Remember that if CGEN_INT_INSN_P then BUF is an int and thus the value
-   still needs to be converted to target byte order, otherwise BUF is an array
-   of bytes in target byte order.
-   The result is a pointer to the insn's entry in the opcode table,
-   or NULL if an error occured (an error message will have already been
-   printed).
-
-   Note that when processing (non-alias) macro-insns,
-   this function recurses.
-
-   ??? It's possible to make this cpu-independent.
-   One would have to deal with a few minor things.
-   At this point in time doing so would be more of a curiosity than useful
-   [for example this file isn't _that_ big], but keeping the possibility in
-   mind helps keep the design clean.  */
-
-const CGEN_INSN *
-ms1_cgen_assemble_insn (CGEN_CPU_DESC cd,
-			   const char *str,
-			   CGEN_FIELDS *fields,
-			   CGEN_INSN_BYTES_PTR buf,
-			   char **errmsg)
-{
-  const char *start;
-  CGEN_INSN_LIST *ilist;
-  const char *parse_errmsg = NULL;
-  const char *insert_errmsg = NULL;
-  int recognized_mnemonic = 0;
-
-  /* Skip leading white space.  */
-  while (ISSPACE (* str))
-    ++ str;
-
-  /* The instructions are stored in hashed lists.
-     Get the first in the list.  */
-  ilist = CGEN_ASM_LOOKUP_INSN (cd, str);
-
-  /* Keep looking until we find a match.  */
-  start = str;
-  for ( ; ilist != NULL ; ilist = CGEN_ASM_NEXT_INSN (ilist))
-    {
-      const CGEN_INSN *insn = ilist->insn;
-      recognized_mnemonic = 1;
-
-#ifdef CGEN_VALIDATE_INSN_SUPPORTED 
-      /* Not usually needed as unsupported opcodes
-	 shouldn't be in the hash lists.  */
-      /* Is this insn supported by the selected cpu?  */
-      if (! ms1_cgen_insn_supported (cd, insn))
-	continue;
-#endif
-      /* If the RELAXED attribute is set, this is an insn that shouldn't be
-	 chosen immediately.  Instead, it is used during assembler/linker
-	 relaxation if possible.  */
-      if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_RELAXED) != 0)
-	continue;
-
-      str = start;
-
-      /* Skip this insn if str doesn't look right lexically.  */
-      if (CGEN_INSN_RX (insn) != NULL &&
-	  regexec ((regex_t *) CGEN_INSN_RX (insn), str, 0, NULL, 0) == REG_NOMATCH)
-	continue;
-
-      /* Allow parse/insert handlers to obtain length of insn.  */
-      CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
-
-      parse_errmsg = CGEN_PARSE_FN (cd, insn) (cd, insn, & str, fields);
-      if (parse_errmsg != NULL)
-	continue;
-
-      /* ??? 0 is passed for `pc'.  */
-      insert_errmsg = CGEN_INSERT_FN (cd, insn) (cd, insn, fields, buf,
-						 (bfd_vma) 0);
-      if (insert_errmsg != NULL)
-        continue;
-
-      /* It is up to the caller to actually output the insn and any
-         queued relocs.  */
-      return insn;
-    }
-
-  {
-    static char errbuf[150];
-#ifdef CGEN_VERBOSE_ASSEMBLER_ERRORS
-    const char *tmp_errmsg;
-
-    /* If requesting verbose error messages, use insert_errmsg.
-       Failing that, use parse_errmsg.  */
-    tmp_errmsg = (insert_errmsg ? insert_errmsg :
-		  parse_errmsg ? parse_errmsg :
-		  recognized_mnemonic ?
-		  _("unrecognized form of instruction") :
-		  _("unrecognized instruction"));
-
-    if (strlen (start) > 50)
-      /* xgettext:c-format */
-      sprintf (errbuf, "%s `%.50s...'", tmp_errmsg, start);
-    else 
-      /* xgettext:c-format */
-      sprintf (errbuf, "%s `%.50s'", tmp_errmsg, start);
-#else
-    if (strlen (start) > 50)
-      /* xgettext:c-format */
-      sprintf (errbuf, _("bad instruction `%.50s...'"), start);
-    else 
-      /* xgettext:c-format */
-      sprintf (errbuf, _("bad instruction `%.50s'"), start);
-#endif
-      
-    *errmsg = errbuf;
-    return NULL;
-  }
-}

Deleted: branches/binutils/package/opcodes/ms1-desc.c
===================================================================
--- branches/binutils/package/opcodes/ms1-desc.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-desc.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,1332 +0,0 @@
-/* CPU data for ms1.
-
-THIS FILE IS MACHINE GENERATED WITH CGEN.
-
-Copyright 1996-2005 Free Software Foundation, Inc.
-
-This file is part of the GNU Binutils and/or GDB, the GNU debugger.
-
-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 2, 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; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#include "sysdep.h"
-#include <stdio.h>
-#include <stdarg.h>
-#include "ansidecl.h"
-#include "bfd.h"
-#include "symcat.h"
-#include "ms1-desc.h"
-#include "ms1-opc.h"
-#include "opintl.h"
-#include "libiberty.h"
-#include "xregex.h"
-
-/* Attributes.  */
-
-static const CGEN_ATTR_ENTRY bool_attr[] =
-{
-  { "#f", 0 },
-  { "#t", 1 },
-  { 0, 0 }
-};
-
-static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
-{
-  { "base", MACH_BASE },
-  { "ms1", MACH_MS1 },
-  { "ms1_003", MACH_MS1_003 },
-  { "ms2", MACH_MS2 },
-  { "max", MACH_MAX },
-  { 0, 0 }
-};
-
-static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
-{
-  { "ms1", ISA_MS1 },
-  { "max", ISA_MAX },
-  { 0, 0 }
-};
-
-const CGEN_ATTR_TABLE ms1_cgen_ifield_attr_table[] =
-{
-  { "MACH", & MACH_attr[0], & MACH_attr[0] },
-  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
-  { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
-  { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
-  { "RESERVED", &bool_attr[0], &bool_attr[0] },
-  { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
-  { "SIGNED", &bool_attr[0], &bool_attr[0] },
-  { 0, 0, 0 }
-};
-
-const CGEN_ATTR_TABLE ms1_cgen_hardware_attr_table[] =
-{
-  { "MACH", & MACH_attr[0], & MACH_attr[0] },
-  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
-  { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
-  { "PC", &bool_attr[0], &bool_attr[0] },
-  { "PROFILE", &bool_attr[0], &bool_attr[0] },
-  { 0, 0, 0 }
-};
-
-const CGEN_ATTR_TABLE ms1_cgen_operand_attr_table[] =
-{
-  { "MACH", & MACH_attr[0], & MACH_attr[0] },
-  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
-  { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
-  { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
-  { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
-  { "SIGNED", &bool_attr[0], &bool_attr[0] },
-  { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
-  { "RELAX", &bool_attr[0], &bool_attr[0] },
-  { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
-  { 0, 0, 0 }
-};
-
-const CGEN_ATTR_TABLE ms1_cgen_insn_attr_table[] =
-{
-  { "MACH", & MACH_attr[0], & MACH_attr[0] },
-  { "ALIAS", &bool_attr[0], &bool_attr[0] },
-  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
-  { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
-  { "COND-CTI", &bool_attr[0], &bool_attr[0] },
-  { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
-  { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
-  { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
-  { "RELAXED", &bool_attr[0], &bool_attr[0] },
-  { "NO-DIS", &bool_attr[0], &bool_attr[0] },
-  { "PBB", &bool_attr[0], &bool_attr[0] },
-  { "LOAD-DELAY", &bool_attr[0], &bool_attr[0] },
-  { "MEMORY-ACCESS", &bool_attr[0], &bool_attr[0] },
-  { "AL-INSN", &bool_attr[0], &bool_attr[0] },
-  { "IO-INSN", &bool_attr[0], &bool_attr[0] },
-  { "BR-INSN", &bool_attr[0], &bool_attr[0] },
-  { "JAL-HAZARD", &bool_attr[0], &bool_attr[0] },
-  { "USES-FRDR", &bool_attr[0], &bool_attr[0] },
-  { "USES-FRDRRR", &bool_attr[0], &bool_attr[0] },
-  { "USES-FRSR1", &bool_attr[0], &bool_attr[0] },
-  { "USES-FRSR2", &bool_attr[0], &bool_attr[0] },
-  { "SKIPA", &bool_attr[0], &bool_attr[0] },
-  { 0, 0, 0 }
-};
-
-/* Instruction set variants.  */
-
-static const CGEN_ISA ms1_cgen_isa_table[] = {
-  { "ms1", 32, 32, 32, 32 },
-  { 0, 0, 0, 0, 0 }
-};
-
-/* Machine variants.  */
-
-static const CGEN_MACH ms1_cgen_mach_table[] = {
-  { "ms1", "ms1", MACH_MS1, 0 },
-  { "ms1-003", "ms1-003", MACH_MS1_003, 0 },
-  { "ms2", "ms2", MACH_MS2, 0 },
-  { 0, 0, 0, 0 }
-};
-
-static CGEN_KEYWORD_ENTRY ms1_cgen_opval_msys_syms_entries[] =
-{
-  { "DUP", 1, {0, {{{0, 0}}}}, 0, 0 },
-  { "XX", 0, {0, {{{0, 0}}}}, 0, 0 }
-};
-
-CGEN_KEYWORD ms1_cgen_opval_msys_syms =
-{
-  & ms1_cgen_opval_msys_syms_entries[0],
-  2,
-  0, 0, 0, 0, ""
-};
-
-static CGEN_KEYWORD_ENTRY ms1_cgen_opval_h_spr_entries[] =
-{
-  { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
-  { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
-  { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
-  { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
-  { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
-  { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
-  { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
-  { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
-  { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
-  { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
-  { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
-  { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
-  { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
-  { "fp", 12, {0, {{{0, 0}}}}, 0, 0 },
-  { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
-  { "sp", 13, {0, {{{0, 0}}}}, 0, 0 },
-  { "R14", 14, {0, {{{0, 0}}}}, 0, 0 },
-  { "ra", 14, {0, {{{0, 0}}}}, 0, 0 },
-  { "R15", 15, {0, {{{0, 0}}}}, 0, 0 },
-  { "ira", 15, {0, {{{0, 0}}}}, 0, 0 }
-};
-
-CGEN_KEYWORD ms1_cgen_opval_h_spr =
-{
-  & ms1_cgen_opval_h_spr_entries[0],
-  20,
-  0, 0, 0, 0, ""
-};
-
-
-/* The hardware table.  */
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define A(a) (1 << CGEN_HW_##a)
-#else
-#define A(a) (1 << CGEN_HW_/**/a)
-#endif
-
-const CGEN_HW_ENTRY ms1_cgen_hw_table[] =
-{
-  { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-  { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-  { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-  { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-  { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-  { "h-spr", HW_H_SPR, CGEN_ASM_KEYWORD, (PTR) & ms1_cgen_opval_h_spr, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-  { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
-  { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
-};
-
-#undef A
-
-
-/* The instruction field table.  */
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define A(a) (1 << CGEN_IFLD_##a)
-#else
-#define A(a) (1 << CGEN_IFLD_/**/a)
-#endif
-
-const CGEN_IFLD ms1_cgen_ifld_table[] =
-{
-  { MS1_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_MSYS, "f-msys", 0, 32, 31, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_OPC, "f-opc", 0, 32, 30, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_IMM, "f-imm", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU24, "f-uu24", 0, 32, 23, 24, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_SR1, "f-sr1", 0, 32, 23, 4, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_SR2, "f-sr2", 0, 32, 19, 4, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_DR, "f-dr", 0, 32, 19, 4, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_DRRR, "f-drrr", 0, 32, 15, 4, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_IMM16U, "f-imm16u", 0, 32, 15, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_IMM16S, "f-imm16s", 0, 32, 15, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_IMM16A, "f-imm16a", 0, 32, 15, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU4A, "f-uu4a", 0, 32, 19, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU4B, "f-uu4b", 0, 32, 23, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU12, "f-uu12", 0, 32, 11, 12, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU8, "f-uu8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU16, "f-uu16", 0, 32, 15, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU1, "f-uu1", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_MSOPC, "f-msopc", 0, 32, 30, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_26_25, "f-uu-26-25", 0, 32, 25, 26, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_MASK, "f-mask", 0, 32, 25, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_BANKADDR, "f-bankaddr", 0, 32, 25, 13, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RDA, "f-rda", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_2_25, "f-uu-2-25", 0, 32, 25, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RBBC, "f-rbbc", 0, 32, 25, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_PERM, "f-perm", 0, 32, 25, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_MODE, "f-mode", 0, 32, 25, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_1_24, "f-uu-1-24", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_WR, "f-wr", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_FBINCR, "f-fbincr", 0, 32, 23, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_2_23, "f-uu-2-23", 0, 32, 23, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_XMODE, "f-xmode", 0, 32, 23, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_A23, "f-a23", 0, 32, 23, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_MASK1, "f-mask1", 0, 32, 22, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CR, "f-cr", 0, 32, 22, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_TYPE, "f-type", 0, 32, 21, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_INCAMT, "f-incamt", 0, 32, 19, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CBS, "f-cbs", 0, 32, 19, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_1_19, "f-uu-1-19", 0, 32, 19, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_BALL, "f-ball", 0, 32, 19, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_COLNUM, "f-colnum", 0, 32, 18, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_BRC, "f-brc", 0, 32, 18, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_INCR, "f-incr", 0, 32, 17, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_FBDISP, "f-fbdisp", 0, 32, 15, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_4_15, "f-uu-4-15", 0, 32, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_LENGTH, "f-length", 0, 32, 15, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_1_15, "f-uu-1-15", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RC, "f-rc", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RCNUM, "f-rcnum", 0, 32, 14, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_ROWNUM, "f-rownum", 0, 32, 14, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CBX, "f-cbx", 0, 32, 14, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_ID, "f-id", 0, 32, 14, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_SIZE, "f-size", 0, 32, 13, 14, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_ROWNUM1, "f-rownum1", 0, 32, 12, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_3_11, "f-uu-3-11", 0, 32, 11, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RC1, "f-rc1", 0, 32, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CCB, "f-ccb", 0, 32, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CBRB, "f-cbrb", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CDB, "f-cdb", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_ROWNUM2, "f-rownum2", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CELL, "f-cell", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_3_9, "f-uu-3-9", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CONTNUM, "f-contnum", 0, 32, 8, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_UU_1_6, "f-uu-1-6", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_DUP, "f-dup", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RC2, "f-rc2", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CTXDISP, "f-ctxdisp", 0, 32, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_IMM16L, "f-imm16l", 0, 32, 23, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_LOOPO, "f-loopo", 0, 32, 7, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CB1SEL, "f-cb1sel", 0, 32, 25, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CB2SEL, "f-cb2sel", 0, 32, 22, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CB1INCR, "f-cb1incr", 0, 32, 19, 6, { 0|A(SIGNED), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_CB2INCR, "f-cb2incr", 0, 32, 13, 6, { 0|A(SIGNED), { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_RC3, "f-rc3", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_MSYSFRSR2, "f-msysfrsr2", 0, 32, 19, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_BRC2, "f-brc2", 0, 32, 14, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { MS1_F_BALL2, "f-ball2", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-  { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
-};
-
-#undef A
-
-
-
-/* multi ifield declarations */
-
-
-
-/* multi ifield definitions */
-
-
-/* The operand table.  */
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define A(a) (1 << CGEN_OPERAND_##a)
-#else
-#define A(a) (1 << CGEN_OPERAND_/**/a)
-#endif
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define OPERAND(op) MS1_OPERAND_##op
-#else
-#define OPERAND(op) MS1_OPERAND_/**/op
-#endif
-
-const CGEN_OPERAND ms1_cgen_operand_table[] =
-{
-/* pc: program counter */
-  { "pc", MS1_OPERAND_PC, HW_H_PC, 0, 0,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_NIL] } }, 
-    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
-/* frsr1: register */
-  { "frsr1", MS1_OPERAND_FRSR1, HW_H_SPR, 23, 4,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_SR1] } }, 
-    { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-/* frsr2: register */
-  { "frsr2", MS1_OPERAND_FRSR2, HW_H_SPR, 19, 4,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_SR2] } }, 
-    { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-/* frdr: register */
-  { "frdr", MS1_OPERAND_FRDR, HW_H_SPR, 19, 4,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_DR] } }, 
-    { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-/* frdrrr: register */
-  { "frdrrr", MS1_OPERAND_FRDRRR, HW_H_SPR, 15, 4,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_DRRR] } }, 
-    { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-/* imm16: immediate value - sign extd */
-  { "imm16", MS1_OPERAND_IMM16, HW_H_SINT, 15, 16,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_IMM16S] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* imm16z: immediate value - zero extd */
-  { "imm16z", MS1_OPERAND_IMM16Z, HW_H_UINT, 15, 16,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_IMM16U] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* imm16o: immediate value */
-  { "imm16o", MS1_OPERAND_IMM16O, HW_H_UINT, 15, 16,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_IMM16S] } }, 
-    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
-/* rc: rc */
-  { "rc", MS1_OPERAND_RC, HW_H_UINT, 15, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RC] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rcnum: rcnum */
-  { "rcnum", MS1_OPERAND_RCNUM, HW_H_UINT, 14, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RCNUM] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* contnum: context number */
-  { "contnum", MS1_OPERAND_CONTNUM, HW_H_UINT, 8, 9,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CONTNUM] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rbbc: omega network configuration */
-  { "rbbc", MS1_OPERAND_RBBC, HW_H_UINT, 25, 2,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RBBC] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* colnum: column number */
-  { "colnum", MS1_OPERAND_COLNUM, HW_H_UINT, 18, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_COLNUM] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rownum: row number */
-  { "rownum", MS1_OPERAND_ROWNUM, HW_H_UINT, 14, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_ROWNUM] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rownum1: row number */
-  { "rownum1", MS1_OPERAND_ROWNUM1, HW_H_UINT, 12, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_ROWNUM1] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rownum2: row number */
-  { "rownum2", MS1_OPERAND_ROWNUM2, HW_H_UINT, 9, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_ROWNUM2] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rc1: rc1 */
-  { "rc1", MS1_OPERAND_RC1, HW_H_UINT, 11, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RC1] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rc2: rc2 */
-  { "rc2", MS1_OPERAND_RC2, HW_H_UINT, 6, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RC2] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* cbrb: data-bus orientation */
-  { "cbrb", MS1_OPERAND_CBRB, HW_H_UINT, 10, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CBRB] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* cell: cell */
-  { "cell", MS1_OPERAND_CELL, HW_H_UINT, 9, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CELL] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* dup: dup */
-  { "dup", MS1_OPERAND_DUP, HW_H_UINT, 6, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_DUP] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* ctxdisp: context displacement */
-  { "ctxdisp", MS1_OPERAND_CTXDISP, HW_H_UINT, 5, 6,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CTXDISP] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* fbdisp: frame buffer displacement */
-  { "fbdisp", MS1_OPERAND_FBDISP, HW_H_UINT, 15, 6,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_FBDISP] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* type: type */
-  { "type", MS1_OPERAND_TYPE, HW_H_UINT, 21, 2,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_TYPE] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* mask: mask */
-  { "mask", MS1_OPERAND_MASK, HW_H_UINT, 25, 16,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_MASK] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* bankaddr: bank address */
-  { "bankaddr", MS1_OPERAND_BANKADDR, HW_H_UINT, 25, 13,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_BANKADDR] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* incamt: increment amount */
-  { "incamt", MS1_OPERAND_INCAMT, HW_H_UINT, 19, 8,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_INCAMT] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* xmode: xmode */
-  { "xmode", MS1_OPERAND_XMODE, HW_H_UINT, 23, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_XMODE] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* mask1: mask1 */
-  { "mask1", MS1_OPERAND_MASK1, HW_H_UINT, 22, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_MASK1] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* ball: b_all */
-  { "ball", MS1_OPERAND_BALL, HW_H_UINT, 19, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_BALL] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* brc: b_r_c */
-  { "brc", MS1_OPERAND_BRC, HW_H_UINT, 18, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_BRC] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* rda: rd */
-  { "rda", MS1_OPERAND_RDA, HW_H_UINT, 25, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RDA] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* wr: wr */
-  { "wr", MS1_OPERAND_WR, HW_H_UINT, 24, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_WR] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* ball2: b_all2 */
-  { "ball2", MS1_OPERAND_BALL2, HW_H_UINT, 15, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_BALL2] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* brc2: b_r_c2 */
-  { "brc2", MS1_OPERAND_BRC2, HW_H_UINT, 14, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_BRC2] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* perm: perm */
-  { "perm", MS1_OPERAND_PERM, HW_H_UINT, 25, 2,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_PERM] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* a23: a23 */
-  { "a23", MS1_OPERAND_A23, HW_H_UINT, 23, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_A23] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* cr: c-r */
-  { "cr", MS1_OPERAND_CR, HW_H_UINT, 22, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CR] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* cbs: cbs */
-  { "cbs", MS1_OPERAND_CBS, HW_H_UINT, 19, 2,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CBS] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* incr: incr */
-  { "incr", MS1_OPERAND_INCR, HW_H_UINT, 17, 6,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_INCR] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* length: length */
-  { "length", MS1_OPERAND_LENGTH, HW_H_UINT, 15, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_LENGTH] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* cbx: cbx */
-  { "cbx", MS1_OPERAND_CBX, HW_H_UINT, 14, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CBX] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* ccb: ccb */
-  { "ccb", MS1_OPERAND_CCB, HW_H_UINT, 11, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CCB] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* cdb: cdb */
-  { "cdb", MS1_OPERAND_CDB, HW_H_UINT, 10, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CDB] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* mode: mode */
-  { "mode", MS1_OPERAND_MODE, HW_H_UINT, 25, 2,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_MODE] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* id: i/d */
-  { "id", MS1_OPERAND_ID, HW_H_UINT, 14, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_ID] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* size: size */
-  { "size", MS1_OPERAND_SIZE, HW_H_UINT, 13, 14,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_SIZE] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* fbincr: fb incr */
-  { "fbincr", MS1_OPERAND_FBINCR, HW_H_UINT, 23, 4,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_FBINCR] } }, 
-    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
-/* loopsize: immediate value */
-  { "loopsize", MS1_OPERAND_LOOPSIZE, HW_H_UINT, 7, 8,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_LOOPO] } }, 
-    { 0|A(PCREL_ADDR), { { { (1<<MACH_MS2), 0 } } } }  },
-/* imm16l: immediate value */
-  { "imm16l", MS1_OPERAND_IMM16L, HW_H_UINT, 23, 16,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_IMM16L] } }, 
-    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
-/* rc3: rc3 */
-  { "rc3", MS1_OPERAND_RC3, HW_H_UINT, 7, 1,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_RC3] } }, 
-    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
-/* cb1sel: cb1sel */
-  { "cb1sel", MS1_OPERAND_CB1SEL, HW_H_UINT, 25, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB1SEL] } }, 
-    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
-/* cb2sel: cb2sel */
-  { "cb2sel", MS1_OPERAND_CB2SEL, HW_H_UINT, 22, 3,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB2SEL] } }, 
-    { 0, { { { (1<<MACH_MS2), 0 } } } }  },
-/* cb1incr: cb1incr */
-  { "cb1incr", MS1_OPERAND_CB1INCR, HW_H_SINT, 19, 6,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB1INCR] } }, 
-    { 0|A(SIGNED), { { { (1<<MACH_MS2), 0 } } } }  },
-/* cb2incr: cb2incr */
-  { "cb2incr", MS1_OPERAND_CB2INCR, HW_H_SINT, 13, 6,
-    { 0, { (const PTR) &ms1_cgen_ifld_table[MS1_F_CB2INCR] } }, 
-    { 0|A(SIGNED), { { { (1<<MACH_MS2), 0 } } } }  },
-/* sentinel */
-  { 0, 0, 0, 0, 0,
-    { 0, { (const PTR) 0 } },
-    { 0, { { { (1<<MACH_BASE), 0 } } } } }
-};
-
-#undef A
-
-
-/* The instruction table.  */
-
-#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define A(a) (1 << CGEN_INSN_##a)
-#else
-#define A(a) (1 << CGEN_INSN_/**/a)
-#endif
-
-static const CGEN_IBASE ms1_cgen_insn_table[MAX_INSNS] =
-{
-  /* Special null first entry.
-     A `num' value of zero is thus invalid.
-     Also, the special `invalid' insn resides here.  */
-  { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
-/* add $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_ADD, "add", "add", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* addu $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_ADDU, "addu", "addu", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* addi $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_ADDI, "addi", "addi", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* addui $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_ADDUI, "addui", "addui", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* sub $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_SUB, "sub", "sub", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* subu $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_SUBU, "subu", "subu", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* subi $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_SUBI, "subi", "subi", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* subui $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_SUBUI, "subui", "subui", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* mul $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_MUL, "mul", "mul", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* muli $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_MULI, "muli", "muli", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* and $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_AND, "and", "and", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* andi $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_ANDI, "andi", "andi", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* or $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_OR, "or", "or", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* nop */
-  {
-    MS1_INSN_NOP, "nop", "nop", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* ori $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_ORI, "ori", "ori", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* xor $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_XOR, "xor", "xor", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* xori $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_XORI, "xori", "xori", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* nand $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_NAND, "nand", "nand", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* nandi $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_NANDI, "nandi", "nandi", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* nor $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_NOR, "nor", "nor", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* nori $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_NORI, "nori", "nori", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* xnor $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_XNOR, "xnor", "xnor", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* xnori $frdr,$frsr1,#$imm16z */
-  {
-    MS1_INSN_XNORI, "xnori", "xnori", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* ldui $frdr,#$imm16z */
-  {
-    MS1_INSN_LDUI, "ldui", "ldui", 32,
-    { 0|A(USES_FRDR)|A(AL_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* lsl $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_LSL, "lsl", "lsl", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* lsli $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_LSLI, "lsli", "lsli", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* lsr $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_LSR, "lsr", "lsr", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* lsri $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_LSRI, "lsri", "lsri", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* asr $frdrrr,$frsr1,$frsr2 */
-  {
-    MS1_INSN_ASR, "asr", "asr", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* asri $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_ASRI, "asri", "asri", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* brlt $frsr1,$frsr2,$imm16o */
-  {
-    MS1_INSN_BRLT, "brlt", "brlt", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(USES_FRDRRR)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* brle $frsr1,$frsr2,$imm16o */
-  {
-    MS1_INSN_BRLE, "brle", "brle", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* breq $frsr1,$frsr2,$imm16o */
-  {
-    MS1_INSN_BREQ, "breq", "breq", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* brne $frsr1,$frsr2,$imm16o */
-  {
-    MS1_INSN_BRNE, "brne", "brne", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* jmp $imm16o */
-  {
-    MS1_INSN_JMP, "jmp", "jmp", 32,
-    { 0|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* jal $frdrrr,$frsr1 */
-  {
-    MS1_INSN_JAL, "jal", "jal", 32,
-    { 0|A(JAL_HAZARD)|A(USES_FRSR1)|A(USES_FRDR)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* dbnz $frsr1,$imm16o */
-  {
-    MS1_INSN_DBNZ, "dbnz", "dbnz", 32,
-    { 0|A(USES_FRSR1)|A(DELAY_SLOT)|A(BR_INSN), { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* ei */
-  {
-    MS1_INSN_EI, "ei", "ei", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* di */
-  {
-    MS1_INSN_DI, "di", "di", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* si $frdrrr */
-  {
-    MS1_INSN_SI, "si", "si", 32,
-    { 0|A(USES_FRDR)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* reti $frsr1 */
-  {
-    MS1_INSN_RETI, "reti", "reti", 32,
-    { 0|A(JAL_HAZARD)|A(USES_FRSR1)|A(BR_INSN)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* ldw $frdr,$frsr1,#$imm16 */
-  {
-    MS1_INSN_LDW, "ldw", "ldw", 32,
-    { 0|A(USES_FRSR1)|A(USES_FRDR)|A(MEMORY_ACCESS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* stw $frsr2,$frsr1,#$imm16 */
-  {
-    MS1_INSN_STW, "stw", "stw", 32,
-    { 0|A(USES_FRSR2)|A(USES_FRSR1)|A(MEMORY_ACCESS), { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* break */
-  {
-    MS1_INSN_BREAK, "break", "break", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* iflush */
-  {
-    MS1_INSN_IFLUSH, "iflush", "iflush", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* ldctxt $frsr1,$frsr2,#$rc,#$rcnum,#$contnum */
-  {
-    MS1_INSN_LDCTXT, "ldctxt", "ldctxt", 32,
-    { 0, { { { (1<<MACH_MS1), 0 } } } }
-  },
-/* ldfb $frsr1,$frsr2,#$imm16z */
-  {
-    MS1_INSN_LDFB, "ldfb", "ldfb", 32,
-    { 0, { { { (1<<MACH_MS1), 0 } } } }
-  },
-/* stfb $frsr1,$frsr2,#$imm16z */
-  {
-    MS1_INSN_STFB, "stfb", "stfb", 32,
-    { 0, { { { (1<<MACH_MS1), 0 } } } }
-  },
-/* fbcb $frsr1,#$rbbc,#$ball,#$brc,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCB, "fbcb", "fbcb", 32,
-    { 0, { { { (1<<MACH_MS1)|(1<<MACH_MS1_003), 0 } } } }
-  },
-/* mfbcb $frsr1,#$rbbc,$frsr2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBCB, "mfbcb", "mfbcb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* fbcci $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCCI, "fbcci", "fbcci", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* fbrci $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBRCI, "fbrci", "fbrci", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* fbcri $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCRI, "fbcri", "fbcri", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* fbrri $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBRRI, "fbrri", "fbrri", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* mfbcci $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBCCI, "mfbcci", "mfbcci", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* mfbrci $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBRCI, "mfbrci", "mfbrci", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* mfbcri $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBCRI, "mfbcri", "mfbcri", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* mfbrri $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBRRI, "mfbrri", "mfbrri", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* fbcbdr $frsr1,#$rbbc,$frsr2,#$ball2,#$brc2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCBDR, "fbcbdr", "fbcbdr", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* rcfbcb #$rbbc,#$type,#$ball,#$brc,#$rownum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_RCFBCB, "rcfbcb", "rcfbcb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* mrcfbcb $frsr2,#$rbbc,#$type,#$rownum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MRCFBCB, "mrcfbcb", "mrcfbcb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* cbcast #$mask,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_CBCAST, "cbcast", "cbcast", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* dupcbcast #$mask,#$cell,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_DUPCBCAST, "dupcbcast", "dupcbcast", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* wfbi #$bankaddr,#$rownum1,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_WFBI, "wfbi", "wfbi", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* wfb $frsr1,$frsr2,#$fbdisp,#$rownum2,#$ctxdisp */
-  {
-    MS1_INSN_WFB, "wfb", "wfb", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* rcrisc $frdrrr,#$rbbc,$frsr1,#$colnum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_RCRISC, "rcrisc", "rcrisc", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* fbcbinc $frsr1,#$rbbc,#$incamt,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCBINC, "fbcbinc", "fbcbinc", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* rcxmode $frsr2,#$rda,#$wr,#$xmode,#$mask1,#$fbdisp,#$rownum2,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_RCXMODE, "rcxmode", "rcxmode", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* intlvr $frsr1,#$mode,$frsr2,#$id,#$size */
-  {
-    MS1_INSN_INTERLEAVER, "interleaver", "intlvr", 32,
-    { 0, { { { (1<<MACH_BASE), 0 } } } }
-  },
-/* wfbinc #$rda,#$wr,#$fbincr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_WFBINC, "wfbinc", "wfbinc", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* mwfbinc $frsr2,#$rda,#$wr,#$fbincr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MWFBINC, "mwfbinc", "mwfbinc", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* wfbincr $frsr1,#$rda,#$wr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_WFBINCR, "wfbincr", "wfbincr", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* mwfbincr $frsr1,$frsr2,#$rda,#$wr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MWFBINCR, "mwfbincr", "mwfbincr", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* fbcbincs #$perm,#$a23,#$cr,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCBINCS, "fbcbincs", "fbcbincs", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* mfbcbincs $frsr1,#$perm,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBCBINCS, "mfbcbincs", "mfbcbincs", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* fbcbincrs $frsr1,#$perm,#$ball,#$colnum,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_FBCBINCRS, "fbcbincrs", "fbcbincrs", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* mfbcbincrs $frsr1,$frsr2,#$perm,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    MS1_INSN_MFBCBINCRS, "mfbcbincrs", "mfbcbincrs", 32,
-    { 0, { { { (1<<MACH_MS1_003)|(1<<MACH_MS2), 0 } } } }
-  },
-/* loop $frsr1,$loopsize */
-  {
-    MS1_INSN_LOOP, "loop", "loop", 32,
-    { 0|A(USES_FRSR1)|A(DELAY_SLOT), { { { (1<<MACH_MS2), 0 } } } }
-  },
-/* loopi #$imm16l,$loopsize */
-  {
-    MS1_INSN_LOOPI, "loopi", "loopi", 32,
-    { 0|A(DELAY_SLOT), { { { (1<<MACH_MS2), 0 } } } }
-  },
-/* dfbc #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_DFBC, "dfbc", "dfbc", 32,
-    { 0, { { { (1<<MACH_MS2), 0 } } } }
-  },
-/* dwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_DWFB, "dwfb", "dwfb", 32,
-    { 0, { { { (1<<MACH_MS2), 0 } } } }
-  },
-/* fbwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_FBWFB, "fbwfb", "fbwfb", 32,
-    { 0, { { { (1<<MACH_MS2), 0 } } } }
-  },
-/* dfbr #$cb1sel,#$cb2sel,$frsr2,#$length,#$rownum1,#$rownum2,#$rc2,#$ctxdisp */
-  {
-    MS1_INSN_DFBR, "dfbr", "dfbr", 32,
-    { 0|A(USES_FRSR2), { { { (1<<MACH_MS2), 0 } } } }
-  },
-};
-
-#undef OP
-#undef A
-
-/* Initialize anything needed to be done once, before any cpu_open call.  */
-
-static void
-init_tables (void)
-{
-}
-
-static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
-static void build_hw_table      (CGEN_CPU_TABLE *);
-static void build_ifield_table  (CGEN_CPU_TABLE *);
-static void build_operand_table (CGEN_CPU_TABLE *);
-static void build_insn_table    (CGEN_CPU_TABLE *);
-static void ms1_cgen_rebuild_tables (CGEN_CPU_TABLE *);
-
-/* Subroutine of ms1_cgen_cpu_open to look up a mach via its bfd name.  */
-
-static const CGEN_MACH *
-lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
-{
-  while (table->name)
-    {
-      if (strcmp (name, table->bfd_name) == 0)
-	return table;
-      ++table;
-    }
-  abort ();
-}
-
-/* Subroutine of ms1_cgen_cpu_open to build the hardware table.  */
-
-static void
-build_hw_table (CGEN_CPU_TABLE *cd)
-{
-  int i;
-  int machs = cd->machs;
-  const CGEN_HW_ENTRY *init = & ms1_cgen_hw_table[0];
-  /* MAX_HW is only an upper bound on the number of selected entries.
-     However each entry is indexed by it's enum so there can be holes in
-     the table.  */
-  const CGEN_HW_ENTRY **selected =
-    (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
-
-  cd->hw_table.init_entries = init;
-  cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
-  memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
-  /* ??? For now we just use machs to determine which ones we want.  */
-  for (i = 0; init[i].name != NULL; ++i)
-    if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
-	& machs)
-      selected[init[i].type] = &init[i];
-  cd->hw_table.entries = selected;
-  cd->hw_table.num_entries = MAX_HW;
-}
-
-/* Subroutine of ms1_cgen_cpu_open to build the hardware table.  */
-
-static void
-build_ifield_table (CGEN_CPU_TABLE *cd)
-{
-  cd->ifld_table = & ms1_cgen_ifld_table[0];
-}
-
-/* Subroutine of ms1_cgen_cpu_open to build the hardware table.  */
-
-static void
-build_operand_table (CGEN_CPU_TABLE *cd)
-{
-  int i;
-  int machs = cd->machs;
-  const CGEN_OPERAND *init = & ms1_cgen_operand_table[0];
-  /* MAX_OPERANDS is only an upper bound on the number of selected entries.
-     However each entry is indexed by it's enum so there can be holes in
-     the table.  */
-  const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
-
-  cd->operand_table.init_entries = init;
-  cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
-  memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
-  /* ??? For now we just use mach to determine which ones we want.  */
-  for (i = 0; init[i].name != NULL; ++i)
-    if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
-	& machs)
-      selected[init[i].type] = &init[i];
-  cd->operand_table.entries = selected;
-  cd->operand_table.num_entries = MAX_OPERANDS;
-}
-
-/* Subroutine of ms1_cgen_cpu_open to build the hardware table.
-   ??? This could leave out insns not supported by the specified mach/isa,
-   but that would cause errors like "foo only supported by bar" to become
-   "unknown insn", so for now we include all insns and require the app to
-   do the checking later.
-   ??? On the other hand, parsing of such insns may require their hardware or
-   operand elements to be in the table [which they mightn't be].  */
-
-static void
-build_insn_table (CGEN_CPU_TABLE *cd)
-{
-  int i;
-  const CGEN_IBASE *ib = & ms1_cgen_insn_table[0];
-  CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
-
-  memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
-  for (i = 0; i < MAX_INSNS; ++i)
-    insns[i].base = &ib[i];
-  cd->insn_table.init_entries = insns;
-  cd->insn_table.entry_size = sizeof (CGEN_IBASE);
-  cd->insn_table.num_init_entries = MAX_INSNS;
-}
-
-/* Subroutine of ms1_cgen_cpu_open to rebuild the tables.  */
-
-static void
-ms1_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
-{
-  int i;
-  CGEN_BITSET *isas = cd->isas;
-  unsigned int machs = cd->machs;
-
-  cd->int_insn_p = CGEN_INT_INSN_P;
-
-  /* Data derived from the isa spec.  */
-#define UNSET (CGEN_SIZE_UNKNOWN + 1)
-  cd->default_insn_bitsize = UNSET;
-  cd->base_insn_bitsize = UNSET;
-  cd->min_insn_bitsize = 65535; /* Some ridiculously big number.  */
-  cd->max_insn_bitsize = 0;
-  for (i = 0; i < MAX_ISAS; ++i)
-    if (cgen_bitset_contains (isas, i))
-      {
-	const CGEN_ISA *isa = & ms1_cgen_isa_table[i];
-
-	/* Default insn sizes of all selected isas must be
-	   equal or we set the result to 0, meaning "unknown".  */
-	if (cd->default_insn_bitsize == UNSET)
-	  cd->default_insn_bitsize = isa->default_insn_bitsize;
-	else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
-	  ; /* This is ok.  */
-	else
-	  cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
-
-	/* Base insn sizes of all selected isas must be equal
-	   or we set the result to 0, meaning "unknown".  */
-	if (cd->base_insn_bitsize == UNSET)
-	  cd->base_insn_bitsize = isa->base_insn_bitsize;
-	else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
-	  ; /* This is ok.  */
-	else
-	  cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
-
-	/* Set min,max insn sizes.  */
-	if (isa->min_insn_bitsize < cd->min_insn_bitsize)
-	  cd->min_insn_bitsize = isa->min_insn_bitsize;
-	if (isa->max_insn_bitsize > cd->max_insn_bitsize)
-	  cd->max_insn_bitsize = isa->max_insn_bitsize;
-      }
-
-  /* Data derived from the mach spec.  */
-  for (i = 0; i < MAX_MACHS; ++i)
-    if (((1 << i) & machs) != 0)
-      {
-	const CGEN_MACH *mach = & ms1_cgen_mach_table[i];
-
-	if (mach->insn_chunk_bitsize != 0)
-	{
-	  if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
-	    {
-	      fprintf (stderr, "ms1_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
-		       cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
-	      abort ();
-	    }
-
- 	  cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
-	}
-      }
-
-  /* Determine which hw elements are used by MACH.  */
-  build_hw_table (cd);
-
-  /* Build the ifield table.  */
-  build_ifield_table (cd);
-
-  /* Determine which operands are used by MACH/ISA.  */
-  build_operand_table (cd);
-
-  /* Build the instruction table.  */
-  build_insn_table (cd);
-}
-
-/* Initialize a cpu table and return a descriptor.
-   It's much like opening a file, and must be the first function called.
-   The arguments are a set of (type/value) pairs, terminated with
-   CGEN_CPU_OPEN_END.
-
-   Currently supported values:
-   CGEN_CPU_OPEN_ISAS:    bitmap of values in enum isa_attr
-   CGEN_CPU_OPEN_MACHS:   bitmap of values in enum mach_attr
-   CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
-   CGEN_CPU_OPEN_ENDIAN:  specify endian choice
-   CGEN_CPU_OPEN_END:     terminates arguments
-
-   ??? Simultaneous multiple isas might not make sense, but it's not (yet)
-   precluded.
-
-   ??? We only support ISO C stdargs here, not K&R.
-   Laziness, plus experiment to see if anything requires K&R - eventually
-   K&R will no longer be supported - e.g. GDB is currently trying this.  */
-
-CGEN_CPU_DESC
-ms1_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
-{
-  CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
-  static int init_p;
-  CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
-  unsigned int machs = 0; /* 0 = "unspecified" */
-  enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
-  va_list ap;
-
-  if (! init_p)
-    {
-      init_tables ();
-      init_p = 1;
-    }
-
-  memset (cd, 0, sizeof (*cd));
-
-  va_start (ap, arg_type);
-  while (arg_type != CGEN_CPU_OPEN_END)
-    {
-      switch (arg_type)
-	{
-	case CGEN_CPU_OPEN_ISAS :
-	  isas = va_arg (ap, CGEN_BITSET *);
-	  break;
-	case CGEN_CPU_OPEN_MACHS :
-	  machs = va_arg (ap, unsigned int);
-	  break;
-	case CGEN_CPU_OPEN_BFDMACH :
-	  {
-	    const char *name = va_arg (ap, const char *);
-	    const CGEN_MACH *mach =
-	      lookup_mach_via_bfd_name (ms1_cgen_mach_table, name);
-
-	    machs |= 1 << mach->num;
-	    break;
-	  }
-	case CGEN_CPU_OPEN_ENDIAN :
-	  endian = va_arg (ap, enum cgen_endian);
-	  break;
-	default :
-	  fprintf (stderr, "ms1_cgen_cpu_open: unsupported argument `%d'\n",
-		   arg_type);
-	  abort (); /* ??? return NULL? */
-	}
-      arg_type = va_arg (ap, enum cgen_cpu_open_arg);
-    }
-  va_end (ap);
-
-  /* Mach unspecified means "all".  */
-  if (machs == 0)
-    machs = (1 << MAX_MACHS) - 1;
-  /* Base mach is always selected.  */
-  machs |= 1;
-  if (endian == CGEN_ENDIAN_UNKNOWN)
-    {
-      /* ??? If target has only one, could have a default.  */
-      fprintf (stderr, "ms1_cgen_cpu_open: no endianness specified\n");
-      abort ();
-    }
-
-  cd->isas = cgen_bitset_copy (isas);
-  cd->machs = machs;
-  cd->endian = endian;
-  /* FIXME: for the sparc case we can determine insn-endianness statically.
-     The worry here is where both data and insn endian can be independently
-     chosen, in which case this function will need another argument.
-     Actually, will want to allow for more arguments in the future anyway.  */
-  cd->insn_endian = endian;
-
-  /* Table (re)builder.  */
-  cd->rebuild_tables = ms1_cgen_rebuild_tables;
-  ms1_cgen_rebuild_tables (cd);
-
-  /* Default to not allowing signed overflow.  */
-  cd->signed_overflow_ok_p = 0;
-  
-  return (CGEN_CPU_DESC) cd;
-}
-
-/* Cover fn to ms1_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
-   MACH_NAME is the bfd name of the mach.  */
-
-CGEN_CPU_DESC
-ms1_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
-{
-  return ms1_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
-			       CGEN_CPU_OPEN_ENDIAN, endian,
-			       CGEN_CPU_OPEN_END);
-}
-
-/* Close a cpu table.
-   ??? This can live in a machine independent file, but there's currently
-   no place to put this file (there's no libcgen).  libopcodes is the wrong
-   place as some simulator ports use this but they don't use libopcodes.  */
-
-void
-ms1_cgen_cpu_close (CGEN_CPU_DESC cd)
-{
-  unsigned int i;
-  const CGEN_INSN *insns;
-
-  if (cd->macro_insn_table.init_entries)
-    {
-      insns = cd->macro_insn_table.init_entries;
-      for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
-	if (CGEN_INSN_RX ((insns)))
-	  regfree (CGEN_INSN_RX (insns));
-    }
-
-  if (cd->insn_table.init_entries)
-    {
-      insns = cd->insn_table.init_entries;
-      for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
-	if (CGEN_INSN_RX (insns))
-	  regfree (CGEN_INSN_RX (insns));
-    }  
-
-  if (cd->macro_insn_table.init_entries)
-    free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
-
-  if (cd->insn_table.init_entries)
-    free ((CGEN_INSN *) cd->insn_table.init_entries);
-
-  if (cd->hw_table.entries)
-    free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
-
-  if (cd->operand_table.entries)
-    free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
-
-  free (cd);
-}
-

Deleted: branches/binutils/package/opcodes/ms1-desc.h
===================================================================
--- branches/binutils/package/opcodes/ms1-desc.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-desc.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,305 +0,0 @@
-/* CPU data header for ms1.
-
-THIS FILE IS MACHINE GENERATED WITH CGEN.
-
-Copyright 1996-2005 Free Software Foundation, Inc.
-
-This file is part of the GNU Binutils and/or GDB, the GNU debugger.
-
-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 2, 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; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#ifndef MS1_CPU_H
-#define MS1_CPU_H
-
-#include "opcode/cgen-bitset.h"
-
-#define CGEN_ARCH ms1
-
-/* Given symbol S, return ms1_cgen_<S>.  */
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define CGEN_SYM(s) ms1##_cgen_##s
-#else
-#define CGEN_SYM(s) ms1/**/_cgen_/**/s
-#endif
-
-
-/* Selected cpu families.  */
-#define HAVE_CPU_MS1BF
-#define HAVE_CPU_MS1_003BF
-#define HAVE_CPU_MS2BF
-
-#define CGEN_INSN_LSB0_P 1
-
-/* Minimum size of any insn (in bytes).  */
-#define CGEN_MIN_INSN_SIZE 4
-
-/* Maximum size of any insn (in bytes).  */
-#define CGEN_MAX_INSN_SIZE 4
-
-#define CGEN_INT_INSN_P 1
-
-/* Maximum number of syntax elements in an instruction.  */
-#define CGEN_ACTUAL_MAX_SYNTAX_ELEMENTS 40
-
-/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands.
-   e.g. In "b,a foo" the ",a" is an operand.  If mnemonics have operands
-   we can't hash on everything up to the space.  */
-#define CGEN_MNEMONIC_OPERANDS
-
-/* Maximum number of fields in an instruction.  */
-#define CGEN_ACTUAL_MAX_IFMT_OPERANDS 14
-
-/* Enums.  */
-
-/* Enum declaration for msys enums.  */
-typedef enum insn_msys {
-  MSYS_NO, MSYS_YES
-} INSN_MSYS;
-
-/* Enum declaration for opc enums.  */
-typedef enum insn_opc {
-  OPC_ADD = 0, OPC_ADDU = 1, OPC_SUB = 2, OPC_SUBU = 3
- , OPC_MUL = 4, OPC_AND = 8, OPC_OR = 9, OPC_XOR = 10
- , OPC_NAND = 11, OPC_NOR = 12, OPC_XNOR = 13, OPC_LDUI = 14
- , OPC_LSL = 16, OPC_LSR = 17, OPC_ASR = 18, OPC_BRLT = 24
- , OPC_BRLE = 25, OPC_BREQ = 26, OPC_JMP = 27, OPC_JAL = 28
- , OPC_BRNEQ = 29, OPC_DBNZ = 30, OPC_LOOP = 31, OPC_LDW = 32
- , OPC_STW = 33, OPC_EI = 48, OPC_DI = 49, OPC_SI = 50
- , OPC_RETI = 51, OPC_BREAK = 52, OPC_IFLUSH = 53
-} INSN_OPC;
-
-/* Enum declaration for msopc enums.  */
-typedef enum insn_msopc {
-  MSOPC_LDCTXT, MSOPC_LDFB, MSOPC_STFB, MSOPC_FBCB
- , MSOPC_MFBCB, MSOPC_FBCCI, MSOPC_FBRCI, MSOPC_FBCRI
- , MSOPC_FBRRI, MSOPC_MFBCCI, MSOPC_MFBRCI, MSOPC_MFBCRI
- , MSOPC_MFBRRI, MSOPC_FBCBDR, MSOPC_RCFBCB, MSOPC_MRCFBCB
- , MSOPC_CBCAST, MSOPC_DUPCBCAST, MSOPC_WFBI, MSOPC_WFB
- , MSOPC_RCRISC, MSOPC_FBCBINC, MSOPC_RCXMODE, MSOPC_INTLVR
- , MSOPC_WFBINC, MSOPC_MWFBINC, MSOPC_WFBINCR, MSOPC_MWFBINCR
- , MSOPC_FBCBINCS, MSOPC_MFBCBINCS, MSOPC_FBCBINCRS, MSOPC_MFBCBINCRS
-} INSN_MSOPC;
-
-/* Enum declaration for imm enums.  */
-typedef enum insn_imm {
-  IMM_NO, IMM_YES
-} INSN_IMM;
-
-/* Enum declaration for .  */
-typedef enum msys_syms {
-  H_NIL_DUP = 1, H_NIL_XX = 0
-} MSYS_SYMS;
-
-/* Attributes.  */
-
-/* Enum declaration for machine type selection.  */
-typedef enum mach_attr {
-  MACH_BASE, MACH_MS1, MACH_MS1_003, MACH_MS2
- , MACH_MAX
-} MACH_ATTR;
-
-/* Enum declaration for instruction set selection.  */
-typedef enum isa_attr {
-  ISA_MS1, ISA_MAX
-} ISA_ATTR;
-
-/* Number of architecture variants.  */
-#define MAX_ISAS  1
-#define MAX_MACHS ((int) MACH_MAX)
-
-/* Ifield support.  */
-
-/* Ifield attribute indices.  */
-
-/* Enum declaration for cgen_ifld attrs.  */
-typedef enum cgen_ifld_attr {
-  CGEN_IFLD_VIRTUAL, CGEN_IFLD_PCREL_ADDR, CGEN_IFLD_ABS_ADDR, CGEN_IFLD_RESERVED
- , CGEN_IFLD_SIGN_OPT, CGEN_IFLD_SIGNED, CGEN_IFLD_END_BOOLS, CGEN_IFLD_START_NBOOLS = 31
- , CGEN_IFLD_MACH, CGEN_IFLD_END_NBOOLS
-} CGEN_IFLD_ATTR;
-
-/* Number of non-boolean elements in cgen_ifld_attr.  */
-#define CGEN_IFLD_NBOOL_ATTRS (CGEN_IFLD_END_NBOOLS - CGEN_IFLD_START_NBOOLS - 1)
-
-/* cgen_ifld attribute accessor macros.  */
-#define CGEN_ATTR_CGEN_IFLD_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_IFLD_MACH-CGEN_IFLD_START_NBOOLS-1].nonbitset)
-#define CGEN_ATTR_CGEN_IFLD_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_VIRTUAL)) != 0)
-#define CGEN_ATTR_CGEN_IFLD_PCREL_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_PCREL_ADDR)) != 0)
-#define CGEN_ATTR_CGEN_IFLD_ABS_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_ABS_ADDR)) != 0)
-#define CGEN_ATTR_CGEN_IFLD_RESERVED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_RESERVED)) != 0)
-#define CGEN_ATTR_CGEN_IFLD_SIGN_OPT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_SIGN_OPT)) != 0)
-#define CGEN_ATTR_CGEN_IFLD_SIGNED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_IFLD_SIGNED)) != 0)
-
-/* Enum declaration for ms1 ifield types.  */
-typedef enum ifield_type {
-  MS1_F_NIL, MS1_F_ANYOF, MS1_F_MSYS, MS1_F_OPC
- , MS1_F_IMM, MS1_F_UU24, MS1_F_SR1, MS1_F_SR2
- , MS1_F_DR, MS1_F_DRRR, MS1_F_IMM16U, MS1_F_IMM16S
- , MS1_F_IMM16A, MS1_F_UU4A, MS1_F_UU4B, MS1_F_UU12
- , MS1_F_UU8, MS1_F_UU16, MS1_F_UU1, MS1_F_MSOPC
- , MS1_F_UU_26_25, MS1_F_MASK, MS1_F_BANKADDR, MS1_F_RDA
- , MS1_F_UU_2_25, MS1_F_RBBC, MS1_F_PERM, MS1_F_MODE
- , MS1_F_UU_1_24, MS1_F_WR, MS1_F_FBINCR, MS1_F_UU_2_23
- , MS1_F_XMODE, MS1_F_A23, MS1_F_MASK1, MS1_F_CR
- , MS1_F_TYPE, MS1_F_INCAMT, MS1_F_CBS, MS1_F_UU_1_19
- , MS1_F_BALL, MS1_F_COLNUM, MS1_F_BRC, MS1_F_INCR
- , MS1_F_FBDISP, MS1_F_UU_4_15, MS1_F_LENGTH, MS1_F_UU_1_15
- , MS1_F_RC, MS1_F_RCNUM, MS1_F_ROWNUM, MS1_F_CBX
- , MS1_F_ID, MS1_F_SIZE, MS1_F_ROWNUM1, MS1_F_UU_3_11
- , MS1_F_RC1, MS1_F_CCB, MS1_F_CBRB, MS1_F_CDB
- , MS1_F_ROWNUM2, MS1_F_CELL, MS1_F_UU_3_9, MS1_F_CONTNUM
- , MS1_F_UU_1_6, MS1_F_DUP, MS1_F_RC2, MS1_F_CTXDISP
- , MS1_F_IMM16L, MS1_F_LOOPO, MS1_F_CB1SEL, MS1_F_CB2SEL
- , MS1_F_CB1INCR, MS1_F_CB2INCR, MS1_F_RC3, MS1_F_MSYSFRSR2
- , MS1_F_BRC2, MS1_F_BALL2, MS1_F_MAX
-} IFIELD_TYPE;
-
-#define MAX_IFLD ((int) MS1_F_MAX)
-
-/* Hardware attribute indices.  */
-
-/* Enum declaration for cgen_hw attrs.  */
-typedef enum cgen_hw_attr {
-  CGEN_HW_VIRTUAL, CGEN_HW_CACHE_ADDR, CGEN_HW_PC, CGEN_HW_PROFILE
- , CGEN_HW_END_BOOLS, CGEN_HW_START_NBOOLS = 31, CGEN_HW_MACH, CGEN_HW_END_NBOOLS
-} CGEN_HW_ATTR;
-
-/* Number of non-boolean elements in cgen_hw_attr.  */
-#define CGEN_HW_NBOOL_ATTRS (CGEN_HW_END_NBOOLS - CGEN_HW_START_NBOOLS - 1)
-
-/* cgen_hw attribute accessor macros.  */
-#define CGEN_ATTR_CGEN_HW_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_HW_MACH-CGEN_HW_START_NBOOLS-1].nonbitset)
-#define CGEN_ATTR_CGEN_HW_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_VIRTUAL)) != 0)
-#define CGEN_ATTR_CGEN_HW_CACHE_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_CACHE_ADDR)) != 0)
-#define CGEN_ATTR_CGEN_HW_PC_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_PC)) != 0)
-#define CGEN_ATTR_CGEN_HW_PROFILE_VALUE(attrs) (((attrs)->bool & (1 << CGEN_HW_PROFILE)) != 0)
-
-/* Enum declaration for ms1 hardware types.  */
-typedef enum cgen_hw_type {
-  HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR
- , HW_H_IADDR, HW_H_SPR, HW_H_PC, HW_MAX
-} CGEN_HW_TYPE;
-
-#define MAX_HW ((int) HW_MAX)
-
-/* Operand attribute indices.  */
-
-/* Enum declaration for cgen_operand attrs.  */
-typedef enum cgen_operand_attr {
-  CGEN_OPERAND_VIRTUAL, CGEN_OPERAND_PCREL_ADDR, CGEN_OPERAND_ABS_ADDR, CGEN_OPERAND_SIGN_OPT
- , CGEN_OPERAND_SIGNED, CGEN_OPERAND_NEGATIVE, CGEN_OPERAND_RELAX, CGEN_OPERAND_SEM_ONLY
- , CGEN_OPERAND_END_BOOLS, CGEN_OPERAND_START_NBOOLS = 31, CGEN_OPERAND_MACH, CGEN_OPERAND_END_NBOOLS
-} CGEN_OPERAND_ATTR;
-
-/* Number of non-boolean elements in cgen_operand_attr.  */
-#define CGEN_OPERAND_NBOOL_ATTRS (CGEN_OPERAND_END_NBOOLS - CGEN_OPERAND_START_NBOOLS - 1)
-
-/* cgen_operand attribute accessor macros.  */
-#define CGEN_ATTR_CGEN_OPERAND_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_OPERAND_MACH-CGEN_OPERAND_START_NBOOLS-1].nonbitset)
-#define CGEN_ATTR_CGEN_OPERAND_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_VIRTUAL)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_PCREL_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_PCREL_ADDR)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_ABS_ADDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_ABS_ADDR)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_SIGN_OPT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_SIGN_OPT)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_SIGNED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_SIGNED)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_NEGATIVE_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_NEGATIVE)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_RELAX_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_RELAX)) != 0)
-#define CGEN_ATTR_CGEN_OPERAND_SEM_ONLY_VALUE(attrs) (((attrs)->bool & (1 << CGEN_OPERAND_SEM_ONLY)) != 0)
-
-/* Enum declaration for ms1 operand types.  */
-typedef enum cgen_operand_type {
-  MS1_OPERAND_PC, MS1_OPERAND_FRSR1, MS1_OPERAND_FRSR2, MS1_OPERAND_FRDR
- , MS1_OPERAND_FRDRRR, MS1_OPERAND_IMM16, MS1_OPERAND_IMM16Z, MS1_OPERAND_IMM16O
- , MS1_OPERAND_RC, MS1_OPERAND_RCNUM, MS1_OPERAND_CONTNUM, MS1_OPERAND_RBBC
- , MS1_OPERAND_COLNUM, MS1_OPERAND_ROWNUM, MS1_OPERAND_ROWNUM1, MS1_OPERAND_ROWNUM2
- , MS1_OPERAND_RC1, MS1_OPERAND_RC2, MS1_OPERAND_CBRB, MS1_OPERAND_CELL
- , MS1_OPERAND_DUP, MS1_OPERAND_CTXDISP, MS1_OPERAND_FBDISP, MS1_OPERAND_TYPE
- , MS1_OPERAND_MASK, MS1_OPERAND_BANKADDR, MS1_OPERAND_INCAMT, MS1_OPERAND_XMODE
- , MS1_OPERAND_MASK1, MS1_OPERAND_BALL, MS1_OPERAND_BRC, MS1_OPERAND_RDA
- , MS1_OPERAND_WR, MS1_OPERAND_BALL2, MS1_OPERAND_BRC2, MS1_OPERAND_PERM
- , MS1_OPERAND_A23, MS1_OPERAND_CR, MS1_OPERAND_CBS, MS1_OPERAND_INCR
- , MS1_OPERAND_LENGTH, MS1_OPERAND_CBX, MS1_OPERAND_CCB, MS1_OPERAND_CDB
- , MS1_OPERAND_MODE, MS1_OPERAND_ID, MS1_OPERAND_SIZE, MS1_OPERAND_FBINCR
- , MS1_OPERAND_LOOPSIZE, MS1_OPERAND_IMM16L, MS1_OPERAND_RC3, MS1_OPERAND_CB1SEL
- , MS1_OPERAND_CB2SEL, MS1_OPERAND_CB1INCR, MS1_OPERAND_CB2INCR, MS1_OPERAND_MAX
-} CGEN_OPERAND_TYPE;
-
-/* Number of operands types.  */
-#define MAX_OPERANDS 55
-
-/* Maximum number of operands referenced by any insn.  */
-#define MAX_OPERAND_INSTANCES 8
-
-/* Insn attribute indices.  */
-
-/* Enum declaration for cgen_insn attrs.  */
-typedef enum cgen_insn_attr {
-  CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI
- , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAXED
- , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_LOAD_DELAY, CGEN_INSN_MEMORY_ACCESS
- , CGEN_INSN_AL_INSN, CGEN_INSN_IO_INSN, CGEN_INSN_BR_INSN, CGEN_INSN_JAL_HAZARD
- , CGEN_INSN_USES_FRDR, CGEN_INSN_USES_FRDRRR, CGEN_INSN_USES_FRSR1, CGEN_INSN_USES_FRSR2
- , CGEN_INSN_SKIPA, CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31, CGEN_INSN_MACH
- , CGEN_INSN_END_NBOOLS
-} CGEN_INSN_ATTR;
-
-/* Number of non-boolean elements in cgen_insn_attr.  */
-#define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1)
-
-/* cgen_insn attribute accessor macros.  */
-#define CGEN_ATTR_CGEN_INSN_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_MACH-CGEN_INSN_START_NBOOLS-1].nonbitset)
-#define CGEN_ATTR_CGEN_INSN_ALIAS_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_ALIAS)) != 0)
-#define CGEN_ATTR_CGEN_INSN_VIRTUAL_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_VIRTUAL)) != 0)
-#define CGEN_ATTR_CGEN_INSN_UNCOND_CTI_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_UNCOND_CTI)) != 0)
-#define CGEN_ATTR_CGEN_INSN_COND_CTI_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_COND_CTI)) != 0)
-#define CGEN_ATTR_CGEN_INSN_SKIP_CTI_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_SKIP_CTI)) != 0)
-#define CGEN_ATTR_CGEN_INSN_DELAY_SLOT_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_DELAY_SLOT)) != 0)
-#define CGEN_ATTR_CGEN_INSN_RELAXABLE_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_RELAXABLE)) != 0)
-#define CGEN_ATTR_CGEN_INSN_RELAXED_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_RELAXED)) != 0)
-#define CGEN_ATTR_CGEN_INSN_NO_DIS_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_NO_DIS)) != 0)
-#define CGEN_ATTR_CGEN_INSN_PBB_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_PBB)) != 0)
-#define CGEN_ATTR_CGEN_INSN_LOAD_DELAY_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_LOAD_DELAY)) != 0)
-#define CGEN_ATTR_CGEN_INSN_MEMORY_ACCESS_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_MEMORY_ACCESS)) != 0)
-#define CGEN_ATTR_CGEN_INSN_AL_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_AL_INSN)) != 0)
-#define CGEN_ATTR_CGEN_INSN_IO_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_IO_INSN)) != 0)
-#define CGEN_ATTR_CGEN_INSN_BR_INSN_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_BR_INSN)) != 0)
-#define CGEN_ATTR_CGEN_INSN_JAL_HAZARD_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_JAL_HAZARD)) != 0)
-#define CGEN_ATTR_CGEN_INSN_USES_FRDR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRDR)) != 0)
-#define CGEN_ATTR_CGEN_INSN_USES_FRDRRR_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRDRRR)) != 0)
-#define CGEN_ATTR_CGEN_INSN_USES_FRSR1_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRSR1)) != 0)
-#define CGEN_ATTR_CGEN_INSN_USES_FRSR2_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_USES_FRSR2)) != 0)
-#define CGEN_ATTR_CGEN_INSN_SKIPA_VALUE(attrs) (((attrs)->bool & (1 << CGEN_INSN_SKIPA)) != 0)
-
-/* cgen.h uses things we just defined.  */
-#include "opcode/cgen.h"
-
-extern const struct cgen_ifld ms1_cgen_ifld_table[];
-
-/* Attributes.  */
-extern const CGEN_ATTR_TABLE ms1_cgen_hardware_attr_table[];
-extern const CGEN_ATTR_TABLE ms1_cgen_ifield_attr_table[];
-extern const CGEN_ATTR_TABLE ms1_cgen_operand_attr_table[];
-extern const CGEN_ATTR_TABLE ms1_cgen_insn_attr_table[];
-
-/* Hardware decls.  */
-
-extern CGEN_KEYWORD ms1_cgen_opval_h_spr;
-
-extern const CGEN_HW_ENTRY ms1_cgen_hw_table[];
-
-
-
-#endif /* MS1_CPU_H */

Deleted: branches/binutils/package/opcodes/ms1-dis.c
===================================================================
--- branches/binutils/package/opcodes/ms1-dis.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-dis.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,719 +0,0 @@
-/* Disassembler interface for targets using CGEN. -*- C -*-
-   CGEN: Cpu tools GENerator
-
-   THIS FILE IS MACHINE GENERATED WITH CGEN.
-   - the resultant file is machine generated, cgen-dis.in isn't
-
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
-   Free Software Foundation, Inc.
-
-   This file is part of the GNU Binutils and GDB, the GNU debugger.
-
-   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 2, 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; if not, write to the Free Software Foundation, Inc.,
-   51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
-
-/* ??? Eventually more and more of this stuff can go to cpu-independent files.
-   Keep that in mind.  */
-
-#include "sysdep.h"
-#include <stdio.h>
-#include "ansidecl.h"
-#include "dis-asm.h"
-#include "bfd.h"
-#include "symcat.h"
-#include "libiberty.h"
-#include "ms1-desc.h"
-#include "ms1-opc.h"
-#include "opintl.h"
-
-/* Default text to print if an instruction isn't recognized.  */
-#define UNKNOWN_INSN_MSG _("*unknown*")
-
-static void print_normal
-  (CGEN_CPU_DESC, void *, long, unsigned int, bfd_vma, int);
-static void print_address
-  (CGEN_CPU_DESC, void *, bfd_vma, unsigned int, bfd_vma, int) ATTRIBUTE_UNUSED;
-static void print_keyword
-  (CGEN_CPU_DESC, void *, CGEN_KEYWORD *, long, unsigned int) ATTRIBUTE_UNUSED;
-static void print_insn_normal
-  (CGEN_CPU_DESC, void *, const CGEN_INSN *, CGEN_FIELDS *, bfd_vma, int);
-static int print_insn
-  (CGEN_CPU_DESC, bfd_vma,  disassemble_info *, bfd_byte *, unsigned);
-static int default_print_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *) ATTRIBUTE_UNUSED;
-static int read_insn
-  (CGEN_CPU_DESC, bfd_vma, disassemble_info *, bfd_byte *, int, CGEN_EXTRACT_INFO *,
-   unsigned long *);
-
-/* -- disassembler routines inserted here.  */
-
-/* -- dis.c */
-static void print_dollarhex (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
-static void print_pcrel (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
-
-static void
-print_dollarhex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		 void * dis_info,
-		 long value,
-		 unsigned int attrs ATTRIBUTE_UNUSED,
-		 bfd_vma pc ATTRIBUTE_UNUSED,
-		 int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, "$%lx", value);
-
-  if (0)
-    print_normal (cd, dis_info, value, attrs, pc, length);
-}
-
-static void
-print_pcrel (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	     void * dis_info,
-	     long value,
-	     unsigned int attrs ATTRIBUTE_UNUSED,
-	     bfd_vma pc ATTRIBUTE_UNUSED,
-	     int length ATTRIBUTE_UNUSED)
-{
-  print_address (cd, dis_info, value + pc, attrs, pc, length);
-}
-
-/* -- */
-
-void ms1_cgen_print_operand
-  (CGEN_CPU_DESC, int, PTR, CGEN_FIELDS *, void const *, bfd_vma, int);
-
-/* Main entry point for printing operands.
-   XINFO is a `void *' and not a `disassemble_info *' to not put a requirement
-   of dis-asm.h on cgen.h.
-
-   This function is basically just a big switch statement.  Earlier versions
-   used tables to look up the function to use, but
-   - if the table contains both assembler and disassembler functions then
-     the disassembler contains much of the assembler and vice-versa,
-   - there's a lot of inlining possibilities as things grow,
-   - using a switch statement avoids the function call overhead.
-
-   This function could be moved into `print_insn_normal', but keeping it
-   separate makes clear the interface between `print_insn_normal' and each of
-   the handlers.  */
-
-void
-ms1_cgen_print_operand (CGEN_CPU_DESC cd,
-			   int opindex,
-			   void * xinfo,
-			   CGEN_FIELDS *fields,
-			   void const *attrs ATTRIBUTE_UNUSED,
-			   bfd_vma pc,
-			   int length)
-{
-  disassemble_info *info = (disassemble_info *) xinfo;
-
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      print_dollarhex (cd, info, fields->f_a23, 0, pc, length);
-      break;
-    case MS1_OPERAND_BALL :
-      print_dollarhex (cd, info, fields->f_ball, 0, pc, length);
-      break;
-    case MS1_OPERAND_BALL2 :
-      print_dollarhex (cd, info, fields->f_ball2, 0, pc, length);
-      break;
-    case MS1_OPERAND_BANKADDR :
-      print_dollarhex (cd, info, fields->f_bankaddr, 0, pc, length);
-      break;
-    case MS1_OPERAND_BRC :
-      print_dollarhex (cd, info, fields->f_brc, 0, pc, length);
-      break;
-    case MS1_OPERAND_BRC2 :
-      print_dollarhex (cd, info, fields->f_brc2, 0, pc, length);
-      break;
-    case MS1_OPERAND_CB1INCR :
-      print_dollarhex (cd, info, fields->f_cb1incr, 0|(1<<CGEN_OPERAND_SIGNED), pc, length);
-      break;
-    case MS1_OPERAND_CB1SEL :
-      print_dollarhex (cd, info, fields->f_cb1sel, 0, pc, length);
-      break;
-    case MS1_OPERAND_CB2INCR :
-      print_dollarhex (cd, info, fields->f_cb2incr, 0|(1<<CGEN_OPERAND_SIGNED), pc, length);
-      break;
-    case MS1_OPERAND_CB2SEL :
-      print_dollarhex (cd, info, fields->f_cb2sel, 0, pc, length);
-      break;
-    case MS1_OPERAND_CBRB :
-      print_dollarhex (cd, info, fields->f_cbrb, 0, pc, length);
-      break;
-    case MS1_OPERAND_CBS :
-      print_dollarhex (cd, info, fields->f_cbs, 0, pc, length);
-      break;
-    case MS1_OPERAND_CBX :
-      print_dollarhex (cd, info, fields->f_cbx, 0, pc, length);
-      break;
-    case MS1_OPERAND_CCB :
-      print_dollarhex (cd, info, fields->f_ccb, 0, pc, length);
-      break;
-    case MS1_OPERAND_CDB :
-      print_dollarhex (cd, info, fields->f_cdb, 0, pc, length);
-      break;
-    case MS1_OPERAND_CELL :
-      print_dollarhex (cd, info, fields->f_cell, 0, pc, length);
-      break;
-    case MS1_OPERAND_COLNUM :
-      print_dollarhex (cd, info, fields->f_colnum, 0, pc, length);
-      break;
-    case MS1_OPERAND_CONTNUM :
-      print_dollarhex (cd, info, fields->f_contnum, 0, pc, length);
-      break;
-    case MS1_OPERAND_CR :
-      print_dollarhex (cd, info, fields->f_cr, 0, pc, length);
-      break;
-    case MS1_OPERAND_CTXDISP :
-      print_dollarhex (cd, info, fields->f_ctxdisp, 0, pc, length);
-      break;
-    case MS1_OPERAND_DUP :
-      print_dollarhex (cd, info, fields->f_dup, 0, pc, length);
-      break;
-    case MS1_OPERAND_FBDISP :
-      print_dollarhex (cd, info, fields->f_fbdisp, 0, pc, length);
-      break;
-    case MS1_OPERAND_FBINCR :
-      print_dollarhex (cd, info, fields->f_fbincr, 0, pc, length);
-      break;
-    case MS1_OPERAND_FRDR :
-      print_keyword (cd, info, & ms1_cgen_opval_h_spr, fields->f_dr, 0|(1<<CGEN_OPERAND_ABS_ADDR));
-      break;
-    case MS1_OPERAND_FRDRRR :
-      print_keyword (cd, info, & ms1_cgen_opval_h_spr, fields->f_drrr, 0|(1<<CGEN_OPERAND_ABS_ADDR));
-      break;
-    case MS1_OPERAND_FRSR1 :
-      print_keyword (cd, info, & ms1_cgen_opval_h_spr, fields->f_sr1, 0|(1<<CGEN_OPERAND_ABS_ADDR));
-      break;
-    case MS1_OPERAND_FRSR2 :
-      print_keyword (cd, info, & ms1_cgen_opval_h_spr, fields->f_sr2, 0|(1<<CGEN_OPERAND_ABS_ADDR));
-      break;
-    case MS1_OPERAND_ID :
-      print_dollarhex (cd, info, fields->f_id, 0, pc, length);
-      break;
-    case MS1_OPERAND_IMM16 :
-      print_dollarhex (cd, info, fields->f_imm16s, 0|(1<<CGEN_OPERAND_SIGNED), pc, length);
-      break;
-    case MS1_OPERAND_IMM16L :
-      print_dollarhex (cd, info, fields->f_imm16l, 0, pc, length);
-      break;
-    case MS1_OPERAND_IMM16O :
-      print_pcrel (cd, info, fields->f_imm16s, 0|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
-      break;
-    case MS1_OPERAND_IMM16Z :
-      print_dollarhex (cd, info, fields->f_imm16u, 0, pc, length);
-      break;
-    case MS1_OPERAND_INCAMT :
-      print_dollarhex (cd, info, fields->f_incamt, 0, pc, length);
-      break;
-    case MS1_OPERAND_INCR :
-      print_dollarhex (cd, info, fields->f_incr, 0, pc, length);
-      break;
-    case MS1_OPERAND_LENGTH :
-      print_dollarhex (cd, info, fields->f_length, 0, pc, length);
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      print_pcrel (cd, info, fields->f_loopo, 0|(1<<CGEN_OPERAND_PCREL_ADDR), pc, length);
-      break;
-    case MS1_OPERAND_MASK :
-      print_dollarhex (cd, info, fields->f_mask, 0, pc, length);
-      break;
-    case MS1_OPERAND_MASK1 :
-      print_dollarhex (cd, info, fields->f_mask1, 0, pc, length);
-      break;
-    case MS1_OPERAND_MODE :
-      print_dollarhex (cd, info, fields->f_mode, 0, pc, length);
-      break;
-    case MS1_OPERAND_PERM :
-      print_dollarhex (cd, info, fields->f_perm, 0, pc, length);
-      break;
-    case MS1_OPERAND_RBBC :
-      print_dollarhex (cd, info, fields->f_rbbc, 0, pc, length);
-      break;
-    case MS1_OPERAND_RC :
-      print_dollarhex (cd, info, fields->f_rc, 0, pc, length);
-      break;
-    case MS1_OPERAND_RC1 :
-      print_dollarhex (cd, info, fields->f_rc1, 0, pc, length);
-      break;
-    case MS1_OPERAND_RC2 :
-      print_dollarhex (cd, info, fields->f_rc2, 0, pc, length);
-      break;
-    case MS1_OPERAND_RC3 :
-      print_dollarhex (cd, info, fields->f_rc3, 0, pc, length);
-      break;
-    case MS1_OPERAND_RCNUM :
-      print_dollarhex (cd, info, fields->f_rcnum, 0, pc, length);
-      break;
-    case MS1_OPERAND_RDA :
-      print_dollarhex (cd, info, fields->f_rda, 0, pc, length);
-      break;
-    case MS1_OPERAND_ROWNUM :
-      print_dollarhex (cd, info, fields->f_rownum, 0, pc, length);
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      print_dollarhex (cd, info, fields->f_rownum1, 0, pc, length);
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      print_dollarhex (cd, info, fields->f_rownum2, 0, pc, length);
-      break;
-    case MS1_OPERAND_SIZE :
-      print_dollarhex (cd, info, fields->f_size, 0, pc, length);
-      break;
-    case MS1_OPERAND_TYPE :
-      print_dollarhex (cd, info, fields->f_type, 0, pc, length);
-      break;
-    case MS1_OPERAND_WR :
-      print_dollarhex (cd, info, fields->f_wr, 0, pc, length);
-      break;
-    case MS1_OPERAND_XMODE :
-      print_dollarhex (cd, info, fields->f_xmode, 0, pc, length);
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while printing insn.\n"),
-	       opindex);
-    abort ();
-  }
-}
-
-cgen_print_fn * const ms1_cgen_print_handlers[] = 
-{
-  print_insn_normal,
-};
-
-
-void
-ms1_cgen_init_dis (CGEN_CPU_DESC cd)
-{
-  ms1_cgen_init_opcode_table (cd);
-  ms1_cgen_init_ibld_table (cd);
-  cd->print_handlers = & ms1_cgen_print_handlers[0];
-  cd->print_operand = ms1_cgen_print_operand;
-}
-
-
-/* Default print handler.  */
-
-static void
-print_normal (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	      void *dis_info,
-	      long value,
-	      unsigned int attrs,
-	      bfd_vma pc ATTRIBUTE_UNUSED,
-	      int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-#ifdef CGEN_PRINT_NORMAL
-  CGEN_PRINT_NORMAL (cd, info, value, attrs, pc, length);
-#endif
-
-  /* Print the operand as directed by the attributes.  */
-  if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY))
-    ; /* nothing to do */
-  else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED))
-    (*info->fprintf_func) (info->stream, "%ld", value);
-  else
-    (*info->fprintf_func) (info->stream, "0x%lx", value);
-}
-
-/* Default address handler.  */
-
-static void
-print_address (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       bfd_vma value,
-	       unsigned int attrs,
-	       bfd_vma pc ATTRIBUTE_UNUSED,
-	       int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-#ifdef CGEN_PRINT_ADDRESS
-  CGEN_PRINT_ADDRESS (cd, info, value, attrs, pc, length);
-#endif
-
-  /* Print the operand as directed by the attributes.  */
-  if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SEM_ONLY))
-    ; /* Nothing to do.  */
-  else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_PCREL_ADDR))
-    (*info->print_address_func) (value, info);
-  else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_ABS_ADDR))
-    (*info->print_address_func) (value, info);
-  else if (CGEN_BOOL_ATTR (attrs, CGEN_OPERAND_SIGNED))
-    (*info->fprintf_func) (info->stream, "%ld", (long) value);
-  else
-    (*info->fprintf_func) (info->stream, "0x%lx", (long) value);
-}
-
-/* Keyword print handler.  */
-
-static void
-print_keyword (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	       void *dis_info,
-	       CGEN_KEYWORD *keyword_table,
-	       long value,
-	       unsigned int attrs ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-  const CGEN_KEYWORD_ENTRY *ke;
-
-  ke = cgen_keyword_lookup_value (keyword_table, value);
-  if (ke != NULL)
-    (*info->fprintf_func) (info->stream, "%s", ke->name);
-  else
-    (*info->fprintf_func) (info->stream, "???");
-}
-
-/* Default insn printer.
-
-   DIS_INFO is defined as `void *' so the disassembler needn't know anything
-   about disassemble_info.  */
-
-static void
-print_insn_normal (CGEN_CPU_DESC cd,
-		   void *dis_info,
-		   const CGEN_INSN *insn,
-		   CGEN_FIELDS *fields,
-		   bfd_vma pc,
-		   int length)
-{
-  const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
-  disassemble_info *info = (disassemble_info *) dis_info;
-  const CGEN_SYNTAX_CHAR_TYPE *syn;
-
-  CGEN_INIT_PRINT (cd);
-
-  for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
-    {
-      if (CGEN_SYNTAX_MNEMONIC_P (*syn))
-	{
-	  (*info->fprintf_func) (info->stream, "%s", CGEN_INSN_MNEMONIC (insn));
-	  continue;
-	}
-      if (CGEN_SYNTAX_CHAR_P (*syn))
-	{
-	  (*info->fprintf_func) (info->stream, "%c", CGEN_SYNTAX_CHAR (*syn));
-	  continue;
-	}
-
-      /* We have an operand.  */
-      ms1_cgen_print_operand (cd, CGEN_SYNTAX_FIELD (*syn), info,
-				 fields, CGEN_INSN_ATTRS (insn), pc, length);
-    }
-}
-
-/* Subroutine of print_insn. Reads an insn into the given buffers and updates
-   the extract info.
-   Returns 0 if all is well, non-zero otherwise.  */
-
-static int
-read_insn (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   bfd_vma pc,
-	   disassemble_info *info,
-	   bfd_byte *buf,
-	   int buflen,
-	   CGEN_EXTRACT_INFO *ex_info,
-	   unsigned long *insn_value)
-{
-  int status = (*info->read_memory_func) (pc, buf, buflen, info);
-
-  if (status != 0)
-    {
-      (*info->memory_error_func) (status, pc, info);
-      return -1;
-    }
-
-  ex_info->dis_info = info;
-  ex_info->valid = (1 << buflen) - 1;
-  ex_info->insn_bytes = buf;
-
-  *insn_value = bfd_get_bits (buf, buflen * 8, info->endian == BFD_ENDIAN_BIG);
-  return 0;
-}
-
-/* Utility to print an insn.
-   BUF is the base part of the insn, target byte order, BUFLEN bytes long.
-   The result is the size of the insn in bytes or zero for an unknown insn
-   or -1 if an error occurs fetching data (memory_error_func will have
-   been called).  */
-
-static int
-print_insn (CGEN_CPU_DESC cd,
-	    bfd_vma pc,
-	    disassemble_info *info,
-	    bfd_byte *buf,
-	    unsigned int buflen)
-{
-  CGEN_INSN_INT insn_value;
-  const CGEN_INSN_LIST *insn_list;
-  CGEN_EXTRACT_INFO ex_info;
-  int basesize;
-
-  /* Extract base part of instruction, just in case CGEN_DIS_* uses it. */
-  basesize = cd->base_insn_bitsize < buflen * 8 ?
-                                     cd->base_insn_bitsize : buflen * 8;
-  insn_value = cgen_get_insn_value (cd, buf, basesize);
-
-
-  /* Fill in ex_info fields like read_insn would.  Don't actually call
-     read_insn, since the incoming buffer is already read (and possibly
-     modified a la m32r).  */
-  ex_info.valid = (1 << buflen) - 1;
-  ex_info.dis_info = info;
-  ex_info.insn_bytes = buf;
-
-  /* The instructions are stored in hash lists.
-     Pick the first one and keep trying until we find the right one.  */
-
-  insn_list = CGEN_DIS_LOOKUP_INSN (cd, (char *) buf, insn_value);
-  while (insn_list != NULL)
-    {
-      const CGEN_INSN *insn = insn_list->insn;
-      CGEN_FIELDS fields;
-      int length;
-      unsigned long insn_value_cropped;
-
-#ifdef CGEN_VALIDATE_INSN_SUPPORTED 
-      /* Not needed as insn shouldn't be in hash lists if not supported.  */
-      /* Supported by this cpu?  */
-      if (! ms1_cgen_insn_supported (cd, insn))
-        {
-          insn_list = CGEN_DIS_NEXT_INSN (insn_list);
-	  continue;
-        }
-#endif
-
-      /* Basic bit mask must be correct.  */
-      /* ??? May wish to allow target to defer this check until the extract
-	 handler.  */
-
-      /* Base size may exceed this instruction's size.  Extract the
-         relevant part from the buffer. */
-      if ((unsigned) (CGEN_INSN_BITSIZE (insn) / 8) < buflen &&
-	  (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
-	insn_value_cropped = bfd_get_bits (buf, CGEN_INSN_BITSIZE (insn), 
-					   info->endian == BFD_ENDIAN_BIG);
-      else
-	insn_value_cropped = insn_value;
-
-      if ((insn_value_cropped & CGEN_INSN_BASE_MASK (insn))
-	  == CGEN_INSN_BASE_VALUE (insn))
-	{
-	  /* Printing is handled in two passes.  The first pass parses the
-	     machine insn and extracts the fields.  The second pass prints
-	     them.  */
-
-	  /* Make sure the entire insn is loaded into insn_value, if it
-	     can fit.  */
-	  if (((unsigned) CGEN_INSN_BITSIZE (insn) > cd->base_insn_bitsize) &&
-	      (unsigned) (CGEN_INSN_BITSIZE (insn) / 8) <= sizeof (unsigned long))
-	    {
-	      unsigned long full_insn_value;
-	      int rc = read_insn (cd, pc, info, buf,
-				  CGEN_INSN_BITSIZE (insn) / 8,
-				  & ex_info, & full_insn_value);
-	      if (rc != 0)
-		return rc;
-	      length = CGEN_EXTRACT_FN (cd, insn)
-		(cd, insn, &ex_info, full_insn_value, &fields, pc);
-	    }
-	  else
-	    length = CGEN_EXTRACT_FN (cd, insn)
-	      (cd, insn, &ex_info, insn_value_cropped, &fields, pc);
-
-	  /* Length < 0 -> error.  */
-	  if (length < 0)
-	    return length;
-	  if (length > 0)
-	    {
-	      CGEN_PRINT_FN (cd, insn) (cd, info, insn, &fields, pc, length);
-	      /* Length is in bits, result is in bytes.  */
-	      return length / 8;
-	    }
-	}
-
-      insn_list = CGEN_DIS_NEXT_INSN (insn_list);
-    }
-
-  return 0;
-}
-
-/* Default value for CGEN_PRINT_INSN.
-   The result is the size of the insn in bytes or zero for an unknown insn
-   or -1 if an error occured fetching bytes.  */
-
-#ifndef CGEN_PRINT_INSN
-#define CGEN_PRINT_INSN default_print_insn
-#endif
-
-static int
-default_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
-{
-  bfd_byte buf[CGEN_MAX_INSN_SIZE];
-  int buflen;
-  int status;
-
-  /* Attempt to read the base part of the insn.  */
-  buflen = cd->base_insn_bitsize / 8;
-  status = (*info->read_memory_func) (pc, buf, buflen, info);
-
-  /* Try again with the minimum part, if min < base.  */
-  if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize))
-    {
-      buflen = cd->min_insn_bitsize / 8;
-      status = (*info->read_memory_func) (pc, buf, buflen, info);
-    }
-
-  if (status != 0)
-    {
-      (*info->memory_error_func) (status, pc, info);
-      return -1;
-    }
-
-  return print_insn (cd, pc, info, buf, buflen);
-}
-
-/* Main entry point.
-   Print one instruction from PC on INFO->STREAM.
-   Return the size of the instruction (in bytes).  */
-
-typedef struct cpu_desc_list
-{
-  struct cpu_desc_list *next;
-  CGEN_BITSET *isa;
-  int mach;
-  int endian;
-  CGEN_CPU_DESC cd;
-} cpu_desc_list;
-
-int
-print_insn_ms1 (bfd_vma pc, disassemble_info *info)
-{
-  static cpu_desc_list *cd_list = 0;
-  cpu_desc_list *cl = 0;
-  static CGEN_CPU_DESC cd = 0;
-  static CGEN_BITSET *prev_isa;
-  static int prev_mach;
-  static int prev_endian;
-  int length;
-  CGEN_BITSET *isa;
-  int mach;
-  int endian = (info->endian == BFD_ENDIAN_BIG
-		? CGEN_ENDIAN_BIG
-		: CGEN_ENDIAN_LITTLE);
-  enum bfd_architecture arch;
-
-  /* ??? gdb will set mach but leave the architecture as "unknown" */
-#ifndef CGEN_BFD_ARCH
-#define CGEN_BFD_ARCH bfd_arch_ms1
-#endif
-  arch = info->arch;
-  if (arch == bfd_arch_unknown)
-    arch = CGEN_BFD_ARCH;
-   
-  /* There's no standard way to compute the machine or isa number
-     so we leave it to the target.  */
-#ifdef CGEN_COMPUTE_MACH
-  mach = CGEN_COMPUTE_MACH (info);
-#else
-  mach = info->mach;
-#endif
-
-#ifdef CGEN_COMPUTE_ISA
-  {
-    static CGEN_BITSET *permanent_isa;
-
-    if (!permanent_isa)
-      permanent_isa = cgen_bitset_create (MAX_ISAS);
-    isa = permanent_isa;
-    cgen_bitset_clear (isa);
-    cgen_bitset_add (isa, CGEN_COMPUTE_ISA (info));
-  }
-#else
-  isa = info->insn_sets;
-#endif
-
-  /* If we've switched cpu's, try to find a handle we've used before */
-  if (cd
-      && (cgen_bitset_compare (isa, prev_isa) != 0
-	  || mach != prev_mach
-	  || endian != prev_endian))
-    {
-      cd = 0;
-      for (cl = cd_list; cl; cl = cl->next)
-	{
-	  if (cgen_bitset_compare (cl->isa, isa) == 0 &&
-	      cl->mach == mach &&
-	      cl->endian == endian)
-	    {
-	      cd = cl->cd;
- 	      prev_isa = cd->isas;
-	      break;
-	    }
-	}
-    } 
-
-  /* If we haven't initialized yet, initialize the opcode table.  */
-  if (! cd)
-    {
-      const bfd_arch_info_type *arch_type = bfd_lookup_arch (arch, mach);
-      const char *mach_name;
-
-      if (!arch_type)
-	abort ();
-      mach_name = arch_type->printable_name;
-
-      prev_isa = cgen_bitset_copy (isa);
-      prev_mach = mach;
-      prev_endian = endian;
-      cd = ms1_cgen_cpu_open (CGEN_CPU_OPEN_ISAS, prev_isa,
-				 CGEN_CPU_OPEN_BFDMACH, mach_name,
-				 CGEN_CPU_OPEN_ENDIAN, prev_endian,
-				 CGEN_CPU_OPEN_END);
-      if (!cd)
-	abort ();
-
-      /* Save this away for future reference.  */
-      cl = xmalloc (sizeof (struct cpu_desc_list));
-      cl->cd = cd;
-      cl->isa = prev_isa;
-      cl->mach = mach;
-      cl->endian = endian;
-      cl->next = cd_list;
-      cd_list = cl;
-
-      ms1_cgen_init_dis (cd);
-    }
-
-  /* We try to have as much common code as possible.
-     But at this point some targets need to take over.  */
-  /* ??? Some targets may need a hook elsewhere.  Try to avoid this,
-     but if not possible try to move this hook elsewhere rather than
-     have two hooks.  */
-  length = CGEN_PRINT_INSN (cd, pc, info);
-  if (length > 0)
-    return length;
-  if (length < 0)
-    return -1;
-
-  (*info->fprintf_func) (info->stream, UNKNOWN_INSN_MSG);
-  return cd->default_insn_bitsize / 8;
-}

Deleted: branches/binutils/package/opcodes/ms1-ibld.c
===================================================================
--- branches/binutils/package/opcodes/ms1-ibld.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-ibld.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,1729 +0,0 @@
-/* Instruction building/extraction support for ms1. -*- C -*-
-
-   THIS FILE IS MACHINE GENERATED WITH CGEN: Cpu tools GENerator.
-   - the resultant file is machine generated, cgen-ibld.in isn't
-
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2005
-   Free Software Foundation, Inc.
-
-   This file is part of the GNU Binutils and GDB, the GNU debugger.
-
-   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 2, 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; if not, write to the Free Software Foundation, Inc.,
-   51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
-
-/* ??? Eventually more and more of this stuff can go to cpu-independent files.
-   Keep that in mind.  */
-
-#include "sysdep.h"
-#include <stdio.h>
-#include "ansidecl.h"
-#include "dis-asm.h"
-#include "bfd.h"
-#include "symcat.h"
-#include "ms1-desc.h"
-#include "ms1-opc.h"
-#include "opintl.h"
-#include "safe-ctype.h"
-
-#undef  min
-#define min(a,b) ((a) < (b) ? (a) : (b))
-#undef  max
-#define max(a,b) ((a) > (b) ? (a) : (b))
-
-/* Used by the ifield rtx function.  */
-#define FLD(f) (fields->f)
-
-static const char * insert_normal
-  (CGEN_CPU_DESC, long, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, unsigned int, CGEN_INSN_BYTES_PTR);
-static const char * insert_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *,
-   CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
-static int extract_normal
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, CGEN_INSN_INT,
-   unsigned int, unsigned int, unsigned int, unsigned int,
-   unsigned int, unsigned int, bfd_vma, long *);
-static int extract_insn_normal
-  (CGEN_CPU_DESC, const CGEN_INSN *, CGEN_EXTRACT_INFO *,
-   CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
-#if CGEN_INT_INSN_P
-static void put_insn_int_value
-  (CGEN_CPU_DESC, CGEN_INSN_BYTES_PTR, int, int, CGEN_INSN_INT);
-#endif
-#if ! CGEN_INT_INSN_P
-static CGEN_INLINE void insert_1
-  (CGEN_CPU_DESC, unsigned long, int, int, int, unsigned char *);
-static CGEN_INLINE int fill_cache
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *,  int, int, bfd_vma);
-static CGEN_INLINE long extract_1
-  (CGEN_CPU_DESC, CGEN_EXTRACT_INFO *, int, int, int, unsigned char *, bfd_vma);
-#endif
-
-/* Operand insertion.  */
-
-#if ! CGEN_INT_INSN_P
-
-/* Subroutine of insert_normal.  */
-
-static CGEN_INLINE void
-insert_1 (CGEN_CPU_DESC cd,
-	  unsigned long value,
-	  int start,
-	  int length,
-	  int word_length,
-	  unsigned char *bufp)
-{
-  unsigned long x,mask;
-  int shift;
-
-  x = cgen_get_insn_value (cd, bufp, word_length);
-
-  /* Written this way to avoid undefined behaviour.  */
-  mask = (((1L << (length - 1)) - 1) << 1) | 1;
-  if (CGEN_INSN_LSB0_P)
-    shift = (start + 1) - length;
-  else
-    shift = (word_length - (start + length));
-  x = (x & ~(mask << shift)) | ((value & mask) << shift);
-
-  cgen_put_insn_value (cd, bufp, word_length, (bfd_vma) x);
-}
-
-#endif /* ! CGEN_INT_INSN_P */
-
-/* Default insertion routine.
-
-   ATTRS is a mask of the boolean attributes.
-   WORD_OFFSET is the offset in bits from the start of the insn of the value.
-   WORD_LENGTH is the length of the word in bits in which the value resides.
-   START is the starting bit number in the word, architecture origin.
-   LENGTH is the length of VALUE in bits.
-   TOTAL_LENGTH is the total length of the insn in bits.
-
-   The result is an error message or NULL if success.  */
-
-/* ??? This duplicates functionality with bfd's howto table and
-   bfd_install_relocation.  */
-/* ??? This doesn't handle bfd_vma's.  Create another function when
-   necessary.  */
-
-static const char *
-insert_normal (CGEN_CPU_DESC cd,
-	       long value,
-	       unsigned int attrs,
-	       unsigned int word_offset,
-	       unsigned int start,
-	       unsigned int length,
-	       unsigned int word_length,
-	       unsigned int total_length,
-	       CGEN_INSN_BYTES_PTR buffer)
-{
-  static char errbuf[100];
-  /* Written this way to avoid undefined behaviour.  */
-  unsigned long mask = (((1L << (length - 1)) - 1) << 1) | 1;
-
-  /* If LENGTH is zero, this operand doesn't contribute to the value.  */
-  if (length == 0)
-    return NULL;
-
-  if (word_length > 32)
-    abort ();
-
-  /* For architectures with insns smaller than the base-insn-bitsize,
-     word_length may be too big.  */
-  if (cd->min_insn_bitsize < cd->base_insn_bitsize)
-    {
-      if (word_offset == 0
-	  && word_length > total_length)
-	word_length = total_length;
-    }
-
-  /* Ensure VALUE will fit.  */
-  if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGN_OPT))
-    {
-      long minval = - (1L << (length - 1));
-      unsigned long maxval = mask;
-      
-      if ((value > 0 && (unsigned long) value > maxval)
-	  || value < minval)
-	{
-	  /* xgettext:c-format */
-	  sprintf (errbuf,
-		   _("operand out of range (%ld not between %ld and %lu)"),
-		   value, minval, maxval);
-	  return errbuf;
-	}
-    }
-  else if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
-    {
-      unsigned long maxval = mask;
-      
-      if ((unsigned long) value > maxval)
-	{
-	  /* xgettext:c-format */
-	  sprintf (errbuf,
-		   _("operand out of range (%lu not between 0 and %lu)"),
-		   value, maxval);
-	  return errbuf;
-	}
-    }
-  else
-    {
-      if (! cgen_signed_overflow_ok_p (cd))
-	{
-	  long minval = - (1L << (length - 1));
-	  long maxval =   (1L << (length - 1)) - 1;
-	  
-	  if (value < minval || value > maxval)
-	    {
-	      sprintf
-		/* xgettext:c-format */
-		(errbuf, _("operand out of range (%ld not between %ld and %ld)"),
-		 value, minval, maxval);
-	      return errbuf;
-	    }
-	}
-    }
-
-#if CGEN_INT_INSN_P
-
-  {
-    int shift;
-
-    if (CGEN_INSN_LSB0_P)
-      shift = (word_offset + start + 1) - length;
-    else
-      shift = total_length - (word_offset + start + length);
-    *buffer = (*buffer & ~(mask << shift)) | ((value & mask) << shift);
-  }
-
-#else /* ! CGEN_INT_INSN_P */
-
-  {
-    unsigned char *bufp = (unsigned char *) buffer + word_offset / 8;
-
-    insert_1 (cd, value, start, length, word_length, bufp);
-  }
-
-#endif /* ! CGEN_INT_INSN_P */
-
-  return NULL;
-}
-
-/* Default insn builder (insert handler).
-   The instruction is recorded in CGEN_INT_INSN_P byte order (meaning
-   that if CGEN_INSN_BYTES_PTR is an int * and thus, the value is
-   recorded in host byte order, otherwise BUFFER is an array of bytes
-   and the value is recorded in target byte order).
-   The result is an error message or NULL if success.  */
-
-static const char *
-insert_insn_normal (CGEN_CPU_DESC cd,
-		    const CGEN_INSN * insn,
-		    CGEN_FIELDS * fields,
-		    CGEN_INSN_BYTES_PTR buffer,
-		    bfd_vma pc)
-{
-  const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
-  unsigned long value;
-  const CGEN_SYNTAX_CHAR_TYPE * syn;
-
-  CGEN_INIT_INSERT (cd);
-  value = CGEN_INSN_BASE_VALUE (insn);
-
-  /* If we're recording insns as numbers (rather than a string of bytes),
-     target byte order handling is deferred until later.  */
-
-#if CGEN_INT_INSN_P
-
-  put_insn_int_value (cd, buffer, cd->base_insn_bitsize,
-		      CGEN_FIELDS_BITSIZE (fields), value);
-
-#else
-
-  cgen_put_insn_value (cd, buffer, min ((unsigned) cd->base_insn_bitsize,
-					(unsigned) CGEN_FIELDS_BITSIZE (fields)),
-		       value);
-
-#endif /* ! CGEN_INT_INSN_P */
-
-  /* ??? It would be better to scan the format's fields.
-     Still need to be able to insert a value based on the operand though;
-     e.g. storing a branch displacement that got resolved later.
-     Needs more thought first.  */
-
-  for (syn = CGEN_SYNTAX_STRING (syntax); * syn; ++ syn)
-    {
-      const char *errmsg;
-
-      if (CGEN_SYNTAX_CHAR_P (* syn))
-	continue;
-
-      errmsg = (* cd->insert_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
-				       fields, buffer, pc);
-      if (errmsg)
-	return errmsg;
-    }
-
-  return NULL;
-}
-
-#if CGEN_INT_INSN_P
-/* Cover function to store an insn value into an integral insn.  Must go here
-   because it needs <prefix>-desc.h for CGEN_INT_INSN_P.  */
-
-static void
-put_insn_int_value (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		    CGEN_INSN_BYTES_PTR buf,
-		    int length,
-		    int insn_length,
-		    CGEN_INSN_INT value)
-{
-  /* For architectures with insns smaller than the base-insn-bitsize,
-     length may be too big.  */
-  if (length > insn_length)
-    *buf = value;
-  else
-    {
-      int shift = insn_length - length;
-      /* Written this way to avoid undefined behaviour.  */
-      CGEN_INSN_INT mask = (((1L << (length - 1)) - 1) << 1) | 1;
-
-      *buf = (*buf & ~(mask << shift)) | ((value & mask) << shift);
-    }
-}
-#endif
-
-/* Operand extraction.  */
-
-#if ! CGEN_INT_INSN_P
-
-/* Subroutine of extract_normal.
-   Ensure sufficient bytes are cached in EX_INFO.
-   OFFSET is the offset in bytes from the start of the insn of the value.
-   BYTES is the length of the needed value.
-   Returns 1 for success, 0 for failure.  */
-
-static CGEN_INLINE int
-fill_cache (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    CGEN_EXTRACT_INFO *ex_info,
-	    int offset,
-	    int bytes,
-	    bfd_vma pc)
-{
-  /* It's doubtful that the middle part has already been fetched so
-     we don't optimize that case.  kiss.  */
-  unsigned int mask;
-  disassemble_info *info = (disassemble_info *) ex_info->dis_info;
-
-  /* First do a quick check.  */
-  mask = (1 << bytes) - 1;
-  if (((ex_info->valid >> offset) & mask) == mask)
-    return 1;
-
-  /* Search for the first byte we need to read.  */
-  for (mask = 1 << offset; bytes > 0; --bytes, ++offset, mask <<= 1)
-    if (! (mask & ex_info->valid))
-      break;
-
-  if (bytes)
-    {
-      int status;
-
-      pc += offset;
-      status = (*info->read_memory_func)
-	(pc, ex_info->insn_bytes + offset, bytes, info);
-
-      if (status != 0)
-	{
-	  (*info->memory_error_func) (status, pc, info);
-	  return 0;
-	}
-
-      ex_info->valid |= ((1 << bytes) - 1) << offset;
-    }
-
-  return 1;
-}
-
-/* Subroutine of extract_normal.  */
-
-static CGEN_INLINE long
-extract_1 (CGEN_CPU_DESC cd,
-	   CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-	   int start,
-	   int length,
-	   int word_length,
-	   unsigned char *bufp,
-	   bfd_vma pc ATTRIBUTE_UNUSED)
-{
-  unsigned long x;
-  int shift;
-
-  x = cgen_get_insn_value (cd, bufp, word_length);
-
-  if (CGEN_INSN_LSB0_P)
-    shift = (start + 1) - length;
-  else
-    shift = (word_length - (start + length));
-  return x >> shift;
-}
-
-#endif /* ! CGEN_INT_INSN_P */
-
-/* Default extraction routine.
-
-   INSN_VALUE is the first base_insn_bitsize bits of the insn in host order,
-   or sometimes less for cases like the m32r where the base insn size is 32
-   but some insns are 16 bits.
-   ATTRS is a mask of the boolean attributes.  We only need `SIGNED',
-   but for generality we take a bitmask of all of them.
-   WORD_OFFSET is the offset in bits from the start of the insn of the value.
-   WORD_LENGTH is the length of the word in bits in which the value resides.
-   START is the starting bit number in the word, architecture origin.
-   LENGTH is the length of VALUE in bits.
-   TOTAL_LENGTH is the total length of the insn in bits.
-
-   Returns 1 for success, 0 for failure.  */
-
-/* ??? The return code isn't properly used.  wip.  */
-
-/* ??? This doesn't handle bfd_vma's.  Create another function when
-   necessary.  */
-
-static int
-extract_normal (CGEN_CPU_DESC cd,
-#if ! CGEN_INT_INSN_P
-		CGEN_EXTRACT_INFO *ex_info,
-#else
-		CGEN_EXTRACT_INFO *ex_info ATTRIBUTE_UNUSED,
-#endif
-		CGEN_INSN_INT insn_value,
-		unsigned int attrs,
-		unsigned int word_offset,
-		unsigned int start,
-		unsigned int length,
-		unsigned int word_length,
-		unsigned int total_length,
-#if ! CGEN_INT_INSN_P
-		bfd_vma pc,
-#else
-		bfd_vma pc ATTRIBUTE_UNUSED,
-#endif
-		long *valuep)
-{
-  long value, mask;
-
-  /* If LENGTH is zero, this operand doesn't contribute to the value
-     so give it a standard value of zero.  */
-  if (length == 0)
-    {
-      *valuep = 0;
-      return 1;
-    }
-
-  if (word_length > 32)
-    abort ();
-
-  /* For architectures with insns smaller than the insn-base-bitsize,
-     word_length may be too big.  */
-  if (cd->min_insn_bitsize < cd->base_insn_bitsize)
-    {
-      if (word_offset == 0
-	  && word_length > total_length)
-	word_length = total_length;
-    }
-
-  /* Does the value reside in INSN_VALUE, and at the right alignment?  */
-
-  if (CGEN_INT_INSN_P || (word_offset == 0 && word_length == total_length))
-    {
-      if (CGEN_INSN_LSB0_P)
-	value = insn_value >> ((word_offset + start + 1) - length);
-      else
-	value = insn_value >> (total_length - ( word_offset + start + length));
-    }
-
-#if ! CGEN_INT_INSN_P
-
-  else
-    {
-      unsigned char *bufp = ex_info->insn_bytes + word_offset / 8;
-
-      if (word_length > 32)
-	abort ();
-
-      if (fill_cache (cd, ex_info, word_offset / 8, word_length / 8, pc) == 0)
-	return 0;
-
-      value = extract_1 (cd, ex_info, start, length, word_length, bufp, pc);
-    }
-
-#endif /* ! CGEN_INT_INSN_P */
-
-  /* Written this way to avoid undefined behaviour.  */
-  mask = (((1L << (length - 1)) - 1) << 1) | 1;
-
-  value &= mask;
-  /* sign extend? */
-  if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED)
-      && (value & (1L << (length - 1))))
-    value |= ~mask;
-
-  *valuep = value;
-
-  return 1;
-}
-
-/* Default insn extractor.
-
-   INSN_VALUE is the first base_insn_bitsize bits, translated to host order.
-   The extracted fields are stored in FIELDS.
-   EX_INFO is used to handle reading variable length insns.
-   Return the length of the insn in bits, or 0 if no match,
-   or -1 if an error occurs fetching data (memory_error_func will have
-   been called).  */
-
-static int
-extract_insn_normal (CGEN_CPU_DESC cd,
-		     const CGEN_INSN *insn,
-		     CGEN_EXTRACT_INFO *ex_info,
-		     CGEN_INSN_INT insn_value,
-		     CGEN_FIELDS *fields,
-		     bfd_vma pc)
-{
-  const CGEN_SYNTAX *syntax = CGEN_INSN_SYNTAX (insn);
-  const CGEN_SYNTAX_CHAR_TYPE *syn;
-
-  CGEN_FIELDS_BITSIZE (fields) = CGEN_INSN_BITSIZE (insn);
-
-  CGEN_INIT_EXTRACT (cd);
-
-  for (syn = CGEN_SYNTAX_STRING (syntax); *syn; ++syn)
-    {
-      int length;
-
-      if (CGEN_SYNTAX_CHAR_P (*syn))
-	continue;
-
-      length = (* cd->extract_operand) (cd, CGEN_SYNTAX_FIELD (*syn),
-					ex_info, insn_value, fields, pc);
-      if (length <= 0)
-	return length;
-    }
-
-  /* We recognized and successfully extracted this insn.  */
-  return CGEN_INSN_BITSIZE (insn);
-}
-
-/* Machine generated code added here.  */
-
-const char * ms1_cgen_insert_operand
-  (CGEN_CPU_DESC, int, CGEN_FIELDS *, CGEN_INSN_BYTES_PTR, bfd_vma);
-
-/* Main entry point for operand insertion.
-
-   This function is basically just a big switch statement.  Earlier versions
-   used tables to look up the function to use, but
-   - if the table contains both assembler and disassembler functions then
-     the disassembler contains much of the assembler and vice-versa,
-   - there's a lot of inlining possibilities as things grow,
-   - using a switch statement avoids the function call overhead.
-
-   This function could be moved into `parse_insn_normal', but keeping it
-   separate makes clear the interface between `parse_insn_normal' and each of
-   the handlers.  It's also needed by GAS to insert operands that couldn't be
-   resolved during parsing.  */
-
-const char *
-ms1_cgen_insert_operand (CGEN_CPU_DESC cd,
-			     int opindex,
-			     CGEN_FIELDS * fields,
-			     CGEN_INSN_BYTES_PTR buffer,
-			     bfd_vma pc ATTRIBUTE_UNUSED)
-{
-  const char * errmsg = NULL;
-  unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
-
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      errmsg = insert_normal (cd, fields->f_a23, 0, 0, 23, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_BALL :
-      errmsg = insert_normal (cd, fields->f_ball, 0, 0, 19, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_BALL2 :
-      errmsg = insert_normal (cd, fields->f_ball2, 0, 0, 15, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_BANKADDR :
-      errmsg = insert_normal (cd, fields->f_bankaddr, 0, 0, 25, 13, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_BRC :
-      errmsg = insert_normal (cd, fields->f_brc, 0, 0, 18, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_BRC2 :
-      errmsg = insert_normal (cd, fields->f_brc2, 0, 0, 14, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CB1INCR :
-      errmsg = insert_normal (cd, fields->f_cb1incr, 0|(1<<CGEN_IFLD_SIGNED), 0, 19, 6, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CB1SEL :
-      errmsg = insert_normal (cd, fields->f_cb1sel, 0, 0, 25, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CB2INCR :
-      errmsg = insert_normal (cd, fields->f_cb2incr, 0|(1<<CGEN_IFLD_SIGNED), 0, 13, 6, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CB2SEL :
-      errmsg = insert_normal (cd, fields->f_cb2sel, 0, 0, 22, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CBRB :
-      errmsg = insert_normal (cd, fields->f_cbrb, 0, 0, 10, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CBS :
-      errmsg = insert_normal (cd, fields->f_cbs, 0, 0, 19, 2, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CBX :
-      errmsg = insert_normal (cd, fields->f_cbx, 0, 0, 14, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CCB :
-      errmsg = insert_normal (cd, fields->f_ccb, 0, 0, 11, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CDB :
-      errmsg = insert_normal (cd, fields->f_cdb, 0, 0, 10, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CELL :
-      errmsg = insert_normal (cd, fields->f_cell, 0, 0, 9, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_COLNUM :
-      errmsg = insert_normal (cd, fields->f_colnum, 0, 0, 18, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CONTNUM :
-      errmsg = insert_normal (cd, fields->f_contnum, 0, 0, 8, 9, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CR :
-      errmsg = insert_normal (cd, fields->f_cr, 0, 0, 22, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_CTXDISP :
-      errmsg = insert_normal (cd, fields->f_ctxdisp, 0, 0, 5, 6, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_DUP :
-      errmsg = insert_normal (cd, fields->f_dup, 0, 0, 6, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_FBDISP :
-      errmsg = insert_normal (cd, fields->f_fbdisp, 0, 0, 15, 6, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_FBINCR :
-      errmsg = insert_normal (cd, fields->f_fbincr, 0, 0, 23, 4, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_FRDR :
-      errmsg = insert_normal (cd, fields->f_dr, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 19, 4, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_FRDRRR :
-      errmsg = insert_normal (cd, fields->f_drrr, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 15, 4, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_FRSR1 :
-      errmsg = insert_normal (cd, fields->f_sr1, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 23, 4, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_FRSR2 :
-      errmsg = insert_normal (cd, fields->f_sr2, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 19, 4, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_ID :
-      errmsg = insert_normal (cd, fields->f_id, 0, 0, 14, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_IMM16 :
-      {
-        long value = fields->f_imm16s;
-        value = ((value) + (0));
-        errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, buffer);
-      }
-      break;
-    case MS1_OPERAND_IMM16L :
-      errmsg = insert_normal (cd, fields->f_imm16l, 0, 0, 23, 16, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_IMM16O :
-      {
-        long value = fields->f_imm16s;
-        value = ((value) + (0));
-        errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, buffer);
-      }
-      break;
-    case MS1_OPERAND_IMM16Z :
-      errmsg = insert_normal (cd, fields->f_imm16u, 0, 0, 15, 16, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_INCAMT :
-      errmsg = insert_normal (cd, fields->f_incamt, 0, 0, 19, 8, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_INCR :
-      errmsg = insert_normal (cd, fields->f_incr, 0, 0, 17, 6, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_LENGTH :
-      errmsg = insert_normal (cd, fields->f_length, 0, 0, 15, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      {
-        long value = fields->f_loopo;
-        value = ((unsigned int) (value) >> (2));
-        errmsg = insert_normal (cd, value, 0, 0, 7, 8, 32, total_length, buffer);
-      }
-      break;
-    case MS1_OPERAND_MASK :
-      errmsg = insert_normal (cd, fields->f_mask, 0, 0, 25, 16, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_MASK1 :
-      errmsg = insert_normal (cd, fields->f_mask1, 0, 0, 22, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_MODE :
-      errmsg = insert_normal (cd, fields->f_mode, 0, 0, 25, 2, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_PERM :
-      errmsg = insert_normal (cd, fields->f_perm, 0, 0, 25, 2, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RBBC :
-      errmsg = insert_normal (cd, fields->f_rbbc, 0, 0, 25, 2, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RC :
-      errmsg = insert_normal (cd, fields->f_rc, 0, 0, 15, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RC1 :
-      errmsg = insert_normal (cd, fields->f_rc1, 0, 0, 11, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RC2 :
-      errmsg = insert_normal (cd, fields->f_rc2, 0, 0, 6, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RC3 :
-      errmsg = insert_normal (cd, fields->f_rc3, 0, 0, 7, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RCNUM :
-      errmsg = insert_normal (cd, fields->f_rcnum, 0, 0, 14, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_RDA :
-      errmsg = insert_normal (cd, fields->f_rda, 0, 0, 25, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_ROWNUM :
-      errmsg = insert_normal (cd, fields->f_rownum, 0, 0, 14, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      errmsg = insert_normal (cd, fields->f_rownum1, 0, 0, 12, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      errmsg = insert_normal (cd, fields->f_rownum2, 0, 0, 9, 3, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_SIZE :
-      errmsg = insert_normal (cd, fields->f_size, 0, 0, 13, 14, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_TYPE :
-      errmsg = insert_normal (cd, fields->f_type, 0, 0, 21, 2, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_WR :
-      errmsg = insert_normal (cd, fields->f_wr, 0, 0, 24, 1, 32, total_length, buffer);
-      break;
-    case MS1_OPERAND_XMODE :
-      errmsg = insert_normal (cd, fields->f_xmode, 0, 0, 23, 1, 32, total_length, buffer);
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while building insn.\n"),
-	       opindex);
-      abort ();
-  }
-
-  return errmsg;
-}
-
-int ms1_cgen_extract_operand
-  (CGEN_CPU_DESC, int, CGEN_EXTRACT_INFO *, CGEN_INSN_INT, CGEN_FIELDS *, bfd_vma);
-
-/* Main entry point for operand extraction.
-   The result is <= 0 for error, >0 for success.
-   ??? Actual values aren't well defined right now.
-
-   This function is basically just a big switch statement.  Earlier versions
-   used tables to look up the function to use, but
-   - if the table contains both assembler and disassembler functions then
-     the disassembler contains much of the assembler and vice-versa,
-   - there's a lot of inlining possibilities as things grow,
-   - using a switch statement avoids the function call overhead.
-
-   This function could be moved into `print_insn_normal', but keeping it
-   separate makes clear the interface between `print_insn_normal' and each of
-   the handlers.  */
-
-int
-ms1_cgen_extract_operand (CGEN_CPU_DESC cd,
-			     int opindex,
-			     CGEN_EXTRACT_INFO *ex_info,
-			     CGEN_INSN_INT insn_value,
-			     CGEN_FIELDS * fields,
-			     bfd_vma pc)
-{
-  /* Assume success (for those operands that are nops).  */
-  int length = 1;
-  unsigned int total_length = CGEN_FIELDS_BITSIZE (fields);
-
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 1, 32, total_length, pc, & fields->f_a23);
-      break;
-    case MS1_OPERAND_BALL :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 1, 32, total_length, pc, & fields->f_ball);
-      break;
-    case MS1_OPERAND_BALL2 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_ball2);
-      break;
-    case MS1_OPERAND_BANKADDR :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 13, 32, total_length, pc, & fields->f_bankaddr);
-      break;
-    case MS1_OPERAND_BRC :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 3, 32, total_length, pc, & fields->f_brc);
-      break;
-    case MS1_OPERAND_BRC2 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_brc2);
-      break;
-    case MS1_OPERAND_CB1INCR :
-      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 19, 6, 32, total_length, pc, & fields->f_cb1incr);
-      break;
-    case MS1_OPERAND_CB1SEL :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 3, 32, total_length, pc, & fields->f_cb1sel);
-      break;
-    case MS1_OPERAND_CB2INCR :
-      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 13, 6, 32, total_length, pc, & fields->f_cb2incr);
-      break;
-    case MS1_OPERAND_CB2SEL :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 22, 3, 32, total_length, pc, & fields->f_cb2sel);
-      break;
-    case MS1_OPERAND_CBRB :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 1, 32, total_length, pc, & fields->f_cbrb);
-      break;
-    case MS1_OPERAND_CBS :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 2, 32, total_length, pc, & fields->f_cbs);
-      break;
-    case MS1_OPERAND_CBX :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_cbx);
-      break;
-    case MS1_OPERAND_CCB :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_ccb);
-      break;
-    case MS1_OPERAND_CDB :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 1, 32, total_length, pc, & fields->f_cdb);
-      break;
-    case MS1_OPERAND_CELL :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_cell);
-      break;
-    case MS1_OPERAND_COLNUM :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 3, 32, total_length, pc, & fields->f_colnum);
-      break;
-    case MS1_OPERAND_CONTNUM :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 9, 32, total_length, pc, & fields->f_contnum);
-      break;
-    case MS1_OPERAND_CR :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 22, 3, 32, total_length, pc, & fields->f_cr);
-      break;
-    case MS1_OPERAND_CTXDISP :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_ctxdisp);
-      break;
-    case MS1_OPERAND_DUP :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 6, 1, 32, total_length, pc, & fields->f_dup);
-      break;
-    case MS1_OPERAND_FBDISP :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 6, 32, total_length, pc, & fields->f_fbdisp);
-      break;
-    case MS1_OPERAND_FBINCR :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 4, 32, total_length, pc, & fields->f_fbincr);
-      break;
-    case MS1_OPERAND_FRDR :
-      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 19, 4, 32, total_length, pc, & fields->f_dr);
-      break;
-    case MS1_OPERAND_FRDRRR :
-      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 15, 4, 32, total_length, pc, & fields->f_drrr);
-      break;
-    case MS1_OPERAND_FRSR1 :
-      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 23, 4, 32, total_length, pc, & fields->f_sr1);
-      break;
-    case MS1_OPERAND_FRSR2 :
-      length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 19, 4, 32, total_length, pc, & fields->f_sr2);
-      break;
-    case MS1_OPERAND_ID :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 1, 32, total_length, pc, & fields->f_id);
-      break;
-    case MS1_OPERAND_IMM16 :
-      {
-        long value;
-        length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, pc, & value);
-        value = ((value) + (0));
-        fields->f_imm16s = value;
-      }
-      break;
-    case MS1_OPERAND_IMM16L :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 16, 32, total_length, pc, & fields->f_imm16l);
-      break;
-    case MS1_OPERAND_IMM16O :
-      {
-        long value;
-        length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 15, 16, 32, total_length, pc, & value);
-        value = ((value) + (0));
-        fields->f_imm16s = value;
-      }
-      break;
-    case MS1_OPERAND_IMM16Z :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 16, 32, total_length, pc, & fields->f_imm16u);
-      break;
-    case MS1_OPERAND_INCAMT :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 19, 8, 32, total_length, pc, & fields->f_incamt);
-      break;
-    case MS1_OPERAND_INCR :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_incr);
-      break;
-    case MS1_OPERAND_LENGTH :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 3, 32, total_length, pc, & fields->f_length);
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      {
-        long value;
-        length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 8, 32, total_length, pc, & value);
-        value = ((((value) << (2))) + (8));
-        fields->f_loopo = value;
-      }
-      break;
-    case MS1_OPERAND_MASK :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 16, 32, total_length, pc, & fields->f_mask);
-      break;
-    case MS1_OPERAND_MASK1 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 22, 3, 32, total_length, pc, & fields->f_mask1);
-      break;
-    case MS1_OPERAND_MODE :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 2, 32, total_length, pc, & fields->f_mode);
-      break;
-    case MS1_OPERAND_PERM :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 2, 32, total_length, pc, & fields->f_perm);
-      break;
-    case MS1_OPERAND_RBBC :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 2, 32, total_length, pc, & fields->f_rbbc);
-      break;
-    case MS1_OPERAND_RC :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 15, 1, 32, total_length, pc, & fields->f_rc);
-      break;
-    case MS1_OPERAND_RC1 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 11, 1, 32, total_length, pc, & fields->f_rc1);
-      break;
-    case MS1_OPERAND_RC2 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 6, 1, 32, total_length, pc, & fields->f_rc2);
-      break;
-    case MS1_OPERAND_RC3 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 7, 1, 32, total_length, pc, & fields->f_rc3);
-      break;
-    case MS1_OPERAND_RCNUM :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_rcnum);
-      break;
-    case MS1_OPERAND_RDA :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 25, 1, 32, total_length, pc, & fields->f_rda);
-      break;
-    case MS1_OPERAND_ROWNUM :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 14, 3, 32, total_length, pc, & fields->f_rownum);
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 12, 3, 32, total_length, pc, & fields->f_rownum1);
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 9, 3, 32, total_length, pc, & fields->f_rownum2);
-      break;
-    case MS1_OPERAND_SIZE :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 14, 32, total_length, pc, & fields->f_size);
-      break;
-    case MS1_OPERAND_TYPE :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 21, 2, 32, total_length, pc, & fields->f_type);
-      break;
-    case MS1_OPERAND_WR :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 1, 32, total_length, pc, & fields->f_wr);
-      break;
-    case MS1_OPERAND_XMODE :
-      length = extract_normal (cd, ex_info, insn_value, 0, 0, 23, 1, 32, total_length, pc, & fields->f_xmode);
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while decoding insn.\n"),
-	       opindex);
-      abort ();
-    }
-
-  return length;
-}
-
-cgen_insert_fn * const ms1_cgen_insert_handlers[] = 
-{
-  insert_insn_normal,
-};
-
-cgen_extract_fn * const ms1_cgen_extract_handlers[] = 
-{
-  extract_insn_normal,
-};
-
-int ms1_cgen_get_int_operand     (CGEN_CPU_DESC, int, const CGEN_FIELDS *);
-bfd_vma ms1_cgen_get_vma_operand (CGEN_CPU_DESC, int, const CGEN_FIELDS *);
-
-/* Getting values from cgen_fields is handled by a collection of functions.
-   They are distinguished by the type of the VALUE argument they return.
-   TODO: floating point, inlining support, remove cases where result type
-   not appropriate.  */
-
-int
-ms1_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-			     int opindex,
-			     const CGEN_FIELDS * fields)
-{
-  int value;
-
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      value = fields->f_a23;
-      break;
-    case MS1_OPERAND_BALL :
-      value = fields->f_ball;
-      break;
-    case MS1_OPERAND_BALL2 :
-      value = fields->f_ball2;
-      break;
-    case MS1_OPERAND_BANKADDR :
-      value = fields->f_bankaddr;
-      break;
-    case MS1_OPERAND_BRC :
-      value = fields->f_brc;
-      break;
-    case MS1_OPERAND_BRC2 :
-      value = fields->f_brc2;
-      break;
-    case MS1_OPERAND_CB1INCR :
-      value = fields->f_cb1incr;
-      break;
-    case MS1_OPERAND_CB1SEL :
-      value = fields->f_cb1sel;
-      break;
-    case MS1_OPERAND_CB2INCR :
-      value = fields->f_cb2incr;
-      break;
-    case MS1_OPERAND_CB2SEL :
-      value = fields->f_cb2sel;
-      break;
-    case MS1_OPERAND_CBRB :
-      value = fields->f_cbrb;
-      break;
-    case MS1_OPERAND_CBS :
-      value = fields->f_cbs;
-      break;
-    case MS1_OPERAND_CBX :
-      value = fields->f_cbx;
-      break;
-    case MS1_OPERAND_CCB :
-      value = fields->f_ccb;
-      break;
-    case MS1_OPERAND_CDB :
-      value = fields->f_cdb;
-      break;
-    case MS1_OPERAND_CELL :
-      value = fields->f_cell;
-      break;
-    case MS1_OPERAND_COLNUM :
-      value = fields->f_colnum;
-      break;
-    case MS1_OPERAND_CONTNUM :
-      value = fields->f_contnum;
-      break;
-    case MS1_OPERAND_CR :
-      value = fields->f_cr;
-      break;
-    case MS1_OPERAND_CTXDISP :
-      value = fields->f_ctxdisp;
-      break;
-    case MS1_OPERAND_DUP :
-      value = fields->f_dup;
-      break;
-    case MS1_OPERAND_FBDISP :
-      value = fields->f_fbdisp;
-      break;
-    case MS1_OPERAND_FBINCR :
-      value = fields->f_fbincr;
-      break;
-    case MS1_OPERAND_FRDR :
-      value = fields->f_dr;
-      break;
-    case MS1_OPERAND_FRDRRR :
-      value = fields->f_drrr;
-      break;
-    case MS1_OPERAND_FRSR1 :
-      value = fields->f_sr1;
-      break;
-    case MS1_OPERAND_FRSR2 :
-      value = fields->f_sr2;
-      break;
-    case MS1_OPERAND_ID :
-      value = fields->f_id;
-      break;
-    case MS1_OPERAND_IMM16 :
-      value = fields->f_imm16s;
-      break;
-    case MS1_OPERAND_IMM16L :
-      value = fields->f_imm16l;
-      break;
-    case MS1_OPERAND_IMM16O :
-      value = fields->f_imm16s;
-      break;
-    case MS1_OPERAND_IMM16Z :
-      value = fields->f_imm16u;
-      break;
-    case MS1_OPERAND_INCAMT :
-      value = fields->f_incamt;
-      break;
-    case MS1_OPERAND_INCR :
-      value = fields->f_incr;
-      break;
-    case MS1_OPERAND_LENGTH :
-      value = fields->f_length;
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      value = fields->f_loopo;
-      break;
-    case MS1_OPERAND_MASK :
-      value = fields->f_mask;
-      break;
-    case MS1_OPERAND_MASK1 :
-      value = fields->f_mask1;
-      break;
-    case MS1_OPERAND_MODE :
-      value = fields->f_mode;
-      break;
-    case MS1_OPERAND_PERM :
-      value = fields->f_perm;
-      break;
-    case MS1_OPERAND_RBBC :
-      value = fields->f_rbbc;
-      break;
-    case MS1_OPERAND_RC :
-      value = fields->f_rc;
-      break;
-    case MS1_OPERAND_RC1 :
-      value = fields->f_rc1;
-      break;
-    case MS1_OPERAND_RC2 :
-      value = fields->f_rc2;
-      break;
-    case MS1_OPERAND_RC3 :
-      value = fields->f_rc3;
-      break;
-    case MS1_OPERAND_RCNUM :
-      value = fields->f_rcnum;
-      break;
-    case MS1_OPERAND_RDA :
-      value = fields->f_rda;
-      break;
-    case MS1_OPERAND_ROWNUM :
-      value = fields->f_rownum;
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      value = fields->f_rownum1;
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      value = fields->f_rownum2;
-      break;
-    case MS1_OPERAND_SIZE :
-      value = fields->f_size;
-      break;
-    case MS1_OPERAND_TYPE :
-      value = fields->f_type;
-      break;
-    case MS1_OPERAND_WR :
-      value = fields->f_wr;
-      break;
-    case MS1_OPERAND_XMODE :
-      value = fields->f_xmode;
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"),
-		       opindex);
-      abort ();
-  }
-
-  return value;
-}
-
-bfd_vma
-ms1_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-			     int opindex,
-			     const CGEN_FIELDS * fields)
-{
-  bfd_vma value;
-
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      value = fields->f_a23;
-      break;
-    case MS1_OPERAND_BALL :
-      value = fields->f_ball;
-      break;
-    case MS1_OPERAND_BALL2 :
-      value = fields->f_ball2;
-      break;
-    case MS1_OPERAND_BANKADDR :
-      value = fields->f_bankaddr;
-      break;
-    case MS1_OPERAND_BRC :
-      value = fields->f_brc;
-      break;
-    case MS1_OPERAND_BRC2 :
-      value = fields->f_brc2;
-      break;
-    case MS1_OPERAND_CB1INCR :
-      value = fields->f_cb1incr;
-      break;
-    case MS1_OPERAND_CB1SEL :
-      value = fields->f_cb1sel;
-      break;
-    case MS1_OPERAND_CB2INCR :
-      value = fields->f_cb2incr;
-      break;
-    case MS1_OPERAND_CB2SEL :
-      value = fields->f_cb2sel;
-      break;
-    case MS1_OPERAND_CBRB :
-      value = fields->f_cbrb;
-      break;
-    case MS1_OPERAND_CBS :
-      value = fields->f_cbs;
-      break;
-    case MS1_OPERAND_CBX :
-      value = fields->f_cbx;
-      break;
-    case MS1_OPERAND_CCB :
-      value = fields->f_ccb;
-      break;
-    case MS1_OPERAND_CDB :
-      value = fields->f_cdb;
-      break;
-    case MS1_OPERAND_CELL :
-      value = fields->f_cell;
-      break;
-    case MS1_OPERAND_COLNUM :
-      value = fields->f_colnum;
-      break;
-    case MS1_OPERAND_CONTNUM :
-      value = fields->f_contnum;
-      break;
-    case MS1_OPERAND_CR :
-      value = fields->f_cr;
-      break;
-    case MS1_OPERAND_CTXDISP :
-      value = fields->f_ctxdisp;
-      break;
-    case MS1_OPERAND_DUP :
-      value = fields->f_dup;
-      break;
-    case MS1_OPERAND_FBDISP :
-      value = fields->f_fbdisp;
-      break;
-    case MS1_OPERAND_FBINCR :
-      value = fields->f_fbincr;
-      break;
-    case MS1_OPERAND_FRDR :
-      value = fields->f_dr;
-      break;
-    case MS1_OPERAND_FRDRRR :
-      value = fields->f_drrr;
-      break;
-    case MS1_OPERAND_FRSR1 :
-      value = fields->f_sr1;
-      break;
-    case MS1_OPERAND_FRSR2 :
-      value = fields->f_sr2;
-      break;
-    case MS1_OPERAND_ID :
-      value = fields->f_id;
-      break;
-    case MS1_OPERAND_IMM16 :
-      value = fields->f_imm16s;
-      break;
-    case MS1_OPERAND_IMM16L :
-      value = fields->f_imm16l;
-      break;
-    case MS1_OPERAND_IMM16O :
-      value = fields->f_imm16s;
-      break;
-    case MS1_OPERAND_IMM16Z :
-      value = fields->f_imm16u;
-      break;
-    case MS1_OPERAND_INCAMT :
-      value = fields->f_incamt;
-      break;
-    case MS1_OPERAND_INCR :
-      value = fields->f_incr;
-      break;
-    case MS1_OPERAND_LENGTH :
-      value = fields->f_length;
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      value = fields->f_loopo;
-      break;
-    case MS1_OPERAND_MASK :
-      value = fields->f_mask;
-      break;
-    case MS1_OPERAND_MASK1 :
-      value = fields->f_mask1;
-      break;
-    case MS1_OPERAND_MODE :
-      value = fields->f_mode;
-      break;
-    case MS1_OPERAND_PERM :
-      value = fields->f_perm;
-      break;
-    case MS1_OPERAND_RBBC :
-      value = fields->f_rbbc;
-      break;
-    case MS1_OPERAND_RC :
-      value = fields->f_rc;
-      break;
-    case MS1_OPERAND_RC1 :
-      value = fields->f_rc1;
-      break;
-    case MS1_OPERAND_RC2 :
-      value = fields->f_rc2;
-      break;
-    case MS1_OPERAND_RC3 :
-      value = fields->f_rc3;
-      break;
-    case MS1_OPERAND_RCNUM :
-      value = fields->f_rcnum;
-      break;
-    case MS1_OPERAND_RDA :
-      value = fields->f_rda;
-      break;
-    case MS1_OPERAND_ROWNUM :
-      value = fields->f_rownum;
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      value = fields->f_rownum1;
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      value = fields->f_rownum2;
-      break;
-    case MS1_OPERAND_SIZE :
-      value = fields->f_size;
-      break;
-    case MS1_OPERAND_TYPE :
-      value = fields->f_type;
-      break;
-    case MS1_OPERAND_WR :
-      value = fields->f_wr;
-      break;
-    case MS1_OPERAND_XMODE :
-      value = fields->f_xmode;
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"),
-		       opindex);
-      abort ();
-  }
-
-  return value;
-}
-
-void ms1_cgen_set_int_operand  (CGEN_CPU_DESC, int, CGEN_FIELDS *, int);
-void ms1_cgen_set_vma_operand  (CGEN_CPU_DESC, int, CGEN_FIELDS *, bfd_vma);
-
-/* Stuffing values in cgen_fields is handled by a collection of functions.
-   They are distinguished by the type of the VALUE argument they accept.
-   TODO: floating point, inlining support, remove cases where argument type
-   not appropriate.  */
-
-void
-ms1_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-			     int opindex,
-			     CGEN_FIELDS * fields,
-			     int value)
-{
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      fields->f_a23 = value;
-      break;
-    case MS1_OPERAND_BALL :
-      fields->f_ball = value;
-      break;
-    case MS1_OPERAND_BALL2 :
-      fields->f_ball2 = value;
-      break;
-    case MS1_OPERAND_BANKADDR :
-      fields->f_bankaddr = value;
-      break;
-    case MS1_OPERAND_BRC :
-      fields->f_brc = value;
-      break;
-    case MS1_OPERAND_BRC2 :
-      fields->f_brc2 = value;
-      break;
-    case MS1_OPERAND_CB1INCR :
-      fields->f_cb1incr = value;
-      break;
-    case MS1_OPERAND_CB1SEL :
-      fields->f_cb1sel = value;
-      break;
-    case MS1_OPERAND_CB2INCR :
-      fields->f_cb2incr = value;
-      break;
-    case MS1_OPERAND_CB2SEL :
-      fields->f_cb2sel = value;
-      break;
-    case MS1_OPERAND_CBRB :
-      fields->f_cbrb = value;
-      break;
-    case MS1_OPERAND_CBS :
-      fields->f_cbs = value;
-      break;
-    case MS1_OPERAND_CBX :
-      fields->f_cbx = value;
-      break;
-    case MS1_OPERAND_CCB :
-      fields->f_ccb = value;
-      break;
-    case MS1_OPERAND_CDB :
-      fields->f_cdb = value;
-      break;
-    case MS1_OPERAND_CELL :
-      fields->f_cell = value;
-      break;
-    case MS1_OPERAND_COLNUM :
-      fields->f_colnum = value;
-      break;
-    case MS1_OPERAND_CONTNUM :
-      fields->f_contnum = value;
-      break;
-    case MS1_OPERAND_CR :
-      fields->f_cr = value;
-      break;
-    case MS1_OPERAND_CTXDISP :
-      fields->f_ctxdisp = value;
-      break;
-    case MS1_OPERAND_DUP :
-      fields->f_dup = value;
-      break;
-    case MS1_OPERAND_FBDISP :
-      fields->f_fbdisp = value;
-      break;
-    case MS1_OPERAND_FBINCR :
-      fields->f_fbincr = value;
-      break;
-    case MS1_OPERAND_FRDR :
-      fields->f_dr = value;
-      break;
-    case MS1_OPERAND_FRDRRR :
-      fields->f_drrr = value;
-      break;
-    case MS1_OPERAND_FRSR1 :
-      fields->f_sr1 = value;
-      break;
-    case MS1_OPERAND_FRSR2 :
-      fields->f_sr2 = value;
-      break;
-    case MS1_OPERAND_ID :
-      fields->f_id = value;
-      break;
-    case MS1_OPERAND_IMM16 :
-      fields->f_imm16s = value;
-      break;
-    case MS1_OPERAND_IMM16L :
-      fields->f_imm16l = value;
-      break;
-    case MS1_OPERAND_IMM16O :
-      fields->f_imm16s = value;
-      break;
-    case MS1_OPERAND_IMM16Z :
-      fields->f_imm16u = value;
-      break;
-    case MS1_OPERAND_INCAMT :
-      fields->f_incamt = value;
-      break;
-    case MS1_OPERAND_INCR :
-      fields->f_incr = value;
-      break;
-    case MS1_OPERAND_LENGTH :
-      fields->f_length = value;
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      fields->f_loopo = value;
-      break;
-    case MS1_OPERAND_MASK :
-      fields->f_mask = value;
-      break;
-    case MS1_OPERAND_MASK1 :
-      fields->f_mask1 = value;
-      break;
-    case MS1_OPERAND_MODE :
-      fields->f_mode = value;
-      break;
-    case MS1_OPERAND_PERM :
-      fields->f_perm = value;
-      break;
-    case MS1_OPERAND_RBBC :
-      fields->f_rbbc = value;
-      break;
-    case MS1_OPERAND_RC :
-      fields->f_rc = value;
-      break;
-    case MS1_OPERAND_RC1 :
-      fields->f_rc1 = value;
-      break;
-    case MS1_OPERAND_RC2 :
-      fields->f_rc2 = value;
-      break;
-    case MS1_OPERAND_RC3 :
-      fields->f_rc3 = value;
-      break;
-    case MS1_OPERAND_RCNUM :
-      fields->f_rcnum = value;
-      break;
-    case MS1_OPERAND_RDA :
-      fields->f_rda = value;
-      break;
-    case MS1_OPERAND_ROWNUM :
-      fields->f_rownum = value;
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      fields->f_rownum1 = value;
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      fields->f_rownum2 = value;
-      break;
-    case MS1_OPERAND_SIZE :
-      fields->f_size = value;
-      break;
-    case MS1_OPERAND_TYPE :
-      fields->f_type = value;
-      break;
-    case MS1_OPERAND_WR :
-      fields->f_wr = value;
-      break;
-    case MS1_OPERAND_XMODE :
-      fields->f_xmode = value;
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"),
-		       opindex);
-      abort ();
-  }
-}
-
-void
-ms1_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-			     int opindex,
-			     CGEN_FIELDS * fields,
-			     bfd_vma value)
-{
-  switch (opindex)
-    {
-    case MS1_OPERAND_A23 :
-      fields->f_a23 = value;
-      break;
-    case MS1_OPERAND_BALL :
-      fields->f_ball = value;
-      break;
-    case MS1_OPERAND_BALL2 :
-      fields->f_ball2 = value;
-      break;
-    case MS1_OPERAND_BANKADDR :
-      fields->f_bankaddr = value;
-      break;
-    case MS1_OPERAND_BRC :
-      fields->f_brc = value;
-      break;
-    case MS1_OPERAND_BRC2 :
-      fields->f_brc2 = value;
-      break;
-    case MS1_OPERAND_CB1INCR :
-      fields->f_cb1incr = value;
-      break;
-    case MS1_OPERAND_CB1SEL :
-      fields->f_cb1sel = value;
-      break;
-    case MS1_OPERAND_CB2INCR :
-      fields->f_cb2incr = value;
-      break;
-    case MS1_OPERAND_CB2SEL :
-      fields->f_cb2sel = value;
-      break;
-    case MS1_OPERAND_CBRB :
-      fields->f_cbrb = value;
-      break;
-    case MS1_OPERAND_CBS :
-      fields->f_cbs = value;
-      break;
-    case MS1_OPERAND_CBX :
-      fields->f_cbx = value;
-      break;
-    case MS1_OPERAND_CCB :
-      fields->f_ccb = value;
-      break;
-    case MS1_OPERAND_CDB :
-      fields->f_cdb = value;
-      break;
-    case MS1_OPERAND_CELL :
-      fields->f_cell = value;
-      break;
-    case MS1_OPERAND_COLNUM :
-      fields->f_colnum = value;
-      break;
-    case MS1_OPERAND_CONTNUM :
-      fields->f_contnum = value;
-      break;
-    case MS1_OPERAND_CR :
-      fields->f_cr = value;
-      break;
-    case MS1_OPERAND_CTXDISP :
-      fields->f_ctxdisp = value;
-      break;
-    case MS1_OPERAND_DUP :
-      fields->f_dup = value;
-      break;
-    case MS1_OPERAND_FBDISP :
-      fields->f_fbdisp = value;
-      break;
-    case MS1_OPERAND_FBINCR :
-      fields->f_fbincr = value;
-      break;
-    case MS1_OPERAND_FRDR :
-      fields->f_dr = value;
-      break;
-    case MS1_OPERAND_FRDRRR :
-      fields->f_drrr = value;
-      break;
-    case MS1_OPERAND_FRSR1 :
-      fields->f_sr1 = value;
-      break;
-    case MS1_OPERAND_FRSR2 :
-      fields->f_sr2 = value;
-      break;
-    case MS1_OPERAND_ID :
-      fields->f_id = value;
-      break;
-    case MS1_OPERAND_IMM16 :
-      fields->f_imm16s = value;
-      break;
-    case MS1_OPERAND_IMM16L :
-      fields->f_imm16l = value;
-      break;
-    case MS1_OPERAND_IMM16O :
-      fields->f_imm16s = value;
-      break;
-    case MS1_OPERAND_IMM16Z :
-      fields->f_imm16u = value;
-      break;
-    case MS1_OPERAND_INCAMT :
-      fields->f_incamt = value;
-      break;
-    case MS1_OPERAND_INCR :
-      fields->f_incr = value;
-      break;
-    case MS1_OPERAND_LENGTH :
-      fields->f_length = value;
-      break;
-    case MS1_OPERAND_LOOPSIZE :
-      fields->f_loopo = value;
-      break;
-    case MS1_OPERAND_MASK :
-      fields->f_mask = value;
-      break;
-    case MS1_OPERAND_MASK1 :
-      fields->f_mask1 = value;
-      break;
-    case MS1_OPERAND_MODE :
-      fields->f_mode = value;
-      break;
-    case MS1_OPERAND_PERM :
-      fields->f_perm = value;
-      break;
-    case MS1_OPERAND_RBBC :
-      fields->f_rbbc = value;
-      break;
-    case MS1_OPERAND_RC :
-      fields->f_rc = value;
-      break;
-    case MS1_OPERAND_RC1 :
-      fields->f_rc1 = value;
-      break;
-    case MS1_OPERAND_RC2 :
-      fields->f_rc2 = value;
-      break;
-    case MS1_OPERAND_RC3 :
-      fields->f_rc3 = value;
-      break;
-    case MS1_OPERAND_RCNUM :
-      fields->f_rcnum = value;
-      break;
-    case MS1_OPERAND_RDA :
-      fields->f_rda = value;
-      break;
-    case MS1_OPERAND_ROWNUM :
-      fields->f_rownum = value;
-      break;
-    case MS1_OPERAND_ROWNUM1 :
-      fields->f_rownum1 = value;
-      break;
-    case MS1_OPERAND_ROWNUM2 :
-      fields->f_rownum2 = value;
-      break;
-    case MS1_OPERAND_SIZE :
-      fields->f_size = value;
-      break;
-    case MS1_OPERAND_TYPE :
-      fields->f_type = value;
-      break;
-    case MS1_OPERAND_WR :
-      fields->f_wr = value;
-      break;
-    case MS1_OPERAND_XMODE :
-      fields->f_xmode = value;
-      break;
-
-    default :
-      /* xgettext:c-format */
-      fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"),
-		       opindex);
-      abort ();
-  }
-}
-
-/* Function to call before using the instruction builder tables.  */
-
-void
-ms1_cgen_init_ibld_table (CGEN_CPU_DESC cd)
-{
-  cd->insert_handlers = & ms1_cgen_insert_handlers[0];
-  cd->extract_handlers = & ms1_cgen_extract_handlers[0];
-
-  cd->insert_operand = ms1_cgen_insert_operand;
-  cd->extract_operand = ms1_cgen_extract_operand;
-
-  cd->get_int_operand = ms1_cgen_get_int_operand;
-  cd->set_int_operand = ms1_cgen_set_int_operand;
-  cd->get_vma_operand = ms1_cgen_get_vma_operand;
-  cd->set_vma_operand = ms1_cgen_set_vma_operand;
-}

Deleted: branches/binutils/package/opcodes/ms1-opc.c
===================================================================
--- branches/binutils/package/opcodes/ms1-opc.c	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-opc.c	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,948 +0,0 @@
-/* Instruction opcode table for ms1.
-
-THIS FILE IS MACHINE GENERATED WITH CGEN.
-
-Copyright 1996-2005 Free Software Foundation, Inc.
-
-This file is part of the GNU Binutils and/or GDB, the GNU debugger.
-
-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 2, 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; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#include "sysdep.h"
-#include "ansidecl.h"
-#include "bfd.h"
-#include "symcat.h"
-#include "ms1-desc.h"
-#include "ms1-opc.h"
-#include "libiberty.h"
-
-/* -- opc.c */
-#include "safe-ctype.h"
-
-/* Special check to ensure that instruction exists for given machine.  */
-
-int
-ms1_cgen_insn_supported (CGEN_CPU_DESC cd,
-			 const CGEN_INSN *insn)
-{
-  int machs = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH);
-
-  /* No mach attribute?  Assume it's supported for all machs.  */
-  if (machs == 0)
-    return 1;
-  
-  return ((machs & cd->machs) != 0);
-}
-
-/* A better hash function for instruction mnemonics.  */
-
-unsigned int
-ms1_asm_hash (const char* insn)
-{
-  unsigned int hash;
-  const char* m = insn;
-
-  for (hash = 0; *m && ! ISSPACE (*m); m++)
-    hash = (hash * 23) ^ (0x1F & TOLOWER (*m));
-
-  /* printf ("%s %d\n", insn, (hash % CGEN_ASM_HASH_SIZE)); */
-
-  return hash % CGEN_ASM_HASH_SIZE;
-}
-
-
-/* -- asm.c */
-/* The hash functions are recorded here to help keep assembler code out of
-   the disassembler and vice versa.  */
-
-static int asm_hash_insn_p        (const CGEN_INSN *);
-static unsigned int asm_hash_insn (const char *);
-static int dis_hash_insn_p        (const CGEN_INSN *);
-static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
-
-/* Instruction formats.  */
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define F(f) & ms1_cgen_ifld_table[MS1_##f]
-#else
-#define F(f) & ms1_cgen_ifld_table[MS1_/**/f]
-#endif
-static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
-  0, 0, 0x0, { { 0 } }
-};
-
-static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000fff, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_DRRR) }, { F (F_UU12) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_DR) }, { F (F_IMM16S) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_addui ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_DR) }, { F (F_IMM16U) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
-  32, 32, 0xffffffff, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_UU24) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_ldui ATTRIBUTE_UNUSED = {
-  32, 32, 0xfff00000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_UU4B) }, { F (F_DR) }, { F (F_IMM16U) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_brlt ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_IMM16S) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_jmp ATTRIBUTE_UNUSED = {
-  32, 32, 0xffff0000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_UU4B) }, { F (F_UU4A) }, { F (F_IMM16S) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_jal ATTRIBUTE_UNUSED = {
-  32, 32, 0xff0f0fff, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_UU4A) }, { F (F_DRRR) }, { F (F_UU12) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_dbnz ATTRIBUTE_UNUSED = {
-  32, 32, 0xff0f0000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_UU4A) }, { F (F_IMM16S) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_ei ATTRIBUTE_UNUSED = {
-  32, 32, 0xffffffff, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_UU4B) }, { F (F_UU4A) }, { F (F_UU16) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_si ATTRIBUTE_UNUSED = {
-  32, 32, 0xffff0fff, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_UU4B) }, { F (F_UU4A) }, { F (F_DRRR) }, { F (F_UU12) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_reti ATTRIBUTE_UNUSED = {
-  32, 32, 0xff0fffff, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_UU4A) }, { F (F_UU16) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_stw ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_IMM16S) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_ldctxt ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000e00, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_UU_2_25) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_RC) }, { F (F_RCNUM) }, { F (F_UU_3_11) }, { F (F_CONTNUM) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_ldfb ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_UU_2_25) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_IMM16U) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_fbcb ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc00f000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_BALL) }, { F (F_BRC) }, { F (F_UU_4_15) }, { F (F_RC) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mfbcb ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc00f000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_UU_4_15) }, { F (F_RC1) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_fbcci ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_BALL) }, { F (F_BRC) }, { F (F_FBDISP) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mfbcci ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_FBDISP) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_fbcbdr ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_BALL2) }, { F (F_BRC2) }, { F (F_RC1) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_rcfbcb ATTRIBUTE_UNUSED = {
-  32, 32, 0xfcc08000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_UU_2_23) }, { F (F_TYPE) }, { F (F_BALL) }, { F (F_BRC) }, { F (F_UU_1_15) }, { F (F_ROWNUM) }, { F (F_RC1) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mrcfbcb ATTRIBUTE_UNUSED = {
-  32, 32, 0xfcc08000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_UU_2_23) }, { F (F_TYPE) }, { F (F_SR2) }, { F (F_UU_1_15) }, { F (F_ROWNUM) }, { F (F_RC1) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_cbcast ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000380, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_MASK) }, { F (F_UU_3_9) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_dupcbcast ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_MASK) }, { F (F_CELL) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_wfbi ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_BANKADDR) }, { F (F_ROWNUM1) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_wfb ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000040, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_UU_2_25) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_FBDISP) }, { F (F_ROWNUM2) }, { F (F_UU_1_6) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_rcrisc ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc080000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_UU_1_19) }, { F (F_COLNUM) }, { F (F_DRRR) }, { F (F_RC1) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_fbcbinc ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RBBC) }, { F (F_SR1) }, { F (F_INCAMT) }, { F (F_RC1) }, { F (F_CBRB) }, { F (F_CELL) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_rcxmode ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RDA) }, { F (F_WR) }, { F (F_XMODE) }, { F (F_MASK1) }, { F (F_SR2) }, { F (F_FBDISP) }, { F (F_ROWNUM2) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_interleaver ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc008000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_MODE) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_UU_1_15) }, { F (F_ID) }, { F (F_SIZE) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_wfbinc ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RDA) }, { F (F_WR) }, { F (F_FBINCR) }, { F (F_BALL) }, { F (F_COLNUM) }, { F (F_LENGTH) }, { F (F_ROWNUM1) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mwfbinc ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RDA) }, { F (F_WR) }, { F (F_FBINCR) }, { F (F_SR2) }, { F (F_LENGTH) }, { F (F_ROWNUM1) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_wfbincr ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RDA) }, { F (F_WR) }, { F (F_SR1) }, { F (F_BALL) }, { F (F_COLNUM) }, { F (F_LENGTH) }, { F (F_ROWNUM1) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mwfbincr ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_RDA) }, { F (F_WR) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_LENGTH) }, { F (F_ROWNUM1) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_fbcbincs ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_PERM) }, { F (F_A23) }, { F (F_CR) }, { F (F_CBS) }, { F (F_INCR) }, { F (F_CCB) }, { F (F_CDB) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mfbcbincs ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_PERM) }, { F (F_SR1) }, { F (F_CBS) }, { F (F_INCR) }, { F (F_CCB) }, { F (F_CDB) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_fbcbincrs ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc008000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_PERM) }, { F (F_SR1) }, { F (F_BALL) }, { F (F_COLNUM) }, { F (F_UU_1_15) }, { F (F_CBX) }, { F (F_CCB) }, { F (F_CDB) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_mfbcbincrs ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc008000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_PERM) }, { F (F_SR1) }, { F (F_SR2) }, { F (F_UU_1_15) }, { F (F_CBX) }, { F (F_CCB) }, { F (F_CDB) }, { F (F_ROWNUM2) }, { F (F_DUP) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_loop ATTRIBUTE_UNUSED = {
-  32, 32, 0xff0fff00, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_SR1) }, { F (F_UU4A) }, { F (F_UU8) }, { F (F_LOOPO) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_loopi ATTRIBUTE_UNUSED = {
-  32, 32, 0xff000000, { { F (F_MSYS) }, { F (F_OPC) }, { F (F_IMM) }, { F (F_IMM16L) }, { F (F_LOOPO) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_dfbc ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_CB1SEL) }, { F (F_CB2SEL) }, { F (F_CB1INCR) }, { F (F_CB2INCR) }, { F (F_RC3) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_dwfb ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000080, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_CB1SEL) }, { F (F_CB2SEL) }, { F (F_CB1INCR) }, { F (F_CB2INCR) }, { F (F_UU1) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-static const CGEN_IFMT ifmt_dfbr ATTRIBUTE_UNUSED = {
-  32, 32, 0xfc000000, { { F (F_MSYS) }, { F (F_MSOPC) }, { F (F_CB1SEL) }, { F (F_CB2SEL) }, { F (F_SR2) }, { F (F_LENGTH) }, { F (F_ROWNUM1) }, { F (F_ROWNUM2) }, { F (F_RC2) }, { F (F_CTXDISP) }, { 0 } }
-};
-
-#undef F
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define A(a) (1 << CGEN_INSN_##a)
-#else
-#define A(a) (1 << CGEN_INSN_/**/a)
-#endif
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define OPERAND(op) MS1_OPERAND_##op
-#else
-#define OPERAND(op) MS1_OPERAND_/**/op
-#endif
-#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
-#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
-
-/* The instruction table.  */
-
-static const CGEN_OPCODE ms1_cgen_insn_opcode_table[MAX_INSNS] =
-{
-  /* Special null first entry.
-     A `num' value of zero is thus invalid.
-     Also, the special `invalid' insn resides here.  */
-  { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
-/* add $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x0 }
-  },
-/* addu $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x2000000 }
-  },
-/* addi $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x1000000 }
-  },
-/* addui $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x3000000 }
-  },
-/* sub $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x4000000 }
-  },
-/* subu $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x6000000 }
-  },
-/* subi $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x5000000 }
-  },
-/* subui $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x7000000 }
-  },
-/* mul $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x8000000 }
-  },
-/* muli $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x9000000 }
-  },
-/* and $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x10000000 }
-  },
-/* andi $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x11000000 }
-  },
-/* or $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x12000000 }
-  },
-/* nop */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, 0 } },
-    & ifmt_nop, { 0x12000000 }
-  },
-/* ori $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x13000000 }
-  },
-/* xor $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x14000000 }
-  },
-/* xori $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x15000000 }
-  },
-/* nand $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x16000000 }
-  },
-/* nandi $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x17000000 }
-  },
-/* nor $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x18000000 }
-  },
-/* nori $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x19000000 }
-  },
-/* xnor $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x1a000000 }
-  },
-/* xnori $frdr,$frsr1,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_addui, { 0x1b000000 }
-  },
-/* ldui $frdr,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_ldui, { 0x1d000000 }
-  },
-/* lsl $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x20000000 }
-  },
-/* lsli $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x21000000 }
-  },
-/* lsr $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x22000000 }
-  },
-/* lsri $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x23000000 }
-  },
-/* asr $frdrrr,$frsr1,$frsr2 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), ',', OP (FRSR2), 0 } },
-    & ifmt_add, { 0x24000000 }
-  },
-/* asri $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x25000000 }
-  },
-/* brlt $frsr1,$frsr2,$imm16o */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', OP (IMM16O), 0 } },
-    & ifmt_brlt, { 0x31000000 }
-  },
-/* brle $frsr1,$frsr2,$imm16o */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', OP (IMM16O), 0 } },
-    & ifmt_brlt, { 0x33000000 }
-  },
-/* breq $frsr1,$frsr2,$imm16o */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', OP (IMM16O), 0 } },
-    & ifmt_brlt, { 0x35000000 }
-  },
-/* brne $frsr1,$frsr2,$imm16o */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', OP (IMM16O), 0 } },
-    & ifmt_brlt, { 0x3b000000 }
-  },
-/* jmp $imm16o */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (IMM16O), 0 } },
-    & ifmt_jmp, { 0x37000000 }
-  },
-/* jal $frdrrr,$frsr1 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', OP (FRSR1), 0 } },
-    & ifmt_jal, { 0x38000000 }
-  },
-/* dbnz $frsr1,$imm16o */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (IMM16O), 0 } },
-    & ifmt_dbnz, { 0x3d000000 }
-  },
-/* ei */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, 0 } },
-    & ifmt_ei, { 0x60000000 }
-  },
-/* di */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, 0 } },
-    & ifmt_ei, { 0x62000000 }
-  },
-/* si $frdrrr */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), 0 } },
-    & ifmt_si, { 0x64000000 }
-  },
-/* reti $frsr1 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), 0 } },
-    & ifmt_reti, { 0x66000000 }
-  },
-/* ldw $frdr,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDR), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_addi, { 0x41000000 }
-  },
-/* stw $frsr2,$frsr1,#$imm16 */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR2), ',', OP (FRSR1), ',', '#', OP (IMM16), 0 } },
-    & ifmt_stw, { 0x43000000 }
-  },
-/* break */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, 0 } },
-    & ifmt_nop, { 0x68000000 }
-  },
-/* iflush */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, 0 } },
-    & ifmt_nop, { 0x6a000000 }
-  },
-/* ldctxt $frsr1,$frsr2,#$rc,#$rcnum,#$contnum */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (RC), ',', '#', OP (RCNUM), ',', '#', OP (CONTNUM), 0 } },
-    & ifmt_ldctxt, { 0x80000000 }
-  },
-/* ldfb $frsr1,$frsr2,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_ldfb, { 0x84000000 }
-  },
-/* stfb $frsr1,$frsr2,#$imm16z */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (IMM16Z), 0 } },
-    & ifmt_ldfb, { 0x88000000 }
-  },
-/* fbcb $frsr1,#$rbbc,#$ball,#$brc,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', '#', OP (BALL), ',', '#', OP (BRC), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcb, { 0x8c000000 }
-  },
-/* mfbcb $frsr1,#$rbbc,$frsr2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', OP (FRSR2), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcb, { 0x90000000 }
-  },
-/* fbcci $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', '#', OP (BALL), ',', '#', OP (BRC), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcci, { 0x94000000 }
-  },
-/* fbrci $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', '#', OP (BALL), ',', '#', OP (BRC), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcci, { 0x98000000 }
-  },
-/* fbcri $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', '#', OP (BALL), ',', '#', OP (BRC), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcci, { 0x9c000000 }
-  },
-/* fbrri $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', '#', OP (BALL), ',', '#', OP (BRC), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcci, { 0xa0000000 }
-  },
-/* mfbcci $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', OP (FRSR2), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcci, { 0xa4000000 }
-  },
-/* mfbrci $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', OP (FRSR2), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcci, { 0xa8000000 }
-  },
-/* mfbcri $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', OP (FRSR2), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcci, { 0xac000000 }
-  },
-/* mfbrri $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', OP (FRSR2), ',', '#', OP (FBDISP), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcci, { 0xb0000000 }
-  },
-/* fbcbdr $frsr1,#$rbbc,$frsr2,#$ball2,#$brc2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', OP (FRSR2), ',', '#', OP (BALL2), ',', '#', OP (BRC2), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcbdr, { 0xb4000000 }
-  },
-/* rcfbcb #$rbbc,#$type,#$ball,#$brc,#$rownum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (RBBC), ',', '#', OP (TYPE), ',', '#', OP (BALL), ',', '#', OP (BRC), ',', '#', OP (ROWNUM), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_rcfbcb, { 0xb8000000 }
-  },
-/* mrcfbcb $frsr2,#$rbbc,#$type,#$rownum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR2), ',', '#', OP (RBBC), ',', '#', OP (TYPE), ',', '#', OP (ROWNUM), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mrcfbcb, { 0xbc000000 }
-  },
-/* cbcast #$mask,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (MASK), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_cbcast, { 0xc0000000 }
-  },
-/* dupcbcast #$mask,#$cell,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (MASK), ',', '#', OP (CELL), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_dupcbcast, { 0xc4000000 }
-  },
-/* wfbi #$bankaddr,#$rownum1,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (BANKADDR), ',', '#', OP (ROWNUM1), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_wfbi, { 0xc8000000 }
-  },
-/* wfb $frsr1,$frsr2,#$fbdisp,#$rownum2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (FBDISP), ',', '#', OP (ROWNUM2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_wfb, { 0xcc000000 }
-  },
-/* rcrisc $frdrrr,#$rbbc,$frsr1,#$colnum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRDRRR), ',', '#', OP (RBBC), ',', OP (FRSR1), ',', '#', OP (COLNUM), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_rcrisc, { 0xd0000000 }
-  },
-/* fbcbinc $frsr1,#$rbbc,#$incamt,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RBBC), ',', '#', OP (INCAMT), ',', '#', OP (RC1), ',', '#', OP (CBRB), ',', '#', OP (CELL), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcbinc, { 0xd4000000 }
-  },
-/* rcxmode $frsr2,#$rda,#$wr,#$xmode,#$mask1,#$fbdisp,#$rownum2,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR2), ',', '#', OP (RDA), ',', '#', OP (WR), ',', '#', OP (XMODE), ',', '#', OP (MASK1), ',', '#', OP (FBDISP), ',', '#', OP (ROWNUM2), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_rcxmode, { 0xd8000000 }
-  },
-/* intlvr $frsr1,#$mode,$frsr2,#$id,#$size */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (MODE), ',', OP (FRSR2), ',', '#', OP (ID), ',', '#', OP (SIZE), 0 } },
-    & ifmt_interleaver, { 0xdc000000 }
-  },
-/* wfbinc #$rda,#$wr,#$fbincr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (RDA), ',', '#', OP (WR), ',', '#', OP (FBINCR), ',', '#', OP (BALL), ',', '#', OP (COLNUM), ',', '#', OP (LENGTH), ',', '#', OP (ROWNUM1), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_wfbinc, { 0xe0000000 }
-  },
-/* mwfbinc $frsr2,#$rda,#$wr,#$fbincr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR2), ',', '#', OP (RDA), ',', '#', OP (WR), ',', '#', OP (FBINCR), ',', '#', OP (LENGTH), ',', '#', OP (ROWNUM1), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mwfbinc, { 0xe4000000 }
-  },
-/* wfbincr $frsr1,#$rda,#$wr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (RDA), ',', '#', OP (WR), ',', '#', OP (BALL), ',', '#', OP (COLNUM), ',', '#', OP (LENGTH), ',', '#', OP (ROWNUM1), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_wfbincr, { 0xe8000000 }
-  },
-/* mwfbincr $frsr1,$frsr2,#$rda,#$wr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (RDA), ',', '#', OP (WR), ',', '#', OP (LENGTH), ',', '#', OP (ROWNUM1), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mwfbincr, { 0xec000000 }
-  },
-/* fbcbincs #$perm,#$a23,#$cr,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (PERM), ',', '#', OP (A23), ',', '#', OP (CR), ',', '#', OP (CBS), ',', '#', OP (INCR), ',', '#', OP (CCB), ',', '#', OP (CDB), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcbincs, { 0xf0000000 }
-  },
-/* mfbcbincs $frsr1,#$perm,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (PERM), ',', '#', OP (CBS), ',', '#', OP (INCR), ',', '#', OP (CCB), ',', '#', OP (CDB), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcbincs, { 0xf4000000 }
-  },
-/* fbcbincrs $frsr1,#$perm,#$ball,#$colnum,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', '#', OP (PERM), ',', '#', OP (BALL), ',', '#', OP (COLNUM), ',', '#', OP (CBX), ',', '#', OP (CCB), ',', '#', OP (CDB), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_fbcbincrs, { 0xf8000000 }
-  },
-/* mfbcbincrs $frsr1,$frsr2,#$perm,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (FRSR2), ',', '#', OP (PERM), ',', '#', OP (CBX), ',', '#', OP (CCB), ',', '#', OP (CDB), ',', '#', OP (ROWNUM2), ',', '#', OP (DUP), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_mfbcbincrs, { 0xfc000000 }
-  },
-/* loop $frsr1,$loopsize */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', OP (FRSR1), ',', OP (LOOPSIZE), 0 } },
-    & ifmt_loop, { 0x3e000000 }
-  },
-/* loopi #$imm16l,$loopsize */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (IMM16L), ',', OP (LOOPSIZE), 0 } },
-    & ifmt_loopi, { 0x3f000000 }
-  },
-/* dfbc #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', '#', OP (CB1INCR), ',', '#', OP (CB2INCR), ',', '#', OP (RC3), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_dfbc, { 0x80000000 }
-  },
-/* dwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', '#', OP (CB1INCR), ',', '#', OP (CB2INCR), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_dwfb, { 0x84000000 }
-  },
-/* fbwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', '#', OP (CB1INCR), ',', '#', OP (CB2INCR), ',', '#', OP (RC3), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_dfbc, { 0x88000000 }
-  },
-/* dfbr #$cb1sel,#$cb2sel,$frsr2,#$length,#$rownum1,#$rownum2,#$rc2,#$ctxdisp */
-  {
-    { 0, 0, 0, 0 },
-    { { MNEM, ' ', '#', OP (CB1SEL), ',', '#', OP (CB2SEL), ',', OP (FRSR2), ',', '#', OP (LENGTH), ',', '#', OP (ROWNUM1), ',', '#', OP (ROWNUM2), ',', '#', OP (RC2), ',', '#', OP (CTXDISP), 0 } },
-    & ifmt_dfbr, { 0x8c000000 }
-  },
-};
-
-#undef A
-#undef OPERAND
-#undef MNEM
-#undef OP
-
-/* Formats for ALIAS macro-insns.  */
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define F(f) & ms1_cgen_ifld_table[MS1_##f]
-#else
-#define F(f) & ms1_cgen_ifld_table[MS1_/**/f]
-#endif
-#undef F
-
-/* Each non-simple macro entry points to an array of expansion possibilities.  */
-
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define A(a) (1 << CGEN_INSN_##a)
-#else
-#define A(a) (1 << CGEN_INSN_/**/a)
-#endif
-#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
-#define OPERAND(op) MS1_OPERAND_##op
-#else
-#define OPERAND(op) MS1_OPERAND_/**/op
-#endif
-#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
-#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
-
-/* The macro instruction table.  */
-
-static const CGEN_IBASE ms1_cgen_macro_insn_table[] =
-{
-};
-
-/* The macro instruction opcode table.  */
-
-static const CGEN_OPCODE ms1_cgen_macro_insn_opcode_table[] =
-{
-};
-
-#undef A
-#undef OPERAND
-#undef MNEM
-#undef OP
-
-#ifndef CGEN_ASM_HASH_P
-#define CGEN_ASM_HASH_P(insn) 1
-#endif
-
-#ifndef CGEN_DIS_HASH_P
-#define CGEN_DIS_HASH_P(insn) 1
-#endif
-
-/* Return non-zero if INSN is to be added to the hash table.
-   Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file.  */
-
-static int
-asm_hash_insn_p (insn)
-     const CGEN_INSN *insn ATTRIBUTE_UNUSED;
-{
-  return CGEN_ASM_HASH_P (insn);
-}
-
-static int
-dis_hash_insn_p (insn)
-     const CGEN_INSN *insn;
-{
-  /* If building the hash table and the NO-DIS attribute is present,
-     ignore.  */
-  if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
-    return 0;
-  return CGEN_DIS_HASH_P (insn);
-}
-
-#ifndef CGEN_ASM_HASH
-#define CGEN_ASM_HASH_SIZE 127
-#ifdef CGEN_MNEMONIC_OPERANDS
-#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
-#else
-#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
-#endif
-#endif
-
-/* It doesn't make much sense to provide a default here,
-   but while this is under development we do.
-   BUFFER is a pointer to the bytes of the insn, target order.
-   VALUE is the first base_insn_bitsize bits as an int in host order.  */
-
-#ifndef CGEN_DIS_HASH
-#define CGEN_DIS_HASH_SIZE 256
-#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
-#endif
-
-/* The result is the hash value of the insn.
-   Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file.  */
-
-static unsigned int
-asm_hash_insn (mnem)
-     const char * mnem;
-{
-  return CGEN_ASM_HASH (mnem);
-}
-
-/* BUF is a pointer to the bytes of the insn, target order.
-   VALUE is the first base_insn_bitsize bits as an int in host order.  */
-
-static unsigned int
-dis_hash_insn (buf, value)
-     const char * buf ATTRIBUTE_UNUSED;
-     CGEN_INSN_INT value ATTRIBUTE_UNUSED;
-{
-  return CGEN_DIS_HASH (buf, value);
-}
-
-/* Set the recorded length of the insn in the CGEN_FIELDS struct.  */
-
-static void
-set_fields_bitsize (CGEN_FIELDS *fields, int size)
-{
-  CGEN_FIELDS_BITSIZE (fields) = size;
-}
-
-/* Function to call before using the operand instance table.
-   This plugs the opcode entries and macro instructions into the cpu table.  */
-
-void
-ms1_cgen_init_opcode_table (CGEN_CPU_DESC cd)
-{
-  int i;
-  int num_macros = (sizeof (ms1_cgen_macro_insn_table) /
-		    sizeof (ms1_cgen_macro_insn_table[0]));
-  const CGEN_IBASE *ib = & ms1_cgen_macro_insn_table[0];
-  const CGEN_OPCODE *oc = & ms1_cgen_macro_insn_opcode_table[0];
-  CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
-
-  memset (insns, 0, num_macros * sizeof (CGEN_INSN));
-  for (i = 0; i < num_macros; ++i)
-    {
-      insns[i].base = &ib[i];
-      insns[i].opcode = &oc[i];
-      ms1_cgen_build_insn_regex (& insns[i]);
-    }
-  cd->macro_insn_table.init_entries = insns;
-  cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
-  cd->macro_insn_table.num_init_entries = num_macros;
-
-  oc = & ms1_cgen_insn_opcode_table[0];
-  insns = (CGEN_INSN *) cd->insn_table.init_entries;
-  for (i = 0; i < MAX_INSNS; ++i)
-    {
-      insns[i].opcode = &oc[i];
-      ms1_cgen_build_insn_regex (& insns[i]);
-    }
-
-  cd->sizeof_fields = sizeof (CGEN_FIELDS);
-  cd->set_fields_bitsize = set_fields_bitsize;
-
-  cd->asm_hash_p = asm_hash_insn_p;
-  cd->asm_hash = asm_hash_insn;
-  cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
-
-  cd->dis_hash_p = dis_hash_insn_p;
-  cd->dis_hash = dis_hash_insn;
-  cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
-}

Deleted: branches/binutils/package/opcodes/ms1-opc.h
===================================================================
--- branches/binutils/package/opcodes/ms1-opc.h	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/ms1-opc.h	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,179 +0,0 @@
-/* Instruction opcode header for ms1.
-
-THIS FILE IS MACHINE GENERATED WITH CGEN.
-
-Copyright 1996-2005 Free Software Foundation, Inc.
-
-This file is part of the GNU Binutils and/or GDB, the GNU debugger.
-
-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 2, 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; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
-
-*/
-
-#ifndef MS1_OPC_H
-#define MS1_OPC_H
-
-/* -- opc.h */
-
-/* Check applicability of instructions against machines.  */
-#define CGEN_VALIDATE_INSN_SUPPORTED
-
-/* Allows reason codes to be output when assembler errors occur.  */
-#define CGEN_VERBOSE_ASSEMBLER_ERRORS
-
-/* Override disassembly hashing - there are variable bits in the top
-   byte of these instructions.  */
-#define CGEN_DIS_HASH_SIZE 8
-#define CGEN_DIS_HASH(buf, value) (((* (unsigned char *) (buf)) >> 5) % CGEN_DIS_HASH_SIZE)
-
-#define CGEN_ASM_HASH_SIZE 127
-#define CGEN_ASM_HASH(insn) ms1_asm_hash (insn)
-
-extern unsigned int ms1_asm_hash (const char *);
-
-extern int ms1_cgen_insn_supported (CGEN_CPU_DESC, const CGEN_INSN *);
-
-
-/* -- opc.c */
-/* Enum declaration for ms1 instruction types.  */
-typedef enum cgen_insn_type {
-  MS1_INSN_INVALID, MS1_INSN_ADD, MS1_INSN_ADDU, MS1_INSN_ADDI
- , MS1_INSN_ADDUI, MS1_INSN_SUB, MS1_INSN_SUBU, MS1_INSN_SUBI
- , MS1_INSN_SUBUI, MS1_INSN_MUL, MS1_INSN_MULI, MS1_INSN_AND
- , MS1_INSN_ANDI, MS1_INSN_OR, MS1_INSN_NOP, MS1_INSN_ORI
- , MS1_INSN_XOR, MS1_INSN_XORI, MS1_INSN_NAND, MS1_INSN_NANDI
- , MS1_INSN_NOR, MS1_INSN_NORI, MS1_INSN_XNOR, MS1_INSN_XNORI
- , MS1_INSN_LDUI, MS1_INSN_LSL, MS1_INSN_LSLI, MS1_INSN_LSR
- , MS1_INSN_LSRI, MS1_INSN_ASR, MS1_INSN_ASRI, MS1_INSN_BRLT
- , MS1_INSN_BRLE, MS1_INSN_BREQ, MS1_INSN_BRNE, MS1_INSN_JMP
- , MS1_INSN_JAL, MS1_INSN_DBNZ, MS1_INSN_EI, MS1_INSN_DI
- , MS1_INSN_SI, MS1_INSN_RETI, MS1_INSN_LDW, MS1_INSN_STW
- , MS1_INSN_BREAK, MS1_INSN_IFLUSH, MS1_INSN_LDCTXT, MS1_INSN_LDFB
- , MS1_INSN_STFB, MS1_INSN_FBCB, MS1_INSN_MFBCB, MS1_INSN_FBCCI
- , MS1_INSN_FBRCI, MS1_INSN_FBCRI, MS1_INSN_FBRRI, MS1_INSN_MFBCCI
- , MS1_INSN_MFBRCI, MS1_INSN_MFBCRI, MS1_INSN_MFBRRI, MS1_INSN_FBCBDR
- , MS1_INSN_RCFBCB, MS1_INSN_MRCFBCB, MS1_INSN_CBCAST, MS1_INSN_DUPCBCAST
- , MS1_INSN_WFBI, MS1_INSN_WFB, MS1_INSN_RCRISC, MS1_INSN_FBCBINC
- , MS1_INSN_RCXMODE, MS1_INSN_INTERLEAVER, MS1_INSN_WFBINC, MS1_INSN_MWFBINC
- , MS1_INSN_WFBINCR, MS1_INSN_MWFBINCR, MS1_INSN_FBCBINCS, MS1_INSN_MFBCBINCS
- , MS1_INSN_FBCBINCRS, MS1_INSN_MFBCBINCRS, MS1_INSN_LOOP, MS1_INSN_LOOPI
- , MS1_INSN_DFBC, MS1_INSN_DWFB, MS1_INSN_FBWFB, MS1_INSN_DFBR
-} CGEN_INSN_TYPE;
-
-/* Index of `invalid' insn place holder.  */
-#define CGEN_INSN_INVALID MS1_INSN_INVALID
-
-/* Total number of insns in table.  */
-#define MAX_INSNS ((int) MS1_INSN_DFBR + 1)
-
-/* This struct records data prior to insertion or after extraction.  */
-struct cgen_fields
-{
-  int length;
-  long f_nil;
-  long f_anyof;
-  long f_msys;
-  long f_opc;
-  long f_imm;
-  long f_uu24;
-  long f_sr1;
-  long f_sr2;
-  long f_dr;
-  long f_drrr;
-  long f_imm16u;
-  long f_imm16s;
-  long f_imm16a;
-  long f_uu4a;
-  long f_uu4b;
-  long f_uu12;
-  long f_uu8;
-  long f_uu16;
-  long f_uu1;
-  long f_msopc;
-  long f_uu_26_25;
-  long f_mask;
-  long f_bankaddr;
-  long f_rda;
-  long f_uu_2_25;
-  long f_rbbc;
-  long f_perm;
-  long f_mode;
-  long f_uu_1_24;
-  long f_wr;
-  long f_fbincr;
-  long f_uu_2_23;
-  long f_xmode;
-  long f_a23;
-  long f_mask1;
-  long f_cr;
-  long f_type;
-  long f_incamt;
-  long f_cbs;
-  long f_uu_1_19;
-  long f_ball;
-  long f_colnum;
-  long f_brc;
-  long f_incr;
-  long f_fbdisp;
-  long f_uu_4_15;
-  long f_length;
-  long f_uu_1_15;
-  long f_rc;
-  long f_rcnum;
-  long f_rownum;
-  long f_cbx;
-  long f_id;
-  long f_size;
-  long f_rownum1;
-  long f_uu_3_11;
-  long f_rc1;
-  long f_ccb;
-  long f_cbrb;
-  long f_cdb;
-  long f_rownum2;
-  long f_cell;
-  long f_uu_3_9;
-  long f_contnum;
-  long f_uu_1_6;
-  long f_dup;
-  long f_rc2;
-  long f_ctxdisp;
-  long f_imm16l;
-  long f_loopo;
-  long f_cb1sel;
-  long f_cb2sel;
-  long f_cb1incr;
-  long f_cb2incr;
-  long f_rc3;
-  long f_msysfrsr2;
-  long f_brc2;
-  long f_ball2;
-};
-
-#define CGEN_INIT_PARSE(od) \
-{\
-}
-#define CGEN_INIT_INSERT(od) \
-{\
-}
-#define CGEN_INIT_EXTRACT(od) \
-{\
-}
-#define CGEN_INIT_PRINT(od) \
-{\
-}
-
-
-#endif /* MS1_OPC_H */

Deleted: branches/binutils/package/opcodes/po/.cvsignore
===================================================================
--- branches/binutils/package/opcodes/po/.cvsignore	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/.cvsignore	2006-12-31 16:27:59 UTC (rev 19)
@@ -1 +0,0 @@
-*.gmo

Modified: branches/binutils/package/opcodes/po/Make-in
===================================================================
--- branches/binutils/package/opcodes/po/Make-in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/Make-in	2006-12-31 16:27:59 UTC (rev 19)
@@ -186,7 +186,7 @@
 
 cat-id-tbl.o: ../intl/libgettext.h
 
-html dvi info tags TAGS ID:
+html dvi pdf ps info tags TAGS ID:
 
 mostlyclean:
 	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp

Modified: branches/binutils/package/opcodes/po/POTFILES.in
===================================================================
--- branches/binutils/package/opcodes/po/POTFILES.in	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/POTFILES.in	2006-12-31 16:27:59 UTC (rev 19)
@@ -150,6 +150,13 @@
 vax-dis.c
 w65-dis.c
 w65-opc.h
+xc16x-asm.c
+xc16x-desc.c
+xc16x-desc.h
+xc16x-dis.c
+xc16x-ibld.c
+xc16x-opc.c
+xc16x-opc.h
 xstormy16-asm.c
 xstormy16-desc.c
 xstormy16-desc.h

Added: branches/binutils/package/opcodes/po/da.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/da.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/de.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/de.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/es.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/opcodes/po/es.po
===================================================================
--- branches/binutils/package/opcodes/po/es.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/es.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,48 +1,130 @@
-# Mensajes en español para opcodes-2.15.96.
-# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005.
+# Mensajes en español para opcodes-2.16.93.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga at itam.mx>, 2002, 2003, 2004, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-03-14 17:13-0600\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-05-26 16:09-0500\n"
 "Last-Translator: Cristian Othón Martínez Vera <cfuga at itam.mx>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "operando de ramificación sin alinear"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "pista de salto sin alinear"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
 msgstr "¡Referencia limm ilegal en la última instrucción!\n"
 
-#: arm-dis.c:1267
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "no se pueden ajustar las constantes de valores diferentes en la instrucción"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "no se permite un registro auxiliar aquí"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "se intentó cambiar un registro de sólo lectura"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "se intentó leer un registro de sólo escritura"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "número de registro `%d' inválido"
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "demasiadas constantes long"
+
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "demasiados shimms en load"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "almacenamiento imposible"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "error de operando st"
+
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "no se permite la escritura hacia atrás de dirección"
+
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "el valor de almacenamiento debe ser cero"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "instrucción load/shimm inválida"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "error de operando ld"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "opciones de salto, pero no se ve .f"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "opciones de salto, pero no hay una dirección limm"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "bits bandera de dirección de salto limm perdidos"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "se intentó cambiar los bits HR"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "valor de opciones de salto erróneo"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "la dirección de ramificación no está en un límite de 4 bytes"
+
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "se debe especificar un sufijo .jd o no nullify"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<precisión ilegal>"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Conjunto de nombres de registro no reconocido: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Opción de desensamblador no reconocida: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -53,23 +135,24 @@
 "Las siguientes opciones de desensamblador específicas de ARM tienen soporte\n"
 "para su uso con el interruptor -M:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "sin definir"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Error interno del desensamblador"
 
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "restricción `%c' desconocida"
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "operando fuera de rango (%ld no está entre %ld y %ld)"
@@ -79,7 +162,7 @@
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "operando fuera de rango (%lu no está entre %lu y %lu)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<registro %d desconocido>"
@@ -95,148 +178,202 @@
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "La dirección 0x%s está fuera de los límites.\n"
 
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "El número de registro no es válido"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "El registro debe estar entre r0 y r7"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "El registro debe estar entre r8 y r15"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "La lista de registros no es válida"
+
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "No se reconoció el campo %d durante la decodificación.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "falta el mnemónico en la cadena sintáctica"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "instrucción no reconocida"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
 msgstr "error sintáctico (se esperaba el carácter `%c', se encontró `%c')"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
 msgstr "error sintáctico (se esperaba el carácter `%c', se encontró el final de la instrucción)"
 
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
 msgstr "basura al final de la línea"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "forma de instrucción no reconocida"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "instrucción errónea `%.50s...'"
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "instrucción errónea `%.50s'"
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*desconocida*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "No se reconoció el campo %d al mostrar insn.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "operando fuera de rango (%ld no está entre %ld y %lu)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "operando fuera de rango (%lu no está entre 0 y %lu)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "No se reconoció el campo %d al construir insn.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "No se reconoció el campo %d al decodificar insn.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "No se reconoció el campo %d al obtener el operando int.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "No se reconoció el campo %d al obtener el operando vma.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "No se reconoció el campo %d al establecer el operando int.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "No se reconoció el campo %d al establecer el operando vma.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "falta un `]'"
+
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "El número de registro de propósito especial está fuera de rango"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "El valor del operando A debe ser 0 o 1"
+
+#: frv-asm.c:943
 msgid "register number must be even"
 msgstr "el número de registro debe ser par"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "falta un `)'"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "No se entiende 0x%x \n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "no se puede lidiar con insert %d\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*desconocido*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<error interno del desensamblador>"
 
@@ -350,124 +487,175 @@
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
 msgstr "la palabra clave W es inválida en la ranura del operando FR."
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "el desplazamiento(IP) no es una forma válida"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "desplazamiento (DP) fuera de rango."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "desplazamiento (SP) fuera de rango."
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "uso ilegal de paréntesis"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
 msgstr "operando fuera de rango (no está entre 1 y 255)"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: índice de operador inválido."
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
 msgstr "Se requiere una dirección de byte. - debe ser par."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "cgen_parse_address devolvió un símbolo. Se requiere una literal."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "el operando %operator no es un símbolo"
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "el operando operador-porcentaje no es un símbolo"
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Se intentó encontrar un índice de bit de 0"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "el valor inmediato no puede ser un registro"
 
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "el valor inmediato está fuera de rango"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "desplazamiento de 21-bit fuera de rango"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "falta un `)'"
-
-#: m10200-dis.c:199
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
-msgid "unknown\t0x%02x"
-msgstr "desconocido\t0x%02x"
-
-#: m10200-dis.c:339
-#, c-format
 msgid "unknown\t0x%04lx"
 msgstr "desconocido\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "desconocido\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "desconocido\t0x%02lx"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "el inmediato imm:6 está fuera de rango"
+
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<error interno en la tabla de códigos de operación: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "%dsp8() toma una dirección simbólica, no un número"
 
-#: m68k-dis.c:1089
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "el inmediato dsp:8 está fuera de rango"
+
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "El inmediato está fuera del rango -8 a 7"
+
+#: m32c-asm.c:259
 #, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "%dsp16() toma una dirección simbólica, no un número"
+
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "el inmediato dsp:16 está fuera de rango"
+
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "el inmediato dsp:20 está fuera de rango"
+
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "el inmediato dsp:24 está fuera de rango"
+
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "el inmediato está fuera del rango 1-2"
+
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "el inmediato está fuera del rango 1-8"
+
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "el inmediato está fuera del rango 2-9"
+
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "El número de bit para el registro general de indización está fuera del rango 0-15"
+
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "bit,base está fuera de rango"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "no es un par r0l/r0h válido"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Especificador de tamaño inválido"
+
+#: m68k-dis.c:1162
+#, c-format
 msgid "<function code %d>"
 msgstr "<código de función %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <error de desensamblador: %08x>"
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<error interno en la tabla de códigos de operación: %s %s>\n"
 
-#: mips-dis.c:720
+#: m88k-dis.c:679
+#, c-format
+msgid "# <dis error: %08lx>"
+msgstr "# <error de desensamblador: %08lx>"
+
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# error interno, secuencia de extensión incompleta (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# error interno, secuencia de extensión sin definir (+%c)"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# error interno, modificador(%c) sin definir"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# error interno del desensamblador, modificador (%c) no reconocido"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -478,7 +666,7 @@
 "Las siguientes opciones de desensamblador específicas de MIPS tienen soporte\n"
 "para su uso con el interruptor -M (las opciones múltiples se deben separar con comas):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -489,7 +677,7 @@
 "  gpr-names=ABI            Muestra los nombres GPR de acuerdo a la ABI especificada.\n"
 "                           Por defecto: basado en el binario a desensamblar.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -500,7 +688,7 @@
 "  fpr-names=ABI            Muestra los nombres FPR de acuerdo a la ABI especificada.\n"
 "                           Por defecto: numérico.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -513,7 +701,7 @@
 "                           la arquitectura especificada.\n"
 "                           Por defecto: basado en el binario a desensamblar.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -526,7 +714,7 @@
 "                           especificada.\n"
 "                           Por defecto: basado en el binario a desensamblar.\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -537,7 +725,7 @@
 "  reg-names=ABI            Muestra los nombres GPR y FPR de acuerdo a\n"
 "                           la ABI especificada.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -548,7 +736,7 @@
 "  reg-names=ARCH           Muestra el registro CP0 y los nombres HWR de acuerdo a\n"
 "                           la arquitectura especificada.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -559,12 +747,12 @@
 "  Para las opciones anteriores, se da soporte a los siguientes valores de \"ABI\":\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -575,146 +763,166 @@
 "  Para las opciones anteriores, se da soporte a los siguientes valores de \"ARCH\":\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "Case %d erróneo (%s) en %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Interno: Código no depurado (falta el caso de prueba): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(desconocido)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "*tipo de operandos operandos desconocido: %d*"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Operando fuera de rango. Debe estar entre -32768 y 32767."
+
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "¡Graaaan Problema en parse_imm16!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "el operando %operator no es un símbolo"
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "operando inválid.  El tipo sólo puede tener valores 0,1,2."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<sin definir>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "opción condicional inválida"
 
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "intento de establecer el bit y cuando se usaba el modificador + ó -"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "el desplazamiento no es un múltiplo de 16"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "el desplazamiento no es un múltiplo de 2"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "el desplazamiento es mayor que 62"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "el desplazamiento no es un múltiplo de 4"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "el desplazamiento es mayor que 124"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "el desplazamiento no es un múltiplo de 8"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "el desplazamiento es mayor que 248"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "el desplazamiento no está entre -2048 y 2047"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "el desplazamiento no está entre -8192 y 8191"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "campo de máscara inválido"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "se ignora la máscara mfcr inválida"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "ignorando los bits menos significativos en el desplazamiento de la rama"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "máscara de bits ilegal"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "valor fuera de rango"
 
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "registro índice en el rango de carga"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "los operandos de registros fuente y objetivo deben ser diferentes"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "operando de registro inválido mientras se actualizaba"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
 msgstr "el operando de registro objetivo debe ser par"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
 msgstr "el operando de registro fuente debe ser par"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "desconocida"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "número sprg inválido"
 
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Error interno:  sparc-opcode.h erróneo: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Error interno: sparc-opcode.h erróneo: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Error interno: sparc-opcode.h erróneo: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "desconocida"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "operando de desplazamiento desconocido: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "registro pop desconocido: %d\n"
@@ -724,89 +932,92 @@
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "el valor de desubicación no está en el rango y no está alineado"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "el valor de desubicación está fuera de rango"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "el valor de desubicación no está alineado"
 
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "el valor inmediato está fuera de rango"
 
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "el valor de ramificación no está en rango e indica un desplazamiento impar"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "el valor de ramificación está fuera de rango"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "ramificación a un desplazamiento impar"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "el valor de ramificación no está en rango e indica un desplazamiento impar"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "registro inválido para el ajuste de la pila"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
 msgstr "el valor inmediato no está en rango y no es par"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
 msgstr "el valor inmediato debe ser par"
 
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Registro erróneo en el preincremento"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Registro erróneo en el postincremento"
 
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Nombre de registro erróneo"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "La etiqueta tiene conflictos con el nombre de registro"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "La etiqueta tiene conflictos con `Rx'"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Expresión inmediata errónea"
 
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
 msgstr "No hay reubicaciones para inmediatos small"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "El operando small no era un número inmediato"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "El operando no es un símbolo"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Error sintáctico: No hay ')' al final"
 
+#~ msgid "unknown\t0x%04x"
+#~ msgstr "desconocido\t0x%04x"
+
 #~ msgid "unrecognized keyword/register name"
 #~ msgstr "nombre clave/de registro no reconocido"

Added: branches/binutils/package/opcodes/po/fi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/fi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/opcodes/po/fi.po
===================================================================
--- branches/binutils/package/opcodes/po/fi.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/fi.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,51 +1,136 @@
 # translation of opcodes-2.15.96.fi.po to Finnish
-# translation of opcodes-2.15.96.fi.po to suomi
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the binutils package.
 # Copyright (C) 2005 Free Software Foundation, Inc.
-# Jorma Karvonen <karvjorm at users.sourceforge.net>, 2005
+# Jorma Karvonen <karvjorm at users.sourceforge.net>, 2006
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-04-13 19:40+03:00\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-06-09 12:16+0200\n"
 "Last-Translator: Jorma Karvonen <karvjorm at users.sourceforge.net>\n"
 "Language-Team: Finnish <translation-team-fi at lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.0.1\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+"X-Poedit-SourceCharset: utf-8\n"
 
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "haaroituskohdemuuttuja ei ole tasarajalla"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "hyppyvihje ei ole tasarajalla"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
-msgstr "Viimeisimmän käskyn virheellinen limm-viittaus!\n"
+msgstr "Viimeisimmän käskyn virheellinen long-tyyppinen suora muistiosoiteviittaus!\n"
 
-#: arm-dis.c:1267
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "Eriarvoiset vakiot eivät sovi käskyyn"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "apurekisteriä ei sallita tässä"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "yritettiin asettaa kirjoittamiselta suojattua rekisteriä"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "yritettiin lukea lukemiselta suojattua rekisteriä"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "Väärä rekisterinimi \"%d\""
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "liian monta pitkää vakiota"
+
+#  otaksun: to many -> too many ...
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "liian monta short-tyyppistä suoraa muistiosoitetta ladattavana"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "mahdotonta tallentaa"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "st-kohdemuuttujavirhe"
+
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "osoitteen kirjoitus takaisin ei ole sallittu"
+
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "tallennettavan arvon on oltava nolla"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "virheellinen lataus/short-tyyppinen suora muistiosoitekäsky"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "ld-käskyn kohdemuuttujan virhe"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "hyppyliput, mutta .f-määritettä ei ole"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "hyppyliput, mutta long-tyyppistä suoraa muistiosoitetta ei ole"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "long-tyyppisen suoran muistiosoituksen hyppyosoitteen lippubitit puuttuvat"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "yritettiin asettaa HR-bitit"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "virheellinen hyppylippujen arvo"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "haaroitusosoite ei ole 4-tavurajalla"
+
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "on määriteltävä .jd tai nollattava suffiksi"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<virheellinen tarkkuus>"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Tuntematon rekisterinimijoukko: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Tunnistamaton disassembler-valinta: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -56,23 +141,24 @@
 "Seuraavia ARM-kohtaisia disassembler-valintoja tuetaan käytössä\n"
 "-M -valinnan kanssa:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "määrittelemätön"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Sisäinen disassembler-virhe"
 
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "tuntematon rajoite \"%c\""
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%ld ei ole %ld:n ja %ld:n välillä)"
@@ -82,7 +168,7 @@
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%lu ei ole %lu:n ja %lu:n välillä)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<tuntematon rekisteri %d>"
@@ -98,148 +184,202 @@
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "Osoite 0x%s ei ole sallittujen rajojen sisällä.\n"
 
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "Rekisterinumero ei ole oikea"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "Rekisterin on oltava r0:n ja r7:n välillä"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "Rekisterin on oltava r8:n ja r15:n välillä"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "Rekisteriluettelo ei ole oikea"
+
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "Tunnistamaton kenttä %d jäsentämisen aikana.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "syntaksimerkkijonosta puuttuu muistikas"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "tunnistamaton käsky"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
 msgstr "syntaksivirhe (odotettiin merkkiä \"%c\", löydettiin \"%c\")"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
 msgstr "syntaksivirhe (odotettiin merkkiä \"%c\", löydettiin käskyn loppu)"
 
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
 msgstr "roskaa rivin lopussa"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "käskyn muoto tunnistamaton"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "väärä käsky \"%.50s...\""
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "väärä käsky \"%.50s\""
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*tuntematon*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "Tunnistamaton kenttä %d käskyä tulostettaessa.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%ld ei ole %ld:n ja %lu:n välillä)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "kohdemuuttuja ei ole rajojen sisällä (%lu ei ole 0:n ja %lu:n välillä)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "Tunnistamaton kenttä %d käskyä muodostettaessa.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "Tunnistamaton kenttä %d käskyä dekoodattaessa.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "Tunnistamaton kenttä %d kokonaislukukohdemuuttujaa haettaessa.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "Tunnistamaton kenttä %d vma-kohdemuuttujaa haettaessa.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "Tunnistamaton kenttä %d kokonaislukukohdemuuttujaa asetettaessa.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "Tunnistamaton kenttä %d vma-kohdemuuttujaa asetettaessa.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "\"]\" puuttuu"
+
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "Erityiskäyttörekisterin numero ei ole rajojen sisällä"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "A-kohdemuuttujan arvon on oltava 0 tai 1"
+
+#: frv-asm.c:943
 msgid "register number must be even"
 msgstr "rekisterinumeron on oltava parillinen"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "\")\" puuttuu"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "0x%x ei ole ymmärrettävä \n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "kohteen %d sijoittamisesta ei selviydytty\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*tuntematon*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<sisäinen disassembler-virhe>"
 
@@ -353,124 +493,175 @@
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
 msgstr "avainsana W virheellinen FR-kohdemuuttujavälissä."
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "siirros(IP) ei ole virheetön muoto"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "(DP)-siirros ei ole rajojen sisällä."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "(SP)-siirros ei ole rajojen sisällä."
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "sulkeiden virheellinen käyttö"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
-msgstr "kohdemuuttuja ei ole rajojen sisällä (ei välillä 1 ja 255)"
+msgstr "kohdemuuttuja ei ole rajojen sisällä (ei 1:n ja 255:n välillä)"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: virheellinen käskyindeksi"
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
 msgstr "Vaaditaan tavuosoite - täytyy olla parillinen."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "cgen_parse_address palautti symbolin. Vaaditaan literaali."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "%operaattori-kohdemuuttuja ei ole symboli."
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "prosenttioperaattori-kohdemuuttuja ei ole symboli."
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Yritettiin löytää 0-bitti-indeksi"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "suoraan muistiosoitettu arvo ei voi olla rekisteri"
 
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "suoraan muistiosoitettu arvo ei ole rajojen sisällä"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "21-bittinen siirros ei ole rajojen sisällä"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "\")\" puuttuu"
-
-#: m10200-dis.c:199
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
-msgid "unknown\t0x%02x"
-msgstr "tuntematon\t0x%02x"
-
-#: m10200-dis.c:339
-#, c-format
 msgid "unknown\t0x%04lx"
 msgstr "tuntematon\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "tuntematon\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "tuntematon\t0x%02lx"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "suora muistiosoitusarvo imm:6 ei ole rajojen sisällä"
+
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<sisäinen virhe käskytaulukossa: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "%dsp8() hyväksyy symbolisen osoitteen, ei numeroa"
 
-#: m68k-dis.c:1089
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:8 ei ole rajojen sisällä"
+
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "suora muistiosoitusarvo ei ole rajojen -8 ... 7 sisällä"
+
+#: m32c-asm.c:259
 #, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "%dsp16() hyväksyy symbolisen osoitteen, ei numeroa"
+
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:16 ei ole rajojen sisällä"
+
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:20 ei ole rajojen sisällä"
+
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "suora muistiosoitusarvo dsp:24 ei ole rajojen sisällä"
+
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "suora muistiosoitusarvo ei ole rajojen 1-2 sisällä"
+
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "suora muistiosoitusarvo ei ole rajojen 1-8 sisällä"
+
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "suora muistiosoitusarvo ei ole rajojen 2-9 sisällä"
+
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "Indeksoivan yleisrekisterin bittinumero ei ole alueella 0-15"
+
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "bitti, kanta ei ole rajojen sisällä"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "r0l/r0h-pari ei ole oikea"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Virheellinen kokomäärite"
+
+#: m68k-dis.c:1162
+#, c-format
 msgid "<function code %d>"
 msgstr "<toimintakoodi %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <disassembler-virhe: %08x>"
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<sisäinen virhe käskytaulukossa: %s %s>\n"
 
-#: mips-dis.c:720
+#: m88k-dis.c:679
+#, c-format
+msgid "# <dis error: %08lx>"
+msgstr "# <disassembler-virhe: %08lx>"
+
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# sisäinen virhe, epätäydellinen laajennussekvenssi (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# sisäinen virhe, määrittelemätön laajennussekvenssi (+%c)"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# sisäinen virhe, määrittelemätön määrite(%c)"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# sisäinen disassembler-virhe, tunnistamaton määrite (%c)"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -481,7 +672,7 @@
 "Seuraavat MIPS-kohtaiset disassembler-valinnat ovat tuettuja käyttöön\n"
 "-M -valinnan kanssa (monivalinnat pitää erottaa pilkulla):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -492,7 +683,7 @@
 "  gpr-names=ABI            Tulosta GPR-nimet määritellyn ABI:n mukaisesti.\n"
 "                           Oletus: perustuu disassembloitavaan binääritiedostoon.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -503,7 +694,7 @@
 "  fpr-names=ABI            Tulosta FPR-nimet määritellyn ABI:n mukaisesti.\n"
 "                           Oletus: numeerinen.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -516,7 +707,7 @@
 "                           määritellyn arkkitehtuurin mukaisesti.\n"
 "                           Oletus: perustuu disassemloitavaan binääritiedostoon.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -529,7 +720,7 @@
 "\t\t\t   arkkitehtuurin mukaisesti.\n"
 "                           Oletus: perustuu disassembloitavaan binääritiedostoon.\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -540,7 +731,7 @@
 "  reg-names=ABI            Tulosta GPR- ja FPR-nimet määritellyn\n"
 "                           ABI:n mukaisesti.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -551,7 +742,7 @@
 "  reg-names=ARCH           Tulosta CP0-rekisteri ja HWR-nimet määritellyn\n"
 "                           arkkitehtuurin mukaisesti.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -562,12 +753,12 @@
 "  Ylläolevista valinnoista \"ABI\" tukee seuraavia arvoja:\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -578,146 +769,166 @@
 "  Ylläolevista valinnoista \"ARCH\" tukee seuraavia arvoja:\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "%d (%s) on virheellinen tapaus kohteessa %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Sisäinen: Debuggaamaton koodi (testitapaus puuttuu): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(tuntematon)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "*tuntematon kohdemuuttujatyyppi: %d*"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Kohdemuuttuja ei ole rajojen sisällä. Täytyy olla -32768:n ja 32767:n välillä."
+
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "Iso pulma parse_imm16-käskyssä!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "%operaattori-kohdemuuttuja ei ole symboli."
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "virheellinen kohdemuuttuja. tyypin arvo saa olla vain 0,1 ta 2."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<määrittelemätön>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "virheellinen ehdollinen valinta"
 
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "yritys asettaa y-bitti kun käytetään + tai - määritettä"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "siirros ei ole 16:n monikerta"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "siirros ei ole 2:n monikerta"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "siirros suurempi kuin 62"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "siirros ei ole 4:n monikerta"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "siirros suurempi kuin 124"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "siirros ei ole 8:n monikerta"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "siirros suurempi kuin 248"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "siirros ei ole -2048:n ja 2047:n välillä"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "siirros ei ole -8192:n ja 8191:n välillä"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "virheellinen maskikenttä"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "virheellistä mfcr-maskia ei oteta huomioon"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "vähinten merkitseviä bittejä ei oteta huomioon haaroitussiirrossa"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "virheellinen bittimaski"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "arvo ei ole rajojen sisällä"
 
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "indeksirekisteri on latauslukurajojen sisällä"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "lähde- ja kohderekisterin kohdemuuttujien on oltava erilaiset"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "rekisterin kohdemuuttuja virheellinen päivitettäessä"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
 msgstr "kohderekisterin kohdemuuttujan täytyy olla parillinen"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
 msgstr "lähderekisterin kohdemuuttujan täytyy olla parillinen"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "tuntematon"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "virheellinen sprg-numero"
 
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Sisäinen virhe:  virheellinen sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Sisäinen virhe: virheellinen sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Sisäinen virhe: virheellinen sparc-opcode.h: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "tuntematon"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "tuntematon kohdemuuttujan siirto: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "tuntematon pop-rekisteri: %d\n"
@@ -727,86 +938,89 @@
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "Uudelleensijoitusarvo ei ole rajojen sisällä eikä sijaitse tasarajalla"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "uudelleensijoitusarvo ei ole rajojen sisällä"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "uudelleensijoitusarvo ei ole tasarajalla"
 
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "suora muistiosoitusarvo ei ole rajojen sisällä"
 
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "haaroitusarvo ei ole rajojen sisällä ja kohdistuu parittomaan siirrososoitteeseen"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "haaroitusarvo ei ole rajojen sisällä"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "haaroitus parittomaan siirrososoitteeseen"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "haaroitusarvo ei ole rajojen sisällä ja sijaitsee parittomassa siirrososoitteessa"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "virheellinen rekisteri pinosäädössä"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
 msgstr "suora muistiosoitusarvo ei ole rajojen sisällä eikä ole parillinen"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
 msgstr "Suoran muistiosoitusarvon täytyy olla parillinen"
 
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Väärä rekisteri ennakkokasvatuksessa"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Väärä rekisteri jälkikasvatuksessa"
 
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Väärä rekisterinimi"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "Otsikko ristiriidassa rekisterin nimen kanssa"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "Otsikko ristiriidassa kohteen \"Rx\" kanssa"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Virheellinen suora muistiosoituslauseke"
 
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
-msgstr "Ei uudelleensijoitusta pienikokoiselle suoralle muistiosoitukselle"
+msgstr "Ei sijoitusta pienikokoiselle suoralle muistiosoitukselle"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "Pieni kohdemuuttuja ei ollut suora muistiosoitusnumero"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "Kohdemuuttuja ei ole symboli"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Syntaksivirhe: loppukaarisulku \")\" puuttuu"
+
+#~ msgid "unknown\t0x%04x"
+#~ msgstr "tuntematon\t0x%04x"

Added: branches/binutils/package/opcodes/po/fr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/fr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/ga.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/ga.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/opcodes/po/ga.po
===================================================================
--- branches/binutils/package/opcodes/po/ga.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/ga.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,49 +1,131 @@
 # Irish translations for opcodes.
 # Copyright (C) 2005 Free Software Foundation, Inc.
 # This file is distributed under the same license as the opcodes package.
-# Kevin Patrick Scannell <scannell at SLU.EDU>, 2005.
+# Kevin Patrick Scannell <scannell at SLU.EDU>, 2005, 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-09-13 18:42-0500\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-05-22 18:42-0500\n"
 "Last-Translator: Kevin Patrick Scannell <scannell at SLU.EDU>\n"
-"Language-Team: Irish <ga at li.org>\n"
+"Language-Team: Irish <gaeilge-gnulinux at lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "oibreann brainse gan ailíniú"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "leid léime gan ailíniú"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
 msgstr "Tagairt neamhcheadaithe limm sa treoir is déanaí!\n"
 
-#: arm-dis.c:1267
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "ní féidir tairisigh le luachanna difriúla a chur isteach sa treoir"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "ní cheadaítear tabhall cúntach anseo"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "rinneadh iarracht ar thabhall léimh-amháin a shocrú"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "rinneadh iarracht ar thabhall scríofa-amháin a léamh"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "uimhir neamhbhailí `%d' ar thabhall"
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "an iomarca tairiseach fada"
+
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "an iomarca shimmeanna le linn luchtaithe"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "stóráil dhodhéanta"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "earráid le hoibreann st"
+
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "ní cheadaítear ais-scríobh an tseolta"
+
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "caithfidh luach an stóir a bheith nialas"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "insn luchtaithe/shimm neamhbhailí"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "earráid le hoibreann ld"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "bratacha léime, ach ní fhacthas .f ar bith"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "bratacha léime, ach gan seoladh limm"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "cailleadh giotáin bhrataí den seoladh léime limm"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "rinneadh iarracht giotáin HR a shocrú"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "luach neamhbhailí ar bhratacha léime"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "seoladh brainse gan a bheith ar theorainn 4 bheart"
+
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "ní mór duit .jd nó iarmhír gan neamhniú a shonrú"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<beachtas neamhcheadaithe>"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Tacar anaithnid d'ainmneacha taibhle: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Rogha anaithnid dídhíolamóra: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -54,23 +136,24 @@
 "Tacaítear leis na roghanna a leanas, atá sainiúil do ARM agus le húsáid in éineacht\n"
 "leis an rogha -M:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "gan sainmhíniú"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Earráid inmheánach dídhíolamóra"
 
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "iallach anaithnid `%c'"
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "oibreann as raon (níl %ld idir %ld agus %ld)"
@@ -80,7 +163,7 @@
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "oibreann as raon (níl %lu idir %lu agus %lu)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<tabhall anaithnid %d>"
@@ -96,148 +179,202 @@
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "Tá an seoladh 0x%s thar teorainn.\n"
 
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "uimhir neamhbhailí ar an tabhall"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "Caithfidh an tabhall a bheith idir r0 agus r7"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "Caithfidh an tabhall a bheith idir r8 agus r15"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "Níl liosta na dtaibhle bailí"
+
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "Réimse anaithnid %d le linn parsála.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "cuimhneolaíoch ar iarraidh i dteaghrán comhréire"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "treoir anaithnid"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
 msgstr "earráid chomhréire (bhíothas ag súil le `%c', fuarthas `%c')"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
 msgstr "earráid chomhréire (bhíothas ag súil le `%c', fuarthas deireadh na treorach)"
 
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
 msgstr "bruscar ag deireadh na líne"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "foirm anaithnid de threoir"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "drochthreoir `%.50s...'"
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "drochthreoir `%.50s'"
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*anaithnid*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "Réimse anaithnid %d le linn priontála insn.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "oibreann as raon (níl %ld idir %ld agus %lu)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "oibreann as raon (níl %lu idir 0 agus %lu)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "Réimse anaithnid %d le linn tógála insn.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "Réimse anaithnid %d le linn díchódaithe insn.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann slánuimhriúil á fháil.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann vma á fháil.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann slánuimhriúil á shocrú.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "Réimse anaithnid %d agus oibreann vma á shocrú.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "`]' ar iarraidh"
+
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "Uimhir thabhall sainchuspóirigh as raon"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "caithfidh luach an oibrinn A a bheith 0 nó 1"
+
+#: frv-asm.c:943
 msgid "register number must be even"
 msgstr "caithfidh uimhir an tabhaill a bheith cothrom"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "`)' ar iarraidh"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "Ní thuigim 0x%x \n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "ní féidir déileáil le hionsá %d\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*anaithnid*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<earráid inmheánach dídhíolamóra>"
 
@@ -351,124 +488,175 @@
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
-msgstr "is neamhbhailí é eochairfhocal W i sliotán oibrinn FR."
+msgstr "is neamhbhailí é lorgfhocal W i sliotán oibrinn FR."
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "is neamhbhailí é an fhoirm fritháireamh(IP)"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "fritháireamh (DP) as raon."
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "fritháireamh (SP) as raon."
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "úsáid neamhcheadaithe de lúibíní"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
 msgstr "oibreann as raon (ní idir 1 agus 255"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: innéacs neamhbhailí oibrinn."
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
 msgstr "Seoladh birt de dhíth. - ní mór dó a bheith cothrom."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "d'fhill cgen_parse_address siombail. Tá gá le teaghrán litriúil."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "ní siombail é oibreann an %oibreora\""
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "níl an t-oibreann céatadáin ina shiombail"
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Rinneadh iarracht innéacs giotáin 0 a aimsiú"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "ní féidir an luach láithreach a bheith tabhall"
 
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "luach láithreach as raon"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "fritháireamh 21-giotán as raon"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "`)' ar iarraidh"
-
-#: m10200-dis.c:199
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
-msgid "unknown\t0x%02x"
-msgstr "anaithnid\t0x%02x"
-
-#: m10200-dis.c:339
-#, c-format
 msgid "unknown\t0x%04lx"
 msgstr "anaithnid\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "anaithnid\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "anaithnid\t0x%02lx"
 
-#: m68k-dis.c:295
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "luach láithreach imm:6 as raon"
+
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<earráid inmheánach sa tábla de chóid oibríochta: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "glacann %dsp8() le seoladh siombalach, ní ghlacann sé le huimhir"
 
-#: m68k-dis.c:1089
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "luach láithreach dsp:8 as raon"
+
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "Luach láithreach as raon -8 go dtí 7"
+
+#: m32c-asm.c:259
 #, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "glacann %dsp16() le seoladh siombalach, ní ghlacann sé le huimhir"
+
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "luach láithreach dsp:16 as raon"
+
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "luach láithreach dsp:20 as raon"
+
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "luach láithreach dsp:24 as raon"
+
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "luach láithreach as raon 1-2"
+
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "luach láithreach as raon 1-8"
+
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "luach láithreach as raon 2-9"
+
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "Uimhir ghiotáin le haghaidh innéacsú tabhall ginearálta as raon 0-15"
+
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "giotán,bunuimhir as raon"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "cúpla neamhbhailí r0l/r0h"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Sonraitheoir neamhbhailí méide"
+
+#: m68k-dis.c:1162
+#, c-format
 msgid "<function code %d>"
 msgstr "<cód feidhme %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <earráid dídhíolama: %08x>"
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<earráid inmheánach sa tábla de chóid oibríochta: %s %s>\n"
 
-#: mips-dis.c:720
+#: m88k-dis.c:679
+#, c-format
+msgid "# <dis error: %08lx>"
+msgstr "# <earráid dis: %08lx>"
+
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# earráid inmheánach, seicheamh neamhiomlán sínte (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# earráid inmheánach, seicheamh sínte gan sainmhíniú (+%c)"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# earráid inmheánach, mionathraitheoir gan sainmhíniú(%c)"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# earráid inmheánach dídhíolamóra, mionathraitheoir anaithnid (%c)"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -480,7 +668,7 @@
 "agus le húsáid in éineacht leis an rogha -M (ba chóir roghanna iomadúla\n"
 "a bheith scartha le camóga):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -491,7 +679,7 @@
 "  gpr-names=ABI          Taispeáin ainmneacha GPR de réir an ABI sonraithe.\n"
 "                         Réamhshocrú: bunaithe ar chlár dénártha díolaimithe.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -502,7 +690,7 @@
 "  fpr-names=ABI          Taispeáin ainmneacha FPR de réir an ABI sonraithe.\n"
 "                         Réamhshocrú: uimhriúil.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -515,7 +703,7 @@
 "                         hailtireachta sonraithe.\n"
 "                         Réamhshocrú: bunaithe ar chlár dénártha díolaimithe.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -528,7 +716,7 @@
 "                         hailtireachta sonraithe.\n"
 "                         Réamhshocrú: bunaithe ar chlár dénártha díolaimithe.\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -539,7 +727,7 @@
 "  reg-names=ABI          Taispeáin ainmneacha GPR agus FPR de réir an\n"
 "                         ABI sonraithe.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -550,7 +738,7 @@
 "  reg-names=AILTIREACHT  Taispeáin ainmneacha HWR agus ainmneacha na dtaibhle\n"
 "                         CP0 de réir na hailtireachta sonraithe.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -561,12 +749,12 @@
 "  Le haghaidh na roghanna thuas, tacaítear leis na luachanna a leanas ar \"ABI\":\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -577,146 +765,166 @@
 "  Le haghaidh na roghanna thuas, tacaítear leis na luachanna a leanas ar \"ARCH\":\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "Droch-chás %d (%s) i %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Inmheánach: cód gan dífhabhtú (cás tástála ar iarraidh): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(anaithnid)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "*cineál anaithnid oibrinn: %d*"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Oibreann as raon. Caithfidh sé a bheith idir -32768 agus 32767."
+
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "Trioblóid An-An-Mhór i parse_imm16!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "ní siombail é oibreann an %oibreora\""
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "oibreann neamhbhailí.  ní cheadaítear ach na luachanna 0,1,2."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<gan sainmhíniú>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "rogha neamhbhailí choinníollach"
 
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "rinneadh iarracht y-giotán a shocrú agus mionathraitheoir + nó - in úsáid"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "ní iolraí de 16 é an fritháireamh"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "ní cothrom é an fritháireamh"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "is níos mó ná 62 é an fritháireamh"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "ní iolraí de 4 é an fritháireamh"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "is níos mó ná 124 é an fritháireamh"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "ní iolraí de 8 é an fritháireamh"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "is níos mó ná 248 é an fritháireamh"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "ní idir -2048 agus 2047 é an fritháireamh"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "ní idir -8192 agus 8191 é an fritháireamh"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "réimse neamhbhailí maisc"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "ag déanamh neamhshuim ar mhasc neamhbhailí mfcr"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "ag déanamh neamhshuim ar na giotáin is lú suntas i bhfritháireamh brainse"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "giotánmhasc neamhcheadaithe"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "luach as raon"
 
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "tabhall innéacs i raon luchtaithe"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "caithfidh oibreann an tabhaill foinsigh agus oibreann an spriocthabhaill a bheith difriúil"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "oibreann neamhbhailí tabhaill le linn nuashonraithe"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
 msgstr "caithfidh oibreann an spriocthabhaill a bheith cothrom"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
 msgstr "caithfidh oibreann an tabhaill foinsigh a bheith cothrom"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "anaithnid"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "uimhir neamhbhailí sprg"
 
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Earráid inmheánach:  sparc-opcode.h go holc: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Earráid inmheánach: sparc-opcode.h go holc: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Earráid inmheánach: sparc-opcode.h go holc: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "anaithnid"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "iomlaoid anaithnid oibrinn: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "tabhall anaithnid plobtha: %d\n"
@@ -726,86 +934,89 @@
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "tá an luach díláithrithe as raon, agus ní ailínithe é"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "luach díláithrithe as raon"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "luach díláithrithe gan ailíniú"
 
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "luach láithreach as raon"
 
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "luach brainse as raon, agus brainse go dtí fritháireamh corr"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "luach an bhrainse as raon"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "brainse go dtí fritháireamh corr"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "luach brainse as raon agus brainse go dtí fritháireamh corr"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "tabhall neamhbhailí le haghaidh coigeartaithe na cruaiche"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
 msgstr "luach láithreach as raon, agus ní cothrom é"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
 msgstr "caithfidh luach láithreach a bheith cothrom"
 
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Drochthabhall i réamhincrimint"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Drochthabhall i iarincrimint"
 
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Drochainm ar thabhall"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "Lipéad i gcoinbhleacht le hainm tabhaill"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "Lipéad i gcoinbhleacht le `Rx'"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Drochshlonn láithreach"
 
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
 msgstr "Luach beag láithreach gan athshuí"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "Ní uimhir láithreach é an t-oibreann beag"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "Ní siombail é an t-oibreann"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Earráid chomhréire: gan ')' chun deiridh"
+
+#~ msgid "unknown\t0x%04x"
+#~ msgstr "anaithnid\t0x%04x"

Added: branches/binutils/package/opcodes/po/id.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/id.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/nl.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/nl.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/opcodes/po/nl.po
===================================================================
--- branches/binutils/package/opcodes/po/nl.po	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/opcodes/po/nl.po	2006-12-31 16:27:59 UTC (rev 19)
@@ -1,53 +1,140 @@
 # Dutch messages for the Opcodes Library.
-# Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
 # This file is distributed under the same license as the Opcodes package.
-# Tim Van Holder <tim.van.holder at pandora.be>, 1999, 2002, 2003, 2005.
-#
+# Tim Van Holder <tim.van.holder at telenet.be>, 1999, 2002, 2003, 2005, 2006.
+# 
 msgid ""
 msgstr ""
-"Project-Id-Version: opcodes 2.15.96\n"
+"Project-Id-Version: opcodes 2.16.93\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-03-05 20:32+1030\n"
-"PO-Revision-Date: 2005-05-05 23:36+0200\n"
-"Last-Translator: Tim Van Holder <tim.van.holder at pandora.be>\n"
+"POT-Creation-Date: 2005-10-25 10:50+0930\n"
+"PO-Revision-Date: 2006-05-21 20:56+0200\n"
+"Last-Translator: Tim Van Holder <tim.van.holder at telenet.be>\n"
 "Language-Team: Dutch <vertaling at vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-# misschien 'branch' vertalen (vertakking?)
+# misschien 'branch' vertalen (vertakking? aftakking?)
 # en unaligned vertalen als 'niet uitgelijnd'?
-#: alpha-opc.c:331
+#: alpha-opc.c:155
 msgid "branch operand unaligned"
 msgstr "branch-operand niet uitgelijnd"
 
-#: alpha-opc.c:353 alpha-opc.c:374
+#: alpha-opc.c:171 alpha-opc.c:187
 msgid "jump hint unaligned"
 msgstr "jump-hint niet uitgelijnd"
 
-#: arc-dis.c:76
+#: arc-dis.c:75
 msgid "Illegal limm reference in last instruction!\n"
 msgstr "Ongeldige limm-verwijzing in de laatste instructie!\n"
 
-#: arm-dis.c:1267
+# klinkt niet echt geweldig...
+#: arc-opc.c:384
+msgid "unable to fit different valued constants into instruction"
+msgstr "kan constantes met verschillende waarden niet in instructie inpassen"
+
+#: arc-opc.c:393
+msgid "auxiliary register not allowed here"
+msgstr "hulpregister hier niet toegestaan"
+
+#: arc-opc.c:399 arc-opc.c:416
+msgid "attempt to set readonly register"
+msgstr "poging tot het instellen van een alleen-lezen register"
+
+#: arc-opc.c:404 arc-opc.c:421
+msgid "attempt to read writeonly register"
+msgstr "poging tot uitlezen van alleen-schrijven register"
+
+#: arc-opc.c:426
+#, c-format
+msgid "invalid register number `%d'"
+msgstr "Ongeldig registernummer `%d'"
+
+#: arc-opc.c:592 arc-opc.c:643 arc-opc.c:671
+msgid "too many long constants"
+msgstr "te veel lange constantes"
+
+# of "bij opladen" ipv "in load"?
+#: arc-opc.c:666
+msgid "to many shimms in load"
+msgstr "te veel shimms in load"
+
+#. Do we have a limm already?
+#: arc-opc.c:779
+msgid "impossible store"
+msgstr "onmogelijke store"
+
+#: arc-opc.c:812
+msgid "st operand error"
+msgstr "st operand-fout"
+
+# of "terugschrijven van adres"?
+#: arc-opc.c:816 arc-opc.c:858
+msgid "address writeback not allowed"
+msgstr "address writeback niet toegestaan"
+
+# of beter 'store-waarde'?
+#: arc-opc.c:820
+msgid "store value must be zero"
+msgstr "opslagwaarde moet nul zijn"
+
+#: arc-opc.c:845
+msgid "invalid load/shimm insn"
+msgstr "ongeldige load/shimm insn"
+
+#: arc-opc.c:854
+msgid "ld operand error"
+msgstr "ld operand-fout"
+
+#: arc-opc.c:941
+msgid "jump flags, but no .f seen"
+msgstr "jump-vlaggen, maar geen .f gezien"
+
+#: arc-opc.c:944
+msgid "jump flags, but no limm addr"
+msgstr "jump-vlaggen, maar geen limm addr"
+
+#: arc-opc.c:947
+msgid "flag bits of jump address limm lost"
+msgstr "vlagbits van jump-adres limm gaan verloren"
+
+#: arc-opc.c:950
+msgid "attempt to set HR bits"
+msgstr "poging tot instellen van HR bits"
+
+#: arc-opc.c:953
+msgid "bad jump flags value"
+msgstr "slechte waarde van de jump-vlaggen"
+
+#: arc-opc.c:986
+msgid "branch address not on 4 byte boundary"
+msgstr "branch-adres niet op 4-byte grens"
+
+# klinkt wankel...
+#: arc-opc.c:1022
+msgid "must specify .jd or no nullify suffix"
+msgstr "moet .jd of geen nullify-suffix opgeven"
+
+#: arm-dis.c:1302
 msgid "<illegal precision>"
 msgstr "<ongeldige precisie>"
 
-# Hoort set bij 'name', of bij 'register name'?
+# Hoort set bij 'name', of bij 'register name' - of is het een voltood deelwoord?
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1912
+#: arm-dis.c:2746
 #, c-format
 msgid "Unrecognised register name set: %s\n"
 msgstr "Registernaam-verzameling niet herkend: %s\n"
 
 #. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:1920
+#: arm-dis.c:2754
 #, c-format
 msgid "Unrecognised disassembler option: %s\n"
 msgstr "Disassembler-optie niet herkend: %s\n"
 
-#: arm-dis.c:2093
+#: arm-dis.c:2916
 #, c-format
 msgid ""
 "\n"
@@ -58,24 +145,25 @@
 "De volgende ARM-specifieke disassembler-opties worden ondersteund voor gebruik\n"
 "via de -M optie:\n"
 
-#: avr-dis.c:112 avr-dis.c:122
+#: avr-dis.c:109 avr-dis.c:119
 #, c-format
 msgid "undefined"
 msgstr "niet gedefinieerd"
 
-#: avr-dis.c:179
+#: avr-dis.c:176
 #, c-format
 msgid "Internal disassembler error"
 msgstr "Interne fout in de disassembler"
 
 # Vertaling voor constraint? 'begrenzing' misschien?
-#: avr-dis.c:227
+#: avr-dis.c:225
 #, c-format
 msgid "unknown constraint `%c'"
 msgstr "onbekende constraint `%c'"
 
-#: cgen-asm.c:336 fr30-ibld.c:197 frv-ibld.c:197 ip2k-ibld.c:197
-#: iq2000-ibld.c:197 m32r-ibld.c:197 openrisc-ibld.c:197 xstormy16-ibld.c:197
+#: cgen-asm.c:336 fr30-ibld.c:192 frv-ibld.c:192 ip2k-ibld.c:192
+#: iq2000-ibld.c:192 m32c-ibld.c:192 m32r-ibld.c:192 ms1-ibld.c:192
+#: openrisc-ibld.c:192 xstormy16-ibld.c:192
 #, c-format
 msgid "operand out of range (%ld not between %ld and %ld)"
 msgstr "operand buiten bereik (%ld niet tussen %ld en %ld)"
@@ -85,7 +173,7 @@
 msgid "operand out of range (%lu not between %lu and %lu)"
 msgstr "operand buiten bereik (%lu niet tussen %lu en %lu)"
 
-#: d30v-dis.c:312
+#: d30v-dis.c:252
 #, c-format
 msgid "<unknown register %d>"
 msgstr "<onbekend register %d>"
@@ -102,150 +190,204 @@
 msgid "Address 0x%s is out of bounds.\n"
 msgstr "Adres 0x%s is buiten de perken.\n"
 
+#: fr30-asm.c:92 m32c-asm.c:782 m32c-asm.c:789
+msgid "Register number is not valid"
+msgstr "Registernummer is ongeldig"
+
+#: fr30-asm.c:94
+msgid "Register must be between r0 and r7"
+msgstr "Register moet tussen r0 en r7 liggen"
+
+#: fr30-asm.c:96
+msgid "Register must be between r8 and r15"
+msgstr "Register moet tussen r8 en r15 liggen"
+
+#: fr30-asm.c:115 m32c-asm.c:820
+msgid "Register list is not valid"
+msgstr "Regijsterlijst is ongeldig"
+
 # Betere vertaling voor 'parsing'?
-#: fr30-asm.c:323 frv-asm.c:1298 ip2k-asm.c:530 iq2000-asm.c:465
-#: m32r-asm.c:338 openrisc-asm.c:252 xstormy16-asm.c:284
+#: fr30-asm.c:309 frv-asm.c:1262 ip2k-asm.c:510 iq2000-asm.c:456
+#: m32c-asm.c:1476 m32r-asm.c:323 ms1-asm.c:546 openrisc-asm.c:240
+#: xstormy16-asm.c:275
 #, c-format
 msgid "Unrecognized field %d while parsing.\n"
 msgstr "Veld %d niet herkend tijdens parsen.\n"
 
-#: fr30-asm.c:372 frv-asm.c:1347 ip2k-asm.c:579 iq2000-asm.c:514
-#: m32r-asm.c:387 openrisc-asm.c:301 xstormy16-asm.c:333
+#: fr30-asm.c:357 frv-asm.c:1310 ip2k-asm.c:558 iq2000-asm.c:504
+#: m32c-asm.c:1524 m32r-asm.c:371 ms1-asm.c:594 openrisc-asm.c:288
+#: xstormy16-asm.c:323
 msgid "missing mnemonic in syntax string"
 msgstr "mnemonic ontbreekt in syntaxstring"
 
 #. We couldn't parse it.
-#: fr30-asm.c:507 fr30-asm.c:511 fr30-asm.c:598 fr30-asm.c:699 frv-asm.c:1482
-#: frv-asm.c:1486 frv-asm.c:1573 frv-asm.c:1674 ip2k-asm.c:714 ip2k-asm.c:718
-#: ip2k-asm.c:805 ip2k-asm.c:906 iq2000-asm.c:649 iq2000-asm.c:653
-#: iq2000-asm.c:740 iq2000-asm.c:841 m32r-asm.c:522 m32r-asm.c:526
-#: m32r-asm.c:613 m32r-asm.c:714 openrisc-asm.c:436 openrisc-asm.c:440
-#: openrisc-asm.c:527 openrisc-asm.c:628 xstormy16-asm.c:468
-#: xstormy16-asm.c:472 xstormy16-asm.c:559 xstormy16-asm.c:660
+#: fr30-asm.c:492 fr30-asm.c:496 fr30-asm.c:583 fr30-asm.c:684 frv-asm.c:1445
+#: frv-asm.c:1449 frv-asm.c:1536 frv-asm.c:1637 ip2k-asm.c:693 ip2k-asm.c:697
+#: ip2k-asm.c:784 ip2k-asm.c:885 iq2000-asm.c:639 iq2000-asm.c:643
+#: iq2000-asm.c:730 iq2000-asm.c:831 m32c-asm.c:1659 m32c-asm.c:1663
+#: m32c-asm.c:1750 m32c-asm.c:1851 m32r-asm.c:506 m32r-asm.c:510
+#: m32r-asm.c:597 m32r-asm.c:698 ms1-asm.c:729 ms1-asm.c:733 ms1-asm.c:820
+#: ms1-asm.c:921 openrisc-asm.c:423 openrisc-asm.c:427 openrisc-asm.c:514
+#: openrisc-asm.c:615 xstormy16-asm.c:458 xstormy16-asm.c:462
+#: xstormy16-asm.c:549 xstormy16-asm.c:650
 msgid "unrecognized instruction"
 msgstr "instructie niet herkend"
 
-#: fr30-asm.c:554 frv-asm.c:1529 ip2k-asm.c:761 iq2000-asm.c:696
-#: m32r-asm.c:569 openrisc-asm.c:483 xstormy16-asm.c:515
+#: fr30-asm.c:539 frv-asm.c:1492 ip2k-asm.c:740 iq2000-asm.c:686
+#: m32c-asm.c:1706 m32r-asm.c:553 ms1-asm.c:776 openrisc-asm.c:470
+#: xstormy16-asm.c:505
 #, c-format
 msgid "syntax error (expected char `%c', found `%c')"
-msgstr "syntaxfout (verwachtte character `%c', maar vond `%c')"
+msgstr "syntaxfout (verwachtte `%c', vond `%c')"
 
-#: fr30-asm.c:564 frv-asm.c:1539 ip2k-asm.c:771 iq2000-asm.c:706
-#: m32r-asm.c:579 openrisc-asm.c:493 xstormy16-asm.c:525
+#: fr30-asm.c:549 frv-asm.c:1502 ip2k-asm.c:750 iq2000-asm.c:696
+#: m32c-asm.c:1716 m32r-asm.c:563 ms1-asm.c:786 openrisc-asm.c:480
+#: xstormy16-asm.c:515
 #, c-format
 msgid "syntax error (expected char `%c', found end of instruction)"
-msgstr "syntaxfout (verwachtte character `%c', maar vond het einde van de instructie)"
+msgstr "syntaxfout (verwachtte `%c', vond het einde van de instructie)"
 
-# Betere (niet-Vlaamse) vertaling voor 'junk'?
-#: fr30-asm.c:592 frv-asm.c:1567 ip2k-asm.c:799 iq2000-asm.c:734
-#: m32r-asm.c:607 openrisc-asm.c:521 xstormy16-asm.c:553
+#: fr30-asm.c:577 frv-asm.c:1530 ip2k-asm.c:778 iq2000-asm.c:724
+#: m32c-asm.c:1744 m32r-asm.c:591 ms1-asm.c:814 openrisc-asm.c:508
+#: xstormy16-asm.c:543
 msgid "junk at end of line"
-msgstr "brol aan einde van lijn"
+msgstr "rommel aan einde van lijn"
 
-#: fr30-asm.c:698 frv-asm.c:1673 ip2k-asm.c:905 iq2000-asm.c:840
-#: m32r-asm.c:713 openrisc-asm.c:627 xstormy16-asm.c:659
+#: fr30-asm.c:683 frv-asm.c:1636 ip2k-asm.c:884 iq2000-asm.c:830
+#: m32c-asm.c:1850 m32r-asm.c:697 ms1-asm.c:920 openrisc-asm.c:614
+#: xstormy16-asm.c:649
 msgid "unrecognized form of instruction"
 msgstr "instructievorm niet herkend"
 
-#: fr30-asm.c:710 frv-asm.c:1685 ip2k-asm.c:917 iq2000-asm.c:852
-#: m32r-asm.c:725 openrisc-asm.c:639 xstormy16-asm.c:671
+#: fr30-asm.c:695 frv-asm.c:1648 ip2k-asm.c:896 iq2000-asm.c:842
+#: m32c-asm.c:1862 m32r-asm.c:709 ms1-asm.c:932 openrisc-asm.c:626
+#: xstormy16-asm.c:661
 #, c-format
 msgid "bad instruction `%.50s...'"
 msgstr "slechte instructie `%s.50s...'"
 
-#: fr30-asm.c:713 frv-asm.c:1688 ip2k-asm.c:920 iq2000-asm.c:855
-#: m32r-asm.c:728 openrisc-asm.c:642 xstormy16-asm.c:674
+#: fr30-asm.c:698 frv-asm.c:1651 ip2k-asm.c:899 iq2000-asm.c:845
+#: m32c-asm.c:1865 m32r-asm.c:712 ms1-asm.c:935 openrisc-asm.c:629
+#: xstormy16-asm.c:664
 #, c-format
 msgid "bad instruction `%.50s'"
 msgstr "slechte instructie `%s.50s'"
 
 #. Default text to print if an instruction isn't recognized.
-#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
-#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
+#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32c-dis.c:41
+#: m32r-dis.c:41 mmix-dis.c:278 ms1-dis.c:41 openrisc-dis.c:41
+#: xstormy16-dis.c:41
 msgid "*unknown*"
 msgstr "*onbekend*"
 
-#: fr30-dis.c:319 frv-dis.c:410 ip2k-dis.c:313 iq2000-dis.c:191 m32r-dis.c:262
-#: openrisc-dis.c:137 xstormy16-dis.c:170
+#: fr30-dis.c:299 frv-dis.c:396 ip2k-dis.c:288 iq2000-dis.c:189 m32c-dis.c:860
+#: m32r-dis.c:256 ms1-dis.c:258 openrisc-dis.c:135 xstormy16-dis.c:168
 #, c-format
 msgid "Unrecognized field %d while printing insn.\n"
 msgstr "Veld %d niet herkend bij het afdrukken van een insn.\n"
 
-#: fr30-ibld.c:168 frv-ibld.c:168 ip2k-ibld.c:168 iq2000-ibld.c:168
-#: m32r-ibld.c:168 openrisc-ibld.c:168 xstormy16-ibld.c:168
+#: fr30-ibld.c:163 frv-ibld.c:163 ip2k-ibld.c:163 iq2000-ibld.c:163
+#: m32c-ibld.c:163 m32r-ibld.c:163 ms1-ibld.c:163 openrisc-ibld.c:163
+#: xstormy16-ibld.c:163
 #, c-format
 msgid "operand out of range (%ld not between %ld and %lu)"
 msgstr "operand buiten bereik (%ld niet tussen %ld en %lu)"
 
-#: fr30-ibld.c:181 frv-ibld.c:181 ip2k-ibld.c:181 iq2000-ibld.c:181
-#: m32r-ibld.c:181 openrisc-ibld.c:181 xstormy16-ibld.c:181
+#: fr30-ibld.c:176 frv-ibld.c:176 ip2k-ibld.c:176 iq2000-ibld.c:176
+#: m32c-ibld.c:176 m32r-ibld.c:176 ms1-ibld.c:176 openrisc-ibld.c:176
+#: xstormy16-ibld.c:176
 #, c-format
 msgid "operand out of range (%lu not between 0 and %lu)"
 msgstr "operand buiten bereik (%lu niet tussen 0 en %lu)"
 
-#: fr30-ibld.c:732 frv-ibld.c:858 ip2k-ibld.c:609 iq2000-ibld.c:715
-#: m32r-ibld.c:667 openrisc-ibld.c:635 xstormy16-ibld.c:680
+#: fr30-ibld.c:719 frv-ibld.c:845 ip2k-ibld.c:596 iq2000-ibld.c:702
+#: m32c-ibld.c:1668 m32r-ibld.c:654 ms1-ibld.c:713 openrisc-ibld.c:622
+#: xstormy16-ibld.c:667
 #, c-format
 msgid "Unrecognized field %d while building insn.\n"
 msgstr "Veld %d niet herkend bij het opbouwen van een insn.\n"
 
-#: fr30-ibld.c:939 frv-ibld.c:1177 ip2k-ibld.c:686 iq2000-ibld.c:892
-#: m32r-ibld.c:806 openrisc-ibld.c:737 xstormy16-ibld.c:828
+#: fr30-ibld.c:924 frv-ibld.c:1162 ip2k-ibld.c:671 iq2000-ibld.c:877
+#: m32c-ibld.c:2780 m32r-ibld.c:791 ms1-ibld.c:907 openrisc-ibld.c:722
+#: xstormy16-ibld.c:813
 #, c-format
 msgid "Unrecognized field %d while decoding insn.\n"
 msgstr "Veld %d niet herkend bij het decoderen van een insn.\n"
 
-#: fr30-ibld.c:1088 frv-ibld.c:1458 ip2k-ibld.c:763 iq2000-ibld.c:1026
-#: m32r-ibld.c:922 openrisc-ibld.c:817 xstormy16-ibld.c:941
+#: fr30-ibld.c:1070 frv-ibld.c:1440 ip2k-ibld.c:745 iq2000-ibld.c:1008
+#: m32c-ibld.c:3379 m32r-ibld.c:904 ms1-ibld.c:1086 openrisc-ibld.c:799
+#: xstormy16-ibld.c:923
 #, c-format
 msgid "Unrecognized field %d while getting int operand.\n"
 msgstr "Veld %d niet herkend bij het ophalen van een int-operand.\n"
 
-#: fr30-ibld.c:1217 frv-ibld.c:1719 ip2k-ibld.c:820 iq2000-ibld.c:1140
-#: m32r-ibld.c:1018 openrisc-ibld.c:877 xstormy16-ibld.c:1034
+#: fr30-ibld.c:1198 frv-ibld.c:1700 ip2k-ibld.c:801 iq2000-ibld.c:1121
+#: m32c-ibld.c:3960 m32r-ibld.c:999 ms1-ibld.c:1247 openrisc-ibld.c:858
+#: xstormy16-ibld.c:1015
 #, c-format
 msgid "Unrecognized field %d while getting vma operand.\n"
 msgstr "Veld %d niet herkend bij het ophalen van een vma-operand.\n"
 
-#: fr30-ibld.c:1351 frv-ibld.c:1989 ip2k-ibld.c:882 iq2000-ibld.c:1263
-#: m32r-ibld.c:1122 openrisc-ibld.c:946 xstormy16-ibld.c:1136
+#: fr30-ibld.c:1329 frv-ibld.c:1967 ip2k-ibld.c:860 iq2000-ibld.c:1241
+#: m32c-ibld.c:4529 m32r-ibld.c:1100 ms1-ibld.c:1415 openrisc-ibld.c:924
+#: xstormy16-ibld.c:1114
 #, c-format
 msgid "Unrecognized field %d while setting int operand.\n"
 msgstr "Veld %d niet herkend bij het instellen van een int-operand.\n"
 
-#: fr30-ibld.c:1473 frv-ibld.c:2247 ip2k-ibld.c:932 iq2000-ibld.c:1374
-#: m32r-ibld.c:1214 openrisc-ibld.c:1003 xstormy16-ibld.c:1226
+#: fr30-ibld.c:1450 frv-ibld.c:2224 ip2k-ibld.c:909 iq2000-ibld.c:1351
+#: m32c-ibld.c:5088 m32r-ibld.c:1191 ms1-ibld.c:1573 openrisc-ibld.c:980
+#: xstormy16-ibld.c:1203
 #, c-format
 msgid "Unrecognized field %d while setting vma operand.\n"
 msgstr "Veld %d niet herkend bij het instellen van een vma-operand.\n"
 
-#: frv-asm.c:978
+#: frv-asm.c:607
+msgid "missing `]'"
+msgstr "`]' ontbreekt"
+
+# of moet 'immediate' behouden worden?
+#: frv-asm.c:610 frv-asm.c:620
+msgid "Special purpose register number is out of range"
+msgstr "Nummer van special-purpose register is buiten bereik"
+
+#: frv-asm.c:907
+msgid "Value of A operand must be 0 or 1"
+msgstr "Waarde van A-operand moet 0 of 1 zijn"
+
+#: frv-asm.c:943
 msgid "register number must be even"
-msgstr "registernummer moet paar zijn"
+msgstr "registernummer moet even zijn"
 
-#: h8300-dis.c:358
+#. -- assembler routines inserted here.
+#. -- asm.c
+#: frv-asm.c:971 iq2000-asm.c:55 m32c-asm.c:140 m32c-asm.c:211 m32c-asm.c:253
+#: m32c-asm.c:312 m32c-asm.c:334 m32r-asm.c:52 openrisc-asm.c:53
+msgid "missing `)'"
+msgstr "`)' ontbreekt"
+
+#: h8300-dis.c:325
 #, c-format
 msgid "Hmmmm 0x%x"
 msgstr "Hmmmm 0x%x"
 
-#: h8300-dis.c:744
+#: h8300-dis.c:706
 #, c-format
 msgid "Don't understand 0x%x \n"
 msgstr "Ik begrijp 0x%x niet\n"
 
-#: h8500-dis.c:143
+#: h8500-dis.c:122
 #, c-format
 msgid "can't cope with insert %d\n"
 msgstr "kan niet omgaan met insert %d\n"
 
 #. Couldn't understand anything.
-#: h8500-dis.c:342
+#: h8500-dis.c:322
 #, c-format
 msgid "%02x\t\t*unknown*"
 msgstr "%02x\t\t*onbekend*"
 
-#: i386-dis.c:1733
+#: i386-dis.c:1742
 msgid "<internal disassembler error>"
 msgstr "<interne fout in de disassembler>"
 
@@ -359,125 +501,187 @@
 
 #. We've been passed a w.  Return with an error message so that
 #. cgen will try the next parsing option.
-#: ip2k-asm.c:92
+#: ip2k-asm.c:80
 msgid "W keyword invalid in FR operand slot."
 msgstr "keyword W is ongeldig in operand-slot FR"
 
 #. Invalid offset present.
-#: ip2k-asm.c:117
+#: ip2k-asm.c:105
 msgid "offset(IP) is not a valid form"
 msgstr "offset(IP) is geen geldige vorm"
 
 #. Found something there in front of (DP) but it's out
 #. of range.
-#: ip2k-asm.c:165
+#: ip2k-asm.c:153
 msgid "(DP) offset out of range."
 msgstr "(DP) offset buiten bereik"
 
 #. Found something there in front of (SP) but it's out
 #. of range.
-#: ip2k-asm.c:206
+#: ip2k-asm.c:194
 msgid "(SP) offset out of range."
 msgstr "(SP) offset buiten bereik"
 
-#: ip2k-asm.c:222
+#: ip2k-asm.c:210
 msgid "illegal use of parentheses"
 msgstr "ongeldig gebruik van haakjes"
 
-#: ip2k-asm.c:229
+#: ip2k-asm.c:217
 msgid "operand out of range (not between 1 and 255)"
 msgstr "operand buiten bereik (niet tussen 1 en 255)"
 
 #. Something is very wrong. opindex has to be one of the above.
-#: ip2k-asm.c:254
+#: ip2k-asm.c:241
 msgid "parse_addr16: invalid opindex."
 msgstr "parse_addr16: ongeldige opindex."
 
-#: ip2k-asm.c:309
+#: ip2k-asm.c:295
 msgid "Byte address required. - must be even."
-msgstr "Byte-adres vereist. - moet paar zijn."
+msgstr "Byte-adres vereist. - moet even zijn."
 
-#: ip2k-asm.c:318
+#: ip2k-asm.c:304
 msgid "cgen_parse_address returned a symbol. Literal required."
 msgstr "cgen_parse_address gaf een symbool terug terwijl een letterlijke waarde vereist is."
 
-#: ip2k-asm.c:376
-#, c-format
-msgid "%operator operand is not a symbol"
-msgstr "operand van %operator is geen symbool"
+#: ip2k-asm.c:359
+msgid "percent-operator operand is not a symbol"
+msgstr "operand van percent-operator is geen symbool"
 
-#: ip2k-asm.c:430
+#: ip2k-asm.c:412
 msgid "Attempt to find bit index of 0"
 msgstr "Poging tot vinden van bit-index van 0"
 
-#: iq2000-asm.c:115 iq2000-asm.c:146
+#: iq2000-asm.c:111 iq2000-asm.c:141
 msgid "immediate value cannot be register"
 msgstr "onmiddellijke waarde kan geen register zijn"
 
 # of moet 'immediate' behouden worden?
-#: iq2000-asm.c:126 iq2000-asm.c:156
+#: iq2000-asm.c:122 iq2000-asm.c:152
 msgid "immediate value out of range"
 msgstr "onmiddellijke waarde is buiten bereik"
 
-#: iq2000-asm.c:185
+#: iq2000-asm.c:181
 msgid "21-bit offset out of range"
 msgstr "21-bit offset is buiten bereik"
 
-#: iq2000-asm.c:210 iq2000-asm.c:240 iq2000-asm.c:277 iq2000-asm.c:310
-#: openrisc-asm.c:90 openrisc-asm.c:144
-msgid "missing `)'"
-msgstr "`)' ontbreekt"
-
-#: m10200-dis.c:199
+#: m10200-dis.c:156 m10300-dis.c:580
 #, c-format
-msgid "unknown\t0x%02x"
-msgstr "onbekend\t0x%02x"
-
-#: m10200-dis.c:339
-#, c-format
 msgid "unknown\t0x%04lx"
 msgstr "onbekend\t0x%04lx"
 
-#: m10300-dis.c:767
+#: m10200-dis.c:326
 #, c-format
-msgid "unknown\t0x%04x"
-msgstr "onbekend\t0x%04x"
+msgid "unknown\t0x%02lx"
+msgstr "onbekend\t0x%02lx"
 
-#: m68k-dis.c:295
+# Correcte vertaling van "imm:6 immediate"?
+#: m32c-asm.c:116
+msgid "imm:6 immediate is out of range"
+msgstr "onmiddellijke waarde van imm:6 is buiten bereik"
+
+#: m32c-asm.c:146
 #, c-format
-msgid "<internal error in opcode table: %s %s>\n"
-msgstr "<interne fout in opcode-tabel: %s %s>\n"
+msgid "%dsp8() takes a symbolic address, not a number"
+msgstr "%dsp8() verwacht een symbolisch adres als argument, geen getal"
 
-#: m68k-dis.c:1089
+# Correcte vertaling van "dsp:8 immediate"?
+#: m32c-asm.c:159 m32c-asm.c:163 m32c-asm.c:229
+msgid "dsp:8 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:8 is buiten bereik"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:184 m32c-asm.c:188
+msgid "Immediate is out of range -8 to 7"
+msgstr "onmiddellijke waarde is buiten bereik (-8 tot 7)"
+
+#: m32c-asm.c:259
 #, c-format
+msgid "%dsp16() takes a symbolic address, not a number"
+msgstr "%dsp16() verwacht een symbolisch adres als argument, geen getal"
+
+# Correcte vertaling van "dsp:16 immediate"?
+#: m32c-asm.c:282 m32c-asm.c:289 m32c-asm.c:352
+msgid "dsp:16 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:16 is buiten bereik"
+
+# Correcte vertaling van "dsp:20 immediate"?
+#: m32c-asm.c:378
+msgid "dsp:20 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:20 is buiten bereik"
+
+# Correcte vertaling van "dsp:24 immediate"?
+#: m32c-asm.c:404
+msgid "dsp:24 immediate is out of range"
+msgstr "onmiddellijke waarde van dsp:24 is buiten bereik"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:437
+msgid "immediate is out of range 1-2"
+msgstr "onmiddellijke waarde is buiten bereik (1-2)"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:455
+msgid "immediate is out of range 1-8"
+msgstr "onmiddellijke waarde is buiten bereik (1-8)"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:491
+msgid "immediate is out of range 2-9"
+msgstr "onmiddellijke waarde is buiten bereik (2-9)"
+
+# Is dit de juiste interpretatie van "indexing general register"
+#: m32c-asm.c:509
+msgid "Bit number for indexing general register is out of range 0-15"
+msgstr "Bitnummer voor het indexeren van een general register is buiten bereik (0-15)"
+
+# of moet 'immediate' behouden worden?
+#: m32c-asm.c:541 m32c-asm.c:576
+msgid "bit,base is out of range"
+msgstr "bit,base is buiten bereik"
+
+#: m32c-asm.c:712
+msgid "not a valid r0l/r0h pair"
+msgstr "geen geldig r0l/r0h koppel"
+
+#: m32c-asm.c:742
+msgid "Invalid size specifier"
+msgstr "Ongeldige grootte-specificatie"
+
+#: m68k-dis.c:1162
+#, c-format
 msgid "<function code %d>"
 msgstr "<functie-code %d>"
 
-#: m88k-dis.c:746
+#: m68k-dis.c:1313
 #, c-format
-msgid "# <dis error: %08x>"
-msgstr "# <dis fout: %08x>"
+msgid "<internal error in opcode table: %s %s>\n"
+msgstr "<interne fout in opcode-tabel: %s %s>\n"
 
-#: mips-dis.c:720
+#: m88k-dis.c:679
+#, c-format
+msgid "# <dis error: %08lx>"
+msgstr "# <dis fout: %08lx>"
+
+#: mips-dis.c:718
 msgid "# internal error, incomplete extension sequence (+)"
 msgstr "# interne fout, onvolledige extension sequence  (+)"
 
-#: mips-dis.c:779
+#: mips-dis.c:805
 #, c-format
 msgid "# internal error, undefined extension sequence (+%c)"
 msgstr "# interne fout, extension sequence (+%c) niet gedefinieerd"
 
-#: mips-dis.c:1037
+#: mips-dis.c:1153
 #, c-format
 msgid "# internal error, undefined modifier(%c)"
 msgstr "# interne fout, modifier(%c) niet gedefinieerd"
 
-#: mips-dis.c:1793
+#: mips-dis.c:1663
 #, c-format
 msgid "# internal disassembler error, unrecognised modifier (%c)"
 msgstr "# interne fout in disassembler, modifier(%c) niet herkend"
 
-#: mips-dis.c:1805
+#: mips-dis.c:1894
 #, c-format
 msgid ""
 "\n"
@@ -488,7 +692,7 @@
 "De volgende MIPS-specifieke disassembler-opties worden ondersteund voor gebruik\n"
 "via de -M optie (meerdere opties moeten door komma's gescheiden worden):\n"
 
-#: mips-dis.c:1809
+#: mips-dis.c:1898
 #, c-format
 msgid ""
 "\n"
@@ -500,7 +704,7 @@
 "                           Standaard: gebaseerd op het binair bestand dat\n"
 "                           gedesassembleerd wordt.\n"
 
-#: mips-dis.c:1813
+#: mips-dis.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -511,7 +715,7 @@
 "  fpr-names=ABI            Druk FPR-namen af volgens de opgegeven ABI.\n"
 "                           Standaard: numeriek.\n"
 
-#: mips-dis.c:1817
+#: mips-dis.c:1906
 #, c-format
 msgid ""
 "\n"
@@ -525,7 +729,7 @@
 "                           Standaard: gebaseerd op het binair bestand dat\n"
 "                           gedesassembleerd wordt.\n"
 
-#: mips-dis.c:1822
+#: mips-dis.c:1911
 #, c-format
 msgid ""
 "\n"
@@ -539,7 +743,7 @@
 "                           gedesassembleerd wordt.\n"
 "\n"
 
-#: mips-dis.c:1827
+#: mips-dis.c:1916
 #, c-format
 msgid ""
 "\n"
@@ -549,7 +753,7 @@
 "\n"
 "  reg-names=ABI            Druk GPR- en FPR-namen af volgens de opgegeven ABI.\n"
 
-#: mips-dis.c:1831
+#: mips-dis.c:1920
 #, c-format
 msgid ""
 "\n"
@@ -560,7 +764,7 @@
 "  reg-names=ARCH           Druk CP0 registernamen en HWR-namen af volgens de\n"
 "                           opgegeven architectuur.\n"
 
-#: mips-dis.c:1835
+#: mips-dis.c:1924
 #, c-format
 msgid ""
 "\n"
@@ -571,12 +775,12 @@
 "  Voor de bovenstaande opties zijn dit de ondersteunde waarden voor \"ABI\":\n"
 "   "
 
-#: mips-dis.c:1840 mips-dis.c:1848 mips-dis.c:1850
+#: mips-dis.c:1929 mips-dis.c:1937 mips-dis.c:1939
 #, c-format
 msgid "\n"
 msgstr "\n"
 
-#: mips-dis.c:1842
+#: mips-dis.c:1931
 #, c-format
 msgid ""
 "\n"
@@ -587,149 +791,170 @@
 "  Voor de bovenstaande opties zijn dit de ondersteunde waarden voor \"ARCH\":\n"
 "   "
 
-#: mmix-dis.c:34
+#: mmix-dis.c:35
 #, c-format
 msgid "Bad case %d (%s) in %s:%d\n"
 msgstr "Ongeldige case %d (%s) in %s:%d\n"
 
-#: mmix-dis.c:44
+#: mmix-dis.c:45
 #, c-format
 msgid "Internal: Non-debugged code (test-case missing): %s:%d"
 msgstr "Intern: Code niet gedebugd (test-case ontbreekt): %s:%d"
 
-#: mmix-dis.c:53
+#: mmix-dis.c:54
 msgid "(unknown)"
 msgstr "(onbekend)"
 
-#: mmix-dis.c:519
+#: mmix-dis.c:513
 #, c-format
 msgid "*unknown operands type: %d*"
 msgstr "onbekend type operanden: %d"
 
+#: ms1-asm.c:84 ms1-asm.c:162
+msgid "Operand out of range. Must be between -32768 and 32767."
+msgstr "Operand buiten bereik. Moet tussen -32768 en 32767 liggen."
+
+# Should this even be here?
+#: ms1-asm.c:121
+msgid "Biiiig Trouble in parse_imm16!"
+msgstr "Grooooooooooot Probleem in parse_imm16!"
+
+#: ms1-asm.c:129
+#, c-format
+msgid "%operator operand is not a symbol"
+msgstr "operand van %operator is geen symbool"
+
+#: ms1-asm.c:367
+msgid "invalid operand.  type may have values 0,1,2 only."
+msgstr "ongeldige operand.  type mag alleen 0,1,2 als waarde hebben."
+
 #. I and Z are output operands and can`t be immediate
-#. * A is an address and we can`t have the address of
-#. * an immediate either. We don't know how much to increase
-#. * aoffsetp by since whatever generated this is broken
-#. * anyway!
-#.
-#: ns32k-dis.c:631
+#. A is an address and we can`t have the address of
+#. an immediate either. We don't know how much to increase
+#. aoffsetp by since whatever generated this is broken
+#. anyway!
+#: ns32k-dis.c:535
 #, c-format
 msgid "$<undefined>"
 msgstr "$<niet gedefinieerd>"
 
-#: ppc-opc.c:794 ppc-opc.c:822
+#: ppc-opc.c:800 ppc-opc.c:828
 msgid "invalid conditional option"
 msgstr "ongeldige voorwaardelijke optie"
 
 # Dit kan waarschijnlijk beter
-#: ppc-opc.c:824
+#: ppc-opc.c:830
 msgid "attempt to set y bit when using + or - modifier"
 msgstr "poging om y bit in te stellen wanneer + of - modifier gebruikt wordt"
 
-#: ppc-opc.c:852
+#: ppc-opc.c:858
 msgid "offset not a multiple of 16"
 msgstr "offset is geen veelvoud van 16"
 
-#: ppc-opc.c:871
+#: ppc-opc.c:877
 msgid "offset not a multiple of 2"
 msgstr "offset is geen veelvoud van 2"
 
-#: ppc-opc.c:873
+#: ppc-opc.c:879
 msgid "offset greater than 62"
 msgstr "offset is groter dan 62"
 
-#: ppc-opc.c:892 ppc-opc.c:937 ppc-opc.c:981
+#: ppc-opc.c:898 ppc-opc.c:943 ppc-opc.c:987
 msgid "offset not a multiple of 4"
 msgstr "offset is geen veelvoud van 4"
 
-#: ppc-opc.c:894
+#: ppc-opc.c:900
 msgid "offset greater than 124"
 msgstr "offset is groter dan 124"
 
-#: ppc-opc.c:913
+#: ppc-opc.c:919
 msgid "offset not a multiple of 8"
 msgstr "offset is geen veelvoud van 8"
 
-#: ppc-opc.c:915
+#: ppc-opc.c:921
 msgid "offset greater than 248"
 msgstr "offset is groter dan 248"
 
-#: ppc-opc.c:958
+#: ppc-opc.c:964
 msgid "offset not between -2048 and 2047"
 msgstr "offset ligt niet tussen -2048 en 2047"
 
-#: ppc-opc.c:979
+#: ppc-opc.c:985
 msgid "offset not between -8192 and 8191"
 msgstr "offset ligt niet tussen -8192 en 8191"
 
-#: ppc-opc.c:1007
+#: ppc-opc.c:1013
 msgid "invalid mask field"
 msgstr "ongeldig maskerveld"
 
-#: ppc-opc.c:1033
+#: ppc-opc.c:1039
 msgid "ignoring invalid mfcr mask"
 msgstr "ongeldig mfcr-masker wordt genegeerd"
 
-#: ppc-opc.c:1075
+#: ppc-opc.c:1081
 msgid "ignoring least significant bits in branch offset"
 msgstr "minst significante bits worden genegeerd in branch offset"
 
-#: ppc-opc.c:1105 ppc-opc.c:1140
+#: ppc-opc.c:1111 ppc-opc.c:1146
 msgid "illegal bitmask"
 msgstr "illegaal bitmasker"
 
-#: ppc-opc.c:1205
+#: ppc-opc.c:1211
 msgid "value out of range"
 msgstr "waarde buiten bereik"
 
 # of is laadbereik beter?
-#: ppc-opc.c:1273
+#: ppc-opc.c:1279
 msgid "index register in load range"
 msgstr "indexregister in load-bereik"
 
-#: ppc-opc.c:1289
+#: ppc-opc.c:1295
 msgid "source and target register operands must be different"
 msgstr "bron- en doel-registeroperanden moeten verschillen"
 
-#: ppc-opc.c:1304
+#: ppc-opc.c:1310
 msgid "invalid register operand when updating"
 msgstr "ongeldige register-operand bij update"
 
-#: ppc-opc.c:1343
+#: ppc-opc.c:1349
 msgid "target register operand must be even"
-msgstr "doel-registeroperand moet paar zijn"
+msgstr "doel-registeroperand moet even zijn"
 
-#: ppc-opc.c:1357
+#: ppc-opc.c:1363
 msgid "source register operand must be even"
-msgstr "bron-registeroperand moet paar zijn"
+msgstr "bron-registeroperand moet even zijn"
 
-#. Mark as non-valid instruction.
-#: sparc-dis.c:760
-msgid "unknown"
-msgstr "onbekend"
+#: ppc-opc.c:1420
+msgid "invalid sprg number"
+msgstr "ongeldig sprg-nummer"
 
 # Looks like this is a typo (two spaces after the ':')
-#: sparc-dis.c:835
+#: sparc-dis.c:269
 #, c-format
 msgid "Internal error:  bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Interne fout: sparch-opcode.h is verkeerd: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:846
+#: sparc-dis.c:280
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
 msgstr "Interne fout: sparch-opcode.h is verkeerd: \"%s\", %#.8lx, %#.8lx\n"
 
-#: sparc-dis.c:895
+#: sparc-dis.c:330
 #, c-format
 msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
 msgstr "Interne fout: sparch-opcode.h is verkeerd: \"%s\" == \"%s\"\n"
 
-#: v850-dis.c:225
+#. Mark as non-valid instruction.
+#: sparc-dis.c:984
+msgid "unknown"
+msgstr "onbekend"
+
+#: v850-dis.c:237
 #, c-format
 msgid "unknown operand shift: %x\n"
 msgstr "onbekende operand-shift: %x\n"
 
-#: v850-dis.c:237
+#: v850-dis.c:251
 #, c-format
 msgid "unknown pop reg: %d\n"
 msgstr "onbekend pop reg: %d\n"
@@ -740,91 +965,91 @@
 #. v850_insert_operand() in gas/config/tc-v850.c.  Error messages
 #. containing the string 'out of range' will be ignored unless a
 #. specific command line option is given to GAS.
-#: v850-opc.c:69
+#: v850-opc.c:46
 msgid "displacement value is not in range and is not aligned"
 msgstr "displacement-waarde is niet in bereik en is niet uitgelijnd"
 
-#: v850-opc.c:70
+#: v850-opc.c:47
 msgid "displacement value is out of range"
 msgstr "displacement-waarde is buiten bereik"
 
-#: v850-opc.c:71
+#: v850-opc.c:48
 msgid "displacement value is not aligned"
 msgstr "displacement-waarde is niet uitgelijnd"
 
 # of moet 'immediate' behouden worden?
-#: v850-opc.c:73
+#: v850-opc.c:50
 msgid "immediate value is out of range"
 msgstr "onmiddellijke waarde is buiten bereik"
 
 # Repeated message..., use 'to an odd...' to merge it
-#: v850-opc.c:84
+#: v850-opc.c:58
 msgid "branch value not in range and to odd offset"
 msgstr "branch-waarde niet in bereik en naar onpare offset"
 
-#: v850-opc.c:86 v850-opc.c:118
+#: v850-opc.c:60 v850-opc.c:87
 msgid "branch value out of range"
 msgstr "branch-waarde buiten bereik"
 
-#: v850-opc.c:89 v850-opc.c:121
+#: v850-opc.c:63 v850-opc.c:90
 msgid "branch to odd offset"
 msgstr "branch naar onpare offset"
 
-#: v850-opc.c:116
+#: v850-opc.c:85
 msgid "branch value not in range and to an odd offset"
 msgstr "branch-waarde niet in bereik en naar een onpare offset"
 
-#: v850-opc.c:347
+#: v850-opc.c:277
 msgid "invalid register for stack adjustment"
 msgstr "ongeldig register voor stack-aanpassing"
 
-#: v850-opc.c:371
+#: v850-opc.c:297
 msgid "immediate value not in range and not even"
-msgstr "onmiddellijke waarde niet in bereik en niet paar"
+msgstr "onmiddellijke waarde niet in bereik en niet even"
 
-#: v850-opc.c:376
+#: v850-opc.c:302
 msgid "immediate value must be even"
-msgstr "onmiddellijke waarde moet paar zijn"
+msgstr "onmiddellijke waarde moet even zijn"
 
 # of is laadbereik beter?
-#: xstormy16-asm.c:76
+#: xstormy16-asm.c:70
 msgid "Bad register in preincrement"
 msgstr "Ongeldig register in preincrement"
 
-#: xstormy16-asm.c:81
+#: xstormy16-asm.c:75
 msgid "Bad register in postincrement"
 msgstr "Ongeldig register in postincrement"
 
 # of is laadbereik beter?
-#: xstormy16-asm.c:83
+#: xstormy16-asm.c:77
 msgid "Bad register name"
 msgstr "Ongeldige registernaam"
 
-#: xstormy16-asm.c:87
+#: xstormy16-asm.c:81
 msgid "Label conflicts with register name"
 msgstr "Label geeft conflict met registernaam"
 
-#: xstormy16-asm.c:91
+#: xstormy16-asm.c:85
 msgid "Label conflicts with `Rx'"
 msgstr "Label geeft conflict met `Rx'"
 
-#: xstormy16-asm.c:93
+#: xstormy16-asm.c:87
 msgid "Bad immediate expression"
 msgstr "Slechte onmiddelijke expressie"
 
 # immediate what? 'value' assumed
-#: xstormy16-asm.c:115
+#: xstormy16-asm.c:108
 msgid "No relocation for small immediate"
 msgstr "Geen relocatie voor kleine onmiddelijke waarde"
 
-#: xstormy16-asm.c:125
+#: xstormy16-asm.c:118
 msgid "Small operand was not an immediate number"
 msgstr "Kleine operand was geen onmiddellijk getal"
 
-#: xstormy16-asm.c:164
+#: xstormy16-asm.c:156
 msgid "Operand is not a symbol"
 msgstr "Operand is geen symbool"
 
-#: xstormy16-asm.c:172
+#: xstormy16-asm.c:164
 msgid "Syntax error: No trailing ')'"
 msgstr "Syntaxfout: Geen sluithaakje"

Added: branches/binutils/package/opcodes/po/pt_BR.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/pt_BR.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/ro.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/ro.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/sv.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/sv.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/tr.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/tr.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/vi.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/vi.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/binutils/package/opcodes/po/zh_CN.gmo
===================================================================
(Binary files differ)


Property changes on: branches/binutils/package/opcodes/po/zh_CN.gmo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/binutils/package/src-release
===================================================================
--- branches/binutils/package/src-release	2006-07-11 13:51:55 UTC (rev 18)
+++ branches/binutils/package/src-release	2006-12-31 16:27:59 UTC (rev 19)
@@ -31,6 +31,9 @@
 BZIPPROG = bzip2
 MD5PROG = md5sum
 
+# (Default to avoid splitting info files by setting the threshold high.)
+MAKEINFOFLAGS = --split-size=5000000
+
 # pwd command to use.  Allow user to override default by setting PWDCMD in
 # the environment to account for automounters.  The make variable must not
 # be called PWDCMD, otherwise the value set here is passed to make
@@ -146,9 +149,11 @@
 	  if [ -d $$d ]; then \
 	    if [ ! -f $$d/Makefile ] ; then true ; \
 	    elif grep '^diststuff:' $$d/Makefile >/dev/null ; then \
-		(cd $$d ; $(MAKE) diststuff ) || exit 1 ; \
+		(cd $$d ; $(MAKE) MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \
+			  diststuff ) || exit 1 ; \
 	    elif grep '^info:' $$d/Makefile >/dev/null ; then \
-	        (cd $$d ; $(MAKE) info ) || exit 1 ; \
+		(cd $$d ; $(MAKE) MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \
+			  info ) || exit 1 ; \
 	    fi ; \
 	    if [ -d $$d/proto-$$d.dir ]; then \
 	      ln -s ../$$d/proto-$$d.dir proto-toplev/$$d ; \
@@ -157,7 +162,7 @@
 	    fi ; \
 	  else ln -s ../$$d proto-toplev/$$d ; fi ; \
 	done
-	cd etc && $(MAKE) info
+	cd etc && $(MAKE) MAKEINFOFLAGS="$(MAKEINFOFLAGS)" info
 	$(MAKE) distclean
 	# Kludge for pr gdb/857.  intl/Makefile.in lacks a couple
 	# of files in the distclean rule.  Zack W is planning to make




More information about the Debian-coldfire-commits mailing list